UAC设备实例分析
+ -

华为UAC耳机 概述

2021-02-08 2560 2

本人手中有一个华为的TYPE-C耳机,其实是一个复合设备(usbccgp.sys)。这个复合设备总共有三个分设备,分别为HeadPhone(耳机),Microphone(麦克风)和一个自定义的HID设备。

在设备管理器中设备树关系如下:
TYPE-C耳机

设备的硬件ID如下:

  • USB\VID_12D1&PID_3A07&REV_0024(USB Composite Device)
    • USB\VID_12D1&PID_3A07&REV_0024&MI_00(HUAWEI USB-C HEADSET)
      • MMDEVAPI\AudioEndpoints(耳机 (HUAWEI USB-C HEADSET))
      • MMDEVAPI\AudioEndpoints(麦克风 (HUAWEI USB-C HEADSET))
    • USB\VID_12D1&PID_3A07&REV_0024&MI_03(USB 输入设备)
      • HID\VID_12D1&PID_3A07&REV_0024&MI_03(人体学输入设备)

硬件ID上分析可知:驱动从接口0开始的是UAC复合设备,一般情况下0接口是UAC的控制,1接口是UAC音频流,后续可能还有音频流如接口2。接口3是用于HID的复合设备。

使用UsbTreeView.exe工具显示的设备信息如下:


        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Composite Device
Device Path              : \\?\USB#VID_12D1&PID_3A07#0296A100000000000000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name              : \Device\USBPDO-4
Device ID                : USB\VID_12D1&PID_3A07\0296A100000000000000000000000
Hardware IDs             : USB\VID_12D1&PID_3A07&REV_0024 USB\VID_12D1&PID_3A07
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0006 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.18362.1110  Date: 2020-10-17)
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_#0008.Hub_#0001
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(8), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS08)
Container ID             : {39f77723-d0e6-5a93-99d2-4d2fa46e3984}
Manufacturer Info        : (标准 USB 主控制器)
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 8
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D1, D2, D3, wake from D0, wake from D1, wake from D2)
 Child Device 1          : HUAWEI USB-C HEADSET (USB Audio Device)
  Device Path 1          : \\?\USB#VID_12D1&PID_3A07&MI_00#6&a006c3d&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global (AM_KSCATEGORY_AUDIO)
  Device Path 2          : \\?\USB#VID_12D1&PID_3A07&MI_00#6&a006c3d&0&0000#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_RENDER)
  Device Path 3          : \\?\USB#VID_12D1&PID_3A07&MI_00#6&a006c3d&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Kernel Name            : \Device\00000090
  Device ID              : USB\VID_12D1&PID_3A07&MI_00\6&A006C3D&0&0000
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0012 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
   Child Device 1        : 耳机 (HUAWEI USB-C HEADSET) (音频端点)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.0.00000000}.{aa115463-a901-4515-8355-445771a72cad}#{e6327cad-dcec-4949-ae8a-991e976a79d2} (DEVINTERFACE_AUDIO_RENDER)
    Kernel Name          : \Device\000000dd
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{AA115463-A901-4515-8355-445771A72CAD}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0017 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : 麦克风 (HUAWEI USB-C HEADSET) (音频端点)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.1.00000000}.{e2ee91ee-5d4d-48bf-ad42-e61f69e4a7b2}#{2eef81be-33fa-4800-9670-1cd474972c3f} (DEVINTERFACE_AUDIO_CAPTURE)
    Kernel Name          : \Device\000000e2
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{E2EE91EE-5D4D-48BF-AD42-E61F69E4A7B2}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0016 (AUDIOENDPOINT_CLASS_UUID)
 Child Device 2          : USB 输入设备
  Device ID              : USB\VID_12D1&PID_3A07&MI_03\6&A006C3D&0&0003
  Class                  : HIDClass
  Driver KeyName         : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0025 (GUID_DEVCLASS_HIDCLASS)
  Service                : HidUsb
   Child Device 1        : 符合 HID 标准的用户控制设备
    Device Path          : \\?\HID#VID_12D1&PID_3A07&MI_03#7&288cea76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
    Kernel Name          : \Device\00000094
    Device ID            : HID\VID_12D1&PID_3A07&MI_03\7&288CEA76&0&0000
    Class                : HIDClass
    Driver KeyName       : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0026 (GUID_DEVCLASS_HIDCLASS)
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

