II. Der RasPi als RTL-SDR Server mit einem DVB-T USB-Stick

Der RasPi RTL-SDR Serverbetrieb

Nach der Installation des Treibers und der Softwaretools im ersten Teil geht es nun weiter mit der Konfiguration des SDR-Servers. Über das Tool rtl_tcp können die Signale des SDR auch über das Netzwerk gestreamt werden. Das ist der für mich spannendste Teil Radio über so einen preiswerten USB-Dongle zu hören.

  1. Auch die Funktion des SDR RTL-Servers sollte jetzt bereits funktionieren und kann mit sudo rtl_tcp –a <IP-Adresse RasPi> getestet werden. Hier läuft der Server standardmäßig auf Port 1234:
sudo rtl_tcp -a 192.168.1.49
  1. Mit einer kleinen Ergänzung beim Starten des Servers, kann der Port aber auch frei vergeben werden, wie hier auf 1337:
sudo rtl_tcp -a 192.168.1.49 -p 1337
  1. Der Server kann auch im Hintergrund laufen. Dazu wird ans Ende der Befehlszeile einfach noch ein & angehängt. So muss das Tool nicht jedes Mal mit einer neuen Verbindung des Clients ebenfalls neu gestartet werden, sondern lauscht einfach weiter im Hintergrund:
sudo rtl_tcp -a 192.168.1.49 -p 1337 &
  1. Sollte der Stream zum SDR# Client häufiger abreißen, dann ist es durchaus einen Versuch wert, den Buffer mit folgender Ergänzung zu vergrößern und neu zu starten:
rtl_tcp -d 0 -b 30 -a 192.168.1.49 -p 1234
  1. Wenn es ein device 0 gibt, sollte auch noch ein device 1 möglich sein. Werde ich bei nächster Gelegenheit mal austesten.
  2. Alle unterstützten Parameter können wir uns mit rtl_tcp -h anschauen:
rtl_tcp -h
  1. Die Ausgabe im PuTTY Terminalfenster sieht wie folgt aus:

Usage: [-a listen address]

[-p listen port (default: 1234)]

[-f frequency to tune to [Hz]]

[-g gain (default: 0 for auto)]

[-s samplerate in Hz (default: 2048000 Hz)]

[-b number of buffers (default: 15, set by library)]

[-n max number of linked list buffers to keep (default: 500)]

[-d device index (default: 0)]

[-P ppm_error (default: 0)]

Der nächste große Moment ist jetzt gekommen. Wir verbinden nun einen PC mit einem installiertem SDR Programm über das Netzwerk mit dem RasPi Server. Hierzu habe ich das Programm SDR# nach folgender Anleitung installiert. Allerdings kann der 1. Part davon mit der Zadig-Treiberinstallation dabei durchaus übersprungen werden, da wir den DVB-T Stick nicht direkt in unseren Windows PC stecken, sondern ausschließlich im entfernten RaspBerry Screenshot 2015-08-13 06.37.12Pi und diesen über TCP verbinden. Nach der Installation muss oben in der Liste den Eintrag RTL-SDR/TCP ausgewählt und unter Configure (Zahnrad) die lokale IP-Adresse 127.0.0.1 gegen 192.168.1.49 und den Port des Raspberry Pi Servers eingetragen. Standardmäßig ist der Port 1234. RTL AGC und Tuner AGC müssen in diesem Fenster angehakt werden oder zumindest der Regler RF Gain ganz nach rechts geschoben werden. Je nach Frequenzband und Antenne, empfehle ich mit diesen Einstellungen einfach mal etwas zu spielen!

Sollten wir mir verschiedenen USB-Dongles arbeiten und außerdem die Sticks kalibriert haben, können wir den in meinem Beispiel ermittelten Wert von -6 ppm auch in das Feld Frequency correction (ppm) eintragen.

  1. Nun ist es an der Zeit mit einer passenden Antenne vielleicht auch einmal den Funkverkehr der ISS mitzuhören. Für die ISS Flugbahnen gibt es ebenfalls ein passendes Tool.
    • Hier einige Frequenzen der ISS soweit ich sie im Netz gefunden habe:
        • 145.800 FM / ISS Sprechfunk/SSTV
        • 139.208 FM / An- Abdocken ISS
        • 143.618 FM / Sprechfunk Astronauten im Weltall
        • 143.622 FM / Sprechfunk ISS Bodenstation
  2. Für einen Autostart direkt beim Booten kann in die Datei rc.local folgende Zeile ergänzt werden:
