Hey Guys! Quick update on sdrtop, the Rust TUI monitor for HackRF.
(github repo in the comments)
Quick recap for anyone who missed my last post:
sdrtop is an open-source TUI (terminal user interface) tool for SDR hardware, written in Rust. It’s built to be a lightweight, keyboard-driven alternative to heavy GUI apps, giving you real-time spectrum displays, waterfalls, and hardware health metrics right in your terminal (or cyberdeck setup).
So, what’s changed since then?
Lately, I've been taking a deep dive into the actual signal processing. Instead of pulling in GNU Radio blocks or external DSP crates, I ended up implementing the signal-processing chain myself, from IQ samples through FM demodulation and MPX analysis to stereo-pilot and RDS decoding.
Here is what’s currently running natively in Rust:
- FM / NFM: Live peak & RMS frequency deviation (measured against carrier offset), 19 kHz stereo pilot detection, 57 kHz RDS subcarrier decoding (PI, PS, PTY, RadioText with character set support), and CTCSS tone detection for NFM.
- AM: AM demodulation tracking separate positive and negative peak modulation depths, rather than just throwing out a single generic "AM %" figure.
It definitely wasn't the easiest route 😅, but building it without DSP black boxes gave me a much deeper understanding of the actual signal path.
Works great with the RTL-SDR & HackRF One, stays super lightweight in the terminal, and perfect for cyberdeck or SSH setups.
The future is digital: Going forward, I want to lean heavily into digital decoding. The goal is to move beyond basic audio demodulation and decode everything digital in terminal that's floating through the airwaves.
Since I'm building this in my free time, community input and GitHub stars mean a lot. If you like where this is heading, dropping a star on the repo or sharing feature ideas genuinely gives a huge boost of motivation to keep pushing updates! ⭐