Can I flash orin module only with nvme ssd?

It seems now a lot of problem can only be solved by flash jetpack again with orin module,but it is difficult for us to remove nvme ssd when flashing orin module everytime,anyway to flash orin module only but no effect with nvme ssd on board?

*** Please note that this reply is generated by LLM automatically ***

Flashing the Jetson Orin module without affecting the NVMe SSD on board can be a bit tricky, but it’s doable. Here’s a step-by-step guide to help you achieve this:

Method 1: Using flash.sh with --no-flash option

You can use the flash.sh script with the --no-flash option to flash the Orin module without writing to the NVMe SSD. This method is useful when you want to update the module’s firmware or bootloader without touching the root file system on the NVMe SSD.

Here’s an example command:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --mass-storage-only --showlogs --network usb0 --external-device nvme0n1p1 --external-only -c ./tools/kernel_flash/flash_l4t_t234_nvme.xml jetson-orin-nano-devkit nvme0n1p1

This command will flash the Orin module without writing to the NVMe SSD. However, please note that this method may not update the kernel or root file system on the module.

Method 2: Using nvautoflash.sh with --no-flash option

Alternatively, you can use the nvautoflash.sh script with the --no-flash option to flash the Orin module without affecting the NVMe SSD. This script is a wrapper around flash.sh and provides a simpler way to flash the module.

Here’s an example command:

sudo ./nvautoflash.sh --no-flash --mass-storage-only --showlogs --network usb0 --external-device nvme0n1p1 --external-only jetson-orin-nano-devkit nvme0n1p1

This command will flash the Orin module without writing to the NVMe SSD.

Method 3: Using nvmassflashgen.sh

If you need to flash multiple Orin modules simultaneously, you can use the nvmassflashgen.sh script. This script allows you to flash multiple modules at once, and you can specify the --no-flash option to avoid writing to the NVMe SSD.

Here’s an example command:

sudo ./nvmassflashgen.sh --no-flash --mass-storage-only --showlogs --network usb0 --external-device nvme0n1p1 --external-only jetson-orin-nano-devkit nvme0n1p1

This command will flash multiple Orin modules without writing to the NVMe SSD.

Comparison of methods

All three methods can be used to flash the Orin module without affecting the NVMe SSD. However, the choice of method depends on your specific use case:

  • Method 1 (flash.sh with --no-flash option) is useful when you want to update the module’s firmware or bootloader without touching the root file system on the NVMe SSD.
  • Method 2 (nvautoflash.sh with --no-flash option) is a simpler way to flash the module without affecting the NVMe SSD.
  • Method 3 (nvmassflashgen.sh) is useful when you need to flash multiple Orin modules simultaneously.

In summary, you can use any of these methods to flash the Jetson Orin module without affecting the NVMe SSD on board. However, please ensure that you have the correct configuration files and options to avoid any unintended consequences.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Hi @MaxineZ,

Yes, you can keep the NVMe SSD installed if you only want to flash/update the Orin module boot firmware/QSPI.

The important point is to use the QSPI-only flash flow, not the NVMe/external-storage flash flow. For example, the Jetson Linux Developer Guide documents the QSPI-only pattern as:

sudo ./flash.sh --no-systemimg -c bootloader/generic/cfg/flash_t234_qspi.xml <board> <rootdev>

This does not reflash the NVMe rootfs/APP partition.

Please avoid commands that explicitly target the NVMe, such as flows using --external-device nvme0n1, --external-only, or flash_l4t_t234_nvme.xml, unless your intention is to flash/repartition the NVMe SSD.

Recommendation:
If you only need to recover/update the module boot firmware, use the QSPI-only flash command and leave the NVMe installed.
For reference, please see the Jetson Linux Developer Guide, Flashing Support > Flashing a Specific Partition > Examples. It lists the command pattern for “To flash only QSPI on Jetson Orin series” separately from “To flash only NVMe SSD”:

Hope this helps!

So in my situation ‘board’ can be jetson-orin-nano-devkit,is that right?And what for the ‘rootdev’?

Hi @MaxineZ,

If you are using the Jetson Orin Nano Developer Kit/reference carrier board, jetson-orin-nano-devkit is the common <board> value.

For <rootdev>, please refer to the Jetson Linux Developer Guide for the JetPack/L4T release as I mentioned before. The Developer Guide defines <rootdev> in Flashing Support > Basic Flashing Script Usage as the root filesystem device/location. For example, if the root filesystem is on the first NVMe APP partition, the value is commonly nvme0n1p1.

Thanks

I found this xml file in t186ref but not generic,I don’t have generic in my packages,and it seems that cannot replace,any other way I can try?

Hi @MaxineZ,

For JetPack 5.1.5 / Jetson Linux R35.x, bootloader/t186ref/cfg/flash_t234_qspi.xml is the expected path. The bootloader/generic/... path is used in newer JetPack 6 / R36.x packages, so you do not need to replace t186ref with generic for your current package.

Please make sure the command includes both <board> and <rootdev>. The QSPI-only command pattern for R35.x is:

sudo ./flash.sh --no-systemimg -c bootloader/t186ref/cfg/flash_t234_qspi.xml <board> <rootdev>

For example, if your board config is jetson-orin-nano-devkit-super and your root filesystem is on the first NVMe APP partition, the command would be:

sudo ./flash.sh --no-systemimg -c bootloader/t186ref/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit-super nvme0n1p1

Please also confirm the available board config files in your Linux_for_Tegra directory:

ls jetson-orin-nano-devkit*.conf

Use the board name that matches an existing .conf file, without the .conf suffix.

Recommendation:
Do not use the NVMe/external-storage flash flow if your goal is only to update/recover QSPI and keep the NVMe rootfs unchanged. If the command still reports Invalid target board, please share the exact command you typed as text and the output of the ls jetson-orin-nano-devkit*.conf command above.

Reference:

Thanks.

I feel confused that I just want to flash module but not nvme,so rootdev is optional or neccessary?If I fill rootdev with nvme0n1p1,may anything in nvme be covered?

Hi @MaxineZ,

Yes, <rootdev> is necessary for flash.sh. The command format requires both <board> and <rootdev>:

sudo ./flash.sh --no-systemimg -c bootloader/t186ref/cfg/flash_t234_qspi.xml <board> <rootdev>

In this QSPI-only command, <rootdev> tells the script where the existing root filesystem is expected to be. It is not the same as using the NVMe flash flow.

So if your current root filesystem is on the first NVMe APP partition, using nvme0n1p1 as <rootdev> is OK in this command:

sudo ./flash.sh --no-systemimg -c bootloader/t186ref/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit-super nvme0n1p1

With --no-systemimg and flash_t234_qspi.xml, this is for flashing QSPI only and should not reflash or repartition the NVMe rootfs/APP partition.

Recommendation:
Do not add NVMe/external-storage flashing options such as --external-device, --external-only, flash_l4t_external.xml, or flash_l4t_t234_nvme.xml unless your purpose is to flash or repartition the NVMe SSD.

If your root filesystem is not on nvme0n1p1, please replace it with the correct root filesystem device/location for your setup.

Thanks!