protonscr

Proton 4.11-3 breaks DualShock 4 controller input in multiple games when connected via bluetooth

protonclosed
ValveSoftware/Proton#3016 · opened 2019-08-27 by Oschowa · updated 2019-09-16 · 46 comments · github
1 matching comments, n / p to jump
OOschowa 2019-08-27 github

With Proton 4.11-3 Sekiro (814380) does not recognize input from a Dualshock 4 controller at all, while it's working fine with earlier Proton versions.
Dark Souls: Remastered (570940) recognizes a single DS4 controller as both Xbox360 and DS4 controller at the same time, which cause duplicate button inputs. There was a simliar issue on earlier Proton versions, but it was resolved somewhere in the 4.2-x series.
I can compile and test potential fixes.

Arch LInux
Kernel 5.2.10

Sekiro log:
steam-814380.log

Dark Souls: Remastered log:
steam-367500.log

OOschowa 2019-08-27 github

Tales of Vesperia (738540) is also affected in the same way as Dark Souls: Remastered.

NNerosTie 2019-08-28 github

In the changelog:

Games will now attempt to access gamepads directly, instead of Proton emulating gamepads as if they were Xbox controllers. This means PlayStation 4 gamepads as well as fighting gamepads and other controllers will behave much more like they do on Windows. If you would like your gamepad to be emulated as if it were an Xbox controller, please use the Steam client controller mapping feature. If the controller cannot be accessed directly, due to a permissions issue, it will continue to be presented like an Xbox controller.

You need to activate it like this:
Screenshot_20190828_022133

It works but I have big latency (wireless) so it's basically unplayable 😕
edit: it looks like the latency happens when a game is downloading...

OOschowa 2019-08-28 github

I already had this option enabled.

OOschowa 2019-08-28 github

I've found, that if i disable 'PlayStation Configuration Support' in the Steam Big Picture controller settings, both Dark Sous:Remastered and Tales of Vesperia correctly recognize the DS4 as a single playstation controller, and input works mostly fine. However, it is impossible to open the config menu in Tales of Vesperia's title sceen, because it's bound to pressing the touchpad button, which doesn't work.
It has no effect on Sekiro, which still doesn't recognize any input.

@NerosTie Bluetooth for the controller and WiFi for network often share the same antenna, so that could explain the bluetooth latency when WiFi is in heavy use.

NNerosTie 2019-08-28 github

@Oschowa thanks for the info. It was maybe the first time I was using my DS4 on wifi while downloading. I thought it was a bug.

Sskeevy420 2019-08-28 github

I'm about to update my Hitman 2 DS4 issue, but, seeing this issue, I'll comment about it here as well.

With Hitman 2 my DS4 quit working with 4.11-1. Now, with 4.11-3, it requires PS4 Configuration to be enabled (what @NerosTie posted) as well as Steam Overlay enabled. After that my DS4 works just fine with Hitman 2 outside of an unrelated VSync issue.

What I'm noticing with Hitman 2 is that the Steam Client either just won't or can't change controller profiles when the overlay is disabled and will just stay in desktop mode when only PS4 Configuration is enabled (no input from the controller in-game at all when set to forced off or disabled). Due to how Steam handles controllers with BPM and Overlay it's hard to tell if requiring Overlay is a bug or intentional.

Aaeikum 2019-08-28 github

Thanks all for reporting these issues.

I tested all of these games myself this morning and here are my results. These tests were on Manjaro, with a PS4 controller connected via USB. "Unmapped" below means that the Steam controller configuration feature was turned off, so it appeared to the game as a PS4 controller. "Mapped" means controller configuration was turned on, so it appeared to the game as an xbox controller.

Dark Souls Remastered, unmapped: Works correctly, shows PS4 button icons.
Dark Souls Remastered, mapped: Works correctly, shows Xbox button icons.

Sekiro, unmapped: Works correctly, shows Xbox button icons. I see the same behavior on Windows.
Sekiro, mapped: Works correctly, shows Xbox button icons.

Hitman 2, unmapped: Works correctly, shows PS4 button icons. However, our QA testers on Ubuntu found the controller frequently stopped working during gameplay. Re-plugging the controller would fix it for some minutes, then it would break again. So there's a problem here.
Hitman 2, mapped: Works correctly, shows Xbox button icons. Our QA did not find a problem here on Ubuntu.

