Does the Thor platform support updating the bootloader via nv_update_engine?

On the Orin platform, there are two ways to update the bootloader:
Method 1: Install the CAP file, set the UEFI variables, and the bootloader will be updated after the UEFI restarts.
Method 2: In compatibility mode, expose the MTD device and use the nv_update_engine payload method.

On Thor, Method 1 is the default option. Does it still support Method 2, i.e., updating via nv_update_engine?

The following is the code logic for Orin.

# If legacy update is not supported, prepare capsule to update bootloader;
# if legacy update is supported, call nv_update_engine to update bootloader.
echo "Starting bootloader post-install procedure."
if [ "${legacy_update_support}" = "false" ]; then
    # Prepare capsule update
    copy_capsule_and_l4tlauncher ${capsule_payload}
    set_capsule_uefi_variable
elif [ "${legacy_update_support}" = "true" ]; then
    # Use BUP to update
    install_mtdblock
    force_update
else
    echo "ERROR. Unrecognized legacy update support: ${legacy_update_support}."
    echo "Cannot install bootloader package. Exiting..."
    exit 1
fi

hello pengyang1,

may I have more details of updating the bootloader?
for instance, which partition you’re going to update? or, what’s the actual use-case?

We need to update the bootloader, UEFI and other partitions on the QSPI flash via the OTA method, in accordance with the documentation.

cat Linux_for_Tegra/tools/README_nv_bootloader_capsule_updater.txt

4. Update the QSPI flash.
   a. Copy the generated QSPI flash payload to the target filesystem.
      $ scp ${Your_host_user_name}@${Your_host_IP}:${Your_path}/Linux_for_Tegra/Tegra_IGX_BL.Cap /opt
   b. Execute the bootloader_updater utility to update the IGX bootloader on QSPI flash.
      $ sudo nv_bootloader_capsule_updater.sh -q /opt/Tegra_IGX_BL.Cap
   c. Reboot the tareget to update the QSPI flash image on non-current slot bootloader.
   d. To check the Capsule update status, run the nvbootctrl command after boot to system:
      $ sudo nvbootctrl dump-slots-info
      Note: Capsule update status value "1" means update successfully. About the Capsule update status,
            please refer to developer guide for more information.
   e. To sync bootloader A/B slots, do the step b to d again.
   f. Then the bootloader partitions on QSPI flash(both A/B slots) are updated.

OTA updates are completed in UEFI after a reboot. However, we want to complete this process in the system (during normal runtime), similar to the method used on Orin, via nv_update_engine

hello pengyang1,

Thor (t264 series) has different boot logic with Orin (t234 series).
there’re lots of changes, please expect next Jetpack public release (i.e. JP-7.1) will support that.

Jerry:
Are there any plans for future releases (e.g., JP-7.1) to support OTA updates of the bootloader during system runtime, similar to how the nv_update_engine works on Orin?

hello pengyang1,

FYI, updating the bootloader is executed in UEFI.
for Image-based OTA to update rootfs and also bootloader, updating rootfs is before updating the bootloader, once updating rootfs is finished, the device reboots, and then UEFI updates the bootloader through UEFI capsule update.

OK ,thanks

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