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 it's recommended to connect the Bluetooth controller manually. 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, put it into its X-input mode (for newer models, flick the switch from S to X; for older models, first turn it on by pressing [+start] + [X] at the same time) and then press and hold the sync button (if the controller has one, else hold the [-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.

8bitdo controllers also have issues using “hold” commands, as the home button glitches out when held down. This can be worked around by holding the home button for a full second before doing any hold commands.

If preferred, connecting via a USB cable is simpler. The input mode switching is done the same way, just while plugging in the controller instead of while pressing [+start].

Requires the use of a proper adapter. Most commonly, these adapters are made with the intention of using PS2 controllers on PS3, these work fine for both PS2 and PS1 controllers when connecting to Batocera. There were no official first-party adapters for this purpose, only third-party.

You may recall PS2 controllers have pressure sensitive buttons. These technically work fine in older Linux kernels, however at one point the pressure-sensitivity was patched out to behave more like standard controllers.

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.

You may recall PS3 controllers have pressure sensitive buttons. These technically work fine in older Linux kernels, however at one point the pressure-sensitivity was patched out to behave more like standard controllers.

The [L2] and [R2] triggers are still treated as triggers.

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. Has the same features as a PS4 controller.

If experiencing any issues, such as Bluetooth dropping out or the controller failing to reconnect, update the firmware on the controller itself first! Most of these issues have been addressed.

PS5 controllers always work when connected via USB cable.

Older Xbox 360 controllers and Xbox-like PC gaming controllers use X-input, Microsoft's older input API. Newer Xbox One and later controllers use WinRT's Windows.Gaming.Input, which is included by default on Windows 8/10 and above. Both APIs are supported by Batocera, the matter is usually connecting the controller in the first place.

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 (wireless Xbox 360 controllers are 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 Core/Series S/Series X controller (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 v34 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.

If the controller is not pairing correctly, it may need to have its firmware updated via a Windows 10+ PC or an Xbox One/Series console.

Xbox controllers always work if connected via USB cable.

Original GameCube controllers can be connected via the official “Super Smash Bros. GameCube Adapter” for Wii U (FIXME needs testing, but theoretically should be fine) or any generic third-party adapter (may need to have their switch put on “PC” mode).

The 8bitdo Gbros. wireless adapter also supports connecting GameCube controllers and allowing them to function as though they were Bluetooth controllers.

Wii controllers are supported in two 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. More info can be found on the Wii system page.

Those interested in using the Wiimote as a light gun controller should check out the dedicated light gun page.

The 8bitdo Gbros. wireless adapter also supports connecting Classic/NES mini/SNES mini controllers and allowing them to function as though they were Bluetooth controllers. (FIXME confirmation needed)

From Batocera v35 onwards, Wiimotes will automatically connect to ES as light guns. The old behaviour can be restored by going to CONTROLLER & BLUETOOTH SETTINGSWIIMOTE GUN SETTINGSMODE and set it to “PAD”.

The Switch Pro Controller, Switch GameCube Bluetooth Controller and Switch Joy-Con (Joy-Cons specifically since v33) are supported. The only action to do is to pair the controller by going in the menu to CONTROLLER SETTINGS > PAIR A BLUETOOTH DEVICE, 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, downgrade to v32 or wait until this gets fixed in the future.

The Joy-Cons can only be used in their split mode, as separate controllers. There is no way to use them combined (yet).

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.

GameSir T1S

A PS4 styled controller that can't actually connect to a PS4. Works fine as a generic USB/2.4 GHz wireless controller.

To pair, press and hold the power button on top of the controller along with one of the face buttons depending on which mode you wish to connect it as:

  • Power + X (West button (Y SNES)) to connect as a standard X-input controller.
  • Power + A (South button (B SNES)) to connect as a D-input Android controller (in this mode, you can press [SELECT] + X to activate its mouse mode, making the left stick move the cursor (this doesn't really have much use in Batocera unless you're say using the file manager or want to play a really hard version of the light gun games)).
  • Power + B (East button (A SNES) to connect as a standard D-input controller.

The controller comes with a 2.4 GHz wireless receiver, which makes the controller appear as though it were a wired USB controller to the host machine while still functioning wirelessly.

Or you could simply connect it via its provided micro-USB to USB cable to use it in wired mode.

Gamesir T3S

A PS4 styled controller which works via Bluetooth. The T3 model (without the S) is 2.4GHz only.

The controller comes with a 2.4 GHz or Bluetooth receiver, which makes the controller appear as though it were a wired USB controller to the host machine, but the T3S model still works via any ordinary Bluetooth receiver.

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.

A hybrid controller which is a keyboard and trackpad on one side and the other side is a controller. The controller side supports multiple modes, hold down the home button for three seconds. Works out of the box with Batocera.

A Xiaomi gamepad which is partially supported in Batocera. It comes with a 2.4 GHz receiver which Batocera supports, but its Bluetooth connection does not work with anything other than Android. It has multiple controller modes which can be switched between by double-pressing the mode button.

A third-party Wii U style Pro controller. Works fine with all the D-input compatible emulators, but may have issues with Wine (which expects an X-input controller, can be worked around by using a pad2key profile for some games).

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 not use a Mayflash wireless sensor DolphinBar. Using Batocera with a simple Wii LED bar, connecting a Wiimote with Batocera through Bluetooth works perfectly, and allows more features (like a precise gun) ; moreover, the Dolphinbar costs a lot. Everything you do with a dolphinbar, you can do with a simple wiimote, a wii bar sensor and a bluetooth receiver. 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. These are usually console specific but sometimes feature multiple ports; the latter of which is always a third-party solution where quality may be questionable.

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: 36 hours ago
  • by atari