Flashing NVMe with workflow 11 fails in Jetpack 5.1.1


I am trying to flash the NVMe with initrd flash the first time after upgrading to 5.1.1

The first stept works while the seconds step returns an error which I do not understand.

This is the first step:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh jetson-xavier-nx-devkit-qspi internal

I am running this command second:

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -S 15GiB --showlogs -c ./bootloader/t186ref/cfg/flash_l4t_t194_nvme_rootfs_ab.xml --external-only jetson-xavier-nx-devkit-nvme external 

Attached board config:
jetson-xavier-nx-devkit-nvme.conf (575 Bytes)

And partition config:
flash_l4t_t194_nvme_rootfs_ab.xml (10.1 KB)

The first command runs without error while the second returns this:

[   0.8037 ] Updating mb1-bct with storage information
[   0.8060 ] tegrabct_v2 --chip 0x19 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.8069 ] There is no MB1-BCT device type corresponding to pt type: 12
Error: Return value 2
Command tegrabct_v2 --chip 0x19 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
cp: cannot stat 'signed/*': No such file or directory
cp: cannot stat 'signed/flash.xml.tmp': No such file or directory

There is no signed folder. Just the flash.xml.tmp inside the bootloader folder.

Hi seeky15,

Are you using Jetson Xavier NX-SD devkit from NVIDIA?
It should not be production module.

Are that conf and xml created by yourself?
It seems we don’t have these files…

Could you help to provide the full log of host side when you run the second command for further check?

What’s the physical size of your NVMe drive?

Have you tried to use jetson-xavier-nx-devkit instead of jetson-xavier-nx-devkit-nvme?

Hey @KevinFFF

This is the first time I am trying this with the production module in the devkit.
I have attempted to fix the issue by adding another config with the p3667-0001 module. Unfortunately the issue is still the same.

I assume I need four different board configs for flashing the 3 way process on production/devkit modules?
One set for each soc type 0000 and 0001 and configs for qspi and nvme?

The issue occurs when I set the EMMC_CFG value to the config I made for the NVME.
I have tried setting it to jetson-xavier-nx-devkit then the command runs through but the secureflash.xml is wrong.
It includes a part to flash QSPI and one to flash an SD card.

I checked what’s generated with the old 5.0.2. There I get a flash.xml file which only includes the NVMe.
That does not seem to work with 5.1.1 anymore since the system tried to generate a completely new flash package even though “–append” is specified.

Either I am doing something wrong or the workflow 11 does not work anymore in 5.1.1?

Could you help to use the following command w/o any change in BSP packager instead of your second one for the production module on the devkit+NVMe?

$sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -S 15GiB --showlogs -c tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml --external-only jetson-xavier-nx-devkit external

Please also provide the full host side log.

Hey @KevinFFF

it seems I misunderstood the way the initrd flash tool works due to the many bugs in the previous version.

Assume I want to flash the QSPI and the NVMe attached to the device.

I tried it with the following command and it works (But it is not listed as a workflow as always --external-only is used)

I created a conf with the EMMC_CFG set to the qspi.xml file so that no SD or EMMC is flashed. Then i added the -c command to point to my nvme.xml. Is that a valid approach?

            ROOTFS_AB=$AB ROOTFS_RETRY_COUNT_MAX=3 $L4T_DIR/tools/kernel_flash/l4t_initrd_flash.sh 
            --external-device nvme0n1p1 \
            -S 15GiB \
            --showlogs \
            -c $L4T_DIR/bootloader/t186ref/cfg/flash_l4t_t194_nvme_rootfs_ab.xml \
            jetson-xavier-nx-devkit-0001-nvme external

With this config:

source "${LDK_DIR}/p3668.conf.common";


# Rootfs A/B:
if [[ "${ROOTFS_AB}" == 1 && "${ROOTFS_ENC}" == "" ]]; then
# Disk encryption support:
elif [[ "${ROOTFS_AB}" == "" && "${ROOTFS_ENC}" == 1 ]]; then
# Rootfs A/B + Disk encryption support:
elif [[ "${ROOTFS_AB}" == 1 && "${ROOTFS_ENC}" == 1 ]]; then

Forgot to answer your questions. Yeah I’ve added new files for our custom board and for the devkit. The guide told me to create my own xml for the nvme. Since it seemed weird to not have the xml file referenced in the conf, I’ve added the “EXTERNAL_CFG” flag to the file. I am sourcing the conf before calling the flash command and adding the correct xml then.

It seems like the current append task does not only append but also recreate the whole thing. That’s why it failed with my conf where the EMMC_CFG was pointing to the nvme.xml. I am not sure why it worked in the previous release though…maybe a bug in 5.0.2, maybe one in 5.1.1…I don’t know. The documentation did not change.


I want to make exactly same than you.

Did you find the correct method ?

Thank’s in advance

Hey @romain.lesne the above method works for me.

Does the way documented by Nvidia not work for you?

Hey @seeky15,

Thank’s for your reply.
I read some documentation and your post and I succeeded.


I am back to this issue as nothing seems to work to flash Xavier NX Devkit with NVMe.
The command above does not seem to flash correctly. It must have worked because of some old remains…

As the commands in the guide and the readme have been replaced by orin commands:
What is the correct command to flash the Xavier NX Devkit with SD removed to NVMe with A/B support?
I want to flash the QSPI, the NVMe with A/B partitions.

Have you referred to Workflow 11 - 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.

The command should be like the following:

$sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_nvme.xml -S 50GiB --showlogs --external-only jetson-xavier-nx-devkit nvme0n1p1

Hey @KevinFFF doesn’t --external-only omit flashing the QSPI?

Yes, –external-only will omit flashing the QSPI.

There should be 3 steps in Workflow 11 - Example 2, the third step is to flash the board.

$sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only

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