Skip to content

Instantly share code, notes, and snippets.

@ammuench
Last active May 31, 2024 21:05
Show Gist options
  • Save ammuench/0dcf14faf4e3b000020992612a2711e2 to your computer and use it in GitHub Desktop.
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

@justinnichols
Copy link

Annoyingly the wireless dongle doesn't seem to have power/wakeup support, also, controller just doesn't work in general for me on Kernel 6.8

I concur. I'm having issues where sometimes Garuda Linux will see it connected, and sometimes it won't. The udev rule in this gist also didn't help fix it.

@Edwardius
Copy link

For anyone who is looking to just make the controller work but not make it "cheat" the OS. You can use udev to give its input files read/write permissions.

  1. create a /etc/udev/rules.d/99-8bitdo-xinput.rules with your favorite editor
  2. inside the file, add the following:
    1. ACTION=="add", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="3016", MODE="0666"
    2. This gives the input file of any 8bitdo controller R/W permissions automatically when connected.
  3. reload udev with sudo udevadm control --reload-rules or just reboot your computer.

This is helpful when you want to just read the controller's input according to SDL, not remapping to an xbox controller. Example use case is when you want it to work with ROS (https://answers.ros.org/question/384456/ros2-joy_node-debugging/)

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