NVMe does not appear in UEFI boot menu after flash


I have followed workflow 10 as specified in README_initrd_flash.txt. I completed the below 3 steps to generate the QSPI image, generate the NVMe image, and flash both devices, respectively:

1.) sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash jetson-xavier-nx-devkit-qspi internal
2.) sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml --external-only --append jetson-xavier-nx-devkit external
3.) sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only

All image creation and flash steps proceeded successfully. I am using the pre-production SOM on the NX dev kit and did not have an SD card plugged in

Despite the flash completing successfully, when I reboot, the bootloader dropped directly into the UEFI shell. I observed that the NVMe was not selectable as a boot device, even though it is shown in the PCI list.

If I put a good SD card back in, I am able to boot from that. I can then mount the NVMe and see that all the partitions were flashed properly

Are there steps I am missing to make the UEFI bootloader, which is presumably being loaded from the QSPI, “see” the NVMe as a boot option??

Any help would be appreciated

Hi evan.damiano1,

Are you using NVIDIA devkit or custom board?
Is that Xavier NX devkit with SD slot module?

It seems you are using Jetpack5.0.1(R35.1) with Workflow 10: Example 2.
Do you put SD card in the slot when you do any of the above steps?

Do you want to use the board with only QSPI and NVMe drvie?

Hi Kevin,

Yes this is the NVIDIA dev kit. You are correct that we are using JetPack 35.1.0, workflow 10 example 2.

Yes the Xavier NX SOM has an SD card slot but I did not have a card in it during this exercise (per the statement in workflow 10 saying this is OK)

Again no, I did not populate the SD card. That is correct, we want to use the board with only QSPI and NVMe only and booting directly from NVMe, however as I mentioned this was not listed as a selectable boot device on UEFI boot manager menu, even though I confirmed the partitions on the NVMe (including esp, kernel and app) had been flashed successfully.


Could you help to provide the screenshot of the UEFI menu?
and also the serial console log after power on the board for further check.

Hi Kevin,

Attached are the flash.log (taken from minicom while peforming step 3 of workflow 10 example 2, calling ‘sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only’). Also attached are boot.log which is the serial debug output of board booting afterwards (with no SD card in it).

You may notice our scheme calls for renaming APP partition to RECOVERY and adding some other custom partitions we are using for subsequent installation steps. I modified the header file in the L4TLauncher application to use the same partition names. I also changed this reference in the flash scripts in BSP where necessary.

Hopefully you can bear with me there and understand this scheme is working fine when we use an SD card. It is the NVMe device that does not appear to be detected by the L4TLauncher. A mass storage controller device is indicated when I run ‘pci’ from UEFI shell, this entry disappears when I remove the NVMe so I think that is the drive.

Can you please advise if you have any insight as to why device may not be detected? Thanks

boot_log (11.5 KB)
flash_log (61.3 KB)

Hi Kevin,

Just in case it is helpful, I wanted to add the specific NVMe I am using is a Micron 2100AI M.2 SSD. Would appreciate if you have any insight why it isn’t showing up in the boot manager menu


We have verified on Xavier NX devkit with QSPI+NVMe (w/o SD card connected) and can not reproduce the same issue as yours.

$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash jetson-xavier-nx-devkit-qspi internal
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_external.xml --external-only --append jetson-xavier-nx-devkit external
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only

Could you help to revert these changes and do the same flash process to check if the NVMe still not visible in UEFI list? If it could be seen in the list, and we could try adding them back one-by-one to debug.

Hello Kevin,

I have performed these steps, trying the 3 steps you mention on a clean BSP with the pre-built UEFI bootloader binaries and clean configuration files like p3668.conf.common and flash_l4t_external.xml file. My result is unchanged. The flash proceeds successfully and the NVMe is setup with the partitions detailed in the flash_l4t_external.xml file, but it is no seen as a boot option in the boot manager menu on the UEFI bootloader.

Can I ask for the exact model SSD you are using? I am going to overnight it so I can repeat the experiment on the actual hardware you are using.

Is there any other reason why the default UEFI bootloader which comes with Jetpack 35.1.0 would not be able to see this drive? This is a hot issue for us, we need to be able to direct boot from the NVMe because the 16GB SD card / eMMC is too small for our application. Appreciate your help in resolving

what is the proper way to flash nx devkit without sdcard? knowing the number of sectors + 512 sector size? Tried three lines shared above but it won’t work

We are using PCIe SSD 110S & 112S | PCIe M.2 SSDs - Transcend Information, Inc. .
Sharing the screenshot as following with you.

Could you help to update debug UEFI image to enable logs in UEFI for further check?

Hi Kevin

I am attaching the boot up log with the UEFI bootloader debug binary. Please let me know if you see any clues regarding not being able to detect the NVMe, nothing looked obvious to me.

I have ordered the NVMe you mentioned from Transcend, it will be here on Friday and I will repeat the test again, but since both NVMes are Gen3 PCIe M.2 I’m not confident that will change the behavior at all.

Did you make any other changes to your 35.1.0 JetPack or did you just run apply_binaries.sh and the 3 commands you provided. Did you put any special kernel or rootfs on (I’m thinking that wouldn’t matter because the UEFI bootloader hasn’t loaded the kernel at this time the boot manager menu is up)
bootloader_debug_log (62.5 KB)

Hi Kevin

Could you also please provide the output of gdisk -l for your NVMe after the flash process so that we can compare that the disk partitions look the same. Thanks

We didn’t modify anything in kernel or rootfs, just using above 3 command on Xavier NX devkit with only NVMe connected.

You could also refer to the result of df -h in our case.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  117G  5.5G  107G   5% /
none            3.4G     0  3.4G   0% /dev
tmpfs           3.4G   36K  3.4G   1% /dev/shm
tmpfs           686M   19M  668M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
tmpfs           686M   76K  686M   1% /run/user/1000

All, please be advised that it seems to matter which manufacturer NVMe is used. I did not have any luck getting the Micron 2100AI M.2 SSD (NVMe Gen3 x4) recognized as a bootable drive in the UEFI boot manager menu. However when I purchased the SSD Kevin is using it worked just fine

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