Jetson Orin Nano: Microsoft Xbox 360 Joystick Not Recognized as /dev/input/js0 in JetPack 6.0
Issue Overview
Users of the Jetson Orin Nano Development Kit are experiencing issues with Microsoft Xbox 360 wireless USB controllers after upgrading to JetPack 6.0. The controller, which previously worked in JetPack 5, is no longer recognized as /dev/input/js0
. This problem appears to be related to the kernel upgrade to version 5.15 in JetPack 6.0. While the controller can be made to work using the command sudo xboxdrv -v --no-uinput
, it does not function as expected out of the box.
Possible Causes
-
Kernel configuration changes: The upgrade to kernel 5.15 in JetPack 6.0 may have altered or disabled necessary drivers or configurations for the Xbox 360 controller.
-
Missing or disabled kernel modules: Required modules for the Xbox 360 controller might not be loaded or enabled in the new kernel version.
-
Udev rules changes: There could be modifications to udev rules that affect how the system recognizes and assigns device nodes to input devices.
-
Driver compatibility issues: The existing driver for the Xbox 360 controller might not be fully compatible with the new kernel version.
-
USB subsystem changes: Alterations in the USB subsystem of the new kernel could affect how certain devices, including game controllers, are detected and initialized.
Troubleshooting Steps, Solutions & Fixes
-
Verify controller detection:
- Connect the Xbox 360 wireless USB receiver.
- Run
lsusb
to check if the device is recognized at the USB level. - Check
dmesg | grep -i xbox
for any relevant kernel messages.
-
Try manual driver loading:
- Attempt to load the xpad driver manually:
sudo modprobe xpad
- Check if the device appears:
ls /dev/input/js*
- Attempt to load the xpad driver manually:
-
Use xboxdrv as a temporary workaround:
- Install xboxdrv if not already present:
sudo apt-get install xboxdrv
- Run the controller with:
sudo xboxdrv -v --no-uinput
- This solution allows the controller to work but may not be ideal for all use cases.
- Install xboxdrv if not already present:
-
Enable necessary kernel configurations:
- Review the kernel configuration to ensure Xbox controller support is enabled.
- Edit the kernel configuration:
sudo make menuconfig
- Navigate to Device Drivers -> Input device support -> Joystick interface
- Ensure "Xbox gamepad support" is enabled
- Rebuild and install the kernel following the Jetson Linux Developer Guide.
-
Check and update udev rules:
- Review
/etc/udev/rules.d/
for any rules affecting joystick devices. - Create or modify rules to ensure proper device node creation:
echo 'SUBSYSTEM=="input", ATTRS{name}=="Xbox 360 Wireless Receiver", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"' | sudo tee /etc/udev/rules.d/99-xbox-controller.rules
- Reload udev rules:
sudo udevadm control --reload-rules && sudo udevadm trigger
- Review
-
Investigate kernel logs:
- Check for any errors or warnings related to input devices or USB:
journalctl -b | grep -i 'input\|usb\|xbox'
- Check for any errors or warnings related to input devices or USB:
-
Consider downgrading to JetPack 5:
- If the issue persists and is critical for your application, consider temporarily reverting to JetPack 5 until a fix is available.
-
Report the issue:
- If none of the above solutions work, report the issue to NVIDIA through their developer forums, providing detailed information about your setup and the steps you’ve tried.
-
Future-proofing:
- For future kernel updates, consider submitting a feature request to NVIDIA to include Xbox 360 controller drivers and configurations enabled by default in Jetson kernels.
Remember to reboot the Jetson Orin Nano after making any significant changes to ensure all modifications take effect.