FM radio bandscan results – including London pirates

This post began life as a breakdown of an FM bandscan and dissolved into thoughts on RDS decoding and possible Raspberry Pi projects. I just wanted to jot down some semi-related thoughts.

Last weekend I popped up to Hampstead Heath to get onto high ground where I played with radios for a bit. One of those radios was my Moto G7 Power, using the built in FM Radio app, which is entirely decent (and I’ve written about using Moto G phones as FM radios before).


When performing an auto scan of available stations, the app spits out a nice list of those stations, some with IDs. Unfortunately there’s no default way to convert this to text, but I found an OCR text grabber which did 95% of the work, and then I just monkeyed with a spreadsheet to sort out any oddities, and this is what I ended up with following an FM bandscan on 21/03/2020 at 1425 UTC:

MHz  RDS Station ID
87.8 | The Rock
88.0 | PULSE UK
88.2 |
88.6 |
88.8 | BBC R2
89.1 | BBC R2
89.6 |
90.2 |
90.6 | ANADOLU
90.8 |
91.0 | BBC R3
91.3 | BBC R3
91.5 | MEGA
91.8 |
92.0 |
92.5 |
92.8 |
93.0 |
93.2 | BBC R4
93.5 | BBC R4
93.8 |
94.9 | BBCLondn
95.5 |
95.8 | Capital
96.1 |
96.5 | [Maritime Radio] – no RDS data decoded
96.7 |
96.9 | Cap XTRA
97.1 |
97.3 | LBC
97.7 |
97.9 |
98.5 | Radio 1
98.8 | Radio 1
99.0 |
99.3 | SELECT
99.5 |
99.8 |
100.0 | KISS
100.6 | Classic
100.9 | Classic
101.2 |
101.4 |
101.8 | BiZiM FM
102.0 |
102.2 | Smooth
102.4 | LONDON’S
102.8 | RDYOUMUT
103.1 |
103.6 |
104.2 | -KRAL-
104.4 | Reel 104.4
104.9 | Radio X
105.4 | Magic
105.6 | PLAYBACK
105.8 | Absolute
106.2 | Heart
106.5 | PROJECT
106.8 | RINSE FM
107.3 | REPREZNT
107.8 | -JACKIE-

Where a station ID was decoded via RDS, it is listed. Where I’ve made it bold and italic, it is believed to be a pirate station. The rest are legit local/national FM broadcasts.

Where there’s no station ID listed, it’s simply because the FM radio app didn’t pick one up in time – some of those blank stations may a) be legit and b) indeed have an RDS stream, it just didn’t get logged in time. Either way, it could be pirate or legit.

A couple of them are stations that I knew had RDS data, and what’s nice about the Motorola FM Radio app is that if you tune to that station and it didn’t already have data, it adds it where possible, and this gets added to the overall list as above. This means that after a full scan, if there are gaps in the data, one can simply tune to the first station with a blank name, and let it play for a few seconds until RDS data comes down – if it has any. – and then use the skip button to move to the next logged station.

It only takes a few seconds for RDS data to appear, or for it to become clear that none is being broadcast. Weak signals inevitably mean the RDS data is corrupted, possibly beyond legibility.

Oona Räisänen could probably explain in quite simple terms exactly how RDS data is decoded and why some stations seem to display RDS data quicker than others. In fact, it’s Oona’s RDS projects that make me think that if I really set my mind to it, I’m probably like 90% of the way to creating a pocket-size, Raspberry Pi Zero-based RDS decoder.

What I think I want is a little device that I can pull out, attach to an antenna, run a quick 1-2 minute bandscan, and in that time, the Pi scans the whole FM band, logging as much RDS data as it can grab, plotting it neatly on a little spreadsheet, which I can then inspect later on.

Better yet might be adding a simple 2-line display (much like a portable radio) where I can see each station being scanned. There are other possible modifications that could be made that would effectively turn it into a usable radio, but I’m thinking more along the lines of a simple logging device.

On the other hand, it might make more sense to do some sort of spectrum grab using SDR where the whole FM band is captured for a few minutes, for later analysis in software. This whole concept blows my tiny mind – and, really, seems less fun than doing actual listening to live broadcasts – though I can absolutely see the appeal and the benefits for logging weak/rare stations when DXing.

Using my old Android phone purely for FM radio

Samsung will be the next major phone manufacturer to enable the dormant FM chips in its devices. The FM chips will be switched on in Samsung’s “upcoming smartphone models,” which will allow users to listen to local radio stations.

via Samsung is the latest OEM to unlock FM chips in new phones | Ars Technica

This recent update is interesting to me at least because my current phone is a Samsung. Of course it means my current model won’t have its FM receiver unlocked (and, in fact, I’m not even sure the UK model has FM functionality, enabled or not).

When I first read a few years ago that most phones’ WiFi/Bluetooth chips also enabled FM reception, but that most manufacturers disable it in software, I was baffled. But I’d lived under this cloud of ignorance for many years and never questioned it.

Before my current Samsung, I had one, and then another newer, Motorola Moto G – cheap and cheerful – which both had FM radio apps built in. And great apps, too! Good reception (as always with smartphones, using the earphone cable as an antenna), and the software is simple yet robust. It covers the basics, like auto-scanning, presets, sleep timer, and even RDS display.

But it also has a really nicely-done record function which not only directly makes an MP3 of the station you’re tuned into (rather than, say, recording the speaker via the mic or something hideous), but also automatically inserts the frequency into the filename when it saves.



The Motorola FM radio app makes for a great companion to pirate radio bandscans in a built-up area.

The presets/memory enables me to check for new stations I’ve not picked up yet, or to check on ones I’ve saved previously. Having a list of saved frequencies is great, and saving some as favourites makes it really easy to navigate a sea of potentially anonymous numbers.

The RDS enables me to get relatively quick station IDs with a decent enough signal (waiting for a twenty minute drum’n’bass mix to finish just on the off-chance the DJ actually name-checks the station is a bit beyond my levels of patience). And it turns out that pirate stations seem to love RDS – it’s rare I’ll find a station that doesn’t at least display the station ID. Some even post the show/DJ info, or a contact number/URL. There’s no easy way to export this data (not even copy and paste), but a quick screengrab will do in a pinch.

And, of course, the record function is fantastic for grabbing clear sample clips really easily. It lets me either record for 30-60 seconds to grab a reference clip, or I can even tune in, hit record, and leave it going with the screen off and audio on mute if I need a longer clip to grab a station ID.

It’s a bit of shame the recording function doesn’t have a buffer – quite often I’ll have heard a vital station ID or something else interesting and wasn’t recording. It’d be amazing to have a 5-second buffer for moments like that. Either way, the files are then saved on the device (or SD card, optionally), labelled and dated, and ready to be listened to on the device or exported to a computer/the web at a later date.

Anyway, now that I use my Samsung as my main phone, I held on to the old Motorola – and I’m glad I did. After a factory reset, and stripping off any unnecessary software (Moto phones run virtually stock Android, thankfully), the phone is a pretty decent pocket FM radio.

Running no other apps and living in airplane mode, the phone has a standby time measured in weeks rather than hours. And that’s if I choose to leave it on between sessions, which I do out of convenience, but could make it last month between charges if I needed to.

Of course it’s an overpowered/over-featured FM radio. But it’s one that lets me do some cool stuff, as well as make recordings, take screengrabs of RDS data, and make notes on the fly.

One next step would be to do some field tests – to compare the phone’s sensitivity with that of a ‘good’ FM receiver. Anecdotally, it certainly feels like the phone picks up a decent number of signals, locks onto them well, and performs pretty well. But until I’ve done some side-by-side tests, I can’t be sure. (Ironically, my ‘good’ FM receiver lacks both RDS and any recording function.)

Beyond that, I can also try again with the DVB-T dongle I’ve got for scanning other frequencies. But that necessitates some fiddly dongle/power/adapter compromises, as well as needed a more robust antenna. Simply using the phone as an FM radio with some cheap earphones and built in software is working brilliantly.