How to upgrade Jetpack 5.1.2 to Jetpack 6.2 via OTA?

Hello, we currently have a need to upgrade our mass-produced equipment from Jetpack 5.1.2 to Jetpack 6.2 via OTA.
We have the following two ideas, please help determine the feasibility plan (we currently use A/B redundant system):

Option 1: Replace Jetson linux35.4.1 (jetpack5.1.2) directly with Jetson36.4.3 (Jetpack6.2) via OTA.
It involves the following:

(1) Ubuntu system version has been upgraded

(2) Other partition files need to be replaced using the dd command

Option 2: Still using Jetson36.4.3, only replacing Jetpack6.2 with the root file system. The principle is to package a Jetpack6.2 root file system under Jetson36.4.3 for mounting and replacement.
Questions about this plan:

(1) Does Jetpack 6.2+depend on Ubuntu system version?

Besides the above two options, do you have any mature upgrade plans from the official sources?

PS: What are the methods to upgrade Jetpack version for AGX Orin that does not use A/B redundant system?

~/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/tools/ota_tools/version_upgrade
has the scripts to do ota and Image_based_OTA_Examples.txt has good examples.

hello 1712127445,

please refer to developer guide, Updating Jetson Linux with Image-Based Over-the-Air Update.
you cannot upgrade to JP-6 directly based-on a version earlier than r35.5.0.
hence, please moving to r35.5.0 (or, later) and then upgrade to JP-6.2/r36.4.3

May I ask why it is not possible to upgrade directly to Jetson 36.4.3 through Jetson 35.4.1? What are the differences?

If we upgrade from Jetson 35.4.1 to Jetson 35.5.0 first, we will need to re adapt the driver (we are a custom board).

hello 1712127445,

it’s due to the image-based OTA scripts do NOT support an OTA update from a version earlier than R35.5.0 to the latest R36 version directly. hence, you need to upgrade to R35.5.0 first, then upgrade to the latest R36 version.

you may see-also training video, Introduction to Jetson OTA Update for details.

Relevant excerpt from ~/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/tools/ota_tools/version_upgrade/Image_based_OTA_Examples.txt. You do not need to adapt your driver as you will only be transiently on 35.5.0.

3. OTA update from a version earlier than R35.5.0 to the latest R36 version
The image-based OTA scripts do not support an OTA update from a version earlier than
R35.5.0 to the latest R36 version directly. To upgrade from such version, which includes
R35.2.1, R35.3.1 and R35.4.1, you need to upgrade to R35.5.0 first, then upgrade to the
latest R36 version.

The following examples show you the steps to perform an OTA update from an early R35 version to the latest
R36 version:

Case 9: to perform an OTA update from R35.2.1 to the latest R36 version on jetson-agx-orin-devkit, complete the following steps:
  a. Download R35.5.0 BSP, sample rootfs, and OTA tools package, and then extract them.
  b. Generate the OTA payload package from R35.2.1 to R35.5.0:
     $ cd Linux_for_Tegra
     $ sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \
       jetson-agx-orin-devkit R35-2
  c. Copy the OTA tools package "ota_tools_R35.5.0_aarch64.tbz2" and the generated OTA payload
     package "ota_payload_package.tar.gz" to the device, for example, put them in the "~/" directory.
  d. Extract "ota_tools_R35.5.0_aarch64.tbz2" and trigger the OTA update:
     $ cd ~/
     $ tar xjpf ota_tools_R35.5.0_aarch64.tbz2
     $ cd Linux_for_Tegra/tools/ota_tools/version_upgrade
     $ sudo ./nv_ota_start.sh ~/ota_payload_package.tar.gz
  e. Reboot the device.
     The Capsule update is to be executed once the device boots to UEFI. After the Capsule update is finished,
     the device is automatically rebooted and then boots from the chain that was newly upgraded to R35.5.0
  f. Download the latest R36 BSP, sample rootfs, and OTA tools package, and then extract them.
  g. Generate the OTA payload package from R35.5.0 to R36.4.0:
     $ cd Linux_for_Tegra
     $ sudo BASE_BSP=<R35.5.0 BSP>/Linux_for_Tegra ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \
       jetson-agx-orin-devkit R35-5
  h. Copy the OTA tools package "ota_tools_R36.4.0_aarch64.tbz2" and the generated OTA payload
     package "ota_payload_package.tar.gz" to the device, for example, put them in the "~/" directory.
  i. Extract "ota_tools_R36.4.0_aarch64.tbz2" and trigger the OTA update:
     $ cd ~/
     $ tar xjpf ota_tools_R36.4.0_aarch64.tbz2
     $ cd Linux_for_Tegra/tools/ota_tools/version_upgrade
     $ sudo ./nv_ota_start.sh ~/ota_payload_package.tar.gz
  j. Reboot the device.
     The Capsule update is to be executed once the device boots to UEFI. After the Capsule update is finished,
     the device is automatically rebooted and then boots from the chain that was newly upgraded to R36.4.0
  k. Generate the OTA payload package that updates the bootloader only from R36.4.0 to R36.4.0:
     $ cd Linux_for_Tegra
     $ sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \
       -b jetson-agx-orin-devkit R36-4
     Note: The purpose of this step is to update the other boot chains to R36. It is not supported
     using R35 boot chains to boot the R36 kernel/root FS.
  l. Copy the OTA tools package "ota_tools_R36.4.0_aarch64.tbz2" and the generated OTA payload
     package "ota_payload_package.tar.gz" to the device, for example, put them in the "~/" directory.
  m. Extract "ota_tools_R36.4.0_aarch64.tbz2" and trigger the OTA update:
     $ cd ~/
     $ tar xjpf ota_tools_R36.4.0_aarch64.tbz2
     $ cd Linux_for_Tegra/tools/ota_tools/version_upgrade
     $ sudo ./nv_ota_start.sh ~/ota_payload_package.tar.gz
  n. Reboot the device.
     The Capsule update is to be executed once the device boots to UEFI. After the Capsule update is finished,
     the device is automatically rebooted and then boots from the chain that was newly upgraded to R36.4.0.
     Now both bootloader chains and the rootfs are upgraded to R36.4.0

May I ask how to perform OTA upgrade for versions of the same series? For example, if we are currently using Jetson Linux 36.4.3 (Jetpack 6.2) and want to upgrade to Jetson 36.4.4 (Jetpack 6.2.1), is the upgrade package packaged using the following command?
BASE_BSP=<R36.4.3 BSP>/Linux_for_Tegra ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \ jetson-agx-orin-devkit R36-4-4

hello 1712127445,

you’ll need to configure BASE_BSP and TARGET_BSP accordingly before creating OTA payload.
for instance,
$ export BASE_BSP=~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_NX_TARGETS/Linux_for_Tegra
$ export TARGET_BSP=~/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
$ sudo -E ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh <target> <base_bsp>