Sie sind auf Seite 1von 6

01/2014

Titelthema

Wetterdaten via SDR auslesen

Wellenreiten
Software Defined Radio

30
www.linux-magazin.de

Mit 20-Euro-Hardware und freier Software-Defined-Radio-Software beginnt für Konstantin Agouros die Jagd
auf die per Funk übertragenen Daten einer Wetterstation. Konstantin Agouros

Editor, um die digitalisierten Funkdaten


am Rechner zu verarbeiten.

Die Hardware
Vor der Analyse der digitalen Daten
musste ich zunächst die passende Hard-
ware für den Empfang finden. Während
speziell dafür entwickelte Hardware recht
kostspielig ist, bieten DVB-T-Sticks für
rund 20 Euro eine sehr günstige Ein-
stiegsmöglichkeit in SDR, sofern sie be-
© epicstockmedia, 123RF.com

stimmte Realtek-Chipsätze (RTL2832U)


mitbringen. Das Ganze firmiert unter
dem Stichwort „RTL-SDR“ und benötigt
die Bibliothek Librtlsdr.
Ein Blick auf meine Wetterstation zeigt,
dass sie Daten auf der 868-MHz-Frequenz
Wetterstationen mit Außensender (Ab- dig. Mit etwas Bastelleidenschaft und der empfängt. Die Webseiten unter [1] und
bildung 1) sind heute in vielen Haus- Hilfe von Software Defined Radio (siehe [2] listen diverse Chipsätze sowie die
halten im Einsatz – so auch in meinem. Kasten „SDR“) kann ich solche Funkda- von ihnen abgedeckten Frequenzberei-
Der kleine Sender liegt in diesem Fall auf ten auch mit dem Rechner empfangen, che auf. Hier findet sich auch gleich eine
dem Fensterbrett, misst Wetterdaten wie auslesen und sogar erzeugen. Liste von Produkten, die diese Chips ent-
Temperatur, Luftdruck oder Luftfeuch- Weil dabei die Software den Großteil der halten. Auf Empfehlung eines Kollegen
tigkeit und übermittelt diese digital an Arbeit erledigt, darf mein Lötkolben ge- erwarb ich einen Terratec Cinergy T Stick
eine Basisstation, die sie dann anzeigt. trost im Schrank liegen bleiben. Lediglich RC mit Elonics-Chipsatz, der von den auf-
Doch eine Basisstation zum Empfang der die entsprechende Hardware, die nur ein gelisteten DVB-T-Empfängern den größ-
Daten ist nicht einmal unbedingt notwen- paar Euro kostet, muss her sowie ein ten Frequenzbereich abdeckt – so auch
© Roman Ivaschenko, 123RF.com

Abbildung 1: Die Kommunikation zwischen einer handelsüblichen Wetterstation


(links) und dem zugehörigen Sensor (rechts) lässt sich mit SDR auswerten. Abbildung 2: Gqrx stellt die Daten in einer Wasserfallgrafik dar.
01/2014
Titelthema
den des Wettersensors. Der Kostenpunkt Cmake-Aufruf um den Parameter »‑DIN­

Software Defined Radio


der Hardware liegt bei 23 Euro, prakti- STALL_UDEV_RULES=ON« erweitern
scherweise ist im Lieferumfang eine Stab- und anschließend noch das Kommando
antenne enthalten.
sudo make install‑udev‑rules

Die Software hinterherschicken. Nun ließen sich die


Funktionen der Hardware über
Als Installationsbasis diente mir ein Net- 31

www.linux-magazin.de
rtl_test ‑t
book mit Mint 15, bei der Analyse der
per Funk empfangenen Signale half das auslesen, um etwa herauszufinden, wel-
Gnu-Radio-Framework [3]. Das ist eine chen Frequenzbereich der DVB-T-Stick
Art Baukasten, der sogar einen grafischen abdeckt. Ein handfester Test ist auch der
Editor enthält und die Signalverarbeitung Empfang eines örtlichen Radiosenders:
von Rohdaten (gegebenenfalls auch in
rtl_fm ‑f 98.5M ‑W ‑s 200000 ‑r 48000 ‑ |
Echtzeit) mit Hilfe diverser Filter bis hin aplay ‑r 48k ‑f S16_LE
zu einem Zielformat ermöglicht. Die Soft-
ware erzeugt dabei automatisch Python- Der Demodulator »rtl_fm« nimmt 200 000
Code, der die Daten verarbeitet. Samples pro Sekunde auf der Frequenz
Um den DVB-T-Stick als Empfänger ein- 98,5 MHz (die Frequenz eines Radiosen-
zusetzen, benötige ich zunächst das RTL- ders) auf. Aplay spielt den Datenstrom
SDR-Paket, das mit einer Rate von 48 kHz auf Stdout
ab. Da die Roh-Audiodatei keine Header-
git clone git://git.osmocom.org/rtl‑sdr.git
Informationen enthält, liest Aplay die Da-
auf den Rechner holt. Gentoo und Arch ten mit dieser Rate ein und kodiert sie mit
Linux bringen bereits fertige Pakete mit, 16 Bit im Little-Endian-Format.
unter Ubuntu lässt sich die Software über
ein PPA installieren (siehe Kasten „Gnu Die Analyse
Radio aus dem PPA“).
Das Bauen der Software aus den Quel- Um interessante Signale im Äther zu
len funktioniert über Cmake, aber es finden, ist Zuhören angesagt. Das Kom-
gibt einen Haken: RTL-SDR verwendet
die Bibliothek Libusb, um mit dem Stick Gnu Radio aus dem PPA
zu kommunizieren. Werden jedoch be- Vor dem Anstecken der Hardware muss der
stimmte Treiber geladen, kann die Soft- Ubuntu-Nutzer eine Udev-Datei anlegen.
ware nicht mehr korrekt mit dem Stick Dazu liest er per »lsusb« die Vendor- und die
reden. Mein Mint-System hat die Module Product-ID seines DVB-T-Sticks aus und setzt
aus Listing 1 geladen. Listing 2 zeigt eine als Root den folgenden Befehl ab:
Anleitung von der Webseite [1] für das echo 'SUBSYSTEM=="usb",U
Bauen der Software aus den Quellen. ATTRS{idVendor}=="Vendor ID",U
ATTRS{idProduct}=="Product ID",U

Test, Test! GROUP="adm", MODE="0666",U


SYMLINK+="rtl_sdr"' > U
/etc/udev/rules.d/20.rtlsdr.rules
Um das Laden der Module zu unterbin-
den, ist eine Modifikation der Udev-Re- Der Befehl schreibt eine neue Regel für Udev,
geln notwendig. Dazu musste ich den die sich auf den DVB-T-Stick bezieht. Vor dem
Anstecken des Sticks muss Root Udev zudem
SDR neu starten:

Software Defined Radio greift die elektroma- service udev restart

gnetische Wellen quasi direkt an der Antenne Die Debian-Pakete von Gnu Radio und Gqrx
ab und bearbeitet sie mit Hilfe von Software. installieren Ubuntu-Nutzer aus einem PPA:
Im einfachsten Fall besteht ein SDR-Empfän-
ger aus einer Antenne und einem Analog- sudo add‑apt‑repository ppa:gqrx/U
snapshots
Digital-Wandler plus Software. Abhängig
sudo apt‑get update
vom Gerät lässt sich damit ein recht großer
sudo apt‑get install gqrx gnuradio
Frequenzbereich scannen. Anwendungen, mit
deren Hilfe sich SDR umsetzen lässt, heißen Über den Aufruf von »gqrx« lässt sich das
Gnu Radio, Gnu Radio Companion oder Gqrx. SDR-GUI anschließend starten.
01/2014
Titelthema

