[PLUGIN] FM/DAB Radio - RTL-SDR

Hey @arkimede,

Thanks for the detailed feedback. Let me address each point:

Frequency Detection in Italy

Good timing - I just released v1.3.8 beta which includes FM Regional Standards with an Italy preset (87-108 MHz, 50kHz spacing, 50us de-emphasis). This should resolve the frequency offset issues you experienced. After installing the beta:

  1. Go to plugin settings
  2. Enable “FM Radio Region” section
  3. Select “Italy” from the dropdown
  4. Save and refresh page
  5. Clear your FM stations and rescan

The scan will now detect stations at their exact frequencies (95.75 MHz will remain 95.75 MHz, not round to 95.8 MHz).

Track +/- Frequency Adjustment

I understand the appeal, but implementing granular frequency control through Volumio’s transport buttons would require significant architectural changes for relatively limited benefit. The Station Manager web interface (port 3456) provides a more practical solution:

  • Export your stations to CSV
  • Edit frequencies in any spreadsheet application
  • Add stations manually with exact frequencies
  • Import the updated list

This gives you full control over your station list without the complexity of real-time frequency stepping.

Manual Tuning Interface

The Diagnostics section has a “Test FM Frequency” field where you can tune to any frequency manually. For building your station list, the CSV import/export workflow is more efficient than tuning station by station.

RDS Station Name Display

The display name priority is: customName (user-defined) > RDS PS > scan name. If you see the archived name rather than RDS:

  • RDS decoding takes a few seconds after tuning - wait for the name to update
  • Some stations broadcast weak or intermittent RDS
  • Check signal strength - weak signals may not decode RDS reliably
  • The station may not broadcast RDS at all

The RDS PS name should appear automatically once decoded. If a station consistently shows the wrong name, you can set a custom name via the Station Manager.

I recognise FM could use more attention - DAB has been the primary focus. The regional standards in v1.3.8 are a step toward better FM support.

Kind Regards,

3 Likes

I’m getting not found when trying to wget : https://github.com/foonerd/volumio-plugins-sources-bookworm/tree/RTL-SDR/rtlsdr_radio

why don’t you use the plugin store?

Because it’s not there and I read the readme at the start that said:

Are you running Volumio V3 instead of V4?

1 Like

I’d attempted to install with my current version and it failed so I did a factory reset because it wouldn’t let me update due to changes that I’d made, or so it said and updated to the latest version.

You need to download V4 and perform a clean install. You can’t run an OTA update to get from V3 to V4.

It can’t be installed on volumio 3.xx
Only for volumio 4

So this plugin isn’t available at all for V3?

Nope. It’s only available for V4.

I updated to 4 and now can’t install plugins because I’m not logged into my Volumio…yes my time is off by 20 hours and I don’t have time for all this crap. This place is a joke. I’m off to picoreplayer.

@J.P.Goose

Just a small remark. With your rather childish response, you’ve managed to insult quite a few people who voluntarily spend their free time helping others, which is an impressive achievement, though probably not the intended one.

If Volumio already feels too complicated, I’d also suggest a quick attitude check before switching to piCorePlayer, as it require much more knowledge.

1 Like

@J.P.Goose

i am also very interested on how to do an easy DAB and bit perfect setup with PiCorePlayer and would much appreciate if you would let me know how you do it. That is sounding extremely promising.

i guess also @Wheaten would be very interested in…

Hey @J.P.Goose,

Let me clarify a few things here.

The wget command in the format you tried will not work - that URL points to a GitHub web page, not a downloadable file. GitHub requires either git clone or downloading a ZIP from the web interface. This is very common mistake and how to retrieve GitHub assets - there is plenty of knowledge in the public domain, easy to find.

Regarding MyVolumio: using a MyVolumio account is your choice. Without it, plugins can still be installed manually via SSH. This has been explained in community threads many times - search is your friend here.

Regarding Volumio 3: I do not have plans to backport this plugin. Raspberry Pi Foundation wiped their repositories for Buster-based systems, which makes maintaining V3 compatibility impractical.

For those who want to install manually without MyVolumio, here are the steps:

git clone https://github.com/volumio/volumio-plugins-sources-bookworm.git --depth=1

cd volumio-plugins-sources-bookworm/rtlsdr_radio

# Install plugin
volumio plugin install

# Restart Volumio
sudo systemctl restart volumio

Note: This plugin is in the official Volumio plugin store for V4 users. The manual steps above are for reference only.


@Wheaten and @Josh2000 are volunteers spending their free time helping in this forum. Calling the place “a joke” after receiving accurate guidance is what made it quite personal.

Kind Regards,

Hi @nerd

I update to 1.3.8, thanks for add the 300kHz Best audio function, it sounds great.

FM Radio Region I choose Europe because Taiwan use that.
I had manual add 22 FM station with description and it works well.
Then I tried the FM station scan but it search nothing if I set FM gain = 20,
Then I use FM gain = 100 and very-sensitive 3dB,
it add about 21 stations,
because it is added, so I can compare with the correct station,
there is some shift about 100 to 300 kHz shift

attach the log file of scan FM
http://logs.volumio.org/volumio/NmAu47E.html.

Thank you.

Hey @dewen,

Thanks for the detailed feedback - glad the 300kHz audio mode sounds good.

The 100-300 kHz frequency shift you observe is likely a region setting issue. You mentioned selecting “Europe” for Taiwan - but Taiwan uses 200kHz channel spacing (same as Americas), not 100kHz like Europe.

Try changing your FM Region to “East Asia” instead:

  • East Asia: 88-108 MHz, 200kHz spacing, 50us de-emphasis

This should align the scan to detect stations at .1, .3, .5, .7, .9 MHz positions rather than the 100kHz grid Europe uses.

One important point about RTL-SDR hardware: unlike dedicated FM tuner chips, SDR dongles have no signal quality measurement built into the hardware. The scan uses rtl_power to detect energy peaks across the spectrum - it finds “something is transmitting around here” rather than locking onto a precise carrier frequency. The regional channel spacing setting tells the scanner which frequency grid to snap detected peaks to.

This is why Station Manager has editable frequency fields. Workflow:

  1. Set correct region (East Asia for Taiwan)
  2. Scan finds approximate frequencies
  3. Compare against known station list
  4. Fine-tune in Station Manager if needed
  5. Save

Your 22 manually added stations work perfectly because you entered the correct frequencies. The scan is a discovery tool - Station Manager is where you dial in precision.

Kind Regards,

Hi @nerd

Thanks for the help.
Taiwan’s FM Radio Station start from 88.1 with 0.2 spacing as you said.
( 88.1, 88.3, 88.5, 88.7, 88.9, 90.1…etc )

So I set region to East Asia

Then I scan the radio, but it seems start with 88.0 ( not 88.1 ),
and it find 88.0, 88.2, 88.4, 88.6, 88.8, 89.0…etc
but it should start and find 88.1, 88.3, 88.5, 88.7, 88.9…

I think if it can scan .1 .3 .5 .7 .9, not .0 .2 .4 .6 .8,
it should find the correct station.

Thank you

Hey @dewen

Thank you for reporting this with the screenshots - that made the problem very clear.

The scan was starting at 88.0 with 200 kHz steps, producing 88.0, 88.2, 88.4 etc. Your stations in Taiwan sit at 88.1, 88.3, 88.5 - the grid was offset by 100 kHz.

v1.3.9 adds a new “FM Scan Offset” setting in the FM Region section. To fix this for your setup:

  1. Open FM Region configuration
  2. Set FM Scan Offset to 100 kHz
  3. Save
  4. Rescan FM

This shifts the scan grid so it starts at 88.1 instead of 88.0, and the frequency rounding now follows the same alignment. Your stations should appear at their correct frequencies.

The offset setting is available for all regions - it is not Taiwan-specific. Any user in any country where the default grid does not align with local stations can adjust this.

v1.3.9 will be available in the Volumio plugin store shortly.

Kind Regards,

2 Likes

Hi @nerd
Just installed v 1.3.9, set Offset to 100kHz,
now it scan 88.1, 88.3, 88.5…
Thank you.

But the scan accuracy still not so good,
I think it maybe due to the limitation of fn-rtl_fm ?
If I know the parameter used to scan FM in terminal, maybe I can do some test.

Thank you.

Dear Volumionauts,

FM/DAB Radio Plugin - Version 1.4.0

This is the largest update since the plugin first appeared here. The reception side has been re-engineered around one idea: the plugin measures instead of asking you to guess. No more hunting for a gain, a PPM value or a scan sensitivity that happens to work.

TL;DR

  • Gain is measured, for FM and for DAB. Nothing to set.
  • The FM scan is new: it finds stations, on their right frequencies, not signal strength.
  • Cheap dongles do DAB without a PPM value. Leave it at 0.
  • FM is now as loud as DAB and your music.
  • Station logos for DAB and FM, steadier artwork, DAB slideshow pictures.
  • A proper wiki: Home · foonerd/rtlsdr-radio Wiki · GitHub

The Curious Case of the Blue Dongle - solved

Last November I wrote that cheap dongles need a PPM correction for DAB, and to try values between 40 and 60. That was a workaround for a fault I had not found. The DAB decoder is meant to find a dongle’s frequency error by itself. On every ARM board, which is every Raspberry Pi, that correction never ran: one flag in the decoder was never given a starting value. A dongle more than about 2 ppm off found no ensemble at all, unless the PPM value you entered was within 2 of the right one.

That is fixed, and so are two faults it had been hiding: with a crystal running fast the sound came in bursts with about a quarter of it missing, and the first lock on a dongle far off frequency was hit and miss. The decoder now follows an error of up to 35 kHz either way (about 140 ppm). Tested with sticks 14 and 51 ppm off, PPM at 0.

@gkkpch: if the blue one is still in a drawer, it should do DAB now.

Measured, not guessed

  • Gain: for FM once per station, for DAB at every tuning, at the highest step the receiver takes without overload. Next to a very strong local station a tuner invents signals that are not on the air; the plugin checks for that and takes the gain down until it does not.
  • FM scan: every channel of the band is measured. A station is a channel whose stereo pilot stands clear of the noise and is still there at a lower gain. Stations land on their real frequencies, signals the tuner made up are not listed, and a rescan keeps what you named, marked or played. About half a minute on a Pi 4 or 5.

@arkimede, @dewen: this is the answer to the scans that found nothing, or found stations 100 kHz off. Please rescan with your region set (@dewen: East Asia with the 100 kHz scan offset, as before) and tell me what you get. How the scan works is on the wiki’s Scanning page.

What else is new

  • FM level: FM was 7 to 11 dB quieter than DAB. It now plays at the same level. Turn the volume down before your first FM station after updating.
  • Station logos published by the broadcasters themselves, for DAB and FM; FM stations are named and found by their RDS code. You can set a logo of your own for any station.
  • Artwork follows the song, not every change of the station’s text.
  • DAB slideshow: the pictures a station sends with its programme are shown. @gfloener, you asked for this in December and I told you it could not be done. It can.
  • When a station cannot be played, the player shows it as stopped and says why. Pause stops a station and shows it as stopped.
  • The station list survives plugin updates, and the Station Manager can update the plugin itself, with a way back to the version before.
  • Every version is built for all four processor families (every Raspberry Pi from the Zero up, other ARM boards, x86-64) and goes through about 170 automated tests before it is released.

Documentation

Everything is in the wiki now: getting started, how scanning and gain work, the Station Manager, a settings reference, troubleshooting by symptom, the antenna guide, the Station Manager’s API, the setup all of this was measured on, and a table of seven dongles measured side by side.

A correction to my advice on dongles

In November I called the RTL-SDR Blog V4 the clear choice and the V3’s DAB inconsistent. Measured side by side on one antenna, that does not hold. DAB was received alike by all seven dongles. On FM the V3 and the Nooelec SMArt came out a little ahead of the V4: 27 and 28 stations found against 23, the V4’s stereo pilots 2 to 7 dB lower. If you have a V4, there is nothing to change; it works well. If you are buying, any of the three will do, and so will a cheap stick. The numbers are on the wiki’s Dongles page.

Updating

  • 1.4.0 has been submitted to the plugin store. Until testing is complete it is listed as beta: switch on Plugins Test Mode at http://<your player>/dev to see it.
  • Coming from 1.3.9 or earlier: create a backup in the Station Manager (Maintenance) first. The update removes the old plugin folder, where 1.3.9 kept the station list; 1.4.0 then restores the newest backup by itself.
  • Afterwards: set PPM Correction back to 0, rescan FM, and mind the FM volume.

Known limits

FM is received in mono. Dongles with tuners other than R820T, R820T2 and R828D have not been tested.

If something does not work, the wiki’s Troubleshooting page says what to include in a report. Thank you to everyone who tested, measured and reported in this thread: it is why this version exists.

Kind Regards,

5 Likes