CachyOS / CachyOS/distribution

[Bug]: hid-playstation: DualShock 4 disconnects randomly over Bluetooth — driver initiates L2CAP disconnection without sending output reports[Bug]:

Open
#490 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.