ist, ließ sich eine Suche vermeiden. Als


Software Defined Radio

ich die Frequenz auf 868 MHz einstellte,


ertönten alle paar Sekunden Knackgeräu-
sche, die ich aufzeichnete und mit dem
Audio-Editor Audacity analysierte. Nach
dem Import der Daten ergab sich im Test
das Bild aus Abbildung 3.
32 Tatsächlich ließ die vergrößerte Ansicht
www.linux-magazin.de

ein Muster erkennen. Jetzt musste ich


dieses Signal dekodieren, um die Daten
Abbildung 3: Beim Hineinzoomen in die Daten mit Audacity in eine der Spitzen ergibt sich Abbildung 4. (Temperatur und Luftfeuchtigkeit) auszu-
lesen. Eine Internetrecherche zeigte, dass
sich jemand diese Arbeit bereits gemacht
hat. Unter [6] und [7] finden sich Ana-
lysen der Wettersensoren.
Christophe Jacquets Pydemod-Paket geht
von einer 16-Bit-Präambel aus, bestehend
aus 1010101010101010. Ihr folgend sendet
sein Sensor wie der in [8] mit 17 200
Baud ein Signal, das On-off-Keying ver-
wendet: Verläuft die Kurve von Abbil-
Abbildung 4: Das Bitmuster, das Audacity anzeigt, lässt sich mit Hilfe eines Skripts dekodieren. dung 5 nach oben, wird eine 1 übertra-
gen, fällt sie nach unten, eine 0. Ob sie
Listing 1: »lsmod | head 7« mando, das ich oben zum Radiohören nach oben läuft, lässt sich über das Ver-
01 e
4000 12862 1 verwendet habe, liefert auf anderen hältnis der numerischen Werte der Sam-
02 r
tl2832 13312 1 Frequenzen Rauschen, wenn auf ihnen ples zur Baud­rate herausfinden.
03 d
vb_usb_rtl28xxu 18737 0 nichts sendet. Digitale Signale hören sich Aber die ersten Tests, die Daten aus
04 r
tl2830 13511 1 dvb_usb_rtl28xxu anders an als Rauschen und geben so – »rtl_fm« mit Hilfe von »decode_tfa.py«
05 d
vb_usb_v2 22916 1 dvb_usb_rtl28xxu
unter Berücksichtigung der Rechtslage [9] auszuwerten, blieben ergebnislos.
06 d
vb_core 90402 3 rtl2830,rtl2832,dvb_usb_v2
(siehe Kasten „Rechtslage um SDR“) Leider fehlte in den Aufzeichnungen von
07 r
c_core 21266 3 dvb_usb_rtl28xxu,dvb_usb_v2
– Futter für weitere Analysen. Christophe eine Angabe darüber, wie er
08
Um größere Frequenzbereiche abzusu- »rtl_fm« aufgerufen hat, um die Rohda-
chen, bietet sich Software wie Gqrx [5] ten für die Analyse zu bekommen. Auch
Listing 2: »rtl‑sdr« kompilieren an, ein praktisches Frontend, das die Da- der Screenshot der empfangenen Daten
01 
cd rtl‑sdr/ ten in Kurven und einer Wasserfallgrafik sah in seinem Blog ganz anders aus als
02 
mkdir build optisch aufbereitet (Abbildung 2). bei mir.
03 
cd build Glücklicherweise half Christophe und er-
04 
cmake ../
05 
make
Das Wetter weiterte sein Skript so, dass es auch mit
den Daten des Wettersensors arbeitet.
06 
sudo make install
Da auf meiner Wetterstation glücklicher- Wie sich zeigte, bestanden die Probleme
07 
sudo ldconfig
weise die richtige Frequenz aufgedruckt in den folgenden Punkten:

Listing 3: Ausgabe von »rtl_fm«


01 
Found 1 device(s): 13 S
ampling at 1120000 Hz. 23 
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑

