How to recover Jetson Nano after erase mtd0

Hello,

While trying to deploy a custom image (yocto + mender) on my jetson nano, I did a mistake. I’ve flash-erase /dev/mtd0 thinking it was the eMMC, but now my jetson doesn’t boot at all.

I try to recover it, but the recover procedure is stuck at “tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid”

What can I do to revive my jetson ?

Thanks for your help

EDIT : I’m using Ubuntu 20.4.1 on a virtual machine (VirtualBox) 64 bits

EDIT 2 :
I’ve changed the USB controller of my VM to USB1.1 (instead of USB 2.0) and now I’m a step beyond but still failed :

root@damien-VirtualBox:/home/damien/Linux_for_Tegra# ./flash.sh jetson-nano-qspi mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 5.2
###############################################################################
Error: probing the target board failed.
       Make sure the target board is connected through 
       USB port and is in recovery mode.
root@damien-VirtualBox:/home/damien/Linux_for_Tegra# ./flash.sh jetson-nano-qspi mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 5.2
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/damien/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.0023 ] Generating RCM messages
[   0.0034 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/damien/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0047 ] RCM 0 is saved as rcm_0.rcm
[   0.0058 ] RCM 1 is saved as rcm_1.rcm
[   0.0069 ] List of rcm files are saved in rcm_list.xml
[   0.0152 ] 
[   0.0154 ] Signing RCM messages
[   0.0178 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0193 ] Assuming zero filled SBK key
[   0.0410 ] 
[   0.0413 ] Copying signature to RCM mesages
[   0.0428 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0502 ] 
[   0.0503 ] Boot Rom communication
[   0.0527 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0544 ] RCM version 0X210001
[   0.1106 ] Boot Rom communication completed
[   1.2021 ] 
[   1.2022 ] dump EEPROM info
[   1.2036 ] tegrarcm --oem platformdetails eeprom /home/damien/Linux_for_Tegra/bootloader/cvm.bin
[   1.2048 ] Applet version 00.01.0000
[   1.3677 ] Saved platform info in /home/damien/Linux_for_Tegra/bootloader/cvm.bin
[   1.6181 ] 
[   1.6193 ] tegrarcm --reboot recovery
[   1.6205 ] Applet version 00.01.0000
[   1.8621 ] 
Board ID(3448) version(400) 
copying bctfile(/home/damien/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/damien/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/damien/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
	populating kernel to rootfs... done.
	populating initrd to rootfs... done.
	populating /home/damien/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb to rootfs... done.
Making Boot image... done.
Existing sosfile(/home/damien/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/damien/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/damien/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/damien/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/home/damien/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/damien/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/damien/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/damien/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/damien/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
Copying nv_boot_control.conf to rootfs
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
sed: impossible de lire /home/damien/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: N'est pas un dossier
Skip generating system.img
Existing tbcfile(/home/damien/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/damien/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
copying cfgfile(/home/damien/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_max-spi_p3448.xml) to flash.xml... done.
copying flasher(/home/damien/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/damien/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl cboot.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg --odmdata 0xa4000 --bldtb kernel_tegra210-p3448-0000-p3449-0000-b00.dtb --applet nvtboot_recovery.bin --cmd "flash; reboot"  --cfg flash.xml --chip 0x21    --bins "EBT cboot.bin; DTB tegra210-p3448-0000-p3449-0000-b00.dtb" 
saving flash command in /home/damien/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/damien/Linux_for_Tegra/bootloader/flash_win.bat
*** Flashing target device started. ***
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.0010 ] tegrasign --key None --getmode mode.txt
[   0.0029 ] Assuming zero filled SBK key
[   0.0087 ] 
[   0.0090 ] Generating RCM messages
[   0.0134 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0150 ] RCM 0 is saved as rcm_0.rcm
[   0.0167 ] RCM 1 is saved as rcm_1.rcm
[   0.0180 ] List of rcm files are saved in rcm_list.xml
[   0.0249 ] 
[   0.0250 ] Signing RCM messages
[   0.0362 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0375 ] Assuming zero filled SBK key
[   0.0528 ] 
[   0.0529 ] Copying signature to RCM mesages
[   0.0542 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0761 ] 
[   0.0762 ] Parsing partition layout
[   0.0773 ] tegraparser --pt flash.xml.tmp
[   0.0860 ] 
[   0.0861 ] Creating list of images to be signed
[   0.0873 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   0.1131 ] 
[   0.1132 ] Generating signatures
[   0.1144 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.1167 ] Assuming zero filled SBK key
[   0.1961 ] 
[   0.1962 ] Generating br-bct
[   0.1975 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   0.1987 ] Copying Sdram info from 2 to 3 set
[   0.2096 ] 
[   0.2097 ] Updating boot device parameters
[   0.2114 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   0.2128 ] Warning: No sdram params
[   0.2324 ] 
[   0.2325 ] Updating bl info
[   0.2337 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.2443 ] 
[   0.2445 ] Updating secondary storage information into bct
[   0.2473 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   0.2523 ] 
[   0.2525 ] Updating Odmdata
[   0.2541 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   0.2555 ] Warning: No sdram params
[   0.2723 ] 
[   0.2724 ] Get Signed section of bct
[   0.2737 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   0.2801 ] 
[   0.2802 ] Signing BCT
[   0.2837 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.2856 ] Assuming zero filled SBK key
[   0.2968 ] 
[   0.2969 ] Updating BCT with signature
[   0.2980 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   0.3071 ] 
[   0.3072 ] Copying signatures
[   0.3088 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.3232 ] 
[   0.3232 ] Updating BFS information on BCT
[   0.3295 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin
[   0.3407 ] 
[   0.3408 ] Boot Rom communication
[   0.3423 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.3449 ] BootRom is not running
[   0.3732 ] 
[   0.3733 ] Sending BCTs
[   0.3750 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   0.3783 ] Applet is not running on device. Continue with Bootloader
[   0.3878 ] 
[   0.3936 ] tegrahost --chip 0x21 --align cboot.bin
[   0.4027 ] 
[   0.4040 ] tegrahost --magicid EBT --appendsigheader cboot.bin cboot.bin_blheader
[   0.4161 ] 
[   0.4180 ] tegrasign --key None --list cboot.bin_list.xml
[   0.4271 ] Assuming zero filled SBK key
[   0.4646 ] 
[   0.4661 ] tegrahost --updatesigheader cboot.bin_blheader.encrypt cboot.bin_blheader.hash zerosbk
[   0.4769 ] 
[   0.4798 ] tegrahost --chip 0x21 --align tegra210-p3448-0000-p3449-0000-b00.dtb
[   0.4975 ] 
[   0.4987 ] tegrahost --magicid DTB --appendsigheader tegra210-p3448-0000-p3449-0000-b00.dtb tegra210-p3448-0000-p3449-0000-b00.dtb_blheader
[   0.5099 ] 
[   0.5123 ] tegrasign --key None --list tegra210-p3448-0000-p3449-0000-b00.dtb_list.xml
[   0.5206 ] Assuming zero filled SBK key
[   0.5398 ] 
[   0.5417 ] tegrahost --updatesigheader tegra210-p3448-0000-p3449-0000-b00.dtb_blheader.encrypt tegra210-p3448-0000-p3449-0000-b00.dtb_blheader.hash zerosbk
[   0.5602 ] 
[   0.5607 ] Sending bootloader and pre-requisite binaries
[   0.5641 ] tegrarcm --download ebt cboot.bin.encrypt 0 0 --download rp1 tegra210-p3448-0000-p3449-0000-b00.dtb.encrypt 0
[   0.5670 ] Applet is not running on device. Continue with Bootloader
[   0.5915 ] 
[   0.5943 ] tegrarcm --boot recovery
[   0.5984 ] Applet is not running on device. Continue with Bootloader
[   0.6064 ] 
[   0.6065 ] Retrieving storage infomation
[   0.6082 ] tegrarcm --oem platformdetails storage storage_info.bin
[   0.6175 ] Applet is not running on device. Continue with Bootloader
[   0.6324 ] 
[   0.6337 ] tegradevflash --oem platformdetails storage storage_info.bin
[   0.6349 ] Cboot is not running on device.
[   0.6608 ] 
Error: Return value 4
Command tegradevflash --oem platformdetails storage storage_info.bin
Failed flashing t210ref.

and this is the log from the UART port :

[0007.823] Enabled early print
[0007.826] [L4T TegraBoot] (version f(▒▒߈@ ▒▒▒H▒)
[0007.831] Processing in recovery mode
[0007.835] A02 Bootrom Patch rev = 1023
[0007.838] Power-up reason: pmc por
[0007.841] Established communication link with host
[0009.016] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[0009.024] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[0009.032] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001
[0007.862] Enabled early print
[0007.865] [L4T TegraBoot] (version f(▒▒걹▒▒@ ▒▒▒H▒)
[0007.870] Processing in recovery mode
[0007.874] A02 Bootrom Patch rev = 1023
[0007.877] Power-up reason: pmc por
[0007.880] Established communication link with host
[0009.055] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[0009.063] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[0009.072] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001

hello dgotfroi,

re-flash should works, please put your device enter forced-recovery mode and check the $ lsusb for the device-id.
please refer to To determine whether the developer kit is in Force Recovery mode.
you might also have a try to use off-line approach to flash the device manually.
for example,
$ sudo BOARDID=3448 BOARDSKU=0002 FAB=200 ./flash.sh jetson-nano-devkit-emmc mmcblk0p1

1 Like

Hello.

Thanks for your answer @JerryChang.
I’ve successfully flashed my jetson by using a Live Ubuntu USB key instead a virtualMachine. Now the jetson works well with the Nvidia SD card image.

However, I’ve build an image with Yocto and Mender :
Machine = Jetson-nano-qspi-sd
DISTRO = tegrademo-mender
VERSION = dunfell-l4t-r32.4.3
Image=demo-image-base

But it doesn’t work because my jetson is using the uboot on its emmc instead the uboot on the sdcard.

So is there a way to force the jetson to use the sd card uboot ?

Thanks for your help

hello dgotfroi,

please initial another new forum discussion thread to track this.
thanks

1 Like

Hello,
No problem, I will do that.
Thanks for your answer

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