Skip to content

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.

054C:0268. Accelerometer is a Kionix-class 3-axis part; the gyro is a single yaw-axis part; there is no magnetometer.

The DualShock 3 will not stream input until told to.

  • USB: send a HID SET_REPORT (Feature), report id 0xF4, payload 42 0C 00 00. Input report 0x01 (49 bytes) then streams continuously.
  • Bluetooth: write the host MAC into feature report 0xF5, then enable with SET_REPORT 0xF4 payload 42 03 00 00. Input arrives as report 0x01.

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.

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.

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.