Themabewertung:
  • 2 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: 3)
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: 10)
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:

   

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:

   

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: 9)
.zip   .asoundrc.zip (Größe: 248 Bytes / Downloads: 5)
.zip   AMTX_4F_M.py.zip (Größe: 1,47 KB / Downloads: 6)
.zip   AMTXX4F2.grc.zip (Größe: 1,96 KB / Downloads: 6)
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....
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


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  AM Stereo Sender mit FL2k und GNU Radio Semir 33 1.202 30.11.2019, 15:44
Letzter Beitrag: Bernhard45
  Eigener DAB Sender, die Zweite Bernhard45 0 378 10.07.2019, 17:09
Letzter Beitrag: Bernhard45
  FMBerry, UKW-Sender mit einem Raspberry saarfranzose 20 1.777 17.05.2019, 17:12
Letzter Beitrag: saarfranzose

Gehe zu: