[Bug] Controller settings are not saved & [Feature Request] xinput implementation #577

Closed
opened 2025-01-25 00:42:30 +00:00 by williansti · 51 comments
williansti commented 2025-01-25 00:42:30 +00:00 (Migrated from github.com)

Overview

In my case I use original Xbox Series X controls, but every time I open the emulator, the input device is disabled. even though I leave everything right with player 1 using xinput 0 and player 2 using xinput 1, even creating a profile for each control, applying the settings and using them correctly, When I return to the emulator I have to do everything again, because nothing is saved. In short, the settings only work during use, they are not saved..

Smaller details

They could improve compatibility with xinput, implementing functionality like reicast, xenia, xemu or dolphin.

reicast already immediately detects any xinput control when triggered and sets each player to an xinput.

xenia and xemu detect xinput controls almost like a native console, no adjustments are required.

Dolphin, after all the configuration and usage indication for xinput 0: player 1, xinput 1: player 2, xinput 2: player 3 and xinput 3: player 4.
By doing all this and saving a profile for each player, the emulator does not forget the configuration and resumes correctly after each use.

Nature of request

Improve compatibility, efficiency and management of xinput controls in the emulator, so that the emulator "remembers" the settings.

Why would this feature be useful?

It would be useful to solve this annoying problem of every time you open the emulator, having to reconfigure all the controls again, for me and many others who use 4 controls, it is terribly sad, redoing everything every time you want to play.

### Overview In my case I use original Xbox Series X controls, but every time I open the emulator, the input device is disabled. even though I leave everything right with player 1 using xinput 0 and player 2 using xinput 1, even creating a profile for each control, applying the settings and using them correctly, When I return to the emulator I have to do everything again, because nothing is saved. In short, the settings only work during use, they are not saved.. ### Smaller details They could improve compatibility with xinput, implementing functionality like reicast, xenia, xemu or dolphin. reicast already immediately detects any xinput control when triggered and sets each player to an xinput. xenia and xemu detect xinput controls almost like a native console, no adjustments are required. Dolphin, after all the configuration and usage indication for xinput 0: player 1, xinput 1: player 2, xinput 2: player 3 and xinput 3: player 4. By doing all this and saving a profile for each player, the emulator does not forget the configuration and resumes correctly after each use. ### Nature of request Improve compatibility, efficiency and management of xinput controls in the emulator, so that the emulator "remembers" the settings. ### Why would this feature be useful? It would be useful to solve this annoying problem of every time you open the emulator, having to reconfigure all the controls again, for me and many others who use 4 controls, it is terribly sad, redoing everything every time you want to play.
GreemDev commented 2025-01-25 01:31:37 +00:00 (Migrated from github.com)

SDL is used to avoid controller-specific code. Xinput is not going to be added, at least not officially.
This is not going to be worked on.

SDL is used to avoid controller-specific code. Xinput is not going to be added, at least not officially. This is not going to be worked on.
williansti commented 2025-01-25 03:10:30 +00:00 (Migrated from github.com)

I understand, this may not even be a priority, I also understand that there is much more useful work than this, if there was a collaborator who could implement at least the two options, as in pcsx2 among others, it would be interesting, options are always welcome, think carefully perhaps in the future.

I understand, this may not even be a priority, I also understand that there is much more useful work than this, if there was a collaborator who could implement at least the two options, as in pcsx2 among others, it would be interesting, options are always welcome, think carefully perhaps in the future.
Anthonyc833 commented 2025-01-29 03:40:44 +00:00 (Migrated from github.com)

havent you press apply when you change the input device?

havent you press apply when you change the input device?
williansti commented 2025-01-29 11:30:38 +00:00 (Migrated from github.com)

havent you press apply when you change the input device?

Yes, I pressed apply, I've tried creating the profiles too, it doesn't work, every time I turn off and on the computer and the controls, everything has to be redone, SDL is complicated, I know there are settings in SDL that save in other emulators, even old ones, like yabasunshiro, but the ideal would be to have an option to detect xinput.

> havent you press apply when you change the input device? Yes, I pressed apply, I've tried creating the profiles too, it doesn't work, every time I turn off and on the computer and the controls, everything has to be redone, SDL is complicated, I know there are settings in SDL that save in other emulators, even old ones, like yabasunshiro, but the ideal would be to have an option to detect xinput.
Anthonyc833 commented 2025-01-29 13:22:08 +00:00 (Migrated from github.com)

are you 100% sure? I just checked on my machine and the settings and my controller input is still saved

are you 100% sure? I just checked on my machine and the settings and my controller input is still saved
williansti commented 2025-01-29 16:35:58 +00:00 (Migrated from github.com)

are you 100% sure? I just checked on my machine and the settings and my controller input is still saved

I will give examples of the problems that occur. If you only use 1 controller (I use Xbox series X/S), the setting is kept for xinput 0, as long as you don't open the emulator with the controller turned off, otherwise the input device will be disabled.

If you use 2 or 4 controls, the configuration gets mixed up, player 1 has xinput 1 and no longer 0, player 2 also has xinput 1.

The entire configuration is lost, even if you set it correctly as I mentioned.

Player 1: xinput 0
Player 2: xinput 1
Player 3: xinput 2
Player 4: xinput 3

When opening the emulator again if the controls are turned off, everything will be lost, and if you open the emulator with the controls turned on, each player's input device will shuffle or simply use the same xinput.

That's why I say that it would be very good to implement xinput support as an option in this emulator, because just like redream, flycast, duckstation, pcsx2, rpcs3, xenia, xemu, dolphin, etc... the configuration would be maintained, regardless of whether the control is connected with the emulator open or closed, nothing would ever be lost, in addition to the configuration always being set correctly.

