Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controller hot-reconnection broken #7952

Open
alecfriedman3 opened this issue Jul 31, 2024 · 26 comments
Open

Controller hot-reconnection broken #7952

alecfriedman3 opened this issue Jul 31, 2024 · 26 comments

Comments

@alecfriedman3
Copy link

alecfriedman3 commented Jul 31, 2024

Sometime in the last month is when I first started observing this issue. A controller re-connection mid-game will not reconnect to the game until the game itself is restarted. The controller is still able to access and navigate steam Big Picture overlay upon re-connection, so it is definitely connected and inputs are being read/received. This is happening on both steam flatpak and natively on openSUSE Tumbleweed, playing over a streaming client (Moonlight) or with a controller connected directly to the host makes no difference. I first noticed this issue while using Proton experimental a few weeks ago. I believe the issue to be within Proton, as reverting from proton experimental back to 9.0-2 fixes the behavior. This happens on all games from what I can tell.

@MollyMaclachlan
Copy link

MollyMaclachlan commented Aug 2, 2024

Can confirm this. I first started experiencing this a few days ago with Elden Ring. I've tested it with both Elden Ring and Dark Souls III, and both games the controller does not reconenct to the game if I'm using Proton Experimental, but does if I'm on 9.0-2.

Another thing to note is that the controller touchpad continues to work like a mouse in-game, but all other controls stop working until the game is restarted.

@abc-mikey
Copy link

abc-mikey commented Aug 10, 2024

I can also confirm this in multiple games. Did this ever work? I don't recall if it ever did.

(edit) I just ran a test on some random games to see if my controller (DS4) reconnected on any of them; all negative.

  • Elden Ring
  • Outcast - A New Beginning
  • SIGNALIS
  • Rain World
  • Ori and the Will of the Wisps

@jSQrD-dev
Copy link

jSQrD-dev commented Aug 12, 2024

I can also collaborate with my findings. This is a very recent regression in Experimental as a few weeks ago this was a non-issue.

No games are able to reconnect gamepads and controllers on my end as well.

I'm planning on looking through commits to see if I can spot the breaking change.

@alecfriedman3
Copy link
Author

Did this ever work? I don't recall if it ever did.

@abc-mikey Yes this worked fine just last month. See my original comment, reverting from proton experimental back to 9.0-2 fixes the behavior

@bronco-henry
Copy link

This is an issue for me now on as well. I’m on a fresh install of Linux Mint 22 xfce edition.

This was not an issue in the past for me when running the same version of proton-GE-11 and Steam beta client on Linux Mint 21.3 xfce. Tested multiple usb ports and multiple games.

@sour-source
Copy link

yep. issue on my end too, both experemental and GE versions of proton affected to this, switching back to stable 9.0.2 fixes this

@jSQrD-dev
Copy link

jSQrD-dev commented Aug 15, 2024

yep. issue on my end too, both experemental and GE versions of proton affected to this, switching back to stable 9.0.2 fixes this

If it's also affecting GE versions, can someone see when's the last GE 9 version that it worked for?

Since GE is built off of experimental, this can help narrow down the commit as well

@alecfriedman3
Copy link
Author

alecfriedman3 commented Aug 15, 2024

Latest working GE version is 9-10. 9-11 pulled in latest upstream proton according to the release notes and does not work. The last upstream proton merge in GE before that was 9-6, so it would have been introduced sometime between those two release dates. GE 9-10 worked and 9-11 did not when I tried it

@alecfriedman3
Copy link
Author

alecfriedman3 commented Aug 15, 2024

Maybe helpful bit of an update, running a game with PROTON_LOG=1, proton experimental gives an error when the controller is re-connected

0088:err:plugplay:IoRegisterDeviceInterface Device interface L"\\??\\HID#VID_28DE&PID_11FF&XI_00#0&0000&0&0&1#{6c53d5fd-6480-440f-b618-476750c5e1a6}" is still enabled.

and seems to think the device is already enabled. This error is absent from the logs with Proton 9.0-2. Maybe proton/wine is not properly destroying the input device in memory when the controller disconnects??

This may be entirely baseless, but something's pulling me to this commit from wine, made on July 3rd and pulled into experimental on July 18th (687a81ed). From my error log message, my device matches VID and PID hex codes of a conditional that was moved around VID_28DE&PID_11FF and corresponding instances of checking if (desc.vid == 0x28de && desc.pid == 0x11ff) ...

Maybe that's irrelevant, but could be a good place to start for someone more familiar with the codebase 🤷

@guoyunhe
Copy link

I have same issue with Super Bit Blaster XL, which is a native Linux game, not using any version of Proton. Strange.

@Jaskowicz1
Copy link

not using any version of Proton.

Then your issue isn't related to Proton @guoyunhe as your issue persists outside of an application running Proton. Your issue looks like a hardware/software issue for your controller. Try xone or try a different controller.

@guoyunhe
Copy link

guoyunhe commented Sep 1, 2024

Then your issue isn't related to Proton @guoyunhe as your issue persists outside of an application running Proton. Your issue looks like a hardware/software issue for your controller. Try xone or try a different controller.

The controller works fine with some non-Steam games and emulators. I am still investigating...

@Kirschi94
Copy link

I've had this issue for a while now when playing BeamNG.drive via Proton with my Xbox 360 controller: If it disconnects (idle, low battery, whatever), the game doesn't recognize it anymore once it's connected again. Have to restart the whole game so it works again.

Weird thing is: I've already had this problem in the past (end of 2023 I think), then it disappeared, then it reappeared again a while ago.

@alecfriedman3
Copy link
Author

@Kirschi94 There was a very similar bug in steam for linux back in 2023, could have been that

@Kirschi94
Copy link

Oh yeah, pretty sure that was that

Update on my end btw: Hot-reconnection for my 360 controller seems fixed, at least in BeamNG.drive it works again

@AlexFolland
Copy link

Controller hot-connection does not work at all for me in "Dragon Quest Monsters: The Dark Prince". If I start the game with my gamepad off and then turn the gamepad on, the gamepad does not work in the game at all. It only ever works if the gamepad was already on before starting the game. It continues to work perfectly in that case, but if it ever times out and I turn it back on, that also doesn't allow it to connect.

Also, when trying to access the gamepad settings in the Steam overlay (shift+tab, then clicking the gamepad icon), the overlay instantly disappears. I can't view the gamepad settings at all. After I've clicked the gamepad settings, opening the overlay shows it for 1 frame and then it instantly starts to fade out and go back to the game. This can be repeated many times if I spam shift+tab.

@AlexFolland
Copy link

I saw that this wine bug report was addressed in the latest release of wine: https://bugs.winehq.org/show_bug.cgi?id=57158

I'm guessing that once Proton has the latest changes from wine including the fix in that report, this issue may be resolved.

@Dark4Codrutz
Copy link

Dark4Codrutz commented Sep 22, 2024 via email

@kisak-valve kisak-valve added the Need Retest Request to retest an issue with vanilla Proton label Sep 22, 2024
@AlexFolland
Copy link

AlexFolland commented Sep 22, 2024

I disagree. The issue still happens for me and Proton doesn't immediately take all changes from wine, as far as I know. Like @kisak-valve tagged, this needs a re-test after the change is actually in Proton.

Edit: I just tested with Proton-Experimental, and the issue still happens here, so this definitely should not be closed.

@Chiitoo
Copy link

Chiitoo commented Sep 22, 2024

The commit that triggered the regression in Wine does not appear to be included in the Proton fork, so it is quite likely that the fix there will not fix this here, even if the issue seems very similar indeed.

@dominikhaid
Copy link

Still an Issue for me

@peci1
Copy link

peci1 commented Nov 28, 2024

Is Valve working on resolving this issue soon?

@Klubas
Copy link

Klubas commented Jan 2, 2025

Same issue in Proton 9.0.4 (9.0.2 is not available anymore in the drop-down menu)

Using proton 8.x.x fixed it for me (Tested in It Takes Two)

