How to burn ODM fuse bits (TX2)?

Tried to preserve access rights, but failed.

$ sudo tar xvfp fuseblob.tbz2 -C fuses_tests/
bootloader/odmfuse_pkc.xml
bootloader/fusecmd.sh
bootloader/mkpkc
bootloader/tegrabct_v2
bootloader/tegradevflash_v2
bootloader/tegraflash.py
bootloader/tegraflash_internal.py
bootloader/tegrahost_v2
bootloader/tegraparser_v2
bootloader/tegrarcm_v2
bootloader/tegrasign_v2
bootloader/P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg
bootloader/tegra186-mb1-bct-misc-si-l4t.cfg
bootloader/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg
bootloader/minimal_scr.cfg
bootloader/mobile_scr.cfg
bootloader/tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg
bootloader/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg
bootloader/tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg
bootloader/tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
bootloader/emmc.cfg
bootloader/nvtboot_recovery.bin
bootloader/preboot_d15_prod_cr.bin
bootloader/mce_mts_d15_prod_cr.bin
bootloader/tegra186-quill-p3310-1000-c03-00-base.dtb
bootloader/bpmp.bin
bootloader/tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb
bootloader/tos-trusty.img
bootloader/eks.img
bootloader/mb1_recovery_prod.bin
bootloader/nvtboot_recovery_cpu.bin
bootloader/flash.xml
bootloader/mb1_prod.bin
bootloader/spe.bin
bootloader/nvtboot.bin
bootloader/system.img
bootloader/cboot.bin
bootloader/camera-rtcpu-sce.img
bootloader/warmboot.bin
bootloader/boot.img
bootloader/tegra186-quill-p3310-1000-c03-00-base.dtb
bootloader/slot_metadata.bin
bootloader/xusb_sil_rel_fw
bootloader/adsp-fw.bin
bootloader/bmp.blob
bootloader$ sudo ./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.0412 ] Burning fuses
[   0.0412 ] Generating RCM messages
[   0.0433 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[   0.0452 ] RCM 0 is saved as rcm_0.rcm
[   0.0462 ] RCM 1 is saved as rcm_1.rcm
[   0.0465 ] List of rcm files are saved in rcm_list.xml
[   0.0465 ] 
[   0.0465 ] Signing RCM messages
[   0.0485 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0503 ] Assuming zero filled SBK key
[   0.0599 ] 
[   0.0599 ] Copying signature to RCM mesages
[   0.0620 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[   0.0648 ] 
[   0.0649 ] Boot Rom communication
[   0.0667 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml
[   0.0687 ] BR_CID: 0x818010016441b749240000000afb0340
[   0.2325 ] RCM version 0X180001
[   0.4086 ] Boot Rom communication completed
[   1.4152 ] 
[   2.4188 ] tegrarcm_v2 --isapplet
[   2.4209 ] Applet version 01.00.0000
[   2.5185 ] 
[   2.5227 ] Parsing fuse info as per xml file
[   2.5250 ] tegraparser_v2 --fuse_info odmfuse_pkc.xml blow_fuse_data.bin
[   2.5273 ] MagicId=0x45535546 version=0x1
[   2.5281 ] node: name=ReservedOdm0 size=4
[   2.5282 ]   value=0x00000011
[   2.5282 ] node: name=ReservedOdm1 size=4
[   2.5282 ]   value=0x00000111
[   2.5282 ] node: name=ReservedOdm2 size=4
[   2.5282 ]   value=0x00000010
[   2.5282 ] node: name=ReservedOdm3 size=4
[   2.5282 ]   value=0x00000001
[   2.5282 ] node: name=ReservedOdm4 size=4
[   2.5283 ]   value=0x00000010
[   2.5283 ] node: name=ReservedOdm5 size=4
[   2.5283 ]   value=0x00000001
[   2.5283 ] node: name=ReservedOdm6 size=4
[   2.5283 ]   value=0x00000010
[   2.5283 ] node: name=ReservedOdm7 size=4
[   2.5283 ]   value=0x00000001
[   2.5284 ] 
[   2.5304 ] tegrarcm_v2 --oem burnfuses blow_fuse_data.bin
[   2.5325 ] Applet version 01.00.0000
[   2.9179 ] 0000000000000001: Oem commands are not supported
[   2.9189 ] Fuse burning failed
[   2.9189 ] 
[   2.9189 ] trying fusing with CPU binary
[   2.9232 ] tegrasign_v2 --key None --getmode mode.txt
[   2.9253 ] Assuming zero filled SBK key
[   2.9256 ] 
[   2.9258 ] Parsing partition layout
[   2.9279 ] tegraparser_v2 --pt flash.xml.tmp
[   2.9314 ] 
[   2.9315 ] Creating list of images to be signed
[   2.9334 ] tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   2.9354 ] Stat for RECFILE failed
[   2.9617 ] 
Error: Return value 4
Command tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk

Hi @TakenoriSato

Can you please share your initial values of the odm_reserved fuses ?

If you are sure about the odm_reserved values that you are using in the command line, try this:

  • Generate the fuseblob
# BOARDID=3310 FAB=C04 fuselevel=fuselevel_production ./odmfuse.sh --noburn -j -i 0x18 -c NS -o "0x00000011 0x00000111 0x00000010 0x00000001 0x00000010 0x00000001 0x00000010 0x00000001" jetson-tx2
  • Burn the odm_reserved fuses
$ mkdir /tmp/fuses_tests
$ tar xf fuseblob.tbz2 -C /tmp/fuses_tests
$ cd /tmp/fuses_tests/bootloader
# ./fusecmd.sh 

Note:
# mean that performing the command with sudo
$ mean that performing the command without sudo

Let me know if you need help.

Hi, thanks for the update!

The new fuselevel variable was added, right? I used the value for this box.

$ sudo BOARDID=3310 FAB=C04 fuselevel=fuselevel_production ./odmfuse.sh --noburn -j -i 0x18 -c NS -o "0xa080000a 0xb3fc62a3 0x2c7bee36 0x2d40c6b2 0xb502534b 0x8a0b0bd7 0xb03148bc  0x00000000" jetson-tx2
Board ID(3310) version(C04) sku() revision()
copying sdram_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg)... done.
copying misc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-misc-si-l4t.cfg)... done.
copying pinmux_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg)... done.
copying scr_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/minimal_scr.cfg)... done.
copying scr_cold_boot_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/mobile_scr.cfg)... done.
copying pmc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg)... done.
copying pmic_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg)... done.
copying br_cmd_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg)... done.
copying prod_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg)... done.
copying dev_params(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/BCT/emmc.cfg)... done.
Existing mb2_bootloader(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
Existing mts_preboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/preboot_d15_prod_cr.bin) reused.
Existing mts_bootpack(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/mce_mts_d15_prod_cr.bin) reused.
copying bootloader_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb)... done.
Existing bpmp_fw(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/bpmp.bin) reused.
copying bpmp_fw_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb)... done.
Existing tlk(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/tos-trusty.img) reused.
Existing eks(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/eks.img) reused.
Existing mb1file(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/mb1_prod.bin) reused.
Existing spefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/spe.bin) reused.
copying tegraboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/nvtboot.bin)... done.
Existing tbcfile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/cboot.bin) reused.
Existing scefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
copying wb0boot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/t186ref/warmboot.bin)... done.
done.
Existing cfg(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/flash.xml) reused.
Existing bl(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/nvtboot_recovery_cpu.bin) reused.
Existing applet(/l4tpool/l4timages/TX2G1.0/L4T32.3.1/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin) reused.
*** Generating fuse configuration ... done.
*** Start preparing fuse configuration ... 
*** done.

