在Android USB之复合设备(gadget)详解一篇中提到了USB Gadget UAC(USB Audio Class)的使用。Rockchip 平台可以支持 UAC1(兼容 USB Audio Class specification 1.0)和 UAC2(兼容 USB Audio Class specification 2.0)驱动,这两个驱动都可以支持基础的录音和放音功能。
如果要支持音量调节/静音功能,需要添加另外 HID 的控制。
一、某款USB音箱 工作抓包分析(https://www.usbzh.com/article/detail-182.html):
(1)USB音响打开
Length Phase Data -------- ----- ------------------------------ -------------- CTL 01 0b 01 00 01 00 00 00 SET INTERFACE CTL 22 01 00 01 02 00 03 00 SET CUR 3 OUT 80 bb 00 ...
第一行选择接口(接口ID=1,转换接口=1),使用该接口进行数据传输。
第二、三行是发送特定类请求,向端点2(等时传输端点)发送SET_CUR,设置采样率SAMPLING_FREQ_CONTROL(0x0100)选择子的请求,数据长度为3,附带的数据为 80 bb 00,表示采样率为48000。
- 22 表示数据传输给端点.
- 01 表示SET_CUR.
- 00 01:即0x0100,表示选择子SAMPLING_FREQ_CONTROL(0x00:EP_CONTROL_UNDEFINED 0x02:PITCH_CONTROL-高音控制开启为TRUE(1),不开始为FALSE(0))
- 02 00:低字节表示传输的端点。
- 03 00:表示附带的数据长度为3字节。
(2)USB音响关闭
CTL 01 0b 00 00 01 00 00 00 SET INTERFACE
关闭比较简单,直接选择转换接口为0的接口即可.
(3)USB音响音量设置
CTL 21 01 00 02 00 02 02 00 SET CUR 2 OUT 2a 80 *.
向特性单元2发送特定类请求SET_CUR,选择子VOLUME_CONTROL(0x0200)设置音量,数据长度为2。单位是DB.
(4)USB音响静音
CTL 21 01 00 01 00 02 01 00 SET CUR 1 OUT 01 .
向特性单元2发送特定类请求SET_CUR,选择子MUTE_CONTROL(0x0100)设置静音,数据长度为1,值为1 表示静音。
静音并不代表无数据,USB静音时的数据:
192 ISOC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1920 ISOC 00 00 00 00 01 00 00 00 ff ff 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 ff ff 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 01 00 01 00 ff ff 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 00 00 00 00 ff ff 00 00 00 00 ff ff 01 00 ff ff 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 ff ff 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 ff ff 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ff ff 00 00 00 00 00 00 01 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 ff ff ff ff 00 00 ff ff 00 00 00 00 01 00 01 00 02 00 00 00 01 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ff ff 00 00 00 00 01 00 00 00 00 00 ff ff 01 00 00 00 00 00 00 00 01 00 ff ff 00 00 00 00 ff ff 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 01 00 01 00 01 00 00 00 01 00 ff ff 00 00 ff ff 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 ff ff 00 00 ff ff 01 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 ff ff 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 ff ff 00 00 00 00 ff ff 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 01 00 01 00 01 00 01 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 01 00 01 00 01 00 ff ff 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 01 00 00 00 01 00 ff ff 01 00 ff ff 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 ff ff 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 ff ff 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 01 00 00 00 00 00 ff ff 00 00 00 00 00 00 01 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ff ff 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 ff ff 00 00 ff ff ff ff 00 00 ff ff 00 00 00 00 00 00 00 00 ff ff 01 00 00 00 01 00 00 00 01 00 01 00 00 00 ff ff 00 00 00 00 01 00 ff ff 01 00 ff ff 02 00 01 00
二、绿联USB声卡音量设置抓包分析
UAC复合设备(麦克风,扬声器,HID设备)在设备管理器中如下图所示:
在BUSHOUND下如下图所示:
USB输入设备用于音频的控制,使用的是HID方式,其抓包内容如下:
Bus Hound 6.00 capture on Windows Vista (x64). Complements of www.perisoft.net 1 Device - Device ID (followed by the endpoint for USB devices) (72) USB Audio Device Phase - Phase Type CTL USB control transfer ISOC Isochronous transfer OUT Data out transfer RESET bus reset Data - Hex dump of the data transferred Descr - Description of the phase Cmd... - Position in the captured data Device Phase Data Description Cmd.Phase.Ofs(rep) ------ ----- ------------------------------------------------------------------------------------------------------ -------------------------------- ------------------ 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 1.1.0 72.0 OUT ff f6 .. 1.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 2.1.0 72.0 OUT ff f6 .. 2.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 3.1.0 72.0 OUT 3f f7 ?. 3.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 4.1.0 72.0 OUT 3f f7 ?. 4.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 5.1.0 72.0 OUT 7d f7 .. 5.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 6.1.0 72.0 OUT 7d f7 .. 6.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 7.1.0 72.0 OUT bb f7 .. 7.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 8.1.0 72.0 OUT bb f7 .. 8.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 9.1.0 72.0 OUT f8 f7 .. 9.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 10.1.0 72.0 OUT f8 f7 .. 10.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 11.1.0 72.0 OUT 33 f8 3. 11.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 12.1.0 72.0 OUT 33 f8 3. 12.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 13.1.0 72.0 OUT 6e f8 n. 13.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 14.1.0 72.0 OUT 6e f8 n. 14.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 15.1.0 72.0 OUT a8 f8 .. 15.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 16.1.0 72.0 OUT a8 f8 .. 16.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 17.1.0 72.0 OUT e1 f8 .. 17.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 18.1.0 72.0 OUT e1 f8 .. 18.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 19.1.0 72.0 OUT 1a f9 .. 19.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 20.1.0 72.0 OUT 1a f9 .. 20.2.0 72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 21.1.0 72.0 OUT 51 f9 Q. 21.2.0 72.0 CTL 21 01 02 02 00 09 02 00 SET CUR 22.1.0 72.0 OUT 51 f9 Q. 22.2.0 72.1 RESET 23.1.0 72.1 ISOC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 24.1.0(2) 72.1 ISOC 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 01 00 ................................ 26.1.0 72.1 ISOC 93 f6 93 f6 b5 f6 b6 f6 db f6 db f6 02 f7 02 f7 2b f7 2c f7 58 f7 57 f7 87 f7 87 f7 b9 f7 b9 f7 ................+.,.X.W......... 27.1.0 72.1 ISOC 25 ec 25 ec 24 ec 23 ec 23 ec 22 ec 24 ec 24 ec 29 ec 28 ec 2e ec 2e ec 36 ec 37 ec 42 ec 41 ec %.%.$.#.#.".$.$.).(.....6.7.B.A. 28.1.0 72.1 ISOC 64 ed 64 ed 4d ed 4c ed 39 ed 38 ed 26 ed 25 ed 13 ed 15 ed 05 ed 04 ed f7 ec f7 ec eb ec eb ec d.d.M.L.9.8.&.%................. 29.1.0 72.1 ISOC 60 ef 61 ef 3b ef 3b ef 17 ef 17 ef f4 ee f5 ee d4 ee d4 ee b5 ee b5 ee 98 ee 98 ee 7d ee 7d ee `.a.;.;......................... 30.1.0 72.1 ISOC 36 f1 36 f1 ff f0 ff f0 cb f0 ca f0 97 f0 97 f0 66 f0 66 f0 37 f0 37 f0 08 f0 09 f0 dd ef dd ef 6.6.............f.f.7.7......... 31.1.0 72.1 ISOC 34 f4 35 f4 ec f3 eb f3 a6 f3 a6 f3 61 f3 62 f3 1f f3 1f f3 e0 f2 df f2 a1 f2 a1 f2 65 f2 65 f2 4.5.........a.b.............e.e. 32.1.0 72.1 ISOC 88 f7 87 f7 2f f7 2f f7 d8 f6 d8 f6 84 f6 83 f6 31 f6 32 f6 e0 f5 e0 f5 92 f5 91 f5 44 f5 44 f5 ...././.........1.2.........D.D. 33.1.0 72.1 ISOC 30 fb 30 fb c8 fa c8 fa 63 fa 63 fa ff f9 fe f9 9b f9 9c f9 3a f9 3a f9 db f8 da f8 7b f8 7b f8 0.0.....c.c.........:.:......... 34.1.0 72.1 ISOC 15 ff 15 ff a8 fe a7 fe 3d fe 3c fe d0 fd d0 fd 64 fd 65 fd fb fc fb fc 93 fc 91 fc 29 fc 29 fc ........=.<.....d.e.........).). 35.1.0 72.1 ISOC 28 03 27 03 bc 02 bd 02 51 02 51 02 e6 01 e6 01 7a 01 7a 01 0f 01 0f 01 a3 00 a3 00 38 00 39 00 (.'.....Q.Q.....z.z.........8.9. 36.1.0 72.1 ISOC b7 06 b7 06 53 06 52 06 ee 05 ed 05 88 05 88 05 22 05 22 05 bc 04 bc 04 56 04 56 04 f0 03 ef 03 ....S.R.........".".....V.V..... 37.1.0 72.1 ISOC c6 09 c6 09 6b 09 6b 09 0e 09 0f 09 b1 08 b1 08 53 08 54 08 f4 07 f4 07 95 07 96 07 35 07 34 07 ....k.k.........S.T.........5.4. 38.1.0
USB标准请求及描述符在线分析(https://www.usbzh.com/tool/usb.html):
(1)调节音量的USB标准请求内容及解析如下:
72.0 CTL 21 01 01 02 00 09 02 00 SET CUR 1.1.0 72.0 OUT ff f6 .. 1.2.0
0x21, // bmRequestType: Dir: H2D, Type: Class, Recipient: Interface 0x01, // bRequest 0x01, 0x02, // wValue[0:15] = 0x0201 0x00, 0x09, // wIndex = 0x0900 0x02, 0x00, // wLength = 2 // 8 bytes
(2)报告描述符内容及解析如下:
73.0 IN 05 0c 09 01 a1 01 15 00 25 01 09 e9 09 ea 75 01 95 02 81 02 09 e2 09 00 81 06 05 0b 09 20 95 01 ........%.....u.............. .. 29.2.0 81 06 05 0c 09 00 95 03 81 02 26 ff 00 09 00 75 08 95 03 81 02 09 00 95 04 91 02 c0 ..........&....u............ 29.2.32 73.7 IN 00 00 00 00 .... 30.1.0
0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x09, 0xE9, // Usage (Volume Increment) 0x09, 0xEA, // Usage (Volume Decrement) 0x75, 0x01, // Report Size (1) 0x95, 0x02, // Report Count (2) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0xE2, // Usage (Mute) 0x09, 0x00, // Usage (Unassigned) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x0B, // Usage Page (Telephony) 0x09, 0x20, // Usage (Hook Switch) 0x95, 0x01, // Report Count (1) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x00, // Usage (Unassigned) 0x95, 0x03, // Report Count (3) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x09, 0x00, // Usage (Unassigned) 0x75, 0x08, // Report Size (8) 0x95, 0x03, // Report Count (3) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0x00, // Usage (Unassigned) 0x95, 0x04, // Report Count (4) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 60 bytes
完整的usb设备描述符:
=========================== USB Port4 =========================== Connection Status : 0x01 (Device is connected) Port Chain : 2-1-4 ========================== Summary ========================= Vendor ID : 0x0D8C (C-MEDIA ELECTRONICS INC.) Product ID : 0x0014 USB Version : 1.10 Port maximum Speed : High-Speed Device maximum Speed : Full-Speed Device Connection Speed : Full-Speed Self powered : no Demanded Current : 100 mA Used Endpoints : 2 ======================== USB Device ======================== +++++++++++++++++ Device Information ++++++++++++++++++ Device Description : USB Composite Device Device Path : \\?\USB#VID_0D8C&PID_0014#6&7da4f7c&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE) Kernel Name : \Device\USBPDO-9 Device ID : USB\VID_0D8C&PID_0014\6&7DA4F7C&0&4 Hardware IDs : USB\VID_0D8C&PID_0014&REV_0100 USB\VID_0D8C&PID_0014 Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0040 (GUID_DEVCLASS_USB) Driver : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.22621.608 Date: 2022-10-12) Driver Inf : C:\WINDOWS\inf\usb.inf Legacy BusType : PNPBus Class : USB Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB) Service : usbccgp Enumerator : USB Location Info : Port_#0004.Hub_#0003 Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4) Container ID : {785c39f1-6e2a-11ed-a4ce-8cb87eb37742} Manufacturer Info : (标准 USB 主控制器) Capabilities : 0x84 (Removable, SurpriseRemovalOK) Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 Address : 4 HcDisableSelectiveSuspend: 0 EnableSelectiveSuspend : 0 SelectiveSuspendEnabled : 0 EnhancedPowerMgmtEnabled : 0 IdleInWorkingState : 0 WakeFromSleepState : 0 Power State : D0 (supported: D0, D2, D3, wake from D0, wake from D2) Child Device 1 : USB Audio Device Device Path 1 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 2 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 3 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 4 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 5 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 6 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 7 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 8 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 9 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 10 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 11 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 12 : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Kernel Name : \Device\00000454 Device ID : USB\VID_0D8C&PID_0014&MI_00\7&2F7B51AE&0&0000 Class : MEDIA Driver KeyName : {4d36e96c-e325-11ce-bfc1-08002be10318}\0027 (GUID_DEVCLASS_MEDIA) Service : usbaudio Location : 0000.0014.0000.001.004.000.000.000.000 LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USBMI(0) PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USB(4) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USBMI(0) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USB(4) Child Device 1 : 扬声器 (USB Audio Device) (音频端点) Device ID : SWD\MMDEVAPI\{0.0.0.00000000}.{87FF8E0D-21EE-4057-971D-3182F257AF34} Class : AudioEndpoint Driver KeyName : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0072 (AUDIOENDPOINT_CLASS_UUID) Child Device 2 : 麦克风 (USB Audio Device) (音频端点) Device ID : SWD\MMDEVAPI\{0.0.1.00000000}.{62244A14-B910-4942-9BFB-50D623AC91A1} Class : AudioEndpoint Driver KeyName : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0073 (AUDIOENDPOINT_CLASS_UUID) Child Device 2 : USB 输入设备 Device ID : USB\VID_0D8C&PID_0014&MI_03\7&2F7B51AE&0&0003 Class : HIDClass Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0080 (GUID_DEVCLASS_HIDCLASS) Service : HidUsb Location : 0000.0014.0000.001.004.000.000.000.000 LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USBMI(3) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USBMI(3) Child Device 1 : 符合 HID 标准的用户控制设备 Device Path : \\?\HID#VID_0D8C&PID_0014&MI_03#8&32eba1a5&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID) Kernel Name : \Device\00000457 Device ID : HID\VID_0D8C&PID_0014&MI_03\8&32EBA1A5&0&0000 Class : HIDClass Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0081 (GUID_DEVCLASS_HIDCLASS) +++++++++++++++++ Registry USB Flags +++++++++++++++++ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags GlobalDisableSerNumGen : REG_BINARY 00 ---------------- Connection Information --------------- Connection Index : 0x04 (Port 4) Connection Status : 0x01 (DeviceConnected) Current Config Value : 0x01 (Configuration 1) Device Address : 0x36 (54) Is Hub : 0x00 (no) Device Bus Speed : 0x01 (Full-Speed) Number Of Open Pipes : 0x01 (1 pipe to data endpoints) Pipe[0] : EndpointID=7 Direction=IN ScheduleOffset=0 Type=Interrupt Data (HexDump) : 04 00 00 00 12 01 10 01 00 00 00 08 8C 0D 14 00 ................ 00 01 01 02 00 01 01 01 00 36 00 01 00 00 00 01 .........6...... 00 00 00 07 05 87 03 04 00 02 00 00 00 00 .............. --------------- Connection Information V2 ------------- Connection Index : 0x04 (4) Length : 0x10 (16 bytes) SupportedUsbProtocols : 0x03 Usb110 : 1 (yes, port supports USB 1.1) Usb200 : 1 (yes, port supports USB 2.0) Usb300 : 0 (no, port not supports USB 3.0) ReservedMBZ : 0x00 Flags : 0x00 DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher) DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher) DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher) DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher) ReservedMBZ : 0x00 Data (HexDump) : 04 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 ................ ---------------------- Device Descriptor ---------------------- bLength : 0x12 (18 bytes) bDescriptorType : 0x01 (Device Descriptor) bcdUSB : 0x110 (USB Version 1.10) bDeviceClass : 0x00 (defined by the interface descriptors) bDeviceSubClass : 0x00 bDeviceProtocol : 0x00 bMaxPacketSize0 : 0x08 (8 bytes) idVendor : 0x0D8C (C-MEDIA ELECTRONICS INC.) idProduct : 0x0014 bcdDevice : 0x0100 iManufacturer : 0x01 (String Descriptor 1) Language 0x0409 : "C-Media Electronics Inc." iProduct : 0x02 (String Descriptor 2) Language 0x0409 : "USB Audio Device" iSerialNumber : 0x00 (No String Descriptor) bNumConfigurations : 0x01 (1 Configuration) Data (HexDump) : 12 01 10 01 00 00 00 08 8C 0D 14 00 00 01 01 02 ................ 00 01 .. ------------------ Configuration Descriptor ------------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x02 (Configuration Descriptor) wTotalLength : 0x00FD (253 bytes) bNumInterfaces : 0x04 (4 Interfaces) bConfigurationValue : 0x01 (Configuration 1) iConfiguration : 0x00 (No String Descriptor) bmAttributes : 0x80 D7: Reserved, set 1 : 0x01 D6: Self Powered : 0x00 (no) D5: Remote Wakeup : 0x00 (no) D4..0: Reserved, set 0 : 0x00 MaxPower : 0x32 (100 mA) Data (HexDump) : 09 02 FD 00 04 01 00 80 32 09 04 00 00 00 01 01 ........2....... 00 00 0A 24 01 00 01 64 00 02 01 02 0C 24 02 01 ...$...d.....$.. 01 01 00 02 03 00 00 00 0C 24 02 02 01 02 00 01 .........$...... 01 00 00 00 09 24 03 06 01 03 00 09 00 09 24 03 .....$........$. 07 01 01 00 08 00 07 24 05 08 01 0A 00 0A 24 06 .......$......$. 09 0F 01 01 02 02 00 09 24 06 0A 02 01 43 00 00 ........$....C.. 09 24 06 0D 02 01 03 00 00 0D 24 04 0F 02 01 0D .$........$..... 02 03 00 00 00 00 09 04 01 00 00 01 02 00 00 09 ................ 04 01 01 01 01 02 00 00 07 24 01 01 01 01 00 0E .........$...... 24 02 01 02 02 10 02 80 BB 00 44 AC 00 09 05 01 $.........D..... 09 C8 00 01 00 00 07 25 01 01 01 01 00 09 04 02 .......%........ 00 00 01 02 00 00 09 04 02 01 01 01 02 00 00 07 ................ 24 01 07 01 01 00 0E 24 02 01 01 02 10 02 80 BB $......$........ 00 44 AC 00 09 05 82 0D 64 00 01 00 00 07 25 01 .D......d.....%. 01 00 00 00 09 04 03 00 01 03 00 00 00 09 21 00 ..............!. 01 00 01 22 3C 00 07 05 87 03 04 00 02 ..."<........ ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x00 bAlternateSetting : 0x00 bNumEndpoints : 0x00 (Default Control Pipe only) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x01 (Audio Control) bInterfaceProtocol : 0x00 iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 00 00 00 01 01 00 00 ......... ------ Audio Control Interface Header Descriptor ------ bLength : 0x0A (10 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x01 (Header) bcdADC : 0x0100 wTotalLength : 0x0064 (100 bytes) bInCollection : 0x02 baInterfaceNr[1] : 0x01 baInterfaceNr[2] : 0x02 Data (HexDump) : 0A 24 01 00 01 64 00 02 01 02 .$...d.... ------- Audio Control Input Terminal Descriptor ------- bLength : 0x0C (12 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x02 (Input Terminal) bTerminalID : 0x01 wTerminalType : 0x0101 (USB streaming) bAssocTerminal : 0x00 bNrChannels : 0x02 (2 channels) wChannelConfig : 0x0003 (L, R) iChannelNames : 0x00 (No String Descriptor) iTerminal : 0x00 (No String Descriptor) Data (HexDump) : 0C 24 02 01 01 01 00 02 03 00 00 00 .$.......... ------- Audio Control Input Terminal Descriptor ------- bLength : 0x0C (12 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x02 (Input Terminal) bTerminalID : 0x02 wTerminalType : 0x0201 (Microphone) bAssocTerminal : 0x00 bNrChannels : 0x01 (1 channel) wChannelConfig : 0x0001 (L) iChannelNames : 0x00 (No String Descriptor) iTerminal : 0x00 (No String Descriptor) Data (HexDump) : 0C 24 02 02 01 02 00 01 01 00 00 00 .$.......... ------- Audio Control Output Terminal Descriptor ------ bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x03 (Output Terminal) bTerminalID : 0x06 wTerminalType : 0x0301 (Speaker) bAssocTerminal : 0x00 (0) bSourceID : 0x09 (9) iTerminal : 0x00 (No String Descriptor) Data (HexDump) : 09 24 03 06 01 03 00 09 00 .$....... ------- Audio Control Output Terminal Descriptor ------ bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x03 (Output Terminal) bTerminalID : 0x07 wTerminalType : 0x0101 (USB streaming) bAssocTerminal : 0x00 (0) bSourceID : 0x08 (8) iTerminal : 0x00 (No String Descriptor) Data (HexDump) : 09 24 03 07 01 01 00 08 00 .$....... ------- Audio Control Selector Unit Descriptor -------- bLength : 0x07 (7 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x05 (Selector Unit) bUnitID : 0x08 bNrInPins : 0x01 (1 pins) baSourceID[1] : 0x0A iSelector : 0x00 (No String Descriptor) Data (HexDump) : 07 24 05 08 01 0A 00 .$..... -------- Audio Control Feature Unit Descriptor -------- bLength : 0x0A (10 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x06 (Feature Unit) bUnitID : 0x09 (9) bSourceID : 0x0F (15) bControlSize : 0x01 (1 byte per control) bmaControls[0] : 0x01 D0: Mute : 1 D1: Volume : 0 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 bmaControls[1] : 0x02 D0: Mute : 0 D1: Volume : 1 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 bmaControls[2] : 0x02 D0: Mute : 0 D1: Volume : 1 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 iFeature : 0x00 (No String Descriptor) Data (HexDump) : 0A 24 06 09 0F 01 01 02 02 00 .$........ -------- Audio Control Feature Unit Descriptor -------- bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x06 (Feature Unit) bUnitID : 0x0A (10) bSourceID : 0x02 (2) bControlSize : 0x01 (1 byte per control) bmaControls[0] : 0x43 D0: Mute : 1 D1: Volume : 1 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 1 D7: Delay : 0 bmaControls[1] : 0x00 D0: Mute : 0 D1: Volume : 0 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 iFeature : 0x00 (No String Descriptor) Data (HexDump) : 09 24 06 0A 02 01 43 00 00 .$....C.. -------- Audio Control Feature Unit Descriptor -------- bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x06 (Feature Unit) bUnitID : 0x0D (13) bSourceID : 0x02 (2) bControlSize : 0x01 (1 byte per control) bmaControls[0] : 0x03 D0: Mute : 1 D1: Volume : 1 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 bmaControls[1] : 0x00 D0: Mute : 0 D1: Volume : 0 D2: Bass : 0 D3: Mid : 0 D4: Treble : 0 D5: Graphic Equalizer : 0 D6: Automatic Gain : 0 D7: Delay : 0 iFeature : 0x00 (No String Descriptor) Data (HexDump) : 09 24 06 0D 02 01 03 00 00 .$....... --------- Audio Control Mixer Unit Descriptor --------- bLength : 0x0D (13 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x04 (Mixer Unit) bUnitID : 0x0F bNrInPins : 0x02 (2 pins) baSourceID[1] : 0x01 baSourceID[2] : 0x0D bNrChannels : 0x02 (2 channels) wChannelConfig : 0x0003 (R) iChannelNames : 0x00 (No String Descriptor) bmControls (HexDump) : 00 . iMixer : 0x00 (No String Descriptor) Data (HexDump) : 0D 24 04 0F 02 01 0D 02 03 00 00 00 00 .$........... ---------------- 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 : 0x00 iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 01 00 00 01 02 00 00 ......... ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x01 bAlternateSetting : 0x01 bNumEndpoints : 0x01 (1 Endpoint) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x02 (Audio Streaming) bInterfaceProtocol : 0x00 iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 01 01 01 01 02 00 00 ......... -------- Audio Streaming Interface Descriptor --------- bLength : 0x07 (7 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x01 bTerminalLink : 0x01 bDelay : 0x01 wFormatTag : 0x0001 (PCM) Data (HexDump) : 07 24 01 01 01 01 00 .$..... ------- Audio Streaming Format Type Descriptor -------- bLength : 0x0E (14 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x02 (Format Type) bFormatType : 0x01 (FORMAT_TYPE_I) bNrChannels : 0x02 (2 channels) bSubframeSize : 0x02 (2 bytes per subframe) bBitResolution : 0x10 (16 bits per sample) bSamFreqType : 0x02 (supports 2 sample frequencies) tSamFreq[1] : 0x0BB80 (48000 Hz) tSamFreq[2] : 0x0AC44 (44100 Hz) Data (HexDump) : 0E 24 02 01 02 02 10 02 80 BB 00 44 AC 00 .$.........D.. ----------------- Endpoint Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x01 (Direction=OUT EndpointID=1) bmAttributes : 0x09 (TransferType=Isochronous SyncType=Adaptive EndpointType=Data) wMaxPacketSize : 0x00C8 (200 bytes) bInterval : 0x01 (1 ms) bRefresh : 0x00 bSynchAddress : 0x00 Data (HexDump) : 09 05 01 09 C8 00 01 00 00 ......... ----------- Audio Data Endpoint Descriptor ------------ bLength : 0x07 (7 bytes) bDescriptorType : 0x25 (Audio Endpoint Descriptor) bDescriptorSubtype : 0x01 (General) bmAttributes : 0x01 D0 : Sampling Freq : 0x01 (supported) D1 : Pitch : 0x00 (not supported) D6..2: Reserved : 0x00 D7 : MaxPacketsOnly : 0x00 (no) bLockDelayUnits : 0x01 (Milliseconds) wLockDelay : 0x0001 (1 ms) Data (HexDump) : 07 25 01 01 01 01 00 .%..... ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x02 bAlternateSetting : 0x00 bNumEndpoints : 0x00 (Default Control Pipe only) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x02 (Audio Streaming) bInterfaceProtocol : 0x00 iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 02 00 00 01 02 00 00 ......... ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x02 bAlternateSetting : 0x01 bNumEndpoints : 0x01 (1 Endpoint) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x02 (Audio Streaming) bInterfaceProtocol : 0x00 iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 02 01 01 01 02 00 00 ......... -------- Audio Streaming Interface Descriptor --------- bLength : 0x07 (7 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x01 bTerminalLink : 0x07 bDelay : 0x01 wFormatTag : 0x0001 (PCM) Data (HexDump) : 07 24 01 07 01 01 00 .$..... ------- Audio Streaming Format Type Descriptor -------- bLength : 0x0E (14 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x02 (Format Type) bFormatType : 0x01 (FORMAT_TYPE_I) bNrChannels : 0x01 (1 channel) bSubframeSize : 0x02 (2 bytes per subframe) bBitResolution : 0x10 (16 bits per sample) bSamFreqType : 0x02 (supports 2 sample frequencies) tSamFreq[1] : 0x0BB80 (48000 Hz) tSamFreq[2] : 0x0AC44 (44100 Hz) Data (HexDump) : 0E 24 02 01 01 02 10 02 80 BB 00 44 AC 00 .$.........D.. ----------------- Endpoint Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x82 (Direction=IN EndpointID=2) bmAttributes : 0x0D (TransferType=Isochronous SyncType=Synchronous EndpointType=Data) wMaxPacketSize : 0x0064 (100 bytes) bInterval : 0x01 (1 ms) bRefresh : 0x00 bSynchAddress : 0x00 Data (HexDump) : 09 05 82 0D 64 00 01 00 00 ....d.... ----------- Audio Data Endpoint Descriptor ------------ bLength : 0x07 (7 bytes) bDescriptorType : 0x25 (Audio Endpoint Descriptor) bDescriptorSubtype : 0x01 (General) bmAttributes : 0x01 D0 : Sampling Freq : 0x01 (supported) D1 : Pitch : 0x00 (not supported) D6..2: Reserved : 0x00 D7 : MaxPacketsOnly : 0x00 (no) bLockDelayUnits : 0x00 (Undefined) wLockDelay : 0x0000 Data (HexDump) : 07 25 01 01 00 00 00 .%..... ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x03 bAlternateSetting : 0x00 bNumEndpoints : 0x01 (1 Endpoint) bInterfaceClass : 0x03 (HID - Human Interface Device) bInterfaceSubClass : 0x00 (None) bInterfaceProtocol : 0x00 (None) iInterface : 0x00 (No String Descriptor) Data (HexDump) : 09 04 03 00 01 03 00 00 00 ......... ------------------- HID Descriptor -------------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x21 (HID Descriptor) bcdHID : 0x0100 (HID Version 1.00) bCountryCode : 0x00 (00 = not localized) bNumDescriptors : 0x01 Data (HexDump) : 09 21 00 01 00 01 22 3C 00 .!...."<. Descriptor 1: bDescriptorType : 0x22 (Class=Report) wDescriptorLength : 0x003C (60 bytes) Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt) ----------------- Endpoint Descriptor ----------------- bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x87 (Direction=IN EndpointID=7) bmAttributes : 0x03 (TransferType=Interrupt) wMaxPacketSize : 0x0004 (4 bytes) bInterval : 0x02 (2 ms) Data (HexDump) : 07 05 87 03 04 00 02 ....... -------------------- String Descriptors ------------------- ------ String Descriptor 0 ------ bLength : 0x04 (4 bytes) bDescriptorType : 0x03 (String Descriptor) Language ID[0] : 0x0409 (English - United States) Data (HexDump) : 04 03 09 04 .... ------ String Descriptor 1 ------ bLength : 0x3E (62 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "C-Media Electronics Inc.°°°°°°" *!*ERROR contains 6 NULL characters Data (HexDump) : 3E 03 43 00 2D 00 4D 00 65 00 64 00 69 00 61 00 >.C.-.M.e.d.i.a. 20 00 45 00 6C 00 65 00 63 00 74 00 72 00 6F 00 .E.l.e.c.t.r.o. 6E 00 69 00 63 00 73 00 20 00 49 00 6E 00 63 00 n.i.c.s. .I.n.c. 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 .............. ------ String Descriptor 2 ------ bLength : 0x3E (62 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "USB Audio Device°°°°°°°°°°°°°°" *!*ERROR contains 14 NULL characters Data (HexDump) : 3E 03 55 00 53 00 42 00 20 00 41 00 75 00 64 00 >.U.S.B. .A.u.d. 69 00 6F 00 20 00 44 00 65 00 76 00 69 00 63 00 i.o. .D.e.v.i.c. 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e............... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............
标签:02,00,01,USB,实例,ff,Device,UAC From: https://www.cnblogs.com/blogs-of-lxl/p/16939229.html