Nano boot fail, EEPROM CRC failed

Hi,
I’m using JP4.5.1. It works fine for 2 years. This problem is first time happened while running.
My system is running, and suddenly shutdown. After that I don’t see any character on debug console, then I assume the ROM bootloader is not running.
I bought it into recovery mode, the USB interface shown up. Try to flash a firmware that is known working. But it failed

...
[   0.2480 ] KFS0: 1048576 @ 29425704 SUM 9aff9a90 over 8134656 bytes
[   0.2521 ]    KFS:
[   0.2760 ]      0: [DTB-1] tegra210-orbit-nano-rev3-imx482.dtb.signed (size=227264/1048576)
[   0.2764 ]      1: [TOS-1] tos-mon-only.img.signed (size=54448/6291456)
[   0.2766 ]      2: [EKS-1] eks.img (size=1028/81920)
[   0.2767 ]      3: [LNX-1] boot.img.signed (size=712704/67092480)
[   0.2769 ] KFS1: 1048576 @ 29571240 SUM 9aff9a90 over 8134656 bytes
[   0.2838 ] 
[   0.2839 ] Boot Rom communication
[   0.2847 ] tegrarcm --chip 0x21 0 --rcm rcm_1_signed.rcm
[   0.2853 ] BR_CID: 0x62101001643146c10000000003040580
[   0.3161 ] Boot Rom communication completed
[   1.3772 ] 
[   1.3774 ] Sending BCTs
[   1.3806 ] tegrarcm --download bct orbit-nano.bct
[   1.3834 ] Applet version 00.01.0000
[   1.4146 ] Sending bct
[   1.4149 ] [................................................] 100%
[   1.5011 ] 
[   1.5013 ] Sending bootloader and pre-requisite binaries
[   1.5048 ] tegrarcm --download ebt cboot.bin.signed 0 0 --download rp1 tegra210-orbit-nano-rev3-imx482.dtb.signed 0[   0.2480 ] KFS0: 1048576 @ 29425704 SUM 9aff9a90 over 8134656 bytes
[   0.2521 ]    KFS:
[   0.2760 ]      0: [DTB-1] tegra210-orbit-nano-rev3-imx482.dtb.signed (size=227264/1048576)
[   0.2764 ]      1: [TOS-1] tos-mon-only.img.signed (size=54448/6291456)
[   0.2766 ]      2: [EKS-1] eks.img (size=1028/81920)
[   0.2767 ]      3: [LNX-1] boot.img.signed (size=712704/67092480)
[   0.2769 ] KFS1: 1048576 @ 29571240 SUM 9aff9a90 over 8134656 bytes
[   0.2838 ] 
[   0.2839 ] Boot Rom communication
[   0.2847 ] tegrarcm --chip 0x21 0 --rcm rcm_1_signed.rcm
[   0.2853 ] BR_CID: 0x62101001643146c10000000003040580
[   0.3161 ] Boot Rom communication completed
[   1.3772 ] 
[   1.3774 ] Sending BCTs
[   1.3806 ] tegrarcm --download bct orbit-nano.bct
[   1.3834 ] Applet version 00.01.0000
[   1.4146 ] Sending bct
[   1.4149 ] [................................................] 100%
[   1.5011 ] 
[   1.5013 ] Sending bootloader and pre-requisite binaries
[   1.5048 ] tegrarcm --download ebt cboot.bin.signed 0 0 --download rp1 tegra210-orbit-nano-rev3-imx482.dtb.signed 0
[   1.5080 ] Applet version 00.01.0000
[   1.5821 ] Sending ebt
[   1.6481 ] 
Error: Return value 1
Command tegrarcm --download ebt cboot.bin.signed 0 0 --download rp1 tegra210-orbit-nano-rev3-imx482.dtb.signed 0

And this is on the debug console while flashing the firmware.

[0007.085] [L4T TegraBoot] (version   )                                                                                                                                                                      
[0007.090] Processing in recovery mode                                                                
[0007.093] A02 Bootrom Patch rev = 1023                                                               
[0007.097] Power-up reason: pmc por                                                                   
[0007.100] Established communication link with host                                           
[0008.100] Odmdata from BCT: 0x000a4000                                                                                                                                                                      
[0008.104] DebugPort= 0x3                                                                             
[0008.106] SkipQspiOnly= 0x0                                                                          
[0008.158] EEPROM CRC failed. Calculated crc=0xdf CRC stored = 0x46                               
[0008.164] Reading Board-Type unsuccessful                                                            
[0008.168] BoardId read from EEPROM/NCT: 0                                                            
[0008.172] Unsupported Platform 0                                                                     
[0008.175] Downloaded BCT successfully       

From the message EEPROM CRC failed. Calculated crc=0xdf CRC stored = 0x46, it looks like the EEPROM of Nano was wrong written and now CRC is wrong.
Can it cause not booting problem if the EEPROM is failed?
Is there any way to re-flash the eeprom (via recovery mode for example)?? Thank you.

Not able to flash the eeprom content, but you can bypass the error. After bypassing the error and booting up, modify the eeprom content to the correct one.

Hi Wayne,

I’m not sure the EEPROM CRC causes flashing failed & not booting or not. But I tried to flash the original SDK JP 4.5.1, follow the thread you mention, here is the output

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 081: ID 2cb7:0210 FIBOCOM L830-EB-00
Bus 001 Device 026: ID 06cb:009a Synaptics, Inc. 
Bus 001 Device 006: ID 04f2:b604 Chicony Electronics Co., Ltd Integrated Camera (1280x720@30)
Bus 001 Device 011: ID 8087:0a2b Intel Corp. 
Bus 001 Device 004: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
Bus 001 Device 083: ID 0955:7f21 NVIDIA Corp. APX
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ sudo BOARDID=3448 FAB=400 BOARDSKU=0002 ./flash.sh -u /path/to/secureboot_sign_key/rsa_priv.pem jetson-nano-emmc mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 5.1
###############################################################################
# Target Board Information:
# Name: jetson-nano-emmc, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: PKC, 
# Disk encryption: disabled ,
###############################################################################
Board ID(3448) version(400) 
copying bctfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
	populating kernel to rootfs... done.
	populating initrd to rootfs... done.
	populating /work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb to rootfs... done.
Making Boot image... done.
Existing sosfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)... done.
Copying nv_boot_control.conf to rootfs
Making system.img... 
	populating rootfs from /work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/rootfs ... done.
	populating /boot/extlinux/extlinux.conf ... done.
	Sync'ing system.img ... done.
	Converting RAW image to Sparse image... done.
