【USB笔记】 标准设备请求Standard Device Requests

USB笔记 标准设备请求 Standard Device Requests

这里主要列举出所有设备定义的标准设备请求。分别概述了标准设备请求(Standard Device Requests)和给出了标准请求代码(Standard Request Codes)和描述符类型(Descriptor Types)。概念部分主要从各种USB协议中整理,涵盖范围从USB 2.0到 USB 3.2协议。注意并不是所有协议都支持所有的标准设备请求,具体不同协议的差异可以参照附录。

标准设备请求(Standard Device Requests),例如下图的Get Descriptor就是一个USB设备标准请求。
Standard Device Requests

对于标准设备请求,设备要求即使在尚未分配地址或尚未配置的时候,也应该响应标准设备请求。如果标准请求定义了一个可以修改的持久性参数,该参数的重置值或默认值为零,除非该参数另有规定。

标准设备请求 Standard Device Requests

下表是标准设备请求,概述了标准设备请求的基本情况。

bmRequestTypebRequestwValuewIndexwLengthData
00000000B
00000001B
00000010B
CLEAR_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
10000000BGET_CONFIGURATIONZeroZeroOneConfiguration Value
10000000BGET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
10000001BGET_INTERFACEZeroInterfaceOneAlternate Interface
10000000B
10000001B
10000010B
GET_STATUSZeroStatus TypeZero
Interface
Endpoint
TwoDevice, Interface, or Endpoint Status
00000000BSET_ADDRESSDevice AddressZeroZeroNone
00000000BSET_CONFIGURATIONConfiguration ValueZeroZeroNone
00000000BSET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
00000000B
00000001B
00000010B
SET_FEATUREFeature SelectorOptionsZero
Interface
Endpoint
ZeroNone
00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone
00000000BSET_ISOCH_DELAYDelay in nsZeroZeroNone
00000000BSET_SELZeroZeroSixExit Latency Values
10000010BSYNCH_FRAMEZeroEndpointTwoFrame Number

标准请求代码 Standard Request Codes

下表是标准请求代码,对应着标准设备请求中的bRequest字段。

bRequestValue
GET_STATUS0
CLEAR_FEATURE1
Reserved for future use2
SET_FEATURE3
Reserved for future use4
SET_ADDRESS5
GET_DESCRIPTOR6
SET_DESCRIPTOR7
GET_CONFIGURATION8
SET_CONFIGURATION9
GET_INTERFACE10
SET_INTERFACE11
SYNCH_FRAME12
SET_ENCRYPTION13
GET_ENCRYPTION14
SET_HANDSHAKE15
GET_HANDSHAKE16
SET_CONNECTION17
SET_SECURITY_DATA18
GET_SECURITY_DATA19
SET_WUSB_DATA20
LOOPBACK_DATA_WRITE21
LOOPBACK_DATA_READ22
SET_INTERFACE_DS23
SET_SEL48
SET_ISOCH_DELAY49

描述符类型 Descriptor Types

下表是描述符类型,对应着部分标准设备请求中的wValue字段中的Descriptor Type。

Descriptor TypesValue
DEVICE1
CONFIGURATION2
STRING3
INTERFACE4
ENDPOINT5
Reserved6
Reserved7
INTERFACE_POWER8
OTG9
DEBUG10
INTERFACE_ASSOCIATION11
BOS15
DEVICE CAPABILITY16
SUPERSPEED_USB_ENDPOINT_COMPANION48
SUPERSPEEDPLUS_ISOCHRONOUS_ENDPOINT_COMPANION49

标准特性选择器 Standard Feature Selectors

下表是标准特性选择器(feature selector),表中给出了feature selector的接收端(Recipient)和feature selector对应的数值(value),其中数值(value)就是对应着部分标准设备请求中的wValue字段中的Feature selector。

特性选择器(feature selectors)用于启用或设置特定于设备(device)、接口(interface)或端点(endpoint)的特性(features)。例如远程唤醒(remote wakeup)功能。

Feature SelectorRecipientValue
ENDPOINT_HALTEndpoint0
FUNCTION_SUSPENDInterface0
DEVICE_REMOTE_WAKEUPDevice1
TEST_MODEDevice2
b_hnp_enableDevice3
a_hnp_supportDevice4
a_alt_hnp_supportDevice5
WUSB_DEVICEDevice6
U1_ENABLEDevice48
U2_ENABLEDevice49
LTM_ENABLEDevice50
B3_NTF_HOST_RELDevice51
B3_RSP_ENABLEDevice52
LDM_ENABLEDevice53

如果向设备发出了不支持或无效的请求(request),设备会在请求的数据阶段(Data stage)或状态阶段(Status stage)返回一个STALL事务包(STALL Transaction Packet)。如果设备在设置阶段(Setup stage)检测到错误,则设备最好在数据或状态阶段中较早的阶段返回一个STALL事务包。接收不支持或无效的请求不会导致控制管道(control pipe)上的停止特性(Halt feature)被设置。如果由于任何原因,设备因错误条件而无法通过其默认控制管道进行通信,则应重置设备以清除该条件并重新启动默认控制管道。


附录

USB2.0 Standard Device Requests

USB2.0所支持的Standard Device Requests会比上面的少,如下表:

USB2.0 Standard Device Requests

bmRequestTypebRequestwValuewIndexwLengthData
00000000B
00000001B
00000010B
CLEAR_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
10000000BGET_CONFIGURATIONZeroZeroOneConfiguration Value
10000000BGET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
10000001BGET_INTERFACEZeroInterfaceOneAlternate Interface
10000000B
10000001B
10000010B
GET_STATUSZeroZero
Interface
Endpoint
TwoDevice, Interface, or Endpoint Status
00000000BSET_ADDRESSDevice AddressZeroZeroNone
00000000BSET_CONFIGURATIONConfiguration ValueZeroZeroNone
00000000BSET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
00000000B
00000001B
00000010B
SET_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone
10000010BSYNCH_FRAMEZeroEndpointTwoFrame Number

USB2.0 Standard Request Codes

bRequestValue
GET_STATUS0
CLEAR_FEATURE1
Reserved for future use2
SET_FEATURE3
Reserved for future use4
SET_ADDRESS5
GET_DESCRIPTOR6
SET_DESCRIPTOR7
GET_CONFIGURATION8
SET_CONFIGURATION9
GET_INTERFACE10
SET_INTERFACE11
SYNCH_FRAME12

USB2.0 Descriptor Types

Descriptor TypesValue
DEVICE1
CONFIGURATION2
STRING3
INTERFACE4
ENDPOINT5
DEVICE_QUALIFIER6
OTHER_SPEED_CONFIGURATION7
INTERFACE_POWER8

USB2.0 Standard Feature Selectors

Feature SelectorRecipientValue
DEVICE_REMOTE_WAKEUPDevice1
ENDPOINT_HALTEndpoint0
TEST_MODEDevice2

USB3.0 Standard Device Requests

USB3.0 Standard Device Requests

bmRequestTypebRequestwValuewIndexwLengthData
00000000B
00000001B
00000010B
CLEAR_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
10000000BGET_CONFIGURATIONZeroZeroOneConfiguration Value
10000000BGET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
10000001BGET_INTERFACEZeroInterfaceOneAlternate Interface
10000000B
10000001B
10000010B
GET_STATUSZeroZero
Interface
Endpoint
TwoDevice, Interface, or Endpoint Status
00000000BSET_ADDRESSDevice AddressZeroZeroNone
00000000BSET_CONFIGURATIONConfiguration ValueZeroZeroNone
00000000BSET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
00000000B
00000001B
00000010B
SET_FEATUREFeature SelectorZero
Interface
Endpoint
Suspend OptionsZeroNone
00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone
00000000BSET_ISOCH_DELAYDelay in nsZeroZeroNone
00000000BSET_SELZeroZeroSixExit Latency Values
10000010BSYNCH_FRAMEZeroEndpointTwoFrame Number

USB3.0 Standard Request Codes

