Skip to content

Scanning

foonerd edited this page Oct 6, 2026 · 7 revisions

Scanning

A scan fills the station list. FM and DAB are scanned separately, from the plugin's settings or from the Station Manager, which shows the progress. A scan needs the dongle: if a station is playing, Volumio asks whether to stop it first.

FM scan

A scan listens to the channels of the FM band and keeps the ones that are stations.

Fast or detailed

Settings > FM Radio Settings > FM Scan, or the choice in the Station Manager's Rescan dialog (the one chosen there becomes the setting):

Scan Listens to Finds Survey of the band on a Raspberry Pi 5
Fast (default) the channels that stand out from their neighbours in power, the channels beside a faint station, and every station already in your list all stations that are received well about 40 seconds
Detailed every channel, except those right beside a far stronger station also weak stations that do not stand out from the noise about 50 seconds

A weak station does not show in the power of its channel, only in its pilot once it is listened to. That is why a fast scan can miss one, and why a station at one dot of five is found, not enjoyed. A dongle with an E4000 tuner needs about 25 seconds more for either kind (see Dongles); slower boards need longer.

How a station is recognised

  • The band is taken in slices of 2 MHz, each at its own gain: the highest at which the signal is not cut off and the tuner is not overloaded (see Gain, Frequency and Loudness).
  • A channel that is listened to counts as a station when
    • its carrier lies on the channel,
    • the 19 kHz pilot that every stereo station sends stands clear of the noise for the whole time it is listened to,
    • the pilot is still there when the gain is lowered, and
    • where the channel looks like the tuner's mirror of a stronger station, the pilot is still there with the tuner set elsewhere.
  • Stations without a pilot (mono). A channel with no pilot is a station when its carrier stands clear of the noise, as far as the pilot of a fairly well received stereo station does, and a programme moves it. A carrier that nothing moves is not a station (electronics nearby produce such carriers), and neither is a mono station that is silent at the moment it is listened to: the two cannot be told apart. A mono station has to be received fairly well to be found.
  • Beside a strong station. What a strong station spills 200 kHz from its carrier carries its pilot too. A faint pilot beside a far stronger station is therefore read a second time with the channel taken in more narrowly: a weak station of its own reads better that way, spill reads worse and is not listed.
  • Channels next to each other. A station can be heard on the channel next to its own. Of neighbouring channels that all pass, the one that shows the station best is listed. Two weak stations 100 kHz apart are both listed: each has a peak of power at its own carrier, which a channel that only hears its neighbour has not.
  • Signals made in the tuner. A very strong station can overload the tuner, which then manufactures signals that look like stations, pilot included. They go when the gain is lowered; a station does not. Beside a very strong station the check is stricter: a faint pilot there must hold its strength with the gain lowered.
  • A tuner's mirror. Some tuners deliver every station a second time, weaker, as far on the other side of the frequency they are set to (the E4000; see Dongles). A channel that is largely such a copy of a stronger one is listened to once more with the tuner set half a megahertz beside it: a station is still there, a copy has moved away with the tuning. A station that had a copy lying on it is kept, with the reception level it shows by itself. With other tuners the check finds nothing to look at and costs no time.
  • Each station found is given a reception level from 1 to 5, the same measure the player shows while a station plays. For a mono station it is read from the carrier.
flowchart TD
    channel["A channel of the FM band"] --> listen{"Listened to?<br/>(fast: stands out, or in your list;<br/>detailed: every channel)"}
    listen -- "no" --> none["Not a station"]
    listen -- "yes" --> carrier{"Carrier on<br/>the channel?"}
    carrier -- "no" --> none
    carrier -- "yes" --> pilot{"Stereo pilot above the noise<br/>by the sensitivity setting?"}
    pilot -- "no" --> mono{"Carrier clear of the noise<br/>and moved by a programme?"}
    mono -- "no" --> none
    mono -- "yes" --> again
    pilot -- "yes" --> spill{"Faint, beside a far stronger station,<br/>and worse when taken in narrowly?"}
    spill -- "yes" --> spilt["Spill of the strong station:<br/>not listed"]
    spill -- "no" --> again{"Still there<br/>at a lower gain?"}
    again -- "no" --> ghost["Made in the tuner by a<br/>strong station nearby: not listed"]
    again -- "yes" --> mirror{"Largely the mirror of a<br/>stronger station?"}
    mirror -- "no" --> best{"Shows the station better than<br/>the channels next to it,<br/>or has a carrier of its own?"}
    mirror -- "yes" --> moved{"Still there with<br/>the tuner set elsewhere?"}
    moved -- "no" --> copy["The tuner's mirror of<br/>another station: not listed"]
    moved -- "yes" --> best
    best -- "no" --> beside["Hears the station on the<br/>next channel: not listed"]
    best -- "yes" --> station["A station: listed<br/>with its reception level"]
    station --> rds{"Strong enough<br/>for RDS?"}
    rds -- "yes" --> code["Listened to for its RDS code,<br/>which finds its name and logo"]
    rds -- "no" --> later["Name and logo follow<br/>when the station is played"]
