Custom USB Connections Not Recognized After Flashing JetPack 5.1.3 (Jetson Orin NX 8GB, Device Tree Modified)

Hello,

I’m using Jetson Orin NX 8GB on a custom carrier board. I’ve successfully flashed JetPack 5.1.3, but USB devices are not recognized at all after boot. No power or data communication is observed on any USB ports.

System Details:

Module: Jetson Orin NX 8GB
  • JetPack Version: 5.1.3
    
  • Carrier Board: Custom
    
  • Boot Mode: Internal SSD (custom board)
    
  • USB tree: Hub removed, USB signals routed directly to connectors
    
  • Device Tree modified
    

USB Connections:

USB-C Port:

The USB-C port is identical to the original carrier board design and supports both USB2.0 and USB3.x. According to Jetson-Orin-Nano-DevKit-Carrier-Board-Specification_SP-11324-001_v1.2 (Table 2-1, page 11), the USB2.0 lines are likely used during recovery mode.

USB-A Ports (Modified):

Port 1: Originally passed through a USB 3.2 Gen2 hub IC and connected using:

  • USB2.0: 115:USB1_AP_N / 117:USB1_AP_P
  • USB3.x: 161:USBSS0_RX_N / 163:USBSS0_RX_P
    166:USBSS0_TX_N / 168:USBSS0_TX_P

In our board, we removed the hub and directly connected these signals to a single USB3.1 Type-A port.

Port 2:
We reused the following previously unused or WiFi-assigned signals:

  • USB2.0: 121:USB2_AP_N / 123:USB2_AP_P
  • USB3.x: 51:USBSS2_RX_N / 53:USBSS2_RX_P
    57:USBSS2_TX_N / 59:USBSS2_TX_P

These are now connected directly to the second USB3.1 Type-A port.

What I’ve already done:

I have modified the following device tree files accordingly:

  • Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi
    
  • Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0-fixed-regulator.dtsi
    

I’m attaching the following logs for your reference:

  • Flash log
    
  • UART boot log (serial console output)
    

My Questions:

  1. Are there any other required device tree changes to support direct USB connections (bypassing USB hub IC)?
  2. Do I need to modify any pinmux or regulator settings for USBSSx and USBx_AP_x signals beyond what’s in the two .dtsi files above?
  3. Do I need to update any overlay files (.dtbo) or other locations to reflect the changes?

Any advice, reference device tree examples, or pointers would be highly appreciated.

Best regards,

Sho Izumi
UARTlog.txt (63.0 KB)
flashlog.txt (277.4 KB)
custom-pinmux.zip (7.3 KB)
tegra234-p3768-0000-dtsi.zip (3.1 KB)

Hi,

Please directly convert your final dtb back to dts file by using dtc tool. This provides the full info of what the final device tree looks like.

Your dtsi file does not provide that.

Also, what does that mean “The USB-C port is identical to the original carrier board design” ? Are you talking about you are also fusb301 controller on your board? Or you don’t know what I am talking about here?

Hi,

Thank you for your response.

Regarding the USB-C port:
Yes, we designed the USB-C portion of our custom carrier board according to the NVIDIA Orin Nano Design Guide and Jetson Orin Nano DevKit Carrier Board Specification (SP-11324-001).
We followed the reference design, including the use of the FUSB301 USB Type-C controller.
So to clarify, when I said “the USB-C port is identical to the original carrier board design,” I meant that we implemented the same circuit and used the same components (including FUSB301) as specified in the reference materials.

I will extract the final DTB into DTS using the dtc tool as you suggested and follow up with the result.

custom_tegra234-p3767-0001-p3509-a02.zip (58.1 KB)

Then what is the zip file you just attached? Is that the dtb in use? Seems not.

Yes, the .zip file I attached contains the actual .dtb file currently in use.
I compressed it because the forum system does not allow direct upload of .dtb files.
Please unzip it to access the .dtb file inside.

Let me know if you need it in another format.

Hi,

Why are you using p3509 as base dtb? p3509 is Xaiver NX devkit carrier board.

That carrier board is not using fusb301 at all.

I’ve reconfigured the setup using the correct tegra234-p3767-0000-p3768-0000-a0.dtb as the base, and now the USB Type-C port is working properly. Thank you for the guidance.

However, the USB Type-A ports are still not functioning — there is no power output, and devices are not detected at all.

Do you have any ideas or suggestions on what I should check next?

Below is the DTS file decompiled from the DTB currently in use, for your reference.
custom_tegra234-p3767-0000-p3768-0000-a0.zip (54.5 KB)

Share your schematic of that part. This is far better than your description.

No power output means vbus has some issue.

Thank you for the feedback.

You’re right — I agree that sharing the schematic is more helpful.
I’ve attached the relevant portion of the schematic that includes the USB Type-A power and signal routing.

Please let me know if any parts are unclear or if additional sections are needed.
Custum_p15.pdf (64.2 KB)

Where is that USB3_PWR_EN wired to?

The USB3_PWR_EN signal is connected to Jetson pin P118 on our custom carrier board.
Custum_p5.pdf (68.6 KB)

What is the exact thing you are doing for the vbus regulator?

  	gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(H, 118) GPIO_ACTIVE_HIGH>; // 例

There is no such pin at all.

Thank you for pointing that out — you’re absolutely right.
There is no such pin as TEGRA234_MAIN_GPIO(H, 118). That was a mistake on my part.

I believe the correct GPIO for controlling the VBUS regulator (USB3_PWR_EN) is:

TEGRA234_MAIN_GPIO(X, 4)

This should correspond to GPIO01, which maps to pin 118 on the Orin NX module according to the official pinmux spreadsheet.

Could you please confirm if the following device tree setting is appropriate for this use case?

gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(X, 4) GPIO_ACTIVE_HIGH>;

If there’s a better or more appropriate way to define the GPIO for VBUS control, I’d appreciate your guidance.

Your comment does not match to what you said.

You firstly said “USB3_PWR_EN signal is connected to Jetson pin P118”, but that one is totally not TEGRA234_MAIN_GPIO(X, 4) at all. GPIO X.04 is for UART…

You should read pinmux spreadsheet and it will tell you how to map the pin.