Packet 135 (Setup Data)
3 Dec 2024
Read time: 1 minute(s)
主要分析一下第二个包数据包中的 DATA 字段,包含的就是命令。Data 中总共有 8 字节,每字节的含义如下 (USB 协议报文是小端模式):

在 Linux kernel
中,使用一个结构体来表示:
struct usb_ctrlrequest {
__u8 bRequestType;
__u8 bRequest;
__le16 wValue;
__le16 wIndex;
__le16 wLength;
} __attribute__ ((packed));-
bmRequestType
Offset Field Size Value Description 0 bmRequestType 1 0x80 表示 期望的数据传输方向为 设备传输给主机,这条 命令的接收者为设备。 -
bRequest
Offset Field Size Value Description 1 bmRequest 1 0x06 代表了 一个命令,根据 Table 9-4可以得知代表的命令为获取描述符GET_DESCRIPTOR
-
wValue
Offset Field Size Value Description 2 wValue 2 0x00 0x01 根据 Table 9-3可以得知,此时代表的是:Descriptor Type+Descriptor Index2 Descriptor Index1 0x00 想要获取的描述符 index 为 0 3 Descriptor Type1 0x01 根据 Table 9-5可以得知,想要获取的描述 符为``Device Descriptor``

-
wIndex
Offset Field Size Value Description 4 wIndex 2 0x00 0x00 根据 Table 9-3可以 得知,此时代表的是:ZeroorLanguage ID -
wLength
Offset Field Size Value Description 6 wLength 2 0x40 0x00 根据 Table 9-3可以得知,此时代表的是:Description Length即:请求 Device 发送Device Descriptor的 前 64 个字节
