RTLSDR Scanner



Manual (EN) (FR)

Frequently Asked Questions

Screenshot 1

Screenshot 2

Screenshot 3

Screenshot 4

Screenshot 5

Screenshot 6

A cross platform Python frequency scanning GUI for USB TV dongles, using the OsmoSDR rtl-sdr library.

In other words a cheap, simple Spectrum Analyser.

The scanner attempts to overcome the tuner's frequency response by averaging scans from both the positive and negative frequency offsets of the baseband data.

Tested on:

  • Windows 7 (x86 and x64)
  • Ubuntu 12.04 (x86), 12.10 (x64), 13.04 (x64) and 14.04 (x64)
  • OS X Snow Leopard (10.6) and Mountain Lion (10.8)


Download the installer or stand-alone Windows executables from GitHub.

Download the latest source from GitHub.


Installation instructions are here.

The following dependencies are needed:

Linux and Mac users will need to manually install these,  Windows users can use the installer.


A basic manual is available in Portable Document Format.

Quick start

Run 'python -m rtlsdr_scanner'.

To start a scan simple enter the range at the bottom of the window and click 'Start', after a while a plot of signal strengths should be displayed.

'Dwell' controls how long each step is sampled for, longer times will result in more averaging of the signal.

'Continuous update' updates the display on each step. Caution only use this with small scans and low dwell times, otherwise it will become unresponsive.

'Grid' displays a grid on the scan plot.

Auto Calibration

Scans around the frequency specified for the strongest signal and then calculates the error correction of the dongle.

To get the best out of it you really need a continuous signal peak that stands out from the background noise.  If you live near an airport RADAR signals are great for this. Mobile phone signals also work well but you need to know the channel frequencies, making it tricky.  I have had some luck with commercial FM radio but you'll have to set the dwell time to the highest setting to get a usable offset.

Main Window

  • Start - Scan start frequency
  • Stop - Scan stop frequency
  • Mode - Sing or continuous scanning
  • Dwell - Sampling time spent on each step
  • FFT Size - FFT size, greater values result in higher analysis precision (with higher sizes dwell should be increased)
  • Live update - Update the display on each step (caution this can be slow and unpredictable)
  • Grid - Show a grid on the scan
  • Display - Change the plot type

File Menu

  • Open... - Open a saved scan
  • Save As... - Save a scan
  • Export... - Export a scan to a CSV file
  • Properties ... - Scan information

Edit Menu

  • Preferences - Set dongle gain, calibration, Local Oscillator (positive offset for upconverters) and sample bands (see below)

Scan Menu

  • Start - Start a scan
  • Stop - Stop the scan
  • Stop at end - Stop the scan when the current sweep is finished (only in continuous mode)

Tools Menu

  • Compare - Compare two previously saved scans
  • Auto Calibration - Perform a crude calibration of the dongle to a known signal (this should be a continuous, unwavering signal)


Dongles will differ depending on the tuner and circuit that's used, the software allows you to pick the best range that is sampled to give improved results.

Click on View -> Preferences and select the 'Band Offset' for you tuner, next detach the aerial or even better terminate it with a 50 ohm load.  Now click refresh to show the noise floor of the tuner, adjust the offset so the marked bands overlay the flattest areas of the plot and click OK.

I find the following offsets work well (click the offsets for images):

Tuner Offset (kHz)
Elonics E4000 250
Fitipower FC0012 140
Rafael Micro R820T 100

Note the large peak in the middle, this is at 0Hz (i.e. its the DC offset).  On the R820T it is much narrower, this is because it uses an intermediate frequency away from the low frequencies.  In this case the resulting spike is due to the sample length not being infinitely long (imagine taking a complete cycle of a sine wave then chopping the end off, this leaves it unbalanced and its average value is no longer 0, in other words it looks like it has a DC offset), the sample is windowed to reduce this but it's a trade-off between accuracy and frequency response.


Run 'rtlsdr_scan_diag.py', this tests if the correct modules are installed.




Click to view comments

I am just looking at your RTLSDR_Scanner program, I have a project which aims to create an RF heatmap using a SDR such as sensing the RF spectrum whilst in a vehicle, and then doing an upload to visualise on a map such as google maps. I have not yet tried your program with a GPS device, but have a few queries. 1. When running a scan from the command line, with a GPS attached will it output the GPS Long & lat in the CSV file along with the normal output? 2. Is there a way of running a scan and then loading a CSV file into the google maps tracker (to show heatmap) afterwards? Also, in the GUI I can only see the option to open a RFS file, so I am assuming you cannot open a CSV file?

Al's picture


When you scan a '.rfs' file is created that contains both the spectra and coordinates.  You can then load this into the GUI and export it in a variety of formats from the 'Export map' option under the file menu.

You are correct in thinking only the RFS file can be opened, CSV files cannot easily hold both types of data.

Hope that helps.


The program is wonderful, its definition magnificent

But I would like to be able to use two RTLs at the same time to measure two different antennas

Thank you

In the end I managed to get 2 RTL-SDRs working at the same time

Wonderful program

Thank you

Al's picture

Thank you.

I'm glad to hear it worked for you, beware though as the settings are shared between every instance of the program that you run. This means that if you change the settings in one it could cause weird behaviour in another.

first thanks a lot for writing this . One comment i noticed when setting the LO to -100 its not automatic corrected in the spectrogram so i have to subtract myself, not a big problem but confusing when saving plots

regards, rene

Al's picture

Thanks I'll look into that.

so a feature request, it would be nice if you could scan a range in a limited number of "hops" per example scan from 10 to 1000 mhz in 20 "hops" . I would like to use rtlsdr-scanner as a generic spectrum analyser to per example test a filter with a noise source over a wide range.

Al's picture

I'm not quite sure what you mean by 'hops'. Do you want it to be able to scan a set of ranges within the 1000mHz scan?

could i use hackrf instead of RTL ?

Al's picture

Sorry it only works with the RTLSDR.

It is very useful and I want to use some coding of this program. I can't understang about your code and I'm newbie programming. Could you help me please? I want understang what code is read value from rtlsdr and what code bring values to plot spectrum. Thank you very much.

If I have 2 or 3 dongles wired to the clock of the 3rd or 4th dongle, can I use all 3 (or 4) dongles with RTLSDR_Scanner, does this software support coherent applications like direction finding and can I produce a bearing on a map in real-time? If not, would the heat mapping function of RTLSDR_Scanner be more accurate with this kind of setup, if supported?

Are there any applications that support offline maps that will accurately display the CSV data exported from RTLSDR_Scanner?

When taking the RTL-SDR V1.3.1 on a drive, It will not record the driven trail but a straight line. GPS signal is read properly by the program as it opens Google Earth and shows real time position using the TOOLS>Track in Google Earth feature. Also the signal strength is displayed properly via TOOLS>GPS Satellites. What ever the trail I do, couples of blocks square or highway drive it's always a straight line. Please Help.

Hi and compliments on a fine piece of software.
I wonder if there is a way to add support (libraries, dll's) for use with an ADALM Pluto SDR?
Since the Pluto has a frequency range of 70-6000MHz and TX/RX capabilities (full-duplex) it would be a very good implementation.

Thanks in advance

I just found and am trying out this great software with my RTL SDR+.
It seems to work very well with it.
My questions are;
Are there markers somewhere, that I'm just not finding?
I did find the single peak marker. I'm looking for multiple markers for spurious emissions.
If not, do you plan on adding markers to the program?
Thanks for the software.

Hi I get usb_open error -12
Found Rafael Micro R820T tuner

but I have a v3 RTL_SDR and it runs with SDR# perfectly. Close SDR# and open SDR scanner and it throws this error and no work.
any help to fix? thanks.


Click to add a comment