John Chen wrote: > I am using libusb-1.0.9, under windows 7 Just a note that the debug log you sent is from libusbx, so check which DLL gets used if you intended something else.
> I am also able to get serial # from one of our legacy app (written > with windows API) Note that retrieving a string descriptor is a generic USB-level operation and that can't really involve unrelated Windows API. The serial number is just one many uses for string descriptors. That said, which windows API do you use to retrieve the serial number? > *Before call libusb_get_string_descriptor_ascii* > [ 0.350070] [0000181c] libusbx: debug [libusb_claim_interface] interface 0 > [ 0.352070] [0000181c] libusbx: error [winusb_claim_interface] could not > access interface 0: [1] Incorrect function. Microsoft doesn't document what ERROR_INVALID_FUNCTION means when calling WinUsb_Initialize() - if the error code is indeed from that call and not from Windows in general. > [ 0.353571] [0000181c] libusbx: debug [libusb_claim_interface] interface 1 > [ 0.355571] [0000181c] libusbx: debug [libusb_claim_interface] interface 2 > [ 0.357572] [0000181c] libusbx: debug [libusb_claim_interface] interface 3 > [ 0.359572] [0000181c] libusbx: debug [libusb_claim_interface] interface 4 > [ 0.362072] [0000181c] libusbx: debug [libusb_claim_interface] interface 5 > [ 0.365573] [0000181c] libusbx: debug [libusb_claim_interface] interface 6 > [ 0.367574] [0000181c] libusbx: debug [libusb_claim_interface] interface 7 > [ 0.369574] [0000181c] libusbx: debug [libusb_claim_interface] interface 8 > [ 0.371574] [0000181c] libusbx: debug [libusb_claim_interface] interface 9 > [ 0.374075] [0000181c] libusbx: debug [libusb_claim_interface] interface 10 > [ 0.376075] [0000181c] libusbx: debug [libusb_claim_interface] interface 11 > [ 0.378076] [0000181c] libusbx: debug [libusb_claim_interface] interface 12 > [ 0.380076] [0000181c] libusbx: debug [libusb_claim_interface] interface 13 > [ 0.382076] [0000181c] libusbx: debug [libusb_claim_interface] interface 14 > [ 0.384577] [0000181c] libusbx: debug [libusb_claim_interface] interface 15 > [ 0.386577] [0000181c] libusbx: debug [libusb_claim_interface] interface 16 > [ 0.388578] [0000181c] libusbx: debug [libusb_claim_interface] interface 17 > [ 0.390578] [0000181c] libusbx: debug [libusb_claim_interface] interface 18 > [ 0.393079] [0000181c] libusbx: debug [libusb_claim_interface] interface 19 > [ 0.395079] [0000181c] libusbx: debug [libusb_claim_interface] interface 20 > [ 0.398580] [0000181c] libusbx: debug [libusb_claim_interface] interface 21 > [ 0.400580] [0000181c] libusbx: debug [libusb_claim_interface] interface 22 > [ 0.403081] [0000181c] libusbx: debug [libusb_claim_interface] interface 23 > [ 0.405081] [0000181c] libusbx: debug [libusb_claim_interface] interface 24 > [ 0.407081] [0000181c] libusbx: debug [libusb_claim_interface] interface 25 > [ 0.409082] [0000181c] libusbx: debug [libusb_claim_interface] interface 26 > [ 0.411082] [0000181c] libusbx: debug [libusb_claim_interface] interface 27 > [ 0.413083] [0000181c] libusbx: debug [libusb_claim_interface] interface 28 > [ 0.415083] [0000181c] libusbx: debug [libusb_claim_interface] interface 29 > [ 0.417584] [0000181c] libusbx: debug [libusb_claim_interface] interface 30 > [ 0.419584] [0000181c] libusbx: debug [libusb_claim_interface] interface 31 It seems that you are calling libusb_claim_interface() in a loop. Just call it one time for the interface that you actually want to use. > Interface Descriptor: > bInterfaceNumber: 0x00 > bAlternateSetting: 0x00 > bNumEndpoints: 0x05 > bInterfaceClass: 0xFF > bInterfaceSubClass: 0xFF > bInterfaceProtocol: 0xFF > iInterface: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x01 OUT > Transfer Type: Bulk > wMaxPacketSize: 0x0040 (64) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x02 OUT > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x04 OUT > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x86 IN > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x88 IN > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Interface Descriptor: > bInterfaceNumber: 0x00 > bAlternateSetting: 0x01 > bNumEndpoints: 0x03 > bInterfaceClass: 0xFF > bInterfaceSubClass: 0xFF > bInterfaceProtocol: 0xFF > iInterface: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x02 OUT > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x86 IN > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 > > Endpoint Descriptor: > bEndpointAddress: 0x88 IN > Transfer Type: Bulk > wMaxPacketSize: 0x0200 (512) > bInterval: 0x00 There seems to be one interface in this device, but with two altsettings. Interesting that altsettings are used without isoc endpoints, but not disallowed. //Peter ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ libusbx-devel mailing list libusbx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libusbx-devel