Flashing to multiple target devices and cloning

Hello.

We need to have possibility flashing to multiple target devices and cloning.

Orin NX release 35.6.0 with NVMe memory.
But, first of all, we’ve developed our custom carrier board, which doesn’t have USB OTG type C.
So, if I understand correctly, we can’t use l4t_initrd_flash.sh script?

For flashing, I use such command:

sudo ./flash.sh jetson-orin-nano-devkit-nvme internal

My question, how can I get the whole clone, including QSPI chip data from ORIN NX, using USB type A?
And how to flash it to multiple target devices?

Thank you in advance.

Hi dimaz,

If you don’t have Type C port on custom carrier board, how do you flash it with above command?

We would suggest using initrd with massflash to flash multiple devices, but it seems initrd is not working in your case.
Is there any flash log if you try using initrd script to flash your board?

Hi KevinFFF

As I know, flash.sh and l4t_initrd_flash.sh use different methods of flashing.

l4t_initrd_flash.sh requires USB type C (OTG), because after flashing of QSPI memory, Orin NX becomes USB device and HOST Ubuntu attaches it, mounts NVMe memory and copies rootfs. That’s why USB must work as OTG.

flash.sh works similar way as flashing Xavier series. This script doesn’t attach Orin NX as USB device mode, so doesn’t require USB type C (OTG). In fact, this method works.

Sure. I’ve attached two logs: from uart console and 4t_initrd_flash.sh script.

flash_log.txt (260.9 KB)
uart_log.txt (100.0 KB)

Obviously, it failed.
From uart log:

Connection timeout: device /dev/nvme0n1 is still not ready.
No known UDC device found

As I mentioned before, in our carrier board USB is not presented as OTG, so doesn’t have UDC mode.

And main question, does flash.sh script have facility to flash multiple devices and clone the whole images?

Your understanding is correct.

Is your USB different from the devkit so that you don’t have OTG support on your custom carrier board?

Would it work in your case?

It seems flash script does not support for this feature.
It can support only clone the specific partition from QSPI or internal storage.

Yes, our USB schematic is different. We excluded FUSB301TMX chip, so our USB doesn’t support OTG mode.

Yes, it works.
Moreover, it noticed in Nvidia guide:

Please, confirm: flash.sh can write NVME memory, but can’t clone from it?

Correct. flash.sh can only clone for the partition from internal QSPI or eMMC(if available) through adding -k option, you can refer to Flashing Support — NVIDIA Jetson Linux Developer Guide 1 documentation for details. It does not support for the cloning feature for NVMe.

Thank you for explanation.
Are you planning to add functionality to the flash.sh script for cloning images from NVMe?

Sorry that we don’t have plan to implement that since initrd could do those jobs and the current flash.sh could also clone for the partitions in internal QSP and eMMC.
Actually, we would suggest using initrd for external device like NVMe SSD.