Themabewertung:
  • 3 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Universeller Sender für AM, FM, DAB(+), DVB-x, GPS für 20 Euro.
Hallo Ingo,

Genau das habe ich vor. Werde vlc verwenden und virtuellem Sound Karten...
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Ob WAV, MP3, AAC vom Dateisystem, aus dem Internet oder .... das ist alles egal.
Nutzt man GNU Radio Comp., dann ist es nur wichtig die Signalamplitude (PCM-Samples) mit einer konstanten Samplerate einzulesen.
Das kann über das zwischenschreiben in eine Datei und dann einem "WAV File Source"-Baustein geschehen,
in der Nutzung eines RAM-FS und FiFo wie zum Beispiel hier gezeigt: https://wiki.opendigitalradio.org/Simple...g_gnuradio oder,
wenn man Programme wie cvlc bzw. vlc nutzt auch über TCP/IP geschehen. Auch virtuelle Soundkarten gehen, die dann von GNU Radio Comp. zum Beispiel über ALSA ausgelesen werden.

Vlc kann die dekodierten Audiosamples statt in eine Soundkarte zu leiten auch direkt per TCP/IP versenden. Das einlesen der Samples läuft dann über ein TCP Source Baustein. Letzteres dürfte das leistungsfähigste Konzept sein, hier gibt es auch Abwandlungen mit zum Beispiel ZeroMQ, was von GNU Radio Comp. in Form von fertigen Bausteinen direkt unterstützt wird.

Damit man eine effektive Lösung erarbeiten kann, die zum Beispiel auch auf Kleinrechnern wie dem Raspberry läuft, muss man nur einen Überblick über alle technischen Möglichkeiten des Unix/Linux-Betriebssystems haben und die für den Rechner beste Methode auswählen. Ein Zwischenschreiben der PCM-Samples auf ein Dateisystem wäre bei einem Raspberry also das Schlechteste was man machen könnte!

Also vor einem festen Vorhaben einfach mal mit Unix und GNU Radio ein paar Trockenübungen machen, sich die Bausteinbibliotheken ansehen, dann kommen schon die richtigen Ideen. Ikea sagt dazu: Entdecke die Möglichkeiten!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Bernhardt et Al,

So das ist nun der nächste Schritt -und ja ich habe Blut geleckt Big Grin  Die angehängte .grc Datei beinhaltet eine Lösung mit 3 AM Frequenzen 1512kHz (hier schmettert Jackie Evancho) 1584kHz (schöner R&B von Toni Braxton) und 1602kHz (Helene Fischer) Big Grin 

Alles läuft über den A/D Wandler mit dem FL2000 Chip. Das Signal gebe ich im Moment in eine abgestimmte Ferritantenne die neben meinem Sony ICF7600 liegt. Nun kann ich aus 3 Frequenzen auswählen und das alles mit einem Laptop und dem VGA Wandler für 10€...

Hier ein Bild der Blöcke.

   

Das basiert auf dem ursprünglichen Vorschlag von Bernhard am Anfang des Threads. Ich habe die folgenden Modifikationen vorgenommen:

- Anstelle eines reinen Tiefpasses für das Audio habe ich einen Bandpass eingefügt der auch die tiefen Frequenzen beschneidet. Ich habe nämlich festgestellt, dass die in heutiger Musik stark vorhandenen Bässe die AGC in einigen Radios aus dem tritt bringen und zu einem unschönen "Atmen" der Wiedergabe führen. Wenn ich die Bässe bei ca. 100Hz abschneide ist das Atmen weg. Die obere Grenzfrequenz habe ich auf 8kHz gesetzt um etwas mehr Höhen zu bekommen -ist nicht ganz AM-Band konform aber in einem geschlossen System egal.

- Die Ausgabe habe ich nun auf TCP umgestellt (Im Moment Local Host, Port 6504). Das ist eleganter und schont die Rechnerressourcen. Damit könnte man auch den Rechner mit den GNU Radio Programm und den der die VGA Karte ansteuert trennen.

- Den Block mit der Multiplikation x127 und die Umrechnung auf Binärwerte habe ich zusammengeführt, da der Binärumwandler auch eine Skalierung beinhaltet ging das sehr einfach indem ich den Faktor dort eingetragen habe. Da ich hier nun drei Signale summiere die jeweils Werte zwischen -1...+1 annehmen können muss die Binärwandlung angepasst werden indem der Multiplikator auf 127/3 also ca. 43 reduziert wird. Wenn das nicht geschieht wird der D/A Wandler mit geklippten Signalen gefüttert was ein Übersprechen der verschiedenen Kanäle  zur folge hat.

Im Moment habe ich noch als Quelle für meine Tests drei feste WAV Dateien mit 44.1kHz Abtastrate am laufen. Diese sollen aber in Zukunft durch 3 parallel laufende VLC Player ersetzt werden. Ich habe im Moment nur noch nicht raus wie ich die Signale der VLC Player  in das GNU Programm bekomme. Eine Ausgabe mit UDP vom VLC habe ich bisher nicht hinbekommen und wie TCP geht habe ich noch nicht verstanden. Die andere Lösung mit virtuellen Soundkarten ist auch noch eine Lösung die ich testen werde aber auch da bin ich im Moment etwas am Suchen nach der passenden Lösung. Vielleicht hat ja Bernhardt dazu ein paar nützliche Tips?

Übrigens möchte ich Bernhardt hier nochmal ein Gaaanz großes Danke sagen! Ohne seine Beispiele und die Vorstellung dieses VGA Adapters wäre ich nie auf die Idee gekommen so etwas zu probieren. Das macht riesigen Spaß!

Nun Muss ich noch eine Linearendstufe mit 1-2W bauen um das Ganze auch zu Senden...(Späßlein).

Fortsetzung folgt...


Angehängte Dateien
.zip   test5.grc.zip (Größe: 1,85 KB / Downloads: 24)
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Hallo Semir, hallo alle anderen "Heimsender",


(23.10.2019, 00:33)Semir schrieb: So das ist nun der nächste Schritt -und ja ich habe Blut geleckt Big Grin  Die angehängte .grc Datei beinhaltet eine Lösung mit 3 AM Frequenzen 1512kHz (hier schmettert Jackie Evancho) 1584kHz (schöner R&B von Toni Braxton) und 1602kHz (Helene Fischer) Big Grin 

Alles läuft über den A/D Wandler mit dem FL2000 Chip. Das Signal gebe ich im Moment in eine abgestimmte Ferritantenne die neben meinem Sony ICF7600 liegt. Nun kann ich aus 3 Frequenzen auswählen und das alles mit einem Laptop und dem VGA Wandler für 10€...

Ich sehe Du hast Dich mit dem SDR-Virus erfolgreich infiziert! Glückwunsch, Ziel erreicht ...


(23.10.2019, 00:33)Semir schrieb: - Die Ausgabe habe ich nun auf TCP umgestellt (Im Moment Local Host, Port 6504). Das ist eleganter und schont die Rechnerressourcen. Damit könnte man auch den Rechner mit den GNU Radio Programm und den der die VGA Karte ansteuert trennen.

Ja das ist richtig und so sollte man es auch praktizieren!


(23.10.2019, 00:33)Semir schrieb: Im Moment habe ich noch als Quelle für meine Tests drei feste WAV Dateien mit 44.1kHz Abtastrate am laufen. Diese sollen aber in Zukunft durch 3 parallel laufende VLC Player ersetzt werden. Ich habe im Moment nur noch nicht raus wie ich die Signale der VLC Player  in das GNU Programm bekomme. Eine Ausgabe mit UDP vom VLC habe ich bisher nicht hinbekommen und wie TCP geht habe ich noch nicht verstanden. Die andere Lösung mit virtuellen Soundkarten ist auch noch eine Lösung die ich testen werde aber auch da bin ich im Moment etwas am Suchen nach der passenden Lösung. Vielleicht hat ja Bernhardt dazu ein paar nützliche Tips?

Da schaut der Bernhard mal ob er helfen kann:

Also zunächst der Weg über TCP/IP.

In Gnu-Radio brauchst Du die PCM-Samples bzw. ein WAV Format des decodierten Internetradios, kurz gesagt die digitalisierte NF die sonst zur Soundkarte gehen würde.

Grundsätzlich nutze ich für solche Sachen vlc, genauer gesagt cvlc, also die Kommandozeilenversion von vlc. Auch das iRadio baut darauf auf, somit sind die Lösungen hier praktisch auf das iRadio übertragbar.

Zunächst, cvlc ist ein ganz normaler Medienplayer, der aber mit bestimmten Kommandozeilenparameter auch in andere Formate konvertieren kann und diese neuen Formate auf beliebige neue Quellen (Dateisysten, /dev/null, Netzwerk,....) schreiben kann.

Schauen wir mal welche Parameter es gibt: https://wiki.videolan.org/Documentation:..._Examples/

Wie man lesen kann, wird mit --sout der Ausgang der NF festgelegt. Über den Zusatz ''#transcode{vcodec=...,acodec=..., xxx}:
legt man fest was der neue Zielcodec sein soll. Für Internetradio fällt der Videocodec natürlich einfach weg, für den Audiocodec können wir praktisch alle im System installierten Codecs wählen.
Für GNU-Radio brauchen wir PCM-Samples bzw. das was man als WAV versteht. Bei der Gelegenheit kann man auch gleich ein Monosignal festlegen, dann brauchen wir die PCM-Samples des L- und R- Kanals später nicht auseinanderfutzeln. Die Reihe der PCM-Samples sieht also dann nicht mehr so aus: L-PCM1,R-PCM1,L-PCM2,R-PCM2,......,L-PCMn,R-PCMn , sondern
PCM_Mono1, PCM_Mono2, ...., PCM_Monon . Genau das was also unsere GNU-Radio AM-Modulator sehen will.

Im nächsten Schritt müssen wir cvlc sagen was es mit dem neuen Format machen soll, wohin es geschrieben werden soll!
Nun dazu hilft uns das dst= Flag in der Kommandozeile, kurz für Destination, Ziel. Hier kann man eine Datei angeben, ein Pipe (stdout, ....), gar ein FiFo in einem Ram-FS, oder auch ein
Versenden per tcp an eine fixe IP-Adresse. Befinden sich clvc und SDR-Modulator auf dem gleichen Rechner, wird die IP = localhost bzw. 127.0.0.1 sein. Praktisch kann der SDR-Rechner mit dem GNU-Radio Modulator aber auch an einem entfernten Senderstandort sein und der Modulationsrechner schickt das Modulationssignal per Internet einmal quer durch Deutschland. Denkbar wäre also das Studio mit den Moderatoren ist an Land, der SDR-Sender ist off-shore und bekommt das Modulationssignal über Internet via Richtfunk, Satellite usw.

Wie bekommen wir das Modulationssignal nun nach GNU-Radio? Nun dabei helfen uns die Netzwerk-Bausteine von GNU Radio Companion weiter. Darin haben wir zum Beispiel einen TCP und auch einen UDP Source Baustein. Diesen Baustein fügen wir in unseren Signalgraphen ein und parametrieren Ihn entsprechend mit den Parametern: Samplerate, IP, Port usw. die wir in cvlc auch festgelegt haben. Somit bauen wir unsere Modulationsquelle also in einer Client/Server-Architektur auf.