bRequestValue
GET_STATUS0
CLEAR_FEATURE1
Reserved for future use2
SET_FEATURE3
Reserved for future use4
SET_ADDRESS5
GET_DESCRIPTOR6
SET_DESCRIPTOR7
GET_CONFIGURATION8
SET_CONFIGURATION9
GET_INTERFACE10
SET_INTERFACE11
SYNCH_FRAME12
SET_SEL48
SET_ISOCH_DELAY49

USB3.0 Descriptor Types

Descriptor TypesValue
DEVICE1
CONFIGURATION2
STRING3
INTERFACE4
ENDPOINT5
Reserved6
Reserved7
INTERFACE_POWER8
OTG9
DEBUG10
INTERFACE_ASSOCIATION11
BOS15
DEVICE CAPABILITY16
SUPERSPEED_USB_ENDPOINT_COMPANION48

USB3.0 Standard Feature Selectors

Feature SelectorRecipientValue
ENDPOINT_HALTEndpoint0
FUNCTION_SUSPENDInterface0
U1_ENABLEDevice48
U2_ENABLEDevice49
LTM_ENABLEDevice50

USB3.1 & USB3.2 Standard Device Requests

同正文部分。

USB1.1 Standard Device Requests

USB1.1 Standard Device Requests

bmRequestTypebRequestwValuewIndexwLengthData
00000000B
00000001B
00000010B
CLEAR_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
10000000BGET_CONFIGURATIONZeroZeroOneConfiguration Value
10000000BGET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
10000001BGET_INTERFACEZeroInterfaceOneAlternate Interface
10000000B
10000001B
10000010B
GET_STATUSZeroZero
Interface
Endpoint
TwoDevice, Interface, or Endpoint Status
00000000BSET_ADDRESSDevice AddressZeroZeroNone
00000000BSET_CONFIGURATIONConfiguration ValueZeroZeroNone
00000000BSET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor
00000000B
00000001B
00000010B
SET_FEATUREFeature SelectorZero
Interface
Endpoint
ZeroNone
00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone
10000010BSYNCH_FRAMEZeroEndpointTwoFrame Number

USB1.1 Standard Request Codes

bRequestValue
GET_STATUS0
CLEAR_FEATURE1
Reserved for future use2
SET_FEATURE3
Reserved for future use4
SET_ADDRESS5
GET_DESCRIPTOR6
SET_DESCRIPTOR7
GET_CONFIGURATION8
SET_CONFIGURATION9
GET_INTERFACE10
SET_INTERFACE11
SYNCH_FRAME12

USB1.1 Descriptor Types

Descriptor TypesValue
DEVICE1
CONFIGURATION2
STRING3
INTERFACE4
ENDPOINT5

USB1.1 Standard Feature Selectors

Feature SelectorRecipientValue
DEVICE_REMOTE_WAKEUPDevice1
ENDPOINT_HALTEndpoint0

[参考资料]

Universal Serial Bus Specification Revision 1.1

Universal Serial Bus Specification Revision 2.0

Universal Serial Bus 3.0 Specification

Universal Serial Bus 3.1 Specification

Universal Serial Bus 3.2 Specification

USB Complete, 5th Edition


本文链接:https://blog.csdn.net/u012028275/article/details/114712631

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用中提到了requests模块可以简化复杂的请求头设置。在使用requests发送网络请求时,可以通过设置headers参数来传递请求头信息。请求头是包含一些关键信息的HTTP头部字段,用于告诉服务器关于请求的一些重要信息,比如User-Agent、Accept-Language等。通过设置请求头,可以模拟浏览器的头部信息来进行访问,解决服务器拒绝访问的问题。其中给出了一个示例代码,可以通过创建一个字典来设置头部信息,然后将该字典作为headers参数传递给requests.get()方法来发送请求。例如: ```python import requests url = 'https://www.example.com/' # 替换为需要请求的网址 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'} response = requests.get(url, headers=headers) print(response.status_code) ``` 在上述代码中,我们通过设置User-Agent字段来模拟Firefox浏览器发送请求头信息,并通过requests.get()方法发送了一个GET请求。最后,我们打印了响应状态码。这样就可以通过设置请求头来进行requests请求了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证...](https://blog.csdn.net/qq_39237205/article/details/123805848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值