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:
- translating IQ formats; which I've done a bit of documentation on
https://k3xec.com/packrat-processing-iq/ including some exemplar files to
test with to build confidence in your code
- 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