How to fast flash jetson nano module

Dear All,
jetson nano moudle with emmc 16G,
custom carry board.

Now ,I use my clone image to flash my new nano module use  

“sudo ./flash.sh -r APP jetson-nano-emmc mmcblk0p1”, it works well except it’s a little slow , about 30 minite.
Are there any other faster ways to flash?

Hello @cuiep ,

I hope you are doing well.

We usually use three different flash procedures depending at which stage our customer’s product might be.

  1. When on developing stage, we want to perform fast testing. At this point we usually find ourselves switching kernels and device tree files for testing changes. This procedure is certainly not recommended for other than the development stage. It might cause issues for the board to load due to changes on the device tree.

1.1. Copy the compiled kernel and device trees to the board. From Linux_for_Tegra directory, run:

scp <dir_where_you_build_sources>/arch/arm64/boot/Image nvidia@<ip_address>:/tmp
scp <dir_where_you_build_sources>/arch/arm64/boot/dts/<your.dtb> nvidia@<ip_address>:/tmp

1.2. Then, from the board, move the kernel and device tree files to /boot ;

sudo mv /tmp/Image /boot
sudo mv /tmp/<your.dtb> /boot

1.3. Set the board to load your device tree by modifying /boot/extlinux/extlinux.conf file, including FDT /boot/ under LABEL primary:

LABEL primary
MENU LABEL primary kernel
LINUX /boot/Imag
 FDT /boot/<your.dtb>
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

1.4. Reboot your board, the driver should be already loaded. You can check by using the following commands:
1.4.a To check the kernel:
uname -a
1.4.b To check the DTB:
dmesg | grep dts

  1. For a safer approach, we use the same procedure you use. By providing the flash.sh script with the -r option, you make sure that no new system.img is generated, which usually takes some time.
    sudo ./flash.sh -r jetson-nano-emmc mmcblk0p1

  2. If you are at a production stage and you need to maximize the amount of boards you flash per time. The best approach is then to use NVIDIA’s massflash tool. It not only offers the ability to flash multiple Jetson Boards at the same time, but also provides a way to generate images on trusted environments. The massflash blobs are portable, encrypted, and provide signed binary firmware and tool files. It is the recommended method for flashing devices when ready for production.

3.1 To generate the massflash blob, please run the following command from the Linux_for_Tegra directory:

sudo BOARDID=3448 BOARDSKU=0002 FAB=400 FUSELEVEL=fuselevel_production ./nvmassflashgen.sh jetson-nano-emmc mmcblk0p1

3.2 Then, to flash the board. Please follow the procedure:

3.2.1. Make sure the boards are in recovery mode and plugged to your computer.

3.2.2. Extract the contents of the generated massflash blob:

tar xvjf mfi_jetson-nano-emmc.tbz2

3.2.3. Enter the extracted directory:

cd mfi_jetson-nano-emmc

3.2.4. Start flashing the Jetson board:

sudo ./nvmflash.sh --showlogs

I hope this information is of value to you. I you have any issues following any of the procedures, just let me know.

best regards,
Andres Campos
Embedded Software Engineer

Thanks very much! That’s what I want to do, I will have a try.

hello, Is this only can generate from PC Host?
Is there a way to generate it from the Nano moudule?

Hello @cuiep ,

That is a great question. Technically, you should be able to use your Jetson board as a regular linux computer. Therefore, using it as a host system to create images and flash other Jetson devices could be possible. However, we have never tried such procedure. We always create the images and flash the devices from a regular Ubuntu computer.

Unfortunately, since we have never tried to use a Jetson device as a host for flashing procedures, I am unable to provide you with details on how to accomplish such task.

best regards,
Andres Campos
Embedded Software Engineer