Been a little while, but I think I finally figured it out. I have been using a linux VM to develop and test code. After hitting a few more walls I realized I had never tried running the code on a native linux machine. I had assumed that since the program was getting the PID and a handle to the camera successfully that it couldn't be the VM's fault because otherwise I wouldn't have gotten that far. But as a sanity check I tried running the indi-sx driver code on my raspberry pi zero, and it worked perfectly! I'm not sure what the problem is, but having the program run through a virtual machine seems to be the reason why the camera commands were failing.