- libusb_set_configuration(dev, 1);
- libusb_claim_interface(dev, 0);
+ int current_configuration = -1;
+ libusb_get_configuration(dev, ¤t_configuration);
+ if (current_configuration != KINECT_AUDIO_CONFIGURATION)
+ libusb_set_configuration(dev, KINECT_AUDIO_CONFIGURATION);
+
+ libusb_claim_interface(dev, KINECT_AUDIO_INTERFACE);
+
+ current_configuration = -1;
+ libusb_get_configuration(dev, ¤t_configuration);
+ if (current_configuration != KINECT_AUDIO_CONFIGURATION) {
+ res = -ENODEV;
+ goto cleanup;
+ }