Hi all,
I'd like to announce the creation of some early-stage, "works for me" implementations of CAT and DAX for Linux (and potentially other systems, including BSD, OSX, and even Windows, but I have no intention of competing with the existing apps on OSX and Windows). They're written in Go, and tentatively the apps are called nCAT and nDAX, and the library is simply "flexclient". nCAT supports the hamlib network protocol (rigctl model 2), and nDAX interfaces with PulseAudio. That works for the majority of Linux ham apps. Only SmartSDR v3 protocol is supported and I have no intention to go back and support the older versions.
This is some pretty early-stage stuff — I've been working on them for just over a week, since I got my 6400 — but I've made QSOs with it using wsjtx, fldigi, and qsstv, as well as using the CAT support during WPX weekend so that my logger (tlf) knew which band/frequency I was on, and it's worked through all of that.
CAT caveats:
- No discovery yet — you'd better know your radio's IP address.
- No SmartLink yet, only local network.
- If you power down your radio or the network drops, the app will crash and you'll have to re-launch it.
- Only about 5-10% of the hamlib protocol is implemented so far (set/get frequency, set/get mode, set/get PTT, TUNER, and RFPOWER. TUNER maps to the TUNE button, not the ATU button; I haven't figured out how I want to support both within the hamlib protocol yet, and my Flex doesn't have an ATU

- Only a single hamlib VFO is supported so far — no split mode, and no mapping different slices to VFOA and VFOB.
- Like the official CAT, it connects to an existing SmartSDR/Maestro/M GUI session and controls that session's slices. In the future I would like to make a "headless" mode that uses up one of the radio's GUI slots and allows doing digi stuff without the need for a GUI client, but I'm not there yet.
Most of this should improve in the future, it's just a lot of work!
DAX caveats:
- No discovery yet.
- No SmartLink yet.
- It will crash if you power down the radio or the network drops.
- Only a single slice is supported so far (you can run multiple instances for multiple slices, though).
- It doesn't create the PulseAudio devices by itself yet (you need to know what "pacmd load-module module-null-sink" means).
- It will always be streaming audio both ways regardless of whether any clients have the audio devices open.
- Right now it's opening a pipe to "pacat" instead of using a proper Go PulseAudio client... you will need that installed on your system and findable in PATH.
- I'm not *completely* sure what's going on with levels and the correct range of the float32 samples. Most of the time, passing things through unmodified to PulseAudio seems correct, but then sometimes qsstv's transmit levels are incredibly low. Is anyone aware of any documentation from FlexRadio that says what to expect when it comes to DAX audio?
All that said... it works for me, and I thought it was time to share, to let the adventurous start playing with it, and to welcome any contributions, suggestions, or fixes.
nCAT:
https://github.com/arodland/nCATnDAX:
https://github.com/arodland/nDAXflexclient library:
https://github.com/arodland/flexclient- Andrew KC2G