We are running into a problem when burning the fuses on some of our Orins.
We fuse the Orin in 3 stages, manually resetting it each time to place it in recovery mode.
- Stage 1: we burn the ODM[0..3] fuses
- Stage 2: we burn the secure boot keys using FSKP
- Stage 3: we burn BootSecurityInfo to 0x209 and SecurityMode to 1 to enable secure boot.
<genericfuse MagicId="0x45535546" version="2.0.0">
<fuse name="BootSecurityInfo" size="4" value="0x00000209"/>
<fuse name="SecurityMode" size="4" value="0x00000001"/>
</genericfuse>
Stage 1 & 2 seem to work OK as we can readback the fuses and confirm they are burnt but stage 3 does not change the fuses from their default value, although the script does not return any error.
I noticed the following in the log, which looks a bit worrying.
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
MagicId=0x45535546 version=0x2
node: name=BootSecurityInfo size=4
type 0x0 size 4
value=0x00000209
node: name=SecurityMode size=4
type 0x1d size 4
value=0x00000001
done.
size of FSKP binary 386320
size of Fuse Blob 100
File saved as fskp_t234_updated.bin
done.
Any idea what these errors are and if they are a concern?
I am also confused as to why FSKP is involved at this stage, since we are not making use of it… Could you shine some light?
In addition, I noticed the following line in https://developer.download.nvidia.com/assets/embedded/secure/jetson/agx_orin/Jetson-Orin-Fuse-Specification_DA-10877-001v1.5.pdf:
The programming of fuses should be done without a system reset between different phases.
We have split the process in the 3 stages above and manually reset the Orin into recovery mode each time.
I was wondering if this could cause problem and if we need to burn all fuses in one go?
If so, how to do this with FSKP?
Finally, and maybe most suspicious, on the unit that is failing to burn I noticed that the default value of BootSecurityInfo : was 000001e0 whereas on the other units we have successfully burnt it was 00000000 .
I know those bits are reserved and not guaranteed to be 0, but this is a difference on the very fuse we are trying to burn.
Is that potentially linked to our problem since we are trying to burn this fuse tos 0x209, so reset those fuses to 0, which is impossible.
Note that I obfuscated the fuse values in the log file attached.
manual_odmfuse.txt (94.5 KB)