This version is outdated by a newer approved version.DiffThis version (2021/10/11 11:23) is a draft.
Approvals: 0/1

This is an old revision of the document!


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.

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

Any classical USB controller should work. There is no special action to do to make it work, except eventually configure it, if it is not in our database.

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. Once done, there is no special action to do, to make it work, except eventually configure it, if it is not in our database.

In case of pairing issues it may help to clear the device list by selecting FORGET BLUETOOTH DEVICES, then reboot and try to pair again. Attention! With this action all known Bluetooth controllers will be deleted!

For advanced setup and better error detecting we have build a guide for manual connecting to a Bluetooth device. If you are still in issues, then also consider your BT-dongle that may not be supported by linux now.

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.

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.

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.

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 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).

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 and the Switch GameCube Bluetooth controller 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. The only caveat on the Switch Pro Controller is that the 4 LEDs will keep blinking during play - but otherwise the controller works well.

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.

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:

You can use original controllers (SNES, NES, …) in case you have a board with a GPIO (Raspberry Pi for example).

GPIO controllers can be used on Raspberry Pi2, Pi3 and Pi4.

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.

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).

  • supported_controllers.1633944234.txt.gz
  • Last modified: 3 years ago
  • by atari