02  0: Realtek, RTL2838UHIDIR, SN: 00000001 14 O


utput at 160000 Hz. 24 
Min: 0 ‑ Mean: 270.3753 ‑ Max: 1260
03  15 E
xact sample rate is: 1120000.035604 Hz
25 
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
04 
Using device 0: Terratec Cinergy T Stick RC 16 T
uner gain set to automatic.
26 
Frame: size 96 bits, contents 101010101010
(Rev.3) 17 M
in: 0 ‑ Mean: 273.97845 ‑ Max: 1224
101010101010001011011101010010010001110001
05 
Found Elonics E4000 tuner 18 ‑
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑

06 
Bitrate: 9600, synclen: 24, framelen: 80 19 F
rame: size 98 bits, contents 1010101010101 000110001001001001011001010000000000000000,

07 
Using frame duration 1600.0 samples 0101010101000111101110101000000000000000000 framelen=80
08 
Squelch at 2200, should be slightly greater 000000000000000000000000000000000000000000,
27 
Frame hex contents: AA AA AA 2D D4 91 C4 62
than usual max; use ‑‑squelch to change framelen=80
49 65
09 
Oversampling input by: 7x. 20 F
rame hex contents: AA AA AA 3D D4 00 00 00
28 
CRC: calculated=65, received=65
10 
Oversampling output by: 1x. 00 00

11 
Buffer size: 7.31ms 21 C
RC: calculated=00, received=00 29 
Temperature: 6.2 C ‑‑ Humidity: 73 %

12 
Tuned to 868679999 Hz. 22 T
emperature: ‑40.0 C ‑‑ Humidity: 0 % 30 
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
01/2014
Titelthema
Software Defined Radio
33

www.linux-magazin.de
Abbildung 5: So sieht schließlich das richtig demodulierte Signal aus.

n Meine Samples waren mit der falschen Daten von Christophe: Sein Radio-Emp-
Modulationsmethode entstanden. Der fangssystem, ein Funcube-Dongle, lieferte
Sender moduliert mit der Amplitude, die Daten im Big-Endian-Format, der im
nicht mit der Frequenz. Daher muss Test eingesetzte DVB-T-Stick verwendete
»rtl_fm« den Parameter »‑M« mit auf hingegen das Little-Endian-Format. Dies
den Weg bekommen. musste Christophe im Code an der Stelle
n Mein Sender schickte die Daten mit anpassen, welche die Rohformat-Samples
9600 statt mit 17 200 Baud. in Zahlen zum Weiterverarbeiten ver-
n Die Datenpräambel lautete zudem wandelt.
nicht 1010101010101010, sondern Die Kodierung der Temperatur blieb in
101010101010101010101010, es waren beiden Szenarien identisch. Drei Nibbles
also tatsächlich 24 statt 16 Bit. (4 Bit), die eine Stelle der Temperatur in
Es gab noch einen weiteren Unterschied BCD (Binary Coded Decimal) kodierten,
zwischen meinem Testsystem und den wobei die dritte Stelle die Zehntel-Grad

Rechtslage um SDR
Christian Solmecke [4] ist Anwalt in der 4. Konstellation: Der Empfang ist für einen
Kanzlei Wilde Beuger Solmecke und erklärt, unbestimmten Personenkreis bestimmt, was
was SDR-Nutzer beim Abhören der Frequenzen der Fall ist bei Wetterinformationen für die
beachten sollten. See- und Luftfahrt.
Linux-Magazin:  Welche Gesetzestexte sollten Außerhalb dieser vier Konstellationen bleibt
SDR-Nutzer genauer in Augenschein nehmen? der Empfang der Funkkommunikation verboten.
Christian Solmecke:  Die wichtigsten Regelun- Das Abhören des Polizei- und Rettungsfunks
gen finden sich im Telekommunikationsgesetz. ist somit nicht erlaubt. Für den unabsichtli-
Insbesondere die Paragrafen 89 und 148 sind chen Empfang der Funkkommunikation gilt
hier entscheidend. nichts anderes: Wer aus Versehen auf eine
Linux-Magazin:  Wie sieht es mit dem ab- der Frequenzen des Polizeifunks kommt und
sichtlichen oder unabsichtlichen Empfang von diese nach dem Erkennen weiterhört oder das
unverschlüsselter Kommunikation zwischen dort Gehörte verbreitet, macht sich genauso
Personen aus, zu denen etwa der Polizei- und strafbar, wie derjenige, der mit Absicht diese
Rettungsfunk, aber auch der Amateurfunk ge- Frequenzen abgehört hat. Die Strafbarkeit ist
hören? in Paragraf 148 des TKG geregelt, bis zu zwei
Christian Solmecke:  Der absichtliche Empfang Jahren Freiheitsstrafe sind möglich.
unverschlüsselter Kommunikation ist nur in vier Linux-Magazin:  Darf man, wie es einige Web-
Konstellationen erlaubt. Das regelt Paragraf 89 seiten tun, die unverschlüsselten Positionssi-
des Telekommunikationsgesetzes „Abhörver- gnale von Flugzeugen (ADS-B) oder Schiffen
bot, Geheimhaltungspflicht der Betreiber von (AIS) empfangen und online grafisch aufbe-
Empfangsanlagen“. reiten?
1. Konstellation: Die Nachricht ist für den Funk- Christian Solmecke:  Bei der grafischen Auf-
betreiber bestimmt: Nachrichten, die nur für bereitung der Daten kommt es auf die Darstel-
den Empfänger bestimmt sind, darf auch nur lung im konkreten Fall an. Entscheidend ist, ob
dieser abhören – das ist zum Beispiel der Fall diese Daten eine Identifizierung ermöglichen.
bei Handys oder privaten WLAN-Netzen. Dies kann datenschutzrechtlich problematisch
2. Konstellation: Der Empfang ist für die Allge- sein – etwa bei Privatflugzeugen. Bei der Ver-
meinheit bestimmt (TV, Radio). öffentlichung personenbezogener Daten kann
3. Konstellation: Der Empfang ist für Funkama- zudem eine Persönlichkeitsrechtsverletzung
teure bestimmt. vorliegen.
01/2014
Titelthema

anzeigt. Darauf addiert mein Tempera- der SDR-Nutzer den Wert mit dem Para-
Software Defined Radio

tursensor 40, vermutlich um Minusgrade meter »‑g Wert« fest oder zieht den Stick
abzubilden. Die nächsten 8 Bit kodieren und steckt ihn erneut an der Rechner.
dann die Luftfeuchtigkeit.
Die erste Version des Skripts ging außer- Eitel Sonnenschein
dem davon aus, dass sie eine WAV-Datei
vorgesetzt bekommt, die genau die Bits Mit wenig finanziellem Aufwand und
34 mit den Informationen und keinerlei Rau- am Ende auch sehr wenig Software lässt
www.linux-magazin.de

