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

Reply via email to