How to setup the 8Bitdo NES30 Gamepad Controller on RetroPie

About: With all the recent talk about the NES Classic console I really wanted to play some Super Mario again and relive those childhood moments of trying to save the princess. I have used RetroPie before to play old games on the Raspberry Pi and I highly recommend it. I would usually play with the keyboard but recently used my Raspberry Pi to install Kodi and RetroPie together and I wanted to use a wireless Bluetooth controller to get the full gaming experience. I picked up the 8BitDo NES30 wireless Bluetooth controller after reading many reviews about it. 8BitDo makes some high quality retro controllers which are easy to setup and you can use them to play games on your computer or phone over bluetooth.

I was having one minor issue setting up my 8BitDo NES30 controller, the D-Pad would not work and not be recognized by RetroPie. The controller setup screen kept reading my D-Pad inputs as a Keyboard and not a Game-pad. I saw many people having issues with this so I decided to write this tutorial about the workaround I discovered on how to get the 8BitDo NES30 controller working on RetroPie.

Objective: To setup the 8BitDo NES30 wireless Bluetooth controller on the RetroPie.

Material: You will need the following:

Instructions: I will assume you are starting with a fresh install of RetroPie. I am using RetroPie 4.0 in this tutorial. You will need a keyboard connected to your Raspberry Pi to setup the controller if you plan on manually configuring it. I included the configuration files below if you want to set it up faster and avoid manually setting up the controller.

Start up RetroPie and and hit F4 to exit the RetroPie interface and run the following line in the command line:

This will start the RetroPie setup script. Head down to the third option “Configuration/Tools”

Next select the “Bluetooth” option to setup our Bluetooth controller.

Now take a look at the last option “8BitDo mapping hacking” and make sure that says OFF like in the image below. If it says on them simply select it and hit Enter to switch it off.

Now go ahead and power on your 8BitDo NES30 controller by holding the start button. Now go to the “Register and Connect Bluetooth Device” option. You should see a “Searching” box in the middle of the screen.

RetroPie should be able to detect your controller. The first time you run the search it might not find the name of your NES30 controller. This shouldn’t be a problem if the returned list finds one mac address, but if there are multiple mac addresses then simply search again and you’ll be able to distinguish which MAC Address is your 8BitDo NES30 controller.

Choose your controller and hit OK, then choose “DisplayYesNo” at the next screen

If you get a “Enter Pin” screen simply enter “0000” for the Pin.

That should be it, your controller is now linked with RetroPie. Your controller’s blue power light should now be solid and not blink.

You should now be back to the RetroPie Bluetooth Setup menu. Go to the “Set up udev rule for Joypad” option and hit OK. This will allow our controller to work Emulation Station after we restart the Raspberry Pi.

Reboot your Raspberry Pi for the configuration above to take effect.

You have successfully linked your 8BitDo controller with the RetroPie over Bluetooth. The next step is to map the controller with RetroArch which runs in the background and allows us to control the games and Emulation Station. Basically we will need to configure which button corresponds to what so that RetroPie can recognize our inputs.

Since your controller is now linked and connected to RetroPie we will need to configure the inputs. This can be tricky with the NES30 controller because RetroPie detects the NES30 controller D-Pad as the keyboard and the other buttons are detected as the 8BitDo NES30 Joypad. I will show you the easy way of linking it by simply giving you my configuration that you can FTP over to the RetroPie or copying and pasting my configuration into RetroPie’s configuration folder.

FTP the 8BitDo NES30 Configuration File

You can download my configuration file below. Once you download it simply FTP the file to the following folder on RetroPie:

You can download my configuration file here: 8BitDo NES30 Configuration File

Reboot RetroPie or your Raspberry Pi for the configuration file to take effect.

Create the 8BitDo NES30 Configuration File

If you would rather create the 8BitDo NES30 configuration file yourself then follow the steps below.

SSH into your RetroPie and navigate to the ‘retroarch-joypads’ folder with the command below:

Create the 8BitdoNES30GamePad.cfg file using the following command:

This will open the nano text editor with the 8BitdoNES30GamePad.cfg filename. Now paste the contents below into the file:

Save this file by hitting CTRL+X followed by Y for yes and reboot RetroPie for the configuration file to take effect.


  • Paul Gostelow

    October 18, 2017

    The nes30 has less buttons than the pro. I have the 30 and im wondering how to map the hotkey etc. I.E. id like to be able to escape emulator and save / load states.
    Any ideas?

    • Guy

      August 27, 2018

      I played around with the nes30 a bit while setting it up on RetroPi, and found that you can achieve an additional key but pressing Select and Start at the same time. The gamepad configuration registers this as “Button 6”, which it associates with the “Hotkey” button.

      There are obviously fewer buttons on the NES30 than RetroPi supports. To skip over buttons you wish to leave unconfigured (when configuring the left and right rear buttons on the NES30 as “Left Trigger” and “Right Trigger”, for example, you’ll have to skip over the “Left Shoulder” and “Right Shoulder” button assignments), simply press and hold a previously associated button (such as the “A” button) until the button configuration skips over the button you’re currently on.

      Hope this helps.


Leave a Reply