Hi forum,
I generated keys and fused my Jetson Orin Nano Devkit using r36.4.4 with PKC, SBK, OEMK1, BootSecurityInfo and SecurityMode using the documented process - xml and commands below. My aim is to have a SBK secured board with encrypted external fs.
My board fused successfully - I burned all fuses at once - I can see in log output it is fused as expected; however now it doesnt accept the same keys to let me conduct any other process - I get the timeout in USB write error associated with failed key-check:
[ 1.1197 ] BR_CID: 0xEB01<REDACTED>
[ 1.1459 ] Sending bct_br
[ 1.1897 ] Sending mb1
[ 1.1904 ] ERROR: might be timeout in USB write.
Error: Return value 3
I could use some help please:
- I’m certain the keys are correct (pkc is rsa3072) - what could be causing the failed auth checks?
- How I can recover/flash the board (I have all the keys I fused it with)?
- How I can understand what I did wrong to brick it / what I missed in the docs?
- I failed to include fuse
PscOdmStatic: 0x60on the first run - is this enough to brick the board?
Things I’ve tried (all give the same error as above):
- flash.sh --readinfo -u rsa.pem -v sbk.words
- flash.sh --readinfo -u rsa.pem -v sbk.words_spaced
- flash.sh --readinfo -u rsa.pem -v sbk.key
- flash.sh --readinfo -u rsa.pem -v sbk.fuse
- l4t_initrd_flash.sh - with -u and -v as above
- odmfuse.sh with -k rsa.pem and -S sbk.words, sbk.words_spaced, sbk.key, sbk.fuse
- odmfuseread.sh - as above
- Fresh Linux_For_tegra tree
- Keys are outside tree
- Device wont boot to linux - cant use nv_read_fuse.sh
- Tried second fuse-burn to add
PscOdmStatic- but same auth error denies it.
fuse_config.xml
<genericfuse MagicId="0x45535546" version="1.0.0">
<fuse name="PublicKeyHash" size="64" value="0x<REDACTED>"/>
<fuse name="SecureBootKey" size="32" value="<OMITTED 0x in this value as per docs>"/>
<fuse name="OemK1" size="32" value="<OMITTED 0x in this value as per docs>"/>
<fuse name="BootSecurityInfo" size="4" value="0x3EB"/>
<fuse name="PscOdmStatic" size="4" value="0x60"/>
<fuse name="SecurityMode" size="4" value="0x1"/>
</genericfuse>
Fusing Log Snippet - showing zeroed / factory keys before fusing
Fuse reading is done. The fuse values have been saved in: <redacted>
PublicKeyHash: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
BootSecurityInfo: 00000000
ArmJtagDisable: 00000000
SecurityMode: 00000000
SwReserved: 00000000
DebugAuthentication: 00000000
OdmId: 0000000000000000
OdmLock: 00000000
ReservedOdm0: 00000000
ReservedOdm1: 00000000
ReservedOdm2: 00000000
ReservedOdm3: 00000000
ReservedOdm4: 00000000
ReservedOdm5: 00000000
ReservedOdm6: 00000000
ReservedOdm7: 00000000
...
MagicId=0x45535546 version=0x1
node: name=PublicKeyHash size=64
type 0x2a size 64
value=0x<REDACTED>
node: name=SecureBootKey size=32
type 0x66 size 32
value=<REDACTED>
node: name=OemK1 size=32
type 0x6a size 32
value=<REDACTED>
node: name=BootSecurityInfo size=4
type 0x0 size 4
value=0x3EB
node: name=SecurityMode size=4
type 0x1d size 4
value=0x1
done.
size of FSKP binary 386320
size of Fuse Blob 216
File saved as fskp_t234_updated.bin
done.
Host Setup:
- Native Ubuntu 20.04
- USB Autosuspend -1 set
- Many different cables tried - 3.0 and 2.0
Thanks for any help!