Clone Dev Kit SD card to production system

We have two Jetson Xavier NX systems, which I will refer to as OLD and NEW:

OLD: An original NX developer kit, SD card of 64 Gb, no nvme. Jetpack 4.4.1 (L4T 32.4.3 ubuntu 18.04) flawlessly running our software.
NEW: An production NX module on a leetop A206 carrier. Nvme of 128 Gb. I understand that for all intents and purposes the leetop A206 carrier board has identical pin and chip configuration as the original Nvidia developer’s kit carrier board. Factory-flashed with JP 4.6.1 but I am willing to override with whatever is needed.

For reference we tried to create a new system from scratch using JP 5.0.2rev1 and the software there underperforms significantly wrt to JP4.4.1 and we couldn’t find the culprit for that. We have exhausted the time available to make that happen, and we need to move forward ASAP with another solution.

Question: Can you illustrate, broadly, what sequence of steps I need to take to copy the 64 Gb from the SD card of the OLD system and flash that straight into the NVME of the NEW system so that it boots from that ?
A solution that clones the 64Gb from the SD card into the nvme making it “waste” the reminder 64 Gb is perfectly fine with us at this point.

Since we are overwhelmed with the amount of information we dealt with trying to do this appropriately it would be good if you can help by explaining the steps help along this lines:

Step 1: clone the image from the SD card into the host. The host needs to be running XXX.XX (ubuntu 18.04 ?) and you need to follow the instructions at link [1] below under “title here”.
Step 2: Then flash the image to the NEW system by doing what is in link [1] under “another title here"
Step 3: Make the new system boot from nvme by following what is in link [2]

[1] Flashing Support — Jetson Linux<br/>Developer Guide 34.1 documentation

Any help that allows us to achieve that quickly and efficiently is really appreciated.

PS: we saw the solution at Clone SDCARD to SDD NVMe M2 a complete system but it does not help as that case is just cloning the sd card to the nvme on the same system.


Want to clarify your request here. You want to boot clone your system from rel-32.x and let it boot on rel-35.x system?

I mentioned the release the NEW system is flashed with just for reference. I don’t have any particular interest in what release to boot the NEW system from, as long as it is able to boot and run a clone of the rel-32.x copied from the OLD system.


Is “New system” on rel-32.x or on rel-35.x? or you don’t care?

What I want to say is we don’t support any cross-version to work. Even userspace library has version check.
So even rel-32.x cloned to rel-32.x may not work fine either.

NEW system has been factory flashed with rel-35.x, but I don’t care about that and I am willing to overwrite it with whatever is needed. What sequence of steps I need to take to make the perfectly-working OLD system be put in the NEW system ?


You can try to flash your so-called “new system” board to old jetpack version first… as I said before, cross-version may not work because even user space lib has version check inside of it… My point is, if your “old system” is rel-32.7.1, then you need to flash your “New system” board back to rel-32.7.1 first…

If your old version is jp4.4.1, then reflash your xavier back to jp4.4.1 first…

After you make sure the QSPI image on your production board is correct… then use dd command to clone out the APP partition from your sdcard.

Put this clone out result to your Linux_for_Tegra/bootloader and replace the “system.img”. Then follow “Copy the backup image to flashing directory” in below page.

The boot process then may work or may not work. We are not sure because you are using custom board from Leetop. We know nothing about their board.

Better dumping serial console log from uart if you hit any boot issue.

Thanks, we are giving this a shot. A followup question, how can I check that “the QSPI image on your production board is correct” ?

If your board was flashed by sdkmanager and it told you it is flashed correct, then QSPI image on your board will be the jetpack version you flashed with sdkmanager. This software will not be different whenever you plug sdcard, usb drive or nvme.

Unfortunately there is no obvious log to tell “this is jp4.x QSPI image”, only a checksum value in it .
I mean inside the serial console log.

Ok, this is what I did.

Step 1: Flashed NEW system with JP 4.4.1. The NEW system boots from emmc just fine (and I can see the filesystem /dev/nvme0n1p1 still with its factory-flashed JP 4.6.1 files).

Step 2: Created system.img from SD card and put that in the proper place in the HOST machine.

Step 3: What is next ? you don’t mentioned it the entries above, but how do I now copy/flash the system.img into the NVME of the NEW system. It clearly can’t fit in the eMMC.

Shall I do something like this in the host ? Do I need special flags there ?

sudo ./ -r jetson-xavier-nx-devkit nvme0n1p1

Hi, WayneWWW wrote “Oh sorry that I didn’t get your request clearly. So it is just external drive to another external drive case?”. (for some reason is not showing on this thread).

Not sure what to add to what I wrote in the original question. I don’t know if the SD card in the original NX Dev kit is considered external or not. But I need to clone from the original dev kit with SD card to the new system with nvme.

I am not sure if you must “flash file to nvme”. Or just any method to copy the file to nvme is fine to you.

You can refer to the steps here.

In step 7. there is “$ sudo mount bootloader/system.img.raw ./tmp_system”

Replace the “system.img.raw” with the file you copy out from your sdcard.

Thanks for the help. For reference this is what I ended up doing as my host machine does not have an available M2 nvme slot.

  1. Flashed the NEW system (without nvme connected) with JP 4.4.1 into the eMMC. (Adjust any jetson io settings right there)

  2. I put the nvme in the OLD system and copy the fs from the SD card to the nvme,

  3. Remove the nvme from the OLD system and place in NEW system.

  4. Set up the service to pivot the boot from emmc into nvme. This is one of the steps described in Jetson Xavier NX - Run from SSD - JetsonHacks

NEW system works just like the old system, flawlessly. In fact it seems to be 10 to 15% faster, must be the IO.

Now that I have running system in the NEW hardware I need to clone it to other identically configured jetsons. Considering this is JP 4.4.1, do I need a special command to fully clone the NEW system (BOTH whatever is in the emmc and the nvme) to other identical jetsons ?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.