Sony DualShock 4

= HID Interface = On USB and Dongle the full controller state is provided by Input report.

On Bluetooth the reduced controller state is provided by Input report. On reading Feature Input report   the former reduced controller state Input report is no longer emitted and instead Input reports    through    are emitted.

All controller state Input reports on Bluetooth that are not the reduced input report must check the   bit before processing data. If this bit is not set the packet does not contain controller state data and should instead have the  bit high as it contains only audio data. All relevant bits should be checked before processing data. For reports larger than   both state and audio data may be present. Controller state data is always placed before audio data when both are present.

Most HID reports over Bluetooth end in a CRC32 of the report contents. The bytes hashed includes the Bluetooth HID Report Type, Report ID, and report contents up to the CRC.

Bluetooth Report Types: DATA (0xA0) + INPUT  (0x01) // HID Input DATA (0xA0) + OUTPUT (0x02) // HID Output DATA (0xA0) + FEATURE (0x03) // HID Feature Input (0x50) + FEATURE (0x03) // HID Feature Output

Unsorted Commands:

Turn Off Controller:

Dongle Feature Write

Bluetooth Feature Write:

Debug command dump: