As mentioned in the title, on Orin NX, I fused an ECDSA P-256 Key with a BootSecurityInfo value of 0x20b, which is intended for an ECDSA P-521 Key. After that, I was not able to perform ./odmfuseread.sh
.
I know there are still two public key hash fuses that can be burned, but I’m not sure if I can burn them again because the wrong key has already been burned.
Here is the configuration that I used to burn the wrong keys:
wrong_fuse.conf
<genericfuse MagicId="0x45535546" version="1.0.0">
<fuse name="PublicKeyHash" size="64" value="a ECSDA P-256 Key Hash"/>
<fuse name="SecureBootKey" size="32" value="sbk generated from openssl rand -hex (32bytes)"/>
<fuse name="OemK1" size="32" value="OemK1 generated from openssl rand -hex (32bytes)"/>
<fuse name="BootSecurityInfo" size="4" value="0x20b"/>
</genericfuse>
This is the command I used to burn:
sudo ./odmfuse.sh -X wrong_fuse.conf -i 0x23 jetson-orin-nano-devkit
This is the command I used to read the fuse:
sudo ./odmfuseread.sh -i 0x23 -k ecdsa_256.pem -S xxx.sbk jetson-orin-nano-devkit
Here is the partial odmfuseread.sh log
[ 0.0091 ] Reading fuses
[ 0.0096 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.0101 ] File rcm_state open failed
[ 0.0101 ] ERROR: failed to read rcm_state
...
[ 0.3335 ] tegrasign_v3.py --key /home/intsa/keys/AC0231.pem0 --list mb1_bct_MB1_aligned_sigheader_encrypt.bct_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.3355 ] Valid ECC key
[ 0.3413 ] Saving public key in pub_key.key for ECC
[ 0.3413 ] tegrahost_v2 --chip 0x23 0 --pubkeyhash pub_key.key --updatesigheader mb1_bct_MB1_aligned_sigheader_encrypt.bct.signed mb1_bct_MB1_aligned_sigheader_encrypt.bct.sig oem-ecc
[ 0.3420 ] Info: Skip generating mem_bct because sdram_config is not defined
[ 0.3420 ] Info: Skip generating mem_bct because sdram_config is not defined
[ 0.3420 ] Copying signatures
[ 0.3424 ] tegrahost_v2 --chip 0x23 0 --partitionlayout readinfo_t234_min_prod.xml.bin --updatesig images_list_signed.xml --pubkeyhash pub_key.key
[ 0.3447 ] mb1_t234_prod_aligned_sigheader_encrypt.bin.signed filename is from images_list
[ 0.3448 ] psc_bl1_t234_prod_aligned_sigheader_encrypt.bin.signed filename is from images_list
[ 0.3448 ] Boot Rom communication
[ 0.3452 ] tegrarcm_v2 --new_session --chip 0x23 0 --uid --download bct_br br_bct_BR.bct --download mb1 mb1_t234_prod_aligned_sigheader_encrypt.bin.signed --download psc_bl1 psc_bl1_t234_prod_aligned_sigheader_encrypt.bin.signed --download bct_mb1 mb1_bct_MB1_sigheader_encrypt.bct.signed
[ 0.3456 ] BR_CID: 0xAB012344705DE3C94000000010028280
[ 0.3764 ] Sending bct_br
[ 0.4196 ] ERROR: might be timeout in USB write.
Error: Return value 3
Command tegrarcm_v2 --new_session --chip 0x23 0 --uid --download bct_br br_bct_BR.bct --download mb1 mb1_t234_prod_aligned_sigheader_encrypt.bin.signed --download psc_bl1 psc_bl1_t234_prod_aligned_sigheader_encrypt.bin.signed --download bct_mb1 mb1_bct_MB1_sigheader_encrypt.bct.signed
[ 10.5865 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 10.5920 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 10.5973 ] Retrieving board information
[ 10.6000 ] tegrarcm_v2 --chip 0x23 0 --oem platformdetails chip chip_info.bin
[ 10.6029 ] Retrieving EEPROM data
[ 10.6030 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/intsa/JP60_PROD/Linux_for_Tegra/bootloader/cvm.bin --chip 0x23 0
[ 10.6076 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 10.6111 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 10.6126 ] Dumping customer Info
[ 10.6143 ] tegrarcm_v2 --chip 0x23 0 --oem dump bct tmp.bct
[ 10.6192 ] tegrabct_v2 --brbct tmp.bct --chip 0x23 0 --custinfo /home/intsa/JP60_PROD/Linux_for_Tegra/bootloader/custinfo_out.bin
[ 10.6216 ] File tmp.bct open failed
Error: Return value 19
Command tegrabct_v2 --brbct tmp.bct --chip 0x23 0 --custinfo /home/intsa/JP60_PROD/Linux_for_Tegra/bootloader/custinfo_out.bin
Reading board information failed.