I had an issue I used AI to solve and thought I would pass it along. I followed all the advice but couldn't get my controller to work wireless. I will add the summary of diagnostic steps and solution below. I hope this helps someone. :
PS3 DualShock 3 Bluetooth on Ubuntu 24.04.4 LTS (Kernel 6.17)
Problem
-------
- Controller worked perfectly over USB.
- Bluetooth paired and connected but Steam never detected it.
- No /dev/input/js0 was created.
- bluetoothctl showed Connected: yes but Paired: no/Bonded: no.
- sixpair successfully programmed the controller with the PC's Bluetooth MAC.
Diagnostics
-----------
1. Verified hardware
- USB controller detected.
- hid_sony kernel module loaded.
- Wired controller worked in Steam.
2. Verified Bluetooth transport
- btmon showed:
* ACL connection established.
* HID Control (PSM 0x11) connected.
* HID Interrupt (PSM 0x13) connected.
* Controller transmitted HID reports (A1 01 ...).
- Therefore Bluetooth and pairing were NOT the problem.
3. Verified device creation
- udevadm monitor showed:
add uhid
add hidraw6
remove hidraw6
- HID device was created then immediately destroyed.
4. Found kernel errors
journalctl reported:
sony ... unknown main item tag 0x0
sony ... Failed to set controller into operational mode
sony ... failed to claim input
Root Cause
----------
BlueZ was using the UserspaceHID (UHID) backend, which failed to initialize
the DualShock 3 correctly on this system.
Fix
---
Edit:
sudo nano /etc/bluetooth/input.conf
Set:
UserspaceHID=false
ClassicBondedOnly=false
Restart Bluetooth:
sudo systemctl restart bluetooth
Ensure HIDP is loaded:
sudo modprobe hidp
Reconnect controller:
1. Plug USB in briefly.
2. Unplug.
3. Press PS.
Verification
------------
Successful fix produced:
/dev/input/event27 PLAYSTATION(R)3 Controller Motion Sensors
/dev/input/event28 PLAYSTATION(R)3 Controller
Controller became visible to evtest and Steam.
Useful diagnostic commands
--------------------------
btmon
bluetoothctl
sudo udevadm monitor --kernel --property
sudo journalctl -k -n 100 --no-pager
ls /dev/input/event*
ls /dev/input/js*
sudo evtest
Notes
-----
- sixpair is still required once to program the controller with the PC's
Bluetooth MAC address.
- This controller is a genuine Sony CECHZC2U A2. ;
The Editing of the /etc/bluetooth/input.conf file as above was the solution.