Easyget Zero Delay Encoder won't work on Pi 4
-
Pi Model or other hardware: Raspberry Pi 4 8GB Model B with 1.5GHz 64-bit quad-core CPU
Power Supply used: CanaKit USB-C PiSwitch
RetroPie Version Used: 4.7.15
Built From: Raspberry Pi Imager v1.6.1
USB Devices connected: Easyget LED Arcade DIY Parts 2x Zero Delay USB Encoder + 2x 8 Way Joystick + 20x LED Illuminated Push Buttons
Controller used: PS4 Controller
Error messages received: N/A
Verbose log (if relevant): N/A
Guide used: N/AI'm having issues getting an Easyget Zero Delay USB encoder to work on a Raspberry Pi 4 running Retropie v4.7.15.
Once mapped in Emulation Station, the joystick and buttons work fine to navigate the Retropie menus but don't function in games; it's as if they've all been disabled.
What's strange is that I can take the controller, plug it into a Pi 3 B+ (also running Retropie 4.7.15), run that same rom as above, and it works fine.
Any help would be greatly appreciated.
-
@jpb said in Easyget Zero Delay Encoder won't work on Pi 4:
Once mapped in Emulation Station, the joystick and buttons work fine to navigate the Retropie menus but don't function in games; it's as if they've all been disabled.
Which games/emulator are you testing ? Are you sure the encoder's inputs aren't detected as P2/P3 - the PS4 controller being P1 - and they're not active ?
-
@mitu Thanks for the reply. I'm using Galaga under NES to test. By P2/P3 are you referring to the USB ports? if so, the encoder is plugged into port 0, the PS4 is in port 2 and a keyboard is in port 3. I will eventually plug the 2nd encoder into port 1, but thought it best not to complicate things until I get one player working. I am new to this so I may have missed something simple.
Thanks again for helping.
-
I'm using Galaga under NES to test. By P2/P3 are you referring to the USB ports?
No, I was referring to P(layer)2/P(layer)3 in-game. One gamepad is mapped to one player so the 1st gamepad becomes P1, 2nd one P2, etc. If the PS4 controller is the 1st detected controller, it will be mapped as P1, so the encoder might be P2 etc.
if so, the encoder is plugged into port 0, the PS4 is in port 2 and a keyboard is in port 3.
The USB port order does not guarantee the same order for gamepad detection in the emulator, so it might be that the encoder can be P2.
When you start a game, the emulator (RetroArch) will show the detected and configured controllers - it should show the PS4 controller and the encoder also - do you get the detection message on game start ? -
@mitu Thanks for the explanation on how USB port order works. Yes, RetroArch does see both controllers. I went into the configuration editor and set the encoder to port 0. Still, I can launch a game by hitting the "A" button on the encoder, but once the game loads not of the buttons or joystick work.
-
@jpb If the joysticks are detected and work in emulationstation, then it might just be a matter of remapping the controls on your arcade controls to work with your game/emulator.
You can use the retroarch menu to remap your controls, if you are using a liberto emulator (emulators that start with lr-). Use the Hotkey + X buttons to access the retroarch menu. Here's the doc's page on controls remapping: https://retropie.org.uk/docs/RetroArch-Configuration/#core-input-remapping
It might just be Galaga/NES that don't work with how the controls are configured. I'd reccomend using a few different games from different systems to test your controls (NES, Atari, SNES, etc).
-
@jpb You could try @meleu's joystick selection script. It lets you assign controllers to players. Maybe they are not assigned correctly.
-
@hellothere THANK YOU for all your help!!
I was able to get this to work by manually modifying the /opt/retropie/configs/all/retroarch.cfg file.
This is how the zero delay encoder was mapped for Player 1 by emulationstation:
#input_player1_b_btn = 3
#input_player1_y_btn = 0
#input_player1_select_btn = 7
#input_player1_start_btn = 6
#input_player1_up_axis = -1
#input_player1_down_axis = +1
#input_player1_left_axis = -0
#input_player1_right_axis = +0
#input_player1_a_btn = 4
#input_player1_x_btn = 1
#input_player1_l_btn = 2
#input_player1_r_btn = 5I remapped it as follows and it started working.
input_player1_b = "z"
input_player1_y = "a"
input_player1_x = "s"
input_player1_start = "enter"
input_player1_select = "rshift"
input_player1_l = "q"
input_player1_r = "w"
input_player1_left = "left"
input_player1_right = "right"
input_player1_up = "up"
input_player1_down = "down"I did check retroarch.cfg override files in the /configs/SYSTEMNAME and /roms/SYSTEMNAME directories and they were untouched from the defaults.
Mind you, I've not tested this in anything but nes/galaga. I will post in this thread if I find anything that may be beneficial for others
thank you again!
-
Thanks, yea I did try that as well as "joystick order" in the Configuration Editor. I believe both of these set:
input_player1_joypad_index = "0"
input_player2_joypad_index = "1"In the retroarch.cfg file.
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.