generic "usb midi device" in 10.9 / Mavericks
What does Mavericks need to use the product string from the USB descriptor as the name of the MIDI port? I have an assortment of USB Audio Class 2.0 compliant audio + MIDI interfaces. Some behave as they do in Mountain Lion and earlier: If manufacturer Foo makes a product Bar with audio and MIDI interfaces, then the Audio Midi Setup windows will show an audio interface named Bar, and a MIDI port named Bar. If you double-click on the MIDI port, it shows the Model, "Bar," and additional information, including the manufacturer Foo, as retrieved from the USB descriptor. This is expected and desired, especially with devices that unlock features in non-free software.
However, with Mavericks, some devices (staying with the Foo/Bar example), though the audio interface gets named Bar, show up in the MIDI Studio window of AMS as "USB MIDI Device," and double-clicking reveals the manufacturer and model to be "Generic" and "USB MIDI Device," respectively. If you use the drop down menu at the top of this window to switch to a different configuration, or define a new one, while the device is connected, it appears in the second configuration as Bar, with the correct manufacturer.
Now, according to https://developer.apple.com/library/mac/technotes/tn2274/_index.html, the Interface Association Descriptor needs to group all the audio descriptors together, they need to be contiguous, and they need to be ordered by Audio Control, then Audio Streaming, then MIDI streaming. The device that isn't coming up correctly meets those criteria, so I wonder what else is missing.
Here's a dump:
Information for device Bar (VID=0x0f00 PID=0x0baa):
Connection Information:
------------------------------
Connection status: Device connected
Device actual bus speed: High
Device is hub: No
Device address: 0x0001
Current configuration value: 0x01
Number of open pipes: 5
Device Descriptor:
------------------------------
0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0xEF bDeviceClass (Miscellaneous device)
0x02 bDeviceSubClass
0x01 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x0f00 idVendor
0x0baa idProduct
0x0010 bcdDevice
0x01 iManufacturer "Foo"
0x03 iProduct "Bar"
0x00 iSerialNumber
0x02 bNumConfigurations
Device Qualifier Descriptor:
------------------------------
0x0A bLength
0x06 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x01 bNumConfigurations
0x00 bReserved
Configuration Descriptor:
------------------------------
0x09 bLength
0x02 bDescriptorType
0x0169 wTotalLength
0x05 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0x80 bmAttributes (Bus-powered Device)
0xFA bMaxPower (500 mA)
Interface Association Descriptor:
------------------------------
0x08 bLength
0x0B bDescriptorType
0x00 bFirstInterface
0x04 bInterfaceCount
0x01 bFunctionClass (Audio Device Class)
0x00 bFunctionSubClass
0x20 bFunctionProtocol
0x00 iFunction
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x01 bInterfaceSubClass (Audio Control Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AC Interface Header Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0200 bcdADC
0x08 bCategory
0x0087 wTotalLength
0x00 bmControls
AC Clock Source Descriptor:
------------------------------
0x08 bLength
0x24 bDescriptorType
0x0A bDescriptorSubtype
0x29 bClockID
0x03 bmAttributes
0x07 bmControls
0x00 bAssocTerminal
0x0E iClockSource "Foo Internal Clock"
AC Clock Selector Descriptor:
------------------------------
0x08 bLength
0x24 bDescriptorType
0x0B bDescriptorSubtype
0x28 bClockID
0x01 bNrInPins
0x29 baCSourceID(1)
0x03 bmControls
0x0D iClockSelector "Foo Clock Selector"
AC Input Terminal Descriptor:
------------------------------
0x11 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x00 bAssocTerminal
0x28 bCSourceID
0x04 bNrChannels
0x00000000 bmChannelConfig
0x12 iChannelNames
0x00 bmControls
0x06 iTerminal "Bar "
AC Feature Unit Descriptor:
------------------------------
0x1A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0A bUnitID
0x02 bSourceID
0x0000000F bmaControls(0)
0x0000000F bmaControls(1)
0x0000000F bmaControls(2)
0x0000000F bmaControls(3)
0x0000000F bmaControls(4)
0x00 iFeature
AC Output Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x14 bTerminalID
0x0301 wTerminalType (Speaker)
0x00 bAssocTerminal
0x0A bSourceID
0x28 bCSourceID
0x0000 bmControls
0x00 iTerminal
AC Input Terminal Descriptor:
------------------------------
0x11 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bTerminalID
0x0201 wTerminalType (Microphone)
0x00 bAssocTerminal
0x28 bCSourceID
0x04 bNrChannels
0x00000000 bmChannelConfig
0x16 iChannelNames
0x00 bmControls
0x00 iTerminal
AC Feature Unit Descriptor:
------------------------------
0x1A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0B bUnitID
0x01 bSourceID
0x0000000F bmaControls(0)
0x0000000F bmaControls(1)
0x0000000F bmaControls(2)
0x0000000F bmaControls(3)
0x0000000F bmaControls(4)
0x00 iFeature
AC Output Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x16 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x00 bAssocTerminal
0x0B bSourceID
0x28 bCSourceID
0x0000 bmControls
0x07 iTerminal "Bar "
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x01 bAlternateSetting
0x02 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AS Interface Descriptor:
------------------------------
0x10 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x02 bTerminalLink
0x00 bmControls
0x01 bFormatType
0x00000001 bmFormats
0x04 bNrChannels
0x00000000 bmChannelConfig
0x12 iChannelNames
AS Format Type 1 Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x04 bSubslotSize
0x18 bBitResolution (24 Bits/sample)
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x00D0 wMaxPacketSize (208 Bytes)
0x01 bInterval
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x00 bmAttributes
0x00 bmControls
0x02 bLockDelayUnits (Decoded PCM samples)
0x0008 wLockDelay
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN Endpoint)
0x11 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Feedback)
0x0004 wMaxPacketSize (4 Bytes)
0x04 bInterval
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x01 bAlternateSetting
0x01 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AS Interface Descriptor:
------------------------------
0x10 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x16 bTerminalLink
0x00 bmControls
0x01 bFormatType
0x00000001 bmFormats
0x04 bNrChannels
0x00000000 bmChannelConfig
0x16 iChannelNames
AS Format Type 1 Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x04 bSubslotSize
0x18 bBitResolution (24 Bits/sample)
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x00D0 wMaxPacketSize (208 Bytes)
0x01 bInterval
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x00 bmAttributes
0x00 bmControls
0x02 bLockDelayUnits (Decoded PCM samples)
0x0008 wLockDelay
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x03 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x03 bInterfaceSubClass (MIDI Streaming Interface)
0x00 bInterfaceProtocol
0x00 iInterface
MS Interface Header Descriptor:
------------------------------
0x07 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0100 bcdMSC
0x0041 wTotalLength
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bJackType
0x01 bJackID
0x00 iJack
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bJackType
0x02 bJackID
0x00 iJack
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x01 bJackType
0x03 bJackID
0x01 bNrInputPins
0x02 baSourceID(1)
0x01 baSourcePin(1)
0x00 iJack
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x02 bJackType
0x04 bJackID
0x01 bNrInputPins
0x01 baSourceID(1)
0x01 baSourcePin(1)
0x00 iJack
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x02 bEndpointAddress (OUT Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x01 baAssocJackID(1)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x83 bEndpointAddress (IN Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x03 baAssocJackID(1)
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x04 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0xFE bInterfaceClass (Application Specific)
0x01 bInterfaceSubClass
0x01 bInterfaceProtocol
0x0F iInterface "Foo DFU"
Configuration Descriptor:
------------------------------
0x09 bLength
0x02 bDescriptorType
0x0169 wTotalLength
0x05 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0x80 bmAttributes (Bus-powered Device)
0xFA bMaxPower (500 mA)
Interface Association Descriptor:
------------------------------
0x08 bLength
0x0B bDescriptorType
0x00 bFirstInterface
0x04 bInterfaceCount
0x01 bFunctionClass (Audio Device Class)
0x00 bFunctionSubClass
0x20 bFunctionProtocol
0x00 iFunction
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x01 bInterfaceSubClass (Audio Control Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AC Interface Header Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0200 bcdADC
0x08 bCategory
0x0087 wTotalLength
0x00 bmControls
AC Clock Source Descriptor:
------------------------------
0x08 bLength
0x24 bDescriptorType
0x0A bDescriptorSubtype
0x29 bClockID
0x03 bmAttributes
0x07 bmControls
0x00 bAssocTerminal
0x0E iClockSource "Foo Internal Clock"
AC Clock Selector Descriptor:
------------------------------
0x08 bLength
0x24 bDescriptorType
0x0B bDescriptorSubtype
0x28 bClockID
0x01 bNrInPins
0x29 baCSourceID(1)
0x03 bmControls
0x0D iClockSelector "Foo Clock Selector"
AC Input Terminal Descriptor:
------------------------------
0x11 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x00 bAssocTerminal
0x28 bCSourceID
0x04 bNrChannels
0x00000000 bmChannelConfig
0x12 iChannelNames
0x00 bmControls
0x06 iTerminal "Bar "
AC Feature Unit Descriptor:
------------------------------
0x1A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0A bUnitID
0x02 bSourceID
0x0000000F bmaControls(0)
0x0000000F bmaControls(1)
0x0000000F bmaControls(2)
0x0000000F bmaControls(3)
0x0000000F bmaControls(4)
0x00 iFeature
AC Output Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x14 bTerminalID
0x0301 wTerminalType (Speaker)
0x00 bAssocTerminal
0x0A bSourceID
0x28 bCSourceID
0x0000 bmControls
0x00 iTerminal
AC Input Terminal Descriptor:
------------------------------
0x11 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bTerminalID
0x0201 wTerminalType (Microphone)
0x00 bAssocTerminal
0x28 bCSourceID
0x04 bNrChannels
0x00000000 bmChannelConfig
0x16 iChannelNames
0x00 bmControls
0x00 iTerminal
AC Feature Unit Descriptor:
------------------------------
0x1A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0B bUnitID
0x01 bSourceID
0x0000000F bmaControls(0)
0x0000000F bmaControls(1)
0x0000000F bmaControls(2)
0x0000000F bmaControls(3)
0x0000000F bmaControls(4)
0x00 iFeature
AC Output Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x16 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x00 bAssocTerminal
0x0B bSourceID
0x28 bCSourceID
0x0000 bmControls
0x07 iTerminal "Bar "
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x01 bAlternateSetting
0x02 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AS Interface Descriptor:
------------------------------
0x10 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x02 bTerminalLink
0x00 bmControls
0x01 bFormatType
0x00000001 bmFormats
0x04 bNrChannels
0x00000000 bmChannelConfig
0x12 iChannelNames
AS Format Type 1 Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x04 bSubslotSize
0x18 bBitResolution (24 Bits/sample)
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x00D0 wMaxPacketSize (208 Bytes)
0x01 bInterval
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x00 bmAttributes
0x00 bmControls
0x02 bLockDelayUnits (Decoded PCM samples)
0x0008 wLockDelay
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN Endpoint)
0x11 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Feedback)
0x0004 wMaxPacketSize (4 Bytes)
0x04 bInterval
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x01 bAlternateSetting
0x01 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x20 bInterfaceProtocol
0x00 iInterface
AS Interface Descriptor:
------------------------------
0x10 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x16 bTerminalLink
0x00 bmControls
0x01 bFormatType
0x00000001 bmFormats
0x04 bNrChannels
0x00000000 bmChannelConfig
0x16 iChannelNames
AS Format Type 1 Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x04 bSubslotSize
0x18 bBitResolution (24 Bits/sample)
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x00D0 wMaxPacketSize (208 Bytes)
0x01 bInterval
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x00 bmAttributes
0x00 bmControls
0x02 bLockDelayUnits (Decoded PCM samples)
0x0008 wLockDelay
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x03 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x03 bInterfaceSubClass (MIDI Streaming Interface)
0x00 bInterfaceProtocol
0x00 iInterface
MS Interface Header Descriptor:
------------------------------
0x07 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0100 bcdMSC
0x0041 wTotalLength
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bJackType
0x01 bJackID
0x00 iJack
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bJackType
0x02 bJackID
0x00 iJack
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x01 bJackType
0x03 bJackID
0x01 bNrInputPins
0x02 baSourceID(1)
0x01 baSourcePin(1)
0x00 iJack
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x02 bJackType
0x04 bJackID
0x01 bNrInputPins
0x01 baSourceID(1)
0x01 baSourcePin(1)
0x00 iJack
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x02 bEndpointAddress (OUT Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x01 baAssocJackID(1)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x83 bEndpointAddress (IN Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x03 baAssocJackID(1)
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x04 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0xFE bInterfaceClass (Application Specific)
0x01 bInterfaceSubClass
0x01 bInterfaceProtocol
0x0F iInterface "Foo DFU"
Other Speed Configuration Descriptor:
------------------------------
0x09 bLength
0x07 bDescriptorType
0x00DD wTotalLength
0x03 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0x80 bmAttributes (Bus-powered Device)
0xFA bMaxPower (500 mA)
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x01 bInterfaceSubClass (Audio Control Interface)
0x00 bInterfaceProtocol
0x08 iInterface "Bar"
AC Interface Header Descriptor:
------------------------------
0x0A bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0100 bcdADC
0x0048 wTotalLength
0x02 bInCollection
0x01 baInterfaceNr(1)
0x02 baInterfaceNr(2)
AC Input Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x00 bAssocTerminal
0x02 bNrChannels
0x0003 wChannelConfig
0x00 iChannelNames
0x0B iTerminal "Bar Output"
AC Feature Unit Descriptor:
------------------------------
0x0A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0A bUnitID
0x01 bSourceID
0x01 bControlSize
bmaControls:
0x00 Channel(0)
0x03 Channel(1)
0x03 Channel(2)
0x00 iFeature
AC Output Terminal Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x06 bTerminalID
0x0301 wTerminalType (Speaker)
0x00 bAssocTerminal
0x0A bSourceID
0x00 iTerminal
AC Input Terminal Descriptor:
------------------------------
0x0C bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bTerminalID
0x0201 wTerminalType (Microphone)
0x00 bAssocTerminal
0x02 bNrChannels
0x0003 wChannelConfig
0x00 iChannelNames
0x0C iTerminal "Bar Input"
AC Output Terminal Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x07 bTerminalID
0x0101 wTerminalType (USB Streaming)
0x01 bAssocTerminal
0x0B bSourceID
0x00 iTerminal
AC Feature Unit Descriptor:
------------------------------
0x0A bLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x0B bUnitID
0x02 bSourceID
0x01 bControlSize
bmaControls:
0x00 Channel(0)
0x03 Channel(1)
0x03 Channel(2)
0x00 iFeature
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x00 bInterfaceProtocol
0x09 iInterface "Bar Output"
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x01 bAlternateSetting
0x02 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x00 bInterfaceProtocol
0x04 iInterface "Bar "
AS Interface Descriptor:
------------------------------
0x07 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x01 bTerminalLink
0x01 bDelay
0x0001 wFormatTag (PCM)
AS Format Type 1 Descriptor:
------------------------------
0x14 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x02 bNrChannels
0x03 bSubframeSize
0x18 bBitResolution (24 Bits/sample)
0x04 bSamFreqType (Discrete sampling frequencies)
0x00AC44 tSamFreq(1) (44100 Hz)
0x00BB80 tSamFreq(2) (48000 Hz)
0x00BB80 tSamFreq(3) (48000 Hz)
0x00BB80 tSamFreq(4) (48000 Hz)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x0126 wMaxPacketSize (294 Bytes)
0x01 bInterval
0x00 bRefresh
0x81 bSynchAddress
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x07 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bmAttributes (Sampling Frequency)
0x02 bLockDelayUnits (Decoded PCM samples)
0x0000 wLockDelay
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN Endpoint)
0x01 bmAttributes (Transfer: Isochronous / Synch: None / Usage: Data)
0x0003 wMaxPacketSize (3 Bytes)
0x01 bInterval
0x04 bRefresh
0x00 bSynchAddress
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x00 bInterfaceProtocol
0x05 iInterface "Bar "
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x01 bAlternateSetting
0x01 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x02 bInterfaceSubClass (Audio Streaming Interface)
0x00 bInterfaceProtocol
0x0A iInterface "Bar Input"
AS Interface Descriptor:
------------------------------
0x07 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x07 bTerminalLink
0x01 bDelay
0x0001 wFormatTag (PCM)
AS Format Type 1 Descriptor:
------------------------------
0x14 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bFormatType
0x02 bNrChannels
0x03 bSubframeSize
0x18 bBitResolution (24 Bits/sample)
0x04 bSamFreqType (Discrete sampling frequencies)
0x00AC44 tSamFreq(1) (44100 Hz)
0x00BB80 tSamFreq(2) (48000 Hz)
0x00BB80 tSamFreq(3) (48000 Hz)
0x00BB80 tSamFreq(4) (48000 Hz)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x05 bmAttributes (Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x0126 wMaxPacketSize (294 Bytes)
0x01 bInterval
0x00 bRefresh
0x00 bSynchAddress
AS Isochronous Data Endpoint Descriptor:
------------------------------
0x07 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bmAttributes (Sampling Frequency)
0x00 bLockDelayUnits (Undefined)
0x0000 wLockDelay
String Descriptor Table
--------------------------------
Index LANGID String
0x00 0x0000 0x0409
0x01 0x0409 "Foo"
0x03 0x0409 "Bar"
0x0E 0x0409 "Foo Internal Clock"
0x0D 0x0409 "Foo Clock Selector"
0x12 0x0409 "Analogue 1"
0x13 0x0409 "Analogue 2"
0x14 0x0409 "Analogue 3"
0x15 0x0409 "Analogue 4"
0x06 0x0409 "Bar "
0x16 0x0409 "Analogue 1"
0x17 0x0409 "Analogue 2"
0x18 0x0409 "Analogue 3"
0x19 0x0409 "Analogue 4"
0x07 0x0409 "Bar "
0x0F 0x0409 "Foo DFU"
0x08 0x0409 "Bar"
0x0B 0x0409 "Bar Output"
0x0C 0x0409 "Bar Input"
0x09 0x0409 "Bar Output"
0x04 0x0409 "Bar "
0x05 0x0409 "Bar "
0x0A 0x0409 "Bar Input"
0xEE 0x0000 Request failed with 0x0000001F
------------------------------
Connection path for device:
Intel(R) ICH10 Family USB Enhanced Host Controller - 3A3C
Root Hub
Bar (VID=0x0f00 PID=0x0baa)
Brought to you by TDD v1.83.0, Mar 7 2014, 14:22:05