Übrigens, niemand hindert uns auf unserem SDR cvlc zigmal mit jeweils anderer Eingangs-StreamURL aufzurufen! Somit können wir mit einem Recher ohne Probleme mehrere Internetradiostationen empfangen. Natürlich müssen wir ausgangs- bzw. NF-seitig für jede cvlc-Instanz mindestens eine andere Port-Nummer festlegen. Sprich jedes Modulationssignal muss über einen anderen Port zu GNU Radio Companion weitergereicht werden.

Möchte man das alles nicht per TCP/IP machen, obwohl empfohlen, dann gehen auch mehrere virtuelle Soundkarten! Das Kernelmodul snd_aloop realisiert diese. Hier kann man je nach Bedarf eine gewisse Anzahl zusätzlicher Soundkarten per Aufrufparameter anlegen. Siehe auch: https://blog.getreu.net/_downloads/snd-aloop-device.pdf

Jede clvc Instanz schreibt die Daten dabei auf einen anderen Eingang einer virtuellen Soundkarte! In GNU Radio Companion lesen wir mit einem Audio Source Baustein die einzelnen
Soundkarten wieder ein. Dazu ist der Baustein entsprechend mit dem "Device Name" Parameter zu versehen. Hier sind dann Karten- zw. Device-ID des Audioausgangs der jeweiligen virtuellen
Soundkarte einzutragen. Ottos erste (noch nicht für Raspberry optimierten) Versionen des HF-Rundspruchs laufen so, da kann man sich das abschauen.


(23.10.2019, 00:33)Semir schrieb: Übrigens möchte ich Bernhardt hier nochmal ein Gaaanz großes Danke sagen! Ohne seine Beispiele und die Vorstellung dieses VGA Adapters wäre ich nie auf die Idee gekommen so etwas zu probieren. Das macht riesigen Spaß!

Nun Muss ich noch eine Linearendstufe mit 1-2W bauen um das Ganze auch zu Senden...(Späßlein).

Fortsetzung folgt...

Bitte bitte, jetzt muss es nur noch mehr Heimmodulatoren nach diesem einfachen Prinzip geben. Das ist doch genau das was die Radiobastlerszene die ganzen Jahre immer gesucht und gewünscht hat! Mit einfachen Mitteln mehrere Sender auf die Mittelwelle zu bekommen ohne zigmal einen Hardware-Sender aufbauen zu müssen. Jetzt ist es mit so einer preiswerten USB-Grafikkarte wirklich für jeden Bastler bezahlbar geworden! Preiswerter kann ich SDRs auch im Eigenbau (FPGA+DAC) nicht herstellen. Und die SDR-Technologie lässt dann auch noch Trägerschwundsimulation, Gewittersimulation, ... per Mausklick zu. Man kann also auch mit einem Rechner und einem(!) SDR eine tageszeitlich abhängige Ausbreitungssimulation realisieren, wenn man denn will.

Viel Spaß beim Senden
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo zusammen,

so nun bin ich wieder etwas weiter. Bedingt durch meine häufigen Dienstreisen muss ich immer mal eine Zwangspause einlegen. Das ist aber nicht schlimm, kann ich doch unterwegs mich in diverse Themen einlesen.

Zum einen kam gestern die bestellte USB3.0 ExpressCard, Nun kann ich den FL2k VGA Adapter mit ca. 60 Ms/s "füttern" was bei zukünftigen Projekten eventuell von Vorteil ist. Die derzeitige Implementation läuft aber mit den ca. 8,5Ms/s gut, so dass ich die beibehalten werde, zumal diese Rate auch mit USB2.0 nutzbar ist.

Im Moment habe ich mit dem Modul "snd-aloop" zwei virtuelle Soundkarten eingerichtet. Diese liegen auf id 8 und 9 erscheinen also als "card 8" und "card 9" wenn ich den Befehl "aplay -l" eingebe. Da jede Karte zwei "devices" (0 und 1) bereitstellt habe ich nun die Möglichkeit 4 PCM Quellen an das GNU Radio Programm zu schicken. Im Moment nutze ich davon nur drei: 1x Internet Radio "KABL" aus San Francisco, 1x "Radio Jackie" aus England und 1x lokale Playlisten. Zur Wiedergabe verwende ich drei Instanzen des VLC Players. In dieser Konstellation liegt die Auslastung meines alten Core i5 Laptops bei ca. 75%. Der muss also schon etwas ackern.

Im Prinzip bin ich so schon ganz zufrieden mit dem Ergebnis. Was ich noch vorhabe ist:

- Den cvlc zu testen und die Übertragung zum Gnu Radio Programm per UDP oder TCP zu bewerkstelligen.
- Einen Weg zu finden um alle beteiligten Komponenten mit einem Befehl oder Mausklick zu starten.
- Einen DAB+ Empfänger mit RTL Chipsatz in GNU Companion zu "Bauen" um damit einen DAB+ Radiosender in AM umzusetzen
- Eine AM-Stereo Variante dieses Projektes zu entwerfen.

Die aktuelle .grc Datei habe ich mal angehängt. Diese funktioniert aber nur wenn die entsprechenden virtuellen Soundkarten im System existieren. Die oben gelisteten Schritte plane  ich hier dann so nach und nach posten...


Angehängte Dateien
.zip   test7.grc.zip (Größe: 1,74 KB / Downloads: 22)
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Hallo Semir,

