Starten Sie DAB Multiplex zu Hause

Hallo Geektimes.

Der digitale Rundfunk wird in verschiedenen Ländern schrittweise eingeführt. In Europa und Australien ist es der Standard DAB / DAB + , in den USA HD Radio , in China CDR (China Digital Radio). Zu den Pluspunkten für den Benutzer zählen ein sauberer Klang aufgrund des digitalen Streams, zusätzliche Dienste (z. B. der Name des Songs und der Name des Interpreten auf dem Empfängerbildschirm) und im Fall von DAB eine größere Anzahl von Sendern im Vergleich zu FM. Digitale Radioempfänger sind jetzt relativ günstig. Die Preise beginnen bei rund 40 US-Dollar.

Russland hat sich noch keinem der Standards offiziell angeschlossen, aber wenn dies geschieht, wird es höchstwahrscheinlich DAB sein. Der Testbetrieb wurde bereits in Moskau durchgeführt, und die europäischen Marktempfänger für die Russische Föderation sind geografisch besser zugänglich als die amerikanischen. Neue europäische Autos (von denen wiederum mehr als amerikanische sind) sind häufig bereits mit einem DAB-Empfänger ausgestattet. In der Zwischenzeit kann jeder zu Testzwecken DAB zu Hause mit einem SDR-Transceiver starten.


(Bildquelle / Getty)

Details unter dem Schnitt (sorgfältig viele lange und langweilige Konfigurationen).

Wie funktioniert es?


Leider sind unterschiedliche Standards nicht miteinander kompatibel.

European DAB ist ein MP2- oder AAC-Stream, der mit ODFM in Kanälen mit Frequenzen von 174 bis 239 MHz übertragen wird. So weit wie möglich mehr als 30 Kanäle mit einer Breite von jeweils etwa 1,5 MHz können mehrere Stationen gleichzeitig in einem Kanal übertragen werden. Laut Wikipedia ist die Verwendung von DAB bei Verwendung einer Bitrate von 192 kbit / s in Bezug auf die Anzahl der Sender dreimal effektiver als bei herkömmlichem FM.

Das Spektrum eines DAB-Kanals auf dem SDR-Bildschirm sieht folgendermaßen aus:



Zum Vergleich sehen FM-Sender im gleichen Maßstab wie folgt aus:



Im amerikanischen HD-Radio gingen sie einen anderen Weg - digitale Kanäle wurden bestehenden FM-Sendern „zur Seite“ hinzugefügt. Dies ermöglichte es uns, keine neuen Frequenzen zuzuweisen und die Kompatibilität mit alten Empfängern zu belassen. Der Nachteil ist, dass in Großstädten bereits UKW-Sendungen ausgestrahlt werden. Auf der anderen Seite ist sogar die maximale Anzahl von 50 Sendern für FM ziemlich gut, höchstwahrscheinlich brauchen die Hörer sie nicht.

Das Spektrum von HD-Radio sieht folgendermaßen aus (Screenshot von Youtube):



Die chinesische CDR hat beschlossen, den amerikanischen Ansatz zu kopieren, leider reichen meine Null-Chinesisch-Kenntnisse nicht aus, um detailliertere Informationen darüber zu finden.

Der Preis für die Empfänger bei Amazon reicht von 30 US-Dollar für die einfachsten Modelle bis zu> 100 US-Dollar für fortgeschrittenere Modelle mit Touchscreen, WLAN oder Farbbildschirm.



Da „Chukchi kein Leser ist“, werden wir das Testradio selbst im DAB / DAB + -Format starten. HD-Radio funktioniert leider nicht, das Format ist geschlossen und es sind keine Encoder verfügbar.

Führen Sie DAB / DAB + aus


Der Prozess ist eigentlich nicht kompliziert, aber sehr mühsam in Bezug auf die Erstellung der erforderlichen Konfigurationen. Für den Test benötigen wir Linux und SDR mit der Fähigkeit, beispielsweise HackRF oder USRP zu übertragen.

