[alsa-devel] Boss GT-001

Keith A. Milner maillist at superlative.org
Wed Oct 7 11:41:52 CEST 2015


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




More information about the Alsa-devel mailing list