in der Regel leitet man die cvlc Ausgabe ja auf das Nuller-Device einer Karte und es wird dann vom Kernelmodul auf dem Einer-Device weitergeleitet wo es über ein AudioSource Baustein abgeholt wird. Nun 75% sind schon eine Hausnummer! Warum soviel CPU-Auslastung? Der Betrieb der virtuellen Soundkarten braucht schon etwas Leistung! Diese Rechenzeit kann man sich sparen, wenn man die Ausgabe der PCM-Samples gleich per TCP/IP realisiert. Der zusätzliche Datenverkehr macht auf vielen Rechnern kaum CPU-Betrieb im Gegensatz zu den virtuellen Soundkarten. Das ist wichtig wenn die Lösung mal später auf Kleinrechnern laufen soll! Den nächsten (aber wirklich minimalen) Einspareffekt hat man, wenn man das Monosignal nicht erst in GNU-Radio bildet, sondern gleich vom Abspielprogramm (hier vlc). Dann, du hast drei Signalgeneratoren (für die Trägererzeugung) auf der Endsamplerate von 8.46... M laufen! Woh! Hier kann man einiges an CPU-Leistung sparen, wenn man mit niedrigeren Samplerates arbeitet und das Summensignal später nur einmalig auf die Zielsamplerate von 8.46..M resampled. Einen weiteren Einspareffekt hat man, wenn man gleich im Abspielprogramm die Audioqualität auf AM-taugliche Werte bringt! 44.1k oder gar 48k - also CD-Qualität ist für AM gar nicht nötig! Also die viel zu vielen Samples erst gar nicht weit in die Signalverarbeitung mit reinholen, frühzeitig runtersamplen! Und nicht zuletzt hat cvlc im Vergleich zu vlc auch noch eine geringere CPU-Auslastung. Das waren jetzt erstmal die offensichtlichen Punkte wo ich ansetzen würde um die Last runterzubringen.

Ich habe das bei meinen GNU-Radioprogrammen auch schon oft erlebt Semir, das eine funktionierende Lösung anfangs einen Kern zu 90% auslastet, sich nach einigen Optimierungen aber dann sogar im einstelligen Prozentbereich bewegen kann! Also nicht aufgeben. Diese Optimierungsschritte sind aber nötig, wenn man später deutlich rechenaufwendigere Modulations-/Demodulationsverfahren benötigt. Übrigens für den RTLSDR gibt es einen eigenen Signalbaustein! Aber ich würde für eine DAB+ Demodulation doch auf andere Tools aus dem ODR-Projekt zurückgreifen, als alles in GNU-Radio aufbauen zu wollen!

Gruß Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Bernhard, hallo Radiofreunde,

hier ein weiterer Update zu diesem Projekt. Ich habe es jetzt auf 4 Kanäle erweitert und noch etwas an den Abläufen optimiert. Was ich festgestellt habe ist, dass vier VLC Player im Betrieb nur ca. 12-14%auf meinem System verbrauchen. HIer meine Systemkonfiguration:


.png   Semir_System_Laptop.png (Größe: 25,55 KB / Downloads: 756)

Hier die Systemauslastung mit 4x VLC im GUI Modus.  Drei davon spielen Internet Radio Streams der 4. Bing Crosby von der Festplatte:

   

Aus meiner Sicht ist hier nicht viel Optimierung möglich. Wenn ich die Player mit cvlc ohne GUI starte macht das kaum einen Unterschied. Die Ausgabe habe ich jetzt etwas schöner mit virtuellen Soundkarten unter "Pulse Audio" gelöst. Ein beim hochfahren startendes Script (.pasetup.sh, siehe Anhang) erzeugt 4 virtuelle Karten VSC1-VSC4 die ich im jeweiligen Player auswählen kann die Datei ".asoundrc" (ins "home" Verzeichnis des Nutzers kopieren) macht die virtuellen Sound Karten für das Linux Sound System (Alsa) sichtbar, so dass ich sie in GNU Radio anwählen kann. Sehr empfehlenswert ist es auch das Programm "pavucontrol" zu installieren das eine schöne Übersicht aller Pulse Audio Signale samt Pegelung bietet:


.png   Pavucontrol.png (Größe: 56,9 KB / Downloads: 754)

Eine Ausgabe vom VLC mit --sout als lpcm Datenstrom über tcp habe ich nicht hinbekommen. Alle streaming Protokolle erwarten ein als ts (Transport Stream) gemultiplextes Signal. Damit kann aber GNU Radio nichts anfangen, da es dafür kein "Source" Modul gibt und ich nicht in der Lage bin eines zu schreiben...

Hier nun der Graph für vier Kanäle. Ich habe die Frequenzen 702, 747, 801 und 819kHz gewählt weil die "ruhig" sind und recht dicht beieinander liegen. Damit wäre theoretisch eine Abstrahlung über eine abgestimmte Antenne möglich...Ich verwende hier einen Ferritstab der auf ca. 750kHz abgestimmt ist und neben dem Radio liegt das geht sehr gut.

   

Auch hier glaube ich nicht, dass die Methode virtuelle Sound Karte viel CPU Leistung verbraucht. Im Screenshot oben sind alle Player aktiv und auf eine der vier virtuellen Karten geschaltet.

Was jedoch die CPU Auslastung hochschnellen lässt ist wenn ich GNU Radio starte. Die gewählte Abtastrate ist hier ausschlaggebend was ich auch erwartet hatte. Leider kann der VGA Adapter nicht mit weniger als ca. 7,8MHz Taktrate gefahren werden. Ich vermute eine darin enthaltene PLL ist dann am unteren "Anschlag"...

Hier die Auslastung mit allen vier Kanälen und aktiver Ausgabe. Ich kann trotzdem noch diesen Report hier auf dem selben Rechner flüssig schreiben...

   

Nun habe ich das so gelöst, dass ich erst mit ca. sechsfachem Oversampling die Träger erzeuge und dann nachdem alle modulierten Signale addiert sind erst das Gemisch nochmal in der Samplerate verdopple, damit es die VGA Karte frisst. damit konnte ich ca. 20% CPU Auslastung einsparen und einen weiteren Kanal hinzufügen.

Mehr als 4 Kanäle möchte ich auch nicht unbedingt einrichten, da die Bit-Auflösung mit jedem weiteren Kanal sinkt, bzw. der Rauschabstand des Signals schlechter wird. Schade, dass der VGA Adapter nicht mit 10 bit läuft, dann wären bei gleicher Qualität 16 Kanäle machbar, aber auch so ist es klasse einfach mal so bei einem Sammlertreffen 4 "Radiosender" ins AM Band zaubern zu können.

Gerne würde ich das ganze nun noch mit einem einzigen Mausklick oder Befehl starten können, aber das scheint nicht so einfach zu sein. Den Graphen des GNU Radio Programms kann man auch direkt starten wenn man den "top_block" oder wie man den Graphen halt oben im Block "Options" genannt hat startet. Diese Datei befindet sich im Projektverzeichnis. Dann muss aber noch der osmocom Treiber für die VGA Karte gestartet werden damit er nach einer TCP Verbindung sucht, was nur über eine weitere Konsole geht, da die mit dem Graphen ja beschäftigt ist.

Wie man ein Script schreibt das eventuell beide Programme also erst den Graphen und dann den Treiber startet weiß ich nicht dazu sind meine Kenntnisse nicht ausreichend, vielleicht hat ja hier jemand eine Idee wie das gehen könnte.


Angehängte Dateien
.zip   .pasetup.sh.zip (Größe: 410 Bytes / Downloads: 22)
.zip   .asoundrc.zip (Größe: 248 Bytes / Downloads: 19)
.zip   AMTX_4F_M.py.zip (Größe: 1,47 KB / Downloads: 17)
.zip   AMTXX4F2.grc.zip (Größe: 1,96 KB / Downloads: 19)
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Hallo SEMIR!

Toll das du dich jetzt auch mit SDR beschäftigst. Der Unterschied vlc zu cvlc wird umso größer, je kleiner der computer und die verfūgbaren Ressourcen sind. Wir setzen ja beim iRadio cvlc ein und beim iTV vlc. Da merkt man denn Unterschied deutlich auch wenn vlc nur einen Audiostream wiedergeben muss. Die GUI braucht dann wertvolle CPU Zeit die an anderer Stelle fehlt. Wir hatten das mal getestet das waren zwischen 5 bis 10% weniger Cpu-Auslastung. Das klingt erstmal wenig, summiert sich aber schnell auf wenn man mehrere Instanzen des Programmes benötigt. Deshalb gehen meine Empfehlungen auch immer in Richtung cvlc. Gerade wenn der Rechner als eigenständiger Modulator läuft braucht man die GUI sowieso nicht, da in der Regel weder ein Monitor angeschlossen, gar noch eine Maus oder so. Das ist dann auf kleinen stromsparenden Senderechnern verschwendete Rechenleistung die anderswo gebraucht wird.

Bei vlc/cvlc darfst du keinen TS versenden, sondern must das wie Bernhardt geschrieben hat direkt in vlc zu einfachen Monosamples umrechnen lassen. Sowohl vlc als auch TCP ist es egal was es inhaltlich verschickt! Nur GNU Radio möchte eben Sample an Sample haben.
Die virtuellen Soundkarten sind auf dem Pi echte Schlucker! Pro Karte steigt bei mir die CPU Auslastung um 6-8% an. Was auf kleinen Rechnern definitiv nicht laufen darf ist der Python -Interpreter. Das hattennwir ja schon geklärt warum, damals beim Pimoroniradio auf alten Raspberrys. Bernhardt hat in einem Laufzeitvergleich zwischen nativen C gegen interpretierten Pythoncode beeindruckend gezeigt um wieviel Python größer ist und langsamer läuft. Nun ist GNURadio aber auf Python angewiesen und einige Signalblöcke auch. Ich musste deshalb alles direkt in C codieren um 6 Sender auf LW berechnen lassen zu können. Ûbrigens die 8 Bit beziehen sich doch auf das Signalgemisch zum DAC, GNURadio kann viel "größer" rechnen. Mit der FL2K Karte zeigt so jemand wie er 121 Kanäle in doch noch anhörbarer Qualität erzeugt. Testweise habe ich auch schon mal zehn Sender berechen lassen, das klang immer noch MW-typisch und mehr als brauchbar. Man könnte die drei DACs auch im 24 Bit Interleaved Modus laufen lassen. Dafür mūssen die Transferprogramme und Treiber gepatched werden.


Falls du vorhast den Sender dauerhaft laufen zu lassen, empfehle ich einen schnellen Einplatinenrechner und das von Bernhardt vorgestellte und mit entwickelte csdr. Oder du schreibst einen Softwareoszillator fūr die Trägererzeugung (einfache Sinusfunktion) und die AM-Modulation in C. Aber etwas C und ein paar Kenntnisse zum iRadio musst du mitbringen, geht dann aber wirklich ratzfatz.

Otto.
Zitieren
Semir, schaue dir mal unserer rc.local und vlcd vom iRadio an. Das sind bash-Scripte in denen wir mehrere Programme starten und in den Hintergrund legen. Im Prinzip steht im Script also alles so wie man es über die Konsole eingibt, zusätzlich ein & um den Prozess in den Hintergrund zu legen, damit er den Ablauf des Script nicht aufhält. Am Anfang des Scripts steht wie gewohnt das Shebang (siehe Wiki) , das exit wäre jetzt nur für die rc.local von Bedeutung. Das wichtigste ist also das &-Zeichen am Ende eines Programmstarts, dann braucht man auch keine weiteren Konsolenfenster!

