XInput Controllers Not Working Correctly in RetroArch
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.
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.
Well, the docs recommend using the XInput mode, but anyway - can you try switching the
input_methodin the controller
sdl2and see if it makes a difference ? The file should be in
/opt/retropie/configs/all/retroarch-joypads/and named after your controller.
MajorDangerNine last edited by
/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.cfgto 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
retroarch.cfg, which changed the
udevmentions in the
sdl2and caused all controller input to no longer respond: I promptly undid the change.
Current retroarch.cfg: https://pastebin.com/4GBfFzuz
@eckaji From the logfile it seems it's still using the
udevdriver 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". [...]
@mitu Yeah, I could only get that to change by altering the
sdl2. Here is the
runcommand.logafter doing just that.
Log found in /dev/shm/runcommand.log: https://pastebin.com/akyBxRKM
Logitech Gamepad F310.cfgentry's
sdl2still seems to have done nothing.
@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
.cfgfile, while in the previous runs it could.
Did you configure the gamepad in ES in XInput or DInput mode ?
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.
MajorDangerNine last edited by
Logitech Gamepad F310.cfgis for the XInput Mode, while
Logitech Logitech Dual Actionis for DirectInput Mode.
Anyway, I found something out through some tinkering. If the
/opt/retropie/configs/allis 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
/opt/retropie/configs/allis causing issues.
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
/opt/retropie/configs/nes, which is currently working control-wise on my Logitech F310 (In XInput Mode).
@eckaji I think the NES system behavior is the result of deleting the main RA file. There's a
retroarch.cfg.rp-distthat 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
sdl2and see if this fixes the mapping.
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.