HID规范
+ -

HID协议SET_IDLE请求的解释说明

2022-03-04 2255 1

SET_IDLE请求会使HID设备相关的中断管道(端点)停止定时上报报告数据,直到有新的事件(有效数据)或直到的SET_IDLE时才继续上报报告数据。
SET_IDLE的时间周期内,如果没有变化的情况下,由设备周期性地返回NAK

关于SET_IDLE的功能讨论

HID设备以中断的方向进行上报数据给方机,比如说USB鼠标键盘,当无操作时,设备无须上报给数据给主机。不过USB设备的中断其实是轮询方式的,也就是说无论你是不是上报数据,主机都会发送IN的请求事务,这样会造成USB总线带宽的浪费。

当主机获取到配置描述符之后,通过SET_CONFIGURE设置描述符之后就是SET_IDLE,这在获取报告描述符之前。

HID鼠标的抓包

SET_IDLE

此抓包工具为USB PAKCET Viewer,详见http://www.usbzh.com/article/detail-740.html

通过下图可以看到,当没有数据时,主机发送IN令牌,设备返回NAK,而有数据时,主机发送IN事务,设备返回报告的数据,主机收到后返回ACK握手包。
SET_IDLE无数据和有数据时的响应

HID键盘的抓包分析

SET_IDLE

SET_IDLE无数据和有数据时的响应

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 Feedback端点
下面转一段对USB feedback的理解:这段时间一直在做USB Audio Device(UAC)设备的开发工作。由于UAC采用的是isochronous endpoint来传输数据,对时钟的要求较高。但无奈我们的嵌入式平台的时钟并不准,数据同步就成了问题。经过研究,发现只能使用异步模式来解决这......
USB2.0 NAK握手包
NAK 握手包一般由 USB 设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.PID含......
USB超高速设备描述符的bMaxPacketSize0为0x09
USB3的设备中,其USB设备描述符和2.0的结构一致,不过在含义上有的字段稍有区别。比如说在USB3.2的版本中,其设备描述符中的bMaxPacketSize0和USB2.0有就所不同。在USB2.0中bMaxPacketSize0代表的是USB设备默认端点0的最大包的大小,一般为0x40即64字......
USB2.0 ACK握手包
ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里......
USB2.0包Packet的组成
USB包由SOP,SYNC,Packet内容和EOP组成.SOP起始包起始包SOP(Start Of Packet),通过将D +和D-线从空闲状态驱动到相反的逻辑电平(K状态),由始发端口发信号通知分组的开始(SOP)。 此开关级别表示SYNC字段的第一位。 当重新传输到小于±5 ns时,集线器......
HID设备SET_IDLE时遇到c0000004
下午,USB中文网技术交流群里的一个同学,说他的HID设备时好时不好的,有时会花很长的时间才能枚举成功。没有抓包,没的截图…我是一顿乱扯,从硬件电路到各种抓包方法….晚上11点,这位同学发来了BUSHOUND抓的包,打开一看:Device Length Phase Data ......
USB 高速高带宽端点wMaxPacketSize
USB的端点可以设置为高速高带宽端点。我们知道,USB的数据传输类型有4种,分别为控制传输,中断传输,批量传输和同步传输。而端点类型与之要对应。除过控制传输外,其余三种传输使用于应用的数据传输。USB使用端点描述符的wMaxPacketSize来配置端点为高速高带宽端点,主要表现在bit11-12,......
USB键盘在Linux环境下一直返回NAK的输入端点和一直OUT数据的输出端点
群里有同学反馈,自己做的USB键盘在Windows下正常,但在Linux下就失败,想让帮忙分析一下原因。一个比较好的消息是他那边有USB总线分析仪,所以只需要抓包就可以进行分析了。最好开他给的抓包截图是样子的:从它的截图可以看到,USB键盘在获取了该键盘的HID报告描述符后,紧跟着一下发Report......
USB传输的事物拆分和ACK机制
USB的事务拆分USB每次传输的数据包大小不得超过端点的最大包大小,如果需要传输超过端点的最大包大小,是需要进行事务传输的,即一个事务无法完成的数据长度,会拆分成多个事务,并且提几个事务必须按最大端点大小进行数据传输,最后一个事务按实际剩余数据大小传输。这个我们在USB2.0 事务 一切我们有详细的......
USB2.0 IN/OUT事务ACK成功的数据翻转(DATA TOGGLE)
USB使用数据翻转(DATA TOGGLE)的同步机制,用来实现在USB主机和设备之间多个事务的数据传输同步。该同步机制原理是:USB主机和设备各自维护一个数据包PID,根据PID来发送数据包数据接收方根据接收到的数据包情况来改变自身数据包PID数据发送方根据接收方的握手包来改变自身的数据包PI......
USB2.0 IN/OUT事务NAK的数据翻转(DATA TOGGLE)
NAK由USB设备发送,用于表示设备当前无法接收数据或者无数据发送给主机。USB设备返回NAK握手包给主机后,USB主机会重传该事务,而对于高速OUT事务,会使用PING令牌来PING设备是否可以接收数据。USB主机不会发送NAK握手包给设备。IN事务DATA0/DATA1 NAK的数据翻转......
USB2.0 IN/OUT事务ACK错误或丢失的数据翻转(DATA TOGGLE)
前面一节我们讨论了当ACK成功发送并被接收时的数据包PID翻转,但在实际的数据传输过程中,也会出现ACK丢失或者错误的情况,这节我们来讨论这种情况。同样的,对于IN事务和OUT事务,我们分别进行讨论。IN事务ACK错误或丢失的数据翻转(DATA TOGGLE)IN事务ACK错误或丢失的数据翻转(......
USB音频设备UAC数据同步方式
对于USB扬声器,USB主机负载发送音频数据,而USB设备负责接收来自主机发送过来的数据,数据的传输方式采用的是同步方式。由于USB主机和USB设备时钟同步的问题,会有一定的偏差,长时间的累积会导致主机和设备之间数据的不同步。如USB主机可能会发送数据相对USB设备播放数据过快,导致USB设备来不及......
USB总线分析仪 USB Packet Viewer
说明USB Packet Viewer是一款便携式USB协议分析仪,能够捕捉USB通讯的底层数据包以及总线事件。站长手中有一款USB Packet Viewer产品,讲道理这是一款性价比超高的工具,只有几百块钱的价格(可以说是市面上同类产品的最低价),但确达到了惊人的抓包解析效果。最难能可贵的......
USB Packet Viewer 简介
USB Packet Viewer是一款便携式USB协议分析仪,能够捕捉USB通讯的底层数据包以及总线事件。它由USB 数据包抓包设备和配套的协议解析软件组成,能够对 USB 通讯数据进行可视化分析。更多的详细介绍可见:http://www.usbzh.com/article/detail-74......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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