I did it guys: I finally bought myself a decent game controller to use on Linux!
Specifically the 8BitDo SF30 Pro controller — level up! 🍄
As well as enjoying the weighted feel of quality manufacturing in my hand — cheap USB controller with itchy hollow plastic you will not be missed — I also get to sample 8BitDo’s Linux support, courtesy of the terrific LVFS.
Yes I, despite writing about 8bitdo controllers a few times in the past, didn’t own one until now.
The gap is plugged, in large part, due to your recommendations on Twitter and in the comments to an earlier post, so thanks!
How to Pair the SN30 Pro on Ubuntu
As I bought my controller used from eBay it didn’t come with a box or any instructions. I had to turn to Google to find out how to pair the SN30 Pro with Ubuntu so that I could use it in games like SuperTuxKart.
Was it difficult? Not at all.
To pair the SF30 Pro — also sold as the SN30 Pro, same device just different coloured buttons — you turn the pad on in Windows pairing mode by pressing
With the LED lights blinking away, pop open the Bluetooth settings panel on Ubuntu and select “8BitDo SF30 Pro” entry from the list of available devices.
There’s no code or confirmation step so pairing is basically instant.
Upgrade the SN30 Firmware on Ubuntu
Unsure of which firmware version my joypad was running my first task was to check out the firmware is came with.
Which is when things get a little more …involved.
As I said I didn’t receive a manual with my pad. It wasn’t immediately clear just “how” I should go about updating the firmware of the SF30 Pro on Linux.
I couldn’t find a Linux firmware guide on the 8BitDo website, and firmware updating doesn’t work when the controller is paired with Ubuntu or connected to it by USB (which is sort of what I was expecting).
Thankfully Google came to my aid.
Having successfully updated the firmware of my 8BitDo controller using Ubuntu I’d figured I’d run through the salient steps here just incase I ever need to reference them in the future — and maybe help a few fellow 8bitdo owners in the process!
1. Check for Firmware
To check for firmware updates for an 8BitDo SF30 Pro controller on Linux you must connect it to your Linux machine using a USB cable with the pad in Android pairing mode. Yup, Android — not Windows.
This, apparently, is required for
fwupd — the service which handles firmware updates on Linux — to ‘see’ the controller, check the LVFS site for new firmware, and then prompt you to install any update (if available).
To put the 8BitDo SF30 Pro in Android pairing mode hold
B and press
Start at the same time. You’ll see the first two LED blocks on the front-facing section light up.
Next, open GNOME Software and check for updates and, once complete, you should see an upgrade prompt:
If you don’t see any updates listed do check whether your device can be seen by
fwud by running:
sudo fwupdmgr get-devices
Your controller should appear in the list. If it doesn’t you may need to file a bug.
2. Install Firmware
To install firmware updates for the controller on Linux go ahead and initiate the firmware download by clicking the “update” button in the Software app.
When the download completes you’ll see an error message — yes, an error message — stating to put put the controller into ‘Firmware Update’ mode:
Do as commanded and unplug the pad then put the 8bitDo SF30 Pro in device update mode by pressing
Start together. Then reattach to USB.
Ubuntu Software will complete the firmware upgrade and, if all has gone well, your pad will now be running the latest firmware.
Put the controller back in Android pairing mode and you can run
fwupdmgr get-devices at the command line to check the firmware version.
Finally, reconnect the controller using Bluetooth applet to go back to using the pad for gaming.
Updating hardware firmware is difficult in general so I can’t knock the way it’s handled here on Linux. The fact that it’s possible on Linux at all is a great achievement.
I look forward to hopefully racing against some of you in online SuperTuxKart sometime.
Though now that I have a proper controller I no longer have an excuse for why my driving is so bad…