Eu recentemente comprei um 8BitDo Ultimate 2 e um Machenike G5 Pro 🎮 pra usar no meu CachyOS.

O 8BitDo funcionou perfeito de primeira. O Machenike também… menos a vibração 😭

Via cabo funcionava, mas no dongle 2.4GHz ele se recusava a vibrar.

Comecei diagnosticando assim:


dmesg -w

Depois conectei o controle e percebi que ele entrava em:


2345:e02e

hid-generic

em vez de:


2345:e00b

xpad

Xbox 360 Controller for Windows

Também testei o force feedback:


sudo pacman -S linuxconsole

fftest /dev/input/eventXX

e recebia:


Function not implemented

ou seja: o Linux estava carregando `hid-generic` em vez do `xpad`, então não existia suporte real a rumble/vibração.

Encontrei a solução no reddit e consegui fazer funcionar.

Primeiro forcei o modo Xbox no controle:

  • conectei via cabo USB
  • liguei segurando `Home + A`

Depois adicionei quirks USB temporários:

echo -n "2345:e00b:ik,2345:e02e:ik,2345:e02f:ik" | sudo tee /sys/module/usbcore/parameters/quirks

Criei uma regra udev:

Arquivo:

`/etc/udev/rules.d/98-joystick.rules`

Conteúdo:


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

Depois adicionei no GRUB:

Arquivo:

`/etc/default/grub`

Na linha `GRUB_CMDLINE_LINUX_DEFAULT`:


usbcore.quirks=2345:e00b:ik,2345:e02e:ik,2345:e02f:ik

Regenerei o grub:


sudo grub-mkconfig -o /boot/grub/grub.cfg

Recarreguei o udev:


sudo udevadm control --reload-rules

sudo udevadm trigger

Depois disso:

  • o controle virou `Xbox 360 Controller for Windows`

  • o driver `xpad` carregou corretamente

  • a vibração passou a funcionar

  • a Steam reconheceu normal

  • o `fftest` finalmente detectou force feedback

Pra testar vibração:


fftest /dev/input/by-id/usb-MACHENIKE_Xbox_360_Controller_for_Windows_\*-event-joystick

Talvez ajude alguém sofrendo com esse controle no Linux 😭