2019年12月4日水曜日

CM6631A DDCのdevice descriptor

CM6631Aが載ったDDCのdevice descriptorを読んでみた.

こんな結線になっているらしいよ.


------------------ Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)  (1)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x0D8C (C-MEDIA ELECTRONICS INC.)
idProduct                : 0x0004
bcdDevice                : 0x0208
iManufacturer            : 0x01 (String Descriptor 1)
 *!*ERROR  String descriptor not found   (2)
iProduct                 : 0x02 (String Descriptor 2)
 *!*ERROR  String descriptor not found
iSerialNumber            : 0x00 (No String Descriptor)
bNumConfigurations       : 0x01 (1 Configuration)
(1)USB2.0である.
(2)stringが無いエラーが生じている.

------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x012A (298 bytes)
bNumInterfaces           : 0x03 (3 Interfaces)  (1)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
(1)3つのinterfaceがある

--------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x00
bInterfaceCount          : 0x02
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x00 (undefined)
bFunctionProtocol        : 0x20 (AF 2.0)
iFunction                : 0x00 (No String Descriptor)
IADの意味はよくわからない


interface0ここから Audio Control interface
----------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)  (A)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
(A)EPを1つ抱えている   →interface0末尾にEP15がある

---- Audio Control Interface Header Descriptor 2.0 ----
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header 2.0)
bcdADC                   : 0x0200 (2.0)
bCategory                : 0x0A (pro-audio)
wTotalLength             : 0x0100 (256 bytes)
bmControls               : 0x00
 D1..0: Latency          : 0x00 (not present)
 D7..2: Reserved         : 0x00

----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)  (A)
bTerminalID              : 0x01    (B)
wTerminalType            : 0x0101 (USB streaming)  (C)
bAssocTerminal           : 0x00
bCSourceID               : 0x12 (18)   (D)
bNrChannels              : 0x00 (0 Channels)
bmChannelConfig          : 0x00000000 (-)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0040
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x01 (read only)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)
(AB)入力ターミナル   1番
(C)streaming
(D)clockソースは18番

----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)  (A)
bTerminalID              : 0x07      (B)
wTerminalType            : 0x0301 (Speaker)   (C)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x0D (13)    (D)
bCSourceID               : 0x12 (18)    (E)
iTerminal                : 0x00 (No String Descriptor)
(ABC)出力ターミナル   7番     スピーカー
(D)ソースは13番
(E)clockソースは18番

------ Audio Control Feature Unit Descriptor 2.0 ------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit 2.0) (A)
bUnitID                  : 0x0D (13)    (B)
bSourceID                : 0x01 (1)   (C)
bmaControls[0]           : 0x03, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x03 (host programmable)
    中略
bmaControls[1]           : 0x00, 0x00, 0x00, 0x00
    中略
bmaControls[2]           : 0x00, 0x00, 0x00, 0x00
    中略
iFeature                 : 0x00 (No String Descriptor)
(AB)Feature unit  13番
(C)ソースは1番

--- Audio Control Clock Source Unit Descriptor 2.0 ----
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x0A (Clock Source 2.0)  (A)
bClockID                 : 0x12   (B)
bmAttributes             : 0x03
 D1..0: Clock Type       : 0x03
 D2   : Sync to SOF      : 0x00
 D7..3: Reserved         : 0x00
bmControls               : 0x07
 D1..0: Clock Frequency  : 0x03 (host programmable)
 D3..2: Clock Validity   : 0x01 (read only)
 D7..4: Reserved         : 0x00
bAssocTerminal           : 0x00
iClockSource             : 0x00 (No String Descriptor)
(AB)clock source unit     18番

-------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x8F (Direction=IN EndpointID=15)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0006
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x06 (6 bytes per packet)
bInterval                : 0x04 (4 ms)
interface0 ここまで

interface1ここから    Audio stream
Alt0ここから   無音状態
-------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x04 (String Descriptor 4)
 *!*ERROR  String descriptor not found
Alt0ここまで    無音状態

Alt1ここから    16bit
------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

----- Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x01 (1)      (A)
bmControls               : 0x05
 D1..0: Active Alt Settng: 0x01 (read only)
 D3..2: Valid Alt Settng : 0x01 (read only)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x02 (2 channels)
bmChannelConfig          : 0x00000003 (FL, FR)
iChannelNames            : 0x00 (No String Descriptor)
(A)入力ターミナル1に接続

