actually, it’s recommended burning all the fuses you need in a single operation, while partial fuse burning is possible if SecurityMode is not burned, it may lead to issues not described in this document.
I think someone should update documentation and add a notice about this bug. We are at early development stage so we want to know what happens with SBK+PKC enabled with burning smallest number of bits. So we use 0x00001000…0 for Kek2 and 0x00…01000 for SBK just for testing and we didn’t burn odm_production_mode fuse. After using --test and see successful result we do actual burn and then our Xavier NX board stuck in Force RCM!
After some reading we decided to burn odm production mode, so we need to replace Kek2 and sbk with some random keys that has 1 in those locations.
Odmfuse.sh gives error:
Bug1: odmfuse.sh for burned SBK devices it just needs the old SBK to work. So it should have an argument like --sbk-key that accept the new key.
Bug2: As I mentioned in the first post odmfuse.sh stop with error that kek2 try to change a bit from 1 to 0 that was not true as I didn’t changed 1 to 0. The issue is that it seems fuses in board are in little endian form and odmfuse.sh didn’t convert them to big endian before comparing!
Workaround:
I was able to use fuse.xml file created by --noburn option and then add SecureBootKey manually and
add kek2 and burn without any error.
Again in this burn session I didn’t burn odm_production_mode to be able read SBK and other burned keys.
Finally I burn odm_production_mode and flash device with new keys and device boot and load ubuntu correctly.