Skip to content

Instantly share code, notes, and snippets.

@ammuench
Last active January 7, 2026 08:24
Show Gist options
  • Select an option

  • Save ammuench/0dcf14faf4e3b000020992612a2711e2 to your computer and use it in GitHub Desktop.

Select an option

Save ammuench/0dcf14faf4e3b000020992612a2711e2 to your computer and use it in GitHub Desktop.
8BitDo Ultimate 2.4GHz wifi working in linux

FROM https://www.reddit.com/r/Fedora/comments/zmvkdj/8bitdo_ultimate_bluetooth_controller_working_in/


I've bought this new controller from 8BitDo and wished to use on linux, to my sadness the controller didn't work out of the box, neither by cable, the 2.4G dongle or bluetooth.

So I've tried a number of solutions and this one from u/GodOfEmus over in the 8bitdo community was the one to work for me:

  1. Create a new file /etc/udev/rules.d/99-8bitdo-xinput.rules
  2. Paste this udev rule in there, then save and exit the file:
  ACTION=="add", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="3106", RUN+="/sbin/modprobe xpad", RUN+="/bin/sh -c 'echo 2dc8 3106 > /sys/bus/usb/drivers/xpad/new_id'"
  1. Run the following command in a terminal: sudo udevadm control --reload
  2. Unplug and replug the controller if it was already plugged in, it might take a second if you have the bluetooth version

It will basically "cheat" the OS to see the controller as an generic xbox device, so sadly no bluetooth nor gyro control if you care about that, but the rumbling is working for me.

Link to the original post: https://www.reddit.com/r/8bitdo/comments/ykdsmv/ultimate_24_ghz_model_right_analog_not_working_in/

And link to the comment of u/GodOfEmus with the solution: https://www.reddit.com/r/8bitdo/comments/ykdsmv/comment/iv48s4k/?utm_source=share&utm_medium=web2x&context=3

Sharing this solution here to spread the word in our community

@zkeng
Copy link

zkeng commented Jan 2, 2026

I have two 8BitDo Ultimate 2C Wireless Controllers and configured them on jan 2 -2026 to be used with Steam (Installed as Flatpak form Flathub) on my Debian 12 Bookworm computer.

After configuration they work very well and are identified as two Xbox360 controllers in Steam.

8BitDo Ultimate 2C Wireless Controller requires at least Linux kernel 6.12 from Debian Trixie or from Bookworm backports to work out of the box without configuration.
Note that kernel 6.12 from Bookworm backports has suffered from instability issues in combination with amdgpu graphics driver, with reoccurring system freeze as a result (My system had a complete freeze at least once per day with this backported kernel and an AMD RX 550 GPU). Use the default 6.1 kernel with Debian Bookworm and configure the controller manually like this:

Insert the wireless USB dongles, power on the controllers and check the vendor id and model number:
$ lsusb | grep -i 8BitDo

Note that when the wireless dongles are connected but the controllers are powered off, then the dongles are identified as model '301c':
$ lsusb | grep -i 8BitDo
Bus 005 Device 009: ID 2dc8:301c 8BitDo IDLE
Bus 005 Device 008: ID 2dc8:301c 8BitDo IDLE

But when the controllers are on, then they are identified as model '310a' and this is the model number to configure:
$ lsusb | grep -i 8BitDo
Bus 005 Device 007: ID 2dc8:310a 8BitDo 8BitDo Ultimate 2C Wireless Controller
Bus 005 Device 006: ID 2dc8:310a 8BitDo 8BitDo Ultimate 2C Wireless Controller

Power off the controllers before creating a new Udev rule.

Create a new Udev rule as root:
# touch /etc/udev/rules.d/99-8bitdo-xinput.rules

Edit the new Udev rule as root:
# nano /etc/udev/rules.d/99-8bitdo-xinput.rules (or edit the file as root with another preferred text editor)

Apply this content to the file while editing it:
######## Content of /etc/udev/rules.d && touch 99-8bitdo-xinput.rules ########
# This is /etc/udev/rules.d/99-8bitdo-xinput.rules
# Udev Rule for XInput Compatibility with 8BitDo Ultimate 2C Wireless Controllers.
# This rule sets proper permissions and ensures the xpad driver is loaded.
ACTION=="add", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="310a", MODE="0666", RUN+="/sbin/modprobe xpad", RUN+="/bin/sh -c 'echo 2dc8 310a > /sys/bus/usb/drivers/xpad/new_id'"
#################################################################

Load the new Udev rule:
# udevadm control --reload

Power on the controllers and verify that they are working as expected.
Both controllers shows up for me in this online testing service:
https://hardwaretester.com/gamepad

Start Steam (or your gaming service of preference) and use the controllers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment