Creating and Deploying OTA Update Package for Jetson Orin Nano Boards
Issue Overview
Users are experiencing difficulties when attempting to create and deploy an Over-The-Air (OTA) update package for Jetson Orin Nano boards. The specific issue involves updating the rootfs image while maintaining the same L4T version on boards with A/B partitions enabled. The problem occurs during the generation of the OTA package using the l4t_generate_ota_package.sh
script, resulting in an error related to the APP_b partition size.
Possible Causes
-
Partition Size Mismatch: The error message suggests a discrepancy in the expected and actual end sector for the APP_b partition, which could be caused by incorrect partition sizing or configuration.
-
Incompatible Partitioning Layout: The use of a custom board for Orin Nano might lead to differences in the partitioning layout compared to the default configuration.
-
Incorrect Script Parameters: The initial attempt to generate the OTA package included parameters that may not be necessary or compatible with the custom setup.
-
Mismatched Partition Layout Files: The script appears to be using a different partitioning file than the one used for initially flashing the board, which could lead to inconsistencies.
Troubleshooting Steps, Solutions & Fixes
-
Verify Jetpack Version:
Ensure you are using Jetpack 5.1.2, as confirmed by the user in the discussion. -
Check Partitioning Layout:
Review the current partitioning layout of your boards. The user provided a layout file which can be used as a reference:Partition layout: nvme0n1 259:0 0 119.2G 0 disk ├─nvme0n1p1 259:1 0 30G 0 part / ├─nvme0n1p2 259:2 0 30G 0 part ├─nvme0n1p3 259:3 0 7.8G 0 part ├─nvme0n1p4 259:4 0 512M 0 part └─nvme0n1p5 259:5 0 50.9G 0 part /mnt/uda
Ensure that your boards follow this layout, with 30GiB for each rootfs partition (A/B) and an additional UDA partition.
-
Use Correct Partition Layout File:
When generating the OTA package, use the exact same partition layout file that was used when initially flashing the board. This ensures consistency between the flashed system and the update package. -
Simplify OTA Package Generation Command:
Instead of using complex parameters, try the simplified command that worked for the user:sudo -E ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh --external-device nvme0n1 -S30GiB jetson-orin-nano-devkit R35-4
This command assumes rootfs A/B is enabled, specifies the external device as nvme0n1, sets the partition size to 30GiB, and targets the Jetson Orin Nano devkit with R35-4.
-
Avoid Unnecessary Steps:
If you’re updating only the rootfs, it’s not necessary to clone data from /dev/nvme0n1p1. Instead, prepare your custom rootfs image directly on the host system. -
Verify NVMe SSD Capacity:
Confirm that you’re using a 128GB NVMe SSD with rootfs A/B enabled, allocating 30GiB for each slot. -
Check for Script Updates:
Ensure you’re using the latest version of thel4t_generate_ota_package.sh
script, as there may have been updates to address issues with custom board configurations. -
Review Error Logs:
If you encounter errors, carefully review the output logs. Pay special attention to any messages related to partition sizes or layout discrepancies. -
Consult NVIDIA Documentation:
Refer to the official NVIDIA documentation for Jetson Orin Nano OTA updates, as there may be specific guidelines for custom board configurations.
By following these steps and ensuring consistency between your flashing process and OTA package generation, you should be able to successfully create and deploy OTA update packages for your Jetson Orin Nano boards with custom configurations.