/usr/local/bin/rtl_tcp -a 192.168.1.49
  1. Wird der SDR# Client im Netzwerk beendet, wird im Moment auch noch der rtl_tcp Server beendet. Soll der Client sich wieder neu verbinden können ohne das wir den Server neu starten, so müssen wir noch weitere Modifikationen am Setup durchführen. Später mehr dazu.
  2. Wer sich vielleicht irgendwann mal fragt, was das eine oder andere empfangene Signal bedeuten kann, sollte einmal in diesem Signal-Wiki herumstöbern.
  3. Wichtiger Nachtrag vom 20.08.15 zum Betrieb mit einem SDR# Client!
  4. Beim Beenden von SDR# oder irgendwelchen anderen Hängern im Netzwerk bleibt der rtl_tcp Server auf dem RasPi einfach hängen. Das Tool muss dann erst gekillt oder der RasPi komplett neu gebootet werden, bevor dann ein weiteres Mal mit SDR# darauf zugegriffen werden kann. Das war für mich sehr unbefriedigend und lästig auf Dauer. In einem Forum fand ich allerdings einige potentielle Hinweise zur Lösung meines Problems durch einen neueren USB Treiber:
  5. http://photobyte.org/rtl-sdr-segmentation-error-solved/Screenshot_Segmentation_Error_Update_USB
  6. Es muss dazu das Testrelease Jessie den Quellen hinzugefügt und upgedatet werden. Dazu öffnen wir mit dem nano-Editor die Datei sources.list:
sudo nano /etc/apt/sources.list
  1. Die folgende Zeile muss nun mit dem Editor ergänzt:
deb http://archive.raspbian.org/raspbian jessie main
  1. Mit CTRL + x und anschließender Bestätigung mit ‚y‘ schließen wir den Editor wieder und speichern die Datei.
  2. Als nächstes müssen die Repositories aufgefrischt werden:
sudo apt-get update
  1. Nun wird das aktuellste Release 19.1 statt 11.1 der USB Library libusb-1.0 installiert und das System einmal gebootet:
sudo apt-get install libusb-1.0

Nun klappt endlich alles zufriedenstellend. Der RTL-SDR Server läuft jetzt seit einigen Tagen stabil und ohne Ausfälle. Irgendwelche Nachteile bei der inzwischen auch etwas weiter fortgeschrittenen FHEM Installation konnte ich bisher ebenfalls nicht feststellen.

Auch mit einer lokalen Installation kann SDR# umgehen. Dazu muss dann allerdings doch der Zadig-Treiber installiert werden. Im Web habe ich dazu einen neuen experimentellen Treiber gefunden. Nach dem Download müssen die entpackten Files nur noch ins SDR# Verzeichnis kopiert werden. Damit soll der Empfangsbereich von 13 MHz bis 1864 MHz erweitert werden können. In einem noch etwas neueren Beitrag auf www.rtl-sdr.com fand ich einen Direct Sampling Treiber der gänzlich ohne Hardware-Modifikation auskommt!

Das war es vorerst. Weiter geht es demnächst in einem nächsten Teil mit der Einrichtung eines ADS-B Flugtransponderempfängers.

Weiterführende Links:

3 Kommentare zu „II. Der RasPi als RTL-SDR Server mit einem DVB-T USB-Stick

  1. Hallo,

    ich habe einen Raspi, der soweit mit rtl_tcp und am PC mit SDR# übers Netzwerk läuft.

    Mein Problem ist aber, dass ich keinen Autostart hinbekomme. Ich habe die Tipps hier auf der Seite soweit befolgt und in die rc.local „/usr/local/bin/rtl_tcp -a 192.168.178.30“ eingefügt. Der Pfad ist korrekt; rtl_tcp liegt in /usr/local/bin/.
    Dennoch kriege ich nach Neustart des Raspi keine Verbindung mit SDR#, sondern nur eine Fehlermeldung, dass die Verbindung verweigert wurde.

    Starte ich dann rtl_tcp nachträglich manuell über SSH, läuft alles einwandfrei.

    Was ich probiert habe: ein „&“ hinter das Kommando in der rc.local, um rtl_tcp im Hintergrund zu starten. Ein „sleep 10“ davor, falls der Raspi für irgendwas beim hochfahren mehr Zeit braucht. „$_IP“ anstatt der numerischen IP-Adresse. Alles egal, es bleibt dabei: Ich habe über SDR# nur Zugriff, wenn ich rtl_tcp manuell starte.

    Hast du (oder gerne auch jemand anders) irgendeine Idee zu dem Thema? Meine Linux-Kenntnisse sind eher bescheiden – ich kann zwar Befehle am Prompt eintippen und verstehe in etwa auch, was diese bedeuten, aber mir fehlt genau das tiefgründige Hintergrundwissen, um jetzt z. B. mal zu schauen, ob rtl_tcp überhaupt gestartet wurde und ob es irgendwo irgendwelche Logs mit Fehlermeldungen gibt oder so.

    Vielen Dank für jede Hilfestellung.

    Liebe Grüße
    Florian

Hinterlasse einen Kommentar