Zu DACs und höheres SNR: Hier funktionieren die gleichen Tricks wie bei den ADCs!

Gruß Bernhard

PS:. Es ist in der Onlineübersicht interessant zu sehen, das nach einem neuen Beitrag hier die Leser sofort angestürzt kommen und nachschauen was es Neues gibt! Auch die vergleichsweise hohen Zugriffszahlen der "Digitalthreads" gegenüber anderer Themen erfreut, aber erstaunt mich auch. Wenn das soviele Leute lesen, warum gibt es dann noch so wenig Nutzer die darüber schreiben bzw. die SDR Technik einsetzen? Wenn die Sache zu kompliziert wäre und die Leute nichts verstehen, dann würden doch auch die Lesezugriffe nicht so hoch sein!
Also schreibt ruhig über eure SDR Experimente, Internet- und Digitalradios (gekauft wie selbstgebaut)!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Nun, ich hab mir auch ein Adapter bestellt, denke aber nicht dass ich es zum laufen bekomme, obwohl ich fasziniert mitlese was ihr da macht....ich kann nicht programmieren und mir fehlen da die Grundlagen....Linux/Unix und Konsorten bekomme ich nicht mehr in meinen Kopf rein....
Gruß Nad

Ein Leben ohne Röhren ist möglich, aber sinnlos!
Zitieren
Hallo nflanders,

das haben schon einige Nutzer aus den drei großen deutschen Radioforen gesagt und nie hat es sich bewahrheitet!
Es sind alle ans Ziel gekommen und von einigen bekam ich sogar Mails mit Danksagungen, das das iRadio zum Beispiel dazu geführt hat, das Neulinge ohne Grundkenntnisse von Linux und C/C++ nun die "geilsten" Digitalradios bauen und Bedienoberflächen und andere Erweiterungen selbstständig programmieren können. Alles in kurzer Zeit!

Das wird also schon funktionieren, wir werden gemeinsam eine Lösung erarbeiten.

Gruß Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Zusammen,

an alle die den FL2000 VGA Adapter nutzen. Ich habe herausgefunden wie man die Fehlermeldung mit den Buffern weg bekommt die beim Start des Programms fl2k_tcp bzw. fl2k_file auf der Konsole erscheint. Im Netz stand eine Anleitung die sich zwar auf Kameras bezog aber das Problem löst, da bei Kameras wohl das gleiche Problem auftritt. Hier der aus dem Englischen von mir schnell übersetzte Text:

--------------------
USBFS Speicher in Ubuntu vergrößern.

Bei der Verwendung von USB3 Kameras (und fl2k, Kommentar: Semir) in Linuxsystemen kann es zu Problemen mit dem USB Speicherlimit kommen. Grundsätzlich limitiert Linux den Speicher für Bildeinlesevorgänge auf 2MB. Um Bilder größer 2MB einzulesen muss der dem USBFS zur Verfügung gestellte Speicher in Abhängigkeit der gewünschten Anzahl Puffer die der USB Treiber reservieren soll vergrößert werden.  

Temporäre Lösung (Semir: ist nach einem Neustart weg) Code:

sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'

Zur Überprüfung ob die Begrenzung erfolgreich erhöht werden konnte ist dieses Kommando auszuführen:

cat /sys/module/usbcore/parameters/usbfs_memory_mb



Dauerhafte Lösung um das Speicherlimit zu erhöhen:

Die Datei  

/etc/default/grub

mit einem Texteditor mit Root-Rechten (sudo) öffnen und folgenden Zeile suchen:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Diese Zeile ist zu ersetzen mit folgender Ergänzten Variante:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=1000"

Danach muss noch Grub (der Linux Boot Loader) upgedatet werden damit die Änderungen greifen. Code:

$ sudo update-grub

Jetzt tritt die Fehlermeldung auch nach einen Neustart nicht mehr auf.

---------------------------
Anwendung auf eigenes Risiko....
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Hinweis: Die Maßgabe USB3=1920x1080/USB2=800x600 ist bei weitem nicht hinreichend für den Fresco-Chip.
Es gibt einen anderen Chip in einigen gleich aussehenden Adaptern.
USB VID 534D (vermutlich unregistriert verwendet), PID 6021. Der Chipsatz registriert mehrere USB Interfaces:

1. USB2.0 Speaker
2. USB Verbundgerät usb extscreen
3. msusb video

Der Chip ist ein TQFP-100, VGA-Anschlüsse an Pin 69-75, Aufschrift:
HU93A
PBA-SNF
LGOE
1921 (also KW21 in 2019)

An Aussenbeschaltung ist außer einem 24MHz-Oszillator für USB, einem 74HC14 und einem AMS1117 Low-Drop-Regler nur Hühnerfutter vorhanden.
Angeblich gehört die VID zu Hefei Macrosilicon Technology Co., Ltd, aber deren bekannten Chips sind Videograbber-ICs und sie tragen auch ein Herstellerlogo.

Der Adapter war aus der Bucht 383170832480. Ein weiterer bei dem explizit FL2000 erwähnt wird ist im Anflug.

Gruß Bernd
Zitieren
Danke für den Hinweis Bernd, 

der besagte Chip, besitzt er die Möglichkeit seinen Treiber auch als "USB-Speicherstick" mitzubringen wie es beim FL2K von Fresco der Fall ist? Hast Du ein (Kurz-)Datenblatt für den Chip von Hefei?

Ja ich hatte damals auch schon ein paar "Fehlkäufe" die dann doch nicht einen FL2000 von Fresco hatten! Da habe ich quasi blind zugegriffen! Gott sei Dank ist der Rückversand bei deutschen Händlern (Amazon,...) ja problemlos. 
Wie ich weiter oben schon geschrieben habe, schaut besser zusätzlich auf die Produktfotos des Händlers! Dort wird bei einigen Händlern das Datei-Inhaltsverzeichnis der gestrecken USB-Grafikkarte gezeigt, so wie hier:

   

