Clone Jetson Orin Nano NVMe and flash to another Jetson Orin Nanod

Hi everyone!
I have a Nvidia Jetson Orin Nano Devkit (8 GB) board with JetPack 5.1.4 installed on it (r35.6.0). The board is configured with my application code and ready to be deployed in production. I have two main questions.

1) I need to create a .img file of the board that I can use as a “master” image to flash other vanilla Orin Nano boards and prepare them for production.

I successfully backed up and restored the board with the command
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b jetson-orin-nano-devkit
which created a folder images containing many .img files for various system and nvme partitions. The partition nvme0n1p1, which is the “main” partition of the NVMe containing the root file system (and thus my application code and the OS), is in .tar.gz format rather than .img.

I also successfully restored another vanilla board with the images obtained from the previous step by launching the command
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -r jetson-orin-nano-devkit.

This procedure works, however, I need to specifically create a .img file that I can use for the cloning operation. I successfully created a .img file with the command
sudo ./flash.sh -r -k APP -G backup.img jetson-orin-nano-devkit-nvme nvme0n1p1. I then copied it to the bootloader folder, renaming it to system.img and overwriting the system.img that was already in it. However, when I tried flashing this image to another board with JetPack 5.1.4 installed on it, using the command
sudo ./flash.sh -r jetson-orin-nano-devkit-nvme nvme0n1p1, the procedure failed. More specifically, the flashing procedure starts but when it comes to erasing the NVMe, it times out after being stuck for a long time.

Is there a way to create a “master” .img image of the board to use for the cloning on new boards? I need the .img file rather than the .tar.gz file because the cloning of vanilla boards is not done by me and they are requesting a .img file.

2) The new vanilla Jetson Orin Nano boards come with JetPack 6.2 installed.
My source board, however, has JetPack 5.1.4 and this is the JetPack distribution that I currently need for new boards.
I also successfully performed the cloning with the backup_restore method described at question 1) by using BSP drivers for JetPack 6.2 rather than JetPack 5.1.4, however my question is about the new .img image that I need to create.
Provided that I successfully create a .img file of the file system that I can use to reproduce my source board, how can I flash this 5.1.4 image to the vanilla 6.2 boards also performing a downgrade to 5.1.4? What drivers should I use for this task, the 6.2 drivers or the 5.1.4 drivers?

Thanks in advance for the help!

Hi,

We provide the massflash with the backup image methods.
Please refer to the Linux_for_Tegra/tools/backup_restore/README_backup_restore.txt

Thanks

So the Workflow 3 will create a .img file rather than a directory? In this case I will be able to flash a new board only with this .img file?

Hi,

Yes. workflow3 will create. *.img in Linux_for_Tegra/tools/backup_restore/images.

Thanks

Hi!

Thank you so much, I was able to generate .img backups of all the partitions on my NVMe using the command sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b -c jetson-orin-nano-devkit in Workflow 3.
However, these images are generated not in the path you gave me (Linux_for_Tegra/tools/backup_restore/images) but rather in the path indicated by the README file, which is Linux_for_Tegra/tools/kernel_flash/images.

However, now it’s not clear to me how to use these images to restore another board. The readme is a bit confusionary on the following steps.

Hi,

Please try below commands

#Backup:
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b -c jetson-orin-nano-devkit

#Massflash (Generate the packages):
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --use-backup-image --no-flash --network usb0 --massflash 2 jetson-orin-nano-devkit internal

#Massflash (Actual Flash):
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --network usb0 --massflash 1

Thanks

Yes these are the commands that Workflow 3 suggests… I need to know however which files the various commands generate and where they’re generated and I need also to know which one of them to copy and send to who’s responsible of flashing the boards.