Phones with a built-in FM tuner are disappearing, and none of them ever did HD. So I built the radio I wanted: HiDef Radio, a free and open-source Android app that receives HD Radio (NRSC-5) and ordinary analog FM with an RTL-SDR dongle plugged into the phone over USB-OTG. No computer, no rtl_tcp (SDR Driver), no root. The app doesn’t even have the internet permission, so everything you hear and see comes from the antenna.
What it does
- HD1 to HD8 with titles, artists, album art and station logos.
- Analog FM in stereo with RDS/RBDS.
- A real analog/HD blend, like a car radio. The analog plays at once. About ten seconds later the app has measured the station’s analog-to-digital delay and level difference and crossfades to HD without a skip. The HD audio is decoded about 2.5 seconds ahead, so it sees a dropout coming and fades back to analog before the gap.
- A 5-bar signal meter based on quieting, not carrier level. With an RTL-SDR the carrier level mostly tells you what gain the strongest station forced.
- Signal details: MER per sideband, BER, bit rate, pilot level, RDS PI, the measured alignment, and your dongle’s clock error in ppm.
- HD on AM with a dongle that tunes AM. Digital only for now and lightly tested.
What you need
An RTL-SDR dongle, a USB-OTG adapter, and a 64-bit Android phone with Android 8 or newer. I developed it on an RTL-SDR Blog V4, and a tester runs it on a V3.
New in 1.0-beta2: a tester with an older dongle (no TCXO) found that the blend never locked. The app now measures the dongle’s clock and corrects for it. If you have a dongle like that, I’d love to hear whether it works for you.
For the people who build things
The FM demodulator, RDS decoder, aligner, blend and clock correction are plain C++17 with no Android in them, and the repo has a small desktop harness that plays a .cu8 recording through the app’s whole engine. If you work with nrsc5 on Linux or Mac, lift whatever is useful. The app builds on nrsc5.
I need testers
Google makes new developers run a closed test with 12 testers for 14 days before an app can go public, and I’m about halfway there. If you own a RTL-SDR v3 or v4 you’d be doing me a real favor:
- Join the testers’ group: https://groups.google.com/g/hidef-radio-testers (sign in with the Google account your phone’s Play Store uses, then tap “Join group”)
- Become a tester: https://play.google.com/apps/testing/io.github.derek20la.hidefradio
- Install from the Play Store link on that page.
Tell me your phone and SDR model, and the “dongle clock” line from the signal details. I’m especially curious how the blend behaves outside Los Angeles.
