On 2013.04.08 19:12, Tim Roberts wrote:
> Xiaofan Chen wrote:
>> Somehow I got a strange warning under Windows 8 x64. The device
>> is a USB composite device (Amontec JTAGkey-2), both interface
>> use the WinUSB driver installed using Zadig. Not so sure if this
>> has something to do with the fact this is a virtual machine (using
>> VirtualBox under Mac OS X).
>
> I'm a little confused here. Do you have one driver matching the
> composite device, or do you have two drivers, one for each interface?
I guess that's 2 drivers, as one needs to use the advanced options of
Zadig to replace the driver for the usbcgpp device otherwise.
> For example, in this snippet:
>
>> Opening device 0403:CFF8...
>> libusbx: error [init_device] device
>> '\\.\USB#VID_0403&PID_CFF8&MI_01#6&222886B8&
>> 0&0001' is no longer connected!
>
> the "MI_01" implies that you have a separate driver for each interface.
> In that case, I don't understand the log entries about claiming
> interface 0 and interface 1.
That's just how xusb is set [1]. It'll always try to claim all
interfaces. I kind of recall there was a reason for doing just that
(couldn't get data off one of the devices I tested with otherwise), but
I'd have to look it up. Then again, xusb is only one side of the
equation here.
> When you have one driver per interface,
> the composite driver rewrites the descriptors so that each function
> driver sees a single interface device.
Yes, but the issue is that libusb was written with a Linux frameset in
mind, where composite devices are not seen as 2 independent entities but
as a single one. So we have to compensate for that in the Windows
backend, to provide for a cross platform implementation that does its
best at behaving the same across the board.
Otherwise, the expectation that when you open a libusb(x) composite
device, you are entitled exclusive access all its interfaces will not
hold true on Windows as it is for other platforms.
And that's the reason why, independently of xusb, the Windows backend
will also claim all interfaces of a composite device on open [2].
Sure would be nice if we could just address each interface
independently, but we're just constrained by how libusb(x) is meant to
work on other platforms.
With this being said, I ran a test on Windows 8 against an FTDI based
composite device (Olimex JTAG), and did not see the issue reported by
Xiaofan.
----------------------------------------------------------------------
D:\xusb>xusb 15ba:0004
Using libusbx v1.0.15.10641
Opening device 15BA:0004...
Reading device descriptor:
length: 18
device class: 0
S/N: 0
VID:PID: 15BA:0004
bcdDevice: 0500
iMan:iProd:iSer: 1:2:0
nb confs: 1
Reading configuration descriptors:
nb interfaces: 2
interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 2
Class.SubClass.Protocol: FF.FF.FF
endpoint[0].address: 81
max packet size: 0040
polling interval: 00
endpoint[1].address: 02
max packet size: 0040
polling interval: 00
interface[1]: id = 1
interface[1].altsetting[0]: num endpoints = 2
Class.SubClass.Protocol: FF.FF.FF
endpoint[0].address: 83
max packet size: 0040
polling interval: 00
endpoint[1].address: 04
max packet size: 0040
polling interval: 00
Claiming interface 0...
Claiming interface 1...
Reading string descriptors:
String (0x01): "Olimex"
String (0x02): "Olimex OpenOCD JTAG TINY"
Releasing interface 0...
Releasing interface 1...
Closing device...
----------------------------------------------------------------------
Hard to say what virtualization will do behind the scenes, so unless we
get similar reports on actual hardware, I'm not sure I want to
investigate that issue much.
Regards,
/Pete
[1] https://github.com/libusbx/libusbx/blob/master/examples/xusb.c#L830
[2]
https://github.com/libusbx/libusbx/blob/master/libusb/os/windows_usb.c#L4203
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
libusbx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libusbx-devel