Turns out using USB hardware sucks everywhere, in slightly different ways.
Yaesu Rotator Driver Shim
The Yaesu G-5500DC rotator is a nice piece of hardware, but it has an analog (0-5 V) control interface and requires a separate GS-232B box for computer serial control (which will run you a nice $600 for a new unit). Someone used to sell an adapter board for the Labjack U12 (which basically consists of a DIN-8 jack, a darlington transistor array, and a few resistors + LEDs), which provides precise computer control of the G-5500DC at a much lower cost.
However, the Labjack U12 is just basic 12-bit data acquisition device that is not specifically made for controlling a rotator, so common satellite tracking software (e.g. hamlib) does not support it as a Yaesu rotator interface.
Fortunately, labjack provides an open-source libusb-based driver for the Labjack U12, which makes it eminently possible to expose this hardware stack as controllable through the hamlib protocol (or, more precisely, a simulacrum thereof).
Implementation
I mostly just want this to run on Linux, as a static executable. The zig build system is good.
Dependencies are fully vendored.
Build
Requires zig
version 0.13.x
to compile.
zig build
Unfortunately, all platforms have additional steps that must be taken (some easier than others) in order to run the program successfully.
Windows
This compiles for, and runs on, Windows. However, the Labjack U12 by default gets assigned the Windows USB HID driver, which causes the USB report descriptor control transfer read to get mangled for mystery reasons that presumably made sense to some egghead at Microsoft at some point in time. Fortunately, this can be relatively easily fixed by using a tool like zadig to set the Labjack U12 to use the WinUSB driver instead of the HID driver. This is not an endorsement of the above outlined process, but rather an explanation for persons either foolish or desperate.
macOS
This works on macOS, though it has to be run with sudo
, as access to the USB hardware at user privilege level is gated by entitlements. Using entitlements is in turn gated by signature with an Apple Developer Certificate and Notarization, which may only be acquired with a paid Apple Developer Program subscription. If you have those, great. The provided yaes.entitlements
is almost certainly not the correct set of entitlements, since I can't test it. Just run it with sudo
whilst praising Tim Apple for the Most Advanced Operating System on the Planet.
Linux
You probably need to install the included udev rules file in order for the USB device to be accessible as a user. This is buried in the source tree as deps/labjack/exodriver/90-labjack.rules
. These should probably go in /etc/udev/rules.d
if you are installing them manually and I have properly understood the various Linux folder conventions.