Blocked when try to clone a Jetson device img on Jetson Nano 2G devkit

I have setup the flash environment for jetson nano 2g devkit. And then follow the nvidia document to backup the app img from my device. However, it seems to be blocked and never provide any feedback for more than an hour.

~/Desktop/Linux_for_Tegra$ sudo ./flash.sh -r -k APP -G backup.img jetson-nano-2gb-devkit mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 7.3
###############################################################################
# Target Board Information:
# Name: jetson-nano-2gb-devkit, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/qwang/Desktop/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin" 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0027 ] Generating RCM messages
[   0.0065 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/qwang/Desktop/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0079 ] RCM 0 is saved as rcm_0.rcm
[   0.0098 ] RCM 1 is saved as rcm_1.rcm
[   0.0098 ] List of rcm files are saved in rcm_list.xml
[   0.0099 ] 
[   0.0099 ] Signing RCM messages
[   0.0400 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0411 ] Assuming zero filled SBK key
[   0.0486 ] 
[   0.0486 ] Copying signature to RCM mesages
[   0.0526 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0535 ] 
[   0.0535 ] Boot Rom communication
[   0.0555 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid

Hi wqhwqz2008,

Are you using the devkit from NVIDIA for Jetson Nano?
Is that come with SD slot?

Do you enter into force recovery state before run this command?

Could you help to provide the full flash log for further check?

Are you using the devkit from NVIDIA for Jetson Nano?
Yes.

Is that come with SD slot?
It should come with microSD slot.

Do you enter into force recovery state before run this command?
I think I should enter into force recovery state. In normal state, the command ‘lsusb’ cannot find it, right? I have connect the GND and FC REC.

Could you help to provide the full flash log for further check?
The above is all the logs in my terminal. where can I find the full flash log?

By the way, I use the virtualbox to run the ubuntu 18.04, it should be OK, right?

A fully running Nano will also show up, but that’s due to the virtual network and virtual storage device the Nano emulates. It’s from software if and only if fully booted and providing device mode. The virtual network device could for example be turned off, and then the Jetson would not show up with lsusb. Recovery mode will always show up under lsusb. One hint is that if you run “dmesg --follow” on the host PC, and then watch the logs as you plug in the USB, a virtual network device (or any other emulated device) would be named, e.g., it would mention ethernet; plugging in the recovery mode Jetson would not mention any network or block device.

Thanks for your explanation. And what can I do to provide more information for getting your help?

Here is the logs with “dmesg --follow ” when I plug in the nano device:

[  353.897026] usb 1-1: new high-speed USB device number 2 using ehci-pci
[  354.237866] usb 1-1: New USB device found, idVendor=0955, idProduct=7f21, bcdDevice= 1.02
[  354.237871] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  354.237874] usb 1-1: Product: APX
[  354.237877] usb 1-1: Manufacturer: NVIDIA Corp.
[  375.933467] usb 1-1: USB disconnect, device number 2

Does it means my device is not under recovery mode? If so, how can I make it goto recovery mode? I have already connect the GND and FC REC. And in the normal state, the screen which connect to the device by HDMI, works. But once I conect the GND and FC REC and then boot it up, it doesn’t response anyway.

First of all, is this a VM? I tend to see “APX” with VMs. These quite often have USB issues.

The fact that you don’t see a virtual ethernet device from plugin tends to imply that either (A) this is a recovery mode device, or (B) this device did not boot to the point that virtual networking was working.

Yes, the host machine is Windows. And the Ubuntu 18.04 running in the virtualbox.

This is a problem on multiple levels. VMs quite often require special configuration to make them correctly pass through USB. There is nothing the install software can do about that, it’d be up to you and the VM tech support. After that it would probably work.

However, if this is WSL2, then there is another problem: WSL2 does not support loopback. Someone mentioned it can be added, but the level of knowledge to do that goes up quite a bit, and I personally do not know how to add loopback to WSL2.

So do you mean that I should find a host machine with ubuntu 18.04 rather than VM and then try it again?

For nano 2gb, you can just move out your sdcard from the device and use dd command to clone it on your host.

Could you give me a link for more detailed information?
And is that means backup the img by SD card rather than flash.sh?

You’d use flash.sh to flash non-rootfs content on the Nano (or use JetPack/SDKM, the GUI for that flash software). The JetPack/SDKM software would be best with an actual Ubuntu 18.04 host PC. A VM could be made to work in some cases, but it is beyond what the software itself can configure (you’d need to know how to do this yourself).

If you have an SD card, then you can clone it on any Linux system if you have sufficient disk space. Or you can restore it.

Keep in mind that when the dd command is mentioned below that it is best that the SD card (or partitions) are not mounted. Are you familiar with the mount command (and umount)?

If you connect the SD card to a Linux host PC, then it might “automount” any ext4 or VFAT partition. To see the name of the device for your SD card, monitor the command “dmesg --follow” prior to inserting the SD card. Watch what log lines appear upon insert. Depending on hardware and software it might call the device as a whole something like “sdb” or “mmcblk0”. The first partition (as an example) of those two devices are “sdb1” and “mmcblk0p1” (note the appended “1”).

To see a list of all partitions on your computer, their mount point and types:
lsblk -f

To see just “/dev/mmcblk0” (and similar for “/dev/sda”):
lsblk -f /dev/mmcblk0

If you are using a mounted partition, even if you’ve just used “cd” to go to the mount point, then the partition is “busy” and cannot be unmounted. Assuming it is not busy, and since likely something would automount it, you can unmount it with “umount” (notice it is notunmount”, the “n” is left out for the actual command). Example:
sudo umount /dev/sda1
(that runs umount on a specific partition)

To see the size of a specific partition of “/dev/sda1” in bytes:
sudo blockdev --getsize64 /dev/sda1

When you clone via dd the file produced will be the exact size of the partition. If the partition is 64 GB, then you are about to produce a file on your host PC that is also 64 GB. That’s a lot. It takes a lot of time just to move such a file (if it is moved from one storage device to another). Use “df -H” to see the amount of storage available on each location of your computer. You can look specifically at what is available in one location, e.g., if your login name is “unbuntu” and you want to know how much storage is available at “/home/ubuntu”, then you could use “df -H /home/ubuntu”. That size though is in GiB (102410241024), whereas the earlier command lists size in ordinary bytes.

Let’s say you want to store the clone at “~/nvidia/clones”. Also, pretend the partition you are cloning is “/dev/sda1” (adjust for your case):

cd ~/nvidia
mkdir clones
cd clones
# It might not be mounted, but just in case:
sudo umount /dev/sda1
# The "100M" is optional; it says to use a 100 MB buffer, which can make it faster:
sudo dd if=/dev/sda1 of=my_clone.img bs=100M status=progress
sync
# Optional to see if size of clone matches the partition:
ls -l my_clone.img
sudo blockdev --getsize64 /dev/sda1

From then on you could recreate that partition on another SD card if the partition of that size exists. To clone the entire SD card, and not just the partition (which means you can also restore entire SD cards, and this means more than just one partition), substitute “/dev/sda” for “/dev/sda1” (name the device as a whole instead of one partition). If you have a 64 GB SD card, then you’d restore to the device as a whole and wouldn’t need to worry about partitioning before restoring.

Thanks for your kind explanation very much! I will have a try!

Here is the logs on an actual Ubuntu 18.04 host PC, could you help to have a look?

###############################################################################
# L4T BSP Information:
# R32 , REVISION: 7.3
###############################################################################
# Target Board Information:
# Name: jetson-nano-2gb-devkit, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin" 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0014 ] Generating RCM messages
[   0.0022 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0028 ] RCM 0 is saved as rcm_0.rcm
[   0.0033 ] RCM 1 is saved as rcm_1.rcm
[   0.0033 ] List of rcm files are saved in rcm_list.xml
[   0.0033 ] 
[   0.0033 ] Signing RCM messages
[   0.0052 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0057 ] Assuming zero filled SBK key
[   0.0100 ] 
[   0.0101 ] Copying signature to RCM mesages
[   0.0119 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0129 ] 
[   0.0130 ] Boot Rom communication
[   0.0153 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0162 ] RCM version 0X210001
[   0.0584 ] Boot Rom communication completed
[   1.0664 ] 
[   1.0666 ] dump EEPROM info
[   1.0711 ] tegrarcm --oem platformdetails eeprom /home/qwang/Downloads/Linux_for_Tegra/bootloader/cvm.bin
[   1.0736 ] Applet version 00.01.0000
[   1.0767 ] Saved platform info in /home/qwang/Downloads/Linux_for_Tegra/bootloader/cvm.bin
[   1.1538 ] 
[   1.1585 ] tegrarcm --reboot recovery
[   1.1607 ] Applet version 00.01.0000
[   1.1640 ] 
Board ID(3448) version(400) 
copying bctfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/qwang/Downloads/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
Making Boot image... done.
Existing sosfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
copying wb0boot(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/qwang/Downloads/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0003-p3542-0000.dtb)... done.
Copying nv_boot_control.conf to rootfs
Skip generating system.img
Existing tbcfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/qwang/Downloads/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0003-p3542-0000.dtb)... done.
copying cfgfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_max-spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/qwang/Downloads/Linux_for_Tegra/bootloader/tegraflash.py) reused.
*** Reading [APP] and storing to /home/qwang/Downloads/Linux_for_Tegra/backup.img ***
./tegraflash.py --bl cboot.bin --bldtb kernel_tegra210-p3448-0003-p3542-0000.dtb  --chip 0x21 --applet nvtboot_recovery.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg  --cfg  flash.xml   --odmdata 0xa4000  --cmd "read APP /home/qwang/Downloads/Linux_for_Tegra/backup.img"  
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0220 ] Generating RCM messages
[   0.0229 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0236 ] RCM 0 is saved as rcm_0.rcm
[   0.0240 ] RCM 1 is saved as rcm_1.rcm
[   0.0240 ] List of rcm files are saved in rcm_list.xml
[   0.0240 ] 
[   0.0241 ] Signing RCM messages
[   0.0259 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0264 ] Assuming zero filled SBK key
[   0.0309 ] 
[   0.0309 ] Copying signature to RCM mesages
[   0.0327 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0338 ] 
[   0.0338 ] Boot Rom communication
[   0.0358 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.0366 ] BR_CID: 0x3210100164510649080000000e048280
[   0.0373 ] RCM version 0X210001
[   0.0374 ] Boot Rom communication completed
[   1.0451 ] 
[   1.0453 ] Parsing partition layout
[   1.0497 ] tegraparser --pt flash.xml.tmp
[   1.0533 ] 
[   1.0535 ] Creating list of images to be signed
[   1.0577 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   1.0648 ] 
[   1.0649 ] Generating signatures
[   1.0671 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   1.0678 ] Assuming zero filled SBK key
[   1.1142 ] 
[   1.1143 ] Send BCT from Host
[   1.1143 ] Generating br-bct
[   1.1166 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   1.1206 ] 
[   1.1206 ] Updating boot device parameters
[   1.1227 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   1.1233 ] Warning: No sdram params
[   1.1235 ] 
[   1.1235 ] Updating bl info
[   1.1254 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   1.1269 ] 
[   1.1269 ] Updating secondary storage information into bct
[   1.1291 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   1.1301 ] 
[   1.1302 ] Updating Odmdata
[   1.1320 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   1.1327 ] Warning: No sdram params
[   1.1328 ] 
[   1.1329 ] Get Signed section of bct
[   1.1347 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   1.1354 ] 
[   1.1354 ] Signing BCT
[   1.1394 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   1.1401 ] Assuming zero filled SBK key
[   1.1405 ] 
[   1.1405 ] Updating BCT with signature
[   1.1426 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   1.1435 ] 
[   1.1436 ] Sending BCTs
[   1.1456 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   1.1464 ] Applet version 00.01.0000
[   1.1486 ] Sending bct
[   1.1487 ] [................................................] 100%
[   1.3669 ] 
[   1.3670 ] Retrieving storage infomation
[   1.3711 ] tegrarcm --oem platformdetails storage storage_info.bin
[   1.3733 ] Applet version 00.01.0000
[   1.3759 ] 00000003: Could not initialize storage device
[   1.8417 ] 
[   1.8462 ] tegradevflash --oem platformdetails storage storage_info.bin

Did that fail? I don’t see an outright “failure” message. Also, what was the exact command used which produced the log?

Here is the command:
sudo ./flash.sh -r -k APP -G backup.img jetson-nano-2gb-devkit mmcblk0p1

