Mark bootloader bootable

Hi All -

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.

This is similar to Mark bootloader bootable, but for AGX Orin.

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?

Thank you!

hello waldman,

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.

Hi @JerryChang -

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.

Hi @JerryChang and co. -

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.

Thanks,
sam

Hi waldman,

The Capsule update is support from r35.2.1.
Please flash the latest JetPack-5.1 on your AGX Orin first.

List detail steps for you reference:
[Host-r35.2.1]

$ sudo ./l4t_generate_soc_bup.sh t23x
$ ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234
$ scp TEGRA_BL.Cap nvidia@<IP address>:/home/nvidia/.

[Target-Orin]

$ 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

If you want switch back to slot A, run target command again.
Please reference detail from: Update and Redundancy — Jetson Linux Developer Guide documentation

Thank you! We will look at this first thing next week and test this solution.

We haven’t yet had a chance to try this, but we will soon and report back with the progress.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.