HD Radio waveform

Listening to HD Radio with an SDR

“HD Radio” is the technology by which US radio stations broadcast digital audio along with their regular analog signal. Standard FM radios only receive the analog signal and ignore the digital data. You need an HD Radio to listen to the digital audio. HD radios are most popular as features in newer automobiles, but adoption outside of car radios, as well as awareness by the public has been underwhelming.

The “HD” in HD Radio does not stand for “high definition.” In fact, Ibiquity, the company that developed (and trademarked the name) HD Radio, claims that HD doesn’t stand for anything. For us hobbyists that routinely use SDR (software defined radio) to look at the waveforms of broadcast radio, we have seen the HD Radio signals as two rectangular blocks of data alongside a station’s main signal. However, since HD Radio uses a proprietary protocol, we have not been able to decode or listen to this data.

On June 9, 2017, a cybersecurity startup based in Austin, TX named Theori, posted a full description of how HD Radio works along with their open source software implementation using a $25 RTL-SDR radio. (They utilize the official government name for HD Radio, “NRSC-5.”) Finally, we now know the mysterious encoding for this digital system, and it turns out that it is a slightly modified version of HE-AAC.

If you are looking for a fun project, you can use Theori’s code on GitHub to create your own NRSC-5 digital radio. I followed the instructions and with just a little extra troubleshooting, I was able to get it to work. Here is what the screen output looks like when you are successfully decoding NRSC-5 audio:

NRSC5 console output

Here are some notes on my setup:

  • I used Ubuntu Server 14.04 (no UI) on a VMWare virtual machine. 8GB of RAM and 2 processors. Make sure your machine (virtual or not) produces audio before proceeding with the setup. I used “speaker-test” for this purpose.
  • Be sure to install all the dependencies first. You can use a package manager such as apt-get to do the installs.
  • To do the build of nrsc5, first learn how to clone a repository on GitHub. I looked at a few examples and was able to make sense of the build instructions.
  • A good antenna and strong signal are crucial. The digital signal is significantly lower in power than the main analog signal.
  • When trying to run nrsc5, I received a “usb_claim_interface error -6” because my system was trying to load the SDR hardware as a TV device, so I had to blacklist that driver at boot so it would not interfere. Use these steps:
  1. Open your /etc/modprobe.d folder as an administrator.
  2. Create a new file ‘blacklist-rtl.conf’ and add this one line:
    blacklist dvb_usb_rtl28xxu
  3. Save the file, close the editor and restart the machine.

Good luck and I hope you enjoy the digital audio!

Update on 10/31/2018: I was able to get this running on Ubuntu 18 desktop with the following commands:

sudo apt-get update
sudo apt-get upgrade
sudo apt install git
sudo apt-get install build-essential
sudo apt install cmake
sudo apt install autoconf
sudo apt install libtool-bin
sudo apt-get install libao-dev
sudo apt-get install libfftw3-dev
sudo apt-get install librtlsdr-dev
git clone https://github.com/theori-io/nrsc5.git
cd nrsc5
mkdir build && cd build
cmake -DUSE_COLOR=ON ..
sudo make install

Leave a Reply

Your email address will not be published. Required fields are marked *