Switch Pro Controller not detected on Linux (Proton)

Running Arch Linux with Steam/Proton. Nintendo Switch Pro Controller is not detected in-game — the Controller field in Player.log is consistently blank on every launch.

System:

  • OS: Arch Linux (kernel 6.18.13)

  • Steam Input: Enabled

  • Controller: Nintendo Switch Pro Controller (tested both Bluetooth and USB-C wired)

  • Proton versions tested: 8.0, 9.0, 10.0, Experimental, GE-Proton

What I’ve confirmed:

  • Controller shows up and works correctly in Steam’s controller settings (ping, input test both work)

  • Steam controller log shows Controller 0 mapping uses xinput : false for app on every launch

  • Same controller works fine in other games (Elden Ring was my control) on the same system

  • Elden Ring uses the Steam Input API directly; No Rest for the Wicked appears to rely on the legacy XInput/SDL path which isn’t receiving the virtual device

Request: The game needs to either use the Steam Input API directly, or ensure Proton’s XInput virtualization layer is properly accepted. Other Unity games handle this correctly on Linux.

If its like you say then this request would also help alot on other OS?

To say the least i have noticed this too but i havent gotten it confirmed yet.

Update: Fixed. Posting the cause in case it helps others.

On some Linux distros, the Steam package doesn’t automatically grant access to /dev/uinput, which is the kernel device Steam uses to create a virtual XInput controller for Proton games. Without it, Steam can still detect your controller for its own UI but can’t virtualize it, so the game sees nothing.

Most games aren’t affected because they use the Steam Input API directly, hence Elden Ring working. This game’s reliance on the XInput/SDL path made it more sensitive to the missing permission.

To respond to @askan94 , probably? But I am not a game dev, so I don’t know the intricacies/pros/cons of doing that. There is probably a reason they chose to do it this way or maybe it’s just because the game’s still in Early Release.

Fix:

sudo usermod -aG input $USER

Then reboot.