Tagged: RDS

Using an RTL-SDR to Decode Broadcast FM RDS Data on Android

Over on YouTube Double A Labs has posted a new video demonstrating how to use an RTL-SDR and Android device to receive broadcast FM stations, and to decode any associated RDS data. 

In the video Double A uses the SDR Touch Android app and the Advanced RDS function to show the RDS information. He goes on to explain the various pieces of information RDS data provides including clock time, active RDS groups and alternative frequencies.

Tune broadcast FM radio and decode Radio Data System (RDS) information using your Android phone and an RTL-SDR USB (see parts list below). RDS can include station identification, song name, the current time for a receiver to sync its clock, alternative frequencies the same program is on, and more!

Tuning FM Radio & Decoding RDS Data on ANDROID using RTL-SDR USB

Receiving the ‘Hidden’ Broadcast FM SCA Audio Subcarrier with an RTL-SDR and SDR#

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

Experimenting with Broadcast FM RDS (TMC, RT+) and SCA Audio

A typical broadcast FM station can sometimes contain “hidden” subcarriers embedded within the main signal. The subcarriers contain data or audio services.

An example of a data subcarrier hidden within broadcast FM is the “Traffic Message Channel” (TMC). The TMC contains traffic data, and is used on GPS devices that advertise as having live traffic capabilities. TMC data is encrypted so that it can be sold, but is very easily broken. Another data service is RDS-RT+ data which transmits song information, for radios that can display it.

An example of a voice subcarrier (SCA/ACS) might be niche radio stations, such as ethnic stations, elevator music, music for doctors offices etc. Usually a specialized radio is required to receive a SCA channel. In a previous post we showed how a user was able to receive SCA on Windows.

Over on his blog Gough Lui has been investigating the broadcast FM subcarriers in his home town of Sydney, Australia. In his post he looks at TMC, RDS-RT+ and SCA subcarriers and explains a bit about what they are and how they work. He also goes on to receive and decode the subcarriers with an RTL-SDR, gr-rds and GNU Radio. While Gough doesn’t bother to decrypt the TMC service, he can still see when an event occurs and what the even was. Without decryption he just doesn’t know where the location on the event is. For SCA he wrote a GNU Radio program to extract the audio subcarrier and was able to decode audio from a local Indian station for migrants.

SCA GNU Radio Decoder
SCA GNU Radio Decoder

Using an RTL-SDR and Broadcast FM Radio RDS Signals to improve WiFi Networking

The performance of WiFi networks can depend heavily on how crowded the WiFi channels are in your area. For example when your neighbours start streaming a movie over their own separate WiFi network, it can cause your own WiFi connection to slow down. This happens because generally separate WiFi networks do not collaborate with one another, and when two packets are sent on the same channel at the same time, they collide causing no packets to get through.

There are several methods that attempt to stop collisions, but none are very efficient because WiFi nodes are not synchronized to one another. If each WiFi node could be synchronized to a common reference time, then avoiding collisions is made easier.

Marcel Flores, Uri Klarman, and Aleksandar Kuzmanovic from Northwestern University have been working on this idea and have come up with a system they have termed Wi-FM which is based on FM RDS signals. Many FM radio stations transmit a digital Radio Data System (RDS) subcarrier on their broadcast frequency. This RDS signal is often used to simply display information on the radio such as the station name and current song playing.

Since each nearby WiFi node should be able to receive the same RDS signal at the exact same time, it can be used as a common synchronization signal. Then once synchronized each WiFi node can listen to the other nodes and work out what their transmit scheduling is like and then optimize their own transmit schedule.

In their prototyping they used an RTL-SDR dongle connected to a PC running GNU Radio. The GNU Radio program decodes the RDS signal and the resulting information is sent to the Linux kernel which handles the WiFi transmit schedule processing.

This story was also covered on Hackaday.

WiFM radio processing path.
WiFM radio processing path.

A tutorial on using RDS Spy with the SDR# MPX Output Plugin

Over on YouTube user pe1etr has uploaded a tutorial video showing how to set up RDS Spy and SDR# for monitoring RDS. RDS stands for Radio Data System and is a sub carrier added to some FM broadcast signals which carries information such as the station name, the song/programme playing and other data. Although SDR# decodes RDS stations already, a more powerful RDS decoder and monitoring tool is RDS Spy. To get RDS Spy to work with SDR# you need to use a special plugin called MPX Output, which allows SDR# to output audio that includes the RDS subcarrier, which can then be piped via a virtual audio cable to RDS Spy.

Pe1etr’s video shows how to install the MPX Output plugin, how to set it up with virtual audio cable and how to use it with RDS Spy.

Tutorial: Using RDS Spy with the SDR# mpx output plug-in

New RTL-SDR Radio Data System (RDS) Decoder: Redsea

Signals hacker Oona Räisänen has released on GitHub a new software tool for the RTL-SDR called Redsea. On her blog she explains that Redsea is a Linux and OSX compatible perl based command line Radio Data System (RDS) decoder that uses the rtl_fm tool. Oona’s post explains a little about how RDS works and also explains how her software actually decodes RDS.

The Radio Data System (RDS) is a digital data subcarrier built into some broadcast FM signals. It usually carries information such as the station name and the song currently playing.

RDS Waveforms
RDS Waveform Decoding Steps

Video Tutorial: Hak5 on Decoding RDS with GNU Radio and GR-RDS

Hak5 has recently posted another video continuing their easy to follow series on GNU Radio and the RTL-SDR. In this video they talk about Radio Data System (RDS) and explain how it is a digital signal that is embedded in broadcast FM signals. They then download GR-RDS, a GNU Radio based RDS decoder program and use it to decode a local RDS signal.

Decoding Digital Subcarriers with a $20 SDR, Hak5 1602

GR-RDS: An FM-RDS Receiver for GNU Radio which supports RTL-SDR

GR-RDS is a GNU Radio program which can be used for the decoding of FM RDS data with the RTL-SDR. It has recently been updated to support GNU Radio 3.7.

RDS is an acronym for Radio Data System, which is used in FM radio transmissions to embed information such as radio station and programme/song information. Some conventional FM radios display this information on an LCD screen.

One the authors of GR-RDS has also recently posted a video on YouTube showing it in action with an RTL-SDR source block.

FM RDS Reception with GNURadio and RTL SDR