Ir al contenido

PlayStation (DualSense / DualShock 4)

Status: hardware-validated - DualSense sobre USB y Bluetooth, DualShock 4 sobre USB y Bluetooth en Windows. El DualSense Edge comparte el layout, pendiente de validación en vivo.

DualSense, DualSense Edge y DualShock 4 comparten un mismo driver. Los tres son dispositivos HID tanto por USB como por Bluetooth (el Bluetooth es HID sobre Bluetooth Classic, no BLE). Ninguno tiene magnetómetro, así que la fusión es de 6 ejes con deriva de yaw.

Control IMU Escala
DualSense / Edge Bosch BMI270-class gyro ±2000 dps (raw × 2000/32767), accel ±4 g (8192 LSB/g)
DualShock 4 v1/v2 Bosch BMI055 escala expuesta por firmware idéntica

La identidad del chip para el DualSense es plausible según la comunidad pero no está confirmada por teardown; lo que sí es seguro es la interfaz expuesta por firmware - ±2000 dps, ±4 g, 8192 LSB/g, 16-bit con signo - en la que se apoya el driver.

VID:PID Dispositivo
054C:0CE6 DualSense
054C:0DF2 DualSense Edge
054C:05C4 DualShock 4 v1
054C:09CC DualShock 4 v2

El driver distingue USB de Bluetooth por la longitud del input report.

Control USB report Bluetooth report
DualSense / Edge 0x01 (64 bytes) 0x31 (78+ bytes, trailer CRC32)
DualShock 4 0x01 (64 bytes) 0x11

Sobre Bluetooth el payload se desplaza porque el report lleva un tag byte inicial. Las escrituras de salida por Bluetooth (rumble / lightbar) deben adjuntar un CRC32 final o el control las rechaza en silencio.

Control / transporte Gyro Accel Notas
DualSense USB (0x01) 16 22 HW timestamp u32 LE en 28; botones PS/Mute en 10
DualSense BT (0x31) 17 23 un solo sequence-tag byte en buf[1] → USB+1; PS/Mute en 11
DualShock 4 USB (0x01) 13 19 byte de temperatura precede al gyro
DualShock 4 BT (0x11) 15 21 Windows lo entrega con padding más allá de 78 bytes, así que el parser acepta cualquier longitud ≥ 78
  • DualSense: 250 Hz (USB y Bluetooth). Un hardware sensor timestamp de libre ejecución (u32 en el offset USB 28, incrementando a 1/3 µs) impulsa el timestep de fusión con precisión, inmune al jitter de Bluetooth.
  • DualSense Edge: 1000 Hz sobre USB (sondeo más rápido del mismo paquete).
  • DualShock 4: 250 Hz; sobre Bluetooth el host puede fijar el intervalo de sondeo vía el output report (hasta 1 ms). No se decodifica ningún hardware timestamp, así que la estimación de tasa de entrega impulsa el timestep.

Los offsets/escalas de gyro y accel por unidad vienen de un HID feature report, y se aplican antes de la fusión:

  • DualSense: feature report 0x05 (41 bytes).
  • DualShock 4: según el transporte - 0x02 sobre USB, 0x05 sobre Bluetooth.

Gyro / accel / batería, recentrado con el botón PS y el lightbar RGB están cableados. El DualSense Edge comparte el layout de report del DualSense y se detecta como un tipo distinto por PID.

El botón PS (con los botones Mute/Create en el mismo byte) dispara el recentrado.

  • Steam Input puede tomar un DualSense en exclusiva. Cierra Steam o desactiva Steam Input / el soporte de controles PlayStation para el pad, o el bridge no puede abrirlo.
  • Sin magnetómetro, el yaw deriva - vuelve a hacer re-yaw mirando al frente o usa Reset Mounting.
  • Un warm-up estacionario de ~200 ms deja que el estimador de rest-bias converja sobre el gyro BMI270-class antes de que el tracking se estabilice.