Skip to content

DS4 Controller rumble does not work using Steam Input #9552

Description

@marco-calautti

Your system information

  • Steam client version (build number or date): 1685572056
  • Distribution (e.g. Ubuntu): Arch Linux
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

I have an original Dualshock 4 controller, and I use Steam Input to convert it to a xbox 360 pad for the Windows games running under Proton. The games see the xbox controller just fine, but rumble is not working. This applies to both games bought on Steam, and non-steam games added as shortcuts.

Steps for reproducing this issue:

  1. Enable Steam input support for Playstation
  2. Enable Steam input on the Windows game to run
  3. Execute the game

For native linux games (e.g., Celeste), I can disable Steam input altogether and the games support the DS4 out of the box, including rumble. For proton games, If I disable Steam input, all of my games do not recognize the controller at all.

To add further context, this is what I tried and discovered:

  • It seems that Steam input is perfectly able to map the controller to an XBOX 360 controller. Indeed, If i open the wine control panel of any game configured to run with proton inside steam, I can see an x360 controller. The problem is that, this x360 controller, as seen by wine has the rumble checkbox disabled by default. However, if I check the checkbox in the gamepad configuration window inside the wine control panel, rumble work. Unfortunately, it seems that the change does not persist (i.e., If I close the control panel window, and reopen it, rumble is disabled again).
    So, the conclusion is that Steam Input is really perfectly capable of passing through rumble information between proton and linux, but the wine side has rumble for the virtual controller disabled by default.

-If I try to execute my non-steam games using Lutris, and thus using vanilla Wine/Wine-GE, Wine seems to take care on its own of the conversion, and automatically maps my DS4 controller to an Xinput device and rumble works fine.

-As another example, I tried streaming my games using Sunshine (an open implementation of NVIDIA's streaming protocol) on my PC, and Moonlight (the streaming client) on another device (to which I connected my DS4 controller). In this case, Sunshine is the one creating a virtual xbox 360 controller. So, I can again disable Steam input, run my games via steam (and thus using Proton), and I get the Sunshine's virtual controller recognized, with rumble working. The same applies if I use Steam's remote play functionality.

So, it is clear there is no issue on my system such as kernel drivers, libraries etc., this is purely Steam Input's fault.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions