Proton icon indicating copy to clipboard operation
Proton copied to clipboard

Controller hot-reconnection broken

Open alecfriedman3 opened this issue 1 year ago • 32 comments

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.

alecfriedman3 avatar Jul 31 '24 16:07 alecfriedman3

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.

MollyMaclachlan avatar Aug 02 '24 14:08 MollyMaclachlan

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

abc-mikey avatar Aug 10 '24 14:08 abc-mikey

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.

jSQrD-dev avatar Aug 12 '24 13:08 jSQrD-dev

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

alecfriedman3 avatar Aug 12 '24 14:08 alecfriedman3

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.

picklesnathan avatar Aug 15 '24 13:08 picklesnathan

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

sour-source avatar Aug 15 '24 14:08 sour-source

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

jSQrD-dev avatar Aug 15 '24 14:08 jSQrD-dev

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 avatar Aug 15 '24 17:08 alecfriedman3

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 :shrug:

alecfriedman3 avatar Aug 15 '24 20:08 alecfriedman3

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

guoyunhe avatar Aug 31 '24 15:08 guoyunhe

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.

Jaskowicz1 avatar Sep 01 '24 08:09 Jaskowicz1

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...

guoyunhe avatar Sep 01 '24 16:09 guoyunhe

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.

Kirschi94 avatar Sep 05 '24 21:09 Kirschi94

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

alecfriedman3 avatar Sep 11 '24 15:09 alecfriedman3

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

Kirschi94 avatar Sep 14 '24 15:09 Kirschi94

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 avatar Sep 16 '24 05:09 AlexFolland

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.

AlexFolland avatar Sep 21 '24 22:09 AlexFolland

Thanks for sharing the bug report.

I see the issue was fixed by a merge in wine a week ago.

For me it corresponds to when proton started to work correctly so the change should be already present in Proton.

To be clear:

Now Proton removes the controller correctly once disconnected and recreates it when connecting again.

Whereas, before, Proton didn't reacted to the controller disconnection event and it showed as if it was still connected and upon connecting again it created a new device.

This was the issue that OP referred to as I've seen some other commments mentioning problems that are not related.

I'd say this issue could be closed.


From: Alex Folland @.> Sent: Sunday, September 22, 2024 12:13:24 AM To: ValveSoftware/Proton @.> Cc: Codrut Ban @.>; Manual @.> Subject: Re: [ValveSoftware/Proton] Controller hot-reconnection broken (Issue #7952)

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.

— Reply to this email directly, view it on GitHubhttps://github.com/ValveSoftware/Proton/issues/7952#issuecomment-2365337923, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEOW7O7GM3YL6U6PSIMF2TTZXXVQJAVCNFSM6AAAAABLY3PNBWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNRVGMZTOOJSGM. You are receiving this because you are subscribed to this thread.Message ID: @.***>

Dark4Codrutz avatar Sep 22 '24 08:09 Dark4Codrutz

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.

AlexFolland avatar Sep 22 '24 18:09 AlexFolland

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.

Chiitoo avatar Sep 22 '24 21:09 Chiitoo

Still an Issue for me

dominikhaid avatar Oct 28 '24 22:10 dominikhaid

Is Valve working on resolving this issue soon?

peci1 avatar Nov 28 '24 00:11 peci1

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)

Klubas avatar Jan 02 '25 16:01 Klubas

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.

Chiitoo avatar Jan 02 '25 17:01 Chiitoo

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 avatar Jan 06 '25 07:01 sour-source

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

sour-source avatar Jan 06 '25 10:01 sour-source

Happening on Arch Linux as well (Wayland, https://pastebin.com/5yMvL6Cv) It is as sour described it, every version after GEProton9-9 and Proton 9.0.2 does not work correctly

I tested:

  1. Reconnecting when game was launched with controller It didn't re-detect the controller
  2. Connecting the controller after the game was launched It never detected it
  3. Friends connecting their controllers with remote play It never detected them either
  4. Differentiating between bluetooth/usb No difference, still never worked

The moment I switched back to GEProton9-9 it worked flawlessly, also to note, this only happens when Steam Input is enabled for games, in games where I have native controller support (no steam input needed), it works fine

The issue with that is remote play, it always requires steam input and with GEProton-9-10+ having broken steam input, it just doesn't work if someone connects with remote play as it will never let them input anything

Also SUPER rarely when I reconnected the controller, but only really quickly, it successfully reconnected the controller Since I didn't know this issue existed and it took me a while to find it I thought it was just because my controller switched from /dev/hidraw5 to /dev/hidraw6 but when I did it really quickly, it didn't switch and worked as normal, now I don't know what's happening under the hood but that's my guess

I'm happy to provide logs or evidence if needed, just give me a mention

I'd be happy to test any hotfixes and seeing if it works

xamionex avatar Mar 22 '25 01:03 xamionex

Replying to https://github.com/ValveSoftware/Proton/issues/7952#issuecomment-2744759417

Pretty much exactly what I am experiencing. Also with Remote Play and everything.

AlphaCraft9658 avatar Mar 22 '25 08:03 AlphaCraft9658

I can confirm that the problem is still here, with Proton GE 27 and Proton Experimental / Hotfix Works on Proton 8.0-5, but not with anything after that The game I'm having trouble with is Metaphor: Refantazio

acastin avatar Apr 16 '25 17:04 acastin

Also confirm the problem on Debian with Proton 9.0.4 and Experimental. Games: Naruto Storm 1 and 2

brunom63 avatar May 01 '25 05:05 brunom63