> are you 100% sure? I just checked on my machine and the settings and my controller input is still saved I will give examples of the problems that occur. If you only use 1 controller (I use Xbox series X/S), the setting is kept for xinput 0, as long as you don't open the emulator with the controller turned off, otherwise the input device will be disabled. If you use 2 or 4 controls, the configuration gets mixed up, player 1 has xinput 1 and no longer 0, player 2 also has xinput 1. The entire configuration is lost, even if you set it correctly as I mentioned. Player 1: xinput 0 Player 2: xinput 1 Player 3: xinput 2 Player 4: xinput 3 When opening the emulator again if the controls are turned off, everything will be lost, and if you open the emulator with the controls turned on, each player's input device will shuffle or simply use the same xinput. That's why I say that it would be very good to implement xinput support as an option in this emulator, because just like redream, flycast, duckstation, pcsx2, rpcs3, xenia, xemu, dolphin, etc... the configuration would be maintained, regardless of whether the control is connected with the emulator open or closed, nothing would ever be lost, in addition to the configuration always being set correctly.
Anthonyc833 commented 2025-01-30 03:33:24 +00:00 (Migrated from github.com)

wait a second are you connecting your controller by bluetooth or wired?

wait a second are you connecting your controller by bluetooth or wired?
williansti commented 2025-01-30 20:40:52 +00:00 (Migrated from github.com)

I connect all 4 by bluetooth, as I mentioned, older emulators such as yabasanshiro which only uses SDL, saves the settings,

unfortunately ryujinx "forgets" the settings and disables the input if it doesn't find the connected controller, and even if I avoid opening the emulator with the controller disconnected, assuming that I only open it when the controllers are connected, it still scrambles the xinput order as I already mentioned... it's very sad, every time I open the emulator, I have to go in there and activate each control in the input and indicate one by one.

I connect all 4 by bluetooth, as I mentioned, older emulators such as yabasanshiro which only uses SDL, saves the settings, unfortunately ryujinx "forgets" the settings and disables the input if it doesn't find the connected controller, and even if I avoid opening the emulator with the controller disconnected, assuming that I only open it when the controllers are connected, it still scrambles the xinput order as I already mentioned... it's very sad, every time I open the emulator, I have to go in there and activate each control in the input and indicate one by one.
manituan commented 2025-02-03 16:12:18 +00:00 (Migrated from github.com)

Same here. This would be my number 1 issue to fix.

Same here. This would be my number 1 issue to fix.
Tartifless commented 2025-02-16 18:53:54 +00:00 (Migrated from github.com)

Xinput does not always assign the same playernumber to the same controller, so this is normal, not really an issue.

SDL is more stable

Xinput does not always assign the same playernumber to the same controller, so this is normal, not really an issue. SDL is more stable
GreemDev commented 2025-02-16 18:55:34 +00:00 (Migrated from github.com)

Xinput does not always assign the same playernumber to the same controller, so this is normal, not really an issue.

SDL is more stable

Xbox controllers have that jank even when using their official API?

> Xinput does not always assign the same playernumber to the same controller, so this is normal, not really an issue. > > SDL is more stable Xbox controllers have that jank even when using their official API?
Tartifless commented 2025-02-16 19:47:04 +00:00 (Migrated from github.com)

Yes Xinput is a mess, sdl is the way to go.

Yes Xinput is a mess, sdl is the way to go.
GreemDev commented 2025-02-16 19:49:12 +00:00 (Migrated from github.com)

I was never going to add Xinput support, so cool I guess

I was never going to add Xinput support, so cool I guess
williansti commented 2025-02-16 20:53:44 +00:00 (Migrated from github.com)

Well, I just suggested such an implementation, because in all other emulators it works without any problem, I have never seen such repulsion for a simple resource, if I had the necessary skill I would do such an implementation, because I believe that more options are always better than just one option, see dolphin, pcsx2, rpcs3, duckstation, xenia, xemu, flycast among others, well let's not discuss it anymore, if xinput is criticized here let's close this topic and depend only on SDL.

Well, I just suggested such an implementation, because in all other emulators it works without any problem, I have never seen such repulsion for a simple resource, if I had the necessary skill I would do such an implementation, because I believe that more options are always better than just one option, see dolphin, pcsx2, rpcs3, duckstation, xenia, xemu, flycast among others, well let's not discuss it anymore, if xinput is criticized here let's close this topic and depend only on SDL.
Tartifless commented 2025-02-16 21:04:05 +00:00 (Migrated from github.com)

Flycast only has sdl, not xinput

Flycast only has sdl, not xinput
GreemDev commented 2025-02-16 21:17:24 +00:00 (Migrated from github.com)

Well, I just suggested such an implementation, because in all other emulators it works without any problem, I have never seen such repulsion for a simple resource, if I had the necessary skill I would do such an implementation, because I believe that more options are always better than just one option, see dolphin, pcsx2, rpcs3, duckstation, xenia, xemu, flycast among others, well let's not discuss it anymore, if xinput is criticized here let's close this topic and depend only on SDL.

If we add multiple input backends, it needs explaining what each one does, when to use it, etc.
And then you'll get countless people who don't read the words written in the UI, or on the wiki, use the wrong backend and wonder why their controller isn't working.
If these other emulators don't have the same issues as Ryujinx does, while also using SDL in that emulator, then it's a problem that can be solved in the Ryujinx SDL code.
Doing this also doesn't require a completely new input backend to be made from the ground up for a small subset of users who use Xbox controllers for their Nintendo Switch games.

Simply adopting a completely foreign HID API for a very small subsection of users who will even get a benefit from it is not a way to solve this problem.

> Well, I just suggested such an implementation, because in all other emulators it works without any problem, I have never seen such repulsion for a simple resource, if I had the necessary skill I would do such an implementation, because I believe that more options are always better than just one option, see dolphin, pcsx2, rpcs3, duckstation, xenia, xemu, flycast among others, well let's not discuss it anymore, if xinput is criticized here let's close this topic and depend only on SDL. If we add multiple input backends, it needs explaining what each one does, when to use it, etc. And then you'll get countless people who don't read the words written in the UI, or on the wiki, use the wrong backend and wonder why their controller isn't working. If these other emulators don't have the same issues as Ryujinx does, while also using SDL in that emulator, then it's a problem that can be solved in the Ryujinx SDL code. Doing this also doesn't require a completely new input backend to be made from the ground up for a small subset of users who use Xbox controllers for their Nintendo Switch games. Simply adopting a completely foreign HID API for a very small subsection of users who will even get a benefit from it is not a way to solve this problem.
Tartifless commented 2025-02-16 22:13:52 +00:00 (Migrated from github.com)

I have xbox series x controller and don't have similar problem.
Are you sure it's not just the settings file or folder that is read-only ?

I have xbox series x controller and don't have similar problem. Are you sure it's not just the settings file or folder that is read-only ?
williansti commented 2025-02-17 04:59:11 +00:00 (Migrated from github.com)

Well, I had already closed this topic, but I will reopen it due to the continuity of the conversation, I will try to demonstrate with prints exactly what happens, I hope that this will be clearer for everyone.

1 - Doing the basics, we turn on all the Xbox controllers until they are paired with the PC.
2 - We open the emulator and go to settings >> input
3 - We define each controller in its specific player and apply the settings before clicking ok

see the pictures everything is ok, perfectly defined

Image

Image

Image

Image

Now let's see the following, I just closed the emulator and then opened it again and see what happened to the controls
They were simply all disabled, sometimes this happens and sometimes their order gets mixed up, other times 2 or more players have the same xinput

Image

Image

Image

Image

Absolutely nothing has changed in the connection of the controls, they are all active in Windows and paired, working perfectly.

Image

Image

As I mentioned several times, I can open other emulators, and all the controls are perfectly defined, for example, I opened Dolphin and there they are all perfectly configured for a long time.

Image

Image

Image

Image

I understand that implementing xinput may not be necessary, although it would be very useful for those who use controls like mine, but there are certainly problems in SDL that need to be fixed.

As previously stated, absolutely no emulator I use presents this issue of simply "forgetting" the control settings, whether with SDL or xinput, not even citron, sudachi, yuzu and all the others for other consoles, so I kindly ask that you review why SDL in ryujinx does not keep my controls properly configured and enabled.

Well, I had already closed this topic, but I will reopen it due to the continuity of the conversation, I will try to demonstrate with prints exactly what happens, I hope that this will be clearer for everyone. 1 - Doing the basics, we turn on all the Xbox controllers until they are paired with the PC. 2 - We open the emulator and go to settings >> input 3 - We define each controller in its specific player and apply the settings before clicking ok see the pictures everything is ok, perfectly defined ![Image](https://github.com/user-attachments/assets/0fd453d7-75ab-4377-b61b-c0943ad7d7c6) ![Image](https://github.com/user-attachments/assets/bad0c624-1c38-43fc-a5c6-9126277aa033) ![Image](https://github.com/user-attachments/assets/6e17d224-aa5b-4f78-b9aa-cc002b03f8b2) ![Image](https://github.com/user-attachments/assets/9a604bc8-86ab-4cfd-93a1-8ded07d76fdf) Now let's see the following, I just closed the emulator and then opened it again and see what happened to the controls They were simply all disabled, sometimes this happens and sometimes their order gets mixed up, other times 2 or more players have the same xinput ![Image](https://github.com/user-attachments/assets/9af8fbe9-6e72-4232-84b1-8739206e4991) ![Image](https://github.com/user-attachments/assets/3b39bd8a-55a7-4233-913e-f8e25a9656fd) ![Image](https://github.com/user-attachments/assets/e01b0066-2a40-4c75-b896-a4868313a281) ![Image](https://github.com/user-attachments/assets/56a52e00-f9c4-4fe6-9b3e-f4dd7641fdf2) Absolutely nothing has changed in the connection of the controls, they are all active in Windows and paired, working perfectly. ![Image](https://github.com/user-attachments/assets/ae2436af-7710-4595-865f-9ff493603aa8) ![Image](https://github.com/user-attachments/assets/86370315-9037-4dde-9441-1243c14f320f) As I mentioned several times, I can open other emulators, and all the controls are perfectly defined, for example, I opened Dolphin and there they are all perfectly configured for a long time. ![Image](https://github.com/user-attachments/assets/2cdd8cd2-3329-4efd-9562-a4389b23532b) ![Image](https://github.com/user-attachments/assets/f6567ced-f8ed-4402-80c5-26c35f226916) ![Image](https://github.com/user-attachments/assets/ed6008f5-c1ee-42fe-b299-dc5e8400215c) ![Image](https://github.com/user-attachments/assets/7f0fdd24-17f0-43b6-80ae-54fcc30a7d8c) I understand that implementing xinput may not be necessary, although it would be very useful for those who use controls like mine, but there are certainly problems in SDL that need to be fixed. As previously stated, absolutely no emulator I use presents this issue of simply "forgetting" the control settings, whether with SDL or xinput, not even citron, sudachi, yuzu and all the others for other consoles, so I kindly ask that you review why SDL in ryujinx does not keep my controls properly configured and enabled.
Tartifless commented 2025-02-17 07:48:41 +00:00 (Migrated from github.com)

What is strange is that i do not have this issue with same controllers !
Are you sure the folder or file where Config.json is located is not read-only ?

Because if it does this in sdl, it will also do it with xinput or any other wrapper

What is strange is that i do not have this issue with same controllers ! Are you sure the folder or file where Config.json is located is not read-only ? Because if it does this in sdl, it will also do it with xinput or any other wrapper
manituan commented 2025-02-17 09:24:09 +00:00 (Migrated from github.com)

I have the same experience. Let me know if I can help debug this issue.

The issue we are facing is more of an annoyance than a blocker. Controllers end up working. But we have to configure input settings each time we play, as the settings don't get saved. The input setup doesn´t persist between runs.
I've also made a profile that does persist, but it gets unassigned each time as well.

I'm running the latest Ryujinx and I've tried with multiple 8bitdo/xbox/ps4 controllers.

I have the same experience. Let me know if I can help debug this issue. The issue we are facing is more of an annoyance than a blocker. Controllers end up working. But we have to configure input settings each time we play, as the settings don't get saved. The input setup doesn´t persist between runs. I've also made a profile that does persist, but it gets unassigned each time as well. I'm running the latest Ryujinx and I've tried with multiple 8bitdo/xbox/ps4 controllers.
Tartifless commented 2025-02-17 10:39:17 +00:00 (Migrated from github.com)

Ok, i have just tried with the following controllers:

  • Xbox series X
  • Xbox One S
  • Xbox elite 2
  • 8BitDo Pro2 (switch and xinput mode)
  • Dualsense

I am unable to reproduce the issue.

I save configuration, exit ryujinx, launch it again, and settings are still there and controllers still assigned.

But this issue is not at all related to SDL vs Xinput, it's more about ryujinx not saving the configuration for your installation.

Where did you install ryujinx ? Which folder ?
Have you checked that the file Config.json located in the "portable" folder of ryujinx is correctly saved when exiting ryujinx after defining the controls ?

Ok, i have just tried with the following controllers: - Xbox series X - Xbox One S - Xbox elite 2 - 8BitDo Pro2 (switch and xinput mode) - Dualsense I am unable to reproduce the issue. I save configuration, exit ryujinx, launch it again, and settings are still there and controllers still assigned. But this issue is not at all related to SDL vs Xinput, it's more about ryujinx not saving the configuration for your installation. Where did you install ryujinx ? Which folder ? Have you checked that the file Config.json located in the "portable" folder of ryujinx is correctly saved when exiting ryujinx after defining the controls ?
williansti commented 2025-02-17 13:14:45 +00:00 (Migrated from github.com)

What is strange is that i do not have this issue with same controllers ! Are you sure the folder or file where Config.json is located is not read-only ?

Because if it does this in sdl, it will also do it with xinput or any other wrapper

I use the settings inside the "portable" folder, I checked the properties and both the folder and Config.json are not read-only.

> What is strange is that i do not have this issue with same controllers ! Are you sure the folder or file where Config.json is located is not read-only ? > > Because if it does this in sdl, it will also do it with xinput or any other wrapper I use the settings inside the "portable" folder, I checked the properties and both the folder and Config.json are not read-only.
williansti commented 2025-02-17 13:15:56 +00:00 (Migrated from github.com)

I have the same experience. Let me know if I can help debug this issue.

The issue we are facing is more of an annoyance than a blocker. Controllers end up working. But we have to configure input settings each time we play, as the settings don't get saved. The input setup doesn´t persist between runs. I've also made a profile that does persist, but it gets unassigned each time as well.

I'm running the latest Ryujinx and I've tried with multiple 8bitdo/xbox/ps4 controllers.

Thanks for reporting, they already thought I was crazy lol

> I have the same experience. Let me know if I can help debug this issue. > > The issue we are facing is more of an annoyance than a blocker. Controllers end up working. But we have to configure input settings each time we play, as the settings don't get saved. The input setup doesn´t persist between runs. I've also made a profile that does persist, but it gets unassigned each time as well. > > I'm running the latest Ryujinx and I've tried with multiple 8bitdo/xbox/ps4 controllers. Thanks for reporting, they already thought I was crazy lol
Tartifless commented 2025-02-17 13:27:53 +00:00 (Migrated from github.com)

Can you try the following:

  1. open ryujinx, configure your controls, apply/save, do not exit and share the Config.json file number 1
  2. exit ryujinx, open again, ensure controllers appear as disconnected, do nothing, quit and share Config.json number 2
  3. open again, set the controllers to the right ones (from disconnected to the ones as working in step 1 (do not change mapping of buttons), apply and save again, and share the 3rd version of the file.

If there is a difference, it will allow finding the culprit, my guess is that it will be the guid of the controller...

Can you try the following: 1) open ryujinx, configure your controls, apply/save, do not exit and share the Config.json file number 1 2) exit ryujinx, open again, ensure controllers appear as disconnected, do nothing, quit and share Config.json number 2 3) open again, set the controllers to the right ones (from disconnected to the ones as working in step 1 (do not change mapping of buttons), apply and save again, and share the 3rd version of the file. If there is a difference, it will allow finding the culprit, my guess is that it will be the guid of the controller...
williansti commented 2025-02-17 13:40:59 +00:00 (Migrated from github.com)

Ok, i have just tried with the following controllers:

  • Xbox series X
  • Xbox One S
  • Xbox elite 2
  • 8BitDo Pro2 (switch and xinput mode)
  • Dualsense

I am unable to reproduce the issue.

I save configuration, exit ryujinx, launch it again, and settings are still there and controllers still assigned.

But this issue is not at all related to SDL vs Xinput, it's more about ryujinx not saving the configuration for your installation.

Where did you install ryujinx ? Which folder ? Have you checked that the file Config.json located in the "portable" folder of ryujinx is correctly saved when exiting ryujinx after defining the controls ?

folder where ryujinx is installed = D:\Emuladores\Nintendo Switch\Emulador
folder where Config.json is located = D:\Emuladores\Nintendo Switch\Emulador\portable

portable folder and config.json are not read-only I tried testing with version 1.2.82 and the same problem occurs
I tried deleting config.json and letting the emulator recreate it but the problem still occurs.
I found that after enabling the controls, applying and clicking OK on the settings and closing the emulator, the config.json is modified correctly, but after opening the emulator again it resets the controls settings to disabled.

I just noticed something interesting, I put just 1 of my controllers on the cable, and the settings were saved and kept, even after closing and reopening the emulator
So we conclude that this problem is occurring with Xbox controls connected via Bluetooth, when connected via cable there are no problems.

The controls are identified differently on Bluetooth and the cable and perhaps SDL is not knowing how to deal with this, it is something to be investigated.

Bluetooth controls where the settings are not saved

Image

On-cable controls where problems don't occur and settings are maintained

Image

> Ok, i have just tried with the following controllers: > > * Xbox series X > * Xbox One S > * Xbox elite 2 > * 8BitDo Pro2 (switch and xinput mode) > * Dualsense > > I am unable to reproduce the issue. > > I save configuration, exit ryujinx, launch it again, and settings are still there and controllers still assigned. > > But this issue is not at all related to SDL vs Xinput, it's more about ryujinx not saving the configuration for your installation. > > Where did you install ryujinx ? Which folder ? Have you checked that the file Config.json located in the "portable" folder of ryujinx is correctly saved when exiting ryujinx after defining the controls ? folder where ryujinx is installed = D:\Emuladores\Nintendo Switch\Emulador folder where Config.json is located = D:\Emuladores\Nintendo Switch\Emulador\portable portable folder and config.json are not read-only I tried testing with version 1.2.82 and the same problem occurs I tried deleting config.json and letting the emulator recreate it but the problem still occurs. I found that after enabling the controls, applying and clicking OK on the settings and closing the emulator, the config.json is modified correctly, but after opening the emulator again it resets the controls settings to disabled. I just noticed something interesting, I put just 1 of my controllers on the cable, and the settings were saved and kept, even after closing and reopening the emulator So we conclude that this problem is occurring with Xbox controls connected via Bluetooth, when connected via cable there are no problems. The controls are identified differently on Bluetooth and the cable and perhaps SDL is not knowing how to deal with this, it is something to be investigated. Bluetooth controls where the settings are not saved ![Image](https://github.com/user-attachments/assets/f89273cf-3315-4696-9310-9813708da718) On-cable controls where problems don't occur and settings are maintained ![Image](https://github.com/user-attachments/assets/19ffc98f-13bb-4e33-8121-39237f377d23)
williansti commented 2025-02-17 13:49:54 +00:00 (Migrated from github.com)

Can you try the following:

  1. open ryujinx, configure your controls, apply/save, do not exit and share the Config.json file number 1

Config1.json

  1. exit ryujinx, open again, ensure controllers appear as disconnected, do nothing, quit and share Config.json number 2

Config2.json

  1. open again, set the controllers to the right ones (from disconnected to the ones as working in step 1 (do not change mapping of buttons), apply and save again, and share the 3rd version of the file.> > If there is a difference, it will allow finding the culprit, my guess is that it will be the guid of the controller...

Config3.json

> Can you try the following: > > 1. open ryujinx, configure your controls, apply/save, do not exit and share the Config.json file number 1 [Config1.json](https://github.com/user-attachments/files/18826218/Config1.json) > 3. exit ryujinx, open again, ensure controllers appear as disconnected, do nothing, quit and share Config.json number 2 [Config2.json](https://github.com/user-attachments/files/18826220/Config2.json) > 5. open again, set the controllers to the right ones (from disconnected to the ones as working in step 1 (do not change mapping of buttons), apply and save again, and share the 3rd version of the file.> > If there is a difference, it will allow finding the culprit, my guess is that it will be the guid of the controller... [Config3.json](https://github.com/user-attachments/files/18826223/Config3.json)
Tartifless commented 2025-02-17 15:46:50 +00:00 (Migrated from github.com)

Ok, so what we can see, between 1 and 2, just by quitting ryujinx, there are already changes in the file.

With your working configuration we get:
Player 1 - 0-9a460003-045e-0000-130b-000013057200
Player 2 - 0-9a460003-045e-0000-130b-000009057200
Player 3 - 0-9a460003-045e-0000-130b-000021057200
Player 4 - 0-9a460003-045e-0000-130b-000020057200

Re-run, change nothing and close: (we just loose Player 4)
Player 1 - 0-9a460003-045e-0000-130b-000013057200
Player 2 - 0-9a460003-045e-0000-130b-000009057200
Player 3 - 0-9a460003-045e-0000-130b-000021057200

After reconfiguration, we get brand new ids:
Player 1 - 0-466a0003-045e-0000-130b-000013057200
Player 2 - 0-466a0003-045e-0000-130b-000009057200
Player 3 - 0-466a0003-045e-0000-130b-000021057200
Player 4 - 0-466a0003-045e-0000-130b-000020057200

@GreemDev : Is it something already seen ? I just tried with 2 controllers of exactly the same type (XBox One S) but did not encounter any such issue.
I don't know what could be causing this with the example above, where the guid of controllers changes upon relaunching the app...

Ok, so what we can see, between 1 and 2, just by quitting ryujinx, there are already changes in the file. With your working configuration we get: Player 1 - 0-9a460003-045e-0000-130b-0000**1305**7200 Player 2 - 0-9a460003-045e-0000-130b-0000**0905**7200 Player 3 - 0-9a460003-045e-0000-130b-0000**2105**7200 Player 4 - 0-9a460003-045e-0000-130b-0000**2005**7200 Re-run, change nothing and close: (we just loose Player 4) Player 1 - 0-9a460003-045e-0000-130b-0000**1305**7200 Player 2 - 0-9a460003-045e-0000-130b-0000**0905**7200 Player 3 - 0-9a460003-045e-0000-130b-0000**2105**7200 After reconfiguration, we get brand new ids: Player 1 - 0-**466a0003**-045e-0000-130b-000013057200 Player 2 - 0-**466a0003**-045e-0000-130b-000009057200 Player 3 - 0-**466a0003**-045e-0000-130b-000021057200 Player 4 - 0-**466a0003**-045e-0000-130b-000020057200 @GreemDev : Is it something already seen ? I just tried with 2 controllers of exactly the same type (XBox One S) but did not encounter any such issue. I don't know what could be causing this with the example above, where the guid of controllers changes upon relaunching the app...
williansti commented 2025-02-17 17:12:19 +00:00 (Migrated from github.com)

And strangely this only occurs when the controllers are connected via bluetooth, where they are displayed as "Xinput Bluetooth LE compatible input device"

but when connected via usb cable, and they are detected as "Controller (Xbox One for Windows)" no problem occurs.

Are the controller IDs different when used via bluetooth?

And strangely this only occurs when the controllers are connected via bluetooth, where they are displayed as "Xinput Bluetooth LE compatible input device" but when connected via usb cable, and they are detected as "Controller (Xbox One for Windows)" no problem occurs. Are the controller IDs different when used via bluetooth?
Tartifless commented 2025-02-17 17:42:49 +00:00 (Migrated from github.com)

The fact that your xbox controller shows as bluetooth LE compatible device is problematic, it should show as Xbox Series controller...

Maybe you should check the driver/firmware of the controller.

The fact that your xbox controller shows as bluetooth LE compatible device is problematic, it should show as Xbox Series controller... Maybe you should check the driver/firmware of the controller.
williansti commented 2025-02-17 18:21:52 +00:00 (Migrated from github.com)

They appear as Bluetooth LE compatible device because they are connected via Bluetooth and not through the original wireless adapter for Xbox controls that exists for PC, however, my Bluetooth is of excellent quality and is Intel Bluetooth 5.1 LMP11, which is already embedded on my motherboard, a Gigabyte B660M AORUS PRO AX.

But this doesn't seem to be a problem caused by the way I connect the controls to the PC, since it's a problem exclusive to ryujinx, absolutely all the other emulators I use, none of them present a problem, and believe me, I use them a lot...

PS: the firmware of all controls are up to date, v5.23.5.0

My database and emulators

Image

Image

They appear as Bluetooth LE compatible device because they are connected via Bluetooth and not through the original wireless adapter for Xbox controls that exists for PC, however, my Bluetooth is of excellent quality and is Intel Bluetooth 5.1 LMP11, which is already embedded on my motherboard, a Gigabyte B660M AORUS PRO AX. But this doesn't seem to be a problem caused by the way I connect the controls to the PC, since it's a problem exclusive to ryujinx, absolutely all the other emulators I use, none of them present a problem, and believe me, I use them a lot... PS: the firmware of all controls are up to date, v5.23.5.0 My database and emulators ![Image](https://github.com/user-attachments/assets/504c034b-d291-4213-b2eb-fafa9dabdb50) ![Image](https://github.com/user-attachments/assets/c3f673f4-8311-4a89-b69c-375f6cfb59b7)
Tartifless commented 2025-02-17 18:29:17 +00:00 (Migrated from github.com)

Even with bluetooth and whatever the bluetooth receiver, they should have their correct name and appear as Xbox controllers, not as Bluetooth LE compatible...

Even with bluetooth and whatever the bluetooth receiver, they should have their correct name and appear as Xbox controllers, not as Bluetooth LE compatible...
williansti commented 2025-02-17 20:04:32 +00:00 (Migrated from github.com)

I found these answers on google...

What can happen when connecting an Xbox controller via Bluetooth?
1 - The Xbox Series S controller may be recognized as “XINPUT LE-compatible input device” when connected via Bluetooth to a laptop.
2 - The Xbox Series controller may be registered as an HID-compatible XINPUT device in Windows 11.
3 - The Xbox Series controller connected via Bluetooth may not be detected as an Xbox controller, but only as a generic XInput controller.

Number 3 is my case and applies to me.

but strangely this doesn't affect anything I use, from PC games and other emulators, the only software that isn't keeping the settings really is just ryujinx, that's why I suggested the implementation of xinput as another option, somehow it seems that in bluetooth the controls enter as generic xinput devices, and there's something missing in the ryujinx SDL to work well with this.

I found these answers on google... What can happen when connecting an Xbox controller via Bluetooth? 1 - The Xbox Series S controller may be recognized as “XINPUT LE-compatible input device” when connected via Bluetooth to a laptop. 2 - The Xbox Series controller may be registered as an HID-compatible XINPUT device in Windows 11. 3 - The Xbox Series controller connected via Bluetooth may not be detected as an Xbox controller, but only as a generic XInput controller. Number 3 is my case and applies to me. but strangely this doesn't affect anything I use, from PC games and other emulators, the only software that isn't keeping the settings really is just ryujinx, that's why I suggested the implementation of xinput as another option, somehow it seems that in bluetooth the controls enter as generic xinput devices, and there's something missing in the ryujinx SDL to work well with this.
Tartifless commented 2025-02-17 20:09:46 +00:00 (Migrated from github.com)

Xinput will not fix this, as xinput ids (from 0 to 3) will not be assigned always to the same controller, but at least they won't appear disconnected.

But this should be fixed by ryujinx dev in sdl, it seems the code assigns different guids upon restart of app, which is messy....

Xinput will not fix this, as xinput ids (from 0 to 3) will not be assigned always to the same controller, but at least they won't appear disconnected. But this should be fixed by ryujinx dev in sdl, it seems the code assigns different guids upon restart of app, which is messy....
Tartifless commented 2025-02-17 20:11:15 +00:00 (Migrated from github.com)

This might be the culprit:
0f3c7f920b

Maybe...

This might be the culprit: https://github.com/Ryubing/Ryujinx/commit/0f3c7f920bac1301fc2960836b788ebb19d92702 Maybe...
GreemDev commented 2025-02-17 20:12:09 +00:00 (Migrated from github.com)

it looks like the controller IDs are directly obtained from SDL

it looks like the controller IDs are directly obtained from SDL
Tartifless commented 2025-02-17 20:16:47 +00:00 (Migrated from github.com)

The fact that the guid changes upon application restart is very strange and indeed other emulators also use guid (pcsx2, citra forks, yuzu forks....) and do not show this behaviour.

Maybe instead of using guid, just sdl index would be enough...

The fact that the guid changes upon application restart is very strange and indeed other emulators also use guid (pcsx2, citra forks, yuzu forks....) and do not show this behaviour. Maybe instead of using guid, just sdl index would be enough...
GreemDev commented 2025-02-17 20:17:55 +00:00 (Migrated from github.com)

i really do not want to break everyone's input configs because of, specifically, Xbox controllers users on Bluetooth lol

i really do not want to break everyone's input configs because of, specifically, Xbox controllers users on Bluetooth lol
williansti commented 2025-02-17 20:27:20 +00:00 (Migrated from github.com)

I understand that with xinput the control in my hand will not always be player 1, it may simply be player 2 on the next restart, but what is certain is that both will connect without requiring any type of configuration, almost automatically.

When I mention options it is because it is common in other projects, for example in pcsx2 I don't even turn on the SDL option... every time an emulator has an option for xinput, I just leave it turned on and there is no need to define any configuration, see how each control already goes to xinput0 or xinput1 by itself.

But I don't want to be more annoying than I already am, I understood that the problem here is some code in SDL X Xinput via bluetooth, since other emulators that I use with SDL do not present a problem, but I am grateful that we finally found the source of the problem.

Image

Image

Image

I understand that with xinput the control in my hand will not always be player 1, it may simply be player 2 on the next restart, but what is certain is that both will connect without requiring any type of configuration, almost automatically. When I mention options it is because it is common in other projects, for example in pcsx2 I don't even turn on the SDL option... every time an emulator has an option for xinput, I just leave it turned on and there is no need to define any configuration, see how each control already goes to xinput0 or xinput1 by itself. But I don't want to be more annoying than I already am, I understood that the problem here is some code in SDL X Xinput via bluetooth, since other emulators that I use with SDL do not present a problem, but I am grateful that we finally found the source of the problem. ![Image](https://github.com/user-attachments/assets/5a281f98-dc1c-4666-967d-9c1dfb1448d7) ![Image](https://github.com/user-attachments/assets/a111cd0e-5aa0-458d-b605-b04f56791608) ![Image](https://github.com/user-attachments/assets/a5d346b6-7ca3-4f8c-a016-77cbf7db231b)
Tartifless commented 2025-02-17 20:27:41 +00:00 (Migrated from github.com)

It's already broken it seems.

@williansti : can you try with older version 1.2.19 if you experience the same:
https://github.com/Ryubing/Ryujinx/releases/download/1.2.19/ryujinx-1.2.19-win_x64.zip

It's already broken it seems. @williansti : can you try with older version 1.2.19 if you experience the same: https://github.com/Ryubing/Ryujinx/releases/download/1.2.19/ryujinx-1.2.19-win_x64.zip
williansti commented 2025-02-17 20:39:55 +00:00 (Migrated from github.com)

It's already broken it seems.

@williansti : can you try with older version 1.2.19 if you experience the same: https://github.com/Ryubing/Ryujinx/releases/download/1.2.19/ryujinx-1.2.19-win_x64.zip

I tested this version and unfortunately the same problem occurred. I also tried deleting the portable folder and letting it recreate the config.json in another location, but it also didn't save the control settings.

I went further and also tested the old ryujinx, ryujinx-1.1.1402-win_x64, and the same thing happens, apparently it's a very old problem, strange that no one has ever reported this.

> It's already broken it seems. > > [@williansti](https://github.com/williansti) : can you try with older version 1.2.19 if you experience the same: https://github.com/Ryubing/Ryujinx/releases/download/1.2.19/ryujinx-1.2.19-win_x64.zip I tested this version and unfortunately the same problem occurred. I also tried deleting the portable folder and letting it recreate the config.json in another location, but it also didn't save the control settings. I went further and also tested the old ryujinx, ryujinx-1.1.1402-win_x64, and the same thing happens, apparently it's a very old problem, strange that no one has ever reported this.
Tartifless commented 2025-02-17 20:59:08 +00:00 (Migrated from github.com)

So basically this issue is very limited to xbox series controller and only when they are in the case you explained hereover (recognized as generic xinput device).

It can be fixable, but for this a dev with sdl2 minimal knowledge is required.

So basically this issue is very limited to xbox series controller and only when they are in the case you explained hereover (recognized as generic xinput device). It can be fixable, but for this a dev with sdl2 minimal knowledge is required.
Tartifless commented 2025-02-17 21:15:42 +00:00 (Migrated from github.com)

Well, just saw someone on github with similar issue:

Image

Seems indeed like something is broken at controller level also in linux.

What is still puzzling is that this happens only for some people, for others, with same controllers, there is no issue...

And looking at the code, it uses standard sdl2 features, so absolutely no reason within this code for it not to work.

Well, just saw someone on github with similar issue: ![Image](https://github.com/user-attachments/assets/fc4c297f-8a3c-45d6-a034-8e777cae77a2) Seems indeed like something is broken at controller level also in linux. What is still puzzling is that this happens only for some people, for others, with same controllers, there is no issue... And looking at the code, it uses standard sdl2 features, so absolutely no reason within this code for it not to work.
Tartifless commented 2025-02-17 21:32:22 +00:00 (Migrated from github.com)

@williansti , just a quick question, do you have Steam running in parallel ? (Even minimised to tray)

@williansti , just a quick question, do you have Steam running in parallel ? (Even minimised to tray)
williansti commented 2025-02-17 21:35:06 +00:00 (Migrated from github.com)

I have steam but it is completely closed, and I leave his background disabled

I have steam but it is completely closed, and I leave his background disabled
williansti commented 2025-02-19 01:27:55 +00:00 (Migrated from github.com)
Video reproducing the problem https://github.com/user-attachments/assets/93f40743-bb20-4706-b9c2-ad7f9c19da38
ulzior commented 2025-02-21 15:13:52 +00:00 (Migrated from github.com)

@williansti I have exactly the same issue. I use two xbox controller (xbox one and xbox series x). I'm also seeing the XInput controller bluetooth compatible in my controllers window. I'm trying to find a solution, but i'm quite stuck. Quick question though, did you ever use xbox accessories to update your controllers firmware ? Because it seems, from what i'm googling, that controllers being recognized as LE XInput bluetooth compatible is something happening with updates of the controllers firmware through that app.

I did try to revet to former firmware but i'm unable to so far.

@williansti I have exactly the same issue. I use two xbox controller (xbox one and xbox series x). I'm also seeing the XInput controller bluetooth compatible in my controllers window. I'm trying to find a solution, but i'm quite stuck. Quick question though, did you ever use xbox accessories to update your controllers firmware ? Because it seems, from what i'm googling, that controllers being recognized as LE XInput bluetooth compatible is something happening with updates of the controllers firmware through that app. I did try to revet to former firmware but i'm unable to so far.
williansti commented 2025-02-21 16:40:02 +00:00 (Migrated from github.com)

@ulzior Downgrading the controller firmware is not a solution, considering that this problem does not occur in any other game or emulator, If Microsoft wants Bluetooth to be recognized as a generic Xinput device, what can we do? So be it, the issue is that we only have a problem with Ryujinx and no other application.

Unfortunately, we will have to wait for a developer who is willing to update the SDL of this fork so that this problem can finally be solved.

@ulzior Downgrading the controller firmware is not a solution, considering that this problem does not occur in any other game or emulator, If Microsoft wants Bluetooth to be recognized as a generic Xinput device, what can we do? So be it, the issue is that we only have a problem with Ryujinx and no other application. Unfortunately, we will have to wait for a developer who is willing to update the SDL of this fork so that this problem can finally be solved.
wojiukankan commented 2025-02-23 03:38:08 +00:00 (Migrated from github.com)

I have the same problem, my xbox compatible controller is also recognized as "LE XINPUT" when using Bluetooth.😭😭😭😭😭😭
Image

I have the same problem, my xbox compatible controller is also recognized as "LE XINPUT" when using Bluetooth.😭😭😭😭😭😭 ![Image](https://github.com/user-attachments/assets/690c7a94-5f01-4430-8f7f-77c2bcba5e07)
Tartifless commented 2025-02-27 07:10:46 +00:00 (Migrated from github.com)

@williansti you fixed it ?

@williansti you fixed it ?
BijornCoote commented 2025-03-03 08:10:47 +00:00 (Migrated from github.com)

I was able to get the control mappings to switch with XSX controller on the build Ryujinx_1.1.0+d890fff (macOS). I don't know what changed but something definitely got tinkered with. I had to use time machine to get back my old application support folder as well.
I don't see a performance dip either (M1 Air).
Please look into the issue!

I was able to get the control mappings to switch with XSX controller on the build **Ryujinx_1.1.0+d890fff (macOS)**. I don't know what changed but something definitely got tinkered with. I had to use time machine to get back my old application support folder as well. I don't see a performance dip either (M1 Air). Please look into the issue!
GreemDev commented 2025-03-03 08:16:04 +00:00 (Migrated from github.com)

that build isnt even from this repo

that build isnt even from this repo
Sign in to join this conversation.
No Milestone
No project
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MeloNX/Ryujinx-ryubing#577
No description provided.