+++ Hi Eric,
+++ 73 Alan M0NNB
Yes, reading the protocol spec and banging out your own code is certainly one way to go.
At the other end of the "spectrum", Quisk has a quisk_vna.py app that uses Quisk's existing HL2 suppport (and perhaps other radios too) to implement a VNA in Python. I've never used it, though. I thought I read it was not being actively supported any more, but it certainly would be easier IMO to use that as a starting point rather than starting from scratch. Not that starting from scratch is a bad idea, if that's what you like doing. Of course Jim is a very helpful guy so if you ask some questions he is often willing to respond either here or on the Quisk mailing list.
So far I have not found a generic Python module that streams data to/from the radio.
As directed by Steve I have found that the rudiments of getting data out of the radio are in the HermesLite2 github repo in the software/ft8 directory and in particular the rx4000.py file and the _getdata() method. One needs to keep in mind that it was written for a specific purpose, receiving data from two different HL2s synchronized together, and some of the code in that file that is specific to that task, but it's not hard to figure out what that code is once you take the time to read it all.
I'm just starting down the path of refactoring the code in a way that would not have such linkage to the sync'd radios problem and would support up to 10 RX streams. I'm kind of concerned that unpacking N streams in Python is not a good idea performance wise, but time will tell.
As mentioned, our Wiki on github has a lot of useful references, both in terms of the Protocol itself and/or Software that implements the protocol.
Regards,
RDP