Configuring USB Ports on Jetson Orin Nano Custom Board
Issue Overview
Users are experiencing difficulties when attempting to configure USB ports on a custom board for the Jetson Orin Nano 8GB. The main goals are to disable the eeprom and OTG functionality while enabling two independent USB 3.0 channels. After modifying the device tree source (DTS) file, users encountered compilation errors and unexpected behavior of the USB ports.
Possible Causes
- Incorrect modifications to the device tree source file
- Syntax errors in the modified DTS file
- Incomplete configuration changes across multiple files
- Hardware limitations or incompatibilities with the custom board
- Conflicts with existing USB configurations
Troubleshooting Steps, Solutions & Fixes
-
Correct syntax errors in the DTS file:
- Carefully review the modified
tegra234-p3768-0000-a0.dtsi
file, especially around line 159-160. - Fix any typos or syntax errors that may be causing compilation issues.
- Carefully review the modified
-
Disable unnecessary components:
- Ensure that the
fusb_p0
node is disabled in the DTS file:fusb_p0: fusb30x@28 { status = "disabled"; };
- Ensure that the
-
Configure USB ports:
- Modify the DTS file to configure USBSS1 and USBSS2 as TYPE-A:
usb_cd { status = "disabled"; }; xusb_padctl@3520000 { ports { usb2-0 { mode = "otg"; status = "okay"; }; usb2-1 { mode = "host"; status = "okay"; }; usb2-2 { mode = "host"; status = "okay"; }; usb3-0 { nvidia,usb2-companion = <1>; status = "okay"; }; usb3-1 { nvidia,usb2-companion = <0>; status = "okay"; }; usb3-2 { nvidia,usb2-companion = <2>; status = "okay"; }; }; };
- Modify the DTS file to configure USBSS1 and USBSS2 as TYPE-A:
-
Compile and flash the modified image:
- After making changes to the DTS file, recompile the kernel and device tree:
sudo ./nvbuild.sh
- Flash the new image to the Jetson Orin Nano using the L4T (Linux for Tegra) flashing tool.
- After making changes to the DTS file, recompile the kernel and device tree:
-
Test USB functionality:
- Connect USB 3.0 devices to both USB3-1 and USB3-2 ports.
- Use the
lsusb
command to verify that the devices are recognized. - Check the kernel log for USB-related messages:
dmesg | grep -i usb
-
Troubleshoot individual USB ports:
- If one USB port is not working as expected, try swapping devices between ports to isolate hardware issues.
- Ensure that the USB devices you’re testing are known to be working correctly.
-
Review additional configuration files:
- If issues persist, check other related configuration files in the Jetson Linux source tree, such as:
Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/
Linux_for_Tegra/source/public/kernel/kernel-5.10/arch/arm64/boot/dts/
- If issues persist, check other related configuration files in the Jetson Linux source tree, such as:
-
Consult official documentation:
- Refer to the NVIDIA Jetson Linux Developer Guide for detailed information on customizing device trees and USB configurations:
https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/
- Refer to the NVIDIA Jetson Linux Developer Guide for detailed information on customizing device trees and USB configurations:
-
Seek community support:
- If problems persist, share your modified DTS file and
dmesg
output on the NVIDIA Developer Forums for further assistance.
- If problems persist, share your modified DTS file and
Remember to test each change incrementally and maintain backups of your original configuration files before making modifications.