Hey John,
Debian Developer, Amateur Radio nerd (K3XEC), and Go team member here.
I use rtlamr. I'm not a very good sponsor right now, but I can step in if no one else has bandwidth; my time is a bit more limited than I'd like, and it'd be cool to have rtlamr in the repos. It'd certainly help save me time too! Give it a few days to see if anyone here has bandwidth, and if not, send me your dsc or git repo for review.
On your other points:
rtlamr talks to the rtlsdr via rtltcp (rtl_tcp(1)). It's a simple protocol I documented at
https://hz.tools/rtl_tcp/ . I've also written a daemon for myself while learning about radio (not released yet; for a few reasons) that will serve a few radios over rtl_tcp; namely, my Ettus B210/B200mini, LimeSDR, RTL-SDR, HackRF, PlutoSDR, an airspyhf, or hilariously, another rtl_tcp endpoint (yo dawg).
The hardest part of this exercise (and to be clear; it's straightforward), are two big things:
- accepting rtl_tcp commands (such as AGC enable, Set Gain) - which don't always translate 1:1. For instance ,some radios don't have automatic gain control, so the command isn't supported; but the client will expect it to be enabled. Other radios (like the HackRF, for instance) have multiple gain stages -- which you can kinda cobble together if you pretend to be a RTL-SDR E4k (
https://hz.tools/e4k/) in the rtl_tcp header, and store the IF gain stages in memory, compute the net gain, and scale the gain from min to max -- proxying that into the real radio's gain from min to max.
paultag