Unfortunately, didn’t work again…
But, Can not open USB has gone.

$ sudo ./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.0432 ] Burning fuses
[   0.0433 ] Generating RCM messages
[   0.0453 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[   0.0473 ] RCM 0 is saved as rcm_0.rcm
[   0.0483 ] RCM 1 is saved as rcm_1.rcm
[   0.0483 ] List of rcm files are saved in rcm_list.xml
[   0.0483 ] 
[   0.0483 ] Signing RCM messages
[   0.0501 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0519 ] Assuming zero filled SBK key
[   0.0608 ] 
[   0.0608 ] Copying signature to RCM mesages
[   0.0628 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[   0.0655 ] 
[   0.0656 ] Boot Rom communication
[   0.0675 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml
[   0.0694 ] BR_CID: 0x818010016441b749240000000afb0340
[   0.2277 ] RCM version 0X180001
[   0.4035 ] Boot Rom communication completed
[   1.4098 ] 
[   2.4133 ] tegrarcm_v2 --isapplet
[   2.4154 ] Applet version 01.00.0000
[   2.7525 ] 
[   2.7568 ] Parsing fuse info as per xml file
[   2.7590 ] tegraparser_v2 --fuse_info odmfuse_pkc.xml blow_fuse_data.bin
[   2.7610 ] MagicId=0x45535546 version=0x1
[   2.7616 ] node: name=ReservedOdm0 size=4
[   2.7616 ]   value=0xa080000a
[   2.7617 ] node: name=ReservedOdm1 size=4
[   2.7617 ]   value=0xb3fc62a3
[   2.7617 ] node: name=ReservedOdm2 size=4
[   2.7617 ]   value=0x2c7bee36
[   2.7617 ] node: name=ReservedOdm3 size=4
[   2.7617 ]   value=0x2d40c6b2
[   2.7618 ] node: name=ReservedOdm4 size=4
[   2.7618 ]   value=0xb502534b
[   2.7618 ] node: name=ReservedOdm5 size=4
[   2.7618 ]   value=0x8a0b0bd7
[   2.7619 ] node: name=ReservedOdm6 size=4
[   2.7619 ]   value=0xb03148bc
[   2.7619 ] node: name=ReservedOdm7 size=4
[   2.7619 ]   value=0x00000000
[   2.7620 ] 
[   2.7642 ] tegrarcm_v2 --oem burnfuses blow_fuse_data.bin
[   2.7662 ] Applet version 01.00.0000
[   3.1050 ] 0000000000000001: Oem commands are not supported
[   3.1056 ] Fuse burning failed
[   3.1057 ] 
[   3.1058 ] trying fusing with CPU binary
[   3.1098 ] tegrasign_v2 --key None --getmode mode.txt
[   3.1119 ] Assuming zero filled SBK key
[   3.1123 ] 
[   3.1124 ] Parsing partition layout
[   3.1145 ] tegraparser_v2 --pt flash.xml.tmp
[   3.1180 ] 
[   3.1181 ] Creating list of images to be signed
[   3.1200 ] tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   3.1217 ] Stat for RECFILE failed
[   3.1487 ] 
Error: Return value 4
Command tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk

@ilies.chergui

Why do you use 0x00000001 for the 8th value? Isn’t it supposed to be 0x00000000 as the reserved one by NVIDIA?

Hi,
A user has shared his command:


FYR. We re checking the issue of programming odm_lock fuse.

Hi Dane, thanks for sharing the post.

I hope the mess is resolved soon.

By the way, let me clarify the followings.

  1. the default pkc_disable value

In the discussion of the case on Nano, we have figured out the default value is 0x1 (NS). So, only specifying -c PKC is not enough, but -p has to be set, too. It means a fuse burning has to be done by a single command.

But, ilies suggested to use -c NS. Is this meant to be only for the testing purpose? Or the default value on TX2 is different? (NS is 0x0?)

  1. the value passed along with -o option

In the discussion of the case on Nano, we have figured out the value is in the form of a single HEX value instead of 8 HEX values.

In case of TX2, as ilies suggests, it is the form of 8 HEX values?

  1. The most significant HEX value

According to the L4T 32.3.1 document, it says:

The value must be a quoted series of eight 32-bit HEX numbers such as:

“0xXXXXXXXX 0xXXXXXXXX 0xXXXXXXXX 0xXXXXXXXX 0xXXXXXXXX 0xXXXXXXXX 0xXXXXXXXX 0x00000000”
The last 32-bit HEX number must be 0x00000000 because these fuses are reserved for NVIDIA use.

But ilies used 0x00000001 for the 8th value, and he has reported it was successful. So, what is the correct behavior?

Hi,

pkc_disable fuse is on Jetson Nano/TX1 only. Not on TX2 and Xavier. We have fixed it in development guide of r32.4.2. Sorry for the wrong in formationin r32.3.1.

The form is different on Nano and TX2. Please set 8 32-bit HEX numbers on TX2.

Thanks for pointing this out. We hope these 32 bits are not touched but looks like some users touch the bits. Will check if this triggers the follow-up problems.

1 Like

Hi @DaneLLL

Thank you for sharing, this is very useful.

Concerning the fuse pkc_disable, I already check that on the Jetson TX2 and Xavier, that’s why I remove it in my patch, I wasn’t sure about TX1 and Jetson Nano.

The patch that I shared previously, I test it on different Jetsonn TX2 and it work fine.

@TakenoriSato, there is no specific value to set for the 8th value of the ODM_RESERVED fuses, this value only for tests purpose.

Sorry for the late response, I was quite busy.

Hi @ilies.chergui

It doesn’t work.

I have retried from scratch as below.

  1. Check if fuses are not burned before
$ sudo cat /sys/devices/3820000.efuse/3820000.efuse\:efuse-burn/*
[sudo] password for nvidia: 
0x00000000
0x00000000
0x00003000
0x00000000
cat: '/sys/devices/3820000.efuse/3820000.efuse:efuse-burn/driver': Is a directory
(null)
0x00000000000000000000000000000000
0x00000000000000000000000000000000
0x00000000000000000000000000000000
of:Nefuse-burnT<NULL>Cnvidia,tegra186-efuse-burn0x00000000
0x00000000
0x00000000
0x00000000
cat: '/sys/devices/3820000.efuse/3820000.efuse:efuse-burn/of_node': Is a directory
cat: '/sys/devices/3820000.efuse/3820000.efuse:efuse-burn/power': Is a directory
0x0000000000000000000000000000000000000000000000000000000000000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000000000000000000000000000
cat: '/sys/devices/3820000.efuse/3820000.efuse:efuse-burn/subsystem': Is a directory
DRIVER=tegra-fuse-burn
OF_NAME=efuse-burn
OF_FULLNAME=/efuse@3820000/efuse-burn
OF_COMPATIBLE_0=nvidia,tegra186-efuse-burn
OF_COMPATIBLE_N=1
MODALIAS=of:Nefuse-burnT<NULL>Cnvidia,tegra186-efuse-burn

$ ls -l /sys/devices/3820000.efuse/3820000.efuse\:efuse-burn/
total 0
-rw-rw---- 1 root root 4096 May  3 08:10 arm_jtag_disable
-rw-rw---- 1 root root 4096 May  3 08:10 boot_security_info
-rw-rw---- 1 root root 4096 May  3 08:10 calc_h2
-rw-rw---- 1 root root 4096 May  3 08:10 debug_authentication
lrwxrwxrwx 1 root root    0 May  3 08:10 driver -> ../../../bus/platform/drivers/tegra-fuse-burn
-rw-r--r-- 1 root root 4096 May  3 08:10 driver_override
-rw-rw---- 1 root root 4096 May  3 08:10 kek0
-rw-rw---- 1 root root 4096 May  3 08:10 kek1
-rw-rw---- 1 root root 4096 May  3 08:10 kek2
-r--r--r-- 1 root root 4096 May  3 08:10 modalias
-rw-rw---- 1 root root 4096 May  3 08:10 odm_h2
-rw-rw---- 1 root root 4096 May  3 08:10 odm_info
-rw-rw---- 1 root root 4096 May  3 08:10 odm_lock
-rw-rw---- 1 root root 4096 May  3 08:10 odm_production_mode
lrwxrwxrwx 1 root root    0 May  3 08:10 of_node -> ../../../firmware/devicetree/base/efuse@3820000/efuse-burn
drwxr-xr-x 2 root root    0 May  3 08:10 power
-rw-rw---- 1 root root 4096 May  3 08:10 public_key
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm0
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm1
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm2
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm3
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm4
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm5
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm6
-rw-rw---- 1 root root 4096 May  3 08:10 reserved_odm7
-rw-rw---- 1 root root 4096 May  3 08:10 secure_boot_key
lrwxrwxrwx 1 root root    0 May  3 08:08 subsystem -> ../../../bus/platform
-rw-r--r-- 1 root root 4096 May  3 08:08 uevent
  1. Check if a correct secureboot package is used
$ md5sum secureboot_R32.3.1_aarch64.tbz2 
6b5b65cad7da45c5f31f0ffc69caca74  secureboot_R32.3.1_aarch64.tbz2
  1. Prepare for the fuseblob generation
$ sudo tar xjvfp secureboot_R32.3.1_aarch64.tbz2 
Linux_for_Tegra/
Linux_for_Tegra/odmfuse.sh
Linux_for_Tegra/bootloader/
Linux_for_Tegra/bootloader/LICENSE.tegrakeyhash
Linux_for_Tegra/bootloader/wb_sign.sh
Linux_for_Tegra/bootloader/README_secureboot.txt
Linux_for_Tegra/bootloader/tegrakeyhash
Linux_for_Tegra/bootloader/odmsign.func
Linux_for_Tegra/pkc/
Linux_for_Tegra/pkc/LICENSE.mkpkc
Linux_for_Tegra/pkc/LICENSE.nvsecuretool
Linux_for_Tegra/pkc/0001-warmboot-change-wb-prepare-code-for-t1x4.patch
Linux_for_Tegra/pkc/tegrafuse.sh
Linux_for_Tegra/pkc/mkpkc
Linux_for_Tegra/pkc/nvsecuretool
$ cd Linux_for_Tegra/
$ patch -p0 < ../0001_fix_burn_odm_reserved_fuses.patch.log 
patching file odmfuse.sh
$ cd pkc/
$ patch -p0 < ../../0002-diplay-tegra-fuses-via-tegrafuse-script.patch.log 
patching file tegrafuse.sh
$ cd ..
  1. Generate a fuse blob
$ sudo BOARDID=3310 FAB=C04 fuselevel=fuselevel_production ./odmfuse.sh --noburn -j -i 0x18 -c NS -o "0xa080000a 0xb3fc62a3 0x2c7bee36 0x2d40c6b2 0xb502534b 0x8a0b0bd7 0xb03148bc  0x00000000" jetson-tx2
Board ID(3310) version(C04) sku() revision()
copying sdram_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg)... done.
copying misc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-misc-si-l4t.cfg)... done.
copying pinmux_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg)... done.
copying scr_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/minimal_scr.cfg)... done.
copying scr_cold_boot_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/mobile_scr.cfg)... done.
copying pmc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg)... done.
copying pmic_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg)... done.
copying br_cmd_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg)... done.
copying prod_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg)... done.
copying dev_params(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/emmc.cfg)... done.
Existing mb2_bootloader(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
Existing mts_preboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/preboot_d15_prod_cr.bin) reused.
Existing mts_bootpack(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mce_mts_d15_prod_cr.bin) reused.
copying bootloader_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb)... done.
Existing bpmp_fw(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/bpmp.bin) reused.
copying bpmp_fw_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb)... done.
Existing tlk(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/tos-trusty.img) reused.
Existing eks(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/eks.img) reused.
Existing mb1file(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mb1_prod.bin) reused.
Existing spefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/spe.bin) reused.
copying tegraboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/nvtboot.bin)... done.
Existing tbcfile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/cboot.bin) reused.
Existing scefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
copying wb0boot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/warmboot.bin)... done.
done.
Existing cfg(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/flash.xml) reused.
Existing bl(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/nvtboot_recovery_cpu.bin) reused.
Existing applet(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin) reused.
*** Generating fuse configuration ... done.
*** Start preparing fuse configuration ... 
*** done.
  1. Burn ODM fuses
$ mkdir /tmp/fuses_tests
$ tar xf fuseblob.tbz2 -C /tmp/fuses_tests
$ cd /tmp/fuses_tests/bootloader
tsato@TTVIEW71:/tmp/fuses_tests/bootloader$ sudo ./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.0106 ] Burning fuses
[   0.0106 ] Generating RCM messages
[   0.0122 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[   0.0139 ] RCM 0 is saved as rcm_0.rcm
[   0.0148 ] RCM 1 is saved as rcm_1.rcm
[   0.0148 ] List of rcm files are saved in rcm_list.xml
[   0.0148 ] 
[   0.0148 ] Signing RCM messages
[   0.0164 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0182 ] Assuming zero filled SBK key
[   0.0270 ] 
[   0.0270 ] Copying signature to RCM mesages
[   0.0288 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[   0.0315 ] 
[   0.0316 ] Boot Rom communication
[   0.0334 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml
[   0.0353 ] BR_CID: 0x81801001643215c0040000000a0400c0
[   0.1509 ] RCM version 0X180001
[   0.2830 ] Boot Rom communication completed
[   1.2897 ] 
[   2.2929 ] tegrarcm_v2 --isapplet
[   2.2948 ] Applet version 01.00.0000
[   2.5402 ] 
[   2.5444 ] Parsing fuse info as per xml file
[   2.5466 ] tegraparser_v2 --fuse_info odmfuse_pkc.xml blow_fuse_data.bin
[   2.5487 ] MagicId=0x45535546 version=0x1
[   2.5492 ] node: name=ReservedOdm0 size=4
[   2.5492 ]   value=0xa080000a
[   2.5492 ] node: name=ReservedOdm1 size=4
[   2.5493 ]   value=0xb3fc62a3
[   2.5493 ] node: name=ReservedOdm2 size=4
[   2.5493 ]   value=0x2c7bee36
[   2.5493 ] node: name=ReservedOdm3 size=4
[   2.5493 ]   value=0x2d40c6b2
[   2.5493 ] node: name=ReservedOdm4 size=4
[   2.5493 ]   value=0xb502534b
[   2.5493 ] node: name=ReservedOdm5 size=4
[   2.5494 ]   value=0x8a0b0bd7
[   2.5494 ] node: name=ReservedOdm6 size=4
[   2.5494 ]   value=0xb03148bc
[   2.5494 ] node: name=ReservedOdm7 size=4
[   2.5494 ]   value=0x00000000
[   2.5494 ] 
[   2.5515 ] tegrarcm_v2 --oem burnfuses blow_fuse_data.bin
[   2.5535 ] Applet version 01.00.0000
[   2.8003 ] 0000000000000001: Oem commands are not supported
[   2.8013 ] Fuse burning failed
[   2.8013 ] 
[   2.8014 ] trying fusing with CPU binary
[   2.8055 ] tegrasign_v2 --key None --getmode mode.txt
[   2.8075 ] Assuming zero filled SBK key
[   2.8078 ] 
[   2.8079 ] Parsing partition layout
[   2.8100 ] tegraparser_v2 --pt flash.xml.tmp
[   2.8134 ] 
[   2.8135 ] Creating list of images to be signed
[   2.8156 ] tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   2.8175 ] Stat for RECFILE failed
[   2.8460 ] 
Error: Return value 4
Command tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk

So, what can be done from here? Any more logging? Or should we check when these TX2 carrier boards are shipped?

We are about running out of time for this.

Hi @TakenoriSato

Have you check in your xml file (flash.xml ) if a recovery kernel image is defined ?
In my flash.xml file, I don’t have any recovery kernel image defined.

Could you please try the following command line in your Jetson TX2 and share the result ?

$ sudo parted /dev/mmcblk0 print

Just to do comparison with my Jetson TX2.

@madisox, Could you please take a quick look here ? Do you have an idea about this Stat for RECFILE failed ?

Hi @ilies.chergui,

Thanks for your suggestions.

$ grep recovery flash.xml 
            <description> **Required.** Contains recovery image. </description>
            <description> **Required.** Contains recovery DTB image. </description>
            <description> **Optional.** Reserved for future use by the recovery filesystem;

It doesn’t look so.

flash.xml.renamed_to_upload.log (30.9 KB)

Sure.

$ sudo parted /dev/mmcblk0 print
[sudo] password for nvidia: 
Model: MMC 032G34 (sd/mmc)
Disk /dev/mmcblk0: 31.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              Flags
 1      2101kB  30.1GB  30.1GB  ext4         APP               msftdata
 2      30.1GB  30.1GB  4194kB               mts-bootpack      msftdata
 3      30.1GB  30.1GB  4194kB               mts-bootpack_b    msftdata
 4      30.1GB  30.1GB  524kB                cpu-bootloader    msftdata
 5      30.1GB  30.1GB  524kB                cpu-bootloader_b  msftdata
 6      30.1GB  30.1GB  524kB                bootloader-dtb    msftdata
 7      30.1GB  30.1GB  524kB                bootloader-dtb_b  msftdata
 8      30.1GB  30.1GB  3146kB               secure-os         msftdata
 9      30.1GB  30.1GB  3146kB               secure-os_b       msftdata
10      30.1GB  30.1GB  2097kB               eks               msftdata
11      30.1GB  30.1GB  4194kB               adsp-fw           msftdata
12      30.1GB  30.1GB  4194kB               adsp-fw_b         msftdata
13      30.1GB  30.1GB  618kB                bpmp-fw           msftdata
14      30.1GB  30.1GB  618kB                bpmp-fw_b         msftdata
15      30.1GB  30.1GB  512kB                bpmp-fw-dtb       msftdata
16      30.1GB  30.1GB  512kB                bpmp-fw-dtb_b     msftdata
17      30.1GB  30.1GB  2097kB               sce-fw            msftdata
18      30.1GB  30.1GB  2097kB               sce-fw_b          msftdata
19      30.1GB  30.1GB  6291kB               sc7               msftdata
20      30.1GB  30.1GB  6291kB               sc7_b             msftdata
21      30.1GB  30.1GB  2097kB               FBNAME            msftdata
22      30.1GB  30.2GB  134MB                BMP               msftdata
23      30.2GB  30.4GB  134MB                BMP_b             msftdata
24      30.4GB  30.4GB  33.6MB               SOS               msftdata
25      30.4GB  30.5GB  33.6MB               SOS_b             msftdata
26      30.5GB  30.5GB  67.1MB               kernel            msftdata
27      30.5GB  30.6GB  67.1MB               kernel_b          msftdata
28      30.6GB  30.6GB  524kB                kernel-dtb        msftdata
29      30.6GB  30.6GB  524kB                kernel-dtb_b      msftdata
30      30.6GB  30.9GB  268MB                CAC               msftdata
31      30.9GB  31.3GB  414MB                UDA               msftdata


@TakenoriSato

The grep that you have applied here, Did you try that in this directory /tmp/fuses_tests ?
The xml file that you are sharing, is it from your fuseblob.tbz2 ?

Please try as follow:

$ cd /tmp/fuses_tests
$ grep -Hrni "recovery" flash.xml 

I have done a comparison between the xml file that you are sharing and the original xml (flash_l4t_t186.xml) that you can find it L4T BSP, I found a lot of difference ?

Are you sure that you are using the L4T BSP for Jetson TX2 ?

Unrelated, but in my Jetson TX2, I have RECROOTFS instead of CAC in your case (Patition number 30), This is weird.

Yes.

OK, here’s the result.

/tmp/fuses_tests/bootloader$ grep -Hrni "recovery" flash.xml
flash.xml:463:            <description> **Required.** Contains recovery image. </description>
flash.xml:473:            <description> **Required.** Contains recovery DTB image. </description>
flash.xml:544:            <description> **Optional.** Reserved for future use by the recovery filesystem;

Yes. It is our own, though.

I am going to check our manufacturing team. Can you point out what’s weird?

Hey @TakenoriSato

Actually, not, this is not weird.

I have done tests using L4T-BSP and Secureboot R32.3.1 with the new patch. It work fine for me.

Could you please try with the attached patch ?

$ cd /path/to/l4t_bsp
$ patch -p1 < /tmp/odmfuse_ilies/0001-Fix-issue-burn-odm-reserved-l4t-bsp-secureboot-r32.3.1.patch.log

0001-Fix-issue-burn-odm-reserved-l4t-bsp-secureboot-r32.3.1.patch.log (2.3 KB)

Let me know please if it work for you.

1 Like

@madisox, Could you please take a quick look here ? Do you have an idea about this Stat for RECFILE failed ?

Yeah, looks like NV forgot to update the odmfuse.sh script to account for the recovery image additions that were made in R32.3.1. Deleting the lines containing RECFILE and RECFILE-DTB from the XML file, as you do in your latest patch, should fix that issue. (There are other non-existent files mentioned in the XML, also due to partitions added between 32.2 and 32.3, but only those two are marked for signing.)

Thank you very much @madisox.

Totally agree with you, I think NV forgot to update also L4T BSP, I mean the conf files (e.g. for jetson TX2: p2771-0000-devkit.conf and p2771-0000.conf.common).

Also, there is no default recovery image in the L4T BSP.

Also, there is no default recovery image in the L4T BSP.

It looks like it’s something they’ve got internally to support their OTA updates.

Hi @ilies.chergui,

Finally, it did work!

Generating fuseblob

$ patch -p1 < ../0001-Fix-issue-burn-odm-reserved-l4t-bsp-secureboot-r32.3.1.patch.log 
patching file odmfuse.sh
$ cd pkc/
$ patch -p0 < ../../0002-diplay-tegra-fuses-via-tegrafuse-script.patch.log 
patching file tegrafuse.sh
$ cd ..
$ sudo BOARDID=3310 FAB=C04 fuselevel=fuselevel_production ./odmfuse.sh --noburn -j -i 0x18 -c NS -o "0xa080000a 0xb3fc62a3 0x2c7bee36 0x2d40c6b2 0xb502534b 0x8a0b0bd7 0xb03148bc  0x00000000" jetson-tx2
Board ID(3310) version(C04) sku() revision()
copying sdram_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg)... done.
copying misc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-misc-si-l4t.cfg)... done.
copying pinmux_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg)... done.
copying scr_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/minimal_scr.cfg)... done.
copying scr_cold_boot_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/mobile_scr.cfg)... done.
copying pmc_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg)... done.
copying pmic_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg)... done.
copying br_cmd_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg)... done.
copying prod_config(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg)... done.
copying dev_params(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/BCT/emmc.cfg)... done.
Existing mb2_bootloader(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
Existing mts_preboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/preboot_d15_prod_cr.bin) reused.
Existing mts_bootpack(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mce_mts_d15_prod_cr.bin) reused.
copying bootloader_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb)... done.
Existing bpmp_fw(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/bpmp.bin) reused.
copying bpmp_fw_dtb(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb)... done.
Existing tlk(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/tos-trusty.img) reused.
Existing eks(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/eks.img) reused.
Existing mb1file(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mb1_prod.bin) reused.
Existing spefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/spe.bin) reused.
copying tegraboot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/nvtboot.bin)... done.
Existing tbcfile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/cboot.bin) reused.
Existing scefile(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
copying wb0boot(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/t186ref/warmboot.bin)... done.
done.
Existing cfg(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/flash.xml) reused.
Existing bl(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/nvtboot_recovery_cpu.bin) reused.
Existing applet(/l4tpool/l4timages/TX2G1.0/L4T32.3.1_patched/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin) reused.
*** Generating fuse configuration ... done.
*** Start preparing fuse configuration ... 
*** done.

Burning fuses

$ sudo ./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.0430 ] Burning fuses
[   0.0430 ] Generating RCM messages
[   0.0450 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[   0.0470 ] RCM 0 is saved as rcm_0.rcm
[   0.0476 ] RCM 1 is saved as rcm_1.rcm
[   0.0478 ] List of rcm files are saved in rcm_list.xml
[   0.0478 ] 
[   0.0478 ] Signing RCM messages
[   0.0496 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0514 ] Assuming zero filled SBK key
[   0.0604 ] 
[   0.0605 ] Copying signature to RCM mesages
[   0.0623 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[   0.0649 ] 
[   0.0650 ] Boot Rom communication
[   0.0670 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml
[   0.0690 ] BR_CID: 0x81801001643215c0040000000a0400c0
[   0.1815 ] RCM version 0X180001
[   0.3135 ] Boot Rom communication completed
[   1.3201 ] 
[   2.3235 ] tegrarcm_v2 --isapplet
[   2.3256 ] Applet version 01.00.0000
[   2.5707 ] 
[   2.5751 ] Parsing fuse info as per xml file
[   2.5773 ] tegraparser_v2 --fuse_info odmfuse_pkc.xml blow_fuse_data.bin
[   2.5794 ] MagicId=0x45535546 version=0x1
[   2.5802 ] node: name=ReservedOdm0 size=4
[   2.5802 ]   value=0xa080000a
[   2.5802 ] node: name=ReservedOdm1 size=4
[   2.5802 ]   value=0xb3fc62a3
[   2.5803 ] node: name=ReservedOdm2 size=4
[   2.5803 ]   value=0x2c7bee36
[   2.5803 ] node: name=ReservedOdm3 size=4
[   2.5803 ]   value=0x2d40c6b2
[   2.5803 ] node: name=ReservedOdm4 size=4
[   2.5803 ]   value=0xb502534b
[   2.5803 ] node: name=ReservedOdm5 size=4
[   2.5803 ]   value=0x8a0b0bd7
[   2.5804 ] node: name=ReservedOdm6 size=4
[   2.5804 ]   value=0xb03148bc
[   2.5804 ] node: name=ReservedOdm7 size=4
[   2.5804 ]   value=0x00000000
[   2.5804 ] 
[   2.5824 ] tegrarcm_v2 --oem burnfuses blow_fuse_data.bin
[   2.5845 ] Applet version 01.00.0000
[   2.8388 ] 0000000000000001: Oem commands are not supported
[   2.8398 ] Fuse burning failed
[   2.8398 ] 
[   2.8399 ] trying fusing with CPU binary
[   2.8441 ] tegrasign_v2 --key None --getmode mode.txt
[   2.8461 ] Assuming zero filled SBK key
[   2.8464 ] 
[   2.8465 ] Parsing partition layout
[   2.8486 ] tegraparser_v2 --pt flash.xml.tmp
[   2.8519 ] 
[   2.8520 ] Creating list of images to be signed
[   2.8538 ] tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   2.8895 ] 
[   2.8896 ] Generating signatures
[   2.8917 ] tegrasign_v2 --key None --list images_list.xml --pubkeyhash pub_key.key
[   2.8936 ] Assuming zero filled SBK key
[   3.2381 ] 
[   3.2382 ] Generating br-bct
[   3.2400 ] Updating dev and MSS params in BR BCT
[   3.2402 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18 0
[   3.2726 ] 
[   3.2727 ] Updating bl info
[   3.2747 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   3.2778 ] 
[   3.2779 ] Updating smd info
[   3.2800 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesmdinfo flash.xml.bin
[   3.2817 ] 
[   3.2817 ] Updating Odmdata
[   3.2835 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 0 --updatefields Odmdata =0x90000
[   3.2862 ] 
[   3.2862 ] Get Signed section of bct
[   3.2878 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 0 --listbct bct_list.xml
[   3.2897 ] 
[   3.2916 ] tegrasign_v2 --key None --list bct_list.xml --pubkeyhash pub_key.key
[   3.2933 ] Assuming zero filled SBK key
[   3.2939 ] 
[   3.2939 ] Updating BCT with signature
[   3.2954 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 0 --updatesig bct_list_signed.xml
[   3.2976 ] 
[   3.2976 ] Generating coldboot mb1-bct
[   3.2992 ] tegrabct_v2 --chip 0x18 0 --mb1bct mb1_cold_boot_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr mobile_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   3.3011 ] MB1-BCT version: 0xf
[   3.3014 ] Copying Sdram info from 2 to 3 set
[   3.3266 ] Packing sdram param for instance[0]
[   3.3271 ] Packing sdram param for instance[1]
[   3.3276 ] Packing sdram param for instance[2]
[   3.3280 ] Packing sdram param for instance[3]

[   3.3285 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   3.3296 ] Appending platform config data of size :- 3032
[   3.3296 ] 
[   3.3296 ] Parsing config file :mobile_scr.cfg 
[   3.3296 ] Appending platform config data of size :- 12240
[   3.3296 ] 
[   3.3296 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   3.3296 ] Appending platform config data of size :- 24
[   3.3296 ] 
[   3.3297 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg 
[   3.3297 ] Appending platform config data of size :- 672
[   3.3297 ] 
[   3.3297 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   3.3297 ] Appending platform config data of size :- 64
[   3.3297 ] 
[   3.3297 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   3.3297 ] Appending platform config data of size :- 1628
[   3.3297 ] 
[   3.3298 ] Updating mb1-bct with firmware information
[   3.3318 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo flash.xml.bin
[   3.3337 ] MB1-BCT version: 0xf
[   3.3346 ] 
[   3.3347 ] Updating mb1-bct with storage information
[   3.3361 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   3.3377 ] MB1-BCT version: 0xf
[   3.3386 ] 
[   3.3403 ] tegrahost_v2 --chip 0x18 --align mb1_cold_boot_bct_MB1.bct
[   3.3420 ] 
[   3.3439 ] tegrahost_v2 --appendsigheader mb1_cold_boot_bct_MB1.bct zerosbk
[   3.3461 ] 
[   3.3481 ] tegrasign_v2 --key None --list mb1_cold_boot_bct_MB1_sigheader.bct_list.xml --pubkeyhash pub_key.key
[   3.3499 ] Assuming zero filled SBK key
[   3.3538 ] 
[   3.3563 ] tegrahost_v2 --updatesigheader mb1_cold_boot_bct_MB1_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_sigheader.bct.hash zerosbk
[   3.3585 ] 
[   3.3587 ] Generating recovery mb1-bct
[   3.3603 ] tegrabct_v2 --chip 0x18 0 --mb1bct mb1_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr minimal_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   3.3622 ] MB1-BCT version: 0xf
[   3.3626 ] Copying Sdram info from 2 to 3 set
[   3.3859 ] Packing sdram param for instance[0]
[   3.3863 ] Packing sdram param for instance[1]
[   3.3868 ] Packing sdram param for instance[2]
[   3.3873 ] Packing sdram param for instance[3]

[   3.3878 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   3.3883 ] Appending platform config data of size :- 3032
[   3.3883 ] 
[   3.3883 ] Parsing config file :minimal_scr.cfg 
[   3.3883 ] Appending platform config data of size :- 12240
[   3.3883 ] 
[   3.3883 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   3.3884 ] Appending platform config data of size :- 24
[   3.3884 ] 
[   3.3884 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg 
[   3.3884 ] Appending platform config data of size :- 672
[   3.3884 ] 
[   3.3884 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   3.3884 ] Appending platform config data of size :- 64
[   3.3884 ] 
[   3.3884 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   3.3885 ] Appending platform config data of size :- 1628
[   3.3885 ] 
[   3.3885 ] Updating mb1-bct with firmware information
[   3.3900 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatefwinfo flash.xml.bin
[   3.3919 ] MB1-BCT version: 0xf
[   3.3930 ] 
[   3.3930 ] Updating mb1-bct with storage information
[   3.3947 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   3.3965 ] MB1-BCT version: 0xf
[   3.3975 ] 
[   3.3995 ] tegrahost_v2 --chip 0x18 --align mb1_bct_MB1.bct
[   3.4014 ] 
[   3.4033 ] tegrahost_v2 --appendsigheader mb1_bct_MB1.bct zerosbk
[   3.4056 ] 
[   3.4081 ] tegrasign_v2 --key None --list mb1_bct_MB1_sigheader.bct_list.xml --pubkeyhash pub_key.key
[   3.4100 ] Assuming zero filled SBK key
[   3.4141 ] 
[   3.4169 ] tegrahost_v2 --updatesigheader mb1_bct_MB1_sigheader.bct.encrypt mb1_bct_MB1_sigheader.bct.hash zerosbk
[   3.4192 ] 
[   3.4193 ] Copying signatures
[   3.4212 ] tegrahost_v2 --chip 0x18 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   3.4864 ] 
[   3.4865 ] Sending BCTs
[   3.4886 ] tegrarcm_v2 --download bct_bootrom br_bct_BR.bct --download bct_mb1 mb1_bct_MB1_sigheader.bct.encrypt
[   3.4906 ] Applet version 01.00.0000
[   3.7348 ] Sending bct_bootrom
[   3.7351 ] [................................................] 100%
[   3.7366 ] Sending bct_mb1
[   3.7372 ] [................................................] 100%
[   3.7535 ] 
[   3.7536 ] Generating blob
[   3.7560 ] tegrahost_v2 --chip 0x18 --align blob_nvtboot_recovery_cpu.bin
[   3.7582 ] 
[   3.7604 ] tegrahost_v2 --appendsigheader blob_nvtboot_recovery_cpu.bin zerosbk
[   3.7635 ] 
[   3.7662 ] tegrasign_v2 --key None --list blob_nvtboot_recovery_cpu_sigheader.bin_list.xml --pubkeyhash pub_key.key
[   3.7680 ] Assuming zero filled SBK key
[   3.7824 ] 
[   3.7851 ] tegrahost_v2 --updatesigheader blob_nvtboot_recovery_cpu_sigheader.bin.encrypt blob_nvtboot_recovery_cpu_sigheader.bin.hash zerosbk
[   3.7881 ] 
[   3.7905 ] tegrahost_v2 --chip 0x18 --align blob_nvtboot_recovery.bin
[   3.7927 ] 
[   3.7948 ] tegrahost_v2 --appendsigheader blob_nvtboot_recovery.bin zerosbk
[   3.7975 ] 
[   3.8000 ] tegrasign_v2 --key None --list blob_nvtboot_recovery_sigheader.bin_list.xml --pubkeyhash pub_key.key
[   3.8017 ] Assuming zero filled SBK key
[   3.8083 ] 
[   3.8109 ] tegrahost_v2 --updatesigheader blob_nvtboot_recovery_sigheader.bin.encrypt blob_nvtboot_recovery_sigheader.bin.hash zerosbk
[   3.8131 ] 
[   3.8154 ] tegrahost_v2 --chip 0x18 --align blob_preboot_d15_prod_cr.bin
[   3.8175 ] 
[   3.8195 ] tegrahost_v2 --appendsigheader blob_preboot_d15_prod_cr.bin zerosbk
[   3.8220 ] 
[   3.8244 ] tegrasign_v2 --key None --list blob_preboot_d15_prod_cr_sigheader.bin_list.xml --pubkeyhash pub_key.key
[   3.8263 ] Assuming zero filled SBK key
[   3.8308 ] 
[   3.8333 ] tegrahost_v2 --updatesigheader blob_preboot_d15_prod_cr_sigheader.bin.encrypt blob_preboot_d15_prod_cr_sigheader.bin.hash zerosbk
[   3.8357 ] 
[   3.8380 ] tegrahost_v2 --chip 0x18 --align blob_mce_mts_d15_prod_cr.bin
[   3.8401 ] 
[   3.8422 ] tegrahost_v2 --appendsigheader blob_mce_mts_d15_prod_cr.bin zerosbk
[   3.8509 ] 
[   3.8533 ] tegrasign_v2 --key None --list blob_mce_mts_d15_prod_cr_sigheader.bin_list.xml --pubkeyhash pub_key.key
[   3.8549 ] Assuming zero filled SBK key
[   3.9285 ] 
[   3.9312 ] tegrahost_v2 --updatesigheader blob_mce_mts_d15_prod_cr_sigheader.bin.encrypt blob_mce_mts_d15_prod_cr_sigheader.bin.hash zerosbk
[   3.9394 ] 
[   3.9417 ] tegrahost_v2 --chip 0x18 --align blob_tegra186-quill-p3310-1000-c03-00-base.dtb
[   3.9438 ] 
[   3.9458 ] tegrahost_v2 --appendsigheader blob_tegra186-quill-p3310-1000-c03-00-base.dtb zerosbk
[   3.9484 ] 
[   3.9510 ] tegrasign_v2 --key None --list blob_tegra186-quill-p3310-1000-c03-00-base_sigheader.dtb_list.xml --pubkeyhash pub_key.key
[   3.9527 ] Assuming zero filled SBK key
[   3.9685 ] 
[   3.9709 ] tegrahost_v2 --updatesigheader blob_tegra186-quill-p3310-1000-c03-00-base_sigheader.dtb.encrypt blob_tegra186-quill-p3310-1000-c03-00-base_sigheader.dtb.hash zerosbk
[   3.9742 ] 
[   3.9757 ] tegrahost_v2 --chip 0x18 --align blob_bpmp.bin
[   3.9777 ] 
[   3.9796 ] tegrahost_v2 --appendsigheader blob_bpmp.bin zerosbk
[   3.9837 ] 
[   3.9863 ] tegrasign_v2 --key None --list blob_bpmp_sigheader.bin_list.xml --pubkeyhash pub_key.key
[   3.9881 ] Assuming zero filled SBK key
[   4.0105 ] 
[   4.0130 ] tegrahost_v2 --updatesigheader blob_bpmp_sigheader.bin.encrypt blob_bpmp_sigheader.bin.hash zerosbk
[   4.0168 ] 
[   4.0190 ] tegrahost_v2 --chip 0x18 --align blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb
[   4.0208 ] 
[   4.0229 ] tegrahost_v2 --appendsigheader blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb zerosbk
[   4.0268 ] 
[   4.0288 ] tegrasign_v2 --key None --list blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2_sigheader.dtb_list.xml --pubkeyhash pub_key.key
[   4.0307 ] Assuming zero filled SBK key
[   4.0542 ] 
[   4.0570 ] tegrahost_v2 --updatesigheader blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2_sigheader.dtb.encrypt blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2_sigheader.dtb.hash zerosbk
[   4.0606 ] 
[   4.0630 ] tegrahost_v2 --chip 0x18 --align blob_tos-trusty.img
[   4.0649 ] 
[   4.0669 ] tegrahost_v2 --appendsigheader blob_tos-trusty.img zerosbk
[   4.0696 ] 
[   4.0724 ] tegrasign_v2 --key None --list blob_tos-trusty_sigheader.img_list.xml --pubkeyhash pub_key.key
[   4.0743 ] Assuming zero filled SBK key
[   4.0932 ] 
[   4.0961 ] tegrahost_v2 --updatesigheader blob_tos-trusty_sigheader.img.encrypt blob_tos-trusty_sigheader.img.hash zerosbk
[   4.0994 ] 
[   4.1018 ] tegrahost_v2 --chip 0x18 --align blob_eks.img
[   4.1039 ] 
[   4.1057 ] tegrahost_v2 --appendsigheader blob_eks.img zerosbk
[   4.1078 ] 
[   4.1101 ] tegrasign_v2 --key None --list blob_eks_sigheader.img_list.xml --pubkeyhash pub_key.key
[   4.1118 ] Assuming zero filled SBK key
[   4.1124 ] 
[   4.1148 ] tegrahost_v2 --updatesigheader blob_eks_sigheader.img.encrypt blob_eks_sigheader.img.hash zerosbk
[   4.1169 ] 
[   4.1192 ] tegrahost_v2 --chip 0x18 --generateblob blob.xml blob.bin
[   4.1210 ] number of images in blob are 9
[   4.1215 ] blobsize is 4141640
[   4.1217 ] Added binary blob_nvtboot_recovery_cpu_sigheader.bin.encrypt of size 220096
[   4.1267 ] Added binary blob_nvtboot_recovery_sigheader.bin.encrypt of size 89776
[   4.1275 ] Added binary blob_preboot_d15_prod_cr_sigheader.bin.encrypt of size 63104
[   4.1285 ] Added binary blob_mce_mts_d15_prod_cr_sigheader.bin.encrypt of size 2082144
[   4.1296 ] Added binary blob_tegra186-quill-p3310-1000-c03-00-base_sigheader.dtb.encrypt of size 371632
[   4.1307 ] Added binary blob_bpmp_sigheader.bin.encrypt of size 533904
[   4.1314 ] Added binary blob_tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2_sigheader.dtb.encrypt of size 466240
[   4.1328 ] Added binary blob_tos-trusty_sigheader.img.encrypt of size 313152
[   4.1337 ] Added binary blob_eks_sigheader.img.encrypt of size 1440
[   4.1337 ] 
[   4.1338 ] Sending bootloader and pre-requisite binaries
[   4.1357 ] tegrarcm_v2 --download blob blob.bin
[   4.1374 ] Applet version 01.00.0000
[   4.3833 ] Sending blob
[   4.3835 ] [................................................] 100%
[   4.8358 ] 
[   4.8381 ] tegrarcm_v2 --boot recovery
[   4.8401 ] Applet version 01.00.0000
[   5.0920 ] 
[   6.0953 ] tegrarcm_v2 --isapplet
[   6.3453 ] 
[   6.3475 ] tegradevflash_v2 --iscpubl
[   6.3495 ] Cannot Open USB
[   7.0942 ] 
[   8.0977 ] tegrarcm_v2 --isapplet
[   8.3424 ] 
[   8.3446 ] tegradevflash_v2 --iscpubl
[   8.3466 ] Bootloader version 01.00.0000
[   8.4746 ] Bootloader version 01.00.0000
[   8.4758 ] 
[   8.4758 ] tegradevflash_v2 --oem burnfuses blow_fuse_data.bin
[   8.4779 ] Bootloader version 01.00.0000
[   8.6147 ] Fusing burning successful
[   8.8553 ] 
[   8.8574 ] tegradevflash_v2 --reboot recovery
[   8.8595 ] Bootloader version 01.00.0000
[   8.9830 ] 

Check if odm_reserved fuses have been correctly burned.

$ sudo cat /sys/devices/3820000.efuse/3820000.efuse\:efuse-burn/reserved_odm*
0xa080000a
0xb3fc62a3
0x2c7bee36
0x2d40c6b2
0xb502534b
0x8a0b0bd7
0xb03148bc
0x00000000

@DaneLLL, thanks for your persistent support.

@TakenoriSato I’m glad that it work for you.