On Fri, 16 Jan 2015, Mathias Nyman wrote:
> also usbmon traces can be helpful, at least for others, I'm myself horribly
> slow at deciphering those
Attached is my usbmon "cheat sheet". It's a big help in deciphering
common control transfers.
I wrote it before USB-3 came out, and I never included the USB-3 hub
commands and status bits. If you feel like adding those on to the
cheat sheet, please post the final result.
Alan Stern
Standard device requests
RQtype Req Value Index Length
----------------------------------------------
0 1 dev-feat 0 0 Clear device feature
0 3 dev-feat 0 0 Set device feature
0 5 address 0 0 Set device address
0 9 config-value 0 0 Set configuration
1 b altsetting intf 0 Set interface
1 1 intf-feat intf 0 Clear interface feature
1 3 intf-feat intf 0 Set interface feature
2 1 ep-feat ep 0 Clear endpoint feature
2 3 ep-feat ep 0 Set endpoint feature
80 0 0 0 2 Get device status
80 6 descr-type/ 0/ len Get descriptor
index lang-ID
80 8 0 0 1 Get configuration
81 0 0 intf 2 Get interface status
81 a 0 intf 1 Get interface (altsetting)
82 0 0 ep 2 Get endpoint status
Device features: 0 = self-powered, 1 = remote wakeup
Interface features: None
Endpoint features: 0 = halt
Descriptor types: 1 = device, 2 = config, 3 = string, (4 = interface,
5 = endpoint), 6 = device qualifier, 7 = other-speed config
Hub class requests
RQtype Req Value Index Length
----------------------------------------------
20 1 hub-feat 0 0 Clear hub feature
20 3 hub-feat 0 0 Set hub feature
23 1 port-feat sel/ 0 Clear port feature
port
23 3 port-feat sel/ 0 Set port feature
port
a0 0 0 0 4 Get hub status
a0 6 2900 0 len Get hub descriptor
a3 0 0 port 4 Get port status
Hub features: 0 = hub local power, 1 = hub over current,
10 = ch hub local power, 11 = ch hub over current
Port features: 0 = connect, 1 = enable, 2 = suspend, 3 = over current,
4 = reset, 8 = power, 9 = low speed, a = high speed,
b = test mode, c = indicator,
10 = ch connect, 11 = ch enable, 12 = ch suspend,
13 = ch over current, 14 = ch reset
Selector is used for port indicators
HID class requests
RQtype Req Value Index Length
----------------------------------------------
21 9 report-type/ID intf len Set report
21 a duration/ID intf 0 Set idle
21 b proto intf 0 Set protocol
81 6 descr-type/set intf len Get class descriptor
a1 1 report-type/ID intf len Get report
a1 2 0/ID intf 1 Get idle
a1 3 0 intf 1 Get protocol
Report type: 1 = input, 2 = output, 3 = feature
Descriptor type: 21 = HID, 22 = Report, 23 = Physical
Protocol: 0 = boot, 1 = report