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

  1. Incorrect modifications to the device tree source file
  2. Syntax errors in the modified DTS file
  3. Incomplete configuration changes across multiple files
  4. Hardware limitations or incompatibilities with the custom board
  5. Conflicts with existing USB configurations

Troubleshooting Steps, Solutions & Fixes

  1. 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.
  2. Disable unnecessary components:

    • Ensure that the fusb_p0 node is disabled in the DTS file:
      fusb_p0: fusb30x@28 {
          status = "disabled";
      };
      
  3. 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";
              };
          };
      };
      
  4. 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.
  5. 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
      
  6. 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.
  7. 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/
  8. 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/
  9. Seek community support:

    • If problems persist, share your modified DTS file and dmesg output on the NVIDIA Developer Forums for further assistance.

Remember to test each change incrementally and maintain backups of your original configuration files before making modifications.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *