On some Kinect devices where the desired configuration is already the
currently active one libusb_set_configuration() fails in some way
causing the subsequent bulk transfer to fail, and the program to exit,
with this message:
libusbx: error [op_set_configuration] failed, error -1 errno 110
About to send: 09 20 02 06 01 00 00 00 60 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00
libusbx: error [submit_bulk_transfer] submiturb failed error -1 errno=2
Error: res: -1 transferred: 0 (expected 24)
Only set the desired configuration if it hasn't been set already.
This prevents the problems from above.
Do the configuration check as illustrated in
http://libusbx.sourceforge.net/api-1.0/caveats.html that is by checking
that the current configuration is still the desired one after claiming
the device.
- libusb_set_configuration(dev, 1);
+ int current_configuration = 0;
+ libusb_get_configuration(dev, ¤t_configuration);
+ if (current_configuration != 1)
+ libusb_set_configuration(dev, 1);
+
libusb_claim_interface(dev, 0);
libusb_claim_interface(dev, 0);
+ libusb_get_configuration(dev, ¤t_configuration);
+ if (current_configuration != 1) {
+ res = -ENODEV;
+ goto cleanup;
+ }
+
seq = 1;
bootloader_command cmd;
seq = 1;
bootloader_command cmd;