Tales of Vesperia, unmapped: Shows PS4 button icons. Works correctly, except touchpad button doesn't work. This is an SDL2 issue, and fixed in the current unreleased SDL2 version. Should be fixed when Valve upgrades SDL2 in the Steam client.
Tales of Vesperia, mapped: Works correctly, shows Xbox button icons.

During release testing, our QA found several games where the PS4 controller did not work in unmapped mode. This includes ICEY, Farming Simulator 19, and Muse Dash. However, for all of these titles, they did work well in mapped mode. I'm working on this issue.

As you can see, things are working quite well for us in testing. I'd expect mapped controllers to behave very similar to how they did before 4.11-3, and unmapped controllers should now be working more like they do on Windows, which is usually, but not always, better than they did before.

Aaeikum 2019-08-28 github

It would be useful to gather logs of your problems. If you are having results different from what I described above, please gather a log with some extra channels. The easiest way to do this is with user_settings.py in the Proton directory. Just add these channels to the existing WINEDEBUG line:

"WINEDEBUG": "+timestamp,+pid,+tid,+seh,+debugstr,+loaddll,+mscoree,+xinput,+dinput,+rawinput,+plugplay,+hid,+hidp,+setupapi",

Alternatively, you can put that WINEDEBUG variable into the game launch options.

When attaching your log, please describe whether the Steam controller configuration setting is enabled or disabled. Please also describe how your PS4 controller is connected to your PC. Also mention your operating system.

OOschowa 2019-08-28 github

Turns out, I can reproduce @aeikum's testing results, but only when when the controller is connected via usb. When connected via bluetooth, the regressions I described happen.
I gathered new logs the with the added debug channels, all while connecting the DS4 via bluetooth.

Sekiro, steam controller configuration set, game recognizes no controller input:
steam-814380.zip

Sekiro, steam controller configuration not set, game recognizes no controller input:
steam-814380-no-controller-config.zip

Dark Souls: Remastered, steam controller configuration set, single DS4 shows up as both DS4 and x360:
steam-570940.zip

OS is Arch Linux on kernel 5.2.10.

Aaeikum 2019-08-28 github

I'm able to reproduce the bluetooth problem. I'll work on a fix and get back to you soon.

Sskeevy420 2019-08-28 github

While I haven't had the time to make a proper report, I can confirm that Hitman 2 works perfectly fine with a USB cable and only has the DS4 issues I reported earlier with bluetooth. Manjaro with 5.2.10.

Llinuxiorr 2019-08-28 github

My DualShock 4 stopped working in Sleeping Dogs: Definitive Edition with the update to 4.11-3.

I used to play it without the Playstation configuration enabled, and it worked fine. Now it doesn't work at all (I tried with PlayStation configuration enabled and disabled).

I'm using it over bluetooth.

Aaeikum 2019-08-29 github

@Oschowa For some reason we are not filtering out the real controller device when it is mapped, so you end up seeing two devices.

Are you comfortable with the command line? Can you upload the output of "env" when run as if it were Proton? So for example:

cd "Proton 4.11"
mv proton proton_bak
echo 'env | grep SDL > /tmp/env_dump' > proton
chmod 755 proton

Then run any game in Proton 4.11 in Steam. It will immediately exit. Upload /tmp/env_dump here, it should contain a list of all your environment variables that refer to SDL. You can then move proton_bak back to proton.

OOschowa 2019-08-29 github

env_sdl.txt

Again with a DS4 connected via bluetooth. Steam Controller Config on/off produces identical output.

Aaeikum 2019-08-29 github

Thanks, I see what is happening with the doubled input problem. Here is a tarball of a new build of winebus.sys which I think will solve that problem. To try it out, extract it while within the dist/ folder in your Proton installation. For example:

cd "Proton 4.11/dist/"
tar -xvvf /tmp/winebus.sys.tar.gz

This should overwrite two existing winebus.sys.so files. Then, see if the double input problem is resolved. I would also be curious to know if Sekiro is improved for you. It is actually working here with my USB bluetooth dongle (but I have more to experiment with).

To restore the original winebus files, just delete the dist/ folder and it will be restored to its original version next time you run any game in Proton.

winebus.sys.tar.gz

0001-ignore-blacklisted-sdl-joysticks-too.patch.txt

OOschowa 2019-08-29 github

