On Wednesday 07 Oct 2015 10:09:14 Ricard Wanderlof wrote:
On Tue, 6 Oct 2015, Keith A. Milner wrote:
OK, so it seems that this hardware is substantially the same as the GT-100 which has previously (and recently) been raised as a problem on ALSA.
I'm going to attempt to capture some USB data using this device in Windows. If I do this, is there an accepted method for uploading the capture so it can be posted here?
At this point, I'm not 100% sure what the capture format is going to be...
<Various snips>
I learned though that although Wireshark is happy reading the .pcap files produced by USBPCap, the resulting dumps can look quite different from what Wireshark sniffs in Linux, which initially took me aback. At least when it comes to USBPcap I think the reason is that the program actually sniffs the data halfway up (if not at the top of) the Windows protocol stack, meaning that there's data in the dump that does not actually occur on the wire. I'm not sure at what level usbmon sniffs, but it looks closer to what I'd expect on the physical cable.
Thanks Richard.
The data I'm getting from Wireshark via USBMon seems OK from my initial viewing. Incidentally, Wireshark can sniff directly from usbmon interfaces and exposes them as capture interfaces (at least with the version I have).
Here's an example of what I'm getting (exported as CSV): "No.","Time","Source","Destination","Protocol","Length","Info","Leftover Capture Data","Comment" "1","0.000000000","host","7.0","USB","64","GET DESCRIPTOR Request DEVICE","","This was from within Linux before I connected the USB device to the Windows VM guest" "2","0.000203000","7.0","host","USB","82","GET DESCRIPTOR Response DEVICE","","This was from within Linux before I connected the USB device to the Windows VM guest" "3","6.343942000","host","7.0","USB","64","SET INTERFACE Request","","" "4","6.344069000","7.0","host","USB","64","SET INTERFACE Response","","" "5","6.545252000","host","0.0","USB","64","SET ADDRESS Request","","" "6","6.564886000","host","7.0","USB","64","GET DESCRIPTOR Request DEVICE","","" "7","6.565099000","7.0","host","USB","82","GET DESCRIPTOR Response DEVICE","","" "8","6.565134000","host","7.0","USB","64","GET DESCRIPTOR Request CONFIGURATION","","" "9","6.565566000","7.0","host","USB","240","GET DESCRIPTOR Response CONFIGURATION","",""
The isochronous data appears as follows:
"54","24.767751000","host","7.14","USB","192","URB_ISOCHRONOUS in","eeffffff000000007000000000000000eeffffff70000000...",""
Wireshark also appears to decode them quite nicely. I've pasted one of the GET DESCRIPTOR responses below.
Now I need to try and work out what it all means...
Cheers,
Keith
GET DESCRIPTOR response decode:
No. Time Source Destination Length Info Leftover Capture Data Comment 9 6.565566000 7.0 host 240 GET DESCRIPTOR Response CONFIGURATION
Frame 9: 240 bytes on wire (1920 bits), 240 bytes captured (1920 bits) on interface 0 Interface id: 0 (usbmon3) Encapsulation type: USB packets with Linux header and padding (115) Arrival Time: Oct 6, 2015 22:11:10.987080000 BST [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1444165870.987080000 seconds [Time delta from previous captured frame: 0.000432000 seconds] [Time delta from previous displayed frame: 0.000432000 seconds] [Time since reference or first frame: 6.565566000 seconds] Frame Number: 9 Frame Length: 240 bytes (1920 bits) Capture Length: 240 bytes (1920 bits) [Frame is marked: False] [Frame is ignored: False] [Protocols in frame: usb] USB URB URB id: 0xffff880289c33740 URB type: URB_COMPLETE ('C') URB transfer type: URB_CONTROL (0x02) Endpoint: 0x80, Direction: IN 1... .... = Direction: IN (1) .000 0000 = Endpoint value: 0 Device: 7 URB bus id: 3 Device setup request: not relevant ('-') Data: present (0) URB sec: 1444165870 URB usec: 987080 URB status: Success (0) URB length [bytes]: 176 Data length [bytes]: 176 [Request in: 8] [Time from request: 0.000432000 seconds] Unused Setup Header Interval: 0 Start frame: 0 Copy of Transfer Flags: 0x00000200 Number of ISO descriptors: 0 CONFIGURATION DESCRIPTOR bLength: 9 bDescriptorType: 0x02 (CONFIGURATION) wTotalLength: 176 bNumInterfaces: 4 bConfigurationValue: 1 iConfiguration: 0 Configuration bmAttributes: 0xc0 SELF-POWERED NO REMOTE-WAKEUP 1... .... = Must be 1: Must be 1 for USB 1.1 and higher .1.. .... = Self-Powered: This device is SELF-POWERED ..0. .... = Remote Wakeup: This device does NOT support remote wakeup bMaxPower: 0 (0mA) INTERFACE DESCRIPTOR (0.0): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 0 bAlternateSetting: 0 bNumEndpoints: 0 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0xff bInterfaceProtocol: 0x00 iInterface: 0 INTERFACE DESCRIPTOR (1.0): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 1 bAlternateSetting: 0 bNumEndpoints: 0 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x02 bInterfaceProtocol: 0x02 iInterface: 0 UNKNOWN DESCRIPTOR bLength: 6 bDescriptorType: 0x24 (unknown) INTERFACE DESCRIPTOR (1.1): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 1 bAlternateSetting: 1 bNumEndpoints: 1 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x02 bInterfaceProtocol: 0x02 iInterface: 0 UNKNOWN DESCRIPTOR bLength: 7 bDescriptorType: 0x24 (unknown) UNKNOWN DESCRIPTOR bLength: 11 bDescriptorType: 0x24 (unknown) ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x0d OUT Endpoint:13 0... .... = Direction: OUT Endpoint .... 1101 = Endpoint Number: 0x0d bmAttributes: 0x05 .... ..01 = Transfertype: Isochronous-Transfer (0x01) .... 01.. = Synchronisationtype: Asynchronous (0x01) ..00 .... = Behaviourtype: Data-Endpoint (0x00) wMaxPacketSize: 112 ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..00 0111 0000 = Maximum Packet Size: 112 bInterval: 1 UNKNOWN DESCRIPTOR bLength: 7 bDescriptorType: 0x25 (unknown) INTERFACE DESCRIPTOR (2.0): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 2 bAlternateSetting: 0 bNumEndpoints: 0 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x02 bInterfaceProtocol: 0x01 iInterface: 0 INTERFACE DESCRIPTOR (2.1): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 2 bAlternateSetting: 1 bNumEndpoints: 1 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x02 bInterfaceProtocol: 0x01 iInterface: 0 UNKNOWN DESCRIPTOR bLength: 7 bDescriptorType: 0x24 (unknown) UNKNOWN DESCRIPTOR bLength: 11 bDescriptorType: 0x24 (unknown) ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x8e IN Endpoint:14 1... .... = Direction: IN Endpoint .... 1110 = Endpoint Number: 0x0e bmAttributes: 0x25 .... ..01 = Transfertype: Isochronous-Transfer (0x01) .... 01.. = Synchronisationtype: Asynchronous (0x01) ..10 .... = Behaviourtype: Implicit Feedback-Data-Endpoint (0x02) wMaxPacketSize: 112 ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..00 0111 0000 = Maximum Packet Size: 112 bInterval: 1 UNKNOWN DESCRIPTOR bLength: 7 bDescriptorType: 0x25 (unknown) INTERFACE DESCRIPTOR (3.0): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 3 bAlternateSetting: 0 bNumEndpoints: 2 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x03 bInterfaceProtocol: 0x00 iInterface: 0 UNKNOWN DESCRIPTOR bLength: 6 bDescriptorType: 0x24 (unknown) ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x03 OUT Endpoint:3 0... .... = Direction: OUT Endpoint .... 0011 = Endpoint Number: 0x03 bmAttributes: 0x02 .... ..10 = Transfertype: Bulk-Transfer (0x02) .... 00.. = Synchronisationtype: No Sync (0x00) ..00 .... = Behaviourtype: Data-Endpoint (0x00) wMaxPacketSize: 512 .... ..10 0000 0000 = Maximum Packet Size: 512 bInterval: 1 ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x84 IN Endpoint:4 1... .... = Direction: IN Endpoint .... 0100 = Endpoint Number: 0x04 bmAttributes: 0x02 .... ..10 = Transfertype: Bulk-Transfer (0x02) .... 00.. = Synchronisationtype: No Sync (0x00) ..00 .... = Behaviourtype: Data-Endpoint (0x00) wMaxPacketSize: 512 .... ..10 0000 0000 = Maximum Packet Size: 512 bInterval: 0 INTERFACE DESCRIPTOR (3.1): class Vendor Specific bLength: 9 bDescriptorType: 0x04 (INTERFACE) bInterfaceNumber: 3 bAlternateSetting: 1 bNumEndpoints: 2 bInterfaceClass: Vendor Specific (0xff) bInterfaceSubClass: 0x03 bInterfaceProtocol: 0x00 iInterface: 0 ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x03 OUT Endpoint:3 0... .... = Direction: OUT Endpoint .... 0011 = Endpoint Number: 0x03 bmAttributes: 0x03 .... ..11 = Transfertype: Interrupt-Transfer (0x03) .... 00.. = Synchronisationtype: No Sync (0x00) ..00 .... = Behaviourtype: Data-Endpoint (0x00) wMaxPacketSize: 512 ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..10 0000 0000 = Maximum Packet Size: 512 bInterval: 1 ENDPOINT DESCRIPTOR bLength: 7 bDescriptorType: 0x05 (ENDPOINT) bEndpointAddress: 0x85 IN Endpoint:5 1... .... = Direction: IN Endpoint .... 0101 = Endpoint Number: 0x05 bmAttributes: 0x03 .... ..11 = Transfertype: Interrupt-Transfer (0x03) .... 00.. = Synchronisationtype: No Sync (0x00) ..00 .... = Behaviourtype: Data-Endpoint (0x00) wMaxPacketSize: 512 ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..10 0000 0000 = Maximum Packet Size: 512 bInterval: 1