Bug 111811 - DualShock3 USB controller rumbles relentlessly
Summary: DualShock3 USB controller rumbles relentlessly
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Input Devices (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: drivers_input-devices
URL:
Keywords: trivial
Depends on:
Blocks:
 
Reported: 2016-02-03 18:47 UTC by ktombug
Modified: 2018-01-11 19:48 UTC (History)
2 users (show)

See Also:
Kernel Version: 4.1+
Subsystem:
Regression: No
Bisected commit-id:


Attachments
the set_operational_usb() function with 3rd party quirk (1.08 KB, application/octet-stream)
2016-02-03 18:47 UTC, ktombug
Details
the set_operational_usb() function with commented out 3rd party quirk (1.09 KB, application/octet-stream)
2016-02-03 18:58 UTC, ktombug
Details
solution: testing for DualShock3 ID in set_operational_usb() (1.26 KB, text/plain)
2016-02-12 05:25 UTC, ktombug
Details

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.

Note You need to log in before you can comment on or make changes to this bug.