We are generating a set of unit tests for a customer that requires us to exercise the A/B boot failover process. We need to a) corrupt a boot sector on slot A, b) show the failover to slot B, and then recover slot A.
We have already written zeros to A_mb1 and demonstrated the failover to slot B. Worked like a charm! Now with nvbootctrl we have as expected:
# nvbootctrl dump-slots-info
Current bootloader slot: B
Active bootloader slot: A
num_slots: 2
slot: 0, status: unbootable
slot: 1, status: normal
We then restore A_mb1, but we have no way to set slot A status back to normal. In the linked post, there was a scratchpad register accessible via busybox on NX.
Is there an equivalent slot for AGX Orin? Can you please tell us how to set Orin back to bootability?
may I confirm the Jetpack release version you’re now using.
assume you’re using the latest release, JP-5.1, it’s UEFI to reset the status, are you able to enter UEFI menu for confirmation.
We are still on JP 5.0.2 for another few weeks. We migrate starting March 6.
Has this changed between 5.0 and 5.1? If so, we can wait to address it then.
We’ve seen UEFI menu and UEFI shell, but that is unlikely to work long term as we will not be interactive with the Orin. A command line tool would be nice, too.
Is there any way to restore a bootloader slot back to bootability on either JP5.02 or JP5.1? We will accelerate our transition if this is an available feature.
$ ll /dev/disk/by-partlabel/esp
$ sudo mount /dev/mmcblk0p10 /mnt/
$ cd /mnt/EFI
# mkdir UpdateCapsule
# cd UpdateCapsule/
# cp /home/nvidia/TEGRA_BL.Cap .
With QSPI flash:
# cd /sys/firmware/efi/efivars/
# printf "\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00" > /tmp/var_tmp.bin
# sudo dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
# reboot
[Result]
$ sudo nvbootctrl dump-slots-info
Current version: 35.2.1
Capsule update status: 1
Current bootloader slot: B
Active bootloader slot: B
num_slots: 2
slot: 0, status: normal
slot: 1, status: normal