Repository navigation
Building from Source
The plugin and every binary it ships are built from the rtlsdr-radio repository. Its README is the reference for building; this page is an overview.
| Path | Holds |
|---|---|
plugin/ |
The Volumio plugin: controller, Station Manager, settings, translations, installer. No binaries. |
components/rtlsdr/ |
The RTL-SDR library and tools, packaged as libfn-rtlsdr0 and foonerd-rtlsdr (fn-rtl_fm, fn-rtl_power, ...). Built from osmocom/rtl-sdr. |
components/dab/ |
The DAB/DAB+ decoder fn-dab and the scanner fn-dab-scanner, derived from dab-cmdline. |
components/redsea/ |
The RDS decoder fn-redsea, built from redsea with liquid-dsp. |
components/gain/ |
fn-rtl-gain, which measures the gain a dongle should be set to and surveys the FM band for stations. |
docker/ |
The build environments. |
scripts/ |
Fetching sources, building a target, checking the result, assembling and packaging the plugin, running the tests. |
tests/ |
The plugin's test suite, with stand-ins for the receiver programs. |
Everything the plugin runs carries an fn- prefix, so that nothing collides with distribution packages of the same origin.
| Target | Runs on |
|---|---|
arm |
Every Raspberry Pi from the Zero and Pi 1 up (ARMv6 hard-float, as Volumio's Pi image) |
armv7 |
32-bit ARMv7 boards |
armv8 |
64-bit ARM |
x64 |
x86-64 |
Requirements: Docker, git, Python 3, and for the ARM targets on an x86-64 machine, qemu user emulation.
./build.sh # all targets
./build.sh arm x64 # the named ones
scripts/assemble-plugin.sh # dist/rtlsdr_radio/: the plugin with its binaries
scripts/package-plugin.sh # dist/rtlsdr_radio-<version>.zip: what a player installs
scripts/test-plugin.sh # the test suiteA build runs in the target's build image with no network: the upstream sources are fetched once, at the commits named in the *.lock files, when the image is made. Every binary is checked afterwards: it must be built for the target's architecture and must start, and fn-rtl-gain must get its measurements right on a signal it makes up.
flowchart LR
upstream["Upstream sources<br/>at locked commits"] --> image["Build image<br/>per target"]
image --> build["Build<br/>(network off)"]
own["Sources in the repository<br/>(DAB decoder, gain tool)"] --> build
build --> checks["Checks: architecture,<br/>start, self-test,<br/>reviewed warnings"]
checks --> components["Components<br/>in the registry"]
components --> zip["Plugin package<br/>(zip)"]
plugin["plugin/"] --> tests["Test suite"]
tests --> zip
zip --> prerelease["GitHub pre-release<br/>(Preview channel)"]
prerelease --> store["Volumio plugin store<br/>(Beta, then Stable)"]
| Workflow | When | What |
|---|---|---|
ci |
every push to main, every pull request |
checks the plugin's JavaScript and runs the test suite |
components |
when a component's source or build changes | builds the binaries for all four targets and keeps them, keyed by their content, in the project's container registry |
release |
a tag v<version>
|
tests, fetches the built components, packs the plugin and publishes the ZIP as a pre-release on GitHub |
Pre-releases on GitHub are what the Preview update channel offers; see Updating the Plugin. Versions for everyone are published through the Volumio plugin store.
The notes of each version are kept on the Changelog page of this wiki; a release takes its notes from there.
What the plugin is tested on and how its figures were measured is described under Test Setup.
Reports and suggestions are welcome in the community thread. The Station Manager's HTTP interface is described on the Station Manager API page.
FM/DAB Radio for Volumio · Source · Community thread · GPL-3.0
Using the radio
- Installation
- Getting Started
- Playing Radio
- Scanning
- Gain, Frequency and Loudness
- Artwork and Metadata
- Station Logos
Managing it
Hardware
Help
Reference