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.

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, turn it on by pressing [+start] + [X] at the same time (for activating the X-input Mode, which is recommended), then press and hold the sync button (if the controller has no sync button, press and hold [-select] for 3 seconds), the LEDs will begin to blink rapidly. Then go in the menu to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE. It should then automatically be detected and paired.

For newer models, X-input is activated by shifting the mode switch from S to X on the bottom of the controller. The following information may or may not be specific to the M30 controller but is useful if you are having issues with the directional pad.

LEFT + Select : set Dpad as left analogue stick.

Up + Select : reset Dpad.

Right + Select : set Dpad as right analogue stick.

Down + Select : Swap A/B and X/Y mapping (on Switch mode only).

*Press and hold any of the key combinations above for 5 seconds to map the buttons.

*LED will blink in red to indicate the success of each button mapping.

*You need to reset the buttons manually.

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 Bluetooth connection improvements after updating the firmware.

8bitdo controllers 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].

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.

The first 8bitdo controllers to use non-standard input drivers, these controllers are only supported in Batocera v36 and higher.

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.

Alternative connection method

This method is similar tho the PS3 controller and may help when the pairing mode method above fails. Connect the PS4 controller to the Batocera machine via USB cable, wait a moment for it to register, and then disconnect the PS4 controller. In Batocera, go to CONTROLLER & BLUETOOTH SETTINGSPAIR A BLUETOOTH DEVICE and press the PlayStation button on the PS4 controller while it is scanning. Batocera should then pick up the controller and sync with it.

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.

As reported by some users, like many other controllers, if you experience issues with your Xbox One controller, make sure its firmware is up to date. It requires access to a Windows machine to upgrade XBox One controller's firmware.

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.

Users have reported that the more readily available Cipon wireless third-party adapter works with Xbox One/S/X controllers as well.

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 (it may take Batocera multiple attempts until there is a successful pair). 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. This will render the button inputs on the Wiimote to not appear as a controller's inputs (so they can instead be used as a light gun), making them unmappable. If intending to use the Wiimote as an ordinary retro controller, the old gamepad 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).

With the sunsetting of Google Stadia, Google released an optional firmware update for its controllers to make them function as generic Bluetooth controllers. The update is performed through the browser on this page (Google initially stated that the Bluetooth update will be available only until December 31st, 2023, which they have now extended to December 31st, 2024). This controller is supported in Batocera v36 and higher.

Once the controller is switched to Bluetooth mode, it cannot be switched back to Wi-Fi mode for use with Stadia (not that this matters anyway as Stadia is discontinued).

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

The controller’s LED indicates the input mode it is in. To switch between the modes, press and hold Start + B until it changes color.

  • Red indicates it is in D-Input mode.
  • Blue indicates it is in X-Input mode.

It has the following macros:

  • 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
  • To flip the face buttons A/B & X/Y, press and hold Down + Start for 3 seconds
  • To reset the D-pad back to normal, press and hold Up + Start for 3 seconds

Retro-Bit Mega Drive,Genesis 8-Button Arcade Pad with USB (Model 2 - Switch)

Swap between D-Input and X-Input by holding Start + B for 5 seconds

  • D-pad Input, press and hold D-pad Up + Start for 5 seconds
  • D-pad to Left analog, press and hold D-pad Left + Start for 5 seconds
  • D-pad to Right analog, press and hold D-pad Right + Start for 5 seconds
  • Swap A-B & X-Y, press and hold D-pad Down + Start for 5 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.

Swap between D-Input and X-Input by holding down the C-Up + C-Left for 5 seconds

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.

Gamesir Nova Lite

Gamesir Nova Lite controllers have been reported to be working correctly with Batocera when paired with the included dongle, in X-Input mode (press the pair button and Y button).

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.

There are many clones of this controller which do not work with Batocera.

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. Connecting standard arcade buttons directly seems to also work. Other controllers may not work with this.

GPIO controllers can only 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 comes 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.

The default settings for a keyboard in the EmulationStation menu are:

  • SPACE bar for the main menu (i.e. START)
  • BACKSPACE for the contextual menu (i.e. SELECT)
  • ENTER key to select, ESC key to go back
  • /home2/deje2074/wiki.batocera.org/data/pages/supported_controllers.txt
  • Last modified: 4 weeks ago
  • by nadenislamarre