Skip to content

Instantly share code, notes, and snippets.

@tmk
Last active May 5, 2022 02:02
Show Gist options
  • Save tmk/23bb1bfaf892e942fd4970e7e5586865 to your computer and use it in GitHub Desktop.
Save tmk/23bb1bfaf892e942fd4970e7e5586865 to your computer and use it in GitHub Desktop.
Anne Pro 2 USB Descriptor
Waiting for new device:........
Listening:
TMK:7b2827/LUFA:d6a7df/UHS2:96112d
Start
USB configured.
Loop start.
usb_state: 12
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
usb_state: 90
//////////////////////////////////////////////////////////////////////
// USB_desc_dump
// Address: 01
// Lowspeed: 00
// Devicer dump:
12 01 00 02 00 00 00 40 D9 04 93 A2 00 01 01 02
03 01
// Device:
bLength: 12
bDescriptorType: 01
bcdUSB: 0200
bDeviceClass: 00
bDeviceSubClass: 00
bDeviceProtocol: 00
bMaxPacketSize0: 40
idVendor: 04D9
idProduct: A293
bcdDevice: 0100
iManufacturer: 01
iProduct: 02
iSerialNumber: 03
bNumConfigurations: 01
// String Zero: len: 04
// 04 03 09 04
// LangId: 0409
// iManufacturer: String1(0409): len: 0C
// 0C 03 4F 00 42 00 49 00 4E 00 53 00
// OBINS
// iProduct: String2(0409): len: 1E
// 1E 03 4F 00 42 00 49 00 4E 00 53 00 0A 00 41 00
// 6E 00 6E 00 65 00 50 00 72 00 6F 00 32 00
// OBINS.AnnePro2
// iSerialNumber: String3(0409): len: 1A
// 1A 03 53 00 4E 00 30 00 30 00 30 00 30 00 30 00
// 30 00 30 00 30 00 30 00 31 00
// SN0000000001
// Config0 dump: len: 007B
09 02 7B 00 04 01 00 A0 FA 09 04 00 00 02 03 01
01 00 09 21 10 01 21 01 22 4F 00 07 05 01 03 04
00 0A 07 05 82 03 25 00 01 09 04 01 00 02 03 00
00 00 09 21 10 01 21 01 22 1B 00 07 05 03 03 40
00 0A 07 05 84 03 40 00 0A 09 04 02 00 01 03 00
00 00 09 21 10 01 21 01 22 23 00 07 05 85 03 04
00 0A 09 04 03 00 01 03 00 00 00 09 21 10 01 21
01 22 49 00 07 05 86 03 08 00 0A
// Config:
bLength: 09
bDescriptorType: 02
wTotalLength: 007B
bNumInterfaces: 04
bConfigurationValue: 01
iConfiguration: 00
bmAttributes: A0
bMaxPower: FA
// Interface0.0:
bLength: 09
bDescriptorType: 04
bInterfaceNumber: 00
bAlternateSetting: 00
bNumEndpoints: 02
bInterfaceClass: 03
bInterfaceSubClass: 01
bInterfaceProtocol: 01
iInterface: 00
// HID:
bLength: 09
bDescriptorType: 21
bcdHID: 0110
bCountryCode: 21
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 004F
// Report0 dump: len: 004F
05 01 09 06 A1 01 75 01 95 05 05 08 19 01 29 05
15 00 25 01 91 02 75 03 95 01 91 01 75 01 95 08
05 07 19 E0 29 E7 15 00 25 01 81 02 75 08 95 01
81 01 75 08 95 06 25 FF 19 00 29 DF 81 00 75 01
95 E8 05 07 15 00 25 01 19 00 29 DF 81 02 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 01
bmAttributes: 03
wMaxPacketSize: 0004
bInterval: 0A
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 82
bmAttributes: 03
wMaxPacketSize: 0025
bInterval: 01
// Interface1.0:
bLength: 09
bDescriptorType: 04
bInterfaceNumber: 01
bAlternateSetting: 00
bNumEndpoints: 02
bInterfaceClass: 03
bInterfaceSubClass: 00
bInterfaceProtocol: 00
iInterface: 00
// HID:
bLength: 09
bDescriptorType: 21
bcdHID: 0110
bCountryCode: 21
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 001B
// Report0 dump: len: 001B
05 01 09 00 A1 01 15 00 25 FF 19 01 29 08 75 08
95 40 81 02 19 01 29 08 91 02 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 03
bmAttributes: 03
wMaxPacketSize: 0040
bInterval: 0A
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 84
bmAttributes: 03
wMaxPacketSize: 0040
bInterval: 0A
// Interface2.0:
bLength: 09
bDescriptorType: 04
bInterfaceNumber: 02
bAlternateSetting: 00
bNumEndpoints: 01
bInterfaceClass: 03
bInterfaceSubClass: 00
bInterfaceProtocol: 00
iInterface: 00
// HID:
bLength: 09
bDescriptorType: 21
bcdHID: 0110
bCountryCode: 21
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 0023
// Report0 dump: len: 0023
05 0C 09 01 A1 01 09 E2 09 E9 09 EA 09 CD 09 B5
09 B6 75 01 95 06 81 02 15 00 25 01 75 01 95 1A
81 03 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 85
bmAttributes: 03
wMaxPacketSize: 0004
bInterval: 0A
// Interface3.0:
bLength: 09
bDescriptorType: 04
bInterfaceNumber: 03
bAlternateSetting: 00
bNumEndpoints: 01
bInterfaceClass: 03
bInterfaceSubClass: 00
bInterfaceProtocol: 00
iInterface: 00
// HID:
bLength: 09
bDescriptorType: 21
bcdHID: 0110
bCountryCode: 21
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 0049
// Report0 dump: len: 0049
05 01 09 05 A1 01 A1 00 09 33 09 34 09 35 15 00
25 FF 35 00 45 FF 75 08 95 03 81 02 C0 A1 00 09
30 09 31 15 00 25 FF 35 00 45 FF 75 08 95 02 81
02 C0 05 09 19 01 29 10 15 00 25 01 75 01 95 10
81 02 75 08 95 01 81 01 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 86
bmAttributes: 03
wMaxPacketSize: 0008
bInterval: 0A
// Parse data here: http://eleccelerator.com/usbdescreqparser/
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x06, // Usage (Keyboard)
0xA1, 0x01, // Collection (Application)
0x75, 0x01, // Report Size (1)
0x95, 0x05, // Report Count (5)
0x05, 0x08, // Usage Page (LEDs)
0x19, 0x01, // Usage Minimum (Num Lock)
0x29, 0x05, // Usage Maximum (Kana)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x75, 0x03, // Report Size (3)
0x95, 0x01, // Report Count (1)
0x91, 0x01, // Output (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x75, 0x01, // Report Size (1)
0x95, 0x08, // Report Count (8)
0x05, 0x07, // Usage Page (Kbrd/Keypad)
0x19, 0xE0, // Usage Minimum (0xE0)
0x29, 0xE7, // Usage Maximum (0xE7)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x08, // Report Size (8)
0x95, 0x06, // Report Count (6)
0x25, 0xFF, // Logical Maximum (-1)
0x19, 0x00, // Usage Minimum (0x00)
0x29, 0xDF, // Usage Maximum (0xDF)
0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x01, // Report Size (1)
0x95, 0xE8, // Report Count (-24)
0x05, 0x07, // Usage Page (Kbrd/Keypad)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x19, 0x00, // Usage Minimum (0x00)
0x29, 0xDF, // Usage Maximum (0xDF)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x00, // Usage (Undefined)
0xA1, 0x01, // Collection (Application)
0x15, 0x00, // Logical Minimum (0)
0x25, 0xFF, // Logical Maximum (-1)
0x19, 0x01, // Usage Minimum (Pointer)
0x29, 0x08, // Usage Maximum (Multi-axis Controller)
0x75, 0x08, // Report Size (8)
0x95, 0x40, // Report Count (64)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x19, 0x01, // Usage Minimum (Pointer)
0x29, 0x08, // Usage Maximum (Multi-axis Controller)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0, // End Collection
0x05, 0x0C, // Usage Page (Consumer)
0x09, 0x01, // Usage (Consumer Control)
0xA1, 0x01, // Collection (Application)
0x09, 0xE2, // Usage (Mute)
0x09, 0xE9, // Usage (Volume Increment)
0x09, 0xEA, // Usage (Volume Decrement)
0x09, 0xCD, // Usage (Play/Pause)
0x09, 0xB5, // Usage (Scan Next Track)
0x09, 0xB6, // Usage (Scan Previous Track)
0x75, 0x01, // Report Size (1)
0x95, 0x06, // Report Count (6)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x1A, // Report Count (26)
0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x05, // Usage (Game Pad)
0xA1, 0x01, // Collection (Application)
0xA1, 0x00, // Collection (Physical)
0x09, 0x33, // Usage (Rx)
0x09, 0x34, // Usage (Ry)
0x09, 0x35, // Usage (Rz)
0x15, 0x00, // Logical Minimum (0)
0x25, 0xFF, // Logical Maximum (-1)
0x35, 0x00, // Physical Minimum (0)
0x45, 0xFF, // Physical Maximum (-1)
0x75, 0x08, // Report Size (8)
0x95, 0x03, // Report Count (3)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0xA1, 0x00, // Collection (Physical)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x15, 0x00, // Logical Minimum (0)
0x25, 0xFF, // Logical Maximum (-1)
0x35, 0x00, // Physical Minimum (0)
0x45, 0xFF, // Physical Maximum (-1)
0x75, 0x08, // Report Size (8)
0x95, 0x02, // Report Count (2)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x05, 0x09, // Usage Page (Button)
0x19, 0x01, // Usage Minimum (0x01)
0x29, 0x10, // Usage Maximum (0x10)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x10, // Report Count (16)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment