Skip to content

Instantly share code, notes, and snippets.

@Ryochan7
Last active August 4, 2025 17:41
Show Gist options
  • Select an option

  • Save Ryochan7/ef8fabae34c0d8b30e2ab057f3e6e039 to your computer and use it in GitHub Desktop.

Select an option

Save Ryochan7/ef8fabae34c0d8b30e2ab057f3e6e039 to your computer and use it in GitHub Desktop.
USB
0 Report ID 1 (0x01)
1 LX (0-255)
2 LY (0-255)
3 RX (0-255)
4 RY (0-255)
5 L2 (0-255)
6 R2 (0-255)
7 Frame Counter (Increment by 1 per poll)
8 DPad (0-7 clockwise, 8 default), Square (16), Cross (32), Circle (64), Triangle (128)
9 L1 (1), R1 (2), L2Btn (4), R2Btn (8), Create (16), Options (32), L3 (64), R3 (128)
10 PS (1), TP Click (2) , Mute (4)
11 ???? (Always 0 for me)
12-15 Counter? (Increment by 1 per poll)
16-17 Gyro Pitch
18-19 Gyro Yaw
20-21 Gyro Roll
22-23 Accel X
24-25 Accel Y
26-27 Accel Z
28-31 ???? (Seems to increment by ~12000 per poll)
32 Battery? (15 max?)
33 Touch 1 ID (&0x7f)
34-36 Touch 1 Coordinates
37 Touch 2 ID (&0x7f)
38-40 Touch 2 Coordinates
41 Touch Packet Counter
42 ???? (Always 9 for me)
43 ???? (Always 9 for me)
44-48 ???? (Always 0 for me)
49-52 Counter? (Seems to increment by ~12000 per poll)
53 Extension? Battery (0-10), Charging (16), Fully Charged (32)
54 Extension? Audio L? (1), Audio R? (2), Charging (8)
55 Extension? Mic? (1)
56-63 ????
@naumazeredo
Copy link

12-14 timestamp
16-17 Accel X
18-19 Accel Y
20-21 Accel Z
22-23 Gyro Z
24-25 Gyro Y
26-27 Gyro X
41 Touch duration? (goes crazy when you touch)
49-52 another timestamp
53 Battery charging (0x10)
(not so sure about gyro XYZ, maybe the order is wrong, I couldn't figure it out)

I couldn't find any information about total battery.
BT seems to have the same with +1.

@dawnFirefly
Copy link

32 Mine goes up to 17, it chances every time I plug in to computer so properly not battery.
52 goes up by 1 about every 5 second.
53 seems like battery from 1~10. Mine goes up to 42.

@raleighlittles
Copy link

@SamuelChih @naumazeredo Can you explain the first battery field?

I'm seeing "18" for the first battery field (byte at index 32) even though it says 15 max.

@raleighlittles
Copy link

Also can you explain the touchpad ID thing a little bit more? What exactly does this denote? When I mask the values like it says with 0x7F I get 35 for touchID 1 and 15 for touchID 2.

@Ryochan7
Copy link
Author

Also can you explain the touchpad ID thing a little bit more? What exactly does this denote? When I mask the values like it says with 0x7F I get 35 for touchID 1 and 15 for touchID 2.

The Touch ID byte switches values depending on whether a finger touch is active. The value will be between 0-127 when a touch is active; the value will be between 128-255 when no touch is detected (active + 128). The value increments by 1 on each active touch.

The Touch 2 ID will change when the controller detect a second touch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment