How to generate firmware flash compressed file(mfi_xxx.tar.gz) for AGX ORIN without connecting device?

How to generate firmware flash compressed file(mfi_xxx.tar.gz) for AGX ORIN without connecting device?

I failed to generate using the following command.

sudo BOARDID=3701 BOARDSKU=0005 FAB=501 BOARDREV=G.0 CHIP_SKU=00:00:00:D0 RAMCODE_ID=00:00:00:03 RAMCODE=3   ROOTFS_RETRY_COUNT_MAX=3   ./tools/kernel_flash/l4t_initrd_flash.sh   -p "-c bootloader/generic/cfg/flash_t234_qspi_sdmmc.xml"   --no-flash --massflash 5   --showlogs --network usb0 jetson-agx-orin-devkit mmcblk0p1
......
./tegraflash.py --bl uefi_jetson_minimal_with_dtb_sigheader.bin.encrypt --bct br_bct_BR.bct --bldtb tegra234-p3737-0000+p3701-0005-nouart-nv.dtb --applet rcm_2_encrypt.rcm --applet_softfuse rcm_1_encrypt.rcm --cmd "secureflash;reboot"  --cfg secureflash.xml --chip 0x23 --mb1_bct mb1_bct_MB1_sigheader.bct.encrypt --mem_bct mem_rcm_sigheader.bct.encrypt --mb1_cold_boot_bct mb1_cold_boot_bct_MB1_sigheader.bct.encrypt --mb1_bin mb1_t234_prod_aligned_sigheader.bin.encrypt --psc_bl1_bin psc_bl1_t234_prod_aligned_sigheader.bin.encrypt --mem_bct_cold_boot mem_coldboot_sigheader.bct.encrypt  --bins "psc_fw pscfw_t234_prod_sigheader.bin.encrypt; mts_mce mce_flash_o10_cr_prod_sigheader.bin.encrypt; tsec_fw tsec_t234_sigheader.bin.encrypt; mb2_applet applet_t234_sigheader.bin.encrypt; mb2_bootloader mb2_t234_with_mb2_bct_MB2_sigheader.bin.encrypt; xusb_fw xusb_t234_prod_sigheader.bin.encrypt; pva_fw nvpva_020_sigheader.fw.encrypt; dce_fw display-t234-dce_sigheader.bin.encrypt; nvdec nvdec_t234_prod_sigheader.fw.encrypt; bpmp_fw bpmp_t234-TE990M-A1_prod_sigheader.bin.encrypt; bpmp_fw_dtb tegra234-bpmp-3701-0005-3737-0000_with_odm_sigheader.dtb.encrypt; rce_fw camera-rtcpu-t234-rce_sigheader.img.encrypt; ape_fw adsp-fw_sigheader.bin.encrypt; spe_fw spe_t234_sigheader.bin.encrypt; tos tos-optee_t234_sigheader.img.encrypt; eks eks_t234_sigheader.img.encrypt"    --bct_backup 
saving flash command in flashcmd.txt

*** no-flash flag enabled. Exiting now... *** 

User can run above saved command in factory environment without 
providing pkc and sbk keys to flash a device

Example:

    $ cd bootloader 
    $ sudo bash ./flashcmd.txt

Error: /home/ht/ak41/Linux_for_Tegra/bootloader/signed/flash.idx is not found
Error: failed to relocate images to /home/ht/ak41/Linux_for_Tegra/tools/kernel_flash/images
Cleaning up...

Hi,
If the device cannot be flashed/booted, please refer to the page to get uart log from the device:
Jetson/General debug - eLinux.org
And get logs of host PC and Jetson device for reference. If you are using custom board, you can compare uart log of developer kit and custom board to get more information.
Also please check FAQs:
Jetson AGX Orin FAQ
If possible, we would suggest follow quick start in developer guide to re-flash the system:
Quick Start — NVIDIA Jetson Linux Developer Guide 1 documentation
And see if the issue still persists on a clean-flashed system.
Thanks!

Hi carolyuu,
I can use flash.sh to flash my device normally, but I am unable to generate MFI flash packages offline at the moment. Could you please help me figure out how to achieve this goal?

Thanks.

These might help? Click the links to get a readable views.

Linux_for_Tegra/nvmassfusegen.sh
Linux_for_Tegra/bootloader/README_Massfuse.txt

nvmassfusegen.sh looks like it accepts the command line prepends that you have in your command above.

l4t_initrd_flash.sh at least for itself does not seem to.

Hi whitesscott,
Thank you for your kind suggestion, but it shouldn’t be the issue you mentioned.

Hi,

Please refer to README_initrd_flash.txt Workflow 7: Initrd Massflash

Thanks

Hi Nvidia,

I use the method provided by “tools\kernel_flash\README_initrd_flash.txt Workflow 7: Initrd Massflash method” txt to create mfi firmware, but both online and offline methods failed to flash it.

online method

$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --massflash 5 --network usb0 jetson-agx-orin-devkit mmcblk0p1

