Jump to content

Over-the-Air NVIDIA Jetson - RAUC

From RidgeRun Developer Wiki

🚧 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.

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page

NVIDIA partner logo NXP partner logo





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

  1. Bring-up and Yocto Integration — base integration, service startup, kernel cmdline, and target validation.
  2. Update Flow and Custom Bootloader — bundle creation, signed updates, extlinux A/B switching, and custom backend design.
  3. 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.




Cookies help us deliver our services. By using our services, you agree to our use of cookies.