Replacing winebus.sys didn't bring any change for me in either Sekiro or Dark Souls: Remastererd.
If it makes a difference, i'm using a first gen DS4 and a Intel Wireless-AC 9260 m.2 card for bluetooth.

New logs from Dark Souls: Remastered:
steam-570940.zip
env-sdl.txt

I won't have access to my desktop for the next ~10 days, so i won't be able to test anything during that time.

Aaeikum 2019-08-30 github

OK, what you've posted so far has already been very helpful, thanks again.

I was misunderstanding how the SDL blacklist works. I believe I have the doubled input problem fixed for real now. Moving back to the Bluetooth issues.

Aaeikum 2019-08-30 github

Hello all,

I believe I have this working mostly well. I've attached a tarball here which you can install into an existing Proton 4.11 installation.

proton_issue_3016.tar.gz

Something like this should work:

cd "Proton 4.11"
tar -xvvf ~/Downloads/proton_issue_3016.tar.gz

This will overwrite six files. Give it a try and see if it's improved. To restore the original Proton 4.11 installation, just delete the dist/ folder and Proton will re-extract the original files next time you run a game with Proton.

Here are my testing results with this build, using Arch Linux and a Logitech USB adapter:

Sekiro, Bluetooth, Unmapped: Works, shows Xbox prompts, same as Windows
Sekiro, Bluetooth, Mapped: Works, shows Xbox prompts

Dark Souls: Remastered, Bluetooth, Unmapped: Works, shows PS4 prompts
Dark Souls: Remastered, Bluetooth, Mapped: Works, shows Xbox prompts

Tales of Vesperia, Bluetooth, Unmapped: Works (except touchpad), shows PS4 prompts
Tales of Vesperia, Bluetooth, Mapped: Works, shows Xbox prompts

Hitman 2, Bluetooth, Unmapped: Does not work, same as Windows
Hitman 2, Bluetooth, Mapped: Works, shows Xbox prompts

Sleeping Dogs, Bluetooth, Unmapped: Layout is wrong, shows Xbox prompts. On Windows, does not work at all.
Sleeping Dogs, Bluetooth, Mapped: Does not work in Proton. On Windows, behaves like an Xbox controller.

So, Sleeping Dogs is still broken. I'm working on that. Aside from that, things are working well for me so far.

( Patches to make the above build: proton_3016_patches.tar.gz )

IIanTrudel 2019-08-31 github

@aeikum no luck with Super Animal Royale (843380) #2641. Same behaviour as before. I tried on USB and bluetooth, mapped and unmapped.

Aaeikum 2019-09-03 github

@BackOrder Thanks for testing. I'm able to reproduce the unmapped PS4 problem, however mapped is working well for me. I'm working on the unmapped problem. Looks like a joystick issue, buttons are all working fine.

IIanTrudel 2019-09-04 github

@BackOrder Thanks for testing. I'm able to reproduce the unmapped PS4 problem, however mapped is working well for me. I'm working on the unmapped problem. Looks like a joystick issue, buttons are all working fine.

My pleasure. Did you map the controller to the keyboard layout or to a controller layout? Mapping to a keyboard layout (binding buttons to keys) in Steam Big Picture is working for me but the control is a bit slippery (too fast for its own good). Mapping to a controller layout wasn't working whereas the previous version of proton was just fine.

Aaeikum 2019-09-04 github

Mapped with the standard gamepad mapping, so it appears as an Xbox controller in-game. Works fine, joysticks are sensitive, etc. Are you able to gather a log showing the problem when using the new DLLs in mapped mode? See my comment above, https://github.com/ValveSoftware/Proton/issues/3016#issuecomment-525799930

IIanTrudel 2019-09-04 github

Now that's interesting. I'm using a DS4 controller and the gamepad mapping shows a a DS4 controller in-game. This is what I would expect. Am I doing something wrong here?

Aaeikum 2019-09-04 github

When I say "mapping" I mean enabling the Playstation controller configuration support in the Steam client. In my case, it is using the "Gamepad with camera controls" layout that Steam provides. This works well in game and appears like an Xbox controller. It's possible that you didn't install the updated libraries correctly, or I gave bad instructions, or even it's still broken :) But it is working for me.

Edit: I should say, I'm using USB wired connection. But I expect it to work with Bluetooth, too.

Here's what I did, including a file checksum at the end:

