Supported Controllers

All major controllers are supported by Batocera. EmulationStation uses an internal database so that most of them work out of the box, no configuration required. For controllers not in this database yet, Batocera will prompt you to manually map its buttons.

Some controllers may have particular instructions to follow to get them to connect to Batocera in the first place, especially wireless ones. Said instructions are included below.

Any generic USB controller should work. There is no special action to do to make it work, except to map it (if it is not in our database already).

If having trouble with getting it detected, refer to the USB section on the joystick troubleshooting page.

Any generic Bluetooth controller should work. The only action to do is to set your controller in discovery mode (there is usually a special button combination you need to hold for a few seconds, refer to its manual) then pair the controller by going in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. There is no special action to do to make it work, except to map it (if it is not in our database already).

In case of pairing issues it may help to clear the device from the list by selecting FORGET BLUETOOTH DEVICES, reboot and then try to pair again.

In older versions of Batocera, this action will forget all known Bluetooth controllers!

For advanced setup and better error detecting we have build a guide for manual connecting to a Bluetooth device. If you are still having issues, it might be possible that the Bluetooth dongle you are using is having issues. Troubleshoot for that on the Bluetooth section on the troubleshooting page.

8bitdo Bluetooth controllers are supported. To pair an 8bitdo controller, first turn it on by pressing [+start] + [X] at the same time (for activating the X-input Mode, which is recommended (for example if you want to use rumble), otherwise [+start] + [Y] for Switch Mode) and then press and hold the sync button (if the controller has one) or [-select] button for 3 seconds, until the LED blinks rapidly. Then go in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. It should then automatically be detected and paired.

8bitdo controllers get excellent support from their manufacturer, so it might be worth to visit their support page and get the newest firmware installed. Users report of a massive improved BT support after updating the firmware.

8bitdo Zero (first generation): To pair, press and hold [+start] + [R1] for 2 seconds, then go in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. Wait for 10-15 seconds and the controller should automatically be detected and paired.

As of v31 and higher 8bitdo controllers in X-input mode are having some issues correctly mapping. You can switch to using D-input mode ([+start] + [B]) to avoid these issues.

DualShock PS3 controllers are supported. In case of issues, it is often the dongle which is not supported by Linux or an empty battery of the controller (sometimes it is helpful to reset the controller by pressing the small button on the backside with a toothpick for a few seconds). To pair a PS3 controller:

  1. Plug it via the USB-cable into the machine Batocera is running on
  2. Wait 5-10 seconds
  3. Unplug the cable and press the PlayStation button in the middle of the controller

It should then automatically be detected and paired. Once done, there is no special action to do, all buttons are pre-configured.

If preferred, you could simply play via a wired connection to keep things simple.

PS4 controllers are supported. In case of issues, it is often the dongle which is not supported by Linux. To pair the PS4 controller, first put it into pairing mode by press and holding the PlayStation button and [Share] button at the same time for 3 seconds. Hold these buttons until the light bar starts rapidly flashing. Then go in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. It should then automatically be detected and paired.

For touch-friendly systems (looking at Nintendo DS emulators for example), the PS4 touch pad is recognized as a mouse, and can be used for that.

Be cautious of repairing the controller to another device after initially pairing it to Batocera, users have reported strange behavior when reconnecting it to the Batocera machine after that. The reported solution is to “unpair” the device from the other device before reconnecting it to the Batocera machine.

PS4 controllers always work when connected via USB cable.

DualSense PS5 controllers have been reported to work with Batocera 5.27. You need to pair a new controller and define the buttons mapping once the first time you associate your controller, and should be good to go, with the same features as a PS4 controller.

PS5 controllers always work when connected via USB cable.

Xbox 360 controllers are supported. If you have a wired version, just plug it in via USB. For the wireless version you need the RF dongle of the Xbox 360 Wireless Controller (Xbox 360 is not Bluetooth).

These can be differentiated from the newer controllers by the lack of a “Share” button in the center of the controller.

Xbox One controllers are supported. There are two generations of Xbox One controllers:

  • The original Xbox One controller, which is not Bluetooth compatible and requires a specific RF dongle (see below)
  • Starting with Xbox One S, Microsoft launched a newer model (Model 1708) that is natively Bluetooth

The newer model can be used like any other Bluetooth controller. You can refer to this page to tell if your controller has Bluetooth or not.

For the original Xbox One controller, the original Microsoft Dongle has supported since Batocera 5.27. To pair it just press the sync button on your controller (this only works with the the original RF dongle). In case of issues, it is often the dongle itself which is not supported by Linux. The only action to do, is to put your controller in discovery mode (after turning the controller on with the Xbox button in the middle of the controller, press and hold the small pairing button on the top of the controller until the Xbox logo starts rapidly blinking) and then pair the controller by going in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. It should then automatically be detected and paired.

Xbox controllers always work if connected via USB cable.

These can be distinguished from the older controllers by the addition of the “Share” button in the center of the controller.

Xbox One Core/Series S/Series X (which Microsoft confusingly refers to as simply the “Xbox Wireless Controller”) is supported by Batocera on most platforms. As of time of writing, the RG552, the RK3128 and the RK3326 platforms use too old a kernel version to support these controllers wirelessly.

Batocera v33 and below require the use of the official wireless dongle (which can be ordered together in a bundle direct from Microsoft). Newer versions of Batocera can use these controllers paired via standard Bluetooth LE connection, provided your hardware actually supports that.

Xbox controllers always work if connected via USB cable.

