DualShock 3 / SIXAXIS
Status: experimental, USB-first. Not recommended as a serious tracker.
The DualShock 3 carries a 3-axis accelerometer but only a single-axis (yaw) gyroscope and no magnetometer. With one gyro axis there is no way to integrate full 3D orientation - pitch and roll come only from the noisy gravity vector, and yaw has no drift-free reference. It is fusion-equivalent to a bare Wii Remote: accelerometer-gravity orientation plus best-effort single-axis yaw.
Identification (VID:PID)
Section titled “Identification (VID:PID)”054C:0268. Accelerometer is a Kionix-class 3-axis part; the gyro is a single
yaw-axis part; there is no magnetometer.
Transport and enable
Section titled “Transport and enable”The DualShock 3 will not stream input until told to.
- USB: send a HID SET_REPORT (Feature), report id
0xF4, payload42 0C 00 00. Input report0x01(49 bytes) then streams continuously. - Bluetooth: write the host MAC into feature report
0xF5, then enable with SET_REPORT0xF4payload42 03 00 00. Input arrives as report0x01.
Input report 0x01 (USB, 49 bytes)
Section titled “Input report 0x01 (USB, 49 bytes)”Offsets are into the report including the leading 0x01 id. The four motion words
arrive MSB-first (big-endian), 10-bit - byte-swap before use.
| Offset | Size | Field |
|---|---|---|
0x00 |
1 | Report id 0x01 |
0x02-0x04 |
3 | Buttons |
0x06 |
2 | Left stick X/Y |
0x08 |
2 | Right stick X/Y |
0x0E-0x19 |
12 | Per-button pressure |
0x29 |
2 | Accel X (u16 BE, 10-bit) |
0x2B |
2 | Accel Y |
0x2D |
2 | Accel Z |
0x2F |
2 | Gyro Z (the only gyro axis) |
Scale (approximate - needs hardware confirmation)
Section titled “Scale (approximate - needs hardware confirmation)”- Accel: zero ≈
512, ≈ 113 LSB/g →g = (raw − 512) / 113, then × 9.80665. - Gyro (yaw only): centered ≈
512; the scale is poorly specified and revision-dependent (~123 LSB per rad/s as a starting estimate), so it must be calibrated per unit or left best-effort.
Fusion
Section titled “Fusion”Feed the 3-axis accel plus the single yaw-gyro axis to fusion with the other two gyro axes zeroed. Expect unconstrained yaw drift; recenter frequently with Reset Yaw (PS button). The UI surfaces a clear “experimental, expect drift” warning.
Reset gestures
Section titled “Reset gestures”| Gesture | Action |
|---|---|
| PS button (short) | Reset Yaw |
| PS button (≥1 s hold) | Reset Full |
- On Windows the stock driver may not expose the raw HID interface; a filter/libusb driver is sometimes needed.
- The gyro scale is revision-dependent - no single constant is treated as truth.