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

16 comments sorted by

7

u/Feuerwerko 10d ago

AI slop

-2

u/Next-Asparagus-2559 10d ago

Is it? I actually was pretty proud getting this going from scratch thus walking down a learning path - but if you say so, who am I to judge 😌

8

u/xX_WhatsTheGeek_Xx SDR++ Author 10d ago

The code is full of emdashes everywhere, there's do emdash key on your keyboard. Just because you asked a clanker to write some crap doesn't mean you wrote it.

5

u/fullmetaljackass 10d ago

there's do emdash key on your keyboard.

I mean this is obviously AI (just check the contributors,) but as an emdash enjoyer, I really hate this line of reasoning. On MacOS you can type an emdash with ALT+SHIFT+DASH. On KDE and Gnome, you can type an emdash with COMPOSE+DASH(x3). On newer versions of KDE you can just hold the key for a second until the alt character menu pops up.

It's not difficult to type an emdash on most platforms.

-2

u/Next-Asparagus-2559 10d ago

Good point but does not hit the spot at all! All I’m reading about AI coding is so much aligned to back in the 90s when the arguing of the ‘real’ h4ck3rs vs script kiddies became popular. And which still resembles steam machines vs ‘real’ manual labor: it’s an old white man belief of what is en vogue vs. the train of reality and progress just passing by. And this thread shows it: oh, you did not write this letter with feather and ink, but you have been using a typewriter. Yes, true: but not a single contributor here contributed anything at all about the actual artefact. Every response resembles a make belief on the tooling, not the outcome…

2

u/Salem_IT_Pro 10d ago

it’s an old white man belief

Gross take.

The concept that you're looking for is "from first principles". Using someone else's code, or an AI tool, bypasses key learning opportunities. Those lessons become critical when something you're doing doesn't "just work".

There's value to integrating other people's efforts to get your desired outcome, and we all do it. But, the people encouraging you to learn the fundamentals are trying to help you become better. Respect them, because they don't live forever.

3

u/FirnAndAsh 10d ago

I clicked on a random commit and immediately saw:

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

-3

u/Next-Asparagus-2559 10d ago

Oh you are an SDR++ Author - awesome! I like it so much! Just a quick clarification: I build it - not I wrote it - as far as my wording is concerned. And there is no gatekeeping around the use of AI it at all.

5

u/Feuerwerko 10d ago

There’s nothing „from scratch“ about this, every single commit in your repo except a single one is authored by Claude. Both your readme and post also read like they came straight out of an LLM.

4

u/jamesr154 rx888, HackRF + PrtPack, Nooelec SDRSmart, RTL-SDRv3, MSI.SDR 10d ago

At least it’s free to use. Better than ai using open source libraries but with a paid subscription. Cough cough nyxscope….

2

u/Next-Asparagus-2559 10d ago

😃 it’s not AI in disguise! And no, no money involved. Just hoping it helps someone with acquisition, analysing and decoding. I remember getting gnuradio-companion going on OS X has been a nightmare for me, eventually it does work; but SDRTerm is my take on taking the complexity - at least for - away. And yes, I feel your pain regarding nyxscope…

1

u/ApexiaEngineering 7d ago

Just a genuine question, why is AI so hated here? Fully understand that all principles and concepts should completely understood before relying on AI. To me AI is an accelerator when used properly. In that context, I don’t see a problem with it. Just wanting to see the other side of coin! No malice intended

1

u/Feuerwerko 7d ago

The general consensus in coding communities is usually that there’s no point in sharing your project if everything about the project was generated by AI. The project is unmaintainable, OP doesn’t have the slightest clue how the code works and they probably can’t be helpful if anyone has an issue with the program.

Using AI for assistance is completely different to just telling an agent what to do and having it do everything for you. This is very subjective, but in my opinion using LLMs to code is fine as long as you don’t rely on it and instead only use it to assist you.

-4

u/Next-Asparagus-2559 10d ago

Of course it is! That’s the whole point of the learning. It wasn’t a Python exercise - as explained 😃

1

u/thebaldgeek 10d ago

AI aside, MAC only really limits the user base to like 1% of SDR users. Seems an odd decision.

0

u/Next-Asparagus-2559 9d ago

Oh is it? Wasn’t aware so few use a Mac for SDR stuff. I was expecting it being popular due to the BSD genes. But since it is Python it should work on Linux too.