1. Zusammenstellung des Projekts


Zum Kompilieren des Encoders wird Linux benötigt. Ich habe Ubunty verwendet, das fertige Image für VirtualBox wurde von http://www.osboxes.org/ubuntu/ heruntergeladen.

ODR-AudioEnc kompilieren
Zuerst müssen Sie den DAB / DAB + Audio-Encoder kompilieren. Sie finden ihn auf der Seite github.com/Opendigitalradio/ODR-AudioEnc .

git clone https://github.com/Opendigitalradio/ODR-AudioEnc.git cd ODR-AudioEnc/ ./bootstrap ./configure --enable-alsa --enable-vlc make sudo make install 

ODR-DabMux kompilieren
ODR-DabMux kombiniert digitale Streams zu einem Multiplex. Weitere Informationen finden Sie unter github.com/Opendigitalradio/ODR-DabMux .

 git clone https://github.com/Opendigitalradio/ODR-DabMux.git cd ODR-DabMux/ ./bootstrap.sh ./configure make sudo make install 

ODR-DabMod kompilieren
Dies ist ein Modulator, der tatsächlich Daten an den Sender sendet. Das Montageprinzip ist das gleiche, der Befehl zum Herunterladen:

 git clone https://github.com/Opendigitalradio/ODR-DabMod.git 

Wenn während der Assembly keine Bibliotheken ausreichen, müssen sie mit apt-get installiert werden.

Jetzt sind alle Teile des Projekts zusammengebaut, und mit all dem werden wir versuchen, abzuheben .

2. Konfiguration


Leider funktionierte USRP in einer virtuellen Maschine nicht und es war zu faul, volles Linux auf die Festplatte zu bringen. Daher habe ich den Streaming-Modus nicht berücksichtigt - der Multiplex wurde aus vorbereiteten MP3-Dateien kompiliert und die resultierende IQ-Datei wurde unter Windows gestartet. Ja, im Allgemeinen ist keine Streaming-Übertragung für das Haus erforderlich, es gab keine Aufgabe, eine „Piratenstation“ zu erstellen.

Verschiedene Einstellungen werden hier ausführlicher beschrieben: http://opendigitalradio.imtqy.com/mmbtools-doc/mmbtools.pdf .

Datenaufbereitung
Es wird 2 Kanäle in unserem Multiplex geben, für die ich 2 MP3-Dateien von YouTube heruntergeladen und sie (wer hätte das gedacht) sound01.mp3 bzw. sound02.mp3 genannt habe.

Konvertieren Sie Dateien in WAV mit einer Bitrate von 48000:
ffmpeg -i sound01.mp3 -ar 48000 sound01.wav
ffmpeg -i sound02.mp3 -ar 48000 sound02.wav

Konvertieren Sie sie in das DAB-Format:
odr-audioenc --dab -b 128 -i sound01.wav -o prog1.mp2
odr-audioenc --dab -b 128 -i sound02.wav -o prog2.mp2

Die Ausgabe sollte 2 Dateien prog1.mp2 und prog2.mp2 sein.

Multiplex-Erstellung

Zuerst müssen Sie eine Datei erstellen, die die Konfiguration unseres "Radiosenders" beschreibt. Ich möchte Sie daran erinnern, dass es in einem DAB-Kanal viele Stationen mit jeweils eigenen Parametern geben kann.

Erstellen Sie die Datei "config.mux" mit dem folgenden Text:

 general { dabmode 1 nbframes 2000 ; Set to true to enable logging to syslog syslog false ; Enable timestamp definition necessary for SFN ; This also enables time encoding using the MNSC. tist false } remotecontrol { telnetport 0 } ensemble { id 0x4fff ecc 0xec ; Extended Country Code local-time-offset auto international-table 1 label "mmbtools" shortlabel "mmbtools" } services { srv-p1 { label "Station1" } srv-p2 { label "Station2" } } subchannels { sub-p1 { type audio inputfile "prog1.mp2" bitrate 128 id 10 protection 4 } sub-p2 { type audio inputfile "prog2.mp2" bitrate 128 id 11 protection 4 } } components { comp-p1 { service srv-p1 subchannel sub-p1 } comp-p2 { service srv-p2 subchannel sub-p2 } } outputs { output1 "file://output.eti?type=raw" } 

Die Konfiguration beschreibt die Kanäle im Multiplex und ihre Datenquellen. Der Parameter nbframes gibt an, wie viele Frames erstellt werden sollen. 2000 Frames entsprechen ungefähr einer Minute Wiedergabe.

Erstellen Sie beim Speichern der Datei einen Multiplex:

 odr-dabmux config.mux 

Die Ausgabe sollte die Datei output.eti sein , in meinem Fall war ihre Größe 12 MB.

Übertragen

Es gibt zwei Möglichkeiten. Unter "echtem" Linux kann odr-dabmod Daten direkt an den Transceiver übertragen, dies hat jedoch unter der VM nicht funktioniert. Daher habe ich als Ausgabeparameter eine Rohdatei angegeben, die mit Gnu Radio kompatible Daten enthält.

Erstellen Sie die Datei config.ini:

 [input] transport = file source = output.eti loop=0 [modulator] digital_gain=0.9 rate=2048000 [output] output = file [fileoutput] format = complexf_normalised ;format = s8 filename = output.iq 

Hier ist der entscheidende Punkt das Ausgabeformat und sein Typ. Für USRP verwende ich das Format complexf_normalised, für HackRF ist theoretisch ein 8-Bit-s8 geeignet.

Speichern Sie die Konfiguration und starten Sie die Konvertierung:

 odr-dabmod config1.ini 

Das ist alles! Die Ausgabe sollte config.iq sein, in meinem Fall ungefähr 700 MB groß für eine Minute Aufnahme (IQ-Float-Format). Wir kopieren es auf den "Haupt" -Computer und Linux kann geschlossen werden.

3. Testen


Wie ich bereits sagte, habe ich keinen DAB-Empfänger, der Chukchi ist kein Leser, ich höre überhaupt kein Radio :) Zum Testen habe ich die RTL-SDR-Pfeife und das kostenlose Programm Welle.io verwendet .

Schließen Sie zuerst den Empfänger an, führen Sie Welle.io aus und suchen Sie einen freien Kanal. In meinem Fall waren 12B davon betroffen:



Wir erinnern uns an die Frequenz und erstellen das einfachste Diagramm für die Übertragung an Gnu Radio:



Wir starten, warten ein paar Sekunden und ... wir hören die aufgenommene Musik über welle.io.



Wir stellen sicher, dass die Anzahl der Kanäle und ihre Namen den in der Konfiguration angegebenen entsprechen.

Ja, der gesamte „Sendekomplex“ sieht folgendermaßen aus:



Fazit


Es sind nicht die Götter, die die Töpfe verbrennen, und es ist durchaus möglich, moderne Technologien zu Hause zu berühren, ohne den Desktop zu verlassen.

Die Antenne war natürlich nicht auf die gewünschte Frequenz abgestimmt (und ich habe keinen Antennenanalysator), die maximale Leistung von USB3 beträgt wahrscheinlich nicht mehr als 1 W und ist selbst dann über ein Band von 1,5 MHz verteilt. Die maximale Reichweite beträgt also ca. 0,5 m.

Wenn jemand die Experimente mit größerer Leistung wiederholen möchte, bietet eine eBay-Suche nach dem Wort „RF-Leistungsverstärker“ viele nützliche Links (offiziell benötigen Sie eine Lizenz für die Ausstrahlung, natürlich sollten Sie sicherstellen, dass andere Dienste nicht gestört werden).

Source: https://habr.com/ru/post/de408971/


All Articles