Skip to content

Test Setup

foonerd edited this page Oct 6, 2026 · 8 revisions

Test Setup

What the plugin is developed on, what it is tested with, and the conditions under which the figures in this wiki were measured. Reception figures depend on the place and the antenna; this page says what they were, so that the figures can be read for what they are.

The test player

Board Raspberry Pi 5 Model B (Rev 1.1), 16 GB
System Volumio 4.204 (Debian Bookworm), Raspberry Pi image: 32-bit ARM userland on the 64-bit kernel (6.12)
Plugin target arm (ARMv6 hard-float binaries, the ones every Raspberry Pi runs)
Audio output HiFiBerry DAC (I2S), Volumio software mixer, 48 kHz
Dongle connection A USB 2.0 port of the player, no hub
Site The London area. Nine DAB ensembles are receivable; on FM one local station arrives about 37 dB above all others, which makes the site a test of how a tuner copes with overload.

One antenna in one position was used for all dongles. The screenshots in this wiki were taken on this player.

Plugin configuration during the measurements

Setting Value
FM region Europe (87.5 to 108 MHz, 100 kHz raster)
Automatic FM gain on
Automatic DAB gain on
PPM Correction 0, for every dongle
FM sample rate 240 kHz
Plugin versions 1.3.24 to 1.3.31 (October 2026)

How the dongles were measured

Each dongle on the Dongles page went through the same steps, one after another; the seven with R820T and R828D tuners on one day, the two with an E4000 tuner two days later:

  1. FM band survey. The plugin's own survey (fn-rtl-gain, the tool an FM scan runs) over 87.5 to 108 MHz: the gain it settles on in each 2 MHz slice, and for every channel its power, the height of its stereo pilot above the noise, and whether the pilot survives a lower gain. The number of FM stations in the table is what an FM scan lists from that survey at the Balanced sensitivity (+8 dB).
  2. Gain for single stations, as measured before a station is played, for six stations across the band.
  3. The slice next to the strong station, recorded at six gains from the highest down, to see at which gain the tuner stops inventing signals.
  4. Two DAB ensembles (channels 11D and 12B), recorded at the same six gains: the ensemble's power against the noise beside it, and the share of samples at the ends of the converter's range.
  5. Crystal error, read from how far the DAB ensembles and the FM stations sit from their nominal frequencies.
  6. Through the plugin: an FM station and a DAB station played, with the receiver chain's processes and the audio device's frame counter checked, so that "plays" means sound reached the output.

Other measurements quoted in this wiki

Figure How it was measured
Loudness of FM and DAB The plugin's two playback chains run into files in place of the audio output, for the same stations on FM and DAB, and measured as integrated loudness (EBU R 128) and peak level
DAB frequency range (35 kHz) A recording of an ensemble shifted in frequency in steps from -36 to +36 kHz, clean and with noise added, and decoded by the plugin's decoder built for ARM and for x86-64; then confirmed live with dongles 14 and 51 ppm off
Scan times FM about a minute (the survey of the band 40 seconds fast, 50 detailed; 25 seconds more with an E4000 tuner), DAB about three minutes, on the test player
Start times DAB about six seconds from request to sound, on the test player

Development and automated tests

  • Development machine: x86-64 Linux with Docker. The binaries for each target are built in an image of that target's system (a Raspbian Bookworm root for arm, Debian Bookworm for armv7, armv8 and x64), with the network switched off.
  • Test suite: about 170 tests of the plugin's controller and libraries, run in the Node version Volumio ships, with stand-ins for the receiver programs and the audio tools. They cover starting and stopping stations, scans and their merging into the list, gain measurement, logos, backups, updates, and what happens when a receiver program fails or a dongle delivers nothing.
  • Component checks: every built binary must be of its target's architecture and must start; the gain tool must get its measurements right on a signal it makes up.
  • Decoder bench: the DAB decoder is run on recordings as well as on live signals, which makes faults repeatable that otherwise depend on the dongle of the day.

What has not been tested

  • Dongles with FC0012 and FC0013 tuners.
  • Boards other than the Raspberry Pi 5 for reception figures and timings. The binaries for the other targets are built and checked to start; slower boards take longer to scan and to start a station.
  • FM bands and rasters other than Europe's, beyond the scan's arithmetic.

Clone this wiki locally