Loading

Names and RDS

Stations received well enough for RDS (the pilot about 36 dB above the noise) are then listened to for up to four seconds each, for their RDS programme code. It is what a station's name and logo are found by. A station whose code is already kept is not listened to again; a weaker station tells its code while it is played. Until a name is known, a station is listed as "FM" and its frequency.

How long it takes

About a minute on a Raspberry Pi 4 or 5 the first time: the survey of the band (see the table above) and a few seconds for each station strong enough for RDS. Later scans are shorter, because stations whose RDS code is kept are not listened to again. Slower boards need longer. What was measured is written to the player's log, slice by slice.

The dongle's tuning

A scan also tells how far the dongle tunes off frequency, from the carriers of the stations it receives well, and the plugin corrects for it from then on (see Gain, Frequency and Loudness). The stations are found either way: an error of 5 kHz is within the channel.

What is not found

  • A mono station that is silent while the scan listens to it, or one received too weakly for its carrier to stand clear of the noise. Scan again, or add it by hand in the Station Manager.
  • A weak station on the channel right beside a far stronger one.
  • With a fast scan: a weak station that does not stand out, and the weaker of two stations 100 kHz apart when the stronger one is received well. A detailed scan finds them.

FM Scan Sensitivity

Settings > FM Radio Settings > FM Scan Sensitivity is how far the pilot must stand above the noise:

Setting Pilot above the noise Finds
Conservative +15 dB very strong stations only
Moderate +10 dB strong stations
Balanced (recommended) +8 dB stations with good reception
Sensitive +5 dB all reasonable stations
Very Sensitive +3 dB faint stations too; some of them come and go between scans, and an entry or two of a scan may be no station at all

The setting is about the pilot. A station without one is judged by its carrier, the same at every setting.

What a rescan does to your list

  • Stations you named, marked as favourite, hid, deleted, added by hand or played stay as they are, whether the scan finds them or not.
  • A station already in the list is found again on a little less than a new station must show (a pilot up to 3 dB weaker; a mono station also while it is silent). Reception moves by a few decibels from day to day, and a station at the edge would otherwise come and go from scan to scan.
  • A station an earlier scan listed, that this scan looked for and did not find, and that you never touched, is removed. The scan says how many.
  • New stations are added.

FM regions

Settings > FM Radio Region sets the band, the channel raster and the de-emphasis in one choice:

Region Band Raster Broadcast pre-emphasis
Europe (default) 87.5 to 108 MHz 100 kHz 50 µs
Americas 88 to 108 MHz 200 kHz 75 µs
Japan 76 to 95 MHz 100 kHz 50 µs
East Asia (South Korea, Taiwan) 88 to 108 MHz 200 kHz 75 µs
Australia/Oceania 87.5 to 108 MHz 200 kHz 50 µs
Italy 87 to 108 MHz 50 kHz 50 µs
OIRT/Russia legacy 65.8 to 74 MHz 30 kHz 50 µs
Custom set by hand set by hand 50 µs

FM Scan Offset shifts the raster. With 200 kHz spacing the scan looks at 88.0, 88.2, 88.4 ... by default; where stations sit at 88.1, 88.3, 88.5 ... set the offset to 100 kHz. It applies in every region.

Every region applies the de-emphasis that matches its broadcasts, 50 or 75 µs. FM De-emphasis sets another for a country that differs from its region: the region's own, 50 µs, 75 µs, or off. In the OIRT band stereo is sent without the 19 kHz pilot, and stations there are judged by their carrier, as mono stations are.

DAB scan

A DAB scan steps through the channels of Band III (5A to 13F). On each it tries to synchronise to an ensemble, and where it succeeds it lists every audio service the ensemble carries, with its name, identifiers, bit rate and whether it is DAB or DAB+.

  • It takes about three minutes.
  • The gain is measured on each channel, and the frequency error of the dongle is found on each channel; nothing has to be set.
  • Stations are listed under their ensemble (multiplex) and in one flat list.

What a rescan does to your list

  • A station found again keeps everything you set for it (name, favourite, hidden, notes, play count, logo) and takes over what the broadcaster changed (its broadcast name, bit rate, DAB or DAB+).
  • New services are added.
  • A station that is not found is kept. Nothing is removed by a DAB scan; services that have left the air can be deleted in the Station Manager.

Service names

A DAB station is identified by its channel and service identifier, and addressed by the name the ensemble transmits, which is padded to sixteen characters and may differ from the brand name ("BBC Radio1" for the station known as "BBC Radio 1"). The name you see can be changed in the Station Manager without affecting this.

Before you scan: the antenna

A scan can only list what the antenna delivers. If few or no stations are found, see Antennas and use the Antenna Positioning Tools to find a good place and direction first.

Clone this wiki locally