And it is blocked again, just stop at

It does not show success or failure for several hours. So if the message is not enough for you, I will try the SD card solution when getting my sd card reader.

One clones an eMMC model by that command. SD card models are not the same. You can simply plug the SD card into a host PC and clone directly (e.g., using the dd command). SD card models don’t have eMMC, so it’ll be waiting a long time before it finds the eMMC to clone :P I suppose it would be nice if the clone command knew the named memory doesn’t exist.

Note: An SD card slot directly on the module is very different than one on the carrier board. If on the carrier board, then you probably have an eMMC model; if on the module, then this is a dev kit without eMMC.

FYI, if for some reason your original clone command could work, then the target would not be mmcblk0p1 for an SD card; it would instead be mmcblk1p1 (mmcblk0 is an eMMC designation, mmcblk1 is an SD card designation). I’m thinking of the most basic Nano dev kit, so there are variations which could change things, but the mmcblk1 command would be valid for any non-eMMC Jetson.

There are a few details to learn when cloning an SD card via dd, but does your host PC have more spare space than the size of the (A) rootfs partition on the SD card, and (B) the entire SD card, including both rootfs and any other space?

It is best to not have a partition mounted during a clone. If you plug the SD card into your host PC, then it might auto mount the rootfs. If you monitor “dmesg --follow”, and then insert the SD card, you might see log messages about the SD card and any auto mount. Depending on setup the name of the device might change, but let’s pretend that when you insert the SD card on the host PC that the SD card as a whole is “/dev/sdb”, and that the rootfs partition is automounted and is designated “/dev/sdb1”. Then this would apply (be very careful to not name the wrong device, adjust for your case):

