yaes/readme.md
torque b08f819bdc
readme: update with platform-specific information
Turns out using USB hardware sucks everywhere, in slightly different
ways.
2024-07-04 11:37:27 -07:00

2.8 KiB

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.