RAUC – Over-the-Air Updates for Embedded Linux

Maintained by Pengutronix

Reliably providing updates in the field has become a central requirement for modern embedded systems. Partly for regulatory reasons, but above all in order to keep devices continuously supplied with security updates, bug fixes and new features.

With RAUC, Pengutronix develops and maintains, together with a worldwide community, one of the leading open-source frameworks for over-the-air updates. Besides classic A/B updates, RAUC supports a whole range of individual scenarios and integrates seamlessly into existing infrastructure and applications.

What is RAUC?

RAUC consists of two parts. On the host side it provides the tooling to create signed update bundles from the artifacts of the build system. On the target side, a service receives these bundles, authenticates them and installs images and artifacts atomically onto the matching target partitions or into the matching directories. The current state of the redundancy system can be fully introspected and controlled via the D-Bus interface and the command line tool that comes with it.

On the host side there is a key pair with which the artifacts are combined into a signed bundle. On the target side, RAUC verifies this bundle against the keyring stored on the device, while the system.conf describes which slots exist and where the individual images belong.

The central idea behind RAUC is a fail-safe update process: an update is either applied completely or not at all, and in case of failure the device still boots reliably.

Features

Signed bundles

Signing and verification via OpenSSL based on X.509 certificates. Keys and certificates can reside on PKCS#11 tokens, for example in an HSM.

HTTP(S) streaming

Installation directly from the network, without intermediate storage on the device.

Adaptive updates

Reduction of the download size by adaptively selecting delta update methods.

Encrypted bundles

In addition to signing, updates can also be delivered encrypted.

Bootloader updates

Built-in methods for atomic updates of the bootloader on various storage media.

Artifacts

Data, applications and containers can be updated independently of the base system.

Build system integration

The integration of RAUC into an embedded Linux system is supported by the common Linux build systems:

Further build systems can be connected just as well. For standalone use there is also extensive documentation available.

What does Pengutronix offer around RAUC?

Integration

We integrate RAUC into new as well as existing projects.

This also includes adapting the overall system towards updates, for example watchdog, systemd or partitioning.

Security and key handling

Professional key handling in production and on the device.

Plus updates in the context of verified boot, OP-TEE and comparable mechanisms.

Development and mainlining

Development and extension of new RAUC features, including upstreaming the changes into the official project.

Support

Professional support for all questions around using RAUC.

Supporting RAUC

Sponsoring packages

RAUC is and remains fully open source. New features often emerge from customer projects or from the community. Ongoing maintenance and upkeep, on the other hand, is harder to fund. With a sponsoring package you support exactly this work.

Sponsoring package