I was trying to fuse these secure boot keys into an Orin:
fuse.txt (577 Bytes)
But I got an error stating I was trying to set 1 bits to 0, after which i found that this batch of Orins has 0x1e0 written in BootSecurityInfo by the factory. After finding out about this I read the fuses out and saw that PublicKeyHash had been fused successfully but nothing else visible had changed:
PublicKeyHash: 76462886846f2e3851f066f2524a41d2bfa58e262cce2432b6a5d4cfcdd0e9ab71dc97e3347b4f4d38dd3ec5528e28e6003429c6dcfc421235b4b62deb334a48
BootSecurityInfo: 000001e0
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
After this I modified the fuse.xml to have the BootSecurityInfo ORed with 0x1e0 and tried writing fuses again, which gave this error over the UART interface from which I assumed that the SecureBootKey had also been successfully written earlier:
I> 1. Start PublicKeyHash burn
I> Fuse is already burned with the same value
I> 1. PublicKeyHash burn skipped
I>
I> 2. Start SecureBootKey burn
E> FUSE: Failed to burn fuse addr: 0x2fe.
E> FUSE: Could not write Fuse: 0x66.
E> FUSE: Could not write Fuse: 0x66.
E> FUSE: Failed burn fuses as per fuse info.
E> FSKP: Failed to burn fuses.
C> Task 0x0 failed (err: 0x62170302)
E> Top caller module: FSKP, error module: FUSE, reason: 0x02, aux_info: 0x03
I> Busy Spin
I also tried modifying the fuse.xml to only include the OemK1 field which gave a similar error from which I assumed that key had also been written successfully earlier. Next I modified the fuse.xml to have only the BootSecurityInfo and SecurityMode fields since I thought all fields before BootSecurityInfo had been fused successfully. After doing this I am not able to read read the fuses anymore, it seems that the orin does not accept the rsa.pem and sbk.key that should have corresponded to these fuses.
My questions are:
- Is there any way to still flash this Orin?
- I have another Orin from this batch on which I have just done the first failed fuse write, how should I proceed on that Orin?
- I have more fresh Orins from this batch, can I assume that if I set the BootSecurityInfo to the correct value from the start I will not see any problems or is there anything else I should change?
Notes:
I have flashed many Orins previously successfully with the same process so I think my keys are generated correctly and the overall process has worked for all Orins from earlier batches. For writing fuses I use the command
sudo ./odmfuse.sh -i 0x23 -X fuse.xml jetson-agx-orin-devkit
and for reading fuses I use
sudo ./odmfuseread.sh -i 0x23 -k rsa.pem -S sbk.key jetson-agx-orin-devkit