RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    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

    XInput Controllers Not Working Correctly in RetroArch

    Scheduled Pinned Locked Moved Help and Support
    xinputlogitech f310xpadretroarch
    10 Posts 3 Posters 8.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • MajorDangerNineM
      MajorDangerNine
      last edited by MajorDangerNine

      Pi Model or other hardware: Raspberry Pi 3B
      Power Supply used: Official Raspberry Pi Universal Power Supply
      RetroPie Version Used: 4.4
      Built From: Pre-made SD Image on RetroPie website.
      USB Devices connected: Logitech F310 (In XInput Mode)
      Controller used: Logitech F310 (In XInput Mode)
      Log found in /dev/shm/runcommand.log: https://pastebin.com/ZrYtDL04
      Emulator: All RetroArch Libretro Emulators


      First of all, I believe the issue is related to my previous topic below since it was an Xpad issue.

      https://retropie.org.uk/forum/topic/18318/solved-error-updating-driver-package-xpad-xpad-patch-retropie-diff-failed-to-apply

      I apologize if creating this new topic wasn't the correct thing to do, but it just seemed like I should make a new topic since that was related to the Xpad driver having an error when attempting to update, which is no longer the case.


      Now then, after updating RetroPie successfully, I remapped my Logitech F310 (In XInput Mode) to fix controls completely in EmulationStation, however, when attempting to play any game on any system with any RetroArch Libretro emulator, controls do not work properly.

      At first, when a game is launched, no controls work whatsoever. If I press buttons numerous times on the Logitech F310 (In XInput Mode), the controls will eventually respond. If I go into the RGUI, then I can't navigate or exit from the RGUI.

      I could easily circumvent this issue by switching my Logitech F310 to DirectInput Mode (I've already configured it to properly exit the emulators), but that's just ignoring what I believe to be a serious RetroPie issue that I felt needed to be reported.

      Thank you for your time.

      SBCGaming | Unofficial RetroPie Discord

      1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator
        last edited by mitu

        Well, the docs recommend using the XInput mode, but anyway - can you try switching the input_method in the controller .cfg file from udev to sdl2 and see if it makes a difference ? The file should be in /opt/retropie/configs/all/retroarch-joypads/ and named after your controller.

        MajorDangerNineM 1 Reply Last reply Reply Quote 0
        • MajorDangerNineM
          MajorDangerNine @mitu
          last edited by

          @mitu Changing udev to sdl2 in /opt/retropie/configs/all/retroarch-joypads/ (True Path:/opt/retropie/configs/all/retroarch/autoconfig) changed nothing. Restarted the Raspberry Pi to make sure the change was completely recognized.

          Here is my Logitech Gamepad F310.cfg to make sure I edited the correct file.

          input_device = "Logitech Gamepad F310"
          input_driver = "sdl2"
          input_r_y_plus_axis = "+4"
          input_r_x_minus_axis = "-3"
          input_l_btn = "4"
          input_load_state_btn = "4"
          input_start_btn = "7"
          input_exit_emulator_btn = "7"
          input_r_y_minus_axis = "-4"
          input_down_btn = "h0down"
          input_l_x_plus_axis = "+0"
          input_r_btn = "5"
          input_save_state_btn = "5"
          input_right_btn = "h0right"
          input_state_slot_increase_btn = "h0right"
          input_select_btn = "6"
          input_left_btn = "h0left"
          input_state_slot_decrease_btn = "h0left"
          input_l2_axis = "-2"
          input_l3_btn = "9"
          input_l_y_minus_axis = "-1"
          input_up_btn = "h0up"
          input_a_btn = "1"
          input_b_btn = "0"
          input_reset_btn = "0"
          input_enable_hotkey_btn = "8"
          input_l_y_plus_axis = "+1"
          input_r2_axis = "-5"
          input_r3_btn = "10"
          input_x_btn = "3"
          input_menu_toggle_btn = "3"
          input_l_x_minus_axis = "-0"
          input_y_btn = "2"
          input_r_x_plus_axis = "+3"
          
          

          Also, here is the new log where I believe nothing has changed (RetroArch continues to use udev).

          Log found in /dev/shm/runcommand.log: https://pastebin.com/J4TUy2i4


          After doing as I was told, I also tried changing udev to sdl2 in retroarch.cfg, which changed the udev mentions in the runcommand.log to sdl2 and caused all controller input to no longer respond: I promptly undid the change.

          Current retroarch.cfg: https://pastebin.com/4GBfFzuz

          SBCGaming | Unofficial RetroPie Discord

          mituM 1 Reply Last reply Reply Quote 0
          • mituM
            mitu Global Moderator @MajorDangerNine
            last edited by mitu

            @eckaji From the logfile it seems it's still using the udev driver to detect and configure the input

            [...]
            [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Logitech Gamepad F310.cfg
            [INFO] [Joypad]: Found joypad driver: "udev".
            [...]
            
            MajorDangerNineM 1 Reply Last reply Reply Quote 0
            • MajorDangerNineM
              MajorDangerNine @mitu
              last edited by MajorDangerNine

              @mitu Yeah, I could only get that to change by altering the udev in retroarch.cfg to sdl2. Here is the runcommand.log after doing just that.

              Log found in /dev/shm/runcommand.log: https://pastebin.com/akyBxRKM

              Changing the Logitech Gamepad F310.cfg entry's udev to sdl2 still seems to have done nothing.

              SBCGaming | Unofficial RetroPie Discord

              mituM 1 Reply Last reply Reply Quote 0
              • mituM
                mitu Global Moderator @MajorDangerNine
                last edited by

                @eckaji One thing I noticed in the new log file is that the device name is now reported as Logitech F310 Gamepad (XInput), while in previous logs was Logitech F310 Gamepad. In the new run, RA cannot find the .cfg file, while in the previous runs it could.
                Did you configure the gamepad in ES in XInput or DInput mode ?

                MajorDangerNineM 1 Reply Last reply Reply Quote 0
                • stoney66S
                  stoney66
                  last edited by

                  I have the same controller, I setup in ES when in Xinput mode and it will create a different .cfg file than when it's in Dinput mode.

                  1 Reply Last reply Reply Quote 0
                  • MajorDangerNineM
                    MajorDangerNine @mitu
                    last edited by

                    @mitu As @stoney66 said, if you switch the mode, the controller is setup as if it is an entirely different controller.

                    Logitech Gamepad F310.cfg is for the XInput Mode, while Logitech Logitech Dual Action is for DirectInput Mode.

                    Anyway, I found something out through some tinkering. If the retroarch.cfg in /opt/retropie/configs/all is deleted, the controls work perfectly fine in all RetroArch Libretro emulators. Of course, I'm sure having done that I've introduced all manners of problems (such as the RGUI being changed to the XMB RetroArch menu style), but I have a backup I can use to reverse all my tinkering.

                    So yeah, it would seem something in the retroarch.cfg in /opt/retropie/configs/all is causing issues.

                    /opt/retropie/configs/all/retroarch.cfg: https://pastebin.com/4GBfFzuz


                    Here is another runcommand.log, but the verbose part seems to be broken after my tinkering.

                    Parameters: 
                    Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so --config /opt/retropie/configs/nes/retroarch.cfg "/home/pi/RetroPie/roms/nes/Super Mario Bros. (World).zip" --verbose --appendconfig /dev/shm/retroarch.cfg
                    [INFO] RetroArch 1.7.3 (Git b2ceb50)
                    [INFO] Redirecting save file to "/home/pi/RetroPie/roms/nes/Super Mario Bros. (World).srm".
                    [INFO] Redirecting savestate to "/home/pi/RetroPie/roms/nes/Super Mario Bros. (World).state".
                    [INFO] === Build =======================================
                    Capabilities: NEON VFPv3 VFPv4 
                    Built: May 14 2018
                    [INFO] Version: 1.7.3
                    [INFO] Git: b2ceb50
                    [INFO] =================================================
                    [INFO] Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so"
                    [INFO] [overrides] core-specific overrides found at /opt/retropie/configs/nes/FCEUmm/FCEUmm.cfg.
                    [INFO] [overrides] no game-specific overrides found at /opt/retropie/configs/nes/FCEUmm/Super Mario Bros. (World).cfg.
                    [INFO] Config: appending config "/opt/retropie/configs/nes/FCEUmm/FCEUmm.cfg"
                    

                    Also, here is what RetroArch did to my retroarch.cfg in /opt/retropie/configs/nes, which is currently working control-wise on my Logitech F310 (In XInput Mode).

                    /opt/retropie/configs/nes/retroarch.cfg: https://pastebin.com/F5eK4nfc

                    SBCGaming | Unofficial RetroPie Discord

                    mituM 1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator @MajorDangerNine
                      last edited by mitu

                      @eckaji I think the NES system behavior is the result of deleting the main RA file. There's a retroarch.cfg.rp-dist that is the default one shipped with the package which can replace the one you removed.
                      However, most of it is just comments and has only a few RetroPie additions - such as using RGUI as the menu driver and disabling the online update for cores.

                      The only setting which might be related to the joypad is input_joypad_driver, which is by default udev. You can try re-adding back the file, then changing this to sdl2 and see if this fixes the mapping.

                      MajorDangerNineM 1 Reply Last reply Reply Quote 0
                      • MajorDangerNineM
                        MajorDangerNine @mitu
                        last edited by MajorDangerNine

                        @mitu

                        The only setting which might be related to the joypad is input_joypad_driver, which is by default udev. You can try re-adding back the file, then changing this to sdl2 and see if this fixes the mapping.

                        Yeah, I tried that. Didn't change anything.


                        I've decided to just restore my RetroPie install from a backup and avoid the Xpad driver update for the time being. I was able to update everything else individually without issue.

                        Thank you for your time and I apologize for not seeing this through to end.

                        SBCGaming | Unofficial RetroPie Discord

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        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.