“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:
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:
- Open your /etc/modprobe.d folder as an administrator.
- Create a new file ‘blacklist-rtl.conf’ and add this one line:
blacklist dvb_usb_rtl28xxu - 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 .. make sudo make install