Jetpack 5.1 Bootloader update using UEFI Capsule

I wanted to upgrade the Bootloader ona 5.1 installation, but the variable required according to the manual does not exist. Should we simply create it?

https://docs.nvidia.com/jetson/archives/r35.2.1/DeveloperGuide/text/SD/Bootloader/UpdateAndRedundancy.html?#manually-trigger-the-capsule-update

For devices 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

There is a variable with another name, maybe it’s a typo?

ls /sys/firmware/efi/efivars/OsI*
/sys/firmware/efi/efivars/OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c

Hi Seeky15,

You could just use dd command to write into OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c as the guide w/o modifying the original OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c.

Hey @KevinFFF yeah, I was confused by the variable not existing. I tried it with the OsIndications now, but my system does ot attempt to perform any update. What could be causing this?

The nvbootcontrol gives me a status 0, so the update has not been attempted.

As the guide stated I copied the capsule generated with l4t_generate_soc_bup.sh and l4t_generate_soc_capsule-sh to the esp partition in a newly created folder UpdateCapsule and wrote the variable into OsIndications. Nothing happened.

On the host:

./l4t_generate_soc_bup.sh t19x
./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t19x/bl_update_payload -o bootloader.capsule t194
scp bootloader.capsule  root@10.80.11.3:/mnt/esp/UpdateCapsule/

On the system:

cd /sys/firmware/efi/efivars/
printf "\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00" > /tmp/var_tmp.bin
dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
sync
reboot

Would it work if you write into OsIndicationsSupported?

Nope, getting a write error when trying to write into OsIndicationsSupported, even if setting chattr -i

Do we have any updates on this topic? I’m seeing the same issue when trying to update my Tegra Orin on Rel 35.2.1.
I followed the instructions to generate the capsule payload and updated the efivar.
However, after rebooting, nothing seemed happened, and the capsule payload that I placed in the EFI/UpdateCapsule directory is deleted.

Please just use the following command before reboot to start update process

# sudo dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12

Let me update the overall workflow for Capsule Update on AGX Orin devkit with JP5.1.

[Host]
$ 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 <Username>@<IP address>:~/

[Target]
$ sudo su
# ll /dev/disk/by-partlabel/esp
# sudo mount /dev/mmcblk0p10 /mnt/
# cd /mnt/EFI
# mkdir UpdateCapsule
# cd UpdateCapsule/
# cp ${HOME}/TEGRA_BL.Cap .

With QSPI flash:
# printf "\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00" > /tmp/var_tmp.bin
# cd /sys/firmware/efi/efivars/
# dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
# reboot

You will see update status in UEFI after reboot

Run the following command to check if update is successful
$ sudo nvbootctrl dump-slots-info
[sudo] password for nvidia: 
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

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