HID协议SET_IDLE请求的解释说明
2022-03-04
2821
1
SET_IDLE请求会使HID设备相关的中断管道(端点)停止定时上报报告数据,直到有新的事件(有效数据)或直到的SET_IDLE时才继续上报报告数据。
在SET_IDLE的时间周期内,如果没有变化的情况下,由设备周期性地返回NAK。
关于SET_IDLE的功能讨论
HID设备以中断的方向进行上报数据给方机,比如说USB鼠标键盘,当无操作时,设备无须上报给数据给主机。不过USB设备的中断其实是轮询方式的,也就是说无论你是不是上报数据,主机都会发送IN的请求事务,这样会造成USB总线带宽的浪费。
当主机获取到配置描述符之后,通过SET_CONFIGURE设置描述符之后就是SET_IDLE,这在获取报告描述符之前。
HID鼠标的抓包
此抓包工具为USB PAKCET Viewer,详见http://www.usbzh.com/article/detail-740.html
通过下图可以看到,当没有数据时,主机发送IN令牌,设备返回NAK,而有数据时,主机发送IN事务,设备返回报告的数据,主机收到后返回ACK握手包。
HID键盘的抓包分析
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936