8bitdo SF30 Pro and SN30 Pro
-
This post is to help and kickoff a discussion about the new 8bitdo controllers for Retropie. I spent a couple of hours today getting this configured and I'm hoping this post saves some folks some time and leads to a better understanding of how these controllers work.
While the 8bitdo website shows support for Raspberry Pi, I actually dont think its as tightly integrated when compared to other systems the controllers claim to support, which are Nintendo Switch, Android, Windows and MacOS. This is very evident when you goto the 8bitdo website and review the product manual. You will only see setup instructions for those 4 systems:
http://download.8bitdo.com/Manual/Controller/SN30pro+SF30pro/SN30pro+SF30pro_Manual.pdf
What I found out through the course of testing with RetroPie/RaspberryPi, is that these controllers produce 4 different BlueTooth addresses and different BT names depending on what mode you put the controller in BEFORE you pair them!!!! Maybe other controllers do this and I'm not aware, but I found this very interesting.
As an example, the following BT addresses were found for the SN30 Pro (aa, bb, cc... are unique to each line)
- E4:17:D8:20:aa:bb - Setup using Windows (START + X) - Name = 8Bitdo SN30 Pro
- E4:17:D8:20:cc:dd - Setup using macOS (START + A) - Name = Wireless Controller
- E4:17:D8:20:ee:ff - Setup using Android (START + B) - Name = 8Bitdo SN30 Pro
- 98:B6:E9:42:gg:hh - Setup using Switch (START + Y) - Name = Pro Controller
and the following for the SF30 Pro:
- E4:17:D8:CF:ii:jj - Setup using Windows (START + X) - Name = 8Bitdo SF30 Pro
- E4:17:D8:CF:kk:ll - Setup using macOS (START + A) - Name = Wireless Controller
- E4:17:D8:CF:mm:nn Setup using Android (START + B) - Name = 8Bitdo SF30 Pro
- 98:B6:E9:42:oo:pp - Setup using Switch (START + Y) - Name = Pro Controller
When attempting to map the controller buttons using Windows or Android, both the Left and Right triggers were not recognized. The triggers were recognized with Switch and macOS.
Also, my controllers shipped with firmware version 1.03 and the newest on 8Bitdo's website is 1.10. I would recommend upgrading and paying close attention as the config on these probably shipped half baked.
In summary, your best bet for RetroPie is to setup the controller using the Switch instructions and dont map the Hotkey button if you want to exit back into emulation station. I would also recommend disabling wifi to reduce any other possible interference on the BT spectrum.
EDIT: I also performed the udev mapping , but have not tested if that is critical or not for these controllers. Hotkey recommendation is probably my lack of understanding on how that works, so that might not be necessary as mentioned below by others.
I hope that helps and I hope 8bitdo provides more clear instructions on Raspberry Pi setup in the future.
-
Good work. Thanks for the info. But I'm wondering why you say "don't map the Hotkey button if you want to exit back into emulation station". Any reason behind that?
-
@rpc80 Select + Start wont work if you map the hotkey button
-
@meats interesting. But if you don't map the hotkey button start + select does take you out as expected?
-
@meats I actually just got my SN30 setup. I used the macOS mode for setup and everything seems to be working correctly. I set the Hotkey to select as usual and it works. Also, I did upgrade to the new v1.20 Firmware.
-
@meats one other thing I noticed was when pairing two controllers, they work properly with two player games and all is well. But if you look at the LED lights, they are both have one lit. Not only that, but the 2nd controller is also able to control the EmulationStation UI, which normally is not the case. Barring that, everything else seems to work as expected. Perhaps with a firmware update, or RetroPie update those things will get ironed out. I did definitely have some issues getting the controller to show up consistently on the bluetooth menu, which was frustrating, but eventually it came up.
-
@meats said in 8bitdo SF30 Pro and SN30 Pro:
@rpc80 Select + Start wont work if you map the hotkey button
Select+Start
works when you chooseSelect
asHotkey
buttton in the mapping dialog, normally the exit button combination isHotkey+Start
-
I just purchased 2 SN30 Pro controllers. I am able to pair the bluetooth connections. I used the 98:b6 mac address (Pro Wireless) for both. I have also upgraded both controllers to firmware 1.20 (latest)
I'm having a few issues.
-
I don't seem to be able to properly use both controllers in roms. Both controllers show LED 1 lit (first position). Both controllers are able to navigate emulation station menus. Once I load a rom I can't do anything. Controllers both show connected as far as they are concerned.
-
When playing a rom and I leave the controller for a short bit, I come back to find that the controller likely went to sleep and I cannot reconnect.
Any help will be appreciated. Otherwise I have over $100 worth of useless controllers.
-
-
@robertclemens Maybe this is the same problem we had with the 8bitdo controllers when they first started to get support in Retroarch/lakka/RetroPie.
You hade to manually add them to udev.
See more info here: 8Bitdo Gamepad autoconfigs (udev)
-
@mitu thanks, I should probably try that, I honestly havent looked into the hotkey functionality since its been implemented.
-
@mitu what do you use for Select key mapping like in classic NES games?
-
@meats I'm using the Selecy key, obviously.
-
@rion Thanks fort the information.
RetroPie 4.3 has an option in the bluetooth menu to auto add a udev line. It put a udev line in my rules.d as:
SUBSYSTEM=="input", ATTRS{name}=="Pro Controller", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
The forum link you posted gave a bunch of udev lines. But I didn't see anything for the new SN30 Pro controller.
So my questions are these:-
Is my line insufficient for the controller I have? (SN30 Pro)
-
Is only the one line needed even though I have 2 controllers. I'm assuming so as it's just binding the name to a mode so both controllers named "Pro Controller" will be mapped to the mode and env settings.
I'm able to connect each time correctly when I boot up the pi.
[65695.269620] input: Pro Controller as /devices/platform/soc/3f201000.serial/tty/ttyAMA0/hci0/hci0:12/0005:057E:2009.0006/input/input2
[65695.270511] hid-generic 0005:057E:2009.0006: input,hidraw2: BLUETOOTH HID v0.01 Gamepad [Pro Controller] on b8:27:eb:XX:XX:XX -
-
@robertclemens I think the name in udev is wrong. It's probably better if you post on libretro forums and then come back with an update here.
-
@rion I really appreciate your quick responses to my problem. I will definitely check out libretro and update here if I find anything out. Since the model is brand new its a bit tricky to find specifics for the model.
-
@robertclemens said in 8bitdo SF30 Pro and SN30 Pro:
I just purchased 2 SN30 Pro controllers. I am able to pair the bluetooth connections. I used the 98:b6 mac address (Pro Wireless) for both. I have also upgraded both controllers to firmware 1.20 (latest)
I'm having a few issues.
-
I don't seem to be able to properly use both controllers in roms. Both controllers show LED 1 lit (first position). Both controllers are able to navigate emulation station menus. Once I load a rom I can't do anything. Controllers both show connected as far as they are concerned.
-
When playing a rom and I leave the controller for a short bit, I come back to find that the controller likely went to sleep and I cannot reconnect.
Any help will be appreciated. Otherwise I have over $100 worth of useless controllers.
I just wanted to echo that I also experience the same. Both controllers can control the menu in emulation station, but I've also been able to do that with multiple wired controllers, so not sure if that is an issue.
Regarding the controller going into sleep mode, yes I often have to restart the entire system to reconnect the controllers. I thought setting the BT mode in raspi-config to 'background' would eliminate that problem, but I guess not. Let's hope there is a fix soon, like I initially stated I dont think 8Bitdo is supporting Raspberry Pi like they are the other 4 systems.
-
-
I'm not real into the scene and the libretro forums seemed like a complete mess to me. It's a bit disappointing that support for this wasn't worked out for the release. It's hard to tell from my perspective if this will improve or remain a sticking point for the controllers. I'm very tempted at this point to return them as they do not work for the intended purpose.
I'm still interested if anyone has worked through the issues with any luck.
-
@meats For RetroPie, you should actually use the "macOS" instructions and not the "Switch". Even though all buttons & analog sticks work for both, the "Switch" profile incorrectly calibrates the analog sticks from -27391 to 26966 (about 83% of the full motion range). The "macOS" profile correctly calibrates the analog stick from -32767 to 32767 (the full motion range).. which is necessary for performing joystick combinations in N64 games like Waverace. I confirmed this on RetroPie 4.3 (with the latest updates) using the jstest utility. My SF30/SN30 Pro firmware is v1.20.
EDIT:
I discovered that with the "macOS" profile, the controller will work immediately after registering with bluetooth. If, however, you lose connection & try reconnecting, it will never work (even after rebooting the RetroPie) though it strangely still displays as connected with bluetooth. This was the behavior while the connect mode was set to 'default'.
Once I set the connect mode to 'boot' or 'background', I was able to get the controller working only during boot of the RetroPie. If the controller isn't turned on during the boot and/or missed connection, you can only try rebooting RetroPie for another chance. If you turn the controller off, or it goes to sleep or loses connection somehow, again you'll need to reboot RetroPie for another chance to reconnect.
I understand this problem should've been alleviated with the following udev line:
SUBSYSTEM=="input", ATTRS{name}=="Wireless Controller", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
However, my tests were conducted with it active the whole time (thanks to the built-in menu option).. so I doubt it had any effect. Hopefully someone with more experience finds a solution... or helps me push 8bitdo to fix their "Switch" profile's joystick calibration (I recently sent an email to their support contact).
In hindsight, the "Switch" profile had no issue working after reconnecting my controller any time while RetroPie was running. If it weren't for its bad joystick calibration, I'd use that profile. There may be a (complex) way to build a recalibration script that runs whenever the controller connects, not to mention much reconfiguring of RetroArch... but this is too big a task for me at the moment. For now, I'd rather use the "macOS" profile for proper calibration & risk rebooting the RetroPie mid-game if the controller disconnects.
-
Have you tried it in Android mode ? I had a GameSir G3s which could connect as D-Input/X-Input etc. but it would only connect correctly in Android mode. It also correctly awakes from sleep mode in RetroArch emulators.
-
@maxbeanz As meats indicated, the left/right controller triggers are not recognized in the "Android" & "Windows" profiles. This I've confirmed.
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.