Skip to content
Permalink
main
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time

Supported controllers

Supported gamepads

Bluetooth Classic controllers

List of supported Bluetooth Classic controllers

  • DualSense (PS5)
  • DUALSHOCK 4 (PS4) controller, both 2013 and 2016 editions
  • DUALSHOCK 3 (PS3) controller
  • Nintendo Switch Pro controller
  • Nintendo Switch JoyCons
  • Nintendo Wii U Pro controller
  • Nintendo Wii Remote and Remote Motion Plus, including Nunchuk and Classic Controller
  • Xbox Wireless controller (model 1708)
  • 8BitDo controllers
  • Android controllers
  • iCade controllers
  • Nimbus SteelSeries
  • OUYA controllers
  • Some TV remote controls, like the Amazon Fire TV

If you have a Bluetooth Classic gamepad and is not on that list, please file a bug.

Bluetooth BLE: Not supported ATM

Not every Bluetooth HID controller is "Classic". Some of them are "BLE" (low energy). "BLE" controllers are not supported at the moment, like:

  • Xbox Wireless controller model 1914

Supported gamepads

List of supported gamepads with supported features, known bugs, etc.

Sony DualSense (PS5)

ddualsense_gamepad

Sony DUALSHOCK 4 (PS4)

ds4_gamepad

  • Must be in PC mode.
  • Supports both the 2013 (CUH-ZCT1) and 2016 (CUH-ZCT2) editions
  • Supported features: rumble, lightbar color
  • Some clones are known to work Ok

Sony DUALSHOCK 3 (PS3)

ds3_gamepad

  • Supported features: rumble, player LEDs
  • Requires that the DS3 is manually paired to the Unijoysticle device.
  • Disabled by default since it conflicts with Nintendo Switch. Enable it via idf.py menuconfig
  • Some clones are known to work Ok

Nintendo Switch Pro

Switch Pro

  • Supported features: rumble, player LEDs
  • Some clones are known to work Ok

Nintendo Switch JoyCon

Switch JoyCon

Both Left and Right JoyCon are supported.

  • Supported features: player LEDs
  • They must be used in "horizontal" mode.
  • Each JoyCon represents one gamepad. Cannot be used as a single/combined gamepad.
  • Some clones are known to work Ok

Nintendo Wii U Pro controller

Wii U Pro

  • Supported features: player LEDs
  • Some clones are known to work Ok

Nintendo Wii Remote

Wii Remote

  • Supports both Wii Remote (RVL-003) and Wii Remote Motion Plus (RVL-036)
  • Supports 3 modes:
    • Sideways mode (default)
    • Accelerometer mode
    • Vertical mode
  • Supported features: player LEDs
  • To start pairing, use the "Sync" method (press "Sync" button).

Sideways mode

  • Default mode. No need to press anything special to enter this mode.
  • Use Wii Remote in horiontal position.
  • DPAD for regular movements.
  • Button "1" for fire.
  • Button "2" for jump.

Accelerometer mode

  • Enter this mode by pressing "A" (A == accelerometer, easy to remember) while connecting or reconnecting.
  • Tilt up/down for up/down movements
  • Rotate left/right for left/right movements
  • Button "A" for fire.
  • Button "shoulder" to jump.
  • LED #3 will be on in this mode.

Vertical mode

  • Enter this mode by pressing button "+" while connecting or reconnecting.
  • DPAD for regular movements.
  • Button "shoulder" for fire.
  • Button "A" to jump.
  • LED #4 will be on in this mode.

Nintendo Wii Remote + Nunchuk

Wii Remote Nunchuk

When Nunchuk is attached to the Wii Remote, the Nunchuk can be used.

Nunchuk as regular joystick

  • Default mode. No need to press anything special to enter this mode.
  • Use Nunchuk joystick for regular movement.
  • Nunchuck button C for fire.
  • Nunchuck button Z for jump.

Wii Remote can also be used, but both of them control the same joystick.

Nunchuk as second joystick

To control both Commodore joysticks (useful when in Unijoysticle Enhanced mode), you have to press the "+" button in the Wii Remote while connecting or reconnecting.

  • Enter this mode by pressing button "+" while connecting or reconnecting.
  • Use Nunchuk joystick for "right" movement.
  • Nunchuck button C for "right" fire.
  • Use Wii Remote DPAD for "left" movement.
  • Use Wii Remote shoulder button for "left" fire.

Nintendo Wii Remote + Classic Controller / Classic Controller Pro

wii_classic_controller

A Nintendo Classic Controller or Classic Controller Pro can be used when it is attached to the Wii Remote. When attached, the Wii Remote will be "disabled" and only the Classic Controller can be used.

  • LEDs: supported

Xbox Wireless (model 1708)

Xbox One S

  • Must be the model 1708 (released in 2016) and not earlier. Model 1797 might work. Newer models, like 1914, are not supported ATM.
  • Supports both "old" (firmware 3.1) and "new" (firmware 4.8) Xbox One mappings
  • Supported features: rumble

Android

Android

SteelSeries Nimbus

Nimbus SteelSeries for iOS

  • Tested with Nimbus SteelSeries for iOS.

OUYA

OUYA 1st gen

  • Only 1st gen is supported. It is unknown whether the newer version works Ok.

8BitDo Family

8bitdo SN30 Pro

iCade Family

iCade Cabinet

iCade

  • The original iCade cabinets works great.
  • Might work with other controllers that support the iCade protocol.

iCade 8-bitty

iCade 8bitty

Amazon Fire TV Remote

Amazon Fire TV Remote 1st gen

  • Only 1st gen is supported

Generic HID controllers

Generic

In general, any Bluetooth Classic (not BLE) controller that supports HID is supported, or should be easy to support it.

There many generic Bluetooth controllers that sometimes are offered as gifts in conferences. Usually these generic Bluetooth controllers have different connection modes. Use the HID one.

  • Select Button + X + Right trigger to enter into Gamepad mode
  • Select Button + X + Left trigger to enter in iCade mode.

Technical notes: Virtual gamepad

Internally, all controllers are converted to a virtual gamepad which is very similar to the Android/Xbox One gamepads layout. The different parsers convert the physical gamepads to the virtual gamepad.

Button are mapped based on physical position, and not on names. For example, 8bitdo N30 gamepad uses the Nintendo layout, which is different than the Virtual Gamepad layout:

NES30 layout     Virtual Gamepad layout
    X                     Y
    ^                     ^
Y<-   ->A             X<-   ->B
    v                     v
    B                     A

So, instead of honoring the button names, N30 will get remapped to match the virtual gamepad layout, meaning that:

  • Button B -> A
  • Button A -> B
  • Button Y -> X
  • Button X -> Y

Virtual gamepad mappings

Many of the virtual buttons/pads are left unmapped, but could be mapped in the future.

virtual_gamepad

  • 1: D-pad
  • 2: Axis X & Y, Button Thumb Left
  • 3: Axis Rx & Ry, Button Thumb Right
  • 4: Button X
  • 5: Button A
  • 6: Button Y
  • 7: Button B
  • 8: Button Shoulder Right
  • 9: Accelerator, Trigger Button Right
  • 10: Brake, Trigger Button Left
  • 11: Button Shoulder Left
  • M1: Button System
  • M2: Button Home
  • M3: Button Back