Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Controller config not saving



  • Apologies, because I know this has been posted multiple times before, but I have yet to find a solution that actually works for me.

    I have a ControlBlock2 hooked up to my Retropie. I just replaced my joysticks, and ever since EmulationStation isn't passing my controller settings to RetroArch. I configure them, it works fine in menus, but as soon as I launch anything it's forgotten.

    Example: if I use the setup in ES, then launch any emulator, when the game starts, the controls have been forgotten. Then when it gets back to ES, they've also been forgotten. It's like it never saved them at all. It even does this if I launch Retropie Setup. Anything I launch from ES causes it to forget the controller settings.

    I did a complete system wipe, and it's STILL happening.

    Anyone have any suggestions? Like I said, I've searched and nothing has helped so far.

    I figured it was some permissions issue, and a full system wipe would do something, but nope, no luck.

    Thanks in advance..



  • Update: I'm making some progress in diagnosing my issue. I think what's happening is that every time I configure P2, it's overwriting P1. I didn't mirror the cables for both (there's a dead plug on the controlblock), so they need to be independently configured. But my es_input.cfg file appears to only have one gamepad listed:

    --
    <?xml version="1.0"?>
    <inputList>
    <inputConfig type="joystick" deviceName="ControlBlock Arcade Gamepad" deviceGUID="03000000010000000100000004000000">
    <input name="a" type="button" id="4" value="1" />
    <input name="b" type="button" id="3" value="1" />
    <input name="down" type="axis" id="1" value="1" />
    <input name="hotkeyenable" type="button" id="10" value="1" />
    <input name="left" type="axis" id="0" value="-1" />
    <input name="leftshoulder" type="axis" id="0" value="1" />
    <input name="right" type="button" id="2" value="1" />
    <input name="rightshoulder" type="button" id="5" value="1" />
    <input name="select" type="button" id="10" value="1" />
    <input name="start" type="button" id="11" value="1" />
    <input name="up" type="axis" id="1" value="-1" />
    <input name="x" type="button" id="1" value="1" />
    <input name="y" type="button" id="0" value="1" />
    </inputConfig>
    </inputList>

    Is there some setting I missed somewhere that saves a second set? I enabled the second ControlBlock in the controlblockconfig.cfg, but that's for literally a second ControlBlock unit, so that's not right at all (ES detected 4 gamepads when I did that, even though I only have two).

    Where I am now, I can configure one set of controls. If I set up both, they work in ES, but as soon as I launch an emulator, it reverts, and when I return to ES only the most recent one i've set up will function properly.

    Still, it's progress!



  • Update x2:

    I've definitely diagnosed the problem now.

    I completely removed my es_config (using the retropie setup menu just to be sure) and on startup, I only configured player 1. Everything worked fine in menus, and when I launched an emulator, it worked fine there. Upon quit and return to ES, it still worked fine.

    I then rebooted. Again, everything fine.

    I then configured Player 2. Everything worked fine in menus for both left and right players. But when I launched into an emulator (same as above) suddenly P1's controls were all wonky. And when I returned to ES, it had reverted as well.

    I keep trying stuff, but this seems to be the core of the problem.



  • Update x3 (and final, barring any other developments):

    I have a working solution! It's not ideal on any level, but I've got it more or less settled. My solution: mirror the two controller connections. As long as they're identical, both sets of controls work fine.

    Which seems contrary to how ES is supposed to configure controllers, but whatever. It works, and I can live with it.



  • @loonyboi said in Controller config not saving:

    Which seems contrary to how ES is supposed to configure controllers, but whatever. It works, and I can live with it.

    I think it depends on how each gamepad identifies itself to the system - if they have the same device name then it's not possible to auto-configure them differently from Emulationstation.
    The configuration file is based on the device name, so when you configure Player2 input controls (and the mapping it's different than Player1 ), then the configuration will overwrite the 1st configuration (for Player1). If you try to configure again Player1, the configuration will overwrite the P2 config, etc.

    EDIT: can you run sudo lsusb with the controller connected and see how the device(s) are reported ?



  • Here's what I get:

    Bus 001 Device 007: ID fafa:0060
    Bus 001 Device 009: ID 1997:2433
    Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    But as far as I know, this wouldn't help with ControlBlock, as it doesn't use the USB bus.



  • @loonyboi said in Controller config not saving:

    But as far as I know, this wouldn't help with ControlBlock, as it doesn't use the USB bus.

    Ha - you're right, I forgot. I don't know why I kept thinking about USB. In this case, I don't know how you'll be able to tell them apart, but maybe Florian might have an idea.



  • It was worth a shot!

    Anyway, I do have a working solution, even if it's a bit weird. Users 1 and 2 use identical plugs. As long as I leave it that way, they'll work fine!



  • @loonyboi said in Controller config not saving:

    I have a working solution! It's not ideal on any level, but I've got it more or less settled. My solution: mirror the two controller connections. As long as they're identical, both sets of controls work fine.

    Care to elaborate on the exact process? It could help others with the same problem who may find this thread. 😊



  • @clyde said in Controller config not saving:

    Care to elaborate on the exact process? It could help others with the same problem who may find this thread. 😊

    Sure, np!

    As documented above, the problem is that for some reason EmulationStation is only assigning one config for both sets of controls.

    So the solution (which I've had working for a day now, and seems to be as good a solution as I'm going to get) is to make sure that all of the plugs for the ControlBlock are identical between Player 1 and Player 2.

    Example:

    One of my button ports on P1 was busted (it doesn't open all the way) so for the L button I had to use the button 6 port, where P2 was using button 2. My solution was to move Player 2 to mirror that on button 6.

    As long as the P1 and P2 ports are all identical, EmulationStation works fine. As soon as there's a mismatch, it gets all weird.

    Hope that's useful for someone!



  • @loonyboi Thanks! I wasn't sure if you meant to mirror the controls by ES' UI or at file system level by copying their config files. So if I understand you correctly, setting them up identically in ES does suffice.


 

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.