Software Defined Radio (SDR) mit Linux

Aus BraLUG-Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Software)
(Informationsquellen)
 
(14 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 12: Zeile 12:
 
Installation (mit udev-Regel):
 
Installation (mit udev-Regel):
 
<pre>
 
<pre>
$ git clone git://git.osmocom.org/rtl-sdr.git
 
...
 
 
$ apt-get update
 
$ apt-get update
$ apt-get install cmake libusb-1.0-0-dev
+
$ apt-get install cmake libusb-1.0-0-dev git
 +
...
 +
$ git clone git://git.osmocom.org/rtl-sdr.git
 
...
 
...
 
$ cd rtl-sdr
 
$ cd rtl-sdr
Zeile 24: Zeile 24:
 
$ make
 
$ make
 
$ sudo make install
 
$ sudo make install
 +
...
 
$ sudo ldconfig
 
$ sudo ldconfig
 
</pre>
 
</pre>
Zeile 67: Zeile 68:
 
Reading samples in async mode...
 
Reading samples in async mode...
 
</pre>
 
</pre>
 
  
 
==...und was nun damit anfangen?==
 
==...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===
 
===UKW-Radio hören===
Zeile 121: Zeile 152:
  
 
</pre>
 
</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 139: Zeile 177:
 
* http://hans.mayer.tv/html/crossdipole137.html
 
* http://hans.mayer.tv/html/crossdipole137.html
 
* http://www.poes-weather.com/download/jm-dca/
 
* 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
...
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 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

[Bearbeiten] Informationsquellen

Vorträge:

Dies und das...:

Antennen:

spezielle Linux-Distributionen:

[Bearbeiten] Kontakt

Uwe

'Persönliche Werkzeuge