It might be prudent to quickly run through what I've done to make sure I didn't simply overlook something obvious. I copied 99-sx.rules into /etc/udev/rules.d and into /lib/udev/rules.d and reloaded the udev rules using udevadm control --reload-rules. I have downloaded libusb-1.0. After downloading the repo I navigated to the 3rdparty/indi-sx folder and compiled the test program with the following command: g++ sxccdtest.cpp sxccdusb.cpp sxccdusb.h sxconfig.h -lusb-1.0
That compiles successfully and produces the executable a.out. When I run a.out it successfully gets the device descriptor (presumably) because it displays the expected PID and VID along with the camera name 'ultrastar'. Each command in the test program uses a bulk transfer, but each attempt at a bulk transfer results in the libusb io error. All data that is printed on the screen is inconsistent and presumably garbage data. I've attached the output from one of the runs of the program.

Does any step of that process seem off? I'll start looking at how to get the INDI driver running and see if that provides different results.