[aeikum@aeikum ~]$ cd /mnt/ext/SteamLibrary/steamapps/common/Proton\ 4.11/
[aeikum@aeikum Proton 4.11]$ ls
dist         proton                    __pycache__              version
dist.lock    proton_3.7_tracked_files  toolmanifest.vdf
filelock.py  proton_bak                user_settings.py
LICENSE      proton_dist.tar.gz        user_settings.sample.py
[aeikum@aeikum Proton 4.11]$ tar -xvvf /tmp/proton_issue_3016.tar.gz
drwxr-xr-x aeikum/weavers    0 2019-08-30 13:21 dist/
drwxr-xr-x aeikum/weavers    0 2019-08-30 10:17 dist/lib64/
drwxr-xr-x aeikum/weavers    0 2019-08-30 13:20 dist/lib64/wine/
-rwxr-xr-x aeikum/weavers 1336333 2019-08-30 13:20 dist/lib64/wine/dinput8.dll.so
-rwxr-xr-x aeikum/weavers  410444 2019-08-30 13:20 dist/lib64/wine/winebus.sys.so
-rwxr-xr-x aeikum/weavers 1336157 2019-08-30 13:21 dist/lib64/wine/dinput.dll.so
drwxr-xr-x aeikum/weavers       0 2019-08-30 10:17 dist/lib/
drwxr-xr-x aeikum/weavers       0 2019-08-30 13:20 dist/lib/wine/
-rwxr-xr-x aeikum/weavers 1080634 2019-08-30 13:20 dist/lib/wine/dinput8.dll.so
-rwxr-xr-x aeikum/weavers  361445 2019-08-30 13:20 dist/lib/wine/winebus.sys.so
-rwxr-xr-x aeikum/weavers 1084522 2019-08-30 13:21 dist/lib/wine/dinput.dll.so
[aeikum@aeikum Proton 4.11]$ md5sum dist/lib64/wine/dinput8.dll.so
561026380c4cd0751bf5ebca6cd1fd1f  dist/lib64/wine/dinput8.dll.so
[aeikum@aeikum Proton 4.11]$·
IIanTrudel 2019-09-04 github

It's still not working here. Same configuration and USB as you have. Checksum checks out.

I should mention that I am using CentOS. This is an important fact because it often has older libraries. Steam is pretty good at being self contained but I had some troubles in the past where I had to compile and install newer libraries for specific games.

So, here's a log to make your life easier. It uses the WINEDEBUG in user_settings.py found in this thread. The game works fine and reached the main menu. Then I pressed X, Sq, Tr, O, left/right sticks, dpad and finally L2. Hope this helps.

steam-843380.log

Aaeikum 2019-09-04 github

@BackOrder Thanks. Looks like Steam's controller mapping is just broken on your system. SDL never tells us about the virtual Steam controller at all. You could test this using a native game with controller support, see if the controller is broken after enabling controller configuration.

IIanTrudel 2019-09-04 github

The Linux version of XCOM: EW works fine without mapping (Steam controller support disabled), doesn't work with mapping (Steam controller support enabled). Please, take note that Big Picture configuration tool properly identify my DS4 controller, can set the LED colour, vibrates on identify and calibration works as well.

Aaeikum 2019-09-04 github

Yeah, that all lines up. For some reason mapped controllers aren't presented to games via SDL, so XCOM doesn't see it either. So it's not a Proton issue. (The controller working incorrectly when unmapped is a Proton issue, which I'm getting close to solving.)

IIanTrudel 2019-09-04 github

Thank you for the follow-up. Let me know when you have something else to test with. I will gladly do my part in this saga. :)

Aaeikum 2019-09-05 github

@BackOrder Hi again. I believe this tarball will fix SAR for you with the DS4 in unmapped mode. Same installation instructions as before. proton_3016_v2.tar.gz Note that the touchpad "button" will not work. This is a limitation of the SDL2 that Steam ships.

(Patches here: proton_3016_v2_patches.tar.gz )

IIanTrudel 2019-09-05 github

This is a success! I played one game of Super Animal Royale with an unmapped controller and it works just fine now. The touchpad, touchpad right and left clicks also work. Great work!

Aaeikum 2019-09-05 github

Great. I'd be curious to hear from anyone else who has had problems if that new version helps.

Iismaelbonato 2019-09-06 github

