Controllers don't work in game anymore
Your system information
- Steam client version (build number or date): 1745876290
- Distribution (e.g. Ubuntu): Bazzite
- Opted into Steam client beta?: No
- Have you checked for system updates?: Yes
- Steam Logs: steam-logs.tar.gz
- GPU: Nvidia
Please describe your issue in as much detail as possible:
A recent update to proton broke controller support in Linux. Steam detects my controller, and I can use it to navigate around in Big Picture mode and start games. However, once a game (e.g. Brotato, PoE2, etc.) is started none of the controller inputs seem to be getting to the game and the game doesn't register that a controller is connected.
The games I'm running all support controllers, and they all used to work just fine on this system.
The OS and the steam client both see the controller, and they're both getting all of its inputs (verified via the "Game Controller" view in OS settings and "Test Device Inputs" on the controller page of settings in steam).
Steps for reproducing this issue:
- Startup a game that supports controllers
- The controller doesn't work
I can confirm this. I'm also on latest Bazzite and my controller doesn't work with Proton 10. I tested with both Proton Experimental and GE 10-3.
I'm currently playing Blasphemous 2 and I had to force Proton 9.0-4 for my controller to work in-game. I have also tested it on Cuphead and Katana Zero, to the same result.
My controller is a Flydigi Vader 3 Pro.
Same here. Proton Experimental and Hotfix somehow make my HOTAS (T.16000M and TWCS) not getting detected by games anymore. Switching to Proton 9.0-4 is the only fix.
Tested: Nuclear Option (2168680) Helicopter Gunship DEX (2012140) Tiny Combat Arena (1347550) DCS World (223750)
This is just the T.16000M. My Gulikit KingKong 2 works perfectly with Proton Experimental (just tested in HiFi Rush), so I doubt this is a generic issue.
System: Arch Linux (CachyOS repos).
Update: Found out that steam overlay needs to work for steam input to work. Overlay wasn't working so I focused on fixing that found out that gamescope messes the overlay and therefore controller support with steam input breaks. This seems to be specific to the flatpak distribution. Disabling gamescope worked as a workaround for me. Currently trying to figure out why or how to get both gamescope and overlay to work together again.
Similar situation for me. Most games my controller works perfectly, for selected titles nothing seems to work. For example Elden Ring (1245620) and Sekiro (814380) I can use either keyboard and mouse or controller, but on Armored Core VI (1888160) and Nightreing (2622380) the controller does not work, despite having the same config (proton version, steam input enabled vs disabled, overlay disabled, launching from big picture mode vs not) and these are games from the same company using the same engine and anti-cheat (In the case of Elden Ring). For the games where the controller is not recognized I have tried switching proton versions, restarting Steam, disabling steam input, enabling steam input, using the official layout, using community layouts. My controller is an official Xbox One USB C wired controller System: Arch Linux (Cachy OS repos) KDE Wayland Session GPU: 7900XT Sapphire CPU: 7800x3D Steam flatpak
@RondoRevolution @JT8D-17 thank you so much to both of you.
I spent one entire day trying to understand why my keyboard and mouse weren't working for The Witcher 3 (but worked perfectly for the overlay).
I tried Proton hotfix, experimental, I tried with a controller (and it works one time when I plugged it directly once the game was launched!?), tried native steam instead of flatpak, tried messing with keyboard conf as I have a 60% azerty keyboard etc. And finally, I tried 9.0.4. And it works 🎆 .
FYI, for anybody with the issue of controllers not working in proton 10+, I went down the rabbit hole attempting to fix it and it turns out that telling sdl to ignore all devices except the actual controller fixes the issue. In my case it's a PS3 controller so it's:
SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT=0x054C/0x0268
FYI, for anybody with the issue of controllers not working in proton 10+, I went down the rabbit hole attempting to fix it and it turns out that telling sdl to ignore all devices except the actual controller fixes the issue. In my case it's a PS3 controller so it's:
SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT=0x054C/0x0268
Thank you so much man. For anyone who doesn't understand, replace 0x054C/0x0268 with the Vendor ID and Product ID of your controller. You can find out this with lsusb command in the terminal. Then place the command in the "Properties > General >LANCH OPTIONS" of the game.
For me I got the below for my controller. So replace 0x054C/0x0268 with 0x45e/0x0b12
Bus 003 Device 017: ID 045e:0b12 Microsoft Corp. Xbox Wireless Controller (model 1914)
I've been having a similar issue for a while now and spent a few evenings trying to figure out why my controllers stopped working.
I'm trying to use them wirelessly over Bluetooth so I can't use the SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT to solve it, but if I switch back to Proton 9 all of my controllers work again by Bluetooth.
If I connect one of them by USB and using the SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT on Proton 10 it works, so the problem seems to affect both USB and Bluetooth controllers, but I don't know if there's an equivalent of that hint for Bluetooth devices.
i can't say that i have tried it as i don't have bt to test on, but you should still be able to use the same vendor/product id you get from connecting it via usb as it shows up the same to sdl. if you can't find it some other way you can always enable debug logging for hid devices in a steam game via PROTON_LOG=+hid %command% and then look at the log it creates, which i'm fairly certain is either thrown into your home directory, at ~/.steam, or ~/.var/app/com.valvesoftware.Steam (for a flatpak install) as steam-appidhere.log you should be able to find the entry by the device name and then look at the corresponding PRODUCT line for the id- eg:
37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "DRIVER=sony" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "HID_ID=0003:0000054C:00000268" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "HID_NAME=Sony PLAYSTATION(R)3 Controller" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "HID_PHYS=usb-0000:05:00.3-6.2/input0" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "HID_UNIQ=00:19:c1:6d:9e:3c" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info hid uevent "MODALIAS=hid:b0003g0000v0000054Cp0000026" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "MAJOR=189" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "MINOR=281" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "DEVNAME=bus/usb/003/026" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "DEVTYPE=usb_device" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "DRIVER=usb" 37492.049:0090:00b4:trace:hid:get_device_subsystem_info usb uevent "PRODUCT=54c/268/100"
where that last line contains what's equivalent to 0x054c/0x0268
Replying to https://github.com/ValveSoftware/Proton/issues/8681#issuecomment-3565712340
Thanks for that info. I'll give it a try.
In the meantime, I found the suggestion to prefer SDL from this ticket also resolved the issue if I add it per game. Both Bluetooth and wired controllers work on Proton 10 and variants with PROTON_PREFER_SDL=1: https://github.com/ValveSoftware/Proton/issues/8917