RF Monitor

RF signal monitor for recording the time and location of signals which exceed a threshold. For use with a RTLSDR dongle.



The code can be downloaded from GitHub.



Firstly install the RTLSDR driver, then run the following command:

pip install rf-monitor


rf_monitor.py [file]

Main Window

Set the frequency, gain and calibration in the toolbar located at the bottom of the main window.

To add 'monitors' for frequencies of interest click the '+' button on the right hand side of the toolbar.

The 'Start' button begins radio reception and 'Stop' finishes it.

Press 'Record' to begin recording signals which exceed the threshold of each monitor. Press it again to stop recording.


Each monitor allows you to watch a particular frequency and record when it's level exceeds a threshold.  The colour on the left corresponds to the plots in the spectrum and timeline views (see below).

Set the frequency using the drop-down list and set level threshold with the slider.
Each monitor can be enabled and an alert played if the respective check boxes are ticked.

To remove a monitor remove the tick from the 'Enabled' box and press the '-' button.

Spectrum View

This window (found in the View menu) displays the received frequency spectrum and marks the frequencies and thresholds of any monitors that are enabled.

To begin reception press the start button on the toolbar in the main window.

Timeline View

This window (found in the View menu) displays recorded signals for enabled monitors.

Blocks are displayed when the signal is larger than the threshold, lighter coloured blocks indicate the recording periods.

Plot controls

To zoom and pan the plots press the 'Pan' button in the plot's toolbar (crossed arrows).
Drag using the left mouse button to pan and use the right button to zoom in and out.


A NMEA serial GPS can be connected, this will record the location for each signal as it's recorded.

Set up the GPS by opening 'GPS Settings' in the edit menu, select the port and baud rate of your GPS and tick the enable box.

Command Line Mode

Once you have added your monitors and saved the file you can run the application from the command line.

Specify the file you want to use with the '-c' switch:

python rfmonitor.py -c <savedfile.rfmon>

The application will begin recording signals, press Ctrl-C to exit it.

To use GPS add the port using '-p' and the baud rate with '-b'

python rfmonitor.py -p <serial port> -b <baud> -c <savedfile.rfmon>

For example on Windows:

python rfmonitor.py -p COM4 -b 115200 -c savedfile.rfmon

or Linux

python rfmonitor.py -p /dev/ttyUSB0 -b 115200 -c savedfile.rfmon





Click to view comments


Can you tell me which code I need to download from the gethub. It just says: "The code can be downloaded from GitHub." OI can you send me what I need? I am having trouble with 'pip install rf-monitor' and want to make sure I have the right material.


Al's picture

The easiest should be using pip as this should install all it's dependencies.  Could you post the error you are seeing so I can try and fix it?


I have just installed RF Monitor using pip on a Raspberry Pi. The installation seemed to go fine but it ended up being installed in a hidden directory:
/.local/lib/python2.7/site-packages/rfmonitor $

Is this correct? More importantly - as dumb as it sounds I can't find rf_monitor.py anywhere! I can send a complete list of directory contents if needed, but at this point I can't run the program and would appreciate any assistance.

Thanks in advance for what appears to be a nice app plus very complete documentation.


Click to add a comment