rtl_power_fftw: An improved version of rtl_power designed for radio astronomy

As the RTL-SDR’s maximum usable bandwidth is about 2.8 MHz, programs like rtl_power were written to scan over wider bandwidths by quickly hopping between different swaths of the frequency spectrum and then stitching the data together.

Now a new improved version of rtl_power called rtl_power_fftw has recently been developed and released. This version is designed for radio astronomy use, but also overcomes several issues general users may encounter with rtl_power. One of the authors, Klemen wrote in to us with this information:

I would like to tell you about a program we have been developing at Astronomical Society Vega – Ljubljana, namely one for measuring power spectrum with rtl dongles.

It addresses several shortcomings of the rtl_power program shipped with librtlsdr. The most notable is that it uses a much faster FFT algorithm (from the fftw3 library) and separate threads for acquiring data and FFT processing. This means that even the lowly raspberry pi is capable of processing spectra of sizes up to ~1024 bins in real-time (no slower than data acquisition). This enables the user to sample spectrum continuously and more efficiently.

The other benefit is the output format: data is presented in a gnuplot-friendly way, so plotting is simple, and no data is mangled to make an illusion that spectral hopping is not needed: FFT of each frequency hop is output separately, and user can make and informed decision on how to process data – the program stays out of this, to preserve the accuracy of the gathered data.

The program was developed for use in radio astronomy where all these things matter. Code is available on Github:


Notify of

Inline Feedbacks
View all comments

Nice, I wonder if this is a drop-in replacement for the fftw3 in CubicSDR?

Klemen Blokar

I do not know about internals of CubicSDR, so I doubt rtl_power_fftw can be used as a “drop-in” replacement anywhere, as it was designed from scratch with a fresh command-line interface. Its primary goal is to output raw data that you can use for further analysis – this would include plotting the waterfall of whatever you wish.