Skip to content

Instantly share code, notes, and snippets.

@ammuench
Last active February 28, 2025 11:07
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

@BeardSpike
Copy link

BeardSpike commented Jan 28, 2025

I could never get this to work using 8BitDo Ultimate 3mode Xbox (Vendor: 2dc8 Product: 201b) over 2.4 wireless or plugged in. JSTest shows that the right stick moves up and down when I physically move the stick right/left. LT shows that it controls the right stick. It's a mess. Strangely, the controller works fine with SteamOS on the SteamDeck. It also works fine in Steam. Which leads me to wonder if Steam has its own input drivers that can not be used outside of Steam? It's frustrating becuase I use my laptop to play cloud based games streamed through a web browser and this controller does not work with that.

I have a cheap $12 controller that is 2.4 wireless and it works with everything. But this expensive controler only works with Steam. If only I could take out the guts of the cheap controller and put them inside of the 8BitDo controller. I could, but I should not have to. Gamepads should be standardized by this point with xinput.

BTW: I am using kernel 6.8.0-51-generic and Linux Mint 22.1

Hi,

I managed to extract device ID while pairing the dongle on Win10 and dual-booting to CachyOS for 8BitDo Ultimate 3mode in 2.4Ghz - lucky strike I guess.

It did show up in lsusb as

Bus 001 Device 007: ID 2dc8:200f 8BitDo 8BitDo Ultimate 3mode Xbox

sudo nano /etc/udev/rules.d/99-8bitdo-xinput.rules

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

sudo udevadm control --reload

Seems to work well so far.

A newbie here, mostly on Windows my whole life, been distro hopping a bit till I settled for CachyOS for now.

Hope that helps as a fellow user of 3mode!

I've been scratching my brain for this one, since it has been connecting on and off on my CachyOS and I couldn't pin point why it is connecting and why it is not ;).

@porschemad911
Copy link

porschemad911 commented Jan 29, 2025

Just to add ... on my Debian 12 install with kernel 6.1.0-30-amd64, for an 8bitdo Ultimate 2C wireless controller connected via the 2.4G dongle I created /etc/udev/rules.d/99-8bitdo-xinput.rules with content:

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

Then did:

sudo udevadm control --reload-rules

Controller is now picked up in evtest and responds to input.

On my other Debian 12 machine with kernel 6.12.9-1-amd64 installed from backports the 8bitdo Ultimate 2C wireless controllers connected via the 2.4G dongle worked out of the box.

@BeardSpike
Copy link

BeardSpike commented Jan 29, 2025

With the help of /r/linux_gaming about CachyOS not picking up the 3mode, one of the users there has pinpointed the issue to the charging dock. Not CachyOS problem at all.

The dongle should be plugged into the charging dock at all times. I didn't read the manual that thoroughly, I use external charger for that one and I have the WiFi dongle plugged in directly into the PC, but thanks to this GitHub post my method works now too!

@mercster
Copy link

With the help of /r/linux_gaming about CachyOS not picking up the 3mode, one of the users there has pinpointed the issue to the charging dock. Not CachyOS problem at all.

The dongle should be plugged into the charging dock at all times.

So issue was PEBKAC, not with the charging dock.

I keep steam running in the background at all times (Steam is set to autostart on my desktop), and I never have problems with this controller. Steam keeps it alive.

@teklynk
Copy link

teklynk commented Jan 30, 2025

I could never get this to work using 8BitDo Ultimate 3mode Xbox (Vendor: 2dc8 Product: 201b) over 2.4 wireless or plugged in. JSTest shows that the right stick moves up and down when I physically move the stick right/left. LT shows that it controls the right stick. It's a mess. Strangely, the controller works fine with SteamOS on the SteamDeck. It also works fine in Steam. Which leads me to wonder if Steam has its own input drivers that can not be used outside of Steam? It's frustrating becuase I use my laptop to play cloud based games streamed through a web browser and this controller does not work with that.
I have a cheap $12 controller that is 2.4 wireless and it works with everything. But this expensive controler only works with Steam. If only I could take out the guts of the cheap controller and put them inside of the 8BitDo controller. I could, but I should not have to. Gamepads should be standardized by this point with xinput.
BTW: I am using kernel 6.8.0-51-generic and Linux Mint 22.1

Hi,

I managed to extract device ID while pairing the dongle on Win10 and dual-booting to CachyOS for 8BitDo Ultimate 3mode in 2.4Ghz - lucky strike I guess.

It did show up in lsusb as

Bus 001 Device 007: ID 2dc8:200f 8BitDo 8BitDo Ultimate 3mode Xbox

sudo nano /etc/udev/rules.d/99-8bitdo-xinput.rules

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

sudo udevadm control --reload

Seems to work well so far.

A newbie here, mostly on Windows my whole life, been distro hopping a bit till I settled for CachyOS for now.

Hope that helps as a fellow user of 3mode!

I've been scratching my brain for this one, since it has been connecting on and off on my CachyOS and I couldn't pin point why it is connecting and why it is not ;).

This seems to get it to work over bluetooth and jstest-gtk now shows that the buttons and joysticks are mapped correctly. However, the mapping is off when using xbox cloud gaming. My guess is that it only works with xbox controllers or controllers that use the xbox drivers.

@BeardSpike
Copy link

BeardSpike commented Feb 3, 2025

With the help of /r/linux_gaming about CachyOS not picking up the 3mode, one of the users there has pinpointed the issue to the charging dock. Not CachyOS problem at all.
The dongle should be plugged into the charging dock at all times.

So issue was PEBKAC, not with the charging dock.

I keep steam running in the background at all times (Steam is set to autostart on my desktop), and I never have problems with this controller. Steam keeps it alive.

Hmm,

Riddle me this, I removed the 99-8bitdo-xinput.rules, plugged it in as manual states.

The controller now connects but only when games are turned off, this is regardless if I have xinput.rules files or not - oddly enough Discord, CoreCtrl, Steam, Heroic Games Launcher don't interfere with it.

Or if I use any recording software whatsoever in the background it won't connect, like GPU Screen Recorder - if Replay Buffer is turned on it won't connect, nor through the dongle, nor wired - when I turn Replay Buffer off it connects then I can turn RB on, turn any game on and it works both wired and through the dongle.

The only mode I can turn it on when it disconnects and I have any game on or Replay Buffer on is through 8BitDo USB Wireless Adapter 2 in Android BT Mode... It always connects.

This is so weird for me, I guess I could keep it alive like you with Steam and have it always on in the background but I Just wanted to point this out and also ask if any user who has 3-mode has the same issues? Should it be like this?

I now know more about this controller than ever before - it has it quirks on Linux for sure.

@BeardSpike
Copy link

I just wanted to share.

I bought a second 8BitDo controller 2,4Ghz which is 2C like a two weeks ago.

This one always connects regardless of open apps and games through 2,4Ghz dongle.

I guess 3-Mode is just that weird, at least for me.

I might sell 2C in a while since 8BitDo just released Ultimate 2 controller with 1000Hz TMR joysticks and gyro - and I don't quite like vibrations on 2c plus feel of the grip/shell.

If I buy this new controller I will gladly share how it behaves under Linux for me.

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