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:
- Create a new file /etc/udev/rules.d/99-8bitdo-xinput.rules
- 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'"
- Run the following command in a terminal:
sudo udevadm control --reload
- 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
@awilkins I have found that if Steam is running in the background (which, it almost always is on my system) it shuts up the logs and "just works" as expected. I'm happy with the Steam fix (it was a new Linux install and I hadn't actually configured Steam to run at boot at the time, which is why I saw this problem.)
However, thinking about it now... I have another device (a flight yoke for flight simulators) that has a similar issue; while it doesn't disconnect after 10 seconds or whatever, it has the constant disconnect/reconnect in log. I found the solution somewhere that I can't remember, so I can't give credit to the original poster, but this is the post I made (and mailed to myself for good measure) about why it works and what to do. You'll have to adapt this for the USB vendor/device IDs for the 8bitdo controller (vendor/dev ID for the yoke is 294B:1900 in the below fix), but try it and let me know if it works.
--
ATTENTION: I have solved the Honeycomb Alpha Yoke constantly connecting/disconnecting in Ubuntu 20.04.
Well, that would be too generous to myself. I used my troubleshooting skills to identify a similar problem in other hardware, and deduce that the solution to that problem works for the Alpha Yoke.
The problem is that the Alpha Yoke has a quirk that requires it to be constantly polled. I just tried finding the source page I got this info from, but I can't find it at the moment. In no way do I want to represent that I used my hardware/kernel knowledge to solve this problem. I'm just good with troubleshooting using the Internet.
To get to the chase, the problem can be solved with two steps:
As superuser ("root"), edit the /etc/default/grub text file. We are going to add a kernel boot parameter.
On the GRUB_CMDLINE_LINUX_DEFAULT variable, you will probably see something like "quiet splash". We need to add something INSIDE the quotation marks; this is a boot parameter telling the kernel to treat this device a little differently so that it does not constantly connect over and over again. You want to add usbhid.quirks=0x294B:0x1900:0x00000400
So the line for me looks like:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbhid.quirks=0x294B:0x1900:0x00000400"
Save the file (again this must be done as root.)
At the command line again, run this command: sudo update-grub
This inserts the edit you made into the boot files of your computer. Now reboot. You should see that the Honeycomb Alpha Yoke no longer constantly connects/disconnects.
I will continue looking for the source of this info so I can give credit where it is due; it was regarding an unrelated computer mouse that, nonetheless, had the same connect/disconnect issue. I took an educated guess that the usbhid.quirks value needed to be set, and I was correct. Also note that the 0x294B:0x1900 part of the argument SHOULD be the same for all Alpha yokes, but if this does not work for you, let me know and I will help you find the correct address for your system.