华为UAC耳机 音频控制接口
音频控制接口占用接口ID=0,音频控制接口的描述符结构布局如下:USB标准接口描述符UAC音频控制接口头描述符IDSId描述    音频控制输入终端描述符1USB Streaming   ......
华为UAC耳机的工作过程数据分析
华为UAC耳机工作时,首先需要打开设备,然后读取数据,播放过程后,需要关闭设备。这里我们使用BusHound抓包(省略掉重复的数据包:由于这些特定类请求是发给UAC音频控制终端/实体或接口的,所以我们先回顾一下UAC音频控制单元的一些ID,然后对照其选择子进行分析。UAC音频控制接口头描述符ID描述......
华为UAC耳机 配置描述符
配置描述符的大小其实不光包括配置描述符自身,也包括后续的所有描述符。这里我们只先介绍一下配置描述符,后续的接口描述符和其它UAC相关描述符在后续一节介绍。配置描述符的内容如下: ------------------ Configuration Descriptor --------------......
华为UAC麦克风的工作过程数据分析
看完了耳机的数据分析,再来分析麦克风,就相对来说很简单了,这是因为:第一:麦克风没有音频控制特效单元描述符,所以少了很多特定类请求。第二:麦克风只有一个音频流转换接口,且只支持采样率为48000HZ 16位。具体的过程见下:Length Phase Data-------- --......
华为UAC耳机 设备描述符
从UAC的设备描述符可知,音频是属于接口级别的,在UAC1.0版本,是需要将相关的配置参数bDeviceClass,bDeviceSubClass,bDeviceProtocoll置为0。对于别的参数,可参考USB设备描述符进行相关配置。本设备只有一个配置描述符,且端点0的bMaxPacketSiz......
华为UAC耳机 概述
本人手中有一个华为的TYPE-C耳机,其实是一个复合设备(usbccgp.sys)。这个复合设备总共有三个分设备,分别为HeadPhone(耳机),Microphone(麦克风)和一个自定义的HID设备。在设备管理器中设备树关系如下:设备的硬件ID如下:USBVID_12D1&PID_3A......
华为UAC耳机 字符串描述符
字符串描述符 -------------------- String Descriptors ------------------- ------ String Descriptor 0 ------bLength : 0x04 (......
华为UAC耳机 HID接口
---------------- Interface Descriptor ----------------- HIDbLength : 0x09 (9 bytes)bDescriptorType : 0x04 (Interf......
UAC 传输速度
传统3.5mm模拟耳机逐步被USB数字耳机代替。采用USB协议进行音频播放使用USB Audio Class协议(简称UAC).UAC2.0由于支持USB High Speed,从而天生带有高带宽、低延时的优势。这些优势转化为对于Hi-Resolution Auido的支持。UAC1.0最高只支持到......
华为UAC耳机 音频流接口
音频流接口分为麦克风和耳机(headphone)。由于音频流传输只能是同步/等时传输方式进行,故在音频流接口描述符中,接口bAlternateSetting=0时为默认的无音频输出接口即无端点描述符,从bAlternateSetting=1开始有数据传输,即应该有等时传输端点描述符。麦克风在麦克风下......
耳机音量按键HID报告描述符
耳机音量按键在windows的设备管理器中如下:其报告描述符的原始数据为:05 0c 09 01 a1 01 85 01 15 00 25 01 75 01 95 01 09 e9 81 02 09 ea 81 02 09 cd 81 02 09 b5 81 02 09 b6 81......
UAC耳机自带HID调节声音报告描述符
UAC耳机自速的外接按钮实现声音的控制:增加音量也减少音量。设备管理器如下:05 0C //0 GLOBAL_USAGE_PAGE(Consumer) 09 01 //2 LOCAL_USAGE( Consumer Control ) A1 01 /......
UAC耳机扬声器音频写PCM数据的三种方式
UAC耳机扬声器音频PCM数据有三种方式,分别为:异步传输 Asynchronous同步传输 synchronous 自适应传输 adaptive。UAC音频数据同步传输同步传输是三种方式中最低质量的,所以也是使用于一搬的普通产品中。同步传输时只要主机发送数据,设备端都会接收数据。但由于两个时......
以为华耳机为例分析UAC音频输出设备的数据格式选择
和UVC相机的不同,UAC音频的数据格式如单通道的数据长度、采样率等是通过SET_INTERFACE实现的,多个不同的格式是接口描述符的bAlternateSetting字段不同而不同。例如本人买的华为耳机自带的TYPE-C接口,采用的是UAC规范实现的是耳机和麦克风功能。这里我们以耳机为例,在音......
华为耳机UAC音频设备44100采样率2通道每通道2字节的数据传输实例分析
呃,,,群里有人说,怎么还是华为,,,确实是华为耳机,因为手中经常使用的就是这个手机自带的TYPE-C华为耳机,所以也就是顺手的事。不要在乎是什么设备,其实我觉地华为耳机挺好的,手机当然也一样,同时也能帮我们抓包分析学习一些UAC的协议,多么让人感谢啊。言归正转,华为耳机以前的文章我们知道,其支持多......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!