Controller profile migration
Save a per-pad profile before swapping hardware, then check which port the emulator assigns so two pads stop sharing Player 1.
A controller has three identities inside an emulator: the device the system reports, the port it is assigned to, and the button bindings attached to that port. Swap the pad, add a second one, or reinstall, and the first identity changes — which quietly breaks the other two. The bindings are still there; they are just attached to a port nothing is plugged into.
What breaks and why
| Situation | What changes | Result |
|---|---|---|
| New pad of the same model | Device ID | Auto-detect re-binds it to a different port |
| Second pad added | Port assignment | Both pads drive Player 1 |
| Pad sleeps then reconnects | Port order | Player 2 becomes Player 1 mid-session |
| Reinstall or new machine | Config location | Bindings look gone, profile file is not |
These are tracked behaviours, not one-off glitches:
- Saving a controller profile does not work on Android by default: RetroArch #16799
- The port moves to the next slot when a pad disconnects and reconnects: RetroArch #3414
- Pads do not reconnect properly on some cores: RetroArch #15481
- The frontend reads the wrong pad: RetroArch #12715
- Two different pads both reported as Pad 1: PPSSPP #18602
Move a setup without losing the bindings
-
Save a profile per pad before changing hardwareWith the old pad connected, save its binding as a named controller profile instead of leaving it as an unlabelled override. A named profile is a file you can carry; an auto-detected binding is not.The profile appears in the controller profile list and reloads without the pad attached.
-
Write down which pad is on which portNote the port order while everything works. Port assignment is what actually decides Player 1 versus Player 2, and it is the first thing that shifts when a pad reconnects or a new one is added.The note matches the port list in the emulator's input settings.
-
Assign ports manually after the swapPin each pad to its intended port rather than relying on automatic detection. With two pads of the same type connected, auto-detect has nothing to distinguish them by, which is exactly how both end up on Player 1.Each pad moves only the player it is pinned to.
-
Copy the profile file over on a reinstall or new machineBindings live in the emulator's config directory, not next to your games. Copy that directory — or the single saved profile — and reload it, rather than rebinding every button by hand.The reloaded profile drives the same buttons on the new install.
-
Reconnect the same way it was connected beforeWired and wireless are different device entries. A pad bound while plugged in will not match the same pad on Bluetooth, and the reverse. Keep the connection type consistent, or keep two profiles.The pad lands on the expected port immediately after reconnecting.
Related
If the pad is not seen at all rather than mis-assigned, that is a detection problem — on Android start with Android emulator controller not working. Pairing a new pad for the first time is covered in 8BitDo Switch Pro pairing, and a pad that keeps dropping out is DualSense not detected territory.