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
1. Install 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
The 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: