Skip to content

Instantly share code, notes, and snippets.

@ammuench
Last active July 12, 2025 08:43
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

@robtor-de
Copy link

So finally I came to the conclusion that the controller worked from the beginnging with the 2.4G dongle out of the box. The only problem was that it disconnects if nothing grabbed the input.
Having steam open resolves the problem.

As I also have non-steam use-cases for the controller I used the AUR package evedev-keepalive and patched the contained udev rules to match my controller and everthing works just fine.

Hopefully the xpad driver will integrate a fix.

The issue from xpad is referenced in the original repo from the evdev-keepalive project

Hope this helps as well with other 8bitdo controllers! (mine is the Ultimate Bluetooth variant)

@mercster
Copy link

So finally I came to the conclusion that the controller worked from the beginnging with the 2.4G dongle out of the box. The only problem was that it disconnects if nothing grabbed the input. Having steam open resolves the problem.

Yep, said this way back when https://gist.github.com/ammuench/0dcf14faf4e3b000020992612a2711e2?permalink_comment_id=4756745#gistcomment-4756745 two years ago. :-)

@barraIhsan
Copy link

barraIhsan commented Jun 27, 2025

Is there someone who use the new 8Bitdo Ultimate 2 Wireless? Does the rumble/vibration work on linux? What about the extra button?

Yes it does work with the following udev rule:

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'"

Rumble works ootb but the additional buttons will not be recognized as it maps to a default xbox controller.

update: https://gist.github.com/barraIhsan/783a82bcf32bed896c85d27dbb8018a5

I thought it would be appropriate to create a new gist for Ultimate 2 Wireless, since this is about Ultimate 2.4GHz

Oh, I also heard that Ultimate 2c after firmware update, also possible to switch to DInput and Switch mode. And thus, with DInput the additional 2 button is exposed.
But I don't have 2c, so I can't test it

@teklynk
Copy link

teklynk commented Jun 28, 2025

It still doesn't work for me. I give up messing with this controller. It's been a waste of time. How difficult is it to make a controller that uses xinput and that shows up as a xbox 360 controller? I went back to using my $12.00 2.4ghz wireless controller since it works on everything. It's not great, but it works ootb and it shows up as a xbox 360 controller device.

@BeardSpike
Copy link

BeardSpike commented Jun 28, 2025

It still doesn't work for me. I give up messing with this controller. It's been a waste of time. How difficult is it to make a controller that uses xinput and that shows up as a xbox 360 controller? I went back to using my $12.00 2.4ghz wireless controller since it works on everything. It's not great, but it works ootb and it shows up as a xbox 360 controller device.

I already ditched 8BitDo controllers for GameSir.

No additional tinkering, they can switch from Xinput to Dinput to Switch input with a simple combo of buttons.

No need to add that they hold 1000Hz polling rate almost spot on, while Ultimate 2 goes up to like 600Hz range.

They also have Hall Effect joysticks and TMR Joysticks in their controllers. And are testing something potentially even better.

Plus their CEO is very active on socials.

So you can actually ask a lot of things.

@barraIhsan
Copy link

It still doesn't work for me. I give up messing with this controller. It's been a waste of time. How difficult is it to make a controller that uses xinput and that shows up as a xbox 360 controller? I went back to using my $12.00 2.4ghz wireless controller since it works on everything. It's not great, but it works ootb and it shows up as a xbox 360 controller device.

It is XInput on dongle and wired mode. Or am I missing something here?

@Khyretos
Copy link

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idProduct}=="6012", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess", TAG+="udev-acl"

Hey i have a wireless ultimate 2 and i would like to try the DInput, do i just need to add this line to my rules?
for example this is my current rule for the controller:

ACTION=="add", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="310b", MODE="0666", RUN+="/sbin/modprobe xpad", RUN+="/bin/sh -c 'echo 2dc8 310b > /sys/bus/usb/drivers/xpad/new_id'"

do i just need to add that line below it?

@barraIhsan
Copy link

yes, you can add multiple rules into one file.

For example, 1st party and some of the 3rd party controller are also included in steam input. You can find it on /usr/lib/udev/rules.d/60-steam-input.rules

Huh, your udev rule is for the XInput right? I don't think it's needed anymore, but it doesn't hurt to just include that anyway.

@Khyretos
Copy link

yes, you can add multiple rules into one file.

For example, 1st party and some of the 3rd party controller are also included in steam input. You can find it on /usr/lib/udev/rules.d/60-steam-input.rules

Huh, your udev rule is for the XInput right? I don't think it's needed anymore, but it doesn't hurt to just include that anyway.

i had the controller before steam supported it and i had to add the rule.
i updated the controllers firmware and the nintendo switch mode works perfectly with Gyro but i cant make it detect gyro with the direct input mode (Power on + B). steam does detect and the additional buttons options appear but for some reason its very buggy, i turn it on and it inmeadeatly untoggles when i close it.

image

@barraIhsan
Copy link

i had the controller before steam supported it and i had to add the rule.

it was actually the linux kernel that updated to support the XInput on this controller.

steam does detect and the additional buttons options appear but for some reason its very buggy, i turn it on and it inmeadeatly untoggles when i close it.

huh, did you try clicking the edit layout instead? and assign the button manually?
Oh, for now, to correctly display 8bitdo's additional button, you have to use steam beta
image

@Khyretos
Copy link

i had the controller before steam supported it and i had to add the rule.

it was actually the linux kernel that updated to support the XInput on this controller.

steam does detect and the additional buttons options appear but for some reason its very buggy, i turn it on and it inmeadeatly untoggles when i close it.

huh, did you try clicking the edit layout instead? and assign the button manually? Oh, for now, to correctly display 8bitdo's additional button, you have to use steam beta image

Yes, i did that and unfortunatly the settings just keep resetting ill just wait until they iron out the bugs.

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