mfi_jetson-agx-orin-devkit$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 5 --showlogs --network usb0
# Entry added by NVIDIA initrd flash tool
/home/ht/ak41/Linux_for_Tegra/mfi_online/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/ak41/Linux_for_Tegra/mfi_online/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
# Entry added by NVIDIA initrd flash tool
/home/ht/ak41/Linux_for_Tegra/mfi_online/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/ak41/Linux_for_Tegra/mfi_online/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
/home/ht/ak41/Linux_for_Tegra/mfi_online/mfi_jetson-agx-orin-devkit/tools/kernel_flash/l4t_initrd_flash_internal.sh --network usb0 --usb-instance 1-3 --device-instance 0 --flash-only --network usb0 jetson-agx-orin-devkit mmcblk0p1
Start flashing device: 1-3, rcm instance: 0, PID: 2650355
Log will be saved to Linux_for_Tegra/initrdlog/flash_1-3_0_20250310-190113.log 

Flash complete (WITH FAILURES)

flash_1-3_0_20250310-190113.log (9.5 KB)

offline method

$ sudo BOARDID=3701 FAB=500 BOARDSKU=0005   bash -x ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --massflash 5 --showlogs --network usb0 jetson-agx-orin-devkit mmcblk0p1


$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 5 --showlogs
# Entry added by NVIDIA initrd flash tool
/home/ht/ak41/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/ak41/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
# Entry added by NVIDIA initrd flash tool
/home/ht/ak41/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/ak41/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
/home/ht/ak41/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/l4t_initrd_flash_internal.sh --network usb0 --usb-instance 1-3 --device-instance 0 --flash-only --network usb0 jetson-agx-orin-devkit mmcblk0p1
Start flashing device: 1-3, rcm instance: 0, PID: 2667917
Log will be saved to Linux_for_Tegra/initrdlog/flash_1-3_0_20250310-193238.log 
Flash complete (WITH FAILURES)

flash_1-3_0_20250310-193238.log (9.5 KB)

I tried but couldn’t flash it. Did I make a mistake? Thank you for your help.

Thanks.

By the way, I used flash.sh to flash, everything normally, and I also switched to an Ubuntu22.04 system machine to flash, but the generated mfi package still cannot be flashed.
sudo bash ./flash.sh jetson-agx-orin-devkit mmcblk0p1

Has no one encountered this Massflash issue? How do you generate flashing packages? 😵​

Hi,

Some questions to confirm:

  • Do your host is a native, virtual machine, or a docker?

Thanks

Tested with two native PCs, one running on Ubuntu 22.04 and the other on Ubuntu 20.04

Hi,

We verify massflash successfully in our side.
Please record the serial during the process.

Thanks

Wait a moment, I’ll capture the serial log.

mfi_flash_serial_log.txt (55.3 KB)

flash_1-6_0_20250311-182557.log (9.5 KB)

mfi_jetson-agx-orin-devkit$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 5 --showlogs --network usb0
# Entry added by NVIDIA initrd flash tool
/home/ht/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
# Entry added by NVIDIA initrd flash tool
/home/ht/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
rpcbind: another rpcbind is already running. Aborting
Export list for localhost:
/home/ht/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/tmp 127.0.0.1
/home/ht/Linux_for_Tegra/mfi_offline/mfi_jetson-agx-orin-devkit/tools/kernel_flash/l4t_initrd_flash_internal.sh --network usb0 --usb-instance 1-6 --device-instance 0 --flash-only --network usb0 jetson-agx-orin-devkit mmcblk0p1
Start flashing device: 1-6, rcm instance: 0, PID: 11120
Log will be saved to Linux_for_Tegra/initrdlog/flash_1-6_0_20250311-182557.log 
Flash complete (WITH FAILURES)

Hi NVIDIA,

What flash scripts are running internally after entering the recovery system? Is this part of the code not working?

Thanks.

liteblue, hope below works for you.

I was curious to try this. It failed on ubuntu 22.04 and 24.04 hosts as flash.idx was not created.

On my ubuntu 24.04 workstation I thought I’d try from a pristine sdk environment:

sudo rm -rf ~/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS

Then put agx orin dev kit 32gb in to recovery mode, started sdkmanager and let it download and create JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra

Then I looked here and modified your original command line to

sudo BOARDID=3701 FAB=501 BOARDSKU=0005 BOARDREV=G.0 CHIP_SKU=00:00:00:D0 ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --network usb0 --massflash 5 jetson-agx-orin-devkit mmcblk0p1

and finally


Massflash package is generated at /home/scott/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/mfi_jetson-agx-orin-devkit.tar.gz
Success
Cleaning up…
Finish generating flash package.
Put device in recovery mode, run with option --flash-only to flash device.

ls -alrth mfi_jetson-agx-orin-devkit.tar.gz
4.7G Mar 11 20:10 mfi_jetson-agx-orin-devkit.tar.gz

I only have but one agx orin so I won’t test the following from same docs.nvidia.com webpage.

Connect the five Jetson devices to the flashing hosts.
Ensure that the devices have the identical hardware revision.
Place all of the connected Jetson devices into RCM mode.
Run the following command:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --network usb0 --massflash 5