Controller Profile Config reverts to default after restarting app

I’m using an Android TV Box, RetroArch App, and a Logitech F310 wired controller.

RetroArch Input Driver is set to android.


The default autoconfig file Logitech Gamepad F310.cfg has the Select, L2, and R2 buttons mapped wrong.

I have Select + Start buttons set as Hotkeys to toggle the Quick Menu in-game, but since the Select button is wrong, it doesn’t work, so I have to remap the controller profile.

  1. Settings → Input → Port 1 Controls
  2. I remap the Select button, it sets value to 4 instead of the default 109.
  3. I press Save Controller Profile.
  4. It says “Controller Profile saved successfully”.

Now the Quick Menu Hotkeys work, but if I restart the RetroArch app, it loads the default config with Select as 109 and I cannot bring up the Quick Menu anymore.

None of my changes will stay, I don’t know where RetroArch is even finding the default config values, since the Logitech Gamepad F310.cfg file shows that it saved the changes.

1 Like

Hmm. That’s certainly not the desired or expected behavior, but let’s try a workaround: while RetroArch is running, head over to settings > directory and try changing you autoconfig location to somewhere user-writeable (inside your RetroArch user directory would be good) and then go over to settings > input > port 1 controls and re-save your custom profile. it should go to the new location. quit RetroArch and reopen it and see if that gets you fixed up.

2 Likes

It seems to be broken in both Android and Windows (Nightly 1.9.11) with the same behavior.

After saving the Control Profile, I can make it stay by going to Main MenuConfiguration FileSave Current Configuration. Now when I restart RetroArch it will load the right profile.

But if I switch to a different controller, it always loads the previous controller profile, even though it shows the name of the new controller.


I’ve taken some screenshots on Windows because it’s easier.

I’ve tested 2 controllers, a RetroBit Legacy16 and an Xbox Series S.

I map the RetroBit Legacy16 and save controller profile and retroarch.cfg.

But now when I plug in the Xbox controller and restart RetroArch, it loads the RetroBit button config, causing the Xbox buttons to be all messed up.

Are you resetting the controls to default after saving your profile? That’s an important step.

The profiles files are saved, I reset to default.

But how can you access these options if it is in Kiosk Mode and using different controllers? Do you have to do these steps every time you plug in a new controller?

Shouldn’t the profiles be loading automatically when a different controller is plugged in?

Yes it should and it works most of the time, but I’ve had issues too. My experience is in Linux, so this could be different for you.

In Information > System Information you can see exactly which configuration file Retroarch is loading for your controllers. I suspect a ‘stock’ file with incorrect mapping is being loaded (because it matches the hardware descriptors), delete or move that and it should load your saved profile.

The caveat is that on Windows I think you’re using xinput, and the xbox / retro-bit mixup might be because the retro-bit gets recognized as an xbox controller?

1 Like

A side note, I have “Save Config on Exit” turned off on all my different RetroArch installs, because sometimes it would randomly corrupt the retroarch.cfg on my Raspberry Pi 4 when I turned it off, and would only load the rgui theme and not ozone or xmb. I would have to restore from a backup every time. So now I always save manually and that problem went away.


I just tested switching controllers, saving the autoconfig profile, and the retroarch.cfg.

The changes it made were to input_player1.

So it is saving the current controller button mappings to the retroarch.cfg. Then when I restart RetroArch with a different controller, it’s using the previous controller’s mappings from the retroarch.cfg and the autoconfig saved profile has no effect.

I tested that also, I deleted all the autoconfig files except the one for the controller I was using, but it still loaded the old button mappings. Now I think I know why, they are saved in retroarch.cfg under input_player1 and the autoconfig does not override it.

It looks like the correct profiles are loaded:

RetroBit

Xbox

I think that solved it.

When I manually mapped and saved the controller profile, I didn’t reset to default after before I saved retroarch.cfg and exited, and it saved all those settings to input_player1 in the retroarch.cfg.

The retroarch.cfg was always overriding the autoconfig profiles.

So to fix it I set everything to default/auto and resaved the retroarch.cfg. Now the config was clean and had all nul values for input_player1.

Now the autoconfigs load correctly for each controller and aren’t overridden by the retroarch.cfg values.

1 Like

Awesome! I’m glad that fixed you up!

1 Like

To fix this from happening by accident to other people, could you have autoconfig profiles always override the retroarch.cfg? Then you won’t have to set to default every time before exiting and saving the config.

Is there a reason retroarch.cfg has priority over autoconfig profiles?

I thought retroarch.cfg was the base, and anything custom overrides it.

The current behavior is intentional because most people shouldn’t (and indeed don’t) ever need to touch settings > input > port X controls, but if they do, it’s because they need to change something that’s autoconfig’ed, so the main config needs to take precedence.

I have bad news. Now it always loads default/auto and will not load my custom saved profile. Because the retroarch.cfg tells it to always load default/auto.

So the buttons work for each different controller now, but the select button is still wrong on the F310 controller, and I can’t use the Quick Menu.

I don’t think I will be able to solve it.

It may have something to do with the controller driver being used xinput, dinput, android, along with the “Save Controller Profile” option. It don’t think the profile was saving with the RetroBit controller, because it’s dinput and I had the driver set to xinput for use with the Xbox controller.

So I manually edited the autoconfig file and changed the values, now it works.

It’s been very confusing.

1 Like