Wii controllers are supported in 2 delicious modes. In case you want use the Wiimote as a standard controller to play any game, pair the controller by going in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE, then put you controller in discovery mode by pressing the red button to put the controller in discovery mode. To use the controller to play the Wii, first start a Wii game, then press the red button to put the controller in discovery mode.

The Switch Pro Controller, Switch GameCube Bluetooth Controller and Switch Joy-Con are supported. The only action to do is to pair the controller by going in the menu to CONTROLLER SETTINGS > PAIR A BLUETOOTH CONTROLLER, then put the controller in discovery mode using the Bluetooth button on the controller. Once the controller is detected, you can configure the button mapping as usual.

On the Switch Pro Controller, the 4 LEDs will keep blinking during play - but otherwise the controller works well.

In Batocera v33, Switch controllers are not working properly. As a workaround, use the 8bitdo Bluetooth adapter, or downgrade to v32.

The Joy-Cons can only be used in their split mode, as separate controllers. There is no way to use them combined (yet) - please note you need Batocera 33 or newer to use the Joy-Cons.

Although Retro-Bit specializes in producing controllers designed for use with the original systems they imitate, they create USB and wireless versions of those controllers, which are all compatible with Batocera.

Retro-Bit Sega Saturn

  • D-pad to normal, press and hold Up + Start for 3 seconds
  • D-pad to Left Analog mode, press and hold Left + Start for 3 seconds
  • D-pad to Right Analog mode, press and hold Right + Start for 3 seconds

Retro-Bit Tribute64

This controller doesn't work particularly well with most systems due to its atypical design, but this can be worked around by employing the controller configs as defined in the N64 system page.

The X-Arcade Tankstick is supported on Batocera when you enable controllers.xarcade.enabled=1 in the /userdata/system/batocera.conf file. It is done through the arcade2jstick module, which means that each of the two sticks is seen as an independent joystick by EmulationStation and the emulators. The trackball is recognized as a USB mouse in emulators that support mouse.

Any USB mouse or trackball should be supported out of the box. The XArcade Tankstick described above has a trackball that is automatically recognized as a USB mouse.

Bluetooth mice/trackballs/drawing tablets should also be supported when you search for them in CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. The 2018 Intuos Small Bluetooth drawing tablet has been reported as working out of the box through a Bluetooth connection (however it doesn't work with a cable).

We recommend to use a Mayflash wireless sensor DolphinBar. However, some users have reported success using Batocera with a simple Wii LED bar, connecting a Wiimote with Batocera through Bluetooth. A DolphinBar is basically a Wii LED bar + the BT module that converts the raw signal into a more standard X-input or Dolphin-acceptable signal, enabling several emulation modes for the Wiimote.

More information in the following articles:

There are adapters (sometimes called adaptoids) that can be used to convert original controllers over to USB, which should work in most cases.

You can also connect original controllers via GPIO by directly wiring them to the correct pins on the board. You can buy a breakout adapter for this purpose, or just destroy the original connector and strip the wires yourself (not recommended for beginners).

SNES and NES controllers are supported so far using this method. Other controllers probably won't work using this method.

GPIO controllers can be used on Raspberry Pi 2, 3 and 4.

Wiring for the controllers must be done following this diagram:

Then, to activate GPIO controllers, you need to enable them in batocera.conf with the following lines:

## GPIO Controllers
## enable controllers on GPIO with mk_arcarde_joystick_rpi (0,1)
controllers.gpio.enabled=1
## mk_gpio arguments, map=1 for one controller, map=1,2 for 2 (map=1,map=1,2)
controllers.gpio.args=map=1,2

In the previous example, we have two controllers enabled. If you have just one controller, you can put controllers.gpio.args=map=1.

For more information, a good how-to for connecting a GPIO controller to a Raspberry Pi through GPIO is available on this page.

I-PAC (Interface for PC to Arcade Controls) is a range of boards which allow connection of arcade controls such as buttons and joysticks to a USB port on a host system. It was designed around the MAME emulator which supports over 1000 arcade games and can be used with other emulators or any software which requires keyboard or game controller input. It is designed to be used inside an Arcade Games cabinet with the host system also mounted inside, but could just as easily be used with simply a control panel without a cabinet.

Special shift function buttons mean that a normal keyboard is only be needed for game loading and configuration, not for gameplay. All key codes can be programmed but you don't have to as you can use the built-in default configuration which has all standard MAME codes for quick and easy installation. Programmed keys codes are stored even after power off. Read more here: Configure USB Keyboard Encoders

And of course, when all else fails your standard keyboard can be used with Batocera. Be warned that it has some limitations:

  • EmulationStation only allows you to bind it for one player. Not that this really matters, because:
  • Batocera does not consider the keyboad a controller and will not apply its controller configuration generator to it. If you do not want to use the default keyboards bindings provided by the emulator itself, you will have to rebind it within the emulator. Thankfully, rebinding RetroArch's default keys will cover the majority of systems.
  • Keyboard locales that are not the default (as in, the layout set in batocera.conf) may experience “oddities” when it cmes to inputting system symbols. Most programs will assume you're only using the US layout, things such as the @ symbol may be not so obvious to find on other layouts. Some layouts will allow you to press the right [Alt] key to override the layout and temporarily use the default keyboard layout for as long as the right [Alt] key is pressed.
  • Some keyboards have anti-ghosting features which may prevent the pressing of multiple keys at the same time.
  • Some keyboards have a high debounce setting that increases the input delay resulting in a poorer experience.
  • supported_controllers.txt
  • Last modified: 7 days ago
  • by atari