----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)

----------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00C8
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xC8 (200 bytes per packet)
bInterval                : 0x01 (1 ms)

------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
bLockDelayUnits          : 0x00
wLockDelay               : 0x0000

------------ Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)
Alt1ここまで    16bit

Alt2ここから    24bit
------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x02
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

----- Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x01 (1)
bmControls               : 0x05
 D1..0: Active Alt Settng: 0x01 (read only)
 D3..2: Valid Alt Settng : 0x01 (read only)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x02 (2 channels)
bmChannelConfig          : 0x00000003 (FL, FR)
iChannelNames            : 0x00 (No String Descriptor)

---- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x03 (3 bytes)
bBitResolution           : 0x18 (24 bits)

------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x012C
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x12C (300 bytes per packet)
bInterval                : 0x01 (1 ms)

------ Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
bLockDelayUnits          : 0x00
wLockDelay               : 0x0000

-------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)
ALT2ここまで    24bit

Alt3ここから    32bit
----------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x03
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

----- Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x01 (1)
bmControls               : 0x05
 D1..0: Active Alt Settng: 0x01 (read only)
 D3..2: Valid Alt Settng : 0x01 (read only)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x02 (2 channels)
bmChannelConfig          : 0x00000003 (FL, FR)
iChannelNames            : 0x00 (No String Descriptor)

----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x04 (4 bytes)
bBitResolution           : 0x20 (32 bits)

------------ Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0190
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x190 (400 bytes per packet)
bInterval                : 0x01 (1 ms)

-------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
bLockDelayUnits          : 0x00
wLockDelay               : 0x0000

------------ Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)

-------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x02
bInterfaceCount          : 0x01
*!*ERROR  bInterfaceCount must be greater than 1
bFunctionClass           : 0x03 (HID - Human Interface Device)
bFunctionSubClass        : 0x00
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Alt3ここまで     32bit
interface1ここまで

interface2ここから   HID
----------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)

-------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0100 (HID Version 1.00)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0032 (50 bytes)
  05 0C             Usage Page (Consumer)
  09 01             Usage (Consumer Control)
  A1 01             Collection (Application)
  15 00               Logical Minimum (0)
  25 01               Logical Maximum (1)
  09 E9               Usage (Volume Increment)
  09 EA               Usage (Volume Decrement)
  75 01               Report Size (1)
  95 02               Report Count (2)
  81 02               Input (Var)
  09 E2               Usage (Mute)
  09 00               Usage (Unassigned)
  81 06               Input (Var, Rel)
  09 00               Usage (Unassigned)
  95 04               Report Count (4)
  81 02               Input (Var)
  26 FF 00            Logical Maximum (255)
  09 00               Usage (Unassigned)
  75 08               Report Size (8)
  95 0F               Report Count (15)
  81 02               Input (Var)
  09 00               Usage (Unassigned)
  95 10               Report Count (16)
  91 02               Output (Var)
  C0                End Collection

------------ Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x10 (16 bytes per packet)
bInterval                : 0x04 (4 ms)
interface2ここまで   HID


------------- Device Qualifier Descriptor -----------------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x06 (Device_qualifier Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 Bytes)
bNumConfigurations       : 0x01 (1 other-speed configuration)
bReserved                : 0x00






----------------------------------
ここから下はother speed configである.USB2.0だけどHigh speed以外の転送レートで動かすときに使うらしい.中身は同じっぽいのでスルー.
--------- Other Speed Configuration Descriptor -------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
wTotalLength             : 0x00F5 (245 bytes)
bNumInterfaces           : 0x03 (3 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)

-------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x00
bInterfaceCount          : 0x02
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x00 (undefined)
bFunctionProtocol        : 0x20 (AF 2.0)
iFunction                : 0x00 (No String Descriptor)



---------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

---- Audio Control Interface Header Descriptor 2.0 ----
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header 2.0)
bcdADC                   : 0x0200 (2.0)
bCategory                : 0x0A (pro-audio)
wTotalLength             : 0x0100 (256 bytes)
bmControls               : 0x00
 D1..0: Latency          : 0x00 (not present)
 D7..2: Reserved         : 0x00

----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)
bTerminalID              : 0x01
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bCSourceID               : 0x12 (18)
bNrChannels              : 0x00 (0 Channels)
bmChannelConfig          : 0x00000000 (-)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0040
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x01 (read only)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)

