All commonly known pads are supported by batocera.linux. batocera.linux has an internal database so that most of them even work out of the box. In some case, you can have some configuration to do. For each kind of pads, you can find below the prerequisites and the way to get them working.
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 dont 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 pad 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 classical bluetooth pad should work, it includes 8bitdo bluetooth devices. The only action to do, is to set your pad in discovery mode (there is generally a button for that or get advice from the manual) then pair the pad by going in the menu to Controller Settings > PAIR A BLUETOOTH CONTROLLER. 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 CONTROLLERS, 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 pads are supported. To pair a 8bitdo pad, first turn it on by pressing Start + B at the same time (for activating the Android (D-Input) mode, which is recommended) and then press and hold the Select Button for 3 seconds, until the LED is blinking rapidly. Then go in the menu to Controller Settings > PAIR A BLUETOOTH CONTROLLER. It should then automatically be detected and paired.
8bitdo pads get an excellent support of the manufacturer, so it might be worth to visit the support-page and get the newest firmware download. Users report of a massive improved BT support after updating the firmware.
PS3 pads 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 pad, plug it via the USB-cable into the system, where batocera.linux is running on, wait 5-10 seconds, then 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, to make it work. All buttons are preconfigured.
PS4 pads are supported. In case of issues, it is often the dongle which is not supported by linux. To pair the PS4 pad, 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 Settings > PAIR A BLUETOOTH CONTROLLER. It should then automatically be detected and paired.
Xbox one pads are supported. Since 5.27 the original Microsoft Dongle is supported so all XBOX ONE Controllers work proper now. To pair just press the sync button on your controller – this only works with the the original MS 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 pad in discovery mode (after turning the controller on by pressing the Xbox button in the middle of the controller you have to press and hold the small pairing-button on the top of the controller until the Xbox logo is blinking fast) and then pair the pad by going in the menu to Controller Settings > PAIR A BLUETOOTH CONTROLLER. It should then automatically be detected and pairsed.
Xbox 360 pads are supported. If you have a wired version, just plug it in via USB, otherwise, for the wireless version you need the Wifi-USB dongle of the Xbox 360 Wireless Controller (Xbox 360 is not bluetooth).
Wii pads are supported. 2 modes however. In case you want use the wiimote as a standard pad to play any game, pair the pad by going in the menu to Controller Settings > PAIR A BLUETOOTH CONTROLLER, then put you pad in discovery mode by pressing the red button to put the pad in discovery mode. To use the pad to play the wii, first start a wii game, then press the red button to put the pad in discovery mode.
The Switch Pro Controller and the Switch Gamecube Bluetooth pad are supported. The only action to do is to pair the pad by going in the menu to CONTROLLER SETTINGS > PAIR A BLUETOOTH CONTROLLER, then put you pad in discovery mode using the bluetooth button on the pad. Once the pad 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 - but otherwise the pad works well.
The X-Arcade Tankstick is supported on Batocera when you enable
controllers.xarcade.enabled=1 in the file
/userdata/system/batocera.conf. 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 under Batocera and 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 controller and stack, enabling several emulation modes for the Wiimote.
More information in the following articles:
You can use original pads (snes, nes, …) in case you have a board with a gpio (rpi for example).
A good how-to for connecting a GPIO controller to a Raspberry Pi through GPIO is available on this page