HID设备Call State Management Control未发送报告问题排查
问题排查与解决建议
针对你用HID Call State Management Control检测会议状态却收不到输出报告的问题,结合HUTRR106规范和Windows平台特性,整理以下排查方向和修正方案:
一、先确认描述符的规范性
你的描述符存在两处可以优化的地方,可能影响系统识别:
- 输出字段缺少
LogicalMinimum和LogicalMaximum定义,虽然HID解析器可能默认补全,但明确声明更符合规范; - 若仅需要接收会议状态(而非主动发送静音切换指令),可以移除冗余的Input部分,避免干扰。
修正后的描述符示例:
0x05, 0x01, // UsagePage(Generic Desktop) 0x09, 0x13, // UsageId(Call State Management Control) 0xA1, 0x01, // Collection(Application) 0x85, 0x01, // ReportId(1) // 输出段:会议状态LED指示 0x09, 0xE0, // UsageId(Call Active LED) 0x15, 0x00, // LogicalMinimum(0) 0x25, 0x01, // LogicalMaximum(1) 0x75, 0x01, // ReportSize(1) 0x95, 0x01, // ReportCount(1) 0x91, 0x22, // Output(Data, Variable, Absolute, NoPreferredState) 0x09, 0xE2, // UsageId(Call Mute LED) 0x91, 0x22, // Output(Data, Variable, Absolute, NoPreferredState) 0x75, 0x06, // ReportSize(6) 0x95, 0x01, // ReportCount(1) 0x91, 0x03, // Output(Constant, Variable, Absolute) 0xC0, // EndCollection()
二、检查Windows设备识别逻辑
Windows对HID设备的用法识别依赖正确的设备注册,若系统未将你的设备识别为「Call State Management Control」,可能不会转发相关报告:
- 打开设备管理器,找到你的HID设备,查看属性中的「详细信息」→「硬件ID」,确认VID/PID正确;
- 编写自定义INF文件,指定设备的Usage Page和Usage ID,让系统加载对应逻辑(示例如下,替换你的VID/PID):
[Version] Signature="$Windows NT$" Class=HIDClass ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} Provider=YourManufacturer DriverVer=01/01/2024,1.0.0.0 [Manufacturer] YourManufacturer=CallStateDevice,NTamd64 [CallStateDevice.NTamd64] Call State Monitor=Device_Install, USB\VID_XXXX&PID_YYYY [Device_Install] Include=hidclass.inf Needs=HIDClass_Install [Device_Install.HW] AddReg=Device_AddReg [Device_AddReg] HKR,,UsagePage,0x10001,0x01 HKR,,Usage,0x10001,0x13 [Strings] YourManufacturer="你的厂商名称" Call State Monitor="会议状态检测HID设备"
- 安装INF文件后,重新插拔设备,确认系统识别为对应类型。
三、验证设备固件的报告处理逻辑
之前处理CAPS LOCK时,键盘LED报告通常不带Report ID或使用Report ID 0,而当前Call State报告使用Report ID 1,需确认固件:
- 正确注册了Report ID为1的Set Report回调;
- 回调函数中正确解析输出字节的位定义:bit0对应Call Active状态,bit1对应Call Mute状态,剩余6位为常量。
四、确认会议软件的支持情况
并非所有会议软件都会主动发送HUTRR106规范的Call State报告:
- 部分软件仅针对认证的商用会议硬件发送该报告,自定义设备可能无法触发;
- 可以先用HID调试工具(如HID Terminal)手动发送Report ID为1的Set Report指令,验证设备是否能正常接收,排除设备本身的问题。
内容的提问来源于stack exchange,提问作者joseph ahn
相关产品推荐
相关产品推荐

