Over-the-Air NVIDIA Jetson - RAUC
🚧 Documentation is under development
The RidgeRun Platform Security Manual guide is currently under active development. Some sections may be incomplete or change without notice.
Questions? Contact RidgeRun or email to support@ridgerun.com.
- Introduction
- General Security Concepts
- Getting Started
- Contact Us
- Sponsor your Favorite Feature
RAUC on Jetson using OE4T
This wiki is a didactic guide to integrating and validating RAUC on NVIDIA Jetson platforms using OE4T / meta-tegra / tegra-demo-distro.
It is intended to help you:
- Understand what RAUC is and why it is useful for Jetson A/B updates
- Learn how RAUC fits into OE4T / Yocto
- Bring up a working target where rauc.service runs correctly
- Build and install a signed .raucb bundle
- Understand how slot detection works using root= and rauc.slot=
- Implement and understand a custom bootloader backend for Jetson using extlinux
- Explore advanced topics such as adaptive updates, persistent state, and custom storage layouts
Version note
This documentation reflects the integration work performed on Jetson AGX Orin using OE4T tegra-demo-distro and meta-rauc on a Scarthgap-based environment.
Always treat the README files and metadata corresponding to the exact branch you are using as the source of truth.
Getting Started
- Bring-up and Yocto Integration — base integration, service startup, kernel cmdline, and target validation.
- Update Flow and Custom Bootloader — bundle creation, signed updates, extlinux A/B switching, and custom backend design.
- Advanced Topics and Troubleshooting — adaptive updates, persistent state design, and failure modes.
Introduction
This documentation describes the investigation and integration work performed to enable RAUC (Robust Auto-Update Controller) on an NVIDIA Jetson platform using the OE4T (OpenEmbedded for Tegra) tegra-demo-distro.
The goal of the project is to prepare a reliable A/B update mechanism for Jetson devices using Yocto, RAUC, and the OE4T BSP, documenting the full path from research to a working RAUC service running on target.
Research and Initial Investigation
RAUC
RAUC is an update framework designed for embedded Linux systems that provides:
- Atomic system updates
- A/B slot management
- Cryptographic verification of update bundles
- Rollback safety
For Jetson devices, RAUC is attractive because it integrates well with Yocto and supports rootfs-based A/B updates.
Constraints on Jetson
During the investigation phase, the following constraints were identified:
- Jetson boot flow is not GRUB/UBoot-based by default
- OE4T uses cboot + UEFI + extlinux depending on configuration
- RAUC bootloader backends (grub, barebox, uboot) do not directly support Jetson
As a result, the initial approach was:
- Use RAUC with the noop bootloader backend
- Manually handle A/B switching via kernel command line
Relevant Layers and Where to Find Them
meta-tegra and tegra-demo-distro
OE4T provides the NVIDIA Jetson BSP and demo distro.
- Repository: tegra-demo-distro
- Main layers used:
- meta
- meta-tegra
- meta-tegra-community
- meta-tegrademo
The demo distro provides:
- Predefined machines (e.g. p3737-0000-p3701-0005)
- Demo image recipes (demo-image-base, demo-image-full, etc.)
- Flashing artifacts (tegraflash tarballs, initrd flash images)
meta-rauc
RAUC Yocto integration is provided by the meta-rauc layer.
- Repository: meta-rauc
- Provides:
- rauc
- rauc-native
- rauc-conf (since scarthgap)
- bundle.bbclass
Important note:
Since scarthgap, RAUC configuration is split into a separate recipe (rauc-conf). All system-specific configuration must be provided via a rauc-conf.bbappend.