Nerdstuff: Raspberry PI 2 als #SDR Funkscanner

Wie ihr meiner Überschrift bereits entnehmen könnt, folgt heute wieder Nerdstuff.
Diejenigen unter euch die mich schon etwas länger kennen wissen, dass Amateurfunk zu einem meiner Hobbies zählt. Die Anderen wissen es spätestens jetzt :)

Mein heutiges Thema dreht sich um SDR, das sog. Software Defined Radio.

Wir kennen alle die dicken und klobigen Funkscanner, die man damals für teures Geld kaufen musste. Da mittlerweile immer mehr der Digitalfunk Einzug hält, sind diese Geräte mittlerweile obsolet.
Damit man aber nicht wieder zum nächsten Fachhändler seines Vertrauens rennen muss, um noch mehr Geld in modernere Technik zu investieren, gibt es auch einfachere (und um ein Vielfaches günstigere) Lösungen.

Sicherlich gibt es die Möglichkeit, einen Funkscanner via Diskriminatorausgang an eine Soundkarte anzuschließen und dann die Signale wieder in digitale Informationen zu konvertieren, aber das empfinde ich als absoluten Schwachsinn!
Sender (Digital) -> Empfänger (Analog) -> Computer (Digital)

Sinnvoller ist doch, das digitale Signal direkt weiter zu verarbeiten. Und wie das genau geht, möchte ich euch an einem konkreten Beispiel zeigen.

Zu meiner Grundausstattung gehört ein Raspberry PI 2, der bereits als OSMC-Mediacenter eingerichtet ist.
Das Betriebssystem erhaltet ihr hier: https://osmc.tv/download/

Zusätzlich benötigt ihr einen (etwas speziellen) DVB-T USB-Stick.
Achtet beim Kauf bitte auf den Chip „RTL2832u“ und einen „E4000“ oder „R820t“ Tuner.
Es gibt sie für knapp 13-15€ bei eBay.
RTL2832u DVB-T Stick

Wenn ihr alles zusammengebaut und das Mediacenter installiert habt, können wir loslegen.
Es folgt ein kleines Howto, welches ich mir auf osmocom.org und raspberrypi.org zusammen gesammelt habe.

Bevor ihr den Stick in den PI steckt, sorgt zuerst dafür, dass es keinen Treiberkonflikt gibt. Das Debian für das Mediacenter macht nämlich genau das, was es machen soll: Ihr steckt einen DVB-T stick rein und es lädt die passenden Treiber. Dummerweise haben wir dann nur einen (dummen) DVB-T Stick und keinen SDR-Empänger. :)

Ich gehe einfach mal davon aus, dass ihr mit einer Linux-Konsole umgehen könnt und wisst, was VI oder PICO/NANO ist.
Bitte erspart mir fragen wie „Wie komme ich aus dem VI wieder raus?“ oder „Ich kann im VI gar nicht schreiben…!“.
…Fragen wie „Wie komme ich denn auf die Konsole von meinem Raspberry?“ bitte auch nicht…

vi /etc/modprobe.d/fbdev-blacklist.conf

Hier fügt ihr am Ende folgendes ein:

blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist dvb_usb_v2
blacklist dvb_core

Dann könnt ihr den Stick einstecken und alles ist gut. Solltet ihr den Stick schon rein gesteckt haben: Reboot tut gut…

Danach geht es ans installieren der Umgebung:

sudo apt-get update
sudo apt-get -y install git cmake build-essential libusb-1.0 qt4-qmake qt4-default libpulse-dev libx11-dev

Auf dem Raspberry PI 2 B ging das ganze recht schnell vonstatten. ca 2-3 Minuten und dann ist die Entwicklungsumgebung installiert.

Zum „Lauschen“ benötigt ihr nur ein Programm: „rtl_fm“ (-oder eher „rtl_tcp“, denn es erfolgt ja keine Ausgabe am PI)
Mein PI liefert lediglich die empfangenen Daten und mit einem rtl_tcp-fähigem Programm schaue ich es dann an meinem normalen Rechner (oder an jedem x-beliebigem Ort auf der Welt).
Wie man über den PI an Pager-Messages kommt, dazu später.

Zuerst also das Programm, ohne das der PI mit seinem Stick nichts anderes ist, als ein billiger Fernsehempfänger.

mkdir -p ~/src/
cd ~/src/
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig

mit „rtl_test“ könnt ihr den Stick nach der Installation testen. (mit [STRG]+[C] wieder raus)
Wenn keine Fehlermeldung kommt, alles gut :) Wenn doch, dann müsst ihr nacharbeiten :)

Zum testen könnt ihr auf eurem Rechner GQRX (Linux) oder SDR# (Windows) installieren.
Auf dem Raspberry startet ihr auf der Konsole „rtl_tcp -a <IP vom PI>“ und auf eurem Rechner GQRX
rtl_tcp

gqrxIm oberen Fenster seht ihr die Linux-Konsole eures PI, auf dem rtl_tcp läuft.

Links und unten ist GQRX, welches die Daten vom PI empfängt und grafisch sowie akustisch auswertet.

Ich gebe ganz bewusst keine IP oder Frequenzen bekannt.
Zudem bitte ich euch, auf geltendes Recht zu achten!

Ihr könnt mit dem Stick und der Software mehr empfangen, als nur normales Radio oder Fernsehen.
Sog. Betriebsfunk (Polizei, Feuerwehr, etc.) darf NICHT abgehört werden.
pager

Jetzt könnt ihr entspannt über die Bänder scannen.
Der Stick beherrscht die Bandbreite von 24 Mhz – ca. 1766 Mhz.
Viel Spaß beim Suchen :)

MultimonNG ist eines der bekanntesten Decoder, denn er kann nicht nur Pocsag-, sondern auch noch diverse andere Formate (unter anderem auch CW – Morsecode) dekodieren.

Kompiliert wird das ganze dann so:

cd ~/src/
git clone https://github.com/EliasOenal/multimonNG.git
cd multimonNG
mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install

Wenn alles abgeschlossen ist, könnt ihr die Daten aus rtl_fm direkt an multimon übergeben.pocsag_command

rtl_fm -d0 -f <FREQUENZ> -s22050 – | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin