Skip to content

Latest commit

 

History

History
6441 lines (6292 loc) · 145 KB

File metadata and controls

6441 lines (6292 loc) · 145 KB

Controller protocol v2

Used in win 5, win mini 25.

Device info

Product ID: 0x2f24
Vendor ID:  0x137

Report descriptor:

Usage Page (FF00h),         ; FF00h, vendor-defined
Usage (01h),
Collection (Application),
    Report ID (1),
    Usage Minimum (01h),
    Usage Maximum (02h),
    Logical Minimum (0),
    Logical Maximum (255),
    Report Size (8),
    Report Count (63),
    Input (Variable),
    Usage Minimum (01h),
    Usage Maximum (02h),
    Logical Minimum (0),
    Logical Maximum (255),
    Report Count (63),
    Output (Variable),
End Collection

Key codes

Keyboard mode uses HID Usage ID key codes and a few custom special codes.

Custom key codes for keyboard mode:

0xe8 - mousewheel up
0xe9 - mousewheel down
0xea - left mouse
0xeb - right mouse
0xec - middle mouse
0xed - mouse fast move

Custom key codes for gamepad mode:

0x8000 - dpad up
0x8001 - dpad down
0x8002 - dpad left
0x8003 - dpad right
0x8004 - start
0x8005 - select
0x8006 - menu
0x8007 - button A
0x8008 - button B
0x8009 - button X
0x800a - button Y
0x800b - L1
0x800c - R1
0x800d - L2
0x800e - R2
0x800f - L3
0x8010 - R3
0x8011 - left stick up
0x8012 - left stick down
0x8013 - left stick left
0x8014 - left stick right
0x8015 - right stick up
0x8016 - right stick down
0x8017 - right stick left
0x8018 - right stick right
0x8019 - ???
0x801a - ???
0x801b - ???
0x801c - ???
0x801d - ???
0x801e - ???
0x801f - ???
0x8020 - ???

Configuration

Configuration total size is 1024 bytes.

Back buttons

mini 25

Back button 1 on device is: l4 button.

Back button 2 on device is: r4 button.

Back button 3 is not implemented.

Back button 4 is not implemented.

win 5

Back button 1 on device is: left back button.

Back button 2 on device is: right back button.

Back button 3 is not implemented.

Back button 4 on device is: controller mode switch button (single click).

Status interrupt

Endpoint 0x81 IN, sent by the controller every 1 second.

0 1 2 3 4 5 6 7 8 9 10 11
ID const unused const ^ 0xff unused ^ 0xff version major version minor switch mode button state left back button state right back button state
01 a5 00 5a ff 00 xx xx xx xx xx 00

switch mode button state: 00 (not pressed) / 68 (pressed)

left back button state: 00 (not pressed) / 69 (pressed)

right back button state: 00 (not pressed) / 6a (pressed)

Packets

NOTE:

The following sections may be inaccurate

Rejected commands return 0xe2 in byte 8.

Unless stated otherwise, checksum is the sum of all bytes after it.

Init communication

Send

0 1 2-63
ID cmd
01 21 00

Response

0 1 2 3 4 5 6 7 8 9-63
ID cmd unk unk checksum ready state
01 21 02 00 xx 00 xx xx xx 00

Send

0 1 2-63
ID cmd
01 2b 00

Response

0 1 2 3 4 5 6 7 8 9-63
ID cmd unk unk checksum ready state
01 2b 02 00 xx 00 xx xx xx 00

Successful initialization requires both calls to return 0xaa in byte 8.

Get firmware versions

Send

0 1 2-63
ID cmd
01 41 00

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14-63
ID cmd unk unk unk checksum xinput version minor xinput version major keyboard&mouse version minor keyboard&mouse version major
01 41 10 00 xx xx xx xx 00 00 xx xx xx xx 00

Get current config

After sending the read command, applications must read (get input report) until the end packet is received.

First and last packets are special and have a different layout.

Send

0 1 2 3 4 5 6 7 8 9 10-63
ID cmd unk unk unk
01 44 02 00 00 00 04 00 00 04 00

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62-63
ID cmd unk page index checksum unk unk unk unk unk unk unk unk unk12 ^ 0xff unk13 ^ 0xff unk14 ^ 0xff unk15 ^ 0xff dpad up dpad left dpad down dpad right start select menu A B X Y L1 R1 L2 R2 L3 R3 left analog up left analog down left analog left left analog right
01 44 38 00 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 00

Response

0 1 2 3 4 5 6 7 8-43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum dpad up (gamepad mode) dpad down (gamepad mode) dpad left (gamepad mode) dpad right (gamepad mode) start (gamepad mode) select (gamepad mode) menu (gamepad mode) A (gamepad mode) B (gamepad mode) X (gamepad mode)
01 44 38 00 38 00 xx xx 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54-63
ID cmd unk page index checksum Y (gamepad mode) L1 (gamepad mode) R1 (gamepad mode) L2 (gamepad mode) R2 (gamepad mode) L3 (gamepad mode) R3 (gamepad mode) left analog up (gamepad mode) left analog down (gamepad mode) left analog left (gamepad mode) left analog right (gamepad mode) right analog up (gamepad mode) right analog down (gamepad mode) right analog left (gamepad mode) right analog right (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode)
01 44 38 00 70 00 xx xx 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 00

Response

0 1 2 3 4 5 6 7 8-11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum back button 1 mode back button 1 number of keys back button 1 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4 key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time
01 44 38 00 a8 00 xx xx 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18
01 44 38 00 e0 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time
01 44 38 00 18 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32 key slot 32 start time key slot 32 hold time back button 2 mode back button 2 number of keys back button 2 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4
01 44 38 00 50 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time
01 44 38 00 88 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18 key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time
01 44 38 00 c0 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32
01 44 38 00 f8 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 32 start time key slot 32 hold time back button 3 mode back button 3 number of keys back button 3 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4 key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time
01 44 38 00 30 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18
01 44 38 00 68 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time
01 44 38 00 a0 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32 key slot 32 start time key slot 32 hold time back button 4 mode back button 4 number of keys back button 4 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4
01 44 38 00 d8 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time
01 44 38 00 10 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18 key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time
01 44 38 00 48 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32
01 44 38 00 80 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Response

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21-24 25 26 27 28-63
ID cmd unk page index checksum key slot 32 start time key slot 32 hold time rumble mode led control (unused) led color (R) (unused) led color (G) (unused) led color (B) (unused) left analog center left analog boundary right analog center right analog boundary unused analog sticks draw mode analog sticks deadzone control device emulation mode reserved
01 44 38 00 b8 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ff

Response (end packet, 0x10)

0 1 2 3 4 5 6 7 8-24
ID cmd unk page index checksum reserved
01 44 10 00 f0 03 xx xx ff

Prepare for write

Send

0 1 2-63
ID cmd
01 21 00

Response

0 1 2 3 4 5 6 7 8 9-63
ID cmd unk unk checksum ready state
01 21 02 00 xx 00 xx xx xx 00

Successful initialization returns 0xaa in byte 8.

Write config

Writes don't have a response.

Checksum must be calculated and updated on each write packet.

First and last packets are special and have a different layout.

First packet header

Bytes 8-19 are copied from first read packet bytes 8-19.

Origin and generation is unknown, so to build a proper write init packet, read the config first.

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62-63
ID cmd unk page index checksum unk unk unk unk unk unk unk unk unk12 ^ 0xff unk13 ^ 0xff unk14 ^ 0xff unk15 ^ 0xff dpad up dpad left dpad down dpad right start select menu A B X Y L1 R1 L2 R2 L3 R3 left analog up left analog down left analog left left analog right
01 43 38 00 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 00

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54-63
ID cmd unk page index checksum Y (gamepad mode) L1 (gamepad mode) R1 (gamepad mode) L2 (gamepad mode) R2 (gamepad mode) L3 (gamepad mode) R3 (gamepad mode) left analog up (gamepad mode) left analog down (gamepad mode) left analog left (gamepad mode) left analog right (gamepad mode) right analog up (gamepad mode) right analog down (gamepad mode) right analog left (gamepad mode) right analog right (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode) unk button (gamepad mode)
01 43 38 00 70 00 xx xx 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 00

