Bug 111811

Summary: DualShock3 USB controller rumbles relentlessly
Product: Drivers Reporter: ktombug
Component: Input DevicesAssignee: drivers_input-devices
Status: NEW ---    
Severity: normal CC: ktombug, thunderbird2k
Priority: P1 Keywords: trivial
Hardware: x86-64   
OS: Linux   
Kernel Version: 4.1+ Subsystem:
Regression: No Bisected commit-id:
Attachments: the set_operational_usb() function with 3rd party quirk
the set_operational_usb() function with commented out 3rd party quirk
solution: testing for DualShock3 ID in set_operational_usb()

Description ktombug 2016-02-03 18:47:47 UTC
Created attachment 202831 [details]
the set_operational_usb() function with 3rd party quirk

I use an official DualShock3 controller connected through USB. Whenever I plug the controller, after 10 seconds or so, the rumble feature goes 'on' forever. Playing games with an ever-rumbling controller is no fun, really.

The problem started when I switched from 4.0 to 4.1, Gentoo patched. I checked using the vanilla kernels 4.1.15 and 4.3.5. These two suffer the same problem.

I located a probable source within the 'set_operational_usb()' function in Drivers/hid/hid-sony.c . There is some code here, meant for third party controllers, that seem to mess up with the official one. I simply commented out the suspicious code, then my controller worked just fine.

However I hardly think this can be considered a proper solution, some kind of logic is required here IMHO.

There have been a discussion about this code here: https://lkml.org/lkml/2015/2/7/106, as well as a related bug report: https://bugzilla.kernel.org/show_bug.cgi?id=99541
Comment 1 ktombug 2016-02-03 18:52:23 UTC
Feel free to ask for some testing with an official controller.
Comment 2 ktombug 2016-02-03 18:58:50 UTC
Created attachment 202851 [details]
the set_operational_usb() function with commented out 3rd party quirk
Comment 3 ktombug 2016-02-12 05:25:38 UTC
Created attachment 203541 [details]
solution: testing for DualShock3 ID in set_operational_usb()

This doesn't break the code since any compatible controller that currently works will still work. Only the the behaviour with DualShock3 is modified (for the best!).

Seems to me like a proper solution. What do you guys think?
Comment 4 Roderick Colenbrander 2018-01-11 19:48:53 UTC
Is this problem still around for you? We have tested quite a bit with DualShock 3, but haven't seen this issue.