Hi,
I’m trying to get A/B OTA updates working on my OrinNX, and the UEFI capsule update is failing.
I have secureboot enabled, ROOTFS_AB=1, ROOTFS_ENC=1.
Building the OTA package;
ROOTFS_ENC=1 ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \
--external-device nvme0n1 --uefi-keys bootloader/uefi_keys.conf \
--rootfs-uuid 32d98045-11f9-42a6-96f5-8442574bff82 \
--rootfs-b-uuid f028e661-08a4-42c2-85f1-592ca5e6bf46 \
--uda-uuid 194e77c3-427a-4304-875e-835c637e761b \
-i bootloader/sym2_t234.key emt_gx1 R36-4
I apply the OTA package using nv_ota_start.sh, and this runs successfully. I’ve verified that the kernel image, initrd, extlinux.conf etc. are updated in the /boot partition, and that the ‘B’ rootfs has been updated. I can see that TEGRA_BL.Cap is present in /boot/efi/EFI/UpdateCapsule/, and have verified that the EFI variable OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c is correct.
So, I reboot the board at this point. When it comes back up, I check /sys/firmware/efi/esrt/entries/entry0/last_attempt_status and it has a value of 6151. I run nvbootctrl get-current-slot, and it tells me the current slot is 0 (unchanged).
I’ve poked around in the edk source, and it appears that the vale of last_attempt_status corresponds to LAS_ERROR_IMAGE_NOT_IN_PACKAGE.
I’m a bit stuck at this point. I would prefer not to build the EDK to enable debug logging (my current serial port logs don’t contain anything relevant after I reboot, so I presume the log level isn’t DEBUG).
It’s worth mentioning that I had to apply the following to l4t_generate_ota_package.sh so that it would run successfully for me, which makes me wonder if I’m doing something wrong, or if this configuration is not tested.
@@ -1114,6 +1118,9 @@
if [ "${UEFI_KEYS}" != "" ]; then
env_var+="ADDITIONAL_DTB_OVERLAY=\"UefiDefaultSecurityKeys.dtbo\" "
fi
+ if [ "${rootdev}" == "${NVME_ROOTDEV}" ]; then
+ env_var+="BOOTDEV=${NVME_ROOTDEV} "
+ fi
cmd="${env_var} ${bup_generator} -f ${__board_spec_file} -e ${__board_spec_entry} -b ${board_name} "
if [ "${PKC_KEY_FILE}" != "" ] && [ -f "${PKC_KEY_FILE}" ]; then
cmd+="-u \"${PKC_KEY_FILE}\" "
Can anyone help me?
Cheers,
Dunk