Redditor [K3PWN] has recently released his project called “RTLion”. RTLion is a software framework for RTL-SDR dongles that currently supports various features such as a power spectrum plot and frequency scanning. The software can run on a Raspberry Pi 3 and all features are intended to be accessed via an easy to use web browser interface, or via an Android app. The software can also be run with Docker, making it useful for IoT applications.
RTLion project can be described as a framework due to the implementation of various features other than the frequency scanner. The common structure of the project is appropriate for adding new features too. RTLion Framework has a Flask–SocketIO based Web interface which houses it’s features there. Web interface preferred to the command line interface for facilitating the usage and supporting remote operations. Matplotlib used for creating graphs, more specifically pylabpsd(Power Spectral Density) method mostly used for converting the complex samples (stored in a numpy array) to FFT graphs.
Main purpose of the RTLion Framework is creating a framework for RTL2832 based DVB-T receivers and supporting various features such as spectral density visualizing and frequency scanning remotely. These features are provided on the Web interface and accessible via the RTLion server or the RTLion Android App for RTL-SDR & IoT applications.
All of his code is open source and available on Github. Currently he’s looking for feedback on improving the framework and we are interested to see where this project may lead in the future.
Spektrum is a popular spectrum analyzer program that is used with RTL-SDR dongles. It is based on the command line rtl_power software and is compatible with both Windows and Linux. Thanks to it's easy to use GUI it is an excellent piece of software for scanning and determining where active signals exist, or for measuring filters and antenna SWR with a noise source.
Recently SV8ARJ (George) and SV1SGK (Nick) have been working on extending the original open source Spektrum code. Their improvements focus around the UI and making it more functional and easier to use. Currently the updated branch is in alpha, and they are hoping that any testers could help report bugs, issues and wishes to them. The code is available on their GitHub and the latest Windows test build can be downloaded from their DropBox.
The changelog reads:
2 Cursors for Frequency axis.
2 Cursors for Amplitude axis.
Absolute and differential measurements with cursors.
Zoom functionality of the cursors's defined area (gain + frequency).
Mouse Wheel Gain adjustment on graph (Top area for upper, low area for lower).
Mouse Wheel Frequency adjustment on graph (left area for lower frequency, right for upper).
Mouse Wheel in the centrer of the graph performs symetric zoom in/out.
View/settings store/recall (elementary "back" operation, nice for quick zoomed in graph inspection).
Right click positions primary cursors.
Right Double Click positions primary cursors and moves secondary out of the way.
Left Double Click zooms area defined by cursors (Amplitude + frequency).
Left Mouse Click and Drag on a cursor moves the cursor.
Middle (mouse wheel) Double Click resets full scale for Amplitude and Frequency.
Middle (mouse wheel) Click and Drag, moves the graph recalculating limits accordingly.
Reset buttons to Min/Max range next to Start and Stop frequency text boxes.
Cursor on/off checkbox now operate on all 4 cursors.
ZOOM and BACK buttons.
Filled-in graph option (line or area).
Display of frequency, Amplitude and differences for all cursors.
Modified: Button layout.
Fixed: Save/Reload settings on exit/start. IMPORTANT : delete the "data" folder from the installation location if you have it.
RTL-SDR.com reader Dominic Chen recently wrote in to let us know about a new piece of software he’s created. The software is called d3-waterfall, and is an interactive web based waterfall display. It takes CSV data from the commonly used rtl_power software and produces an interactive labelled waterfall which can be viewed in a web browser. rtl_power is a program that allows RTL-SDRs to produce signal power scans over an arbitrarily wide swath of bandwidth, by quickly hopping between ~2 MHz chunks of live bandwidth.
Dominics software is built using “d3.js” and HTML5. The waterfall axes are automatically labelled, there are multiple color schemes and there is pan/zoom support. The main feature is that it is mouse interactive, so when you mouse over a frequency it shows what the signal is. The default signal frequency data is taken directly from our sister site sigidwiki.com, so it may not be accurate for your particular area. But the labels are editable, so it can be customized.
An example of a previous scan can be seen on Dominic’s website (note that this is a 65mb link so be careful if you are data restricted). The software can be downloaded from its GitHub page.
rtl_fm / rx_fm: Allows you to decode and listen to FM/AM/SSB radio. rtl_sdr / rx_sdr: Allows you to record raw samples for future processing. rtl_power / rx_power: Allows you to do wideband scans over arbitrarily wide swaths of bandwidth by hopping over and recording signal power levels over multiple chunks of spectrum.
rx_tools is based on SoapySDR which is an SDR abstraction layer. If software is developed with SoapySDR, then the software can be more easily used with any SDR, assuming a Soapy plugin for that particular SDR is written. This stops the need for software to be re-written many times for different SDR’s as instead the plugin only needs to be written once.
The rtl_power program allows you to use the RTL-SDR to perform a power scan over an arbitrarily large portion of the frequency spectrum (within the RTL-SDR’s supported frequency range) by hopping over ~2 MHz swaths of bandwidth. The updated rtl_power_fftw software was originally written by Klemen Blokar and Andrej Lajovic and is an update over the regular rtl_power program. It uses a faster FFT processing algorithm and has several other enhancements that make it more useful for radio astronomy purposes.
-e param for session duration this allows to specify the recording duration in sec, mins… etc just like it was possible with rtl-power
-q flag to limit verbosity this will allow the various printouts to happen only the first time and not on every scan
-m param to produce binary matrix output and separate metadata file this will get a file name (no extension) and use it to store the power values in binary format within a .bin file + a metadata text file with .met extension
Summary of my requirements:
I wanted to leverage the ability of rtl-power-fftw to specify N average values to integrate for less than 1 second when needed. Plus running multi-MHz scans and storing for several minutes.
I wanted to use a binary format instead of the .csv one in order to obtain the smallest possible size since I’m logging all the night long (CSV’s blank delimiters and decimal dots were wasting my precious microSD space)
keep high the precision on decimal digits saving float values (could be important for other usages)
obtain a complete stream of binary values representing all the bins for each scan, one scan after the other, in a matrix like organization
…that would allow me to plot the waterfall extremely fast with gnuplot
…and then add specific annotations and file properties/metadata in a more convenient way using python
“Close Call” is a feature that some radio scanners have which notifies the user when there is a radio transmitter that is in the near vicinity (such as from a police radio). It works by detecting the strength of signals from near field emissions, and it requires a strong RF signal to trigger.
Over on the ar15.com forums, user seek2 wanted something similar to the “close call” feature, but didn’t want certain transmissions like APRS signals from hams driving by to set it off. He also didn’t want to be restricted to near field emissions, rather he wanted something that acted more like a squelch that would activate for strong signals only.
To implement this seek2 used an RTL-SDR dongle, together with the rtl_power spectrum scanning software. He outputs the signal strength data generated by rtl_power to a CSV file which is then piped into a tail -f terminal command in Linux which simply outputs the latest lines of the CSV file as it updates in real time. Then he uses a simple Python script to monitor the output and to set off an alarm and report strong signals when it see’s them. His script is also used to filter out reports from strong unwanted signals like APRS.
Below is a video showing an example of Close Call working on a Uniden hardware radio scanner for reference.
QSpectrumAnalyzer is a Linux GUI for rtl_power which allows you to easily do wideband scans that are much wider than the RTL-SDR’s maximum bandwidth. RTL_power works by quickly switching between different frequencies and recording power values in each hop, then stitching them all together. A GUI for rtl_power can be used to display an FFT spectrum and waterfall for easy analysis.
Recently we posted about the release of rtl_power_fftw, which was a modified version of rtl_power. This modified version used a more efficient FFT library and reduces the acquisition time, which for rtl_power was capped at 1 second per scan. Essentially this means that rtl_power_fftw can do frequency scans much faster (though with less integration). In basic terms this means that you can now visualize large spectrum sweeps whilst having the waterfall look near real time.
Now QSpectrumAnalyzer has been updated to support rtl_power_fftw. To use rtl_power_fftw you’ll need to download and compile it yourself from https://github.com/AD-Vega/rtl-power-fftw. The compilation instructions are shown on the Github page, but you’ll also need to install the pkg-config, libtclap-dev and libfftw3-dev libraries first. Then once compiled in QSpectrumAnalyzer you can select the rtl_power_fftw binary in the settings.
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: