Heatmap mit SDR_Power

Um über längere Zeit eine Watherfall Grafik zu erstellen, eignet sich rtl_power zusammen mit dem Script „heatmap.py“ https://github.com/keenerd/rtl-sdr-misc/blob/master/heatmap/heatmap.py bestens. Mehr Infos und das Python-Script dazu gibt es vom Heatmap-Programmierer: http://kmkeen.com/rtl-power/.

Dies ist eine gute Möglichkeit, um ein Frequenzspektrum über längere Zeit zu visualisieren. Wie hoch die Zeit/Frequenz-Auflösung ist, hängt von der Konfiguration ab und wird durch die Limitierungen der Hardware begrenzt. So wird sowohl der maximale Frequenzbereich wie auch die Sweep-Zeit (ein kompletter Scann des Frequenzbereiches) durch die Hardware-Möglichkeiten begrenzt.
Wie so ein Scan mit rtl-power und anschliessender Generierung eines Heat-Map-Bildes aussehen kann, zeige ich anhand ein paar Beispiele.

Python (Programmiersprache) muss installiert sein, um das Script „heatmap.py“ ausführen zu können.

Weitere Informationen zum Thema SDR und dem RTL-Chip findet man hier im Blog.

Scan-Beispiele

Airband (Flugzeug-Funk) 118-137MHz

rtl_power -f 118M:137M:8k -g 50 -i 10 -e 1h airband.csv

Der Frequenzbereich (-f) liegt zwischen 118 und 137MHz, die Auflösung (Resolution) beträgt 50kHz, die Integrationszeit (-i <integration_interval>) beträgt 10 Sekunden und die Dauer der Aufzeichnung (-e <exit_timer>) beträgt 1 Stunde. Das Resultat wird in die Datei „airband.csv“ geschrieben. Diese kann von diversen Programmen wie Exel, OpenOffice Calc oder dem nachfolgend beschriebenen „heatmap.py“ verarbeitet werden.

python heatmap.py /home/airband.csv airband.png

Erstellt daraus eine Grafik.

airband-1h

Airband (logging: 1h) mit rtl_power und heatmap.py

Fullband-Scan 24-1500MHz

Der Scan-Bereich ist Hardware-Abhängig. Der hier verwendete SDR-Stick reicht von 24 bis 1500MHz.

rtl_power -f 24M:1500M:1M -i 100 -g 50 -e 24h fullbandscann.csv
fullband24

Volle Bandbreite (logging: 24h) Einige Störquellen in der Nähe (Harddisks, Computer usw.)

PMR-Funk 446-447MHz

rtl_power -f 446M:447M:5k -i 100 -g 50 -e 24h pmr.csv

Wetersatelliten 136-138MHz

rtl_power -f 136M:138M:1k -c 40% -i 1 -g 50 -e 24h wettersatelliten.csv

Die Datei wird durch die schmale Bandbreite (1kHz) ziemlich gross. Dafür erkennt man so auch den Doppler-Effekt sehr gut. Zum Doppler-Effekt gibt es ein Blog-Eintrag mit ein paar Grafiken.

Optionen von rtl_power

Complete Reference
Teilweise auf Deutsch übersetzt

Soll der Stream direkt in eine Datei geschrieben werden, den Dateinamen als letztes Argument angeben. Auf einigen Plattformen gilt ein 2GB-Limit für die Dateigrösse. Die Ausgabe-Umleitung verwenden (rtl_power ... > log.csv) um das Limit zu umgehen.

-f lower:upper:bin_size [Hz]

Legen Sie einen Frequenzbereich fest. Werte können als eine ganze Zahl „integer“ (89100000), als Float (89.1e6) oder als Metrik Suffix (89,1M) angegeben werden. Die Abschnittsgrösse kann eingestellt werden. Die Abschnitte müssen zwischen 0,1Hz und 2,8MHz liegen. Bereiche können beliebig gross sein.

-i <integration_interval>

Collect data for this amount of time, report it and repeat. Supports ’s/m/h‘ as a units suffix. Default is 10 seconds. Minimum time is 1 second, but for extremely large ranges it may take more than 1 second to perform the entire sweep. Undefined behavior there.

-e <exit_timer>

Run for at least this length of time and exit. Default is forever. Like the other times, this supports ’s/m/h‘ units.

-1

Enable single-shot mode, default disabled. Perform a single integration interval, report and exit. It is not necessary to use -e with this option.

-d <index>

When using multiple dongles, this indicated which. You can also identify dongles by the text in the serial number field of the EEPROM.

-g <gain>

A floating point gain value. The dongle will use the closest gain setting available.

-p <error>

Correct for the parts-per-million error in the crystal. This will override a ppm value retrieved from eeprom.

-w <window>

The window is a shaping function applied to the data before the FFT. Each will emphasize or deemphasize certain aspects. The default is none (aka boxcar, rectangular). Options include: hamming, blackman, blackman-harris, hann-poisson, bartlett, and youssef.

-c <crop_percent>

The crop sets how much of the bandwidth should be discarded. 0% discards nothing, 100% discards everything. The edges of the spectrum are lower quality than the middle. There is less sensitivity, gain roll-off and out-of-band aliasing. Higher values of crop will produce a better spectrum, but do so more slowly. Values may be a decimal (-c 0.1) or a percent (-c 10%). Default crop is 0%, suggested crop is between 20% and 50%.

This setting has no effect on bins larger than 1MHz.

-F 0 | 9

Not exactly the best named option, this configures the downsampler and the downsample filters. Downsampling is only used when the total bandwidth range is under 1MHz. (Like in the radar example above.) Omitting the -F option uses the default downsampler, rectangular. This downsampler is very fast but has bad spectral leakage.

Filters with minimal leakage are -F 0 and -F 9. 0 is a plain filter, but has bad droop at the edges of the spectrum. 9 uses the same filter as 0, but has a 9-point FIR filter to correct the droop. Rectangular needs the least cpu, 0 needs more, and 9 most of all. It is suggested to use 0 with -c 50%.

-P

Enables peak hold. The default behavior is to average across time. Peak hold uses the maximum value across time. Note that averaging improves the SNR, and peak hold will tend to make a spectrum look much worse.

-D

Enable direct sampling. Requires that you have first modified the dongle for direct sampling.

-O

Enable offset tuning. Only applies to E4000 tuners.

Output Format

Rtl_power produces a compact CSV file with minimal redundancy. The columns are:

date, time, Hz low, Hz high, Hz step, samples, dB, dB, dB, ...

Date and time apply across the entire row. The exact frequency of a dB value can be found by (hz_low + N * hz_step). The samples column indicated how many points went into each average.

Links

Ähnliche Software

Flattr this!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.