2014-07-13 7:47 GMT-03:00 Petr Škramovský <petr.skramov...@gmail.com>:
> Hello, I'm kinda stuck. If I use libusb0 back-end first device works just
> fine but second one uses isochronous transfer which is not implemented in
> libusb0 back-end.

AFAIK, libusb 1.0 does not implement isochronous transfer on Windows.
If you want to confirm that, you should ping libusb mailing list.

> If I switch to libusb1 back-end I'm getting strange errors even with first
> device:
>
> 2014-07-13 12:23:38,073 DEBUG:usb.backend.libusb1:_LibUSB.__init__(<WinDLL
> 'C:\Windows\system32\libusb-1.0.dll', handle 721f0000 at 2a09390>)
> 2014-07-13 12:23:38,076
> DEBUG:usb.backend.libusb1:_LibUSB.enumerate_devices()
> 2014-07-13 12:23:38,329
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A1EFD0>)
> 2014-07-13 12:23:38,331
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55070>)
> 2014-07-13 12:23:38,331
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A1EFD0>)
> 2014-07-13 12:23:38,332
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>)
> 2014-07-13 12:23:38,332
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A1EFD0>)
> 2014-07-13 12:23:38,334
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55070>)
> 2014-07-13 12:23:38,334
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A1EFD0>)
> 2014-07-13 12:23:38,335
> DEBUG:usb.backend.libusb1:_LibUSB.get_device_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>)
> 2014-07-13 12:23:38,335
> DEBUG:usb.backend.libusb1:_LibUSB.open_device(<usb.backend.libusb1._Device
> object at 0x02A55090>)
> 2014-07-13 12:23:38,336
> DEBUG:usb.backend.libusb1:_LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle
> object at 0x02A1EEF0>, 128, 6, 768, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 1000)
> 2014-07-13 12:23:38,338
> DEBUG:usb.backend.libusb1:_LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle
> object at 0x02A1EEF0>, 128, 6, 768, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 1000)
> 2014-07-13 12:23:38,339
> DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0)
> 2014-07-13 12:23:38,341
> DEBUG:usb.backend.libusb1:_LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0, 0, 0)
> 2014-07-13 12:23:38,342
> DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0)
> 2014-07-13 12:23:38,342
> DEBUG:usb.backend.libusb1:_LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0, 1, 0)
> 2014-07-13 12:23:38,342
> DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0)
> 2014-07-13 12:23:38,344
> DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device
> object at 0x02A55090>, 0)
> 2014-07-13 12:23:38,344
> DEBUG:usb.backend.libusb1:_LibUSB.set_configuration(<usb.backend.libusb1._DeviceHandle
> object at 0x02A1EEF0>, 1)
> Traceback (most recent call last):
>   ...
>   File "C:\Python27\lib\site-packages\usb\core.py", line 799, in
> set_configuration
>     self._ctx.managed_set_configuration(self, configuration)
>   File "C:\Python27\lib\site-packages\usb\core.py", line 128, in
> managed_set_configuration
>     self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
>   File "C:\Python27\lib\site-packages\usb\_debug.py", line 60, in do_trace
>     return f(*args, **named_args)
>   File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 730, in
> set_configuration
>     _check(self.lib.libusb_set_configuration(dev_handle.handle,
> config_value))
>   File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 552, in
> _check
>     raise USBError(_strerror(ret), ret, _libusb_errno[ret])
> usb.core.USBError: [Errno 2] Entity not found
> 2014-07-13 12:23:38,371
> DEBUG:usb.backend.libusb1:_LibUSB.close_device(<usb.backend.libusb1._DeviceHandle
> object at 0x02A1EEF0>)
> 2014-07-13 12:23:38,371 DEBUG:usb.backend.libusb1:_LibUSB.__del__()
>

This is rather strange, which PyUSB version are you using, git HEAD?
Could you please post your source code?

> I even tried to implement missing iso_read method for libusb0 because
> apparently windows version does support it.
> Unfortunately I had no luck usb_submit_async returns -22 and I have no idea
> why.
>
> @methodtrace(_logger)
> def iso_read(self, dev_handle, ep, intf, buff, timeout):
>   ctx = c_void_p(0)
>     _lib.usb_isochronous_setup_async(dev_handle, byref(ctx), ep, 1024)
>     address, length = buff.buffer_info()
>     length *= buff.itemsize
>     _lib.usb_submit_async(byref(ctx), cast(address, c_char_p), length)
>     _lib.usb_reap_async(ctx, timeout)
> ...
>

