A working controller in Proton Experimental
Having had a few weeks of fun with ARC Raiders on my Steam Deck, I thought it might be a good time to get the x86_64 PC back into rotation. But without Windows.
Even though most of my Linux machines are running NixOS, they're also headless. I thought—given that I want to mirror the success of my Steam Deck experience—that I should try one of the SteamOS-like distributions.
I chose Bazzite due to its general market-share (according to Steam user surveys) and community size. The installation was what you'd expect from a modern Linux distribution.
KDE Plasma seems great and Steam is preinstalled! Off to a strong start.
My Xbox One S Bluetooth controller paired consistently first try. And, Steam sees the controller as a valid input device and offers button-remapping. Optimism is alive.
Let's download and launch ARC Raiders.
I'm running with Proton's Experimental release (v10+), which I've had good luck with on the Steam Deck.
Controller input is nonexistent! What is going on?
I disconnect and re-pair countless times. I even connect the controller via USB-micro. No change in behavior.
By launching another game (Celeste, a very frustrating game) I narrow it down to:
- Linux-native-> functioning controller input
- Proton-enabled -> nonfunctioning controller input
Issue #8681 resonated with my observed problem, with many individuals reporting similar controller misbehavior or outright lack of function.
This comment gave me something to try:
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
So I ran lsusb to get my device ID:
Bus 003 Device 017: ID 045e:0b14 Microsoft Corp. Xbox Wireless Controller
And placed the following in my ARC Raiders startup options:
SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT=0x045E/0x0B14 %command%
And my controller now works.
It could be interesting to investigate what device Proton seems to be preferring instead of my controller, but I'd rather just play ARC Raiders.