USB2.0令牌、事务及传输抓包分析
+ -

USB2.0 NYET握手包

2021-12-01 本文链接为:http://www.usbzh.com/article/detail-699.html ,欢迎转载,转载请附上本文链接。
  • 在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。
  • 如果低速或者全速设备和高速HUB之间的事务一直没有完成,高速HUB也会向主机返回一个NYET包。

    SPLIT 令牌包事务处理中,如果 USB 集线器无法正常处理 SPLIT 请求,则 USB 集线器向 USB 主机返回 NYET 握手包。 NYET 握手包一般只发生在高速数据传输过程中。

PID 含义 说明
0110 握手NYET 接收方没有响应

NYET握手包示例

NYET握手包示例

控制SPLIT请求

120753586498
这是一段 USB 高速 (HS) 模式下的传输分析,反映了一次 通过 Hub(地址 30)访问低速设备(地址 34)的 GET DEVICE DESCRIPTOR 请求过程,但出现了明显的 重试/重传 现象。

一、核心传输行为

项目 内容
目标设备地址 34
请求类型 GET DEVICE DESCRIPTOR(获取设备描述符
Hub 地址 30
Hub 端口 Port 3
设备速度 LS(低速设备,通过 Hub 代理)
传输方式 控制传输SETUP + DATA0 + ACK

二、事务模式:Split Transaction(拆分事务)

由于 主机(HS)低速设备(LS) 之间通过 高速 Hub 通信,USB 使用 Split Transaction

  • SPLIT (S) = Start:主机通知 Hub 开始一个低速事务
  • SPLIT (C) = Complete:主机查询 Hub 是否完成与低速设备的交互
  • SETUP / DATA0 / ACK / NYET:Hub 与设备之间的响应状态

三、异常现象:重复的 SPLIT(C) + SETUP + NYET

从日志可见,大量重复 以下模式:

SPLIT(C) → SETUP → NYET

并多次出现后,才出现 SETUP + ACK(成功)。

序号示例 出现次数 最终结果
507023~507046 约 6 次重试 507046 出现 ACK

本文链接为:http://www.usbzh.com/article/detail-699.html ,欢迎转载,转载请附上本文链接。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936     USB技术交流3:1031974172

0 篇笔记 写笔记

USB2.0 NAK握手包
NAK 握手包一般由 USB 设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.PID含......
USB2.0 ACK握手包
ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里......
USB2.0 握手包
握手包跟随在令牌包或者数据包之后,组成一个完整的事务,是对一次事务完成的确认。USB主机或者USB设备会根据事务的完成状态返回相应的握手包握手包由8位的PID构成,用于数据传输的末位报告本次数据传输的状态。握手包之后使是整个事务处理的结束信号EOP.握手包根据PID的不同,可分为:PI......
USB2.0 STALL握手包
STALL 握手包一般由 USB 功能设备发送,表示该 USB 功能设备不支持这个请求,或者无法发送和接收数据。 STALL 握手包分为以下两种情况。协议 STA LL 握手包:在控制传输中使用。协议 STALL 握手包表明了该 USB 功能设备不支持这个请求协议(如设备限定描述符的获取)。功能......
USB2.0 NYET握手包
在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。如果低速或者全速设备和高速HUB之间的事务一直没有完成,高速HUB也会向主机返回一个NY......
USB2.0 ERR握手包
ERR握手包仅用于高速模式下,其功能是由USB集线器HUB向主机报告挂载其上的低速或全速设备错误。PID含义说明1100特殊用途ERRSPLIT事务中表示出现错误......
USB2.0 IN/OUT事务ACK错误或丢失的数据翻转(DATA TOGGLE)
前面一节我们讨论了当ACK成功发送并被接收时的数据包PID翻转,但在实际的数据传输过程中,也会出现ACK丢失或者错误的情况,这节我们来讨论这种情况。同样的,对于IN事务和OUT事务,我们分别进行讨论。IN事务ACK错误或丢失的数据翻转(DATA TOGGLE)IN事务ACK错误或丢失的数据翻转(......
USB2.0握手包ACK总线分析仪抓包实例详解
ACK握手包的详细使用说明可详见:https://www.usbzh.com/article/detail-452.html这里详细的介绍了ACK握手包的使用说明。这里我们对此从数据链路层和USB总线分析仪抓包的来分析。ACK的数据包格式ACK可能是USB总线分仪里最简单的包了。其主要包括两部分组......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • USB资源
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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