Hello @sonic2kk, it might be interesting to downgrade your system SDL to the last known working version and redo your gamepad tester testcase.
Do you happen to know if your browser uses SDL to route controller input into their Gamepad API implementation?
it might be interesting to downgrade your system SDL to the last known working version and redo your gamepad tester testcase.
I'll take a look into this and report back once I have some info, and take note of whichever version ends up working (if one does, that is 😉)
I'm not sure how many things on my system rely on SDL but I'll attempt to downgrade. At worst it'll probably be a handful of smaller applications which rely on system SDL will break temporarily, so it shouldn't be a big deal.
Do you happen to know if your browser uses SDL to route controller input into their Gamepad API implementation?
I was wondering this actually, I use Firefox and although there is a browser Gamepad API I know it's a bit inconsistent, at least based on the description on that website. I'm not at my PC right now but I don't think Firefox depends on SDL, so perhaps the Gamepad API is implemented differently after all.
I do know though that SuperTuxKart uses SDL, I haven't looked at the code but I would assume it uses SDL for controller input. A couple of emulators (Ryujinx and Dolphin) use SDL for input, though Ryujinx bundles its own and the Dolphin Flatpak I'm using should also bundle its own. Dolphin actually lists my Switch controller as being under SDL/<name>. That could explain why they're unaffected, SuperTuxKart is installed from the repos though.
I'll take a look into downgrading SDL and see if that improves my controller situation :-)
Downgrading SDL (specifically the sdl2 package) fixed the controller support issue with Steam and Gamepad Tester with my Switch Pro Controller! Woo!
For background (for anyone reading that might not know), there are two ways to pair a Switch Pro Controller when using joycond, a popular userspace service for improving Switch Controller support:
+ and - together, which pairs it as a virtual device. This is primarily for Steam but will improve support for anything that happens to not recognise a Switch Pro Controller unless it's paired as a virtual deviceNow that I have downgraded SDL, things work as expected. When my Switch controller is paired as a virtual device, Steam (and Gamepad Tester) see my controller. But with the most recent SDL version, Steam (and Gamepad Tester) do not see my controller at all.
The downgraded SDL2 package is 2.26.3-1. Its build date is Web 08 Feb 2023.
The newest available SDL2 package is 2.26.4-1. It was built around March 8th if I recall correctly, so about a month newer than the version I have downgraded to.
It seems like there is some conflict here with the newer SDL package and Steam?
This issue should be reported to the upstream libSDL issue tracker since you were able to reproduce it without Steam being involved.
I reported it upstream. I will close this issue now, if/when there is a resolution I will comment here as well for anyone reading in future.
Thank you!
EDIT: Thought to take a look at the changelog for 2.26.4, and noticed the following line of interest:
Fixed using older game controller mappings on Linux
This now only affects Steam. I tested a few versions of SDL in the upstream issue and Steam now no longer works even with SDL 2.26.3.
My Steam Controller works but my Switch Pro Controller (even when paired as a virtual device) is not detected by Steam. It's detected by every other application I have tested, including the previously not working Gamepad Tester, and the handful of games I tested can detect the controller with Steam Input disabled.
Sorry to re-open but it seems that it only affects Steam now, so I believe it to be a Steam bug.
Tried rolling back to SDL 2.26.3 and using the Steam Client Stable, still running into this issue.
I wonder if SDL+Steam is not the culprit here after all, maybe there is another issue?
Okay, I did some further investigation and here's what I found.
So the culprit appears to be SDL 2+Steam. This does not affect any other applications both when using the Pro Controller paired regularly and as a virtual device. This issue only affects the Steam Client, at least out of the small handful of applications which I have tested:
I am also able to reproduce the issue on my laptop running Arch with essentially the same software setup as my PC (joycond driver installed, Arch Linux + KDE Plasma Wayland, Zen kernel, etc).
The issue seems to lie with some udev rules. After troubleshooting for a while I found that running the following command and restarting Steam fixes the issue:
sudo udevadm control --reload-rules && sudo udevadm trigger
The issue appears to be neither to do with SDL nor Steam. Apologies for the confusion here. Closing.
Nothing extracted yet.
Your system information
Please describe your issue in as much detail as possible:
Steam has stopped recognizing my controllers save for my Steam Controller, which still works. My Nintendo Switch Pro Controller is no longer recognised (using
joycondand pairing it as a virtual gamepad so Steam can see it, with the+and-buttons). I have a hard time connecting my Xbox controller to my PC but when I do get it to pair, Steam also doesn't recognise it. Other applications do however recognise my Switch Pro Controller (when paired as a regular gamepad, using L+R) and my Xbox controller.This happens when using the Switch controller wired as well (which still needs to be initialized in the same way as over bluetooth). I couldn't test my Xbox controller wired as it does not work wired at all on my PC.
I tried rolling back to the stable Steam release, and it also did not work which I thought was strange. I looked at Gamepad Tester and it also did not recognise that any controller was detected. but SuperTuxKart did work and its controller menu showed the Switch Pro Controller, and games started with Steam Input disabled seemed to recognise my controller as well (Sonic Mania, Resident Evil 4 Chainsaw Demo). Various emulators also detected the controller no problem.
I thought this was pretty strange, it's only Steam that's impacted by this. So I looked at my recently updated packages and it seemed that I updated
SDL2a couple of days ago, around the time the issue started appearing. I'm using STL 2.26.4-1 on my system. However Steam it not listed as requiring SDL.The only other thing I could think of which caused this is a kernel update, but I tried rolling back to a version from several days ago that was working only to find that it wasn't. I'm currently using
6.2.2-zen2-1-zen.Steps for reproducing this issue: