We have a discussion on libusb-win32 mailing list about a device
from Microsoft. Xbox Kinnect has the Xbox NUI Audio device which
is a high speed USB device and it has an Isochronous IN
(EP2 IN) endpoint with bInterval of 5.
http://libusb.6.n5.nabble.com/Cheating-isochronous-transfers-with-bInterval-5-td4397497.html
Microsoft does not seem to support this with the Windows host
controller driver.
http://msdn.microsoft.com/en-us/library/ff539114(v=VS.85).aspx
“Isochronous transfers on high speed devices support polling period
values of 1, 2, 4, and 8. If a client driver submits a
URB_FUNCTION_ISOCH_TRANSFER request for a high speed
isochronous endpoint with polling period greater than 8 microframes,
the request fails with status USBD_STATUS_INVALID_PARAMETER.”
On the other hand, the USB 2.0 specification says this
(Page 271, Table 9-13).
+++++++++++++++++++++++
bInterval
"Interval for polling endpoint for data transfers.
Expressed in frames or microframes depending on the
device operating speed (i.e., either 1 millisecond or
125 μs units).
For full-/high-speed isochronous endpoints, this value
must be in the range from 1 to 16. The bInterval value
is used as the exponent for a 2^(bInterval-1) value; e.g.,
a bInterval of 4 means a period of 8 (2^(4-1))."
++++++++++++++++++++++++
So binterval of 5 does not violates USB specification yet it
will not work under Windows. Of course it works under
Xbox. And it is also reported to work under Linux.
(What does violate the spec is that there is no alternate setting with
an isoc bandwidth of zero but this is not the point of discussion here).
Is it even possible to make it work under Windows?
The following is the “lsusb -vvv” output.
http://openkinect.org/w/index.php?title=Lsusb_output&oldid=22
Bus 002 Device 013: ID 045e:02ad Microsoft Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x045e Microsoft Corp.
idProduct 0x02ad
bcdDevice 1.00
iManufacturer 1 Microsoft
iProduct 2 Xbox NUI Audio
iSerial 4 A44886D18656039A
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x020c 1x 524 bytes
bInterval 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x0048 1x 72 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0001
Self Powered
–
Xiaofan