protonscr

Order of Steam Input controllers as exposed to non-steam games is incorrect

steamopen Distro Family: SteamOSGeneral controller / Steam Inputnon-Steam application
ValveSoftware/steam-for-linux#10830 · opened 2024-04-28 by Stewmath · updated 2026-05-04 · 7 comments · github
SStewmath 2024-04-28 github

Your system information

  • Steam Deck
  • Steam client version (build number or date): 1710458266
  • Distribution (e.g. Ubuntu): SteamOS 3.5.19
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

I'm unsure if this is "normal" behavior, but it's very peculiar to me - the order of controllers in Steam Input doesn't seem to line up with how they're detected by applications.

UPDATE: I'm observing this in the emudeck (non-steam) version of RetroArch, but NOT in the steam version of retroarch. I'm also seeing this behavior in dolphin installed via emudeck.

As an example, when using RetroArch on my steam deck:

  • If no controllers are detected, the steam deck itself is "Steam Virtual Gamepad 0"
  • When an external gamepad is connected, there is now a "Steam Virtual Gamepad 1" In addition to that.
    • By going to "Controller Settings -> Reorder Controller", I can see that whichever controller was used to start the application is assigned as the first controller. This seems sensible, however...
    • The order they are shown in the "Reorder Controllers" window is the opposite order they're listed as in Retroarch, ie. Steam's "Controller 1" is detected as "Steam Virtual Gamepad 1" and "Controller 2" is detected as "Steam Virtual Gamepad 0".

This has the following bizarre implications:

  • When I start Retroarch with no external controllers on my steam deck, it detects the steam deck as "Steam Virtual Gamepad 0" and correctly assigns that as "player 1". However...
  • When I start Retroarch with an external controller, it assigns "Steam Virtual Gamepad 0" as player 1 and "Steam Virtual Gamepad 1" as player 2... but because Steam Input reversed their order, the controller I used to start Retroarch is always player 2 - no matter which controller I used! This means I need to manually rearrange the order every time I start the application.
    • While I could simply remap the controllers in Retroarch, this is not a good solution, as I would need to modify the configuration when I decide to use my steam deck in portable mode... and then modify it back when I want to use it on my TV. Steam Input should be able to make this seamless.

Expected behavior

The order of controllers should match the order shown in the "Reorder Controller" window, that is, the controller that was used to start the application should be the 1st controller.

Steps for reproducing this issue:

  1. Install Retroarch or Dolphin via EmuDeck
  2. Connect an external controller to a steam deck
  3. Launch a Retroarch/Dolphin or other non-steam application where you can observe the numbering of the controllers
  4. Observe that the controller ordering does not match the order shown in Steam's "Reorder Controller" window
SStewmath 2024-04-28 github

UPDATE: I'm observing this behavior only when Retroarch is run as a non-steam game. The steam version of Retroarch doesn't have this issue. Dolphin also has the same issue (both were installed via emudeck). I've updated the bug description.

SStewmath 2024-05-11 github

Oddly I'm now only experiencing this when 2 controllers are connected? Using a dualshock 4 and a steam controller, in addition to the deck of course, for a total of 3 controllers.

Tteconmoon 2024-08-29 github

I came here to write about my experiences seeing as this isn't being discussed anywhere else, but with the caveat that I am no longer able to duplicate this recently (Great for me, bad for data collection). I'm on my Steam Deck on the latest stable update, no beta or preview branches. @Stewmath can you confirm if this is still an ongoing issue for you?

When I experienced this in the past, it seemed to be an issue only with native Linux applications. Anything passing through a Proton compatibility layer (including the Steam version of RetroArch) didn't appear to be affected by this issue. But running any Linux-native games or emulators would all be affected.

A workaround that I discovered at the time was to connect my controllers after starting the game, not before, with the obvious drawback that if I quit the game and moved on to another game, the controller order would again be weird.

Again, I'm no longer able to duplicate this issue, and I can't quite recall when the last time I experience this issue was. It's been a while since I tried playing local multiplayer on my deck, in part due to this issue.

Tteconmoon 2024-09-30 github

Back to inconsistency with this, and I'm having a hard time pinning down why that changed. :(

SSterophonick 2025-01-09 github

Bump, also experiencing this issue. Xemu reports these controllers out of order.
image

It wasn't like this previously. This issue is relatively new-ish.
This is not fixed by attaching more controllers. Instead, the problem gets worse.
Steam is setting the controllers to the port opposite of what they should be. My second port controller is in the correct port, but 1 and 3 are swapped.

Why is it also now that SDL is reporting bare names for these devices? Wasn't the whole point of renaming them to Steam Virtual Gamepad so that devices didn't have to be completely re-enumerated once a port was swapped? This change breaks a number of cases such as this.

SSterophonick 2025-01-09 github

more info:

  • the SDL2 bug happens specifically on native linux apps. Proton is fine
  • the issue occurs regardless of this commit being present in the loaded SDL2. all SDL2 apps are seemingly affected
  • present on December 3rd Stable and January 6th Beta
NNicoForce 2026-05-04 github

I'm also having this issue, looks like no updates since last year? Any workarounds?

Nothing extracted yet.