schen enthält. Das nun von Christophe sich die Aufgabe lösen, die Daten der
maßgeblich überarbeitete und auf andere Wetterstation auszulesen und in eine di-
Fälle erweiterte Skript bringt einige neue gital auswertbare Form zu bekommen.
Eigenschaften mit, die unter anderem Die Basisstation des Testgeräts empfängt
Folgendes ermöglichen: auch Daten mit Wetter- sowie Pollen-
n Es erkennt die Spitze der Daten daran, flug-Vorhersagen. Diese kommen nicht
dass der numerische Wert des Sample vom Außensensor, sondern über das alte
einen Grenzwert überschreitet. Der Pager-Netz. Auch dessen Daten lassen
liegt bei 4000, lässt sich aber – je nach sich empfangen und mit dem Tool »mul-
Sendeleistung – ändern. timode‑ng« dekodieren. Die Pager-Daten
n Die Daten können auch im Rohmodus gehen im Klartext über den Äther, aber
vorliegen, also ohne WAV-Header, aber die Kodierung im String ist noch undoku-
im Moment muss dies mit einer Rate mentiert. Ein großes Dankeschön geht an
von 160 000 pro Sekunde geschehen. Christophe Jacquet für die Anpassungen
n Die Länge der Präambel regelt ein ei- seines Skripts, die Echtzeit-Streaming er-
gener Parameter. möglichten. (kki) n
n Die Baudrate der Datenübertragung
lässt sich variabel einstellen.
Daher erzeugt nun folgender Aufruf ei- Infos
nen Strom von Temperaturmessungen: [1] RTL-SDR-Projekt:
[http://​­sdr.​­osmocom.​­org/​­trac/​­wiki/​­rtl‑sdr]
rtl_fm ‑M ‑f 868.4M ‑s 160k ‑ | python U
decode_tfa.py ‑‑raw ‑ ‑‑bitrate 9600 U
[2] Reddit-Thread mit SDR-Hardware-Empfeh-
‑‑synclen 24 lungen: [http://​­www.​­reddit.​­com/​­r/​­RTLSDR/​
­comments/​­s6ddo/​­rtlsdr_compatibility_list_
Die Ausgabe des Befehls zeigt Listing 3. v2_work_in_progress/]
Ab und zu sind die Messdaten fehlerhaft. [3] Gnu Radio:
Dies lässt sich an zwei Dingen erkennen: [http://​­gnuradio.​­org]
Zum einen ist eine Checksumme ent- [4] RA Christian Solmecke: [http://​­www.​
halten, deren erwarteter und ermittelter ­wbs‑law.​­de/​­anwalt/​­christian‑solmecke/]
Wert ausgegeben wird. Weichen diese [5] Gqrx-GUI zur Spektrumanalyse:
voneinander ab, liegt ein Messfehler vor. [http://​­sourceforge.​­net/​­projects/​­gqrx/]
Auch sind extreme Temperatursprünge [6] Blog von Christophe Jacquet mit der Pro-
eigentlich unmöglich, dennoch weichen tokollanalyse (französisch):
zwei Messungen um mehr als 1 Grad [http://​­www.​­jacquet80.​­eu/​­blog/​­post/​­2011/​
Celsius voneinander ab. ­10/​­Decodage‑capteur‑thermo‑hygro‑TFA]
In der Praxis zeigte sich, dass die An- [7] Erste Analyse des Protokolls von Fred Bos-
tenne nicht zu weit vom Empfänger ent- sard: [http://​­fredboboss.​­free.​­fr/​­tx29/]
fernt sein sollte. Schon bei 5 Metern Ent- [8] Pydemod-Paket:
fernung sank bei mir der Wert der Spitze [http://​­code.​­google.​­com/​­p/​­pydemod/]
deutlich ab. Liegt der Wert zu nahe am [9] Code von »decode_tfa.py«:
Rauschen, kann das Skript den Anfang [http://​­code.​­google.​­com/​­p/​­pydemod/​
der Daten nicht mehr erkennen. ­source/​­browse/​­trunk/​­src/​­decode_tfa.​­py]
Das Python-Skript gibt während des
Durchlaufs Minimal-, Maximal- und Der Autor
Durchschnittswerte aus. Im Praxistest Konstantin Agouros arbeitet bei der N.runs Pro-
kam es jedoch immer wieder vor, dass fessionals GmbH als Berater für Netzwerksicher-
der Ausschlag des Sticks zu schwach war. heit. Dabei liegt sein Schwerpunkt im Bereich der
Das kann an der automatischen Verstär- Mobilfunknetze. Sein Buch „DNS/​DHCP“ ist bei
kung des Signals liegen. Entweder nagelt Open Source Press erschienen.

Das könnte Ihnen auch gefallen