ladis.cloud - blog

How to update the firmware of 8BitDo's gamepads without using Upgrade Tools

In the past 8BitDo offered the firmware files for their gamepads as downlodable ZIP archives on their support site. But for their more recent versions, the Upgrade Tool is required in order to download and flash the firmware onto their gamepads. Unfortunately there is no native linux version of the Upgrade Tool available as of today.

If you want to know how to still download and flash their latest firmware versions continue reading.

Download the firmware file

First get a listing of the available firmware files. To do this, issue a HTTP POST request to 8BitDo's new download API. An additional header my be used to filter for a specific gamepad.
For example:

$ curl -X POST -H 'Type: 9' -H 'Beta: 1' http://dl.8bitdo.com:8080/firmware/select

The following table shows the currently available gamepad types:

Gamepad Type
Arcade Stick 34
Arcade Stick Receiver 35
F30 GamePad 2
F30 Arcade Stick 5
F30 Pro 1
Lite GamePad 28
M30 23
N30 GamePad 2, 10
N30 NS GamePad 18
N30 Pro 1
N30 Pro 2 13
Pro 2 33
Pro 2 Wired 37
SF30 Pro 9
SN30 GamePad 3, 17
SN30 Pro+ 25
SN30 Pro 9

The download API will send a JSON that will look like this:

{
  "msgState": 1,
  "error": "",
  "list": [{
    "date": "2021-04-19",
    "fileName": "SN30pro+SF30pro",
    "type": 9,
    "version": 1.3600000143051147,
    "winDownload": 8725,
    "fileSize": 89116,
    "filePathName": "/firmwareFile/upload/cab12b12-8e01-472f-a9f4-ec2237c598b9.dat",
    "beta": "",
    "md5": "78F7D5CCCA6C2FD6A9644616BD3E7F52"
  }, {
    ...
  }]
}

The filePathName property contains the path name of the firmware file we need to download.
Make sure to choose the correct version:

$ curl -X GET -O http://dl.8bitdo.com:8080/firmwareFile/upload/cab12b12-8e01-472f-a9f4-ec2237c598b9.dat

Flashing the firmware file on the gamepad

The fwupd tool is required to flash the firmware files on 8BitDo's gamepads. Start your gamepad by holding down L(1)+R(1)+START for 3 seconds. A status LED on the gamepad should now blink red. Then connect the gamepad to the computer with a USB cable.

The gamepad should now show up in the fwupd tool:

$ fwupdmgr get-devices
├─ 8Bitdo:
│     Device ID:          23ec719b6aabc2d2dac5176c232f0da7a21881b0
│     Summary:            A redesigned classic game controller
│     Current version:    1.34
│     Vendor:             8BitDo
│     Device Flags:       • Updatable
│                         • Is in bootloader mode
...

The device id is then used to flash the firmware file on this gamepad:

$ fwupdtool install-blob cab12b12-8e01-472f-a9f4-ec2237c598b9.dat 23ec719b6aabc2d2dac5176c232f0da7a21881b0

The fwupd tool may fail to restart the gamepad after writing the firmware. If it times out, restart the gamepad and verify that the firmware was updated correctly.