@Chiitoo
Copy link

Chiitoo commented Jan 2, 2025

I wonder if this is actually a libsdl2 issue.

With vanilla Wine, I saw a similar issue happening for me again a while ago, when I had built libsdl2 with udev support to test something completely different.

For binary distributions I'd imagine that support to be always included, so most users would probably be affected.

Perhaps a long-ish-shot, but it's something to consider, I maybe guess.

@sour-source
Copy link

Happy New Year everyone, issue is still there

Did a whole bunch of tests on this subject, easilly reproducable and consinstent on my end
(NEEDS CONFIRMATION FROM OTHER PEOPLE)

Test enviroment

Fedora 41, Gnome 47, Wayland
Steam Flatpak (it doesn't really matter flatpak or not, there are still the same working versions of proton on this matter like for regular version of steam and for a flatpak one)
Steam Beta or Stable also does not matter
Dualshock 4 Controller, XboxOneWireless both using Bluetooth (did a last small test with dualshock wired resulted the same, so it doesn't matter wired or not)
Games: Dead Space Remake, Baldur's Gate 3 (picked them because they have built-in support for Dualshock 4 and both regural xinput, which gives an option to exclude SteamInput from the equation when testing)

Now im thinking that the culprit to this issue is a SteamInput system, to be precise interaction of the Proton and SteamInput
Some commit that was merged in the proton broke how proton interacts with SteamInput, am not a developer so don't know what exactly broken, generated log files using PROTON_LOG=1 command line option in the games.
Since you cannot chose a latest working 9.0.2 version of proton I choose a version 8.0.5 which is working as intended, latest working version of GEProton_9-9

Affected Proton versions: stable 9.0.4 (stable 9.0.2 did worked correctly when it was available), Experemental, all builds after GEProton 9-9 (version 9-10 did not work for me as someone stated above)

Steps to reproduce:

  1. On affected verison of Proton disable SteamInput system on a game that natively supports your controller. It just works
  2. Enable SteamInput and hot reconnection is broken again

Dead Space Remake

Latest stable version Proton 9.0.4
DeadSpaceproton9.0.4c-NotOK_SteamInputEnabled.log
SteamInput off:
DeadSpace_proton9.0.4c-OK-SteamInputDisabled.log

Latest stable working version 8.0.5
DeadSpace_Proton8.0.5_Ok_SteamInputEnabled.zip (zip archive because github dont allow filles bigger than 25 MB)
Latest working GE version
DeadSpace_ProtonGE9-9_OK_SteamInputEnabled.log

Affected Proton builds:
DeadSpace_ProtonExperement_NotOk_SteamInputEnabled.log
DeadSpace_protonExperement_OK_SteamInputDisable.log
DeadSpace_ProtonGE9-22_NotOk_SteamInputEnabled.log

Baldur's Gate 3

Latest working builds:
Baldurs_proton8.0.5_XboxGamepad_OK_SteamInputEnabled.log
SteamBeta_Baldurs3_ProtonGE9-9_OK_SteamInputEnabled.log

Latest affected stable 9.0.4:
SteamBeta_Baldurs3_Proton9.0.4c_NotOk_SteamInputEnabled.log
Dualshock4Wired_Baldurs_Proton9.0.4c_NotOk_SteamInputEnabled.log
Baldurs_proton9.0.4c_XboxGamepad_Not-Ok_SteamInputEnabled.log

Baldurs_proton-9.0.4c_XboxGamepad_OK_SteamInputDisabled.log
Baldurs_proton9.0.4c_OK_SteamInputDisabled.log

Affected GE versions after GE9-9:
Baldurs_protonGE9-10_Not-Ok_SteamInputEnabled.log

@sour-source
Copy link

did a quick small test afterwards, installed steam anew from the rpm package (without flatpak whatsoever)
issue is still reproducable as expected
SteamRPM_OK_SteamInputDisabeld.log
SteamRPM_NotOK_SteamInputEnabled.log

@kisak-valve kisak-valve removed the Need Retest Request to retest an issue with vanilla Proton label Mar 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests