-
-
Save tmk/20e2a574dc45ce7789b93e15e9ca9eb6 to your computer and use it in GitHub Desktop.
Rapoo 9300M 2.4GHz dongle USB descriptor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Waiting for device: | |
Listening: | |
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 AE 24 13 20 10 01 01 02 | |
00 01 | |
// Device: | |
bLength: 12 | |
bDescriptorType: 01 | |
bcdUSB: 0200 | |
bDeviceClass: 00 | |
bDeviceSubClass: 00 | |
bDeviceProtocol: 00 | |
bMaxPacketSize0: 40 | |
idVendor: 24AE | |
idProduct: 2013 | |
bcdDevice: 0110 | |
iManufacturer: 01 | |
iProduct: 02 | |
iSerialNumber: 00 | |
bNumConfigurations: 01 | |
// String Zero: len: 04 | |
// 04 03 09 04 | |
// LangId: 0409 | |
// iManufacturer: String1(0409): len: 0C | |
// 0C 03 52 00 41 00 50 00 4F 00 4F 00 | |
// RAPOO | |
// iProduct: String2(0409): len: 36 | |
// 36 03 52 00 61 00 70 00 6F 00 6F 00 20 00 32 00 | |
// 2E 00 34 00 47 00 20 00 57 00 69 00 72 00 65 00 | |
// 6C 00 65 00 73 00 73 00 20 00 44 00 65 00 76 00 | |
// 69 00 63 00 65 00 | |
// Rapoo 2.4G Wireless Device | |
// Config0 dump: len: 0054 | |
09 02 54 00 03 01 00 A0 32 09 04 00 00 01 03 01 | |
02 00 09 21 10 01 00 01 22 40 00 07 05 81 03 40 | |
00 0A 09 04 01 00 01 03 01 01 00 09 21 10 01 00 | |
01 22 5E 00 07 05 82 03 40 00 0A 09 04 02 00 01 | |
03 01 01 00 09 21 10 01 00 01 22 40 00 07 05 83 | |
03 40 00 0A | |
// Config: | |
bLength: 09 | |
bDescriptorType: 02 | |
wTotalLength: 0054 | |
bNumInterfaces: 03 | |
bConfigurationValue: 01 | |
iConfiguration: 00 | |
bmAttributes: A0 | |
bMaxPower: 32 | |
// Interface0.0: | |
bLength: 09 | |
bDescriptorType: 04 | |
bInterfaceNumber: 00 | |
bAlternateSetting: 00 | |
bNumEndpoints: 01 | |
bInterfaceClass: 03 | |
bInterfaceSubClass: 01 | |
bInterfaceProtocol: 02 | |
iInterface: 00 | |
// HID: | |
bLength: 09 | |
bDescriptorType: 21 | |
bcdHID: 0110 | |
bCountryCode: 00 | |
bNumDescriptors: 01 | |
bDescrType: 22 | |
wDescriptorLength: 0040 | |
// Report0 dump: len: 0040 | |
05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 05 | |
15 00 25 01 95 05 75 01 81 02 95 01 75 03 81 03 | |
05 01 09 30 09 31 16 01 80 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: 0A | |
// Interface1.0: | |
bLength: 09 | |
bDescriptorType: 04 | |
bInterfaceNumber: 01 | |
bAlternateSetting: 00 | |
bNumEndpoints: 01 | |
bInterfaceClass: 03 | |
bInterfaceSubClass: 01 | |
bInterfaceProtocol: 01 | |
iInterface: 00 | |
// HID: | |
bLength: 09 | |
bDescriptorType: 21 | |
bcdHID: 0110 | |
bCountryCode: 00 | |
bNumDescriptors: 01 | |
bDescrType: 22 | |
wDescriptorLength: 005E | |
// Report0 dump: len: 005E | |
06 00 FF 09 0E A1 01 85 BA 95 1F 75 08 26 FF 00 | |
15 00 09 01 91 02 85 BA 95 1F 75 08 26 FF 00 15 | |
00 09 01 81 02 C0 05 01 09 80 A1 01 85 02 05 01 | |
19 81 29 83 15 00 25 01 95 03 75 01 81 06 95 01 | |
75 05 81 01 C0 05 0C 09 01 A1 01 85 03 15 00 26 | |
80 03 19 00 2A 80 03 75 10 95 01 81 00 C0 | |
// Endpoint: | |
bLength: 07 | |
bDescriptorType: 05 | |
bEndpointAddress: 82 | |
bmAttributes: 03 | |
wMaxPacketSize: 0040 | |
bInterval: 0A | |
// Interface2.0: | |
bLength: 09 | |
bDescriptorType: 04 | |
bInterfaceNumber: 02 | |
bAlternateSetting: 00 | |
bNumEndpoints: 01 | |
bInterfaceClass: 03 | |
bInterfaceSubClass: 01 | |
bInterfaceProtocol: 01 | |
iInterface: 00 | |
// HID: | |
bLength: 09 | |
bDescriptorType: 21 | |
bcdHID: 0110 | |
bCountryCode: 00 | |
bNumDescriptors: 01 | |
bDescrType: 22 | |
wDescriptorLength: 0040 | |
// Report0 dump: len: 0040 | |
05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 | |
75 01 95 08 81 02 95 01 75 08 81 03 95 05 75 01 | |
05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 06 | |
75 08 15 00 26 FF 00 05 07 19 00 29 FF 81 00 C0 | |
// Endpoint: | |
bLength: 07 | |
bDescriptorType: 05 | |
bEndpointAddress: 83 | |
bmAttributes: 03 | |
wMaxPacketSize: 0040 | |
bInterval: 0A | |
// Parse data here: http://eleccelerator.com/usbdescreqparser/ | |
0x12, // bLength | |
0x01, // bDescriptorType (Device) | |
0x00, 0x02, // bcdUSB 2.00 | |
0x00, // bDeviceClass (Use class information in the Interface Descriptors) | |
0x00, // bDeviceSubClass | |
0x00, // bDeviceProtocol | |
0x40, // bMaxPacketSize0 64 | |
0xAE, 0x24, // idVendor 0x24AE | |
0x13, 0x20, // idProduct 0x2013 | |
0x10, 0x01, // bcdDevice 2.10 | |
0x01, // iManufacturer (String Index) | |
0x02, // iProduct (String Index) | |
0x00, // iSerialNumber (String Index) | |
0x01, // bNumConfigurations 1 | |
0x09, // bLength | |
0x02, // bDescriptorType (Configuration) | |
0x54, 0x00, // wTotalLength 84 | |
0x03, // bNumInterfaces 3 | |
0x01, // bConfigurationValue | |
0x00, // iConfiguration (String Index) | |
0xA0, // bmAttributes Remote Wakeup | |
0x32, // bMaxPower 100mA | |
0x09, // bLength | |
0x04, // bDescriptorType (Interface) | |
0x00, // bInterfaceNumber 0 | |
0x00, // bAlternateSetting | |
0x01, // bNumEndpoints 1 | |
0x03, // bInterfaceClass | |
0x01, // bInterfaceSubClass | |
0x02, // bInterfaceProtocol | |
0x00, // iInterface (String Index) | |
0x09, // bLength | |
0x21, // bDescriptorType (HID) | |
0x10, 0x01, // bcdHID 1.10 | |
0x00, // bCountryCode | |
0x01, // bNumDescriptors | |
0x22, // bDescriptorType[0] (HID) | |
0x40, 0x00, // wDescriptorLength[0] 64 | |
0x07, // bLength | |
0x05, // bDescriptorType (Endpoint) | |
0x81, // bEndpointAddress (IN/D2H) | |
0x03, // bmAttributes (Interrupt) | |
0x40, 0x00, // wMaxPacketSize 64 | |
0x0A, // bInterval 10 (unit depends on device speed) | |
0x09, // bLength | |
0x04, // bDescriptorType (Interface) | |
0x01, // bInterfaceNumber 1 | |
0x00, // bAlternateSetting | |
0x01, // bNumEndpoints 1 | |
0x03, // bInterfaceClass | |
0x01, // bInterfaceSubClass | |
0x01, // bInterfaceProtocol | |
0x00, // iInterface (String Index) | |
0x09, // bLength | |
0x21, // bDescriptorType (HID) | |
0x10, 0x01, // bcdHID 1.10 | |
0x00, // bCountryCode | |
0x01, // bNumDescriptors | |
0x22, // bDescriptorType[0] (HID) | |
0x5E, 0x00, // wDescriptorLength[0] 94 | |
0x07, // bLength | |
0x05, // bDescriptorType (Endpoint) | |
0x82, // bEndpointAddress (IN/D2H) | |
0x03, // bmAttributes (Interrupt) | |
0x40, 0x00, // wMaxPacketSize 64 | |
0x0A, // bInterval 10 (unit depends on device speed) | |
0x09, // bLength | |
0x04, // bDescriptorType (Interface) | |
0x02, // bInterfaceNumber 2 | |
0x00, // bAlternateSetting | |
0x01, // bNumEndpoints 1 | |
0x03, // bInterfaceClass | |
0x01, // bInterfaceSubClass | |
0x01, // bInterfaceProtocol | |
0x00, // iInterface (String Index) | |
0x09, // bLength | |
0x21, // bDescriptorType (HID) | |
0x10, 0x01, // bcdHID 1.10 | |
0x00, // bCountryCode | |
0x01, // bNumDescriptors | |
0x22, // bDescriptorType[0] (HID) | |
0x40, 0x00, // wDescriptorLength[0] 64 | |
0x07, // bLength | |
0x05, // bDescriptorType (Endpoint) | |
0x83, // bEndpointAddress (IN/D2H) | |
0x03, // bmAttributes (Interrupt) | |
0x40, 0x00, // wMaxPacketSize 64 | |
0x0A, // bInterval 10 (unit depends on device speed) | |
// 102 bytes | |
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) | |
0x09, 0x02, // Usage (Mouse) | |
0xA1, 0x01, // Collection (Application) | |
0x09, 0x01, // Usage (Pointer) | |
0xA1, 0x00, // Collection (Physical) | |
0x05, 0x09, // Usage Page (Button) | |
0x19, 0x01, // Usage Minimum (0x01) | |
0x29, 0x05, // Usage Maximum (0x05) | |
0x15, 0x00, // Logical Minimum (0) | |
0x25, 0x01, // Logical Maximum (1) | |
0x95, 0x05, // Report Count (5) | |
0x75, 0x01, // Report Size (1) | |
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) | |
0x95, 0x01, // Report Count (1) | |
0x75, 0x03, // Report Size (3) | |
0x81, 0x03, // Input (Const,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, 0x80, // Logical Minimum (-32767) | |
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 | |
// 64 bytes | |
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) | |
0x09, 0x0E, // Usage (0x0E) | |
0xA1, 0x01, // Collection (Application) | |
0x85, 0xBA, // Report ID (-70) | |
0x95, 0x1F, // Report Count (31) | |
0x75, 0x08, // Report Size (8) | |
0x26, 0xFF, 0x00, // Logical Maximum (255) | |
0x15, 0x00, // Logical Minimum (0) | |
0x09, 0x01, // Usage (0x01) | |
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) | |
0x85, 0xBA, // Report ID (-70) | |
0x95, 0x1F, // Report Count (31) | |
0x75, 0x08, // Report Size (8) | |
0x26, 0xFF, 0x00, // Logical Maximum (255) | |
0x15, 0x00, // Logical Minimum (0) | |
0x09, 0x01, // Usage (0x01) | |
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, 0x80, // Usage (Sys Control) | |
0xA1, 0x01, // Collection (Application) | |
0x85, 0x02, // Report ID (2) | |
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) | |
0x19, 0x81, // Usage Minimum (Sys Power Down) | |
0x29, 0x83, // Usage Maximum (Sys Wake Up) | |
0x15, 0x00, // Logical Minimum (0) | |
0x25, 0x01, // Logical Maximum (1) | |
0x95, 0x03, // Report Count (3) | |
0x75, 0x01, // Report Size (1) | |
0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) | |
0x95, 0x01, // Report Count (1) | |
0x75, 0x05, // Report Size (5) | |
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) | |
0xC0, // End Collection | |
0x05, 0x0C, // Usage Page (Consumer) | |
0x09, 0x01, // Usage (Consumer Control) | |
0xA1, 0x01, // Collection (Application) | |
0x85, 0x03, // Report ID (3) | |
0x15, 0x00, // Logical Minimum (0) | |
0x26, 0x80, 0x03, // Logical Maximum (896) | |
0x19, 0x00, // Usage Minimum (Unassigned) | |
0x2A, 0x80, 0x03, // Usage Maximum (0x0380) | |
0x75, 0x10, // Report Size (16) | |
0x95, 0x01, // Report Count (1) | |
0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) | |
0xC0, // End Collection | |
// 94 bytes | |
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) | |
0x09, 0x06, // Usage (Keyboard) | |
0xA1, 0x01, // Collection (Application) | |
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) | |
0x95, 0x01, // Report Count (1) | |
0x75, 0x08, // Report Size (8) | |
0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) | |
0x95, 0x05, // Report Count (5) | |
0x75, 0x01, // Report Size (1) | |
0x05, 0x08, // Usage Page (LEDs) | |
0x19, 0x01, // Usage Minimum (Num Lock) | |
0x29, 0x05, // Usage Maximum (Kana) | |
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) | |
0x95, 0x01, // Report Count (1) | |
0x75, 0x03, // Report Size (3) | |
0x91, 0x03, // Output (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) | |
0x95, 0x06, // Report Count (6) | |
0x75, 0x08, // Report Size (8) | |
0x15, 0x00, // Logical Minimum (0) | |
0x26, 0xFF, 0x00, // Logical Maximum (255) | |
0x05, 0x07, // Usage Page (Kbrd/Keypad) | |
0x19, 0x00, // Usage Minimum (0x00) | |
0x29, 0xFF, // Usage Maximum (0xFF) | |
0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) | |
0xC0, // End Collection | |
// 64 bytes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The keyboard has three interfaces. Interface 0 is for mouse, inteface 1 and 2 are for keyboard.
Keyboard at interface 1 sends vendor specific data and system/consumer control.
Keyboard at interface 2 sends normal keyboard data.
tmk/tmk_keyboard#764