I don't really like the heatmap.py that comes with it so I created my own. This is done from the csv file that rtl_power outputs. I pirated the font from an old giflib. The palette converting signal intensity to color came from one of Learmonth's gifs http://www.bom.gov.au/metadata/catalogu ... 0483.shtml.mcdvoice But same technique as writing to a framebuffer, I was just using jpjeglib to make jpeg files intead. I had to reduce the size or the RPI board said it was too big. You can see my dongle being flaky at the top above about 1200 MHz. This is from 2016.
Code: Select all
rtl_power, a simple FFT logger for RTL2832 based DVB-T receivers Use: rtl_power -f freq_range [-options] [filename] -f lower:upper:bin_size [Hz] (bin size is a maximum, smaller more convenient bins will be used. valid range 1Hz - 2.8MHz) [-i integration_interval (default: 10 seconds)] (buggy if a full sweep takes longer than the interval) [-1 enables single-shot mode (default: off)] [-e exit_timer (default: off/0)] [-d device_index (default: 0)] [-g tuner_gain (default: automatic)] [-p ppm_error (default: 0)] [-T enable bias-T on GPIO PIN 0 (works for rtl-sdr.com v3 dongles)] filename (a '-' dumps samples to stdout) (omitting the filename also uses stdout)Experimental options: [-w window (default: rectangle)] (hamming, blackman, blackman-harris, hann-poisson, bartlett, youssef) [-c crop_percent (default: 0%, recommended: 20%-50%)] (discards data at the edges, 100% discards everything) (has no effect for bins larger than 1MHz) [-F fir_size (default: disabled)] (enables low-leakage downsample filter, fir_size can be 0 or 9. 0 has bad roll off, try with '-c 50%') [-P enables peak hold (default: off)] [-D enable direct sampling (default: off)] [-O enable offset tuning (default: off)] CSV FFT output columns: date, time, Hz low, Hz high, Hz step, samples, dbm, dbm, ... Examples: rtl_power -f 88M:108M:125k fm_stations.csv (creates 160 bins across the FM band, individual stations should be visible) rtl_power -f 100M:1G:1M -i 5m -1 survey.csv (a five minute low res scan of nearly everything) rtl_power -f ... -i 15m -1 log.csv (integrate for 15 minutes and exit afterwards) rtl_power -f ... -e 1h | gzip > log.csv.gz (collect data for one hour and compress it on the fly) Convert CSV to a waterfall graphic with: http://kmkeen.com/tmp/heatmap.py.txt