DualSense controller
The DualSense works over USB and over Bluetooth on every PS5 model. This page covers both, and how to keep one controller paired with the PS5 OS and Linux at the same time.
USB
The kernel's hid-playstation driver, part of mainline Linux for years, handles the DualSense over a cable. Check that it is loaded:
lsmod | grep hid_playstation
Everything on the controller works over USB: buttons, sticks, rumble, touchpad, gyro, speaker and headphone jack.
On Bazzite, pair a controller over Bluetooth from Game Mode, not from the desktop. The desktop's Bluetooth settings don't complete the pairing with a DualSense.
One DualSense for the PS5 and Linux
The PS5 OS and Linux share the same Bluetooth chip, and therefore the same Bluetooth address. A DualSense with pairing profiles keeps one pairing per host address, so pairing it with Linux replaces the PS5 pairing, and the other way around. Normally you'd have to pair again every time you switch systems.
Giving Linux its own Bluetooth address solves this. It is a boot-time service (ps5-bt-addr, and ps5-bt-pro-addr for the PS5 Pro) that any image can run; PS5 Bazzite Deck includes both and turns them on by default. The DualSense then keeps one pairing for the PS5 on one profile, and one for Linux on another. No re-pairing and no USB cable are needed when you switch.
Pairing profiles came to the DualSense with its software version 0630, released with PS5 system software 12.00. A controller on older software has no profiles: PS + Square or Triangle does nothing. A jailbroken console on older system software can't update the controller, but a PC can: Sony's DualSense firmware updater for Windows, over USB. Check the version in the PS5 OS under Settings → Accessories → Controller (General) → Wireless Controller Device Software.
Pair the DualSense with Linux (make sure it is already paired with the PS5 OS on one profile):
- Start Linux.
- On the DualSense, select a different profile, for example PS + Square.
- Put the DualSense in pairing mode.
- Pair it in the Linux Bluetooth settings.
- Start the PS5 OS, select the PS5 profile on the DualSense, and check that it connects.
- Start Linux again, select the Linux profile, and check that it connects.
Check or change the setting: ps5-bt-address status shows the address in use; ps5-bt-address off turns the feature off (pair the DualSense with Linux again afterwards).
Known limits:
bluetoothctland the Bluetooth settings still show the original address. The chip and the DualSense use the new one.- In rest mode, both profiles can wake the PS5, but once it has started only the PS5 profile connects.
- On consoles with the IW620 chip, restarts go through the PS5 OS instead of warm reboots while this is on: the chip doesn't survive a warm reboot with the changed address.
- With the feature off, a controller paired with the PS5 OS connects to Linux by itself and is refused in a loop, see Controller refused in a loop.
How the address is set per chip, and the pitfalls found in testing, are on Bluetooth.
Controller quirks
- Used in the PS5 OS first: pairing the controller in the PS5 OS breaks its Linux pairing. Remove it in Linux and pair again, or use the shared Bluetooth address setup.
- USB while connected over Bluetooth: don't plug in the USB cable while the controller is connected over Bluetooth. The log shows
Duplicate device found for MAC. - Speaker and headphone jack: only over USB. Over Bluetooth the controller's audio is not available, so a headset in the jack stays silent; use the HDMI output or a USB or Bluetooth headset instead.
When a controller doesn't pair, doesn't reconnect or keeps dropping, see Bluetooth and DualSense.