`sudo umount /dev/sdb1
mkdir ~/clone
cd ~/clone
# To clone the rootfs, which is usually the best clone unless you have many
# copies of the same exact SD card you going to restore to:
sudo dd if=/dev/sdb1 of=rootfs_clone.img bs=100M status=progress
# If instead you want to clone the entire card, including metadata which is
# not part of the partition:
sudo dd if=/dev/sdb of=whole_sd_clone.img bs=100M status=progress
# When done:
sync

Make sure any partition of an SD card is not mounted before you unplug it. Make sure any read/write is complete before unplugging it.

To restore a full SD card which is an exact match in specs to the original SD card, assuming the blank SD card is “/dev/sdb” and is not mounted:

cd ~/clone
sudo dd if=whole_sd_clone.img of=/dev/sdb bs=100M status=progress
sync

(it might auto mount when done)

I will probably be gone for up to a week, so I may not be able to answer questions for awhile.

Note that this set of cloned SD cards should work on that one Jetson, but boot content is not stored on the SD card. As such you must still flash any SD card model of Jetson with the correct release of software (e.g., via JetPack/SDK Manager of the correct release version) if that Jetson has not already been flashed once. SD card models have boot content on QSPI memory which is part of the module itself.

Here is the logs with command mmcblk1p1:

sudo ./flash.sh -r -k APP -G backup.img jetson-nano-2gb-devkit mmcblk1p1
[sudo] password for qwang: 
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 7.3
###############################################################################
# Target Board Information:
# Name: jetson-nano-2gb-devkit, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin" 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0059 ] Generating RCM messages
[   0.0099 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0123 ] RCM 0 is saved as rcm_0.rcm
[   0.0147 ] RCM 1 is saved as rcm_1.rcm
[   0.0148 ] List of rcm files are saved in rcm_list.xml
[   0.0148 ] 
[   0.0149 ] Signing RCM messages
[   0.0197 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0221 ] Assuming zero filled SBK key
[   0.0337 ] 
[   0.0338 ] Copying signature to RCM mesages
[   0.0361 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0384 ] 
[   0.0385 ] Boot Rom communication
[   0.0406 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0413 ] RCM version 0X210001
[   0.0862 ] Boot Rom communication completed
[   1.0943 ] 
[   1.0944 ] dump EEPROM info
[   1.0991 ] tegrarcm --oem platformdetails eeprom /home/qwang/Downloads/Linux_for_Tegra/bootloader/cvm.bin
[   1.1016 ] Applet version 00.01.0000
[   1.1198 ] Saved platform info in /home/qwang/Downloads/Linux_for_Tegra/bootloader/cvm.bin
[   1.1969 ] 
[   1.2009 ] tegrarcm --reboot recovery
[   1.2031 ] Applet version 00.01.0000
[   1.2202 ] 
Board ID(3448) version(400) 
copying bctfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/qwang/Downloads/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
Making Boot image... done.
Existing sosfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
copying wb0boot(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/qwang/Downloads/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0003-p3542-0000.dtb)... done.
Copying nv_boot_control.conf to rootfs
Skip generating system.img
Existing tbcfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/qwang/Downloads/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0003-p3542-0000.dtb)... done.
copying cfgfile(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_max-spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/home/qwang/Downloads/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/qwang/Downloads/Linux_for_Tegra/bootloader/tegraflash.py) reused.
*** Reading [APP] and storing to /home/qwang/Downloads/Linux_for_Tegra/backup.img ***
./tegraflash.py --bl cboot.bin --bldtb kernel_tegra210-p3448-0003-p3542-0000.dtb  --chip 0x21 --applet nvtboot_recovery.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg  --cfg  flash.xml   --odmdata 0xa4000  --cmd "read APP /home/qwang/Downloads/Linux_for_Tegra/backup.img"  
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0345 ] Generating RCM messages
[   0.0357 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0365 ] RCM 0 is saved as rcm_0.rcm
[   0.0371 ] RCM 1 is saved as rcm_1.rcm
[   0.0371 ] List of rcm files are saved in rcm_list.xml
[   0.0371 ] 
[   0.0372 ] Signing RCM messages
[   0.0392 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0401 ] Assuming zero filled SBK key
[   0.0445 ] 
[   0.0446 ] Copying signature to RCM mesages
[   0.0466 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0478 ] 
[   0.0478 ] Boot Rom communication
[   0.0500 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.0507 ] BR_CID: 0x3210100164510649080000000e048280
[   0.0514 ] RCM version 0X210001
[   0.0655 ] Boot Rom communication completed
[   1.0736 ] 
[   1.0737 ] Parsing partition layout
[   1.0774 ] tegraparser --pt flash.xml.tmp
[   1.0832 ] 
[   1.0833 ] Creating list of images to be signed
[   1.1043 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   1.1355 ] 
[   1.1356 ] Generating signatures
[   1.1378 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   1.1386 ] Assuming zero filled SBK key
[   1.1844 ] 
[   1.1844 ] Send BCT from Host
[   1.1844 ] Generating br-bct
[   1.1879 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   1.1950 ] 
[   1.1950 ] Updating boot device parameters
[   1.1971 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   1.1978 ] Warning: No sdram params
[   1.1980 ] 
[   1.1980 ] Updating bl info
[   1.2001 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   1.2015 ] 
[   1.2015 ] Updating secondary storage information into bct
[   1.2036 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   1.2044 ] 
[   1.2044 ] Updating Odmdata
[   1.2065 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   1.2071 ] Warning: No sdram params
[   1.2073 ] 
[   1.2073 ] Get Signed section of bct
[   1.2094 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   1.2103 ] 
[   1.2104 ] Signing BCT
[   1.2148 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   1.2154 ] Assuming zero filled SBK key
[   1.2159 ] 
[   1.2159 ] Updating BCT with signature
[   1.2180 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   1.2188 ] 
[   1.2189 ] Sending BCTs
[   1.2209 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   1.2215 ] Applet version 00.01.0000
[   1.2394 ] Sending bct
[   1.2395 ] [................................................] 100%
[   1.4572 ] 
[   1.4573 ] Retrieving storage infomation
[   1.4611 ] tegrarcm --oem platformdetails storage storage_info.bin
[   1.4633 ] Applet version 00.01.0000
[   1.4794 ] 00000003: Could not initialize storage device
[   1.9444 ] 
[   1.9650 ] tegradevflash --oem platformdetails storage storage_info.bin

And the logs from dmsg at the same time:

[  397.655411] usb 1-1: new high-speed USB device number 5 using xhci_hcd
[  397.803856] usb 1-1: New USB device found, idVendor=0955, idProduct=7f21, bcdDevice= 1.02
[  397.803858] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  397.803859] usb 1-1: Product: APX
[  397.803859] usb 1-1: Manufacturer: NVIDIA Corp.
[  428.791098] kauditd_printk_skb: 38 callbacks suppressed
[  428.791099] audit: type=1400 audit(1682684008.085:50): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/snap/snapd/18933/usr/lib/snapd/snap-confine" pid=3249 comm="apparmor_parser"
[  428.791121] audit: type=1400 audit(1682684008.085:51): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/snap/snapd/18933/usr/lib/snapd/snap-confine//mount-namespace-capture-helper" pid=3249 comm="apparmor_parser"
[  428.951074] audit: type=1400 audit(1682684008.245:52): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.gnome-calculator.hook.configure" pid=3253 comm="apparmor_parser"
[  429.487019] audit: type=1400 audit(1682684008.781:53): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.gnome-calculator.gnome-calculator" pid=3252 comm="apparmor_parser"
[  429.567921] audit: type=1400 audit(1682684008.865:54): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap-update-ns.gnome-calculator" pid=3251 comm="apparmor_parser"
[  432.150275] audit: type=1400 audit(1682684011.445:55): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/snap/snapd/18933/usr/lib/snapd/snap-confine" pid=3383 comm="apparmor_parser"
[  432.150297] audit: type=1400 audit(1682684011.445:56): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/snap/snapd/18933/usr/lib/snapd/snap-confine//mount-namespace-capture-helper" pid=3383 comm="apparmor_parser"
[  432.395479] audit: type=1400 audit(1682684011.689:57): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.gnome-characters.hook.configure" pid=3387 comm="apparmor_parser"
[  432.634342] audit: type=1400 audit(1682684011.929:58): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.gnome-characters.gnome-characters" pid=3386 comm="apparmor_parser"
[  432.873736] audit: type=1400 audit(1682684012.169:59): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap-update-ns.gnome-characters" pid=3385 comm="apparmor_parser"
[  610.383716] usb 1-1: USB disconnect, device number 5
[  610.728538] usb 1-1: new high-speed USB device number 6 using xhci_hcd
[  610.877297] usb 1-1: New USB device found, idVendor=0955, idProduct=7f21, bcdDevice= 1.02
[  610.877302] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  610.877305] usb 1-1: Product: APX
[  610.877308] usb 1-1: Manufacturer: NVIDIA Corp.
[  846.993224] INFO: task tegradevflash:4688 blocked for more than 120 seconds.
[  846.993227]       Tainted: G        W         5.4.0-84-generic #94~18.04.1-Ubuntu
[  846.993227] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  846.993229] tegradevflash   D    0  4688   4649 0x20020000
[  846.993230] Call Trace:
[  846.993234]  __schedule+0x292/0x710
[  846.993235]  schedule+0x33/0xa0
[  846.993236]  schedule_timeout+0x1d3/0x320
[  846.993237]  wait_for_completion_timeout+0xb3/0x140
[  846.993239]  ? wake_up_q+0x80/0x80
[  846.993241]  usb_start_wait_urb+0x8c/0x180
[  846.993242]  usb_bulk_msg+0xb8/0x160
[  846.993244]  proc_bulk+0x257/0x3a0
[  846.993245]  usbdev_do_ioctl+0x93d/0x1490
[  846.993247]  ? handle_mm_fault+0xcb/0x210
[  846.993248]  usbdev_compat_ioctl+0x10/0x20
[  846.993250]  __ia32_compat_sys_ioctl+0x105/0x230
[  846.993252]  do_int80_syscall_32+0x5b/0x130
[  846.993254]  entry_INT80_compat+0x85/0x90
[  846.993255] RIP: 0023:0x8075b54
[  846.993258] Code: Bad RIP value.
[  846.993258] RSP: 002b:00000000ff9d15d8 EFLAGS: 00000287 ORIG_RAX: 0000000000000036
[  846.993260] RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00000000c0105502
[  846.993260] RDX: 00000000ff9d1600 RSI: 000000000000000c RDI: 00000000099a66a8
[  846.993260] RBP: 00000000ff9d1674 R08: 0000000000000000 R09: 0000000000000000
[  846.993261] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[  846.993261] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[  967.826356] INFO: task tegradevflash:4688 blocked for more than 241 seconds.
[  967.826359]       Tainted: G        W         5.4.0-84-generic #94~18.04.1-Ubuntu
[  967.826360] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.826361] tegradevflash   D    0  4688   4649 0x20020000
[  967.826362] Call Trace:
[  967.826366]  __schedule+0x292/0x710
[  967.826367]  schedule+0x33/0xa0
[  967.826368]  schedule_timeout+0x1d3/0x320
[  967.826370]  wait_for_completion_timeout+0xb3/0x140
[  967.826371]  ? wake_up_q+0x80/0x80
[  967.826374]  usb_start_wait_urb+0x8c/0x180
[  967.826375]  usb_bulk_msg+0xb8/0x160
[  967.826377]  proc_bulk+0x257/0x3a0
[  967.826378]  usbdev_do_ioctl+0x93d/0x1490
[  967.826380]  ? handle_mm_fault+0xcb/0x210
[  967.826382]  usbdev_compat_ioctl+0x10/0x20
[  967.826383]  __ia32_compat_sys_ioctl+0x105/0x230
[  967.826385]  do_int80_syscall_32+0x5b/0x130
[  967.826387]  entry_INT80_compat+0x85/0x90
[  967.826388] RIP: 0023:0x8075b54
[  967.826391] Code: Bad RIP value.
[  967.826392] RSP: 002b:00000000ff9d15d8 EFLAGS: 00000287 ORIG_RAX: 0000000000000036
[  967.826393] RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00000000c0105502
[  967.826394] RDX: 00000000ff9d1600 RSI: 000000000000000c RDI: 00000000099a66a8
[  967.826394] RBP: 00000000ff9d1674 R08: 0000000000000000 R09: 0000000000000000
[  967.826394] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[  967.826395] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[ 1088.659698] INFO: task tegradevflash:4688 blocked for more than 362 seconds.
[ 1088.659706]       Tainted: G        W         5.4.0-84-generic #94~18.04.1-Ubuntu
[ 1088.659708] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1088.659712] tegradevflash   D    0  4688   4649 0x20020000
[ 1088.659716] Call Trace:
[ 1088.659727]  __schedule+0x292/0x710
[ 1088.659731]  schedule+0x33/0xa0
[ 1088.659735]  schedule_timeout+0x1d3/0x320
[ 1088.659740]  wait_for_completion_timeout+0xb3/0x140
[ 1088.659745]  ? wake_up_q+0x80/0x80
[ 1088.659752]  usb_start_wait_urb+0x8c/0x180
[ 1088.659757]  usb_bulk_msg+0xb8/0x160
[ 1088.659763]  proc_bulk+0x257/0x3a0
[ 1088.659769]  usbdev_do_ioctl+0x93d/0x1490
[ 1088.659774]  ? handle_mm_fault+0xcb/0x210
[ 1088.659779]  usbdev_compat_ioctl+0x10/0x20
[ 1088.659785]  __ia32_compat_sys_ioctl+0x105/0x230
[ 1088.659792]  do_int80_syscall_32+0x5b/0x130
[ 1088.659797]  entry_INT80_compat+0x85/0x90
[ 1088.659801] RIP: 0023:0x8075b54
[ 1088.659810] Code: Bad RIP value.
[ 1088.659812] RSP: 002b:00000000ff9d15d8 EFLAGS: 00000287 ORIG_RAX: 0000000000000036
[ 1088.659816] RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00000000c0105502
[ 1088.659818] RDX: 00000000ff9d1600 RSI: 000000000000000c RDI: 00000000099a66a8
[ 1088.659820] RBP: 00000000ff9d1674 R08: 0000000000000000 R09: 0000000000000000
[ 1088.659821] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[ 1088.659823] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000

It seems that the device disconnected and couldn’t be recognized again. Could you help to have a look?

And my SD card reader can’t arrive in a short time. I will create a new issue if I have problem to use the SD card solution later. Thanks very much.

So far as I know (perhaps this has changed) there is no way to clone an SD card from a recovery mode Jetson. The direct clone command was intended for eMMC models. Similar for telling it to restore. Perhaps someone who can list the limitations of recovery mode SD card clone/restore could add to this conversation, but basically I would expect any SD card to be cloned directly and not while it is in a recovery mode Jetson. There is no need for that sort of clone operation in an SD card model.