Device Tree Overlay Disables fusb301 but USB Not Updated

Dear Jetson Hardware Experts,

With SDK Manager, I installed JetPack 6.2.1 and I am able to run a Jetson Orin NX 8G with a carrier board devkit.
I used the following command:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" --showlogs --network usb0 p3509-a02-p3767-0000 external

Now I am trying to modify the device tree.
I managed to disable the fusb301, but I cannot manage to modify the USBs.

In the file p3509-a02-p3767-0000.conf, I added the line:

OVERLAY_DTB_FILE+=",mycustomdtb.dtbo";

I created mycustomdtb.dtsi in the JetPack kernel folder:

/dts-v1/;
/plugin/;

/ {
    overlay-name = "mycustomdtb";
    compatible = "nvidia,p3768-0000+p3767-0003";

    fragment@0 {
        target-path = "/";

        __overlay__ {
            bus@0 {
                padctl@3520000 {
                    pads {
                        usb3 {
                            lanes {
                                usb3-2 {
                                    nvidia,function = "xusb";
                                    status = "okay";
                                    #phy-cells = <0x0>;
                                };
                            };
                        };
                    };
                    ports {
                        usb3-0 {
                            status = "okay";
                            nvidia,usb2-companion = <0x0>;
                        };

                        usb3-1 {
                            status = "okay";
                            nvidia,usb2-companion = <0x1>;
                        };

                        usb3-2 {
                            status = "okay";
                            nvidia,usb2-companion = <0x2>;
                        };
                    };
                };
                usb@3610000 {
                    phys = <0xfb 0xfe 0xff 0x100 0xfc &{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
                    phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1", "usb3-2";
                };
                i2c@c240000 {
                    fusb301@25 {
                        status = "disabled";
                    };
                };
            };
        };
    };
};

Finally, I run the command:

./dtc -I dts -O dtb -o ./dtb/mycustomdtb.dtbo -@ mycustomdtb.dtsi

After flashing the Jetson, there are no more fusb301 lines in dmesg.

With the command:

dtc -I fs -O dts /sys/firmware/devicetree/base | less

I can see that fusb301@25 is indeed disabled, but the USBs are not affected.

Could you please tell me what I missed ?

I used this method because I wasn’t able to apply these changes by modifying the source DTB files. I tried different methods, and for now, this is the only one that works.

Hi,

I don’t think you need to rely on such method.

Instead, you should tell us how you tried to update the device tree. It will help tell why your previous method fails.

I followed the instructions from this link:

But without success, especially since I want to modify something other than the Jetson 40-pin header.

I searched through the NVIDIA forum, I looked for tutorials, but found nothing.

I modified the DTB files in /Linux_for_Tegra/kernel/dtb/
I modified the DTB files in /Linux_for_Tegra/rootfs/boot/

Even after flashing the Jetson, with or without using apply_binaries.sh, the changes are wiped out.

The method I described is simple and works in the case of the fusb301.

I want to disable the fusb301, enable usb3-2, and link usb3-0 to usb2-0 and usb3-1 to usb2-1.

Are you able to show me a proper and detailed method to do this ?

What “DTB files” did you modify there?

And how did you modify it?

Also, one more point I would like to know, why are you picking p3509-a02-p3767-0000 to use?
This board config is basically a deprecated one for Orin NX to use Xavier NX carrier board.

In kernel/dtb/, there are DTB files such as tegra234-p3768-0000+p3767-0000-nv.dtb.
I went through the whole series tegra234-p3768-0000+p3767-000*, the ones that contain the parameters I’m interested in.

I use the command:

./dtc -I dtb -O dts -o tegra234-p3768-0000+p3767-0000-nv.dtsi ./dtb/tegra234-p3768-0000+p3767-0000-nv.dtb

Then I use an editor to modify the parameters, for example changing “okay” to “disabled”.

Finally, I use the command:

./dtc -I dts -O dtb -o ./dtb/tegra234-p3768-0000+p3767-0000-nv.dtb tegra234-p3768-0000+p3767-0000-nv.dtsi

I have a custom carrier board that includes an HDMI output, which is the main reason why I’m using p3509-a02-p3767-0000.conf.

The problem here is you are using a dtb that may not be the one you are using on your board.

Read /boot/dtb after your boot up to confirm what dtb is in use.

Hello, I will stick with the method from my first message.
It was a typo. Now I’m able to do what I wanted.
Thank you for your replies.

I would still suggest you should learn some basic dtb method first.

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