protonscr

[openSUSE Leap 15.6\DualSense\Proton 9.0-2\Input] DualSense uneven behavior and mappings

protonclosed
ValveSoftware/Proton#8068 · opened 2024-09-04 by cinnamonmatexfce · updated 2024-09-15 · 2 comments · github
1 matching comments, n / p to jump
Ccinnamonmatexfce 2024-09-04 github

I need help dealing with DualSense (connected via bluetooth) behaving differently with different games.

All tests were done on openSUSE Leap 15.6 with this setup:

  • Settings > Controller > PlayStation Controller Support = "Not Enabled"
  • Game's Properties > Controller > "Disable Steam Imput"
  • Game's Properties > Compatibility > Force the use of a specific Steam Play compatibility tool = "Proton 9.0-2"
  • Game started\tested with fresh new pfx

When NOT using 88-steam-input.rules:

  • METAL GEAR SOLID V: THE PHANTOM PAIN (287700) ✅
    • everything's good, all buttons are correctly mapped and rumble works
      (game shows XBox buttons layout, but that's OK for me)
  • HITMAN WORLD OF ASSASSINATION (1659040) ❌
    • DualSense not recognized
  • Upon exiting Steam, I see this message:
Removing HIDAPI device 'DualSense Wireless Controller' VID 0x054c, PID 0x0ce6, bluetooth 1, version 0, serial ac:36:1b:88:0d:eb, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw3, driver = NONE (DISABLED)

With 88-steam-input.rules (+ sudo udevadm control --reload && sudo udevadm trigger):

  • METAL GEAR SOLID V: THE PHANTOM PAIN (287700) ❌
    • mappings are all messed-up and R2 (or RT, Right Trigger as Xbox names it) is recognized as always constantly pressed
      (game shows me XBox buttons layout, but that's OK for me)
  • HITMAN WORLD OF ASSASSINATION (1659040) ✅
    • DualSense correctly recognized and mapped
  • Upon exiting Steam, I see this message:
Removing HIDAPI device 'DualSense Wireless Controller' VID 0x054c, PID 0x0ce6, bluetooth 1, version 0, serial ac-36-1b-88-0d-eb, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw3, driver = SDL_JOYSTICK_HIDAPI_PS5 (ENABLED)

  • udevadm info -q all --attribute-walk --name=/dev/input/event19 --no-pager
    (with 88-steam-input.rules )
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/virtual/misc/uhid/0005:054C:0CE6.0004/input/input20/event19':
    KERNEL=="event19"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"

  looking at parent device '/devices/virtual/misc/uhid/0005:054C:0CE6.0004/input/input20':
    KERNELS=="input20"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{capabilities/abs}=="3003f"
    ATTRS{capabilities/ev}=="20000b"
    ATTRS{capabilities/ff}=="107030000 0"
    ATTRS{capabilities/key}=="7fdb000000000000 0 0 0 0"
    ATTRS{capabilities/led}=="0"
    ATTRS{capabilities/msc}=="0"
    ATTRS{capabilities/rel}=="0"
    ATTRS{capabilities/snd}=="0"
    ATTRS{capabilities/sw}=="0"
    ATTRS{id/bustype}=="0005"
    ATTRS{id/product}=="0ce6"
    ATTRS{id/vendor}=="054c"
    ATTRS{id/version}=="8100"
    ATTRS{inhibited}=="0"
    ATTRS{name}=="DualSense Wireless Controller"
    ATTRS{phys}==""
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{properties}=="0"
    ATTRS{uniq}=="ac:36:1b:88:0d:eb"

  looking at parent device '/devices/virtual/misc/uhid/0005:054C:0CE6.0004':
    KERNELS=="0005:054C:0CE6.0004"
    SUBSYSTEMS=="hid"
    DRIVERS=="playstation"
    ATTRS{country}=="00"
    ATTRS{firmware_version}=="0x010c000a"
    ATTRS{hardware_version}=="0x00000617"
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

  looking at parent device '/devices/virtual/misc/uhid':
    KERNELS=="uhid"
    SUBSYSTEMS=="misc"
    DRIVERS==""
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

Thanks

Ccinnamonmatexfce 2024-09-06 github

I assume that the problem should be analyzed when the rules are active, right?
If so, the issue then becomes related to DualSense inputs incorrectly mapped in Metal Gear Solid V: The Phantom Pain (287700).

I am leaving open the issue for the time being and simultaneously mentioning it in Metal Gear Solid V: The Phantom Pain (287700); you will find the related logs there.

Please let me know what you think.

Ccinnamonmatexfce 2024-09-15 github

SOLVED:

SDL_JOYSTICK_DEVICE=/dev/input/js0 %command%

Proton versions

Launch options

Launch lines

Upstream links