Skip to content

Instantly share code, notes, and snippets.

@tmk
Created October 7, 2021 05:36
Show Gist options
  • Save tmk/fb0d3f35271596b4771495a837205859 to your computer and use it in GitHub Desktop.
Save tmk/fb0d3f35271596b4771495a837205859 to your computer and use it in GitHub Desktop.
CORSAIR K70 RGB MK.2 LOW PROFILE - 1B1C:1B55
https://geekhack.org/index.php?topic=69169.msg3086804#msg3086804
https://www.corsair.com/ww/en/Categories/Products/Certified-Refurbished/Gaming-Keyboards/K70-RGB-MK-2-Low-Profile/p/CH-9109018-NA/RF
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 1C 1B 55 1B 19 03 01 02
03 01
// Device:
bLength: 12
bDescriptorType: 01
bcdUSB: 0200
bDeviceClass: 00
bDeviceSubClass: 00
bDeviceProtocol: 00
bMaxPacketSize0: 40
idVendor: 1B1C
idProduct: 1B55
bcdDevice: 0319
iManufacturer: 01
iProduct: 02
iSerialNumber: 03
bNumConfigurations: 01
// String Zero: len: 04
// 04 03 09 04
// LangId: 0409
// iManufacturer: String1(0409): len: 10
// 10 03 43 00 6F 00 72 00 73 00 61 00 69 00 72 00
// Corsair
// iProduct: String2(0409): len: 78
// 78 03 43 00 4F 00 52 00 53 00 41 00 49 00 52 00
// 20 00 4B 00 37 00 30 00 20 00 52 00 47 00 42 00
// 20 00 4D 00 4B 00 2E 00 32 00 20 00 4C 00 4F 00
// 57 00 20 00 50 00 52 00 4F 00 46 00 49 00 4C 00
// 45 00 20 00 4D 00 65 00 63 00 68 00 61 00 6E 00
// 69 00 63 00 61 00 6C 00 20 00 47 00 61 00 6D 00
// 69 00 6E 00 67 00 20 00 4B 00 65 00 79 00 62 00
// 6F 00 61 00 72 00 64 00
// CORSAIR K70 RGB MK.2 LOW PROFILE Mechanical Gaming Keyboard
// iSerialNumber: String3(0409): len: 5A
// 5A 03 31 00 35 00 30 00 32 00 46 00 30 00 30 00
// 43 00 41 00 46 00 32 00 39 00 41 00 35 00 32 00
// 39 00 35 00 41 00 39 00 42 00 33 00 46 00 46 00
// 35 00 46 00 35 00 30 00 30 00 31 00 42 00 43 00
// 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
// 00 00 00 00 00 00 00 00 00 00
// 1502F00CAF29A5295A9B3FF5F5001BC0............
// Config0 dump: len: 0042
09 02 42 00 02 01 00 A0 FA 09 04 00 00 01 03 01
01 00 09 21 11 01 00 01 22 C0 00 07 05 81 03 40
00 01 09 04 01 00 02 03 00 00 00 09 21 11 01 00
01 22 1D 00 07 05 82 03 40 00 01 07 05 02 03 40
00 01
// Config:
bLength: 09
bDescriptorType: 02
wTotalLength: 0042
bNumInterfaces: 02
bConfigurationValue: 01
iConfiguration: 00
bmAttributes: A0
bMaxPower: FA
// Interface0.0:
bLength: 09
bDescriptorType: 04
bInterfaceNumber: 00
bAlternateSetting: 00
bNumEndpoints: 01
bInterfaceClass: 03
bInterfaceSubClass: 01
bInterfaceProtocol: 01
iInterface: 00
// HID:
bLength: 09
bDescriptorType: 21
bcdHID: 0111
bCountryCode: 00
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 00C0
// Report0 dump: len: 00C0
05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
25 01 75 01 95 08 81 02 19 00 29 97 15 00 25 01
75 01 95 98 81 02 05 08 19 01 29 03 25 01 75 01
95 03 91 02 75 05 95 01 91 01 C0 05 0C 09 01 A1
01 85 02 05 0C 19 00 2A FF 0F 15 00 26 FF 0F 75
10 95 02 81 00 C0 06 C0 FF 09 02 A1 01 85 03 15
00 26 FF 00 95 3F 75 08 09 02 81 02 C0 06 C2 FF
09 03 A1 01 85 0E 15 00 26 FF 00 95 3F 75 08 09
03 81 02 C0 05 01 09 02 A1 01 85 05 09 01 A1 00
05 09 19 01 29 20 15 00 25 01 95 20 75 01 81 02
05 01 09 30 09 31 16 01 00 26 FF 7F 75 10 95 02
81 06 09 38 15 81 25 7F 75 08 95 01 81 06 C0 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 81
bmAttributes: 03
wMaxPacketSize: 0040
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: 0111
bCountryCode: 00
bNumDescriptors: 01
bDescrType: 22
wDescriptorLength: 001D
// Report0 dump: len: 001D
06 C2 FF 09 04 A1 01 15 00 26 FF 00 95 40 75 08
09 02 B1 02 09 02 81 02 09 04 91 02 C0
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 82
bmAttributes: 03
wMaxPacketSize: 0040
bInterval: 01
// Endpoint:
bLength: 07
bDescriptorType: 05
bEndpointAddress: 02
bmAttributes: 03
wMaxPacketSize: 0040
bInterval: 01
// Parse data here: http://eleccelerator.com/usbdescreqparser/
Interface0.0:Report0
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x06, // Usage (Keyboard)
0xA1, 0x01, // Collection (Application)
0x85, 0x01, // Report ID (1)
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)
0x75, 0x01, // Report Size (1)
0x95, 0x08, // Report Count (8)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x19, 0x00, // Usage Minimum (0x00)
0x29, 0x97, // Usage Maximum (0x97)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x98, // Report Count (-104)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x08, // Usage Page (LEDs)
0x19, 0x01, // Usage Minimum (Num Lock)
0x29, 0x03, // Usage Maximum (Scroll Lock)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x03, // Report Count (3)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x91, 0x01, // Output (Const,Array,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)
0x85, 0x02, // Report ID (2)
0x05, 0x0C, // Usage Page (Consumer)
0x19, 0x00, // Usage Minimum (Unassigned)
0x2A, 0xFF, 0x0F, // Usage Maximum (0x0FFF)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x0F, // Logical Maximum (4095)
0x75, 0x10, // Report Size (16)
0x95, 0x02, // Report Count (2)
0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x06, 0xC0, 0xFF, // Usage Page (Vendor Defined 0xFFC0)
0x09, 0x02, // Usage (0x02)
0xA1, 0x01, // Collection (Application)
0x85, 0x03, // Report ID (3)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x95, 0x3F, // Report Count (63)
0x75, 0x08, // Report Size (8)
0x09, 0x02, // Usage (0x02)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x06, 0xC2, 0xFF, // Usage Page (Vendor Defined 0xFFC2)
0x09, 0x03, // Usage (0x03)
0xA1, 0x01, // Collection (Application)
0x85, 0x0E, // Report ID (14)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x95, 0x3F, // Report Count (63)
0x75, 0x08, // Report Size (8)
0x09, 0x03, // Usage (0x03)
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, 0x02, // Usage (Mouse)
0xA1, 0x01, // Collection (Application)
0x85, 0x05, // Report ID (5)
0x09, 0x01, // Usage (Pointer)
0xA1, 0x00, // Collection (Physical)
0x05, 0x09, // Usage Page (Button)
0x19, 0x01, // Usage Minimum (0x01)
0x29, 0x20, // Usage Maximum (0x20)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x95, 0x20, // Report Count (32)
0x75, 0x01, // Report Size (1)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x16, 0x01, 0x00, // Logical Minimum (1)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x95, 0x02, // Report Count (2)
0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x38, // Usage (Wheel)
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7F, // Logical Maximum (127)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0xC0, // End Collection
// 192 bytes
Interface1.0:Report0
0x06, 0xC2, 0xFF, // Usage Page (Vendor Defined 0xFFC2)
0x09, 0x04, // Usage (0x04)
0xA1, 0x01, // Collection (Application)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x95, 0x40, // Report Count (64)
0x75, 0x08, // Report Size (8)
0x09, 0x02, // Usage (0x02)
0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x09, 0x02, // Usage (0x02)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x04, // Usage (0x04)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0, // End Collection
// 29 bytes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment