Solving Gamepad not Detected on Ubuntu 22.04
The symptom is that when the Xbox controller device is plugged in, the system does not register it as a gamepad, and hence fail to create the /dev/input/js0
directory.
First, we use the following command to monitor the kernel log.
sudo dmesg -w
The log is shown below. Note that the controller is only registered as a USB device, but not a HID device. I then plugged in a normal keyboard, and the system register that as an input device correctly.
[ 341.476545] usb 1-9: new full-speed USB device number 10 using xhci_hcd
[ 341.625847] usb 1-9: New USB device found, idVendor=1532, idProduct=0a29, bcdDevice= 1.01
[ 341.625853] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 341.625855] usb 1-9: Product: Razer Wolverine V2
[ 341.625856] usb 1-9: Manufacturer: Razer
[ 341.625858] usb 1-9: SerialNumber: 0000180FB79F929D
[ 365.724632] usb 1-10: new low-speed USB device number 11 using xhci_hcd
[ 365.884049] usb 1-10: New USB device found, idVendor=03f0, idProduct=2f4a, bcdDevice= 0.11
[ 365.884060] usb 1-10: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 365.884064] usb 1-10: Product: HP Business Slim Keyboard
[ 365.884068] usb 1-10: Manufacturer: Chicony
[ 365.888935] input: Chicony HP Business Slim Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/0003:03F0:2F4A.0005/input/input21
[ 365.948931] hid-generic 0003:03F0:2F4A.0005: input,hidraw4: USB HID v1.10 Keyboard [Chicony HP Business Slim Keyboard] on usb-0000:00:14.0-10/input0
[ 365.953729] input: Chicony HP Business Slim Keyboard Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.1/0003:03F0:2F4A.0006/input/input22
[ 366.012837] input: Chicony HP Business Slim Keyboard System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.1/0003:03F0:2F4A.0006/input/input23
[ 366.012945] input: Chicony HP Business Slim Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.1/0003:03F0:2F4A.0006/input/input24
[ 366.013113] hid-generic 0003:03F0:2F4A.0006: input,hiddev0,hidraw5: USB HID v1.10 Device [Chicony HP Business Slim Keyboard] on usb-0000:00:14.0-10/input1
[ 368.740323] usb 1-10: USB disconnect, device number 11
I have tried many, many method on the Internet, but turns out Chat has the best solution
https://chatgpt.com/share/dc8b6af3-bf1a-4741-90db-0e3b0e2cea38
1. Install xboxdrv
xboxdrv
xboxdrv
is a driver for Xbox controllers. You can install it using the following command:
sudo apt-get install xboxdrv
2. Check if xpad
module is loaded
xpad
module is loadedThe xpad
module is the default driver for Xbox controllers on Linux. Ensure it is loaded:
lsmod | grep xpad
If it is not loaded, load it using:
sudo modprobe xpad
3. Add Udev Rules
Sometimes, custom udev rules can help. Create a new udev rule for Xbox controllers:
sudo nano /etc/udev/rules.d/50-xboxcontroller.rules
Add the following content:
# Microsoft Corp. Xbox Wireless Controller (model 1914)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0b12", GROUP:="users", MODE:="0666", ENV{ID_INPUT_JOYSTICK}:="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="02d1", ATTRS{idProduct}=="0a29", GROUP:="users", MODE:="0666", ENV{ID_INPUT_JOYSTICK}:="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02ea", GROUP:="users", MODE:="0666", ENV{ID_INPUT_JOYSTICK}:="1"
# Razer USA, Ltd Razer Wolverine V2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0a29", GROUP:="users", MODE:="0666", ENV{ID_INPUT_JOYSTICK}:="1"
Replace idVendor
and idProduct
with the corresponding values from your device.
Reload udev rules:
sudo udevadm control --reload-rules
sudo udevadm trigger
Then, see if lsusb can see the full information of the device
lsusb -d 1532: -v
4. Test with jstest
jstest
Install jstest-gtk
to test your joystick:
sudo apt install jstest-gtk
Run it to see if your controller is recognized:
jstest-gtk
Last updated
Was this helpful?