Hello! I am in the process of enabling Secureboot for my TX2NX device on Jetpack 4.6.5.
I think I have it figured out by:
- Extracting
secureboot_r32.7.5_aarch64.tbz2
into myLinux_for_Tegra
folder - Generating RSA (PKC) key with:
openssl genrsa -out rsa-priv.pem 2048
- Manually writing sbk.xml key as:
echo "0x123456789abcdef0fedcba9876543210" > sbk.xml
(Obviously not my actual key)
As I’m fine with SBKPKC secureboot, I don’t need more keys. The problem occurs when I’m trying to fuse my keys. Whenever I try to actually fuse, I’m stuck on fuse read part. When I’m generating a fuseblob, it does generate successfully but even if I call the fuseblob command, it gets stuck on fuse reading part.
These are the commands I’m using:
- Direct fusing:
sudo ./odmfuse.sh -i 0x18 -p -k /home/flasher/keys/rsa_priv.pem -S /home/flasher/keys/sbk.xml jetson-xavier-nx-devkit-tx2-nx
- fuseblob generation:
sudo FAB=300 BOARDID=3636 BOARDSKU=0001 ./odmfuse.sh --noburn -i 0x18 --auth SBKPKC -p -k /home/flasher/keys/rsa_priv.pem -S /home/flasher/keys/sbk.xml jetson-xavier-nx-devkit-tx2-nx
mkdir fuseblob
tar -xf fuseblob.tbz2 -C fuseblob
sudo ./fusecmd.sh
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.0004 ] Burning fuses
[ 0.0004 ] Boot Rom communication
[ 0.0023 ] tegrarcm_v2 --chip 0x18 0 --rcm /home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/fuseblob/bootloader/encrypted_signed/rcm_1_signed.rcm
[ 0.0028 ] BR_CID: 0x81801001640cf1c310000000020280c0
[ 0.0033 ] Bootrom returned error 22
[ 0.0141 ] Boot Rom communication failed
[ 0.0141 ]
[ 0.0142 ] Send tboot failed. Bootrom is likely not running, try to detect whether mb1/mb2/cpubl is running.
[ 1.0163 ] tegrarcm_v2 --isapplet
sudo ./odmfuse.sh -i 0x18 -p -k /home/flasher/keys/rsa_priv.pem -S /home/flasher/keys/sbk.xml jetson-xavier-nx-devkit-tx2-nx
./tegraflash.py --chip 0x18 --applet "/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin"
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
[ 0.0019 ] Generating RCM messages
[ 0.0041 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm /home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin 0 0
[ 0.0045 ] RCM 0 is saved as rcm_0.rcm
[ 0.0047 ] RCM 1 is saved as rcm_1.rcm
[ 0.0047 ] List of rcm files are saved in rcm_list.xml
[ 0.0047 ]
[ 0.0047 ] Signing RCM messages
[ 0.0067 ] tegrasign_v3.py --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0067 ] Assuming zero filled SBK key
[ 0.0099 ] Copying signature to RCM mesages
[ 0.0104 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[ 0.0111 ]
[ 0.0112 ] Boot Rom communication
[ 0.0130 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0134 ] RCM version 0X180001
[ 0.0149 ] Boot Rom communication completed
[ 1.0285 ]
[ 2.0319 ] tegrarcm_v2 --isapplet
[ 2.0323 ] Applet version 01.00.0000
[ 2.0709 ]
[ 2.0727 ] Retrieving EEPROM data
[ 2.0728 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[ 2.0732 ] Applet version 01.00.0000
[ 2.1117 ] Saved platform info in /home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[ 2.2281 ]
Board ID(3636) version(300) sku(0001) revision(H.0)
copying sdram_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-memcfg-p3636-0001-a01.cfg)... done.
copying misc_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-misc-si-l4t.cfg)... done.
copying pinmux_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-p3636-0001-a00.cfg)... done.
copying scr_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/minimal_scr.cfg)... done.
copying scr_cold_boot_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/mobile_scr.cfg)... done.
copying pmc_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pad-p3636-0001-a00.cfg)... done.
copying pmic_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-p3636-0001-a00.cfg)... done.
copying br_cmd_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-bootrom-p3636-0001-a00.cfg)... done.
copying prod_config(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-prod-p3636-0001-a00.cfg)... done.
copying dev_params(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/emmc.cfg)... done.
Existing mb2_bootloader(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
Existing mts_preboot(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/preboot_d15_prod_cr.bin) reused.
Existing mts_bootpack(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mce_mts_d15_prod_cr.bin) reused.
copying bootloader_dtb(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb)... done.
Existing bpmp_fw(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/bpmp.bin) reused.
copying bpmp_fw_dtb(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/tegra186-bpmp-p3636-0001-a00-00.dtb)... done.
Existing tlk(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tos-trusty.img) reused.
Existing eks(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/eks.img) reused.
Existing mb1file(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_prod.bin) reused.
Existing spefile(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/spe.bin) reused.
copying tegraboot(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/nvtboot.bin)... done.
Existing tbcfile(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cboot.bin) reused.
Existing scefile(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
copying wb0boot(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/warmboot.bin)... done.
done.
Existing cfg(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/flash.xml) reused.
Existing bl(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery_cpu.bin) reused.
Existing applet(/home/flasher/nvidia/nvidia_sdk/JetPack_4.6.5_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin) reused.
./tegraflash.py --sdram_config tegra186-mb1-bct-memcfg-p3636-0001-a01.cfg --misc_config tegra186-mb1-bct-misc-si-l4t.cfg --pinmux_config tegra186-mb1-bct-pinmux-p3636-0001-a00.cfg --scr_config minimal_scr.cfg --scr_cold_boot_config mobile_scr.cfg --pmc_config tegra186-mb1-bct-pad-p3636-0001-a00.cfg --pmic_config tegra186-mb1-bct-pmic-p3636-0001-a00.cfg --br_cmd_config tegra186-mb1-bct-bootrom-p3636-0001-a00.cfg --prod_config tegra186-mb1-bct-prod-p3636-0001-a00.cfg --dev_params emmc.cfg --bins "mb2_bootloader nvtboot_recovery.bin; mts_preboot preboot_d15_prod_cr.bin; mts_bootpack mce_mts_d15_prod_cr.bin; bootloader_dtb tegra186-p3636-0001-p3509-0000-a01.dtb; bpmp_fw bpmp.bin; bpmp_fw_dtb tegra186-bpmp-p3636-0001-a00-00.dtb; tlk tos-trusty.img; eks eks.img" --cfg flash.xml --bl nvtboot_recovery_cpu.bin --odmdata 0x2090000 --chip 0x18 --applet mb1_recovery_prod.bin --skipuid --cmd "readfuses fuse_info.txt fuses_to_read.xml; 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.0032 ] Reading fuses
[ 0.0032 ] Generating RCM messages
[ 0.0056 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[ 0.0061 ] RCM 0 is saved as rcm_0.rcm
[ 0.0062 ] RCM 1 is saved as rcm_1.rcm
[ 0.0062 ] List of rcm files are saved in rcm_list.xml
[ 0.0063 ]
[ 0.0063 ] Signing RCM messages
[ 0.0083 ] tegrasign_v3.py --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0083 ] Assuming zero filled SBK key
[ 0.0115 ] Copying signature to RCM mesages
[ 0.0135 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[ 0.0143 ]
[ 0.0144 ] Boot Rom communication
[ 0.0160 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0165 ] Boot Rom communication failed
[ 5.1605 ]
[ 5.1606 ] Send tboot failed. Bootrom is likely not running, try to detect whether mb1/mb2/cpubl is running.
[ 6.1644 ] tegrarcm_v2 --isapplet
It’s simply stuck forver on [ 1.0163 ] tegrarcm_v2 --isapplet
after Boot Rom communication failed
I thought that it has to do something with USB but I have tried these things with no luck:
- Jetson Nano Devkit
- Custom TX2NX board
- Ubuntu 18.04 Native installation
- Ubuntu 18.04 VM
- 3 different TX2NX’s (yes, I’m sure that they haven’t been fused before)
Keep in mind that flashing works fine, it’s just the fusing. I know that it’s specifically the part, which checks fuses because simple odmfuseread.sh
is not working as well with the same issue.
sudo ./odmfuseread.sh -i 0x18 jetson-xavier-nx-devkit-tx2-nx
What could I do here?