----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)
bTerminalID              : 0x07
wTerminalType            : 0x0301 (Speaker)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x0D (13)
bCSourceID               : 0x12 (18)
iTerminal                : 0x00 (No String Descriptor)

------ Audio Control Feature Unit Descriptor 2.0 ------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit 2.0)
bUnitID                  : 0x0D (13)
bSourceID                : 0x01 (1)
bmaControls[0]           : 0x03, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x03 (host programmable)
    中略
bmaControls[1]           : 0x00, 0x00, 0x00, 0x00
    中略
bmaControls[2]           : 0x00, 0x00, 0x00, 0x00
    中略
iFeature                 : 0x00 (No String Descriptor)

--- Audio Control Clock Source Unit Descriptor 2.0 ----
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x0A (Clock Source 2.0)
bClockID                 : 0x12
bmAttributes             : 0x03
 D1..0: Clock Type       : 0x03
 D2   : Sync to SOF      : 0x00
 D7..3: Reserved         : 0x00
bmControls               : 0x07
 D1..0: Clock Frequency  : 0x03 (host programmable)
 D3..2: Clock Validity   : 0x01 (read only)
 D7..4: Reserved         : 0x00
bAssocTerminal           : 0x00
iClockSource             : 0x00 (No String Descriptor)

----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x8F (Direction=IN EndpointID=15)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0006
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x06 (6 bytes per packet)
bInterval                : 0x01 (1 ms)




-------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x04 (String Descriptor 4)
 *!*ERROR  String descriptor not found

------------ Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

----- Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x01 (1)
bmControls               : 0x05
 D1..0: Active Alt Settng: 0x01 (read only)
 D3..2: Valid Alt Settng : 0x01 (read only)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x02 (2 channels)
bmChannelConfig          : 0x00000003 (FL, FR)
iChannelNames            : 0x00 (No String Descriptor)

----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)

---------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00C8
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xC8 (200 bytes per packet)
bInterval                : 0x01 (1 ms)

---------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
bLockDelayUnits          : 0x00
wLockDelay               : 0x0000

-------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0003
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x03 (3 bytes per packet)
bInterval                : 0x01 (1 ms)




--------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x02
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)

----- Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x01 (1)
bmControls               : 0x05
 D1..0: Active Alt Settng: 0x01 (read only)
 D3..2: Valid Alt Settng : 0x01 (read only)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x02 (2 channels)
bmChannelConfig          : 0x00000003 (FL, FR)
iChannelNames            : 0x00 (No String Descriptor)

---- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x03 (3 bytes)
bBitResolution           : 0x18 (24 bits)

---------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x012C
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x12C (300 bytes per packet)
bInterval                : 0x01 (1 ms)

---------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
bLockDelayUnits          : 0x00
wLockDelay               : 0x0000

-------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0003
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x03 (3 bytes per packet)
bInterval                : 0x01 (1 ms)

--------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x02
bInterfaceCount          : 0x01
*!*ERROR  bInterfaceCount must be greater than 1
bFunctionClass           : 0x03 (HID - Human Interface Device)
bFunctionSubClass        : 0x00
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)




----------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)

-------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0100 (HID Version 1.00)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0032 (50 bytes)
  05 0C             Usage Page (Consumer)
  09 01             Usage (Consumer Control)
  A1 01             Collection (Application)
  15 00               Logical Minimum (0)
  25 01               Logical Maximum (1)
  09 E9               Usage (Volume Increment)
  09 EA               Usage (Volume Decrement)
  75 01               Report Size (1)
  95 02               Report Count (2)
  81 02               Input (Var)
  09 E2               Usage (Mute)
  09 00               Usage (Unassigned)
  81 06               Input (Var, Rel)
  09 00               Usage (Unassigned)
  95 04               Report Count (4)
  81 02               Input (Var)
  26 FF 00            Logical Maximum (255)
  09 00               Usage (Unassigned)
  75 08               Report Size (8)
  95 0F               Report Count (15)
  81 02               Input (Var)
  09 00               Usage (Unassigned)
  95 10               Report Count (16)
  91 02               Output (Var)
  C0                End Collection

------------ Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x10 (16 bytes per packet)
bInterval                : 0x01 (1 ms)

--------------- String Descriptors -------------------
none