Software Defined Radio (SDR) mit Linux
Aus BraLUG-Wiki
(Die Seite wurde neu angelegt: „'''...derzeit in Arbeit!''' =Was ist Software Defined Radio (SDR)?= ...für den Anfang mal die Definition von Wikipedia zu [http://de.wikipedia.org/wiki/Softwa…“) |
(→Informationsquellen) |
||
(24 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
=Hardware= | =Hardware= | ||
− | |||
− | |||
=Software= | =Software= | ||
+ | ==rtl-sdr== | ||
+ | ... | ||
+ | |||
+ | Installation (mit udev-Regel): | ||
+ | <pre> | ||
+ | $ apt-get update | ||
+ | $ apt-get install cmake libusb-1.0-0-dev git | ||
+ | ... | ||
+ | $ 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 | ||
+ | </pre> | ||
+ | |||
+ | In den meisten Fällen ist das automatische Laden des DVB-T-Treibers zu verhindern. Dazu muss eine Datei ''/etc/modprobe.d/rtlsdr.conf'' mit folgenden Inhalt (als root) angelegt werden: | ||
+ | <pre> | ||
+ | |||
+ | blacklist dvb_usb_rtl28xxu | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | Test mit rtl_test: | ||
+ | <pre> | ||
+ | $ rtl_test | ||
+ | |||
+ | Found 1 device(s): | ||
+ | 0: NOXON, DAB Stick, SN: 0 | ||
+ | |||
+ | Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) | ||
+ | Found Fitipower FC0013 tuner | ||
+ | Supported gain values (23): -9.9 -7.3 -6.5 -6.3 -6.0 -5.8 -5.4 5.8 6.1 6.3 6.5 6.7 6.8 7.0 7.1 17.9 18.1 18.2 18.4 18.6 18.8 19.1 19.7 | ||
+ | Sampling at 2048000 S/s. | ||
+ | |||
+ | Info: This tool will continuously read from the device, and report if | ||
+ | samples get lost. If you observe no further output, everything is fine. | ||
+ | |||
+ | Reading samples in async mode... | ||
+ | </pre> | ||
+ | |||
+ | Test mit rtl_sdr: | ||
+ | <pre> | ||
+ | $ rtl_sdr /tmp/capture.bin -s 1800000 -f 392000000 | ||
+ | |||
+ | Found 1 device(s): | ||
+ | 0: NOXON, DAB Stick, SN: 0 | ||
+ | |||
+ | Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) | ||
+ | Found Fitipower FC0013 tuner | ||
+ | Sampling at 1800000 S/s. | ||
+ | Tuned to 392000000 Hz. | ||
+ | Tuner gain set to automatic. | ||
+ | Reading samples in async mode... | ||
+ | </pre> | ||
+ | |||
+ | ==...und was nun damit anfangen?== | ||
+ | |||
+ | ===Scanner=== | ||
+ | ====rtl_power==== | ||
+ | Das Kommandozeilentool rtl_power ermöglicht das Scannen eines Frequenzbereiches für eine bestimmte Zeit oder fortlaufend in definierten Frequenz- und Zeitschritten. | ||
+ | <pre> | ||
+ | > rtl_power -f 433M:435M:10k -i 2s -e 15m ism_433.csv | ||
+ | Number of frequency hops: 1 | ||
+ | Dongle bandwidth: 2000000Hz | ||
+ | Downsampling by: 1x | ||
+ | Cropping by: 0.00% | ||
+ | Total FFT bins: 256 | ||
+ | Logged FFT bins: 256 | ||
+ | FFT bin size: 7812.50Hz | ||
+ | Buffer size: 16384 bytes (4.10ms) | ||
+ | Reporting every 1 seconds | ||
+ | Found 1 device(s): | ||
+ | 0: NOXON, DAB Stick, SN: 0 | ||
+ | |||
+ | Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) | ||
+ | Found Fitipower FC0013 tuner | ||
+ | Tuner gain set to automatic. | ||
+ | Exact sample rate is: 2000000.052982 Hz | ||
+ | ... | ||
+ | </pre> | ||
+ | [[Bild:Heatmap 433000000-435000000 20150123114750-20150123120248.png|thumb|150px|Frequenzbereich 433MHz-435Mhz]] | ||
+ | Obiges Beispiel scannt 15 Minuten lang den Frequenzenbereich zwischen 433MHz und 435MHz in 10-kHz-Schritten (tatsächlich eigentlich 7812.50Hz; siehe Programmausgaben...) jede zweite Sekunde und schreibt die Werte in die Datei ism_433.csv. | ||
+ | |||
+ | In der csv-Datei werden für jede Messreihe die Intensitäts-Werte (in db) abgelegt. Daraus lassen sich dann nette Heatmap-Diagramme (x: Timestamp; y: Frequenz; z: Intensität) erstellen, welche recht anschaulich zeigen, was in dem untersuchten Frequentbereich so los ist. Zur komfortablen Weiterverarbeitung der csv-Daten habe ich mir ein kleines [[Software_Defined_Radio_(SDR)_mit_Linux#Eigene_Software|Tcl-Script]] geschrieben, welches im Ergebnis ein entsprechendes Heatmap-Diagramm mittels gnuplot generiert. | ||
+ | |||
+ | ====Gqrx==== | ||
+ | ... | ||
+ | |||
+ | ===UKW-Radio hören=== | ||
+ | |||
+ | Radioempfang mit rtl_fm: | ||
+ | <pre> | ||
+ | $ rtl_fm -M fm -s 64k -o 4 -A fast -l 0 -E deemp -f 106.2M | play -r 64k -t raw -e s -b 16 -c 1 -V1 - | ||
+ | |||
+ | Warning: -o is very buggy | ||
+ | Found 1 device(s): | ||
+ | 0: NOXON, DAB Stick, SN: 0 | ||
+ | |||
+ | Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) | ||
+ | |||
+ | -: (raw) | ||
+ | |||
+ | Encoding: Signed PCM | ||
+ | Channels: 1 @ 16-bit | ||
+ | Samplerate: 64000Hz | ||
+ | Replaygain: off | ||
+ | Duration: unknown | ||
+ | |||
+ | In:0.00% 00:00:00.00 [00:00:00.00] Out:0 [ | ] Clip:0 Found Fitipower FC0013 tuner | ||
+ | Tuner gain set to automatic. | ||
+ | Tuned to 106456000 Hz. | ||
+ | Oversampling input by: 4x. | ||
+ | Oversampling output by: 4x. | ||
+ | Buffer size: 8.00ms | ||
+ | Sampling at 1024000 S/s. | ||
+ | Output at 64000 Hz. | ||
+ | In:0.00% 00:00:22.78 [00:00:00.00] Out:1.45M [ =====|===== ] Hd:4.1 Clip:0 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | ==="Automatic Dependent Surveillance Broadcast (ADS-B)" empfangen/darstellen=== | ||
+ | |||
+ | Flugzeuge gucken ;-)... | ||
+ | <pre> | ||
+ | $ git clone git://github.com/MalcolmRobb/dump1090.git | ||
+ | ... | ||
+ | $ cd dump1090.git | ||
+ | $ make | ||
+ | ... | ||
+ | $ ./dump1090 --interactive --net | ||
+ | </pre> | ||
+ | |||
+ | Im Browser: | ||
+ | <pre> | ||
+ | |||
+ | http://localhost:8080/ | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | =Eigene Software= | ||
+ | * [http://bralug.de/wiki-common/images/5/55/Rtl_power_gnuplot.tar.gz rtl_power_gnuplot.tcl]: Tcl-Script zum Generieren von Heatmaps aus den Messreihen von rtl_power | ||
=Informationsquellen= | =Informationsquellen= | ||
+ | Vorträge: | ||
+ | * [http://www.bralug.de/wiki-common/images/5/55/Bralug_vortrag_sdr.pdf BraLUG-Vortrag "Software Defined Radio" (Nov. 2015; Uwe)] | ||
+ | |||
+ | Dies und das...: | ||
* http://sdr.osmocom.org/trac/wiki/rtl-sdr | * http://sdr.osmocom.org/trac/wiki/rtl-sdr | ||
* http://superkuh.com/rtlsdr.html | * http://superkuh.com/rtlsdr.html | ||
Zeile 16: | Zeile 166: | ||
* http://floatblog.de/699/gnu-radio-und-rtl-sdr-sticks | * http://floatblog.de/699/gnu-radio-und-rtl-sdr-sticks | ||
* http://wiki.yobi.be/wiki/RTL-SDR | * http://wiki.yobi.be/wiki/RTL-SDR | ||
+ | * http://donny.de/index.php/interessen/technik/funk/gnu-radio/59-installation-von-gnu-radio-unter-ubuntu | ||
+ | * http://donny.de/index.php/interessen/technik/funk/gnu-radio/61-ein-einfacher-radioempfaenger-mit-dem-gnu-radio-companion | ||
+ | * http://rtlsdr.org/ | ||
+ | * http://www.rtl-sdr.com/ | ||
+ | * http://www.reddit.com/r/RTLSDR/ | ||
+ | * http://www.asciimation.co.nz/bb/2014/03/19/using-rtl-sdr-to-automatically-receive-weather-satellite-images | ||
+ | * http://www.andreas-zahnleiter.de/html/sdr.html | ||
+ | |||
+ | Antennen: | ||
+ | * http://hans.mayer.tv/html/crossdipole137.html | ||
+ | * http://www.poes-weather.com/download/jm-dca/ | ||
+ | spezielle Linux-Distributionen: | ||
+ | * http://skywavelinux.com/ | ||
=Kontakt= | =Kontakt= | ||
[[Benutzer:bergeruw|Uwe]] | [[Benutzer:bergeruw|Uwe]] |
Aktuelle Version vom 4. Dezember 2015, 08:40 Uhr
...derzeit in Arbeit!
Inhaltsverzeichnis |
[Bearbeiten] Was ist Software Defined Radio (SDR)?
...für den Anfang mal die Definition von Wikipedia zu SDR-
[Bearbeiten] Hardware
[Bearbeiten] Software
[Bearbeiten] rtl-sdr
...
Installation (mit udev-Regel):
$ apt-get update $ apt-get install cmake libusb-1.0-0-dev git ... $ 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
In den meisten Fällen ist das automatische Laden des DVB-T-Treibers zu verhindern. Dazu muss eine Datei /etc/modprobe.d/rtlsdr.conf mit folgenden Inhalt (als root) angelegt werden:
blacklist dvb_usb_rtl28xxu
Test mit rtl_test:
$ rtl_test Found 1 device(s): 0: NOXON, DAB Stick, SN: 0 Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) Found Fitipower FC0013 tuner Supported gain values (23): -9.9 -7.3 -6.5 -6.3 -6.0 -5.8 -5.4 5.8 6.1 6.3 6.5 6.7 6.8 7.0 7.1 17.9 18.1 18.2 18.4 18.6 18.8 19.1 19.7 Sampling at 2048000 S/s. Info: This tool will continuously read from the device, and report if samples get lost. If you observe no further output, everything is fine. Reading samples in async mode...
Test mit rtl_sdr:
$ rtl_sdr /tmp/capture.bin -s 1800000 -f 392000000 Found 1 device(s): 0: NOXON, DAB Stick, SN: 0 Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) Found Fitipower FC0013 tuner Sampling at 1800000 S/s. Tuned to 392000000 Hz. Tuner gain set to automatic. Reading samples in async mode...
[Bearbeiten] ...und was nun damit anfangen?
[Bearbeiten] Scanner
[Bearbeiten] rtl_power
Das Kommandozeilentool rtl_power ermöglicht das Scannen eines Frequenzbereiches für eine bestimmte Zeit oder fortlaufend in definierten Frequenz- und Zeitschritten.
> rtl_power -f 433M:435M:10k -i 2s -e 15m ism_433.csv Number of frequency hops: 1 Dongle bandwidth: 2000000Hz Downsampling by: 1x Cropping by: 0.00% Total FFT bins: 256 Logged FFT bins: 256 FFT bin size: 7812.50Hz Buffer size: 16384 bytes (4.10ms) Reporting every 1 seconds Found 1 device(s): 0: NOXON, DAB Stick, SN: 0 Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) Found Fitipower FC0013 tuner Tuner gain set to automatic. Exact sample rate is: 2000000.052982 Hz ...
Obiges Beispiel scannt 15 Minuten lang den Frequenzenbereich zwischen 433MHz und 435MHz in 10-kHz-Schritten (tatsächlich eigentlich 7812.50Hz; siehe Programmausgaben...) jede zweite Sekunde und schreibt die Werte in die Datei ism_433.csv.
In der csv-Datei werden für jede Messreihe die Intensitäts-Werte (in db) abgelegt. Daraus lassen sich dann nette Heatmap-Diagramme (x: Timestamp; y: Frequenz; z: Intensität) erstellen, welche recht anschaulich zeigen, was in dem untersuchten Frequentbereich so los ist. Zur komfortablen Weiterverarbeitung der csv-Daten habe ich mir ein kleines Tcl-Script geschrieben, welches im Ergebnis ein entsprechendes Heatmap-Diagramm mittels gnuplot generiert.
[Bearbeiten] Gqrx
...
[Bearbeiten] UKW-Radio hören
Radioempfang mit rtl_fm:
$ rtl_fm -M fm -s 64k -o 4 -A fast -l 0 -E deemp -f 106.2M | play -r 64k -t raw -e s -b 16 -c 1 -V1 - Warning: -o is very buggy Found 1 device(s): 0: NOXON, DAB Stick, SN: 0 Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1) -: (raw) Encoding: Signed PCM Channels: 1 @ 16-bit Samplerate: 64000Hz Replaygain: off Duration: unknown In:0.00% 00:00:00.00 [00:00:00.00] Out:0 [ | ] Clip:0 Found Fitipower FC0013 tuner Tuner gain set to automatic. Tuned to 106456000 Hz. Oversampling input by: 4x. Oversampling output by: 4x. Buffer size: 8.00ms Sampling at 1024000 S/s. Output at 64000 Hz. In:0.00% 00:00:22.78 [00:00:00.00] Out:1.45M [ =====|===== ] Hd:4.1 Clip:0
[Bearbeiten] "Automatic Dependent Surveillance Broadcast (ADS-B)" empfangen/darstellen
Flugzeuge gucken ;-)...
$ git clone git://github.com/MalcolmRobb/dump1090.git ... $ cd dump1090.git $ make ... $ ./dump1090 --interactive --net
Im Browser:
http://localhost:8080/
[Bearbeiten] Eigene Software
- rtl_power_gnuplot.tcl: Tcl-Script zum Generieren von Heatmaps aus den Messreihen von rtl_power
[Bearbeiten] Informationsquellen
Vorträge:
Dies und das...:
- http://sdr.osmocom.org/trac/wiki/rtl-sdr
- http://superkuh.com/rtlsdr.html
- https://www.ccc-mannheim.de/wiki/DVB-T_Stick_als_SDR-Receiver
- http://floatblog.de/699/gnu-radio-und-rtl-sdr-sticks
- http://wiki.yobi.be/wiki/RTL-SDR
- http://donny.de/index.php/interessen/technik/funk/gnu-radio/59-installation-von-gnu-radio-unter-ubuntu
- http://donny.de/index.php/interessen/technik/funk/gnu-radio/61-ein-einfacher-radioempfaenger-mit-dem-gnu-radio-companion
- http://rtlsdr.org/
- http://www.rtl-sdr.com/
- http://www.reddit.com/r/RTLSDR/
- http://www.asciimation.co.nz/bb/2014/03/19/using-rtl-sdr-to-automatically-receive-weather-satellite-images
- http://www.andreas-zahnleiter.de/html/sdr.html
Antennen:
spezielle Linux-Distributionen: