Non-working USB 2.0 on a custom carrier board (kernel issue) – Jetson AGX Orin

Hello everyone,

For my current project I designed a custom carrier board for the Jetson AGX Orin SOM. While working on the design I followed the recommendations in NVIDIA’s documentation, as well as solutions from commercial boards and advice from experienced developers.
For comparison and testing I have:

  1. the original Jetson AGX Orin DevKit,
  2. a Jetson AGX Orin SOM on a LEETOP carrier board,
  3. a Jetson AGX Orin SOM on my carrier board.

Preparation

Using NVIDIA’s Excel pinmux tool I generated the files pinmux.dtsi, padvoltage.dtsi and gpio.dtsi.
JetPack 6.0 for Jetson AGX Orin sources as the base OS. As the docs instruct, I copied the generated files to /bootloader/generic/BCT/ and created two board-config files:

  • jetson-agx-orin-devkit-myboard.conf
  • p3737-0000-p3701-0000-myboard.conf.common
    each pointing to the new DTSI files.

Flashing & observations

I flashed every board with:

sudo ./flash.sh jetson-agx-orin-devkit-myboard mmcblk0p1

A) Jetson AGX Orin DevKit

Boots fine. USB 2.0 and all other interfaces work flawlessly. I dumped the running device-tree for reference (devicetree_jetson_devkit.dts).
devicetree_jetson_devkit.dts.txt (393.5 KB)

B) SOM + LEETOP carrier

After the OS boots and the first-boot wizard appears, USB is dead. The LEETOP board exposes two USB 3.0 ports that I left unchecked in the Excel sheet—this is probably the reason. I finished first-boot via UART and dumped the DT (devicetree_p3737-custom.dts).
devicetree_p3737-custom.dts.txt (393.5 KB)

C) SOM + my carrier

Same symptom as with the LEETOP board, but here I am sure I routed a USB 2.0 port. The keyboard is powered, yet stops working as soon as the kernel loads. Again I configured the system over UART and saved the DT (log_dev_carrier).
log_dev_carrier.txt (367.4 KB)

Debugging so far

With a scope I probed D+, D- and 5 V:

  • Until the kernel starts loading there is clear USB 2.0 activity (see screenshot SDS2204X_Plus_PNG_1).
    Hardware fault seems unlikely.
  • Right after the kernel begins to load the bus goes silent and never recovers in Linux, which points to a driver or DT issue.

Comparing all three device-trees I can’t spot any meaningful differences in the USB 2.0 node definitions, so the root cause is still unclear.

Questions

  • Did I miss a required step?
  • Is there something else I should enable or modify?
  • Could there be a mistake in my board configuration?

Any hints would be greatly appreciated. All relevant files are attached below.

Thanks in advance!
p3737-0000-p3701-0000-myboard.conf.common.txt (3.7 KB)
jetson-agx-orin-devkit-myboard.conf.txt (3.1 KB)

Hi,

Just to clarify some points first because you are actually doing something that sound not right there.

  1. You don’t need to share us the NVIDIA devkit device tree. We wrote those things. We know how that things work and we are sure it would work on NV devkit.

  2. You should not modify things for “Leetop” carrier board when you are not working for Leetop. It is their engineer’s work to provide you a BSP with device tree supports that carrier board.

  3. Modifying device tree for USB requires to check schematic for their actual design. How the lane got wired and whether any GPIO to control something all matter for the software.
    Things won’t just work by using eyes to count how many usb ports are out there. So back to (2), if you don’t have the schematic of Leetop board, you won’t write a 100% correct device tree there.

Back to those things you provided. I don’t need those"*.conf" things here. They are not the main files to check. If you are sure the device tree you are writing would be flashed to the board, then that conf does not matter.
We need you to provide out your schematic for the USB part first.

Then you should read this document to modify device tree to enable your ports.
If you are using jetpack6, then

if using jetpack5, then

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.