8Bitdo FC30 Pro works in ES but not Retroarch
-
@Rion Please use http://commonmark.org/help/ to format your replies.
When the controller configs are generated, the value of input_joypad_driver will be based on the input driver set in
configs/all/retroarch.cfg
-
@DavidIQ
Yes, just tried both of those and they worked fine.
This was with the default emulator chosen of lr-gambatte and lr-snes9x-next -
@Rion Please see this post where I have listed the steps I followed to get mine working
https://retropie.org.uk/forum/topic/192/8bitdo-fc30-pro-works-in-es-but-not-retroarch/20I'd suggest trying a clean image and following those steps. I havent altered the /opt/retropie/configs/all/retroarch.cfg at all.
Maybe check the firmware version of your controller. -
@BuZz said in 8Bitdo FC30 Pro works in ES but not Retroarch:
@Rion Please use http://commonmark.org/help/ to format your replies.
When the controller configs are generated, the value of input_joypad_driver will be based on the input driver set in
configs/all/retroarch.cfg
Sorry about that. Went thru the guide for http://commonmark.org/help/. You learn something new every day.
So its bases its configuration on retroarch.cgf and what settings there are under the line.
#### Input # Input driver. Depending on video driver, it might force a different input driver. # input_driver = sdl # Input device driver. (Valid: linuxraw, sdl, dinput) input_joypad_driver = "udev"
I am wondering if changing the lines
# input_driver = sdl input_joypad_driver = "udev" to # input_driver = udev input_joypad_driver = "udev"
with a clean image and before i configure my controllers for the first time, will solve the sdl errors i am and others have in the terminal?
For example here 2 8bitdo bluetooth controller problem
Followed that to this reddit link How To Setup 8bitdo NES30 & FC30 Pro Controllers On a Pi3 with 3.6
where chavatar mentions
1. Go to /opt/retropie/configs/all/retroarch.cfg 2. Go to the line with input_joypad_driver = on it, and change it to input_joypad_driver = sdl 3. Go to /opt/retropie/configs/all/retroarch-joypads/8BitdoFC30Pro.cfg 4. Change input_driver = to input_driver = sdl
@Floob said in 8Bitdo FC30 Pro works in ES but not Retroarch:
@Rion Please see this post where I have listed the steps I followed to get mine working
https://retropie.org.uk/forum/topic/192/8bitdo-fc30-pro-works-in-es-but-not-retroarch/20I'd suggest trying a clean image and following those steps. I havent altered the /opt/retropie/configs/all/retroarch.cfg at all.
Maybe check the firmware version of your controller.The only reason i wanted to change the settings in
/opt/retropie/configs/all/retroarch.cfg
was because of the SDL errors and also that i wanted my NES30 to be configured as player 1 and my SFC30 as player 2.
I know i configured my NES30 first because my son uses it and it fits his hands better.
After that i connected and configured my SFC30. But even if a did it like that, every-time i connected my controllers even if i connected the NES30 first i had to press start on the SFC30 to start a game in NES for example.So i edited the retroarch.cfg and made these changes to make them appear as player 1 and player 2.
# If desired, it is possible to override which joypads are being used for user 1 through 8. # First joypad available is 0. input_player1_joypad_index = “0" input_device = "8Bitdo NES30 GamePad Joystick" input_driver = "udev" input_r_btn = "18" input_save_state_btn = "18" input_start_btn = "22" input_exit_emulator_btn = "22" input_l_btn = "17" input_load_state_btn = "17" input_up_axis = "-1" input_a_btn = "11" input_b_btn = "12" input_reset_btn = "12" input_down_axis = "+1" input_right_axis = "+0" input_state_slot_increase_axis = "+0" input_x_btn = "14" input_menu_toggle_btn = "14" input_select_btn = "21" input_enable_hotkey_btn = "21" input_y_btn = "15" input_left_axis = "-0" input_state_slot_decrease_axis = "-0" input_player2_joypad_index = “1" input_device = "8Bitdo SFC30 GamePad Joystick" input_driver = "udev" input_r_btn = "18" input_save_state_btn = "18" input_start_btn = "22" input_exit_emulator_btn = "22" input_l_btn = "17" input_load_state_btn = "17" input_up_axis = "-1" input_a_btn = "11" input_b_btn = "12" input_reset_btn = "12" input_down_axis = "+1" input_right_axis = "+0" input_state_slot_increase_axis = "+0" input_x_btn = "14" input_menu_toggle_btn = "14" input_select_btn = "21" input_enable_hotkey_btn = "21" input_y_btn = "15" input_left_axis = "-0" input_state_slot_decrease_axis = "-0"
This is based upon @auswear findings in this thread here 8bitdo SFC30 shoulder buttons not working
About my firmware version. I am using the latest for NES3 0& SFC30
Firmware v2.67 - 2016-03-21Before i start to pair and connect my controllers i always start bluetoothctl so it will recognize my controllers.
I start them both with start+rsudo bluetoothctl power on agent on scan on devices
then i start pressing the buttons on both controllers until they show up. If i don't do this it wont show up in the retropie_setup.sh > Register and Connect Bluetooth Device only the mac adress is shown. So thats why i start bluetoothctl first.
Next i pair and connect them and also add them in "sudo nano /etc/udev/rules.d/10-local.rules"
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo NES30 GamePad Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
Sorry about the long post..
-
Well i have made some discoveries that i wanted to share.
After many hours of reflashing and testing different configs i think i have finally got it right .
First i tried to setup my controllers with changing (and only those lines, nothing else) in retroarch.cfg
# Input driver. Depending on video driver, it might force a different input driver. # input_driver = sdl # Input device driver. (Valid: linuxraw, sdl, dinput) input_joypad_driver = "udev"
to
# Input driver. Depending on video driver, it might force a different input driver. # input_driver = udev # Input device driver. (Valid: linuxraw, sdl, dinput) input_joypad_driver = "udev"
Same problem that i had before. NES30 start button don't work in the nes/snes emulators when SFC30 is connected at the same time. So i have to press the start button on the SFC30 to start Super Mario.
So even if i configured the NES30 first and then the SFC30, SFC30 still is Joypad 1 (or 0 in Retroarch)
Still sdl errors after i exit EmulationStation to command lineThen i tried again with a clean image and change from
# input_driver = udev input_joypad_driver = "udev"
to
# input_driver = sdl input_joypad_driver = "sdl"
It configures in es but no button is working in the emulators.
So now i had tried both sdl and udev and went to look in the retroarch.cfg file and started looking at this line
# Input device driver. (Valid: linuxraw, sdl, dinput)
So i changed
input_joypad_driver = "udev" to input_joypad_driver = "linuxraw"
Well now apparently the keys work and i can also use NES30 Start button to start Mario even if the SFC30 is connected at the same time. But retroarch still reports SFC30 as Player 0 when i start a game.
SDl errors still present but its a start.So every time they are both connected SFC30 always become player one no mater what.
If i pair it last or first no change.
If i start a game with NES30 and then connect SFC30 its always player one. And so on. -
I came looking for a solution, but it's not clear what works. Can anyone who made this work, post a definite solution?
-
@harrymfa downgrading the firmware on the controllers worked for me.
-
You shouldn't need to switch the input driver to sdl - just update retropie-setup and go to bluetooth configuration and set the new mapping option to disabled for controllers with new firmware (or enabled for old. You will need to remove/re-add your controller and reconfigure in ES.
-
Hey there,
I just happened to have the same Problem. Raspberry 3, RetroPie 4.1, 8Bitdo NES30 PRO, Firmware 1.71. So I decided to delete the whole image and set everything up from scratch.
Now I switched off the Key Assign Hack Option for 8Bitdo older Firmware in the Bluetooth Menu BEFORE Pairing the controler. Now everything works fine. Don't know if this is the solution but it worked for me.
-
@BuZz wouldn't it be a better solution to completely remove the option 8bitdo mapping hack and always have it to off.
Every 8bitdo controller now has the latest fw update on the support site.
It would be better to advice everone to have the latest fw installed.
Or just live it to off be default.
Or I'm i missing something? Do the 8bitdo zero need the hack to be on? In that case may be add to on for 8bitdo zero only?
What are your thoughts?
-
I must agree that it would make more sense to have it set to OFF by default by now.
-
This post is deleted! -
@BuZz said in 8Bitdo FC30 Pro works in ES but not Retroarch:
You shouldn't need to switch the input driver to sdl - just update retropie-setup and go to bluetooth configuration and set the new mapping option to disabled for controllers with new firmware (or enabled for old. You will need to remove/re-add your controller and reconfigure in ES.
i tried it but this didn't work in my case...
-
@Rion said in 8Bitdo FC30 Pro works in ES but not Retroarch:
@BuZz wouldn't it be a better solution to completely remove the option 8bitdo mapping hack and always have it to off.
Every 8bitdo controller now has the latest fw update on the support site.
It would be better to advice everone to have the latest fw installed.
Or just live it to off be default.
Or I'm i missing something? Do the 8bitdo zero need the hack to be on? In that case may be add to on for 8bitdo zero only?
What are your thoughts?
I will change the default - when I added the support for this, there were more joypads with the old firmware than new and some new ones still had the old firmware. I agree that now it makes more sense to have it off. I don't want to remove the option as some people who haven't upgraded their device may use it.
-
Is there anything in this thread that will help solve my problem here...
-
I was having this same issue with my 8bitdo SFC30 and resolved it after I discovered that the button mappings created by the EmulationStation configuration are different from what Retroarch actually needs. I'm not sure why they would be different as most joysticks map the same for both EmulationStation and Retroarch. However, EmulationStation mapped as follows A=11, B=12, Y=15, X=14... and so forth, but the actual mappings used in Retroarch were A=0, B=1, X=3, Y=4, Select=10, Start=11, Left=6, right =7. Your specific joystick mappings may be different, so use jstest to figure out what mappings you really need.
Floob has a great video showing how to use jstest:
After you figure out what mappings you really need, you have to use emulator specific joystick overrides to differ from what EmulationStation uses.
Here is what I did to make this work for SNES. It should work for other systems by replacing snes with nes etc.:
EmulationStation creates system-wide joystick config files under this directory:
/opt/retropie/configs/all/retroarch-joypads/I created a new retroarch-joypads directory to hold all my snes system specific configuration files:
/opt/retropie/configs/snes/retroarch-joypads/I copied my 8BitdoSFC30GamePad.cfg file from the system-wide configuration folder into the new retroarch-joypads folder. I then updated the copied file with the new button mappings found from jstest.
To tell Retroarch to use my custom joystick override I edited
/opt/retropie/configs/snes/retroarch.cfg
to include this line:
joypad_autoconfig_dir = /opt/retropie/configs/snes/retroarch-joypads/My joystick now works perfectly in both emulation station and retroarch for snes games.
It's important to note that this new joystick configuration override causes complications to other existing joysticks that exist, or any new that you add. You now have to manually copy all joystick configuration files into the "/opt/retropie/configs/snes/retroarch-joypads/" folder before you can use that joystick for snes.
-
@th3dll shouldn't be any need to manually do a config - 8bitdo SFC30 works without any manual configuration (i have one). Just need to make sure you are on the latest firmware and have the "8bitdo hack" set to off (in bluetooth configuration).
https://github.com/retropie/retropie-setup/wiki/Setting-up-an-8bitdo-Bluetooth-controller
for older firmware the hack has to be on (controller needs to be reconfigured after changing the setting).
There is also a settings to swap A/B on ES should you want to do that.
-
@th3dll
Thanks! This was the only thing that helped for using my nes30 pro.
Only issue left is that I can't get out of a game with the select+start combo.
Do you have the same issue or how have you fixed this?Edit: Nevermind, found the solution in the retroarch wiki. Was confused with the high numbers in the original config for the hotkeys but they need to be the same as the combo-key you want to use. Easy peasy :)
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.