Damit ist der Fall so ziemlich klar und diese Grafikkarten kosten in Deutschland auch nicht viel! Der FL2K muss diese Treiber-OnBoard Funktion aber nicht haben wie wir oben schon gesehen haben. Billigstversionen bringen den Treiber tatsächlich auch auf CD mit. Ich würde allerdings das Risiko eines "Blindkaufes" über ebay, möglichweise aus Fernost, nur wegen ein paar Euros nicht eingehen. 
Mein Gott, ob das Ding nun 7-8 Euro kostet und ich nach 8 Wochen Lieferzeit rausstelle, das ich den falschen Chip gekauft habe, oder ich gebe gleich 15-20 Euro mit 1-2 Tage Lieferung in Deutschland aus und der Händler gibt den FL2K direkt in der Produktbeschreibung an, ich glaube der Aufpreis ist es mir das wert. 

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Bernhard,


ich vermute die haben nur die VID von Hefei benutzt. Ich habe nichts über den Chip herausgekriegt.

Inzwischen sind 2 FL2000 eingetroffen, ohne USB-Treiberfunktionalität on board, mitgelieferte CD.

Ich habe die gar nicht erst installiert und gleich mit Zadig den WinUSB-Treiber zugewiesen.


Für Windows:

Wenn man bei fl2k_test die Fehlermeldung usb_open error -12 bekommt, ist das ziemlich sicher der Hinweis, daß man dem Subinterface und nicht dem "Verbundgerät" den Treiber zugewiesen hat. Daher immer, wie an anderer Stelle beschrieben, in Zadig den Haken bei "Ignore Hubs or Composite Parents" wegnehmen, das "USB-Verbundgerät (Composite Parent)" mit VID 1D5C PID 2000 suchen und diesem den WinUSB-Treiber zuweisen.


Ach ja, irgendwo hieß es, es gäbe kaum noch HD-Sub-15 für die Adapterplatinen zu kaufen:
Reichelt HD 15MW PGK
Conrad 1389960 - 62 und 741584 - 62 und 1586480 - 62

Gruß Bernd
Zitieren
Hallo Bernd,

kannst Du vielleicht für unsere Windows-PC Nutzer hier im Forum eine kleine bebilderte Installationsanleitung geben? Ich denke es gibt sicher Interessenten die mit dem Grafikkarten-DAC mal das eine oder andere Signal erzeugen wollen und dafür nicht gleich auf Linux oder Mac wechseln müssen. Also von "Auspacken" bis "Grafikkarte nimmt Samples von GNURadio, ... entgegen". Ich selbst bin nicht so der Windows-Nutzer, deshalb bezweifle ich da den optimalsten oder kürzesten Weg zu kennen und niederschreiben zu können.

Gruß Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Bernhard,

kann ich machen, wird aber ein paar Tage dauern.
In diesem Thread?

Gruß Bernd
Zitieren
Hallo Bernd,

ja denke das passt hier mir rein oder?
Zeit ist kein Problem, musst jetzt also nicht die Feiertage dafür opfern!

Vielen Dank und Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Zusammen,

ich wollte zu diesem Thema noch eine kleine Ergänzung beitragen für User die den Adapter auf einer Virtual Box Virtuellen Linux (Mint) Maschine nutzen möchten die unter Windows 10 läuft. Hintergrund ist es handelt sich um meinen Dienstrechner und da wollte ich privates nur in der VM haben. Das war auch prinzipiell kein Problem und eine Mint Installation lief auch problemlos in der VM, aber der Adapter wollte partout nicht in der VM erkannt werden. Der Rechner ist ein Notebook von Dell mit i7 Prozessor, 12 Cores und 16GB RAM. Das Gerät hat mehrere USB 3.0 Anschlüsse und einen USB C/Thunderbolt Port über den er im Büro auch mit einer Dockingstation kommuniziert. Die Festplatte is unter Windows mit Bit-locker verschlüsselt was hier aber keine Rolle spielen sollte.

Wenn ich den Adapter an einen der USB 3.0 Anschlüsse stecke wird er zwar erkannt und in der VM kann ich ihn auch durchreichen, aber in der VM meint der fl2k Treiber "No fl2k Device found".  Durch Zufall versuchte ich es mit einem USB C auf USB3.0 Adapter am Thunderbolt Port und siehe da jetzt konnte ich den fl2k Adapter einrichten und er wurde auch erkannt. Ich habe mehrere Thunderbolt auf USB 3.0 Adapter probiert und mit allen funktionierte der fl2k Adapter perfekt. Ich konnte alle meine AM Stereo grc Dateien unter der VM laufen lassen und das System lief zuverlässig mit einer Auslastung um die 30%.
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
Anleitung für Windows Teil 1

FL2000 an Windows

Zutatenliste:

1 Rechner mit Windows 10 64bit (Win 7 und/oder 32bit sollten auch funktionieren, sind aber von mir wegen Überalterung ungetestet)
1 FL2000 USB-VGA-Adapter
1 Download Osmo fl2k für Windows https://ftp.osmocom.org/binaries/windows...191215.zip Auf die richtige Wortbreite achten, es gibt auch die 32bit-Version!
1 Download ZaDig 2.4 https://github.com/pbatard/libwdi/releas...ig-2.4.exe

Vorbemerkung: Zunächst den Adapter noch nicht anschliessen!

Zubereitung:

  • Die Datei osmo-fl2k-64bit-20191215.zip entpacken, ich habe sie nach C:\Program Files\osmo-fl2k-64bit-20191215 entpackt (benötigt Admin-Rechte).
  • Eine Kommandozeile öffnen (Start, "cmd" tippen, Enter)
  • In das osmo-fl2k-Verzeichnis wechseln, cd "C:\Program Files\osmo-fl2k-64bit-20191215"
       
  • Testweise das Programm fl2k_test starten, es sollte folgende Fehlermeldung erscheinen:

Code:
C:\Program Files\osmo-fl2k-64bit-20191215>fl2k_test
libusb: warning [libusb_exit] some libusb_devices were leaked
Failed to open fl2k device #0.

Wenn eine andere Meldung erscheint, passt das Programmpaket nicht zum Windows (32/64bit?). Dann ist hier Ende und der Fehler zu suchen.

  • Den Adapter an einen USB3-Port anschliesen. Ggf. installiert Windows Treiber. Bei Nachfragen, keine Treiber installieren. Wenn der Adapter ein "Laufwerk" mitbringt, keine Software von hier installieren! Ggf. wird der VGA-Adapter erkannt, oder er erscheint als Verbundgerät unter "Geräte":

    .png   treiber_1.PNG (Größe: 3,56 KB / Downloads: 437)
  • Erneut in der Kommandozeile fl2k_test aufrufen. Die Fehlermeldung sollte sich nun geändert haben:

Code:
C:\Program Files\osmo-fl2k-64bit-20191215>fl2k_test
usb_open error -5
Failed to open fl2k device #0.

Der Fehler "usb_open error -5" besagt, daß die libusb-Unterstützung für das Gerät fehlt. Diese wird nun installiert.
  • Das heruntergeladene Programm Zadig-2.4.exe starten. Es benötigt Admin-Rechte und sollte von Akeo Consulting signiert sein!
  • Unter "Options" den Punkt "List all devices" anhaken und den Haken von "Ignore Hubs or Composite Parents" wegnehmen!
       
       
       
  • Nicht das USB-Videogerät wählen (USB ID 1D5C 2000 00)!
       
  • Das Verbundgerät (Composite Parent) von Fresco Logic suchen und auswählen. USB ID 1D5C 2000.
       
    Den Treiber WinUSB (v6.1.7600.16385) auswählen und "Replace Driver" anklicken. Es erscheint eine Warnung, daß man einen Systemtreiber modifizieren möchte.

    .png   zadig_6.PNG (Größe: 14,13 KB / Downloads: 436)
  • Dies bestätigen. Die Installation dauert etwas.

    .png   zadig_7.PNG (Größe: 6,11 KB / Downloads: 433)
  • Das Ende abwarten und bestätigen

    .png   zadig_8.PNG (Größe: 17,24 KB / Downloads: 436)
  • In der Kommandozeile den fl2k_test erneut ausführen. Der Test sollte nun starten und nach einiger Zeit kann man mittels 2x CTRL-C abbrechen:

Code:
C:\Program Files\osmo-fl2k-64bit-20191215>fl2k_test
Reporting PPM error measurement every 10 seconds...
Press ^C after a few minutes.
real sample rate: 125596154 current PPM: 255962 cumulative PPM: 255962
real sample rate: 125505788 current PPM: 255058 cumulative PPM: 255510
real sample rate: 125464025 current PPM: 254640 cumulative PPM: 255220
real sample rate: 125875017 current PPM: 258750 cumulative PPM: 256102
[...]
real sample rate: 125673894 current PPM: 256739 cumulative PPM: 256556
real sample rate: 125414844 current PPM: 254148 cumulative PPM: 256212
real sample rate: 125888142 current PPM: 258881 cumulative PPM: 256546
Signal caught, exiting!
libusb: warning [winusbx_abort_transfers] CancelIoEx not supported for sub API WinUSB
Signal caught, exiting!

C:\Program Files\osmo-fl2k-64bit-20191215>


Sollte hier wieder "usb_open error -5" erscheinen, so ist entweder der Treiber nicht installiert worden, oder er ist dem falschen Gerät "usbvideo" des Adapters zugeordnet worden, dann erneut kontrollieren und ggf. neu installieren.

GLÜCKWUNSCH! DIE INSTALLATION IST FERTIG!

Sollte man auf die Idee kommen, den Adapter mal "normal" betreiben zu wollen, so ist der alte Treiber wieder zu benutzen. Dazu im Geräte-Manager das USB-Verbundgerät (Composite Parent" unter "USB-Geräte" suchen:
   
Doppelklicken, sicherstellen daß es sich um das richtige Gerät handelt (Details/Hardware-IDs muß USB\VID_1D5C&PID_2000&REV_0200 sein) und dann unter Treiber "Vorheriger Treiber" wählen.

.png   treiber_3.PNG (Größe: 88,94 KB / Downloads: 438)
Der WinUSB-Treiber ist dann wieder deaktiviert und das Geräte verhält sich wie frisch angestöpselt.


Gruß Bernd
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  MW-Sender mit ESP32 DrNeurosurg 23 4.612 06.02.2024, 14:56
Letzter Beitrag: navi
  DRM - Sender mit Fl2K-Grafikkarte Bernhard45 0 2.030 21.04.2020, 09:47
Letzter Beitrag: Bernhard45
  HDRadio / IBOC Sender mit FL2K-Grafikkarte Bernhard45 8 4.537 21.01.2020, 20:51
Letzter Beitrag: Bernhard45
  FMBerry, UKW-Sender mit einem Raspberry saarfranzose 22 11.986 27.12.2019, 18:43
Letzter Beitrag: Bernhard45
  MW Sender Radio Mann 2 2.137 10.12.2019, 22:50
Letzter Beitrag: navi

Gehe zu: