Broadcast FM channels can often contain additional subcarriers hidden within the bandwidth. A common subcarrier is Radio Data System (RDS), and this is what provides song and radio station text information to your radio.
Another less commonly seen subcarrier is the Subsidiary communications authority (SCA), which is a separate audio channel hidden within the broadcast FM signal. SCA is typically used for niche radio programs, elevator music, music for doctors offices, and niche services such as reading for the visually impaired. In the past you needed a special hardware SCA radio to receive these channels, however receiving these channels with an SDR is relatively simple. Not all broadcast FM stations will have an SCA service, but the video shown below explains how to find one.
Over on YouTube channel Double A has uploaded a video showing how to decode these SCA subcarriers using an RTL-SDR, two SDR# instances and the MPX Output plugin. The idea to to use a virtual audio cable to pipe the FM Multiplex (MPX) audio output from one instance of SDR# to another. In the second SDR# instance you can then directly tune into the SCA channel. In his video he also explores the FM MPX spectrum, showing the different components, and also how to install and use RDS Spy for decoding RDS.
Tuning an FM Audio Subcarrier (SCA) & Decoding RDS Data with RTL-SDR USB
On the Google Play store developer Knowle Consultants have recently released a new free application called "FM Radio (RTL-SDR)". This is a simple app that allows you to use a connected or remotely networked RTL-SDR to tune into preset broadcast FM stations. People wishing to use an Android enabled head unit in their car may be interested in the app as it makes tuning into broadcast FM stations easy just like it is on a standard radio.
They also have a similar app called "Airband Radio (RTL-SDR)" which provides a similar simple interface for tuning into airband presets.
Thank you to Evuraan for writing in and sharing his new browser based HD Radio / NRSC-5 interface for the nrsc5 decoder which he has called yellowShoes.
NOTE: We have been informed by some users that yellowShoes may contain a Trojan virus. This is likely to be a false positive which is a very common problem with antivirus software falsely detecting viruses on newly released niche software via heuristics. We have removed the above link out of an abundance of caution, however if you wish to continue the yellowShoes Github is here. If you want the software, but are concerned you can check the code compile it yourself.
NOTE UPDATE: The author of the software has contacted us regarding the virus concerns and written "I wanted to write in clarify that it is indeed a false positive, please see https://groups.google.com/g/golang-nuts/c/Au1FbtTZzbk and also https://golang.org/doc/faq#virus - this false positive occurs when you cross compile go binaries - This is a common occurrence, especially on Windows machines. Commercial virus scanning programs are often confused by the structure of Go binaries, which they don't see as often as those compiled from other languages."
HD Radio is a digital broadcast protocol replacement for analogue broadcast FM. It is only used in North America and is easily recognized as the two rectangular blocks on either side of a broadcast FM station signal on a spectrum analyzer/waterfall display. Together with an RTL-SDR and theori's command line nrsc5 decoder, the HD Radio signal can be decoded and listened to. Evuraan writes:
I wrote yellowShoes - an nrsc5 player which you can control from your browser. (Should work on Windows, Linux etc. Player F/E also works on Android Phones.)
Its sole dependency is that the nrsc5 binary must be available in the path.
Thank you to "LikWidChz" for submitting his tutorial on receiving and decoding multiple NRSC5 (HD Radio) channels with the help of GNU Radio, a HackRF and the NRSC5 decoder. He writes:
I wanted a way to utilize GnuRadio for working with HD radio. There are no decoder blocks from within GnuRadio to perform this decoding without an external application. This write up is how I was able to split up some signal and supply NRSC5 what it requires to perform the decode.
My goal was to capture some slice of spectrum and "channelize it" so I can perform multiple HD radio decodes at once.
In this linked zip file we have uploaded his GRC file, and his tutorial PDF, which fully explains each GNU Radio block used, and how to use the NRCS5 decoder along with the flowgraph. He also notes that if anyone wants to get in touch with him he is idling on IRC in #gnuradio and ##rtlsdr on freenode under the nickname "LikWidChz".
Guglielmo implements a simple FM and DAB receiver based on Qt and the Qt-dab and sdr-j-fm packages.
The primary reason it is being developed is there is a lack of media centre quality Open Source Software Defined Radios: most of the packages out there focus more on hobbyist features, such as signal and content monitoring, leaving out media features like a volume slider or MPRIS control.
Yes, I have blown the ribbon tweeter fuses on my maggies because my previous go to SDR DAB receiver started at full blast, and I run my media centre headless: I don't really want to scramble for a VNC session when I want to stop the music, when I could simply use KDE connect on my phone.
There is also a distinct lack of FM SDR receivers, which is disappointing, since, at least in the UK, for reasons of cost, most stations transmit at a fairly poor bitRate, if not downright in mono, and FM stations seem to still be a better proposition in terms of sound quality.
Recently we've seen on GitHub the release of NRSC5-DUI, a fork of NRSC5-GUI which was the first fully functional RTL-SDR compatible HD Radio decoder that we posted about back in 2017. HD Radio is a digital broadcast protocol replacement for analogue broadcast FM. It is only used in North America and is easily recognized as the two rectangular blocks on either side of a broadcast FM station signal on a spectrum analyzer/waterfall display.
According to a Reddit post by u/andrewfer000, NRSC5-DUI includes several upgrades from prior forks, including "better audio processing, better channel switcher, more station information, the option to pull album art from Discogs (currently broken due to Discogs anti-bot), better map displays, cleaner code, and optimizations for Python 3.9".
If listening to audio is not your thing, we also wanted to note that HD radio stations operated by iHeatMedia broadcast live traffic and weather radar data within their HD radio signal as well. With NRSC5-DUI this can be easily decoded and plotted on a map.
When listening to radio stations operated by iHeartMedia, you may view live traffic maps and weather radar. The images are typically sent every few minutes and will fill the tab area once received, processed, and loaded. Clicking the Map Viewer button on the toolbar will open a larger window to view the maps at full size. The weather radar information from the last 12 hours will be stored and can be played back by selecting the Animate Radar option. The delay between frames (in seconds) can be adjusted by changing the Animation Speed value. Other stations provide Navteq/HERE navigation information... it's on the TODO 'like to have' list.
A few days ago the developer of SDR# added a very useful AM Co-Channel canceller plugin, and just today he has also added a new FM Co-Channel canceller. A Co-Channel canceller allow a user to remove an interfering station, allowing a buried station to be received cleanly. This is especially useful for DXer's where strong local and weak distant overlapping stations are likely to be received at the same time. The plugin works with all SDR# compatible SDRs including the RTL-SDR.
On a related note, we wanted to point out that recently the Airspy website and downloads have been getting flagged by some antivirus software, however we believe these detections to be false positives caused by the very frequent update schedule of SDR#.
Over on Twitter we've seen a couple of videos from @K7al_L3afta demonstrating how well the new FM Co-Channel canceller works.
Earlier in the month SDRplay released SDRuno V1.4 RC1. This is a beta version that amongst other changes now has the capability to run "plugins". Plugins allow developers to easily create modules that extend the functionality of the SDRUno software. For example right now there is a plugin included with V1.4 RC1 that allows users to listen to DAB audio. Up until recently plugin functionality has only been available in Airspy's SDR# software, so it's good to see SDRuno finally including this feature too.
Over on the Techminds YouTube channel Matthew has uploaded a short video where he tests out the new plugins feature. First he tests out the DAB decoder, noting that the CoreAAC codec needs to be installed first separately. Later he tests the second plugin which is an audio recorder that allows users to record audio to MP3.