system.img built successfully. 
Existing tbcfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)... done.
copying cfgfile(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_emmc_p3448.xml) to flash.xml... done.
copying flasher(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/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-0002-p3449-0000-b00.dtb.signed --applet nvtboot_recovery.bin --cmd "flash; reboot"  --cfg flash.xml --chip 0x21   --skipuid --bins "EBT cboot.bin; DTB tegra210-p3448-0002-p3449-0000-b00.dtb"  --key "/work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem" 
saving flash command in /work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /work/p/sdkmanager/sdk/JetPack_4.5.1_Linux_JETSON_NANO/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.0018 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --getmode mode.txt
[   0.0091 ] PKC key in Open SSL format
[   0.0092 ] Key size is 256 bytes
[   0.0092 ] 
[   0.0094 ] Generating RCM messages
[   0.0159 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0218 ] RCM 0 is saved as rcm_0.rcm
[   0.0236 ] RCM 1 is saved as rcm_1.rcm
[   0.0236 ] List of rcm files are saved in rcm_list.xml
[   0.0236 ] 
[   0.0237 ] Signing RCM messages
[   0.0253 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0270 ] PKC key in Open SSL format
[   0.0273 ] Key size is 256 bytes
[   0.0275 ] Saving public key  in pub_key.key
[   0.2462 ] Saving public key Hash as binary: pub_key.hash
[   0.2463 ] Saving public key Hash as big-endian text: pub_key.hash_txt
[   0.2463 ] Saving public key Hash as little-endian(sysfs) text: pub_key.hash_sysfs_txt
[   0.2464 ] 
[   0.2465 ] Copying signature to RCM mesages
[   0.2486 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml --pubkeyhash pub_key.key
[   0.2540 ] 
[   0.2542 ] Parsing partition layout
[   0.2622 ] tegraparser --pt flash.xml.tmp
[   0.2772 ] 
[   0.2773 ] Creating list of images to be signed
[   0.2819 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   0.3186 ] 
[   0.3187 ] Generating signatures
[   0.3203 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --list images_list.xml --pubkeyhash pub_key.key
[   0.3225 ] PKC key in Open SSL format
[   0.3229 ] Key size is 256 bytes
[   0.3231 ] Saving public key  in pub_key.key
[   2.0827 ] Saving public key Hash as binary: pub_key.hash
[   2.0833 ] Saving public key Hash as big-endian text: pub_key.hash_txt
[   2.0839 ] Saving public key Hash as little-endian(sysfs) text: pub_key.hash_sysfs_txt
[   2.0970 ] 
[   2.0971 ] Generating br-bct
[   2.1051 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   2.1074 ] Copying Sdram info from 2 to 3 set
[   2.1410 ] 
[   2.1411 ] Updating boot device parameters
[   2.1431 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   2.1444 ] Warning: No sdram params
[   2.1448 ] 
[   2.1448 ] Updating bl info
[   2.1464 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   2.1620 ] 
[   2.1621 ] Updating secondary storage information into bct
[   2.1638 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   2.1804 ] 
[   2.1805 ] Updating Odmdata
[   2.1831 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   2.1858 ] Warning: No sdram params
[   2.2010 ] 
[   2.2012 ] Get Signed section of bct
[   2.2035 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   2.2085 ] 
[   2.2087 ] Signing BCT
[   2.2147 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --list bct_list.xml --pubkeyhash pub_key.key
[   2.2211 ] PKC key in Open SSL format
[   2.2216 ] Key size is 256 bytes
[   2.2219 ] Saving public key  in pub_key.key
[   2.3242 ] Saving public key Hash as binary: pub_key.hash
[   2.3248 ] Saving public key Hash as big-endian text: pub_key.hash_txt
[   2.3254 ] Saving public key Hash as little-endian(sysfs) text: pub_key.hash_sysfs_txt
[   2.3265 ] 
[   2.3266 ] Updating BCT with signature
[   2.3285 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml --pubkeyhash pub_key.key
[   2.3470 ] 
[   2.3472 ] Copying signatures
[   2.3492 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml --pubkeyhash pub_key.key
[   2.3604 ] 
[   2.3605 ] Updating BFS information on BCT
[   2.3642 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin --pubkeyhash pub_key.key
[   2.3661 ]    BFS:
[   2.3684 ]      0: [PT ] flash.xml.bin (size=4349/131072)
[   2.3688 ]      1: [TBC] nvtboot_cpu.bin.signed (size=65760/196608)
[   2.3696 ]      2: [RP1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.signed (size=226432/1048576)
[   2.3707 ]      3: [EBT] cboot.bin.signed (size=485120/655360)
[   2.3717 ]      4: [WB0] warmboot.bin.signed (size=3952/131072)
[   2.3722 ]      5: [BPF] sc7entry-firmware.bin.signed (size=3376/262144)
[   2.3728 ] BFS0: 131072 @ 2560 SUM 710ff9bc over 2883584 bytes
[   2.3744 ]    BFS:
[   2.3766 ]      0: [PT-1] flash.xml.bin (size=4349/131072)
[   2.3771 ]      1: [TBC-1] nvtboot_cpu.bin.signed (size=65760/196608)
[   2.3777 ]      2: [RP1-1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.signed (size=226432/1048576)
[   2.3788 ]      3: [EBT-1] cboot.bin.signed (size=485120/655360)
[   2.3797 ]      4: [WB0-1] warmboot.bin.signed (size=3952/131072)
[   2.3803 ]      5: [BPF-1] sc7entry-firmware.bin.signed (size=3376/262144)
[   2.3810 ]      8: [VER_b] emmc_bootblob_ver.txt (size=102/32768)
[   2.3825 ]      9: [VER] emmc_bootblob_ver.txt (size=102/32768)
[   2.3830 ] BFS1: 131072 @ 8704 SUM 710ff9bc over 2981888 bytes
[   2.3846 ]    KFS:
[   2.4382 ]      0: [DTB] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.signed (size=226432/1048576)
[   2.4392 ]      1: [TOS] tos-mon-only.img.signed (size=54448/6291456)
[   2.4398 ]      2: [EKS] eks.img (size=1028/81920)
[   2.4412 ]      3: [LNX] boot.img.signed (size=661504/67092480)
[   2.4425 ] KFS0: 1048576 @ 29376546 SUM dab7d1ef over 8083456 bytes
[   2.4536 ]    KFS:
[   2.5038 ]      0: [DTB-1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.signed (size=226432/1048576)
[   2.5047 ]      1: [TOS-1] tos-mon-only.img.signed (size=54448/6291456)
[   2.5053 ]      2: [EKS-1] eks.img (size=1028/81920)
[   2.5057 ]      3: [LNX-1] boot.img.signed (size=661504/67092480)
[   2.5070 ] KFS1: 1048576 @ 29522082 SUM dab7d1ef over 8083456 bytes
[   2.5410 ] 
[   2.5411 ] Boot Rom communication
[   2.5458 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   2.5479 ] RCM version 0X210001
[   2.7622 ] Boot Rom communication completed
[   3.7732 ] 
[   3.7732 ] Sending BCTs
[   3.7748 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   3.7761 ] Applet version 00.01.0000
[   3.8029 ] Sending bct
[   3.8030 ] [................................................] 100%
[   3.8890 ] 
[   3.8905 ] tegrahost --chip 0x21 --align cboot.bin
[   3.8918 ] 
[   3.8931 ] tegrahost --magicid EBT --appendsigheader cboot.bin cboot.bin_blheader
[   3.8964 ] 
[   3.8984 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --list cboot.bin_list.xml --pubkeyhash pub_key.key
[   3.8996 ] PKC key in Open SSL format
[   3.9053 ] Key size is 256 bytes
[   3.9055 ] Saving public key  in pub_key.key
[   4.0239 ] Saving public key Hash as binary: pub_key.hash
[   4.0245 ] Saving public key Hash as big-endian text: pub_key.hash_txt
[   4.0251 ] Saving public key Hash as little-endian(sysfs) text: pub_key.hash_sysfs_txt
[   4.0411 ] 
[   4.0439 ] tegrahost --updatesigheader cboot.bin_blheader cboot.bin_blheader.sig oem-rsa --pubkeyhash pub_key.key
[   4.0690 ] 
[   4.0722 ] tegrahost --chip 0x21 --align tegra210-p3448-0002-p3449-0000-b00.dtb
[   4.0738 ] 
[   4.0753 ] tegrahost --magicid DTB --appendsigheader tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dtb_blheader
[   4.0955 ] 
[   4.0982 ] tegrasign --key /work/p/uwcam/code/credencitals/secureboot_sign_key/rsa_priv.pem --list tegra210-p3448-0002-p3449-0000-b00.dtb_list.xml --pubkeyhash pub_key.key
[   4.0995 ] PKC key in Open SSL format
[   4.0999 ] Key size is 256 bytes
[   4.1003 ] Saving public key  in pub_key.key
[   4.2162 ] Saving public key Hash as binary: pub_key.hash
[   4.2168 ] Saving public key Hash as big-endian text: pub_key.hash_txt
[   4.2174 ] Saving public key Hash as little-endian(sysfs) text: pub_key.hash_sysfs_txt
[   4.2301 ] 
[   4.2331 ] tegrahost --updatesigheader tegra210-p3448-0002-p3449-0000-b00.dtb_blheader tegra210-p3448-0002-p3449-0000-b00.dtb_blheader.sig oem-rsa --pubkeyhash pub_key.key
[   4.2548 ] 
[   4.2556 ] Sending bootloader and pre-requisite binaries
[   4.2575 ] tegrarcm --download ebt cboot.bin.signed 0 0 --download rp1 tegra210-p3448-0002-p3449-0000-b00.dtb.signed 0
[   4.2619 ] Applet version 00.01.0000
[   4.2909 ] Sending ebt
[   4.3549 ] 
Error: Return value 1
Command tegrarcm --download ebt cboot.bin.signed 0 0 --download rp1 tegra210-p3448-0002-p3449-0000-b00.dtb.signed 0
Failed flashing t210ref.

My nano is production module, fused with public key and it was worked fine for hundreds flashing & boot in a year until now :).
Do you see any potential causes for this?
Thank you.

Hi,

Just want to double confirmed what you’ve tried.

  1. Add boardid, fab and sku to flash.sh.

  2. Enable a xml file with board info under bootloader/t210ref/cfg.

Is that what you’ve added?

Hi Wayne,

No I didn’t.

I have just follow the guideline at After i2cset test, nano can't boot in eMMC boot evironment - #24 by shinichiro.adachi , now I’m able to flash the firmware and get it boot up. Will correct the EEPROM after that.

Thank you for your support.

1 Like

I am also curious about why & how you would accidentally modify the eeprom content. If you remember what you did, please also tell me. Thanks.

I used 4 bytes in user-defined area in EEPROM for configuring stuff, and also use OEM MAC address in EEPROM. CRC code is correct and it is normally working fine.

Yesterday my college made his code, and I believe that his code makes incident calls to configurations which affect EEPROM somehow. That is my guess now, didn’t have time to inspect it in details. Maybe the EEPROM writing is interrupted while CRC byte is not written.

1 Like

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