Jetson clone freeze at boot


I have an issue with a Jetson Xavier I’m trying to clone.
I followed the procedure detailed here To clone a Jetson device and flash and when I get the image system from the Jetson that has been pre configured (call it board n°1) with the command
sudo ./ -r -k APP -G cloneimage.img jetson-xavier mmcblk0p1
the process runs normally and does create the .img and .img.raw files.

However when I try to flash this .img file (first renaming them system.img and system.img.raw and placing them in the bootloader folder) onto another Jetson Xavier board that hasn’t been pre configured (call it board n°2), using the command
sudo ./ -r jetson-xavier mmcblk0p1
the process also runs normally but when I reboot board n°2, it first shows the Nvidia splashscreen on the display and then freezes to a black screen with only a blinking terminal cursor and I’m unable to type anyhting or do anything.

The two boards are supposed to be of similar configuration and flashing board n°2 with a “vanilla” version of L4T using JetPack_4.4 seems to be working.

Is there any step I missed in the cloning process ?

Thanks in advance for any help or advice.

It looks like what you are doing is basically correct. However, there are some version dependencies. If your system which was cloned occurred with a given release, and then you flashed it to another system using a different release, then failure is likely (unless it was a simple patch). For example, if the system the clone came from is R32.1, and the software used to flash is R32.3, then the boot would probably fail.

Another issue would be if the cloned image is not a default size, and as a result, the flash may have been unable to deal with the non-default size. You could guarantee this is not an issue by passing the right “-S size” argument. The raw image size (the “.img.raw”) is the only image which shows the exact size. If that image exact byte size divides evenly by 1024 twice, then this is the size in MiB; if that size can be divided evenly 3 times by 1024, then that is the size in GiB. For example, if that raw image size is 30064771072 bytes, then this is equivalent to “28 GiB”, and this flash would specify that size:
sudo ./ -S 28GiB -r jetson-xavier mmcblk0p1

If those are not an issue, then you might be able to pick up something with a serial console boot log.

you may also try direct dd cloning of the entire mmcblk0 [experimental]

Hi, thanks for the reply.
Both my boards should be under the same software version used to flash so i don’t think the issue is coming from there.
I have tried your suggestion, to specify the size, unfortunately, the situation hasn’t changed and the boot screen remains black.
I will try a serial console boot as soon as I get my hand on a USB to TTL cable.

Hi, thank you for the suggestion.
Unfortunately, I have tried this and I get a trusty_log panic notifier screen:

Which seems to be similar to this topic.

Hello @t.velon,

please follow the Mass Flash procedure described under <path_to_L4T>/Linux_for_Tegra/README_Massflash.txt. When you have your massflash blob uncompressed, replace the system.img file by the cloned image. Finish the flashing process as described in the documentation.

Please let me know whether this solves the issue.

yeah, we also just tried to clone with dd the entire mmcblk0 from one jetson to another jetson mmcblk0;
It resulted in the situation as at the attached image below

would it make sense to use the massflash approach to write just one device with system.img staken from another device?

Hello @mike_nv,
I have tried your solution unfortunately it seems to give a similar output to all my previous attempt. I’m stuck at a black boot screen with only a cursor.

Any idea what might cause this ?

@t.velon I could not reproduce the reported issue on my setup. I will do some more tests and reach out to you with further details soon. Do you face the same issue when you reflash the same device with the cloned image? (make sure to backup first prior to trying)

@_av your observation is pertinent. The massflash script encapsulates the process in a more straightforward way to minimize errors, hence my suggestion.

if you are in capacity of testing, maybe you could confirm given two running jetsons the method below will fail or success, please?
At jetson 1

# First ake sure root ssh to Jetson2 works; 
sudo su
echo u > /proc/sysrq-trigger
dd if=/dev/mmcblk0 | ssh root@destonation_jetson dd of=/dev/mmcblk0

at the second jetson also the mode with the command below might be required before the dd from the previous step starts cloning

sudo su
echo u > /proc/sysrq-trigger

Otherwise, it also would be great to know if it fails for the entire mmcblk0, but suceeds for mmcblk0p1
Thank you very much!

I was able to reproduce the reported issue. I will further investigate and reach out to you soon.

@t.velon please provide me with the full serial console log. The output I have here is somewhat different from yours.


Please try the following for cloning:

Let us call device A the one which will be cloned and B the device that will flashed.

First preflash the device B with L4T. Please make sure you are flashing B with the same L4T version as device A (specific versions can be found here).

Clone device A with the following command:

sudo ./flash -r -k APP -G backup.img jetson-xavier mmcblk0p1

Replace the system.img under bootloader folder with the backup.img.

Restore the APP partition onto device B with the following command:
sudo ./flash -r -k APP jetson-xavier mmcblk0p1

Hi @mike_nv ,

Thank you for the reply, I ended up finding the source of my problem.
I was using a custom configuration of the Jetson Xavier which was not compatible with the L4T releases available on the Nvidia website (probably due to driver issues). I ended up taking the appropriate L4T custom release and it worked fine.

Thanks for everything.