Failed to boot from NVMe - Xavier NX Devkit

Hi,

I want to flash the BSP on NVMe.

I have followed the steps from the section “Flashing to an NVMe Drive” from the below link
1.To set up an NVMe drive manually for booting.
2.To set up an NVMe drive manually for using as root filesystem.
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3274/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E0PM0HA

I have attached the log of the same.
Nvme_boot_setting_Log.txt (93.0 KB)

But it is failing to boot with devkit.
Here is the screenshot of the failure.

Whereas when I put the same NVMe and Xavier NX module in Custom board. It gets into bash script
Here is the screenshot.

Can you please let us know what is the issue here.

Why are you referring to document for 32.7.4 while you are working with 35.4.1?
You should do this:
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/FlashingSupport.html?highlight=cpio#to-set-up-a-flash-drive-manually-for-booting

Please also don’t put any log as pictures or screenshots.
They are not preferred.
https://jetsonhacks.com/2019/04/19/jetson-nano-serial-console/

Hi Dave,

Thank you for the link.

I followed the steps mentioned in that developer guide but it is failing during the " Step 1: Start the host connected device flashing process" with the below error
Error: Could not stat device /dev/nvme0n1 - No such file or directory

I have tried this on Xavier NX devkit. NVMe was detectable on both lspci and lsblk.
Below is the host log , nvme detection log and dmesg
devkit_hostlog_R35_4_1.txt (90.2 KB)
nvme_detection_log.txt (2.0 KB)
devkit_dmesg_log.txt (70.2 KB)

Please let me know if anything I am missing here.

@vbhm what is the exact issue you want to ask here?

If you want to know why flash got failure on devkit, then share the UART log from the devkit during flash.
You have been in this forum for 4 years but why are you still not aware of such basic debug method?

Hi Wayne,

Ya I know that I need to share UART log for basic debugging. But I am unable to capture the UART log when the device is in recovery mode. That is the reason why I shared only host log.

We are trying to boot from NVMe with Xavier NX devkit.

I followed the steps mentioned in that developer guide provided in the previous link provided by Dave. But it is failing during the step " Step 1: Start the host connected device flashing process" with the below error
Error: Could not stat device /dev/nvme0n1 - No such file or directory

How did you connect the NVMe drive to your host PC when you were trying to build the system on it?
Directly onto the M.2 socket or some kinds of disk enclosures?

We have connected directly onto the M.2 socket.

Then are you sure it’s being recognized as /dev/nvme0n1 on your host PC?
Also, you should use nvme0n1 instead of nvme0n1p1 for the —direct option.

Hi Dave,

I have one confusion here.
when you mention host PC do you mean the Linux machine which we are using for flashing or the target device (Devkit).

Below are the steps I am following.

  1. I Have confirmed the device (Devkit) can boot successfully from eMMC.
  2. Connected NVMe on M2.socket on devkit and verified the below

NVMe drive’s device name
nvidia@nvidia-desktop:~$ lsblk -d -p | grep nvme | cut -d\ -f 1
/dev/nvme0n1

nvidia@nvidia-desktop:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 14.7G 0 disk
├─mmcblk0p1 179:1 0 14G 0 part /
├─mmcblk0p2 179:2 0 64M 0 part
├─mmcblk0p3 179:3 0 448K 0 part
├─mmcblk0p4 179:4 0 32.6M 0 part
├─mmcblk0p5 179:5 0 2.5M 0 part
├─mmcblk0p6 179:6 0 64K 0 part
├─mmcblk0p7 179:7 0 1M 0 part
├─mmcblk0p8 179:8 0 1M 0 part
├─mmcblk0p9 179:9 0 1M 0 part
├─mmcblk0p10 179:10 0 1.5M 0 part
├─mmcblk0p11 179:11 0 1M 0 part
├─mmcblk0p12 179:12 0 64M 0 part
├─mmcblk0p13 179:13 0 448K 0 part
├─mmcblk0p14 179:14 0 32.5M 0 part
├─mmcblk0p15 179:15 0 80M 0 part
├─mmcblk0p16 179:16 0 512K 0 part
├─mmcblk0p17 179:17 0 100M 0 part
├─mmcblk0p18 179:18 0 64M 0 part
├─mmcblk0p19 179:19 0 80M 0 part
├─mmcblk0p20 179:20 0 512K 0 part
├─mmcblk0p21 179:21 0 64M 0 part
└─mmcblk0p22 179:22 0 101M 0 part
zram0 251:0 0 856.8M 0 disk [SWAP]
zram1 251:1 0 856.8M 0 disk [SWAP]
zram2 251:2 0 856.8M 0 disk [SWAP]
zram3 251:3 0 856.8M 0 disk [SWAP]
nvme0n1 259:0 0 1.8T 0 disk
└─nvme0n1p1 259:2 0 41.9G 0 part

  1. Connected the devkit with NVMe connected on M2.slot to the host PC (Linux machine) through USB with Force Recovery Mode and trying to run the below command
    sudo BOARDID=3668 BOARDSKU=0001 FAB=300 ./tools/kernel_flash/l4t_initrd_flash.sh -c tools/kernel_flash/flash_l4t_external.xml --external-device nvme0n1p1 --direct nvme0n1 jetson-xavier-nx-devkit-emmc external

I don’t have M2 socket on my Linux host machine. So, I am trying to do it by above steps which I mentioned.

I mean the PC used to flash the device, not the device itself.

I mean connect the NVMe drive directly to your host PC.

Then you should know how the NVMe drive is being recognized on your host PC, and use that device name for the --direct option.
If you are connecting it through something like a disk enclosure, then mostly it will come up as /dev/sda, /dev/sdb, etc. /dev/nvme0n1 will only come up when it’s connected directly to an M.2 socket.

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