Jetson Xavier NX burn Tegra fuses made the device unbootable

Hi,

I’m using JetPack 4.4 - L4T R32.4.3, I tried to burn tegra fuses, the burning process was working fine, I didn’t see any issue.

When I rebooted the device, it stays stuck, no traces in the serial UART and in the recovery mode.

Here is the command line:

  • generate the fuse blob
$ sudo ./odmfuse.sh --noburn -j -i 0x19 -c NS --odm_reserved0 0xfbb28eb6 --odm_reserved1 0xbe4bdc9c --odm_reserved2 0xef480ce5 --odm_reserved3 0x1ebf4ae3 --odm_reserved4 0x29252cae --odm_reserved5 0x56fd2b7c --odm_reserved6 0x29d4fd9e --odm_reserved7 0xe4be918d --KEK0 my_kek0.key --KEK1 my_kek1.key --KEK2 my_kek2.key jetson-xavier-nx-devkit-emmc
  • burn the tegra fuses
$ sudo ./fusecmd.sh
  • Here is the contents of the odmfuse_pkc.xml
$ cat ./odmfuse_pkc.xml 
<genericfuse MagicId="0x45535546" version="1.0.0">
<fuse name="ReservedOdm0" size="4" value="0xfbb28eb6" />
<fuse name="ReservedOdm1" size="4" value="0xbe4bdc9c" />
<fuse name="ReservedOdm2" size="4" value="0xef480ce5" />
<fuse name="ReservedOdm3" size="4" value="0x1ebf4ae3" />
<fuse name="ReservedOdm4" size="4" value="0x29252cae" />
<fuse name="ReservedOdm5" size="4" value="0x56fd2b7c" />
<fuse name="ReservedOdm6" size="4" value="0x29d4fd9e" />
<fuse name="ReservedOdm7" size="4" value="0xe4be918d" />
<fuse name="Kek0" size="16" value="0xb92c6418d1bb66d116e809a599bb5ffd" />
<fuse name="Kek1" size="16" value="0x90feb45b1a2be3ffe20dd5225a1f9858" />
<fuse name="Kek2" size="16" value="0xe26ac1d35b2a5503d2d5627afe28bb3d" />
<fuse name="BootSecurityInfo" size="4" value="0x1" />
</genericfuse>

tegra_fuses_burning_serial_uart.log (12.6 KB)

tegra_fuses_burning_fusecmd_script_traces.log (28.3 KB)
When I tried to flash my device Jetson Xavier NX, I got the following issue:

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.0026 ] Generating RCM messages
[   0.0033 ] tegrahost_v2 --chip 0x19 0 --magicid MB1B --appendsigheader mb1_t194_prod.bin zerosbk
[   0.0040 ] Header already present for mb1_t194_prod.bin
[   0.0065 ] 
[   0.0072 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0078 ] Assuming zero filled SBK key
[   0.0080 ] 
[   0.0088 ] tegrasign_v2 --key None --file mb1_t194_prod_sigheader.bin --offset 2960 --length 1136 --pubkeyhash pub_key.key
[   0.0096 ] Assuming zero filled SBK key
[   0.0103 ] 
[   0.0113 ] tegrahost_v2 --chip 0x19 0 --updatesigheader mb1_t194_prod_sigheader.bin mb1_t194_prod_sigheader.hash zerosbk
[   0.0145 ] 
[   0.0155 ] tegrabct_v2 --chip 0x19 0 --sfuse tegra194-mb1-soft-fuses-l4t.cfg.pdf sfuse.bin
[   0.0162 ] 
[   0.0169 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x19 0 --sfuses sfuse.bin --download rcm mb1_t194_prod_sigheader.bin 0 0
[   0.0176 ] RCM 0 is saved as rcm_0.rcm
[   0.0200 ] RCM 1 is saved as rcm_1.rcm
[   0.0200 ] RCM 2 is saved as rcm_2.rcm
[   0.0200 ] List of rcm files are saved in rcm_list.xml
[   0.0200 ] 
[   0.0200 ] Signing RCM messages
[   0.0208 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key --getmontgomeryvalues montgomery.bin
[   0.0215 ] Assuming zero filled SBK key
[   0.0219 ] 
[   0.0219 ] Copying signature to RCM mesages
[   0.0226 ] tegrarcm_v2 --chip 0x19 0 --updatesig rcm_list_signed.xml
[   0.0236 ] 
[   0.0236 ] Boot Rom communication
[   0.0243 ] tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
[   0.0249 ] RCM version 0X13
[   0.0256 ] Boot Rom communication failed
[   5.1028 ] 
Error: Return value 3
Command tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
ERR: could not retrieve EEPROM board information

Why the device is so fragile ? Am I doing something wrong ?

Any help would be appreciated.

Thanks,
Ilies

hello ilies.chergui,

just like to confirm you’re actually working with production modules, (i.e. eMMC modules) before digging into this.
thanks

hello ilies.chergui,

there’s error shows fuse burning failed.
could you please double check fuse burning is complete or not?

bootloader sudo ./fusecmd.sh 
...

[   2.1048 ] tegrarcm_v2 --oem burnfuses blow_fuse_data.bin
[   2.1054 ] Applet version 01.00.0000
[   2.1205 ] 0000000074741201: E> NV3P_SERVER: Fuse burn is not supported.
[   2.1302 ] 
[   2.1302 ] Fuse burning failed

Hey @JerryChang

I confirm that I’m using Jetson Xavier NX (eMMC module)

Thanks

Hey @JerryChang

Regarding the traces in the host machine, I can see that the Tegra fuses burning is completed successfully.

[   5.4574 ] tegradevflash_v2 --iscpubl
[   5.4582 ] Bootloader version 01.00.0000
[   5.4814 ] Bootloader version 01.00.0000
[   5.4827 ] 
[   5.4828 ] tegradevflash_v2 --oem burnfuses blow_fuse_data.bin
[   5.4855 ] Bootloader version 01.00.0000
[   5.5018 ] Fusing burning successful
[   5.8253 ] 
[   5.8286 ] tegradevflash_v2 --reboot recovery
[   5.8316 ] Bootloader version 01.00.0000
[   5.8360 ] 

However, I cannot see that the totality of the Key Encryption Keys (128 bits) were burnt.
Please see the traces (serial UART) below:

[0072.377] I> fuse read is 18642cb9
[0072.378] I> Fuse (49) burnt successfully with val 0x18642cb9
[0072.378] I> fuse : Kek0 burnt successfully
[0072.380] E> FUSE: Invalid value fuse_word:0.
[0072.417] I> fuse read is 5bb4fe90
[0072.417] I> Fuse (50) burnt successfully with val 0x5bb4fe90
[0072.418] I> fuse : Kek1 burnt successfully
[0072.461] I> fuse read is d3c16ae2
[0072.461] I> Fuse (41) burnt successfully with val 0xd3c16ae2
[0072.462] I> fuse : Kek2 burnt successfully
[0072.468] E> FUSE: Invalid value fuse_word:0.

hello ilies.chergui,

could you please have offline approach to generate the image blob.
for example,
$ sudo BOARDID=<> FAB=<> BOARDSKU=<> BOARDREV=<> ./flash.sh --no-flash -u <pkc_keyfile> -v <sbk_keyfile> jetson-xavier-nx-devkit-emmc mmcblk0p1

after that,
please have a try with the generate command-line to flash the board,
thanks

Hello @JerryChang

For your information, I didn’t burn PKC and SBK

I burnt only odm-reserved[0-7], kek0, kek1and kek2

I don’t believe that the command you suggest will work.

Should I burn the PKC and SBK first via script odmfuse.sh ? What do you think ?

hello ilies.chergui,

to be honest,
we didn’t verify the combination of NS+ODM_Reserved+KEKs. we tested PKC+SBK+… combinations.

here’re steps of burning fuse and flashing the board,

  1. prepare keys and run odmfuse.sh with noburn options to generate the fuse blob.
  2. un-tar fuseblob.tbz2 and check odmfuse_pkc.xml, if required fuses are included.
  3. execute generated fusecmd.sh to actually fuse the board.
  4. perform flash.sh with no-flash options to generate image blob.
  5. confirm image blob is created, perform flashcmd.txt to flash the target.

you may include the board information into both of odmfuse.sh and flash.sh command lines, it should workaround the Boot Rom communication failed errors.
for example,
$ sudo BOARDID=3668 FAB=100 BOARDSKU=0001 BOARDREV=F.0 ./odmfuse.sh --noburn ... jetson-xavier-nx-devkit-emmc
and
$ sudo BOARDID=3668 FAB=100 BOARDSKU=0001 BOARDREV=F.0 ./flash.sh --no-flash ... jetson-xavier-nx-devkit-emmc mmcblk0p1

you should check the board information via TNSPEC,
or, here’s an example in the l4t_generate_soc_bup.sh for the detail board spec.
for example,

    # jetson-xavier-nx-devkit-emmc:
    'boardid=3668;fab=100;boardsku=0001;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'

hence,
please include the board information and try again, and share results to us for reference,
thanks

Hey @JerryChang

I followed the instructions that you shared to burn the tegra fuses (PKC and SBK) but it doesn’t work.

  • Prepare keys (PKC and SKB) and run odmfuse.sh with noburn options
$ sudo BOARDID=3668 BOARDSKU=0001 FAB=100 FUSELEVEL=fuselevel_production ./odmfuse.sh --noburn -j -i 0x19 -c PKC -k my_privkey.pem -S my_sbk.key jetson-xavier-nx-devkit-emmc

fuseblob.tbz2 (8.5 MB)

  • check odmfuse_pkc.xml
$ cat odmfuse_pkc.xml 
<genericfuse MagicId="0x45535546" version="1.0.0">
<fuse name="SecureBootKey" size="16" value="0xe4b0f49660b86a4c97b0a5ca6d28c969" />
<fuse name="PublicKeyHash" size="32" value="0x179d12836c8f1cc41a037a7f923c9ccb218b4ef8df256e8c634cc376e2f5aea3" />
<fuse name="BootSecurityInfo" size="4" value="0x5" />
</genericfuse>
  • Execute generated fusecmd.sh to burn the Tegra fuses
$ sudo bash ./fusecmd.sh 
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.0027 ] tegrahost_v2 --chip 0x19 0 --magicid MB1B --appendsigheader mb1_t194_prod.bin zerosbk
[   0.0033 ] Header already present for mb1_t194_prod.bin
[   0.0058 ] 
[   0.0066 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0073 ] Assuming zero filled SBK key
[   0.0073 ] 
[   0.0081 ] tegrasign_v2 --key None --file mb1_t194_prod_sigheader.bin --offset 2960 --length 1136 --pubkeyhash pub_key.key
[   0.0088 ] Assuming zero filled SBK key
[   0.0091 ] 
[   0.0098 ] tegrahost_v2 --chip 0x19 0 --updatesigheader mb1_t194_prod_sigheader.bin mb1_t194_prod_sigheader.hash zerosbk
[   0.0128 ] 
[   0.0136 ] tegrabct_v2 --chip 0x19 0 --sfuse tegra194-mb1-soft-fuses-l4t.cfg.pdf sfuse.bin
[   0.0144 ] 
[   0.0151 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x19 0 --sfuses sfuse.bin --download rcm mb1_t194_prod_sigheader.bin 0 0
[   0.0157 ] RCM 0 is saved as rcm_0.rcm
[   0.0181 ] RCM 1 is saved as rcm_1.rcm
[   0.0181 ] RCM 2 is saved as rcm_2.rcm
[   0.0181 ] List of rcm files are saved in rcm_list.xml
[   0.0181 ] 
[   0.0182 ] Signing RCM messages
[   0.0188 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key --getmontgomeryvalues montgomery.bin
[   0.0195 ] Assuming zero filled SBK key
[   0.0201 ] 
[   0.0201 ] Copying signature to RCM mesages
[   0.0209 ] tegrarcm_v2 --chip 0x19 0 --updatesig rcm_list_signed.xml
[   0.0221 ] 
[   0.0221 ] Boot Rom communication
[   0.0229 ] tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml
[   0.0236 ] BR_CID: 0x98021911647076c20c00000002ff8280
[   0.0244 ] RCM version 0X13
[   0.0381 ] Boot Rom communication failed
[   5.2452 ] 
Error: Return value 3
Command tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml

What do you think ?
How can I fix the issue Boot Rom communication failed ?

Thanks.

hello ilies.chergui,

it’s possible that dump eeprom board info cvm.bin mismatch your board spec.
for example,
it’s ./chkbdinfo -i cvm.bin to parse the board-id into the command-line.

did you know your correct board info? for example, it’ll report during the flashing process.
since the fuse burning can’t be reverted, suggest you should enable the --test command option in the fuse burning command,
thanks

Hello @JerryChang

I don’t understand why the Tegra fuses burning does affect the EEPROM contents.

I tried the script odmfuse.sh with --noburn and --test options but it doesn’t work.

  • Here is the result
➜  Linux_for_Tegra sudo ./odmfuse.sh --noburn --test -j -i 0x19 -c PKC -k my_privkey.pem -S my_sbk.key jetson-xavier-nx-devkit-emmc
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
./tegraflash.py --chip 0x19 --applet "/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin" --skipuid --soft_fuses tegra194-mb1-soft-fuses-l4t.cfg --bins "mb2_applet nvtboot_applet_t194.bin" --cmd "dump eeprom boardinfo cvm.bin;reboot recovery" 
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.0033 ] Generating RCM messages
[   0.0041 ] tegrahost_v2 --chip 0x19 0 --magicid MB1B --appendsigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin zerosbk
[   0.0048 ] Header already present for /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin
[   0.0073 ] 
[   0.0080 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0086 ] Assuming zero filled SBK key
[   0.0086 ] 
[   0.0093 ] tegrasign_v2 --key None --file /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin --offset 2960 --length 1136 --pubkeyhash pub_key.key
[   0.0100 ] Assuming zero filled SBK key
[   0.0104 ] 
[   0.0110 ] tegrahost_v2 --chip 0x19 0 --updatesigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.hash zerosbk
[   0.0140 ] 
[   0.0149 ] tegrabct_v2 --chip 0x19 0 --sfuse tegra194-mb1-soft-fuses-l4t.cfg.pdf sfuse.bin
[   0.0157 ] 
[   0.0166 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x19 0 --sfuses sfuse.bin --download rcm /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin 0 0
[   0.0173 ] RCM 0 is saved as rcm_0.rcm
[   0.0196 ] RCM 1 is saved as rcm_1.rcm
[   0.0196 ] RCM 2 is saved as rcm_2.rcm
[   0.0196 ] List of rcm files are saved in rcm_list.xml
[   0.0196 ] 
[   0.0196 ] Signing RCM messages
[   0.0203 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key --getmontgomeryvalues montgomery.bin
[   0.0210 ] Assuming zero filled SBK key
[   0.0217 ] 
[   0.0217 ] Copying signature to RCM mesages
[   0.0225 ] tegrarcm_v2 --chip 0x19 0 --updatesig rcm_list_signed.xml
[   0.0236 ] 
[   0.0236 ] Boot Rom communication
[   0.0243 ] tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
[   0.0249 ] RCM version 0X13
[   0.0259 ] Boot Rom communication failed
[   5.0524 ] 
Error: Return value 3
Command tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
Reading board information failed.
➜  Linux_for_Tegra 

Is there any option to recover the EEPROM or bypass bootrom communication ?

hello ilies.chergui,

please use below command-line to test again, it include -p options.
i.e. $ sudo ./odmfuse.sh --noburn --test -j -i 0x19 -c PKC -p -k my_privkey.pem -S my_sbk.key jetson-xavier-nx-devkit-emmc

BTW,
may I know is this a follow-up issue of Topic 158361?
we had some secure package updates, may I also know is it possible to moving to the latest release (i.e. l4t-r32.5.1) for development.
thanks

Hello @JerryChang

Thanks for your quick reply, this issue is not a follow-up of Topic 158361

In Topic 158361, I was using the Jetson Xavier NX (SDcard version)

For this issue I’m using a Production module as I mentioned Here.

Regarding the latest version of L4T, I will give it a try and I will let you know

Thanks

hello ilies.chergui,

got it, please have a try to include -p options into the command-line.
thanks

Hello @JerryChang

I tried with -p option in the command-line but it doesn’t work to me.

➜  Linux_for_Tegra sudo ./odmfuse.sh --noburn --test -j -i 0x19 -c PKC -p -k my_privkey.pem -S my_sbk.key jetson-xavier-nx-devkit-emmc      
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
./tegraflash.py --chip 0x19 --applet "/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin" --skipuid --soft_fuses tegra194-mb1-soft-fuses-l4t.cfg --bins "mb2_applet nvtboot_applet_t194.bin" --cmd "dump eeprom boardinfo cvm.bin;reboot recovery" 
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.0068 ] Generating RCM messages
[   0.0080 ] tegrahost_v2 --chip 0x19 0 --magicid MB1B --appendsigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin zerosbk
[   0.0089 ] Header already present for /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin
[   0.0127 ] 
[   0.0137 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0146 ] Assuming zero filled SBK key
[   0.0147 ] 
[   0.0157 ] tegrasign_v2 --key None --file /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin --offset 2960 --length 1136 --pubkeyhash pub_key.key
[   0.0167 ] Assuming zero filled SBK key
[   0.0173 ] 
[   0.0184 ] tegrahost_v2 --chip 0x19 0 --updatesigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.hash zerosbk
[   0.0233 ] 
[   0.0249 ] tegrabct_v2 --chip 0x19 0 --sfuse tegra194-mb1-soft-fuses-l4t.cfg.pdf sfuse.bin
[   0.0262 ] 
[   0.0272 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x19 0 --sfuses sfuse.bin --download rcm /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin 0 0
[   0.0281 ] RCM 0 is saved as rcm_0.rcm
[   0.0319 ] RCM 1 is saved as rcm_1.rcm
[   0.0320 ] RCM 2 is saved as rcm_2.rcm
[   0.0320 ] List of rcm files are saved in rcm_list.xml
[   0.0320 ] 
[   0.0320 ] Signing RCM messages
[   0.0331 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key --getmontgomeryvalues montgomery.bin
[   0.0341 ] Assuming zero filled SBK key
[   0.0350 ] 
[   0.0351 ] Copying signature to RCM mesages
[   0.0367 ] tegrarcm_v2 --chip 0x19 0 --updatesig rcm_list_signed.xml
[   0.0386 ] 
[   0.0387 ] Boot Rom communication
[   0.0396 ] tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
[   0.0406 ] RCM version 0X13
[   0.0418 ] Boot Rom communication failed
[   5.0489 ] 
Error: Return value 3
Command tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
Reading board information failed.
➜  Linux_for_Tegra 

What do you think ?
I don’t understand why burning the tegra fuses affects EEPROM ?
How can I go to the production and the process to burn the tegra fuses process is unstable ?
I think that I haven’t done something wrong to break the device. I followed the secure boot documentation.
I’m so disappointed.

hello ilies.chergui,

we’ve check locally, the exactly same odmfuse commands does works.
i.e. $ sudo ./odmfuse.sh --noburn --test -j -i 0x19 -c PKC -p -k my_privkey.pem -S my_sbk.key jetson-xavier-nx-devkit-emmc

may I know is this Xavier NX ever fused before?
thanks

Hello @JerryChang
My Jetson XAvier NX was not fused before.

Could you please explain why my device doesn’t boot (I can’t see anything via the Serial UART) ?
When I try the following command, my device looks like it is in recovery mode

➜  ~ lsusb | grep -i "nvidia"
Bus 001 Device 010: ID 0955:7e19 NVidia Corp. 

hello ilies.chergui,

could you please read the fuse info from the target board with odmfuseread.sh, it supports with t194 series platforms.
please put device to enter forced-recovery mode and execute $ ./odmfuseread.sh -i <chip_id> [options] target_board.
please share the fuse values for reference, thanks

Hello @JerryChang
Thanks for your quick relay.
I try the command you shared last time and it doesn’t work to me.
I got the same issue Reading board information failed.. the issue that I can see is the EEPROM is not accessible.
I try it again now. Here is the result:

➜  Linux_for_Tegra sudo ./odmfuseread.sh -c NS -i 0x19 jetson-xavier-nx-devkit-emmc      
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
copying soft_fuses(/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-soft-fuses-l4t.cfg)... done.
./tegraflash.py --chip 0x19 --applet "/home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin" --skipuid --soft_fuses tegra194-mb1-soft-fuses-l4t.cfg --bins "mb2_applet nvtboot_applet_t194.bin" --cmd "dump eeprom boardinfo cvm.bin;reboot recovery" 
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.0113 ] Generating RCM messages
[   0.0174 ] tegrahost_v2 --chip 0x19 0 --magicid MB1B --appendsigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin zerosbk
[   0.0188 ] Header already present for /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod.bin
[   0.0239 ] 
[   0.0258 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0271 ] Assuming zero filled SBK key
[   0.0314 ] 
[   0.0334 ] tegrasign_v2 --key None --file /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin --offset 2960 --length 1136 --pubkeyhash pub_key.key
[   0.0369 ] Assuming zero filled SBK key
[   0.0372 ] 
[   0.0388 ] tegrahost_v2 --chip 0x19 0 --updatesigheader /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.hash zerosbk
[   0.0557 ] 
[   0.0613 ] tegrabct_v2 --chip 0x19 0 --sfuse tegra194-mb1-soft-fuses-l4t.cfg.pdf sfuse.bin
[   0.0650 ] 
[   0.0669 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x19 0 --sfuses sfuse.bin --download rcm /home/ichergui/projects/platforms/xavier_nx_devkit_emmc/jetpack_4.4/nvidia_sdk/JetPack_4.4_Linux_JETSON_XAVIER_NX/Linux_for_Tegra/bootloader/mb1_t194_prod_sigheader.bin 0 0
[   0.0684 ] RCM 0 is saved as rcm_0.rcm
[   0.0761 ] RCM 1 is saved as rcm_1.rcm
[   0.0765 ] RCM 2 is saved as rcm_2.rcm
[   0.0798 ] List of rcm files are saved in rcm_list.xml
[   0.0801 ] 
[   0.0801 ] Signing RCM messages
[   0.0826 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key --getmontgomeryvalues montgomery.bin
[   0.0871 ] Assuming zero filled SBK key
[   0.0872 ] 
[   0.0909 ] Copying signature to RCM mesages
[   0.0946 ] tegrarcm_v2 --chip 0x19 0 --updatesig rcm_list_signed.xml
[   0.0991 ] 
[   0.0992 ] Boot Rom communication
[   0.1009 ] tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
[   0.1024 ] RCM version 0X13
[   0.1031 ] Boot Rom communication failed
[   5.2592 ] 
Error: Return value 3
Command tegrarcm_v2 --chip 0x19 0 --rcm rcm_list_signed.xml --skipuid
Reading board information failed.
➜  Linux_for_Tegra 
  • Here is the fuses and their values:
Tegra fuse Value
odm_reserved0 0xfbb28eb6
odm_reserved1 0xbe4bdc9c
odm_reserved2 0xef480ce5
odm_reserved3 0x1ebf4ae3
odm_reserved4 0x29252cae
odm_reserved5 0x56fd2b7c
odm_reserved6 0x29d4fd9e
odm_reserved7 0xe4be918d
KEK0 0xb92c6418d1bb66d116e809a599bb5ffd
KEK1 0x90feb45b1a2be3ffe20dd5225a1f9858
KEK2 0xe26ac1d35b2a5503d2d5627afe28bb3d

hello ilies.chergui,

it’s necessary that you must enable secureBoot for Xavier to program all fuse (PKC, SBK, KEK…etc) at once, in addition to make the “SecurityMode” enabled. (i.e. -p option of odmfuse.sh)

let’s check your Boot Rom communication failed first,
are you able to prints UID of chip as below. i.e. $OUT/Linux_for_Tegra/bootloader/tegrarcm_v2 --uid
for a clean board, the first nibble of BR_CID is expected to be 8.