How to enable USB3 interface as a Host


We have a custom carrier board for the Xvavier AGX module that doesn’t have a USBC PD and only has the USB3 traces pinned out to a USB 3.0 Type A connector. There is no ESATA connections in our custom carrier board.

How can we enable this USB3 as a USB3.1 host?

lsusb returns nothing.

You would need to modify device tree per hardware design. Please read Porting USB in adaptation guide:

Hi DaneLLL,

Thank you for replying. I’ve been trying to modify the device tree similar to what we found in the following post.

Our modifications are as follows.

1. under ucsi_ccg 
        ucsi_ccg: ucsi_ccg@8 {
-            status = "okay";
+           status = "disabled";

2. under xusb_padctl@3520000, made sure mode is set to "host" and usb3 ports need its companion usb2 port.
    xusb_padctl: xusb_padctl@3520000 {
        ports {
            usb2-3 {
               mode = "host";
               status = "okay";
            usb3-3 {
		status = "okay";
		nvidia,usb2-companion = <0x03>; 
                usb3-gen1-only = <0x01>

3. Removed all "extcon*" property under xhci@3610000 and xudc@3550000.

We could compile the dts file to a dtb file. However, I am not sure how to use dd or so that our modified dtb is applied.

Please put the built dtb to


and do clean re-flash.

Hi DaneLLL,

I think I got the USB working. Here are the steps:

  1. Decompile the original dtb file under the module’s /boot/dtb into a dts file.
  2. Make the necessary changes: only disable ucsi_ccg@8 and changing the USB 2 mode to host.
  3. Recompile the edited dts file into another dtb file.
  4. Replace the tegra194-p2888-0001-p2822-0000.dtb file under Linux_for_Tegra/kernel/dtb.
  5. Use the ./ tool to reflash the kernel dtb

Thank you for your help!

Glad to know issue resolved, thanks for your sharing!