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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 00 09 01 00 00 00 00 00: SET_CONFIGURATION, Value 1
- 00 30 00 00 00 00 06 00: SET_SEL, Data = 0a 0a 00 02 00 02
- 00 03 30 00 00 00 00 00: SET_FEATURE (Device level), Feature = 0x30 (U1 Enable)
- 00 30 00 00 00 00 06 00: SET_SEL, Data = 0a 0a 00 02 00 02 (identical to previous SET_SEL)
- 00 03 31 00 00 00 00 00: SET_FEATURE (Device level), Feature = 0x31 (U2 Enable)
- 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
- 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
- 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.
- 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)
- 00 01 30 00 00 00 00 00: CLEAR_FEATURE (Device level), Feature = 0x30 (U1 Enable)
- 00 01 31 00 00 00 00 00: CLEAR_FEATURE (Device level), Feature = 0x31 (U2 Enable)
- 01 0b 00 00 00 00 00 00: SET_INTERFACE (Interface level), Alternate setting = 0, Interface = 0
- 40 01 26 00 02 00 02 00: Vendor specific control command, data = 00 00
- 40 01 26 00 02 00 02 00: Vendor specific control command, data = 20 00
- 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)