Send

0 1 2 3 4 5 6 7 8-11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum back button 1 mode back button 1 number of keys back button 1 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4 key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time
01 43 38 00 a8 00 xx xx 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18
01 43 38 00 e0 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time
01 43 38 00 18 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32 key slot 32 start time key slot 32 hold time back button 2 mode back button 2 number of keys back button 2 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4
01 43 38 00 50 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time
01 43 38 00 88 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18 key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time
01 43 38 00 c0 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32
01 43 38 00 f8 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 32 start time key slot 32 hold time back button 3 mode back button 3 number of keys back button 3 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4 key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time
01 43 38 00 30 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18
01 43 38 00 68 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time
01 43 38 00 a0 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32 key slot 32 start time key slot 32 hold time back button 4 mode back button 4 number of keys back button 4 checksum key slot 1 key slot 1 start time key slot 1 hold time key slot 2 key slot 2 start time key slot 2 hold time key slot 3 key slot 3 start time key slot 3 hold time key slot 4
01 43 38 00 d8 02 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 4 start time key slot 4 hold time key slot 5 key slot 5 start time key slot 5 hold time key slot 6 key slot 6 start time key slot 6 hold time key slot 7 key slot 7 start time key slot 7 hold time key slot 8 key slot 8 start time key slot 8 hold time key slot 9 key slot 9 start time key slot 9 hold time key slot 10 key slot 10 start time key slot 10 hold time key slot 11 key slot 11 start time key slot 11 hold time key slot 12 key slot 12 start time key slot 12 hold time key slot 13 key slot 13 start time
01 43 38 00 10 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 13 hold time key slot 14 key slot 14 start time key slot 14 hold time key slot 15 key slot 15 start time key slot 15 hold time key slot 16 key slot 16 start time key slot 16 hold time key slot 17 key slot 17 start time key slot 17 hold time key slot 18 key slot 18 start time key slot 18 hold time key slot 19 key slot 19 start time key slot 19 hold time key slot 20 key slot 20 start time key slot 20 hold time key slot 21 key slot 21 start time key slot 21 hold time key slot 22 key slot 22 start time key slot 22 hold time
01 43 38 00 48 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ID cmd unk page index checksum key slot 23 key slot 23 start time key slot 23 hold time key slot 24 key slot 24 start time key slot 24 hold time key slot 25 key slot 25 start time key slot 25 hold time key slot 26 key slot 26 start time key slot 26 hold time key slot 27 key slot 27 start time key slot 27 hold time key slot 28 key slot 28 start time key slot 28 hold time key slot 29 key slot 29 start time key slot 29 hold time key slot 30 key slot 30 start time key slot 30 hold time key slot 31 key slot 31 start time key slot 31 hold time key slot 32
01 43 38 00 80 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

Send

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21-24 25 26 27 28-63
ID cmd unk page index checksum key slot 32 start time key slot 32 hold time rumble mode led control (unused) led color (R) (unused) led color (G) (unused) led color (B) (unused) left analog center left analog boundary right analog center right analog boundary unused analog sticks draw mode analog sticks deadzone control device emulation mode reserved
01 43 38 00 b8 03 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ff

Send (end packet, 0x10)

0 1 2 3 4 5 6 7 8-24
ID cmd unk page index checksum reserved
01 43 10 00 f0 03 xx xx ff

Commit configuration to the controller

Send

0 1 2 3 4 5 6 7 8 9 10-63
ID cmd unk checksum unk
01 27 2 00 00 00 04 00 00 04 00

Response

0 1 2 3 4 5 6 7 8 9 10 11 12-63
ID cmd unk unk unk checksum unk commit checksum
01 27 xx 00 xx xx xx xx 00 xx xx xx 00

commit checksum is the sum of: sum(configuration bytes) + sum(bytes 8-19 from first read packet).

Send

0 1 2-63
ID cmd
01 22 00