Thanks this last patch works like charm for me, I tested it yesterday and a lot of games are working right now with my ds4 + Sony original ds4 dungle. I've tested all those games with steam mapping.

Aaeikum 2019-09-06 github

@linuxiorr The Sleeping Dogs issue seems to be triggered by using Wine's virtual desktop. For some reason, Steam's virtual controller does not send events when Wine is running in this mode, so we have no events to report to the application. I'll see if I can find an explanation or workaround for this.

VVash63 2019-09-13 github

@linuxiorr The Sleeping Dogs issue seems to be triggered by using Wine's virtual desktop. For some reason, Steam's virtual controller does not send events when Wine is running in this mode, so we have no events to report to the application. I'll see if I can find an explanation or workaround for this.

This would explain why the test patch breaks my input in Assassin's Creed: Odyssey as well. In order to get the display resolution to be detected properly in the game you have to run it in a wine virtual desktop.

Edit: Nevermind, further testing after reverting the patch showed the same issue - turns out it was systemd-243 at fault. I downgraded back to a 242 branch and my controller works again. Strangely, it still works in Big Picture with 243 but not in game.

Aaeikum 2019-09-13 github

The changes above have been included in Proton 4.11-4. Please retest. (Though beware of this systemd regression? Not sure what's going on there.)

OOschowa 2019-09-13 github

At least the originally reported regressions are all fixed with Proton 4.11-4, thanks.
(I tested while still on systemd 242, if it matters)

VVash63 2019-09-13 github

I re-tested and can confirm that 4.11-4 works perfectly now with Odyssey without needing to hit big picture like I used to sometimes. It does seem to have broken the game launching in Virtual Desktop though, however it's also working fine without the VD now so I'm not sure how important that is to me.

Regarding systemd, it's still broken with 243. The controller works fine in the Steam Big Picture UI but as soon as I go in game no input is detected. It seems to have broken Steam Input. I filed this upstream here: https://github.com/systemd/systemd/issues/13553

Aaeikum 2019-09-16 github

@Oschowa Thanks again for reporting and all your testing. If you have other problems with controllers, please report them in the appropriate places and feel free to tag me so I know about them.

OOschowa 2019-09-16 github

@aeikum 2 controller related regressions i'm aware of right now:
linux 5.3: https://bugzilla.kernel.org/show_bug.cgi?id=204877
systemd-udev 243: https://github.com/systemd/systemd/issues/13553#issuecomment-531615479

Aaeikum 2019-09-16 github

Yeah I saw those too this morning. The timing of two unrelated regressions at the same time as I'm trying to fix up controllers in Proton is really outstanding :(

Sskeevy420 2019-09-16 github

Wanted to add that 4.11-4 fixed my DS4 bluetooth Hitman 2 issues. Still gives XBox button prompts, but it works and that's what matters most of all. I will say it kind of sucks knowing that the game supports and has DS4 button prompts.

Oh, it still needs the overlay enabled, PS4 configuration enabled, and that set to forced on or Auto when auto defaults to on.

Unrelated, yet somewhat related: Yesterday I started using Steam's Big Picture Mode windowed and found that to be a decent compromise for games that work better while BPM is running without the annoyance of having a full screen program running on my desktop. BPM seems to detect my BT DS4 faster and allows me to button mash and skip intro screens maybe a second faster than when launching from the Steam Client.

Aaeikum 2019-09-16 github

@skeevy420 That is the correct behavior for Hitman 2. When running on Windows, PS4 over generic BT dongle does not function in the game. You have to use the PS4 Configuration feature. We now match that behavior on Linux. In the Steam for Linux client, the overlay is required for PS4 configuration to function.

Sskeevy420 2019-09-16 github

@aeikum

Good to know. It used to not be that way and those settings didn't matter (Proton 4.2 series). Now I know not to mention that anymore.

Aaeikum 2019-09-16 github

Yeah. Before 4.11-3, we reported most controllers as if they were Xbox controllers. Now we report them truthfully to the game, so games can show PS4 button prompts and stuff like that. If you use the configuration feature, we go back to reporting them as Xbox controllers, so it starts working as it did before.

IIanTrudel 2019-09-16 github

@aeikum unmapped DS4 controller works as intended with the new update. RE: Super Animal Royale (843380) #2641.

Proton versions

Launch options

DLLs