CachyOS / CachyOS/distribution
[Bug]: hid-playstation: DualShock 4 disconnects randomly over Bluetooth — driver initiates L2CAP disconnection without sending output reports[Bug]:
- Dominant language
- No language data
- Stars
- 27
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
### Kernel
7.1.2-3-cachyos
### Desktop Environment / Window Manager
KDE Plasma
### CPU
Ryzen 7 5700x
### GPU / Driver
RX 6700 XT
### Description
**Kernel:** 7.1.2-3-cachyos
**Desktop Environment:** KDE Plasma
**CPU:** (fill with your CPU)
**GPU / Driver:** (fill with your GPU)
---
## Description
The DualShock 4 controller disconnects randomly over Bluetooth after a few minutes
of active use. The issue is fully reproducible without Steam, Proton, or any other
userspace software — only `evtest` consuming input events is needed to trigger it.
Investigation with `btmon` confirms that **Linux initiates the disconnection**, not
the controller. The driver sends an `L2CAP Disconnection Request` with no prior
error, timeout, or warning in dmesg or btmon. Critically, **no `ACL Data TX`
(output reports) are observed** in the btmon trace before the disconnection,
suggesting the driver silently fails to send output reports to the device and then
cuts the connection itself.
The DualSense (VID: 054C, PID: 0CE6) works correctly over Bluetooth with the exact
same adapter, kernel, and driver, confirming the issue is specific to this DS4
firmware/hardware combination.
---
## Hardware
- **Controller:** Sony DualShock 4
- VID: 054C / PID: 09CC
- hw_version: 0x00006404
- fw_version: 0x00007009
- **Bluetooth adapter:** CSR USB dongle
- HCI ver=6 rev=22bb / LMP ver=6 / manufacturer=10 (Bluetooth 2.1)
---
## Steps to reproduce
1. Connect DualShock 4 (fw 0x00007009) via Bluetooth
2. Run `sudo evtest` and select the Wireless Controller device
3. Move sticks, triggers and buttons actively for 5–15 minutes
4. Controller disconnects; evtest reports: `error reading: No such device`
---
## dmesg at disconnection (no error reported by kernel)
### Steps to Reproduce
1. Connect DualShock 4 (fw 0x00007009) via Bluetooth
2. Run `sudo evtest` and select the Wireless Controller device
3. Move sticks, triggers and buttons actively for 5–15 minutes
4. Controller disconnects; evtest reports: `error reading: No such device`
### Expected Behavior
## dmesg at disconnection (no error reported by kernel)
### Actual Behavior
[hci0] playstation 0005:054C:09CC.0007: Registered DualShock4 controller hw_version=0x00006404 fw_version=0x00007009
(~7 minutes of normal use)
[hci0] playstation 0005:054C:09CC.0008: Registered DualShock4 controller hw_version=0x00006404 fw_version=0x00007009
No error, timeout, or HCI event is logged between the two registrations.
---
## btmon trace at disconnection point
The DS4 is sending input reports normally at ~30ms intervals up until the moment
Linux sends the disconnection request:
### Logs / Error Messages
https://paste.cachyos.org/p/e9c7651.log
### Additional Context
[btmon-log.txt](https://github.com/user-attachments/files/29564107/btmon-log.txt)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the Linux hid-playstation driver and reproduce the failure using evtest while capturing the Bluetooth exchange with btmon. Compare the DualShock 4 trace around the L2CAP disconnection with the working DualSense behavior. Done means the controller no longer disconnects during active Bluetooth use and the relevant behavior is covered by an appropriate regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- networking, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100