Jetson Orin Nano in Jetpack 7.2 R39.2: NVMe SSD on PCIe C7 is not detected/bootable in UEFI stage, but works normally after Linux boots

Hi NVIDIA team,

I am working on a Jetson Orin Nano setup (P3767 module + P3768 carrier ).
L4T / JetPack version: [39.2]

I have an NVMe SSD connected to PCIe C7 (pcie@141e0000). The SSD is not detected during the UEFI boot stage, so I cannot boot from it. After Linux boots, the SSD is detected and works normally (lspci, nvme list, etc.). This suggests the hardware and kernel-side PCIe are fine, and the issue is likely UEFI-stage PCIe enumeration or boot order.

However, in R36.4, after flashing, there is no problem. In R36.4, the SSD is detected in UEFI and can boot normally. So the issue appears to be version-specific.

Current configuration:

  • ODMDATA="gbe-uphy-config-8,hsstp-lane-map-3,hsio-uphy-config-0" (default C7 x2)

  • BPFDTB_FILE="tegra234-bpmp-3767-0000-a02-3509-a02.dtb"

  • DTB_FILE=tegra234-p3768-0000+p3767-0000-nv.dtb

  • OVERLAY_DTB_FILE includes:

    • L4TConfiguration.dtbo

    • tegra234-carveouts.dtbo

    • tegra-optee.dtbo

    • T234SetFmpImageTypeGuid.dtbo

Device tree C7 node (from decompiled DTB):

dts

pcie@141e0000 {
    compatible = "nvidia,tegra234-pcie";
    status = "okay";
    num-lanes = <0x00000008>;   /* seems incorrect for C7? */
    phys = <0x0000011c 0x0000011d>;
    phy-names = "p2u-0", "p2u-1";
    linux,pci-domain = <0x00000007>;
    ...
};

I suspect num-lanes = <8> is wrong, but I am not sure if it is overridden by ODMDATA.

Observations:

  • In the UEFI Boot Manager, the NVMe SSD does not appear (or cannot be selected as a boot device).

  • After Linux boots:

    • cat /proc/device-tree/bus@0/pcie@141e0000/status → okay

    • lspci shows the NVMe device.

Questions:

  1. What is the exact procedure to enable PCIe C7 and make UEFI enumerate an NVMe SSD for boot?

  2. Is modifying L4TConfiguration.dtbo’s DefaultBootPriority to something like "nvme,usb,emmc,sd,ufs" the correct approach? Are there other UEFI settings required?

  3. For C7, what should num-lanes be when using gbe-uphy-config-8? Should it be 2? Does the DTB need to be changed manually, or is it handled by ODMDATA?

  4. Does the BPMP DTB (tegra234-bpmp-3767-0000-a02-3509-a02.dtb) need changes for C7? How can I verify the BPMP-side configuration?

  5. Are there any known UEFI patches or timeout parameters for Orin Nano C7 NVMe boot? For example, NVMe detection timeout, PHY timeout, or PCIe enumeration limits.

  6. Is there an official guide for C7 x2 vs C7+C9 x1 configurations? If using gbe-uphy-config-9, what else must be changed in ODMDATA, BPMP DTB, and kernel DTB?

Any guidance or official steps would be greatly appreciated. I can provide full DTB, dmesg, and UEFI logs if needed.

Thanks.

Hi,

Want to clarify your question first because I saw some conflicts problems in your comment.

Are you talking about using NV devkit or not? Your comment sounds like your are using NV devkit. But what you are doing is not because Devkit does not need you to do anything to enable C7.

Yes, when I connect the SSD with the OS to C4 and another SSD to C7, I can boot into the system and access it from within the system. But when I connect the SSD with the OS to C7 and connect an SSD without an OS to C4, I can’t boot into the system. It’s probably a boot-stage configuration issue, but all the settings are at their defaults.

Hi,

Please just answer me one question. Are you using NV devkit or not? That is the only info I need.

NV devkit

I unzipped the system files again and then performed the programming. It works normally now. It seems that the configuration file was modified.

Yes, for NV devkit, everything is already configured correctly in the default BSP.

The more items you try to configure, it has more chance you make something not work…