I have a custom carrier board. I need to disable USB3.0 speeds (just use USB 2) and set the max-lane-speed and num lanes for the M.2 SSD slot. This is just for power savings. I don’t need to repurpose the other lanes. I have device tree changes that work for Jetpack 5 but I’m struggling to get things working in Jetpack 6.
I have been attempting to follow the instructions at Jetson Orin NX and Nano Series — NVIDIA Jetson Linux Developer Guide 1 documentation and Kernel Customization — NVIDIA Jetson Linux Developer Guide 1 documentation and Bootloader — NVIDIA Jetson Linux Developer Guide 1 documentation .
Here is what I have so far:
I used the pinmux spreadsheet to create 3 dtsi files. I didn’t change any entries in the spreadsheet because I believe that the pinout is the same as the devkit board (and I didn’t need to change the pinout in Jetpack 5). I’m just trying to throttle some things. Let me know if that is an incorrect assumption.
I created two overlay files - one for USB and one for the SSD changes.
/ {
compatible = "nvidia,tegra234";
fragment@0 {
target-path = "/bus@0/pcie@14160000";
__overlay__ {
/* Set to use 1 lane at pcie 1 speed */
max-link-speed = <1>;
num-lanes = <1>;
};
};
};
and
/ {
compatible = "nvidia,tegra234";
fragment@0 {
target-path = "/bus@0/padctl@3520000/usb3/lanes/usb3-0";
__overlay__ {
status = "disabled";
};
};
fragment@1 {
target-path = "/bus@0/padctl@3520000/ports/usb2-0";
__overlay__ {
/delete-property/ usb-role-switch;
};
};
fragment@2 {
target-path = "/bus@0/padctl@3520000/ports/usb3-0";
__overlay__ {
nvidia,usb2-companion = <0>;
status = "disabled";
};
};
fragment@3 {
target-path = "/bus@0/i2c@c240000/fusb301@25";
__overlay__ {
status = "disabled";
};
};
};
These are the changes that are working fine in jetpack 5.
I created a top-level dts file that applies these overlays and updated values in board.conf for PINMUX_CONFIG, PMC_CONFIG, and DTB_FILE.
I think that I may need to update the BPFDTB_FILE as well. But I am unsure and it is unclear to me from the documentation what changes I would need to make to which files.
When I flash the device I can see in the logs that it is finding my custom dts/dtsi files. And I can look at the decompiled dtb output on the jetson itself. I can run dtc -I fs -O dts /sys/firmware/devicetree/base -o out.dts . When I look at out.dts, I can see my overlay fragments. However, lspci shows the SSD running at full speed with 4 lanes and lsusb -t shows that the USB ports are still functioning at USB3 speeds.
I would really appreciate any help to point me in the right direction.

