Published: 19 July 2019

These are the SETUP commands sent from a Linux host when plugging in an AX88179 USB 3.0 Ethernet adapter. They are listed below, beginning with hex values of the SETUP command itself, and then with some comments, and the response from the device when present.

The data was obtained by sniffing the USB link with Wireshark.

  1. 80 06 00 01 00 00 08 00: GET_DESCRIPTOR, Type 1 index 0 (Device), 8 bytes (probably just to get the length). Response: 12 01 00 03 ff ff 00 09
  2. 80 06 00 01 00 00 12 00: GET_DESCRIPTOR, Type 1 index 0 (Device), 18 bytes. Response: 12 01 00 03 ff ff 00 09 95 0b 90 17 00 01 01 02 03 01
  3. 80 06 00 0f 00 00 05 00: GET_DESCRIPTOR, Type 0xf index 0 (BOS), 5 bytes. (probably just to get length). Response: 05 0f 16 00 02
  4. 80 06 00 0f 00 00 16 00: GET_DESCRIPTOR, Type 0xf index 0 (BOS), 22 bytes. Response: 05 0f 16 00 02 07 10 02 02 00 00 00 0a 10 03 00 0e 00 01 01 65 00
  5. 80 06 00 02 00 00 09 00: GET_DESCRIPTOR, Type 2 index 0 (Configuration), 9 bytes. Response: 09 02 39 00 01 01 00 a0 3e
  6. 80 06 00 02 00 00 39 00: GET_DESCRIPTOR, Type 2 index 0 (Configuration), 57 bytes. Response (see Wireshark dissection below): 09 02 39 00 01 01 00 a0 3e 09 04 00 00 03 ff ff 00 04 07 05 81 03 08 00 0b 06 30 00 00 00 00 07 05 82 02 00 04 00 06 30 03 00 00 00 07 05 03 02 00 04 00 06 30 0f 00 00 00
  7. 80 06 00 03 00 00 ff 00: GET_DESCRIPTOR, Type 3 index 0 (String), no language specified, 255 bytes. Response (meaning Language ID is 0x409, US English): 04 03 09 04
  8. 80 06 02 03 09 04 ff 00: GET_DESCRIPTOR, Type 3 index 2 (String), US English, 255 bytes. Response (”AX88179″ in 16-bit ASCII): 10 03 41 00 58 00 38 00 38 00 31 00 37 00 39 00
  9. 80 06 01 03 09 04 ff 00: GET_DESCRIPTOR, Type 3 index 1 (String), US English, 255 bytes. Response (”ASIX Elec. Corp.” in 16-bit ASCII): 22 03 41 00 53 00 49 00 58 00 20 00 45 00 6c 00 65 00 63 00 2e 00 20 00 43 00 6f 00 72 00 70 00 2e 00
  10. 80 06 03 03 09 04 ff 00: GET_DESCRIPTOR, Type 3 index 3 (String), US English, 255 bytes. Response (”00000000000183″ in 16-bit ASCII): 1e 03 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 31 00 38 00 33 00
  11. 00 09 01 00 00 00 00 00: SET_CONFIGURATION, Value 1
  12. 00 30 00 00 00 00 06 00: SET_SEL, Data = 0a 0a 00 02 00 02
  13. 00 03 30 00 00 00 00 00: SET_FEATURE (Device level), Feature = 0x30 (U1 Enable)
  14. 00 30 00 00 00 00 06 00: SET_SEL, Data = 0a 0a 00 02 00 02 (identical to previous SET_SEL)
  15. 00 03 31 00 00 00 00 00: SET_FEATURE (Device level), Feature = 0x31 (U2 Enable)
  16. 80 06 04 03 09 04 ff 00: GET_DESCRIPTOR, Type 3 index 4 (String), US English, 255 bytes. Response (”Network_Interface” in 16-bit ASCII):24 03 4e 00 65 00 74 00 77 00 6f 00 72 00 6b 00 5f 00 49 00 6e 00 74 00 65 00 72 00 66 00 61 00 63 00 65 00
  17. 80 06 00 03 00 00 ff 00: GET_DESCRIPTOR, identical to first String request and response above, Type 3 index 0 (String), no language specified, 255 bytes. Response (meaning Language ID is 0x409, US English): 04 03 09 04
  18. 80 06 04 03 09 04 ff 00: GET_DESCRIPTOR, Type 3 index 4 (String), US English, 255 bytes. Identical request and response as the one before the last request.
  19. 80 06 ee 03 00 00 00 04: GET_DESCRIPTOR, Type 3 index 0xee (String), no language specified, 1024 bytes. Response: “Broken Pipe” error in Linux terms (-EPIPE)
  20. 00 01 30 00 00 00 00 00: CLEAR_FEATURE (Device level), Feature = 0x30 (U1 Enable)
  21. 00 01 31 00 00 00 00 00: CLEAR_FEATURE (Device level), Feature = 0x31 (U2 Enable)
  22. 01 0b 00 00 00 00 00 00: SET_INTERFACE (Interface level), Alternate setting = 0, Interface = 0
  23. 40 01 26 00 02 00 02 00: Vendor specific control command, data = 00 00
  24. 40 01 26 00 02 00 02 00: Vendor specific control command, data = 20 00
  25. 40 01 33 00 01 00 01 00: Vendor specific control command, data = 03

Wireshark dissection of Configuration

This relates to the 57 bytes returned by GET DESCRIPTOR for Configuration:

CONFIGURATION DESCRIPTOR
    bLength: 9
    bDescriptorType: 0x02 (CONFIGURATION)
    wTotalLength: 57
    bNumInterfaces: 1
    bConfigurationValue: 1
    iConfiguration: 0
    Configuration bmAttributes: 0xa0  NOT SELF-POWERED  REMOTE-WAKEUP
        1... .... = Must be 1: Must be 1 for USB 1.1 and higher
        .0.. .... = Self-Powered: This device is powered from the USB bus
        ..1. .... = Remote Wakeup: This device supports REMOTE WAKEUP
    bMaxPower: 62  (124mA)
INTERFACE DESCRIPTOR (0.0): class Vendor Specific
    bLength: 9
    bDescriptorType: 0x04 (INTERFACE)
    bInterfaceNumber: 0
    bAlternateSetting: 0
    bNumEndpoints: 3
    bInterfaceClass: Vendor Specific (0xff)
    bInterfaceSubClass: 0xff
    bInterfaceProtocol: 0x00
    iInterface: 4
ENDPOINT DESCRIPTOR
    bLength: 7
    bDescriptorType: 0x05 (ENDPOINT)
    bEndpointAddress: 0x81  IN  Endpoint:1
    bmAttributes: 0x03
    wMaxPacketSize: 8
    bInterval: 11
UNKNOWN DESCRIPTOR
    bLength: 6
    bDescriptorType: 0x30 (SUPERSPEED USB ENDPOINT COMPANION)
ENDPOINT DESCRIPTOR
    bLength: 7
    bDescriptorType: 0x05 (ENDPOINT)
    bEndpointAddress: 0x82  IN  Endpoint:2
    bmAttributes: 0x02
    wMaxPacketSize: 1024
    bInterval: 0
UNKNOWN DESCRIPTOR
    bLength: 6
    bDescriptorType: 0x30 (SUPERSPEED USB ENDPOINT COMPANION)
ENDPOINT DESCRIPTOR
    bLength: 7
    bDescriptorType: 0x05 (ENDPOINT)
    bEndpointAddress: 0x03  OUT  Endpoint:3
    bmAttributes: 0x02
    wMaxPacketSize: 1024
    bInterval: 0
UNKNOWN DESCRIPTOR
    bLength: 6
    bDescriptorType: 0x30 (SUPERSPEED USB ENDPOINT COMPANION)