FCD scanner

14.05.2014 10:01

FCD scanner is a slow and simple implementation of a swept-tuned spectrum analyzer in Python. It can display received signal strength versus time versus frequency using a number of real-time visualizations and can also log measured data for later analysis.

It works by sweeping a radio receiver through a range of frequencies and measuring the signal power at the receiver output. Resolution bandwidth is determined by the channel filter used by the receiver and sweep time is limited by receiver settle time.

See also this blog post for some background information.


  • Real-time line, persistence and waterfall plots,
  • can log measurements to an ASCII file.


Two radio receivers are currently supported:


fcd_scanner using Funcube Dongle Pro showing persistence plot:

Spectrum of a DVB-T transmitter measured using FCD

fcd_scanner using VESNA spectrum sensor showing waterfall plot:

Screenshot of fcd_scanner with waterfall visual.

Usage examples

To scan European UHF channels 29 through 41 using a VESNA device, displaying a real-time waterfall and saving measurements into a log file:

$ fcd_scanner -d vesna --start 538M --stop 634M -p 8M -w -o uhf.log

To later plot recorded data with GNU plot, first convert the log file into a pm3d format:

$ fcd_scanner_log_to_pm3d < uhf.log > uhf.dat

And then plot with GNU plot:

gnuplot> set pm3d map
gnuplot> splot "uhf.dat"

If you want to process fcd_scanner log files in your own Python scripts, you can use the fcd_scanner.log.load() method and the FCDScannerLog object to parse the log file format.

>>> import fcd_scanner.log
>>> f = open("uhf.log")
>>> l = fcd_scanner.log.load(f)

A script for loading log files into Octave or Matlab is also provided.

See the README file and docstring documentation for more details.


The latest development version is available for download.

You can also get the Python source directly from the git repository using the command below.

$ git clone https://www.tablix.org/~avian/git/fcd_scanner.git

Refer to the README file included in the distribution for details on installation.


Copyright (C) 2014 Tomaž Šolc

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.