Wiki sections

Wiki SDR SA PRO

Scanner: finding signals

PRO The Scanner is a side-panel tab that looks for signals in the spectrum by itself and keeps a list of them by frequency: in a sweep — in every finished pass, in tuned mode — in windows of half a second. A row of the list gives the centre, the width, the level above the local noise floor and in how many looks the signal was seen. This page covers the search, the list, the marks on the spectrum, the “How far to trust the list” fold and the eight search methods. The frequency table, alarms, the event log and IQ recording on an alarm are on the page Frequency table and alarms.

Where the tab is

The Scanner tab sits in the side panel next to the app’s four tabs. You can also open it from the View → Scanner menu or with Ctrl+5.

  • The tab exists only with a valid SDR SA PRO key. Without a key it is not there at all — the app works as the free edition (see What SDR SA PRO is).
  • A key entered in the window at start-up takes effect at once. A key entered later from the Help menu adds the tab from the next start of the program.
  • At the top of the tab is a switch between two lists: Signals: N and Frequency table: N. One of them is shown; the number is how many rows it holds.
Look for signals
Turns the search on and off. After the program starts, the search is always off: until you turn it on, the Scanner computes nothing. Turning the search off leaves the list on screen, so you can study what there was at that moment. Turned on again, it starts the list afresh.
Clear
Removes all rows and starts counting afresh: the list, the occupancy of the table ranges and the alarm counter. The button is active when the list has rows.

Below the switch is a state line. A green Running means measurements are coming in. Otherwise the line says why they are not:

  • Off or Off — the list shows what there was at the moment it was turned off;
  • The search has stopped: the program closed the tap of measurements;
  • Reception is stopped, Reception is paused — the list is not updated, The device is transmitting — there is no reception;
  • The passport of the receiver's own spurs is being taken — these passes do not go into the list (on the passport, see Detection marks and the spur passport);
  • The recording has ended — for a recording from a file;
  • This source gives ready levels, not a spectrum: the Scanner does not work with it — this is what you get with a tinySA;
  • The Scanner stopped because of an error — the list is not updated — the error itself stands below it in red. The spectrum keeps running.

What a look is

The Scanner judges the spectrum in looks. In a sweep a look is a finished pass; in tuned mode it is an accumulation window of half a second. The list is updated no more than four times a second; short passes that pile up in that time are combined into one look. How often a look comes is stated by the A look line in the “How far to trust the list” fold (below).

An example from the owner’s measurements: a Fobos SDR with the special firmware, sweeping 50–6900 MHz by the device’s own scanning at 50 MS/s — the Scanner looks at the whole range with a period of about 0.76 s. See Fobos SDR.

With a recording from a file and with the demo signal the Scanner works the same way, but they give no alarms: they are not the air at this minute.

The list of signals

Rows are sorted by rising frequency. A new row takes its own place, and the rows already there do not jump. Above the list is the heading Signals: N, and to the right of it tentative: N: that many tentative rows — detections not yet confirmed (they do not go into the list). When there are unacknowledged alarms, Alarms: N and an Acknowledge button appear between the heading and the list — see Alarms.

CellWhat it holds
DotGreen — the signal is there; grey — the signal is gone; red — an alarm not yet acknowledged; a hollow circle — not a signal but an activity range.
CentreThe frequency of the middle of the row.
WidthThe width of the signal. With “≤” — the row is no wider than the analysis window: that is the resolution of the measurement, and the signal itself may be narrower. With “≈” — a noise-like signal whose edges drift.
LevelIn decibels above the local noise floor, for example 12.4 dB — not in dBm and not in dBFS. A dash — no level yet.
How often seenA number like 7/9: in how many looks the signal was there out of those in which it was looked for. It is a share of looks, not the duty cycle of the signal. Instead of the number you may see gone or out of view; an activity range shows activity N/N or activity, out of view.

A row that lies in a range of the frequency table has a second line beneath it: the name and type of that range, the channel number, the width mark, the reason for an alarm. What they mean is on the page Frequency table and alarms.

