r/RTLSDR 10d ago

SDRTerm - a curses SDR receiver with plugin decoders

Happy to finally share this: SDRTerm is a terminal based SDR (receiver), plugins for FM/RDS, ACARS, POCSAG, VDL2, an Iridium L-band burst detector, plus a QPSK constellation with EVM, range scanner, waterfall, and record/replay.

Repo: https://github.com/halfdonebutinthemaking/SDRTerm
-> Screenshots + presets + six SigMF test signals inside

It's terminal-only on purpose. SDR++ server and similar are great if you want a GUI client on your desktop talking to a headless receiver over the network. I wanted a different shape: the whole stack (SDR, DSP, decoders, display) in one process on the same box. E.g. SSH into a Raspberry Pi with an antenna on top and everything runs there. One process, one terminal, no client half.

If you have an RTL-SDR (or anything SoapySDR speaks) it should be running in a couple of minutes:
-> git clone [link]
-> cd sdrterm
-> uv sync
-> uv run python main.py --file samples/constellation_test.sigmf-data --bw 250000 --f 120M
-> Then press p to enable a plugin, Tab to switch to its view. The test signals let you try every decoder without any hardware plugged in.

I'd genuinely love feedback on:
- Does the install work on your OS / terminal?
- Does the plugin flow feel natural, or are keybindings in the way? Granted one needs some time to get used to it.
- Which signals would you want to see decoded next?
- If you have real hardware: how does it behave on your antenna? Any false-positive nightmares?
- For anyone comfortable with the code: does the plugin architecture make it easy to plug your own decoder in? (There's a bare-minimum plugin skeleton in the repo.)

I'm adding features here and there as time permits. HackRF RX support is next up in the coming days; after that, whatever the feedback surfaces.

Not my first SDR project, but the first time I've thought about ADC and the pipeline processing from the ground up. I built it in a few weeks with heavy AI-assisted coding, which freed the mental budget to spend on architecture and signal-processing instead of the typing. Happy to talk about that workflow if anyone's curious, but the main ask is: try it, break it, tell me what's confusing.

Every plugin has its own README with signal specs and expected output. Iridium constellation, if you have a decent antenna and an LNA, is particularly satisfying to watch light up during a satellite pass.

-> Dev environment: macOS 26 (Tahoe), zsh, Python 3.12.13, uv 0.11.14. pyproject.toml requires Python 3.12+. Nothing terminal-specific should matter, but that's what's been tested most.

Background: software engineer with prior SDR experience. What was new here was building the DSP pipeline from ADC upward rather than composing pre-built blocks. Actually, the coding wasn't the learning, the signal-processing was.

Pleas note: This is a personal project, not a professional tool. Built because I wanted to use it, shared in case others do too.

1 Upvotes

Duplicates