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.
Generic USB controllers
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.
Generic Bluetooth controllers
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 SETTINGS → PAIR 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 controllers
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 SETTINGS → PAIR 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]
.
8bitdo Zero (first generation)
To pair, press and hold [+start]
+ [R1]
for 2 seconds, then go in the menu to CONTROLLER & BLUETOOTH SETTINGS → PAIR A BLUETOOTH DEVICE. Wait for 10-15 seconds and the controller should automatically be detected and paired.
8bitdo Ultimate controllers
The first 8bitdo controllers to use non-standard input drivers, these controllers are only supported in Batocera v36 and higher.
PlayStation controllers
PS1/PS2 controllers
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.
PS3 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:
Plug it via the USB-cable into the machine Batocera is running on
Wait 5-10 seconds
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
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 SETTINGS → PAIR 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.
PS5 controllers
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.
Xbox/X-input/Windows.Gaming.Input controllers
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
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).
Xbox One (not Core/Series S/Series X) controllers
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 SETTINGS → PAIR A BLUETOOTH DEVICE. It should then automatically be detected and paired.
Xbox controllers always work if connected via USB cable.
Xbox Core/Series S/Series X controllers
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.
Nintendo controllers
GameCube controllers
Original GameCube controllers can be connected via the official “Super Smash Bros. GameCube Adapter” for Wii U ( 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
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 SETTINGS → PAIR 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. ( 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 SETTINGS → WIIMOTE GUN SETTINGS → MODE and set it to “PAD”.
Switch controllers
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).
Google Stadia Controller
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 currently states that the Bluetooth update will be available only until December 31st, 2023). 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).
Other controllers
Retro-Bit USB/wireless controllers
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, pressand 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
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 (
) to connect as a standard X-input controller.
Power + A (
) 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 (
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.
X-Arcade Tankstick
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.
Rii RK707
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.
Xiaomi Youpin Elite
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.
Nexilux Wii U Pro Controller
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).
Pointer devices (mice, trackballs, drawing tablets, etc.)
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 SETTINGS → PAIR 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).
Dolphinbar for Lightgun games
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:
lightgun games (for arcade games, or NES… see explanations on the page behind this link)
Wii games
Original system controllers
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.
SNES/NES GPIO controllers
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.
IPAC2 USB Controllers
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
Keyboard
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