How a row appears and disappears

  • Appearance. One detection is not yet a signal. A row appears when detections at the same place repeat: M times in N looks. N is as many looks as fit into 3 s, but no fewer than two and no more than eight; M is computed so that noise gives no more than one false row a day. Where new detections keep falling in a new place each time, a row needs more repeats — up to “eight of eight”. The rule and the shortest time to appear are stated by the A row appears line.
  • Disappearance. A row becomes gone when there are more misses in a row than a signal with its own hit share gives by itself less often than once in a thousand. So an intermittent signal does not “vanish” at every miss. A gone row stays in the list for another ten minutes; if the signal returns within that time, it is the same row.
  • Out of view. A row the current look does not cover (the range was narrowed or moved) does not disappear: it stays dimmed, marked out of view, and counts no misses.
  • Merging and splitting. Neighbouring signals stay separate rows: a one-off wide burst over them merges nothing — only a wide detection that has repeated does. A frequency-modulated signal that lands in another place from look to look is one row as wide as its deviation. A row in which several separate detections with a steady gap are seen look after look is split.
  • Level. The median over the latest hits, not the largest value. When the signal path, the detector or the window change, the levels are counted afresh: “dB above the floor” under other conditions is another quantity.
  • Ceiling. Up to 2000 rows including tentative ones; up to 500 detections are taken from one look, the strongest. What did not fit is stated by the The list is full and Detections lines.

Weak wide signals

A noise-like signal a few decibels above the floor does not cross the threshold bin by bin. So next to the bin-by-bin search there are windows of three scales — the mean over 16, 64 and 256 neighbouring bins. Their threshold is lower than that of a single bin, and a weak wide signal becomes one row from edge to edge. Each window looks only at the bins the finer ones have not explained, so a strong narrow carrier does not become a wide signal. The thresholds of the windows are stated by the Weak wide ones line: “… dB over 16 bins; … dB over 64 bins; …”.

  • A wide signal shows its width with “≈”.
  • A signal over a whole sweep tune. A signal wider than half a tune raises the level of that tune by itself, and there is nothing in the tune to compare it with. Such a signal is seen when the tune stands higher than it was, or higher than its neighbours on both sides. By how many decibels is stated by the Over a whole tune line; while the history of levels is being gathered, it speaks only of the neighbours.
  • The model of the floor by sweep tunes needs at least six tunes. In a narrower sweep the floor is taken in blocks and only the smallest window judges — the “How far to trust the list” fold then shows Floor: by blocks: fewer than six tunes, the wide windows do not judge.
  • In a sweep, a narrow unevenness of the receiver itself that sits at the same place in every tune (the residue of the DC component near the centre) does not become a row: after two passes it is already part of the floor.
  • The Margin above the floor, dB method has no windows for weak wide signals on purpose — see Search methods.

Activity ranges

A row with a hollow circle and the word activity is not a signal but a range where detections turn up now and then without becoming a signal row: each time in another place, or too seldom. That is what a hopping frequency and rare bursts look like.

  • The edges of the row are the span in which this happened; the number in activity N/N is in how many of the latest looks; the level is the usual one for these detections.
  • Rare bursts are seen by the long window: 1024 looks, but no longer than ten minutes.
  • The number of a range that has left the list is remembered for ten minutes: if it turns up at the same place, it is the same row.
  • There are no more than 64 activity rows, the busiest. How many ranges were left without a row and how many such rows noise alone would give in a day (a calculation) is stated by the Activity line.
  • If detections that do not repeat are more frequent over the whole look than the noise of the detector can give, an activity row over the whole look appears, and the Activity line says why: either the floor is estimated wrongly, or activity really fills the look.
  • Such a row gets a class from the frequency table, but no “width does not match” mark.

Marks on the spectrum

Above the frequency axis, along the bottom edge of the spectrum, each row of the list that lies in the visible window has a bar from edge to edge of the signal (no narrower than three pixels).

  • Blue — the signal is there; pale — the signal is gone; red — an alarm not yet acknowledged; hollow with an outline — an activity range.
  • The marks travel with the spectrum when the view is dragged or zoomed. A signal that comes into view during the movement gets its mark with a delay of up to 0.1 s.
  • There are no more than two hundred marks; unacknowledged alarms are kept first, then signals that are there, then the stronger ones. How many did not fit is shown by more marks: N in the corner.
  • The marks do not take the mouse: a click on the spectrum stays a tuning, a double click stays a view reset.

Show a signal and tune the receiver

