Tagged: RDS

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.

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.

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.

Wavesink Plus: Android RTL-SDR App with FM+RDS/DAB+/DRM+ Decoding

Wavesink Plus, the paid version of the trial version of Wavesink has been released on Google Play. Wavesink Plus is an Android app which has FM+RDS, DAB+ and DRM+ receiving and decoding capabilities when connected to an RTL-SDR dongle via a USB OTG cable.

We gave Wavesink Plus a test today on a HTC One X Android phone and were pleased to discover that it works perfectly. The user interface has been tidied up from previous versions, and DAB+ has been added. There is now also auto tuning functionality, which will automatically find a station.

In further testing we found that the latest version of Wavesink was fast and snappy and was able to load DAB+ stations quickly, and decode them with clear audio. FM radio also sounded clear and RDS information loaded quickly as well.

Download the trial version here and buy the full version from this link.

Wavesink Plus Decoding DAB+
Wavesink Plus Decoding DAB+

RTL-SDR and RDS Spy with HDSDR

On YouTube user pe1etr shows us a video where he uses his RTL-SDR combined with HDSDR, Virtual Audio Cable and RDS Spy to decode a distant RDS signal. RDS Spy is a free advanced software program capable of decoding weak RDS signals contained in many broadcast FM radio stations.

RDS stands for Radio Data System and is a digital signal embedded into broadcast FM signals. It is used by radio stations to display the name of the radio station and current song playing on an LCD screen.