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

    8Bitdo FC30 Pro works in ES but not Retroarch

    Scheduled Pinned Locked Moved Help and Support
    40 Posts 11 Posters 27.7k 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.
    • FloobF
      Floob @Rion
      last edited by

      @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/20

      I'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.

      Please read the Docs before asking a new question.
      RetroPie Help Guides: https://goo.gl/3gcNsT

      RionR 1 Reply Last reply Reply Quote 0
      • RionR
        Rion @Floob
        last edited by

        @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/20

        I'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-21

        Before i start to pair and connect my controllers i always start bluetoothctl so it will recognize my controllers.
        I start them both with start+r

        sudo 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..

        FBNeo rom filtering
        Mame2003 Arcade Bezels
        Fba Arcade Bezels
        Fba NeoGeo Bezels

        1 Reply Last reply Reply Quote 1
        • RionR
          Rion
          last edited by Rion

          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 line

          Then 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.

          FBNeo rom filtering
          Mame2003 Arcade Bezels
          Fba Arcade Bezels
          Fba NeoGeo Bezels

          1 Reply Last reply Reply Quote 0
          • H
            harrymfa
            last edited by harrymfa

            I came looking for a solution, but it's not clear what works. Can anyone who made this work, post a definite solution?

            D 1 Reply Last reply Reply Quote 0
            • D
              DavidIQ @harrymfa
              last edited by

              @harrymfa downgrading the firmware on the controllers worked for me.

              1 Reply Last reply Reply Quote 0
              • BuZzB
                BuZz administrators
                last edited by

                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.

                To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                K 2 Replies Last reply Reply Quote 0
                • K
                  konzentrat
                  last edited by

                  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.

                  1 Reply Last reply Reply Quote 0
                  • RionR
                    Rion
                    last edited by

                    @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?

                    FBNeo rom filtering
                    Mame2003 Arcade Bezels
                    Fba Arcade Bezels
                    Fba NeoGeo Bezels

                    BuZzB 1 Reply Last reply Reply Quote 0
                    • K
                      konzentrat
                      last edited by

                      I must agree that it would make more sense to have it set to OFF by default by now.

                      1 Reply Last reply Reply Quote 0
                      • K
                        konzentrat @BuZz
                        last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • K
                          konzentrat @BuZz
                          last edited by

                          @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...

                          1 Reply Last reply Reply Quote 0
                          • BuZzB
                            BuZz administrators @Rion
                            last edited by

                            @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.

                            To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                            1 Reply Last reply Reply Quote 1
                            • G
                              gnome73
                              last edited by

                              Is there anything in this thread that will help solve my problem here...

                              https://retropie.org.uk/forum/topic/5508/unresolved-dragon-rise-zero-delay-usb-controller-cards-conflicting-on-joy-pad-directions-please-help-my-children-are-killing-me

                              1 Reply Last reply Reply Quote 0
                              • T
                                th3dll
                                last edited by

                                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.

                                BuZzB R 2 Replies Last reply Reply Quote 0
                                • BuZzB
                                  BuZz administrators @th3dll
                                  last edited by BuZz

                                  @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.

                                  To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                                  1 Reply Last reply Reply Quote 0
                                  • R
                                    rudydevylder @th3dll
                                    last edited by rudydevylder

                                    @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 :)

                                    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.