Jetson Xavier NX DevKit - Cannot reach UEFI/Boot Menu with NVMe only (SD card removed)

  1. With SD Card only: The DevKit boots successfully, and I can enter the UEFI/BIOS setup screen.

  2. With SD Card + NVMe SSD inserted: The DevKit also boots successfully, and I can enter the UEFI/BIOS setup screen. I can see the NVMe drive listed in the boot options if I’ve previously set up an OS on it.

  3. With NVMe SSD only (SD card removed): The system does not boot. The screen remains blank, and I cannot even reach the UEFI/BIOS setup screen. It seems like the very early boot process fails before UEFI is loaded.

  • Is it indeed possible to boot the Jetson Xavier NX DevKit from an NVMe SSD without any SD card inserted?
  • If so, what could be the reason why I can’t even reach the UEFI/BIOS screen when only the NVMe drive is connected?

Thanks

Hi hibi,

What’s the Jetpack version in use?

I think SD card is not necessary for the boot since there’s QSPI in Xavier NX for bootloader.

Please share the full serial console log of the 3rd case(i.e. only NVMe SSD installed).

JetPack 5.1.5

and the serial console log file.
case3_boot.log (3.2 KB)

[0000.970] I> Found sdcard
[0000.983] W> Error opening sdcard-0
[0000.983] E> Failed to initialize device 6-0
[0000.983] I> ����������������: execution failed
[0000.985] I> ����������������: execution failed
[0000.991] E> Top caller module: NONE, error module: NONE, reason: 0x02, aux_info: 0x00
[0000.999] I> Reset to recovery mode

It seems you boot failed in MB2 that is shows SD card found but it can not be read.

Are you using Xavier NX with SD module or eMMC module?
Please share the result of the following commands on your devkit.

$ lsblk
$ cat /etc/nv_boot_control.conf

It’s SD module (Jetson Xavier NX DevKit)

Case2

$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0          7:0    0    16M  1 loop
mmcblk1      179:0    0  58.3G  0 disk
├─mmcblk1p1  179:1    0  57.6G  0 part
├─mmcblk1p2  179:2    0    64M  0 part
├─mmcblk1p3  179:3    0   448K  0 part
├─mmcblk1p4  179:4    0  32.6M  0 part
├─mmcblk1p5  179:5    0   2.5M  0 part
├─mmcblk1p6  179:6    0    64K  0 part
├─mmcblk1p7  179:7    0     1M  0 part
├─mmcblk1p8  179:8    0     1M  0 part
├─mmcblk1p9  179:9    0     1M  0 part
├─mmcblk1p10 179:10   0   1.5M  0 part
├─mmcblk1p11 179:11   0     1M  0 part
├─mmcblk1p12 179:12   0    64M  0 part
├─mmcblk1p13 179:13   0   448K  0 part
├─mmcblk1p14 179:14   0  32.5M  0 part
├─mmcblk1p15 179:15   0    80M  0 part
├─mmcblk1p16 179:16   0   512K  0 part
├─mmcblk1p17 179:17   0   100M  0 part
├─mmcblk1p18 179:18   0    64M  0 part
├─mmcblk1p19 179:19   0    80M  0 part
├─mmcblk1p20 179:20   0   512K  0 part
├─mmcblk1p21 179:21   0    64M  0 part
└─mmcblk1p22 179:22   0   128M  0 part
zram0        251:0    0 854.1M  0 disk [SWAP]
zram1        251:1    0 854.1M  0 disk [SWAP]
zram2        251:2    0 854.1M  0 disk [SWAP]
zram3        251:3    0 854.1M  0 disk [SWAP]
nvme0n1      259:0    0 119.2G  0 disk
├─nvme0n1p1  259:1    0   115G  0 part /
├─nvme0n1p2  259:2    0    64M  0 part
├─nvme0n1p3  259:3    0   448K  0 part
├─nvme0n1p4  259:4    0    32M  0 part
├─nvme0n1p5  259:5    0    64M  0 part
├─nvme0n1p6  259:6    0   448K  0 part
├─nvme0n1p7  259:7    0    32M  0 part
├─nvme0n1p8  259:8    0    80M  0 part
├─nvme0n1p9  259:9    0   512K  0 part
├─nvme0n1p10 259:10   0   100M  0 part
├─nvme0n1p11 259:11   0    64M  0 part
├─nvme0n1p12 259:12   0    80M  0 part
├─nvme0n1p13 259:13   0   512K  0 part
├─nvme0n1p14 259:14   0    64M  0 part
└─nvme0n1p15 259:15   0   3.7G  0 part

$ cat /etc/nv_boot_control.conf
TNSPEC 3668-300-0000-B.0-1-2-jetson-xavier-nx-devkit-emmc-
COMPATIBLE_SPEC 3668-100---1--jetson-xavier-nx-devkit-emmc-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x19
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

and check the nv_boot_control.conf in SD card.

$ sudo mount /dev/mmcblk1p1 /mnt
### then

$ cat /mnt/etc/nv_boot_control.conf
TNSPEC 3668-300-0000-B.0-1-2-jetson-xavier-nx-devkit-
COMPATIBLE_SPEC 3668-100---1--jetson-xavier-nx-devkit-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE mmcblk0
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x19
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

I’m curious about why it is mmcblk1 rather than mmcblk0.
Is it the SD card connected on the board? Or connected on the module?

For your current use case(boot from NVMe SSD w/o SD connected), please refer to the steps in
Example 2: In this example, you want to boot Jetson Xavier NX SD from an attached NVMe SSD. The SD card does not need to be plugged in. You can also apply this if you don't want to use the emmc on the Jetson Xavier NX emmc. of Workflow 11: Generate images for internal device and external device seperately then flash in README_initrd_flash.txt

Let me share the exact commands as following:

1. create internal for QSPI
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash jetson-xavier-nx-devkit-qspi internal

2. create external for NVMe SSD
$ 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. flash both
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only

Please remember to connect your devkit in force recovery state in each step.

1 Like

SD card connected on module.

followed this and everything is ok now. thanks.

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