Skip to content

Guide Fast sweep scanner

adswill edited this page Oct 17, 2026 · 1 revision

Guide: the Fast sweep scanner

What it is. A wideband sweep with a noise-floor measurement. It hops across a range of frequencies, measures the power in each hop, finds the signals that stand out above the noise floor and keeps a log of what it saw. Use it to find out what is active between, say, 87 and 108 MHz before you decide where to listen. On the command line the same engine is dect2sweep.

What you need

A real radio. The test signal and files cannot sweep ("pick a radio first"). Wider sample rates sweep faster: one hop covers about 70 % of the sample rate, so a HackRF at 10 Msps covers about 7 MHz per hop. An RTL-SDR works but is slower. The ceiling is the radio and its USB retune latency, not the computer.

Opening it

View > Sweep scanner (in the new interface, Sweep scanner in the tools list: "Fast wideband sweep with a noise-floor measurement, signal log and waterfall").

Step by step

  1. Choose the radio in the source list and the gain (the window shows gain ... dB).
  2. Set from MHz and to MHz.
  3. Choose the bin width (bin ... kHz) and the dwell (dwell ... ms): the time spent on each hop. A longer dwell averages more FFTs, gives a steadier floor and shows weaker signals, but sweeps slower.
  4. Choose the rate: rate: radio's best, 10 Msps, 5 Msps or 2.4 Msps.
  5. Tick measure retune time (settle). OnAir retunes between the two ends of the range several times, finds when the power stops changing and uses that time plus a margin. Untick it to enter a value yourself (settle ... ms).
  6. Set the threshold (floor+ ... dB): how far above the noise floor a bin must be to count as a signal.
  7. The floor percentile tells how the noise floor is estimated (50 is the median). Lower it in crowded bands, raise it on empty ones.
  8. Optionally set a pause between sweeps ("every N s"): the scan becomes a schedule and keeps the CPU and the battery calm.
  9. Start the sweep. The trace and waterfall fill in; the footer says for example noise floor -62 dBFS per bin (25 kHz bins), threshold ..., 14 signals in this sweep, and the speed in MHz/s.

Reading the results

  • Signals found lists detections merged by frequency: MHz, Bandwidth kHz, Peak dBFS, SNR dB, Best SNR dB, Seen (how many sweeps) and Last seen.
  • Levels are dBFS per bin; a full-scale tone reads 0 dB on its peak bin.
  • The DC spike is removed by interpolating the bins around the centre, and the hops are stitched on one bin grid, so the trace has no seams.
  • Click a signal on the trace or in the table, then press Tune to selected (or double-click the row). The sweep stops and the receiver starts on that frequency in the mode chosen next to the button (mode: as it is keeps the current mode).

Saving and comparing

  • Save scan... writes an rtl_power compatible CSV that opens in Heatmap.py, rtl_power_fftw tools and spreadsheets. It can also read such files.
  • Save signal log... writes the activity log as CSV.
  • Keep this scan as baseline and Load as baseline... compare today's sweep with an earlier one. The footer then shows vs baseline: floor +x dB, largest rise +y dB at f MHz, which is a quick way to find a new interferer.

Command line

dect2sweep --from 87 --to 108 --bin 25 --dwell 10 --csv out.csv --signals log.csv [--count 5 --interval 60]
dect2sweep --compare a.csv b.csv

Troubleshooting

  • Nothing found: lower the threshold, lengthen the dwell, check the antenna and raise the gain a step at a time; overload fills the trace with images (see Troubleshooting).
  • Slow sweeps: the settle time dominates on some radios. Use a faster rate or accept the speed your USB link allows.
  • Strong signals everywhere: reduce the gain; a strong broadcast station can desensitise the whole range.
  • A line at a round frequency that stays when you retune is interference from the radio's own clock, not a signal.

Under the hood

Each hop captures samples, averages Hann-windowed FFTs with 50 % overlap (split into four fixed parts on the shared thread pool so the result does not depend on the thread count), and crops 15 % at each edge for the filter roll-off. The noise floor is a percentile of the bin power corrected for the bias of an average of exponential values, then re-estimated after dropping bins above the 99.5 % point so signals in the band do not lift it. Detection takes runs of bins above floor plus threshold and fits the centre with a parabola (narrow) or the power centroid (wide).

Related

Frequency database | Memory panel | Spectrum analyser | Troubleshooting

Clone this wiki locally