Extending meta-tegra for OTA Updates: The rr-nvidia-ota Layer
|
|
NVIDIA OTA Updates for Jetson on Yocto/meta-tegra
NVIDIA provides OTA tooling as part of Linux_for_Tegra (L4T), but meta-tegra does not deliver a complete, ready-to-run OTA workflow out of the box. In practice, integrating NVIDIA’s OTA tools into a Yocto/meta-tegra build requires additional glue: packaging, paths, payload generation, and target-side usability.
The rr-nvidia-ota layer fills that gap. It is maintained by RidgeRun and is designed to sit on top of meta-tegra to make NVIDIA’s OTA tools practical in a Yocto-based workflow.
What meta-tegra gives you (and what it does not)
meta-tegra provides: - A solid Yocto integration for NVIDIA Jetson BSPs - The Linux_for_Tegra (L4T) content and tegraflash flows - Machine support, boot flows, and NVIDIA components
However, meta-tegra does not provide: - A complete OTA workflow using NVIDIA’s OTA scripts - A documented, reproducible path to generate OTA payloads from Yocto outputs - Target-side OTA tools arranged for straightforward usage
What this layer adds
The rr-nvidia-ota layer: - Integrates NVIDIA OTA tools into the Yocto/meta-tegra build outputs - Helps ensure OTA tooling is available on target under:
/opt/ota/Linux_for_Tegra/tools/ota_tools/version_upgrade/
- Documents and standardizes the OTA payload generation flow - Provides meta-tegra-friendly overrides and adjustments
Layer positioning
This layer is intended to be used together with: - poky - meta-openembedded - meta-tegra - rr-nvidia-ota (this layer)
It should be placed above meta-tegra in bblayers.conf.
Add the layer
From your build directory:
bitbake-layers add-layer ../rr-nvidia-ota
Supported platforms
Validated platforms so far:
| Platform | Status |
|---|---|
| jetson-agx-orin-devkit | Validated |
OTA payload generation (manual flow)
One reliable approach is to make a working copy of Linux_for_Tegra and generate the payload from that copy.
meta-tegra may append a version suffix to PV (for example, a timestamp). You can list candidates with:
ls build/tmp/work-shared/L4T-tegra-*/Linux_for_Tegra
2) Create an OTA working copy
cd build/tmp/work-shared/L4T-tegra-*/ cp -r Linux_for_Tegra Linux_for_Tegra-ota cd Linux_for_Tegra-ota export BASE_BSP="$(pwd)"
3) Generate the OTA payload
sudo env BASE_BSP="$BASE_BSP" \
./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh \
-s \
-f build/tmp/work/<machine>/<image>/<version>/tegraflash/<image>.ext4 \
jetson-agx-orin-devkit \
R35-6
Expected output will look like:
SUCCESS: generate OTA package for update without layout change ".../Linux_for_Tegra-ota/bootloader/jetson-agx-orin-devkit/ota_payload_package.tar.gz"
Apply the OTA payload on target
On the target device:
Note: the devkit must have been flashed at least once so the OTA tools are available when the update is triggered.
cd /opt/ota/Linux_for_Tegra/tools/ota_tools/version_upgrade/ ./nv_ota_start.sh /home/root/ota_payload_package.tar.gz
About l4t_generate_ota_package.sh parameters
Key parameters used above:
- -s
Generate an OTA payload for update without layout change.
- -f <rootfs-image>
Path to the root filesystem image produced by tegraflash. Common examples include: - core-image-minimal - core-image-xfce
- <board>
The target machine name, for example: - jetson-agx-orin-devkit
- <base-version>
The base BSP version string the OTA updates from. Example: - R35-6 (R35.6.x series)
Important: - The base-version must match the BSP version currently installed on the device being updated.
For direct inquiries, please refer to the contact information available on our Contact page. Alternatively, you may complete and submit the form provided at the same link. We will respond to your request at our earliest opportunity.
Links to RidgeRun Resources and RidgeRun Artificial Intelligence Solutions can be found in the footer below.