If you want to go ahead with this implementation, maybe first you
should write a little C program that does iso transfers, to get used
to the API and them switch to the Python implementation. This also
makes things easier to get support from libusb-win32 guys.

> device descs :
>
> DEVICE ID 045e:02b0 on Bus 000 Address 001 =================
>  bLength                :   0x12 (18 bytes)
>  bDescriptorType        :    0x1 Device
>  bcdUSB                 :  0x200 USB 2.0
>  bDeviceClass           :    0x0 Specified at interface
>  bDeviceSubClass        :    0x0
>  bDeviceProtocol        :    0x0
>  bMaxPacketSize0        :   0x40 (64 bytes)
>  idVendor               : 0x045e
>  idProduct              : 0x02b0
>  bcdDevice              :  0x105 Device 1.05
>  iManufacturer          :    0x1 Microsoft
>  iProduct               :    0x2 Xbox NUI Motor
>  iSerialNumber          :    0x0
>  bNumConfigurations     :    0x1
>   CONFIGURATION 1: 100 mA ==================================
>    bLength              :    0x9 (9 bytes)
>    bDescriptorType      :    0x2 Configuration
>    wTotalLength         :   0x12 (18 bytes)
>    bNumInterfaces       :    0x1
>    bConfigurationValue  :    0x1
>    iConfiguration       :    0x0
>    bmAttributes         :   0xc0 Self Powered
>    bMaxPower            :   0x32 (100 mA)
>     INTERFACE 0: Vendor Specific ===========================
>      bLength            :    0x9 (9 bytes)
>      bDescriptorType    :    0x4 Interface
>      bInterfaceNumber   :    0x0
>      bAlternateSetting  :    0x0
>      bNumEndpoints      :    0x0
>      bInterfaceClass    :   0xff Vendor Specific
>      bInterfaceSubClass :    0x0
>      bInterfaceProtocol :    0x0
>      iInterface         :    0x0
>
> DEVICE ID 045e:02ae on Bus 000 Address 003 =================
>  bLength                :   0x12 (18 bytes)
>  bDescriptorType        :    0x1 Device
>  bcdUSB                 :  0x200 USB 2.0
>  bDeviceClass           :    0x0 Specified at interface
>  bDeviceSubClass        :    0x0
>  bDeviceProtocol        :    0x0
>  bMaxPacketSize0        :   0x40 (64 bytes)
>  idVendor               : 0x045e
>  idProduct              : 0x02ae
>  bcdDevice              :  0x10b Device 1.011
>  iManufacturer          :    0x2 Microsoft
>  iProduct               :    0x1 Xbox NUI Camera
>  iSerialNumber          :    0x3 A00365A11965050A
>  bNumConfigurations     :    0x1
>   CONFIGURATION 1: 16 mA ===================================
>    bLength              :    0x9 (9 bytes)
>    bDescriptorType      :    0x2 Configuration
>    wTotalLength         :   0x20 (32 bytes)
>    bNumInterfaces       :    0x1
>    bConfigurationValue  :    0x1
>    iConfiguration       :    0x0
>    bmAttributes         :   0xc0 Self Powered
>    bMaxPower            :    0x8 (16 mA)
>     INTERFACE 0: Vendor Specific ===========================
>      bLength            :    0x9 (9 bytes)
>      bDescriptorType    :    0x4 Interface
>      bInterfaceNumber   :    0x0
>      bAlternateSetting  :    0x0
>      bNumEndpoints      :    0x2
>      bInterfaceClass    :   0xff Vendor Specific
>      bInterfaceSubClass :   0xff
>      bInterfaceProtocol :   0xff
>      iInterface         :    0x0
>       ENDPOINT 0x81: Isochronous IN ========================
>        bLength          :    0x7 (7 bytes)
>        bDescriptorType  :    0x5 Endpoint
>        bEndpointAddress :   0x81 IN
>        bmAttributes     :    0x1 Isochronous
>        wMaxPacketSize   :  0xbc0 (3008 bytes)
>        bInterval        :    0x1
>       ENDPOINT 0x82: Isochronous IN ========================
>        bLength          :    0x7 (7 bytes)
>        bDescriptorType  :    0x5 Endpoint
>        bEndpointAddress :   0x82 IN
>        bmAttributes     :    0x1 Isochronous
>        wMaxPacketSize   :  0xbc0 (3008 bytes)
>        bInterval        :    0x1
>
> Any help would be appreciated.
> Regards, PetrS.
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> pyusb-users mailing list
> pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>



-- 
Best Regards,
Wander Lairson Costa

------------------------------------------------------------------------------
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to