Tagged: NRSC-5

HDFM Version 2 Released: HD Radio Live Weather and Traffic Data Decoder

Back in 2017 we first posted about KYDronePilot's HDFM software which allows users to display the live weather and traffic data embedded into some HDFM signals.

If you are in the USA, you might recognize HD Radio (aka NRSC-5) signals as the rectangular looking bars on the frequency spectrum that surround common broadcast FM radio signals. These signals only exist in the USA and they carry digital audio data which can be received by special HD Radio receivers. Earlier in in 2017 a breakthrough in HD Radio decoding for SDRs like the RTL-SDR was achieved by Theori when he was able to piece together a full HD Radio software audio decoder that works in real time.

It turns out that some of these HD Radio signals run by iHeartRadio also contain other data streams such as live weather and traffic data that is consumed by HD Radio based car GPS receivers or audio head units in US vehicles. HDRadio.com also write that they can embed other data such as sports scores and emergency messages into the data stream as well.

Version 2 of HDFM has recently been released and is a full rewrite moving from the Python programming language to Rust. It includes the following new features:

  • Blazing fast performance of a fully native application
  • Single binary requiring no dependencies (except nrsc5)
  • Improved modern UI layout (styled like a car audio receiver display)
  • Cross platform: Runs on macOS and Windows (Linux binaries provided, but untested)
HDFM Version 2 GUI

yellowShoes: A Browser Based HD Radio / NRSC-5 User Interface

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.

A discussion thread on Reddit has also been created.

Screenshot of the yellowShoes browser based UI for the NRSC5 decoder.

NRSC5-DUI: An Updated NRSC-5 HD Radio Decoder for RTL-SDR

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.

NRSC5-DUI Screenshots

SignalsEverywhere: Decoding HD Radio with an RTL-SDR

Corrosive (KR0SIV) from the SignalsEverywhere YouTube channel has uploaded a new video that explains and shows HD radio being decoded with an RTL-SDR.

If you are in the USA, you might recognize HD (Hybrid Digital) Radio (aka NRSC-5) signals as the rectangular looking bars on the frequency spectrum that surround common broadcast FM radio signals. These signals only exist in the USA and they carry digital audio data which can be received by special HD Radio receivers. Back in June 2017 we posted about how [Theori] was able to piece together a full HD Radio software audio decoder that works in real time. Later developments saw additional data such as traffic data and weather info extracted from HD Radio too.

Corrosive's video also shows a comparison between analog and HD Radio audio. We note that the "HD" doesn't stand for high definition, so audio quality is not really better than the analog stream. He also notes that the HD Radio data stream can contain multiple audio channels, and often they are not the same as the analog station it surrounds. One example he shows is a Simulcast AM radio station being rebroadcast via HD Radio.

Video Demonstrating the iBiquity HD Radio Decoder

Over on YouTube user Rob Fissel has uploaded a nice video that demonstrates the iBiquity HD Radio decoder working with an RTL-SDR. HD Radio is a terrestrial digital broadcast signal that is only used in North America. It is easily recognized by the two rectangular blocks on either side of a broadcast FM station signal on a spectrum analyzer/waterfall display.

For a long time it was thought impossible to decode due to the closed and proprietary nature of the signal format. But thanks to Theori who was able to reverse engineer and create an HD Radio decoder it has now become possible to decode this into actual audio that you can listen to. In some areas it is even possible to extract the weather and traffic data encoded into some broadcasts from iHeartRadio.

Rob's YouTube video demonstrates him downloading and setting up the HD Radio decoder, then receiving, decoding and listening to some HD Radio stations in his area.

iBiquity HD Radio - RTL-SDR

Displaying Live Weather and Traffic Data from HD Radio (NRSC-5) Signals

Thanks to KYDronePilot for submitting news of his new Python based script called HDFM which displays live weather and traffic data from data that is embedded into iHeartRadio HD Radio (NRSC-5) radio stations

If you are in the USA, you might recognize HD Radio (aka NRSC-5) signals as the rectangular looking bars on the frequency spectrum that surround common broadcast FM radio signals. These signals only exist in the USA and they carry digital audio data which can be received by special HD Radio receivers. Earlier in the year in June a breakthrough in HD Radio decoding for SDRs like the RTL-SDR was achieved by Theori when he was able to piece together a full HD Radio software audio decoder that works in real time.

It turns out that some of these HD Radio signals run by iHeartRadio also contain other data streams such as live weather and traffic data that is consumed by HD Radio based car GPS receivers or audio head units in US vehicles. HDRadio.com also write that they can embed other data such as sports scores and emergency messages into the data stream as well.

KYDronePilot's Python script utilizes Theori's decoder to save all received weather and traffic data maps for a folder. Below is an example of traffic and weather data that he received.

HD Radio Received Traffic Data
HD Radio Received Traffic Data
HD Radio Received Weather Data
HD Radio Received Weather Data

Decoding and Listening to HD Radio (NRSC-5) with an RTL-SDR

HD Radio is a high definition terrestrial digital broadcast signal that is only used in North America. It is easily recognized by the two rectangular blocks on either side of a broadcast FM station signal on a spectrum analyzer/waterfall display. Since HD Radio uses a proprietary protocol, finding a way to decode it has been difficult and so this signal has been inaccessible to SDR users for a long time. Back in February of this year we posted about Phil Burrs attempt, where he was able to create a partial implementation (up to layer 2) of the HD Radio standard, but didn’t get far enough to decode any audio in layer 3.

However, now cyber security researcher ‘Theori’ has created a full RTL-SDR based decoder for the HD Radio protocol. In his post Theori explains that the HD Radio system is split into three layers. Layer 1 finds the signals and does decoding and error correction. Layer 2 is a multiplexing layer, which allows various layer 3 applications to share the bandwidth. Layer 3 is the audio data layer. In his post he explains how these layers work in detail. 

One of the main findings was the discovery of the audio compression codec. Theori found that the codec was essentially HE-AAC with some minor modifications. The modifications were minor enough that he was able to adapt the open source FAAD2 library for HD Radio audio decoding.

Theori’s code is open source and available on GitHub. The code includes the patch to modify FAAD2 for HD Radio and it is automatically applied during the build. A sample file for testing the decoder is also provided and we tested the decoder with the sample and it worked well. The decoding can also be performed in real time and examples of that are also on the git readme.

HD Radio Spectrum
HD Radio Spectrum