8BitDo SF30 not working in retroarch, "not configured"
-
To sum up, the bluetooth controller works in EmulationStation and Kodi, but not in the games (retroarch).
I have spent many hours today trying to configure a 8BitDo SF30 Pro bluetooth gamepad without success. I followed the instructions in https://retropie.org.uk/docs/8Bitdo-Controller/, but there must be something wrong with either my controller or my retropie installation, which is basically a fresh install from two months ago, and updated using the retropie_setup script today.
The controller has four different modes (Windows, Macos, Switch, Android). So, I first paired it (unknowingly) in switch mode (Start+Y). It appeared as "Pro controller" or something similar, but seemed to work nevertheless in Emulationstation and Kodi, but not in Retroarch (Pro controller not configured, it showed). Using the jstest /dev/input/js0 command I could see the keypressed and everything.
Then I realized I had to configure it in Windows Mode (Start+X). I removed the previous pairing from the configuration, resetted the controller, restarting, and repairing it again. This time it appeared as "8bitdo SF30 pro" like in the tutorial. It seemed to pair correctly, and the device /dev/input/js0 was created, but it didn't respond. Using the jstest command, it looked like it was frozen, none of the buttons responded. I tried this step multiple times, with the exact result every time.
I also tried it in android mode (Start+B), and the result was exactly the same as in Switch mode: works in menus, but not in games.
At this point, I am at loss. Does anyone has any ideas? Is my controller faulty?
PD: Other things I have tried:
- Upgraded the gamepad firmware to the last version.
- Downloading a keymap file for my controller (https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/8BitDo_SN30_Pro%2B_BT_B.cfg) changing the input device name to the actual input device and indicating retroarch.cfg the input_remapping_path where I placed the file.
- Also disconnecting and reconnecting the gamepad while in a game.
-
@xwons I got the 8bitdo bluetooth adapter.
I know that doesn't help your current situation, but I was never really fond of the on board bluetooth. It was always temperamental when I used it. It's strange though how retroarch isn't picking it up. I'm assuming you configured it in the start menu in emulation station right? -
@xwons said in 8BitDo SF30 not working in retroarch, "not configured":
To sum up, the bluetooth controller works in EmulationStation and Kodi, but not in the games (retroarch).
This means the Input Configuration in EmulationStation didn't generate the RetroArch gamepad auto-configuration file. It does this by default, did you disable the gamepad auto-configuration from Configuration/Tools in RetroPie-Setup ?
-
@UberLumby Thanks for your answer. Yes, I configured it in EmulationStation. Actually, it detected that there was a new device on boot (I restarted after pairing it) and asked to configure it, without any issues. Except if it was paired in Windows mode (Start+X), where it detected there was a gamepad but the controls did not respond.
@mitu I don't think I have disabled anything manually, everything is pretty much by default, except making Kodi run on startup instead of EmulationStation. I checked the retroarch option, but there isn't anything related to auto-configuration there. In bluetooth devices, I paired the controller, I set up the udev rule and set the bluetooth connect mode to boot, leaving the 8Bitdo mapping hack OFF (because I use the last firmware), which seems to work because the controller is paired as soon as I turn it on and I can see it in jtest. I believe retroarch is actually able to "see" the controller, as it states that it is "not configured" when it starts.
This problem seems to be quite common with this controller, as a quick search on this forum demonstrates:
https://www.google.com/search?q=retropie+8bitdo+bluetooth+retroarch+site:retropie.org.ukIs there any way to force retroarch to re-generate its controller mapping? Or to trigger a remapping dialog from command line? (similar to the one in ES, where it asks you to press each key).
Also, why does it not respond in Windows mode, the one that supposedly is recommended by the retropie documentation? How can I troubleshoot that?
At the end of the day, I don't mind which mode I use as long as it works.
(Oh, by the way, I am configuring this retropie machine remotely via ssh, so I don't have a local keyboard to enter the retroarch menu once a game has started)
-
@mitu I don't think I have disabled anything manually, everything is pretty much by default, except making Kodi run on startup instead of EmulationStation. I checked the retroarch option, but there isn't anything related to auto-configuration there.
It's in
emulationstation
's options.In bluetooth devices, I paired the controller, I set up the udev rule and set the bluetooth connect mode to boot, leaving the 8Bitdo mapping hack OFF (because I use the last firmware),
None of the above should be necessary.
This problem seems to be quite common with this controller, as a quick search on this forum demonstrates:
https://www.google.com/search?q=retropie+8bitdo+bluetooth+retroarch+site:retropie.org.ukNot quite - there are a lot of posts about 8Bitdo controllers because they are used extensively. With your similar issue ? Not so many.
Is there any way to force retroarch to re-generate its controller mapping? Or to trigger a remapping dialog from command line? (similar to the one in ES, where it asks you to press each key).
Re-generation is done by re-configuring the device in EmulationStation.
Also, why does it not respond in Windows mode, the one that supposedly is recommended by the retropie documentation?
Where exactly is that recommended ?
Once you get to pair the controller, usejstest
to test the gamepad and see if it accepts inputs. Note that Xinput mode has a timeout issue when used in RetroArch - see here.How can I troubleshoot that?
Pair manually via
bluetoothctl
. -
@mitu said in 8BitDo SF30 not working in retroarch, "not configured":
@mitu I don't think I have disabled anything manually, everything is pretty much by default, except making Kodi run on startup instead of EmulationStation. I checked the retroarch option, but there isn't anything related to auto-configuration there.
It's in
emulationstation
's options.Ok, I will check that out this afternoon when I have the chance.
In bluetooth devices, I paired the controller, I set up the udev rule and set the bluetooth connect mode to boot, leaving the 8Bitdo mapping hack OFF (because I use the last firmware),
None of the above should be necessary.
It is the recommended procedure as explained in https://retropie.org.uk/docs/8Bitdo-Controller/ but anyway, I think that part already works.
This problem seems to be quite common with this controller, as a quick search on this forum demonstrates:
https://www.google.com/search?q=retropie+8bitdo+bluetooth+retroarch+site:retropie.org.ukNot quite - there are a lot of posts about 8Bitdo controllers because they are used extensively. With your similar issue ? Not so many.
Is there any way to force retroarch to re-generate its controller mapping? Or to trigger a remapping dialog from command line? (similar to the one in ES, where it asks you to press each key).
Re-generation is done by re-configuring the device in EmulationStation.
Also, why does it not respond in Windows mode, the one that supposedly is recommended by the retropie documentation?
Where exactly is that recommended ?
Ok, that's fair, I read a number of posts with people with the exact same problem using the same gamepad, and some reported that once the gamepad was configured in Windows mode, the problem disappeared. That is why I wanted to try it.
Once you get to pair the controller, use
jstest
to test the gamepad and see if it accepts inputs. Note that Xinput mode has a timeout issue when used in RetroArch - see here.How can I troubleshoot that?
Pair manually via
bluetoothctl
.The thing is that it pairs, I can see the button presses in jstest (except in windows mode), and it works in EmulationStation and Kodi. I meant how to troubleshoot why windows mode is not registering keypresses in jstest.
Also, according to the manual, after mapping it in EmulationStation:
- When that is complete your 8bitdo controller is ready to use!
The process will have written various controller configuration files for you. The main RetroArch controller file will now be in: /opt/retropie/configs/all/retroarch-joypads/
But that folder is empty in my Raspberry Pi. I tried downloading the keymap file from https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/8BitDo_SN30_Pro%2B_BT_B.cfg and changing the input device to my controller's actual input device name "8Bitdo SF30 Pro" (obtained from cat /proc/bus/input/devices), but that did not work either.
-
The thing is that it pairs, I can see the button presses in jstest (except in windows mode), and it works in EmulationStation and Kodi. I meant how to troubleshoot why windows mode is not registering keypresses in jstest.
Run
cat /proc/bus/input/devices
andudevadm info -q all /dev/input/js0
to see if it's registered as a gamepad.But that folder is empty in my Raspberry Pi. I tried downloading the keymap file from https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/8BitDo_SN30_Pro%2B_BT_B.cfg and changing the input device to my controller's actual input device name "8Bitdo SF30 Pro" (obtained from cat /proc/bus/input/devices), but that did not work either.
If it's empty, check your gamepad auto-configuration option in EmulationStation or the EmulationStation's log file (
$HOME/.emulationstation/es_log.txt
). -
@mitu Ok, I will try both things this afternoon, when the person to whom I am configuring the raspberry and has access to the controller comes home, and report back. Thanks so much for your time so far!
-
Ok, so I noticed that the controller was not the SN30 Pro, but the SF30 Pro. I manually copied the gamepad autoconfig file and placed it in 8Bitdo_Pro_SF30_BT_B.cfg (from the link above), and now it seems to work in raspbian! However, the hotkey does not work, so I can't exit any games. But progress is progress. And that still does not explain why emulationstation did not generate the config file by itself...
-
Ok, I finally managed to make the hotkeys work.
I needed to add the following section in
/opt/retropie/configs/all/retroarch-joypads/8Bitdo_Pro_SF30_BT_B.cfg
#Hotkeys input_enable_hotkey_btn = "10" input_load_state_btn = "7" input_exit_emulator_btn = "11" input_reset_btn = "" input_save_state_btn = "6" input_menu_toggle_btn = "3" input_state_slot_increase_axis = "+0" input_state_slot_decrease_axis = "-0"
Problem solved!
-
Just wanted to say Thanks for this question and answer. I had been struggling to get my 8bitdo Ultimate Wireless controller working in the games also and it turned out to be the same issue.
Adding/opt/retropie/configs/all/retroarch-joypads/8BitDo_Ultimate_wireless_Controller.cfg
from https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/8BitDo_SN30_Pro%2B_BT_B.cfg worked.As a total RetroPie/EmulationStation/RetroArch newbie, how is anyone supposed to know that they needed to manually add these controller configs? Is it supposed to be an automated system that's just not working correctly because I never saw any documentation anywhere that pointed users to the libretro GitHub.
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.