Interchangeable Bluetooth controllers?

Hello everyone,

I am on Linux but I believe the problem is cross-platform, so I am posting this here to validate my assumption.

I have two Bluetooth capable Xbox One controllers, they are the same exact model and are visually indistinguishable. I set up one of them as player1 and the other as player2. However, Retroarch seems to know which controller is which, and thus I have to adhere to a specific port connection order. This means that when I simply take any of the two controllers to play in Retroarch it might be that I take the wrong one, and it won’t work, since Retroarch is expecting the other one. It also means that if I connect both controllers and then start Retroarch, it seems to be mere coincidence which controller gets assigned which port, and it might or might not work.

I can make it work like the following: I mark my player1 controller with a sticker, I connect this specific controller first and start Retroarch, this controller is then guaranteed to get assigned to port 0, I can then connect controller 2 and thus assure it is port 1, and everything is working then as intended.

The problem is, when I want to play another game, I have to disconnect controller 2 again, and then reconnect to make sure Retroarch assigns the right ports.

This is all rather inconvenient, since both controllers are the same model, with the same button layout, I assumed I could use the interchangeably. Meaning, whichever controller is assigned port 0 is the player1 controller, and vice versa. This is evidently not the case.

Is this how it is supposed to be? Is there any reasoning behind this, or is there even a workaround?

Kind regards, ufo

If you create an autoconfig profile for that model of controller, you can remove the hard-mapping and just allow the autoconfig to apply to whichever controller is connected first.

Thank you very much, this did indeed solve the problem that I need to take the “right” controller, in my working scenario. (I had to remove the vendor and product id from the autoconfig file)

However, if both controllers are connected before Retroarch starts it still doesn’t work. If I disconnect both while Retroarch is running and reconnect them one by one it works again.

So it improved the situation in so far as I don’t need a sticker anymore to find the right controller, but I still can only have on controller connected during startup. This is a rather minor inconvenience, but it is annoying.

Do I need some other option activated?

Thank you very much for your help.

Hello again,

I got it mostly working with the autoconfig file. Thanks again. I am now at the point where the autoconfig file lets me use the controllers interchangeably as I hoped it would be possible, except for the hotkey button. If I start Retroarch with two connected controllers, they are working, but I can’t use the hotkey button, if I start with only one connected controller, I can use the hotkey button, and still can use it after I connected the second controller. Interestingly enough, if I start Retroarch with no connected controllers, and connect just one during runtime, the hotkey button doesn’t work either!

I tried to add the hotkey button definition to the autoconfig file, but this didn’t work, neither did only defining it in retroarch.cfg.

Any ideas?

Hmm, adding it to the autoconfig should be possible, I would think… The hotkey button will only be usable by the first controller, though (all hotkeys are like this).

I investigated further, and I put the hotkey buttons in the autoconfig file and they do work. However, for some odd reason they only work on one specific controller. So I am back to the sticker. If I have the “wrong” controller connected, the hotkey buttons don’t work. This I find strange. If the “first” controller would break, I can’t use hotkey buttons anymore? This must be linked to how the controllers are ordered in the bluetooth setup, so it might be a Linux specific issue after all. I will keep investigating.