csutorasa/XOutput

Multiple controllers do not recognize their specific assigned profile (except in order)

Opened this issue · 15 comments

When you have multiple controllers connected (let's say 2-4) and all are assigned to their specific individual controller profiles (Controller1, Controller2, etc), they do not recognize their specific profile when you turn them on the next time, out of order.

For example:
Gamepad A is assigned to profile named 'Controller1'.
Gamepad B is assigned to profile named 'Controller2'.

After they are all turned off, if you turn on Gamepad B first, it will take over the profile named 'Controller1' instead. Then when you turn on Gamepad A it will not be assigned to any profile because Gamepad B already took over it, therefore will not even work.

The only work around is that you have to turn them all on in order. This can be a bit cumbersome if you have 4 or more controllers connected and assigned to individual profiles and if you need to turn off one for whatever reason. I'm not sure what the technical issue is but I hope this describes the problem.

Here I've attached my settings.
settings.json.txt

To reiterate my point: When connecting multiple controllers at random, the first controller will get assigned to the first profile no matter what (even if I configured that profile with a specific controller), then the following controllers will not be assigned ANY profiles.

All 4 of my controllers are the same model so perhaps the reason they aren't properly assigned their respective profiles is because they have similar ID and the exact same name? I see that they have the same name when I configure their profiles so maybe that's what's confusing the order.

I want to be able to grab any of my 4 controllers, turn them on and connect them in any order and have them all working, ideally with their respective profiles or assigned profile in order from when they are connected.

Just seconding I would like an option for this to be fixed. The controllers have a unique identifier, there should be an option in XOutput to either assign controllers by their name and identifier or by just their name (current behavior)

e.g. only assign "Controller (Xbox One For Windows) (afb20ef0-36a1-11ed-800b-44454540000)" to Controller 2

and an option to keep the current behavior (probably off by default though)
e.g. assign second plugged in "Controller (Xbox One For Windows)" to Controller 2

With the current behavior you have to plug in the controllers in the correct order and you can run into issues if peoples controllers disconnect during play.

I'm momentarily using all different controllers as a workaround: Switch Pro, Dual Sense, DS4, Horipad (third party Switch Pro), Xbox One

as a side note annoyingly Xbox Series controllers are named the same as Xbox One controllers in XOutput

Just seconding I would like an option for this to be fixed. The controllers have a unique identifier, there should be an option in XOutput to either assign controllers by their name and identifier or by just their name (current behavior)

e.g. only assign "Controller (Xbox One For Windows) (afb20ef0-36a1-11ed-800b-44454540000)" to Controller 2

and an option to keep the current behavior (probably off by default though) e.g. assign second plugged in "Controller (Xbox One For Windows)" to Controller 2

With the current behavior you have to plug in the controllers in the correct order and you can run into issues if peoples controllers disconnect during play.

I'm momentarily using all different controllers as a workaround: Switch Pro, Dual Sense, DS4, Horipad (third party Switch Pro), Xbox One

as a side note annoyingly Xbox Series controllers are named th

I agree. The controllers should be able to be assigned to their respective profiles in XOutput because they have a unique identifier/id despite having the same names, HOWEVER-

I wonder if Window's limitations with assigning controller order would cause an issue because in the past (before I used XOutput), I've connected Xinput controllers that worked fine although I've run into an issue where when I turn the controllers off and back on in a different order, Windows just would not register the controllers as input at all because it was out or order (i.e. the first controller must be turned on first, because Windows knows its the 'default' controller. Otherwise if you turned on second controller first, Windows will not register it), unless you reboot, then you can turn on whichever order you'd like.

I wonder if the solution to our request in XOutput isn't to assign each controller to their individual profiles (i.e. second gamepad is Profile 2), but rather assign them into a default list of profiles as I turn them on, no matter the order (i.e. Turn on second gamepad, it is immediately assigned to Profile 1, turn on third gamepad and it will be assigned to Profile 2, etc. in any order), if that makes sense. Which is the way it works right now in XOutput is like I mentioned in my topic; Turning on any gamepad will take over Profile 1. And it will work just fine. The problem is that the remaining 3 controllers will not. So we would just have to fix it so that turning on the remaining 3 controllers in any order will be assigned to profiles 2, 3, and 4 respectively, in the order they turn on.

Did you find any fix or workaround for this?

Did you find any fix or workaround for this?

For the past couple of months, XOutput and my gamepad seems to be working the way I intended in my opening topic, although not elegantly.
I'm able to grab any of my 4 gamepads, turn them on in any order and they are automatically assigned to their respective profile. Not 100% sure what changed or if there was an update but I'm still on version 3.31.

There's been times where I had to reconnect all my controllers and reassign them on XOutput from scratch because of my laptop's bluetooth issues, but after a while it works again.

I'll report back with more info but as of now I'm able to grab any gamepad and use it, as well as any order.

image

This is the solution I'm using with reWASD (not free) and xoutput mod 8

https://github.com/polson/XOutput/releases/tag/multiple-inputs-0.1

This is the solution I'm using with reWASD (not free) and xoutput mod 8

https://github.com/polson/XOutput/releases/tag/multiple-inputs-0.1

That's interesting but why exactly do you need to map them to DS4s and then into X360? Why can't you just map the the physical controllers directly to Xbox 360 controllers via XOutput? I get that its to preserve the player order (aka profiles) but if you say xoutput mod 8 allows you to do that, is reWASD necessary?

Thank you for the info @straightoutofthepub
But I'm in the same boat as @kevinhua23, does reWASD assign each controller always to the same mapping in XOutput? In other words does it keep the usb id position? Do you use the basic program or do you need any of the extra features that you can buy apart?

I'm using 4 arcade joysticks from EG starts that I got from Amazon, and first problem is that they all show up with the same name:
image
second every time that I turn off the computer the players/ joysticks shuffle positions.

I found this software called JoyID that is supposed to keep the IDs in order, but I haven't figure it out how to use it yet:
https://theairtacticalassaultgroup.com/forum/showthread.php?t=13009

Also another suggested solution I found is to use a USB hub to connect all the devices, it seems that they keep the order if connected to a USB hub, I got one on the way so I'll report on that too.

Thank you

Hi, I just wanted to do a follow up. The modified XOutput for 4 controllers by polson seems to do what I was looking for. Each joystick is assigned to the player that is intended and it looks like it stays like that even after rebooting. I’m not sure if is permanent.
I did not used any other software or the usb Hub, all I did is disconnect all the joysticks, delete all the previous joysticks’ instances from device manager using view/show hidden and uninstall driver for each one. Once all the joysticks were deleted, rebooted and then open the XOutput mod for 4 controllers by polson:
https://github.com/polson/XOutput/releases/tag/multiple-inputs-0.1
Then one by one connect the joysticks in the order I need, mapped the keys, and move to the next joystick, connect the usb and map the keys and so on until all four players were done. And just like that seems it’s working.

This is the solution I'm using with reWASD (not free) and xoutput mod 8
https://github.com/polson/XOutput/releases/tag/multiple-inputs-0.1

That's interesting but why exactly do you need to map them to DS4s and then into X360? Why can't you just map the the physical controllers directly to Xbox 360 controllers via XOutput? I get that its to preserve the player order (aka profiles) but if you say xoutput mod 8 allows you to do that, is reWASD necessary?

There are 2 reasons:

There is an issue that myself and others are happening where xbox controllers mapped to x360 controllers in xoutput do not work when the xoutput window is not in focus #756

So you can't map say an xbox series x controller to an xbox 360 controller in xoutput. It does work though if you do series x -> DS4 (rewasd) -> 360 (xoutput)

Since rewasd creates a virtual device for the controller that is never unplugged, there will be no issues if someone unplugs or plugs in a controller mid-game as long as the controller was plugged in at least once since the computer was started.

-Start up computer
-Plug in ~14 different controllers at least once
-Start Xoutput and Xoutput will see the 14 virtual rewasd controllers whether they are plugged in or not and they can all be freely plugged in or unplugged during gameplay

without this solution, let's say a controller runs out of batteries. Unplugging that controller and plugging in another one can mess everything up and necessitate having to perhaps relaunch the game. With this solution you just need to alt-tab for a second and change the new controller to the correct player number in xoutput mod 8

In my experience xoutput or the game can possibly crash or glitch out if a controller is plugged in or unplugged while a game is running. All controllers you plan to use with xoutput should be plugged in before launching xoutput and xoutput should be started before launching a game for the best results. And the controllers should never be disconnected (rewasd ensures this)

rewasd also has lots of nice extra features that I regularly make use of as well. (Example turn off controller with a quick combo instead of having to hold the power button for a prolonged time)

Hi @straightoutofthepub, thanks for the info.
For my particular case with these arcade controllers luckily it works without reWASD, but I see how it's used in your case. Thanks mate.

Hi @straightoutofthepub, thanks for the info. For my particular case with these arcade controllers luckily it works without reWASD, but I see how it's used in your case. Thanks mate.

I was wrong, I turned the computer again today and they were all in different position. I'll try reWASD.

Hi @straightoutofthepub, thanks for the info. For my particular case with these arcade controllers luckily it works without reWASD, but I see how it's used in your case. Thanks mate.

I was wrong, I turned the computer again today and they were all in different position. I'll try reWASD.

I'm not sure if it will help, I don't think it preserves things across reboots. Only while the computer is on

@alvarusan When I mentioned that my gamepads and XOutput seemed to have solved this issue by themselves earlier this year and I don't know how- I had a theory that it may be the way Windows treats the gamepads.

Perhaps one of the recent Windows 11 update this year changed the way they set controllers by default (only 1 gamepad can be set be default as first player). What version of windows are you on?

I'm on Windows 10.
When I left last time I physically reconnected the USB as they appeared in Xoutput, so they were in order again. Yesterday, I turned on the computer again after 24h and they were in the correct position, so maybe the physical USB connector matters. I'll see if they stay like that from now on.