USB 3.2 Device Detection Issue on Nvidia Jetson Orin Nano Dev Kit
Issue Overview
Users of the Nvidia Jetson Orin Nano Dev Kit are experiencing problems with USB 3.2 device detection, specifically with devices using the Cypress/Infineon FX3 USB 3.0 controller. The issue manifests as follows:
- The FX3 device is not detected by the Orin Nano on power up or reboot when plugged in.
- If the FX3 device is connected after the system has booted, it is detected and functions correctly.
- When the FX3 device is plugged in during boot, users need to unplug and replug the device for it to be recognized.
- Error messages related to USB appear in dmesg when rebooting with the FX3 device connected.
This problem does not occur on x86 systems or the Jetson TX2, suggesting it is specific to the Orin Nano platform.
Possible Causes
-
USB Controller Initialization: The Orin Nano’s USB controller may not be properly initializing or enumerating devices during the boot process.
-
Power Management Issues: The USB ports may not be receiving adequate power during boot, causing device detection failures.
-
Firmware or Driver Incompatibility: The current firmware or USB drivers may have compatibility issues with the FX3 controller.
-
Timing Conflicts: There could be a timing issue during the boot process that prevents proper device enumeration.
-
Hardware Limitations: The Orin Nano’s USB controller might have limitations or bugs when dealing with certain USB 3.2 devices.
-
BIOS/UEFI Settings: Incorrect or suboptimal BIOS/UEFI settings could be affecting USB device detection during boot.
Troubleshooting Steps, Solutions & Fixes
-
Update System Firmware and Drivers:
- Ensure your Jetson Orin Nano is running the latest firmware and driver versions.
- Check Nvidia’s developer website for the most recent Jetson BSP (Board Support Package) updates.
-
USB Port Power Cycling:
- After booting, try the following commands to power cycle the USB ports:
sudo sh -c 'echo -n "0000:00:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind' sudo sh -c 'echo -n "0000:00:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind'
- After booting, try the following commands to power cycle the USB ports:
-
Adjust USB Controller Parameters:
- Modify kernel boot parameters to change USB controller behavior:
Addusbcore.autosuspend=-1
to the kernel command line in/boot/extlinux/extlinux.conf
- Modify kernel boot parameters to change USB controller behavior:
-
Disable USB 3.0 Support Temporarily:
- Force USB 2.0 mode to test if the issue is specific to USB 3.x:
Addxhci_hcd.speed=1
to the kernel command line
- Force USB 2.0 mode to test if the issue is specific to USB 3.x:
-
Investigate Power Management:
- Disable USB autosuspend:
sudo sh -c 'echo -1 > /sys/module/usbcore/parameters/autosuspend'
- Disable USB autosuspend:
-
Analyze Debug Logs:
- Capture detailed USB debugging information:
sudo sh -c 'echo 15 > /sys/module/usbcore/parameters/usbfs_snoop' sudo dmesg -w
- Replug the device and analyze the output for specific errors or anomalies.
- Capture detailed USB debugging information:
-
Test with Different USB Cables:
- Ensure you’re using a high-quality USB 3.2 compatible cable.
- Try multiple cables to rule out cable-related issues.
-
Adjust BIOS/UEFI Settings:
- If accessible, check BIOS/UEFI settings related to USB configuration, power management, and XHCI handoff.
-
Custom USB Device Rules:
- Create a custom udev rule for the FX3 device:
sudo nano /etc/udev/rules.d/99-fx3-device.rules
- Add the following line (replace idVendor and idProduct with your device’s values):
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04b4", ATTR{idProduct}=="00f3", RUN+="/bin/sh -c 'echo -n $kernel > /sys/bus/usb/drivers/usb/bind'"
- Create a custom udev rule for the FX3 device:
-
Kernel Module Manipulation:
- Unload and reload USB-related kernel modules:
sudo modprobe -r xhci_pci xhci_hcd sudo modprobe xhci_hcd xhci_pci
- Unload and reload USB-related kernel modules:
-
Investigate Conflicting Devices:
- Disconnect all other USB devices and test the FX3 device alone to rule out conflicts.
-
Report to Nvidia:
- If the issue persists, report it to Nvidia’s developer forums or support channels with detailed logs and system information.
Remember to reboot the system after making any significant changes to kernel parameters or system configurations. If the problem continues after trying these solutions, it may indicate a more complex issue requiring further investigation or potential hardware examination.