debian/patches: add a patch to make kinect_upload_fw work with more devices
authorAntonio Ospite <ospite@studenti.unina.it>
Wed, 11 Dec 2013 11:37:19 +0000 (12:37 +0100)
committerAntonio Ospite <ospite@studenti.unina.it>
Wed, 11 Dec 2013 11:38:35 +0000 (12:38 +0100)
debian/patches/0001-kinect_upload_fw-fix-setting-configuration-for-some-.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]

diff --git a/debian/patches/0001-kinect_upload_fw-fix-setting-configuration-for-some-.patch b/debian/patches/0001-kinect_upload_fw-fix-setting-configuration-for-some-.patch
new file mode 100644 (file)
index 0000000..aa2a8c8
--- /dev/null
@@ -0,0 +1,60 @@
+From 6e31aa17271f90a443591719089688bbf2040765 Mon Sep 17 00:00:00 2001
+From: Kristof Robot <krirobo@gmail.com>
+Date: Sun, 8 Dec 2013 15:46:50 +0100
+Subject: [PATCH] kinect_upload_fw: fix setting configuration for some devices
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+X-Face: z*RaLf`X<@C75u6Ig9}{oW$H;1_\2t5)({*|jhM<pyWR#k60!#=#>/Vb;]yA5<GWI5`6u&+
+ ;6b'@y|8w"wB;4/e!7wYYrcqdJFY,~%Gk_4]cq$Ei/7<j&N3ah(m`ku?pX.&+~:_/wC~dwn^)MizBG
+ !pE^+iDQQ1yC6^,)YDKkxDd!T>\I~93>J<_`<4)A{':UrE
+
+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.
+---
+ kinect_upload_fw/kinect_upload_fw.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/kinect_upload_fw/kinect_upload_fw.c b/kinect_upload_fw/kinect_upload_fw.c
+index b2188d6..e3b72db 100644
+--- a/kinect_upload_fw/kinect_upload_fw.c
++++ b/kinect_upload_fw/kinect_upload_fw.c
+@@ -155,9 +155,19 @@ int main(int argc, char** argv) {
+               goto fail_libusb_open;
+       }
+-      libusb_set_configuration(dev, 1);
++      int current_configuration = 0;
++      libusb_get_configuration(dev, &current_configuration);
++      if (current_configuration != 1)
++              libusb_set_configuration(dev, 1);
++
+       libusb_claim_interface(dev, 0);
++      libusb_get_configuration(dev, &current_configuration);
++      if (current_configuration != 1) {
++              res = -ENODEV;
++              goto cleanup;
++      }
++
+       seq = 1;
+       bootloader_command cmd;
+-- 
+1.8.5.1
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..2cf5206
--- /dev/null
@@ -0,0 +1 @@
+0001-kinect_upload_fw-fix-setting-configuration-for-some-.patch