Double click on a row
Shows the row on the spectrum: the view opens to four widths of the signal, but no narrower than 256 bins of the measurement. It is the view only — the receiver tuning and the captured band stay the same. A row outside the band the receiver is taking in now cannot be shown: the view does not move, and for a few seconds the list shows This row lies outside the band the receiver is taking in now: there is nothing to show it from on the spectrum.
Right click on a row → Show on the spectrum
The same as a double click.
Right click on a row → Tune the receiver to the signal
Puts the receiver centre on the centre of the row (the captured band is as wide as the current sample rate) and the VFO on the signal with the bandwidth of the row. In a sweep this stops the sweep — just as a hand on the frequency dial does. The menu remembers the row itself: if the list was updated while the menu was open, the signal that was clicked is the one tuned to.

After the tuning the Scanner places the VFO on the signal only for three seconds, while the receiver moves to the new frequency. Move the VFO, drag a range on the ruler or switch on a sweep — and it no longer touches the VFO. A tuning requested during a pause places the VFO on the signal as soon as the pause is lifted. If the source cannot be retuned or the receiver’s sample rate is not known yet, the list shows Tuning failed: … with the reason.

How far to trust the list

Below the state line is the fold How far to trust the list. It is open from the start; a click on its heading folds and unfolds it (this is not remembered between runs). The fold takes no more than three tenths of the page height and scrolls by itself, so the list is visible at any window height. At the top of the fold is the choice of search method (see below), then the lines that say what the list rests on. The lines appear after the first look and show only what has been measured or computed from the latest look.

Method
Which method searched. For Margin above the floor, dB and Median + spread (MAD), dB it adds what share of noise per bin the threshold lets through (noise above the threshold ≈ … per bin); if a least width is set — narrower than … kHz is not taken.
Threshold
How many decibels above the local floor a bin must stand to become a detection.
Sensitivity
From what level a carrier is found in 9 looks out of 10, and how much worse it is when the carrier sits midway between bins.
Weak wide ones
The thresholds of the 16-, 64- and 256-bin windows (see above).
Spectra
How many spectra there are in a cell. If there is no exact threshold for the current detector, it adds the threshold is raised: there is no exact one for this detector.
Over a whole tune and Floor
In a sweep only: from how many decibels a signal over a whole tune is seen, and whether the floor is taken in blocks.
Channels
Only when the frequency table has ranges with a channel step: how many channels there are in this measurement, how many are busy, the channel threshold and where channels could not be judged. See Channels.
A row appears and A look
The appearance rule (M detections in N looks, the shortest time) and how often a look comes.
Tentative
How many tentative rows there are now, and how many tentative rows per look never get confirmed (false ones per look) — a measured rate, not a calculation.
Activity
How many activity ranges there are and how many noise alone would give in a day.
Missed
How many passes the Scanner did not manage to pick up.
Left out
How many bins were not judged at all: the receiver’s own spurs, clipped and incomplete tunes.
Blind bands
How much of the band the look does not see: the cut-outs at the centre of the tunes and what the pass did not cover. A signal there is not seen.
Own spurs
Appears with a live receiver that has no passport of its own spurs. With the LO-shift check, the spurs it does not catch will become rows; without it — all of the receiver’s own spurs. See Detection marks and the spur passport.
Levels
Always the same: dB over the local floor, not dBm.
Alarms, IQ recording, Class, Source
Which alarm rules are in force, what is happening with the recording on an alarm, where the class comes from and whether the source is the air. The IQ recording line is there only while recording on an alarm is switched on; the Source line only with a recording from a file or the demo signal. See Frequency table and alarms.

Search methods 0.9.47

The first line of the fold is the Search method list. Below it are a short explanation of the chosen method and the fields of only those parameters that matter for it, plus least width, kHz for all methods. The method decides one thing: which bins stand above the threshold. Everything else is common to all methods and works from the statistical floor: segments, the windows for weak wide signals, the channels of the frequency table, the rules for rows appearing and disappearing.

Method in the listHow it judges a binParameters: limits, default
Statistical (from the noise distribution)The default. The floor follows the model of the sweep’s tunes or block medians; the threshold comes from the noise distribution at a false-alarm probability of 10⁻⁶ per bin (it cannot be changed); weak wide signals are found by windows of three scales.—
Margin above the floor, dBThe same floor, and the threshold is as many decibels above it as you name. Predictable; no windows for weak wide signals.margin, dB: 1…60, default 10
CA-CFAR: mean of the neighboursEach bin’s floor is the mean of the neighbouring cells on both sides, beyond the guard cells. Follows the local level; a strong neighbour raises the floor and hides a weaker one.reference bins per side: 4…256, default 32; guard bins: 0…32, default 2
GO-CFAR: the greater of the two sidesThe floor is the greater of the two side means: no false alarms at level steps (tune seams, the edge of a strong band), but a weak signal next to a strong edge is lost.as for CA-CFAR
SO-CFAR: the smaller of the two sidesThe floor is the smaller of the two side means: more sensitive near edges, but it showers false alarms at level steps — for flat air only.as for CA-CFAR
OS-CFAR: order statistic of the neighboursThe floor is an order statistic of the neighbouring cells: a few strong neighbours do not raise it, and close signals are seen apart. The threshold carries a margin.as for CA-CFAR, but no more than 64 reference cells per side are taken; rank, fraction: 0.5…0.95, default 0.75
Median + spread (MAD), dBMedian and spread in decibels per block; the threshold is the median plus k spreads. Relies on no noise distribution — for air with impulsive interference.spreads, k: 1.5…10, default 3
Two thresholds (hysteresis)A segment is taken only when at least one of its bins is above the upper, statistical threshold; the edges of the segment follow the lower threshold. The lower one never drops below the level that one noise cell in a hundred exceeds. A signal does not crumble into pieces, and noise above only the lower threshold is not taken.lower threshold, dB below: 0.5…20, default 3
  • least width, kHz — from 0 to 10000, default 0 (any). A detection narrower than this is dropped: this is how narrow interference of the receiver and splashes are removed. It does not drop the channels of the frequency table.
  • A value is typed into the field and applied with Enter or by leaving the field; Esc restores the previous one. A value outside the limits is not accepted: the field returns to the one in force.
  • The CFAR methods see only what is narrower than their reference window. A wider band is found by the same scale windows as in the default method, so it is not lost.
  • The share of noise per bin that Margin above the floor, dB or Median + spread (MAD), dB lets through is computed by the program from the threshold itself, and this share is what the row-appearance rule uses.
  • The method, its parameters and the least width are saved between runs.

What is saved between runs

Everything the Scanner remembers lies in the scanner folder inside the SDR SA PRO data folder. For the program installed from a package this is Documents\SDR SA PRO\scanner; how the data folder is chosen is described on the page Settings, files and language. Until you change anything, neither the folder nor the files exist.

FileWhat it holdsWhen it appears
settings.jsonthe search method and its parameters, the least width, the list of types for alarms, the switches for sound, the log and IQ recording on an alarm, the recording durationwhen you first change any of these
table.jsonthe frequency tableafter the first edit of the table
events-YYYY-MM-DD.csvthe event log, one file per dayonly when Event log is on and an alarm has occurred

Not saved: the Look for signals switch, the list of signals itself and the state of the fold. A settings file written by a newer version of the program is not overwritten: the defaults are in force, and a line below the alarm settings says so. On the table and the log, see Frequency table and alarms.

Limits

  • Levels are in decibels above the local noise floor, not in dBm. This version has no amplitude calibration.
  • The class of a row is a frequency label from the table, not a recognised kind of signal; there is no neural network.
  • It works with IQ receivers, a recording from a file and the demo signal; not with a tinySA: it gives ready levels, not a spectrum.
  • A look covers one range: there is no plan of several non-adjacent ranges.
  • Rows and counts are not saved between runs.
  • A signal in a blind band — in the cut-out at the centre of a sweep tune or where the pass did not reach — is not seen; how much of such band there is, is stated by the Blind bands line.
  • A signal inside a wider signal does not become a separate row. A wide signal that covered three or more sweep tunes in a row and was there from the very start is not found. Two weak (up to +10 dB) wide signals with a gap of up to 0.4 MHz stand as one row.
  • A signal hopping over a small number of channels (about twenty) or over narrow channels on a sparse raster gives ordinary rows besides the activity row.
  • Activity is counted in looks: how long a burst itself lasts and how often it comes between looks, it does not know.
  • The frequency of a row is as the receiver itself shows it: the Scanner does not know the error of the receiver’s reference oscillator.

The wiki describes version 0.9.49. Your app's version is shown in the Help menu, under About. Found a mistake? Write to us.