{"id":13641224,"url":"https://github.com/rauc/rauc","last_synced_at":"2026-04-02T15:07:40.032Z","repository":{"id":31766512,"uuid":"35332768","full_name":"rauc/rauc","owner":"rauc","description":"Safe and secure software updates for embedded Linux","archived":false,"fork":false,"pushed_at":"2025-04-08T15:30:36.000Z","size":6609,"stargazers_count":920,"open_issues_count":94,"forks_count":221,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-04-13T22:57:28.097Z","etag":null,"topics":["client","embedded","firmware-update","firmware-updates","fota","iot","linux","ota","ota-firmware-updates","rauc","software-update","update"],"latest_commit_sha":null,"homepage":"https://rauc.io","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rauc.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES","contributing":"docs/contributing.rst","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":".github/SUPPORT.rst","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-09T15:02:56.000Z","updated_at":"2025-04-12T04:29:46.000Z","dependencies_parsed_at":"2023-11-15T22:41:46.766Z","dependency_job_id":"a9dcf27e-7224-4e49-b264-e6d00d910cbd","html_url":"https://github.com/rauc/rauc","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc%2Frauc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc%2Frauc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc%2Frauc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc%2Frauc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rauc","download_url":"https://codeload.github.com/rauc/rauc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249864313,"owners_count":21336724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","embedded","firmware-update","firmware-updates","fota","iot","linux","ota","ota-firmware-updates","rauc","software-update","update"],"created_at":"2024-08-02T01:01:18.921Z","updated_at":"2026-04-02T15:07:40.020Z","avatar_url":"https://github.com/rauc.png","language":"C","funding_links":[],"categories":["linux","C"],"sub_categories":[],"readme":".. image:: rauc_logo_small.png\n   :alt: RAUC logo\n   :align: center\n\nRAUC - Robust Auto-Update Controller\n====================================\n\n|LGPLv2.1| |CI_branch| |Codecov_branch| |Coverity| |codeql| |OSS-Fuzz| |Documentation| |Matrix| |CII Best Practices| |Repology|\n\n.. raw:: html\n\n   \u003ca href=\"https://repology.org/project/rauc/versions\"\u003e\n      \u003cimg src=\"https://repology.org/badge/vertical-allrepos/rauc.svg?exclude_unsupported=1\" alt=\"Packaging status\" align=\"right\"\u003e\n   \u003c/a\u003e\n\nRAUC controls the update process on embedded Linux systems. It is both a target\napplication that runs as an update client and a host/target tool\nthat allows you to create, inspect and modify update files (\"*bundles*\").\n\nSource Code: https://github.com/rauc/rauc\n\nDocumentation: https://rauc.readthedocs.org/\n\nChat: IRC channel ``#rauc`` on libera.chat (bridged to the\n`Matrix channel #rauc:matrix.org \u003chttps://matrix.to/#/#rauc:matrix.org\u003e`_)\n\nFeatures\n--------\n\n* **Fail-Safe \u0026 Atomic**:\n\n  * An update may be interrupted at any point without breaking the running\n    system.\n  * Update compatibility check\n  * Atomic bootloader updates (eMMC boot partitions, MBR, GPT)\n* **Cryptographic signing and verification** of updates using OpenSSL (signatures\n  based on x.509 certificates)\n\n  * Keys and certificates on **PKCS#11 tokens** (HSMs) are supported\n* **Flexible and customizable** redundancy/storage setup\n\n  * **Symmetric** setup (Root-FS A \u0026 B)\n  * **Asymmetric** setup (recovery \u0026 normal)\n  * Application partition, data partitions, ...\n  * Allows **grouping** of multiple slots (rootfs, appfs) as update targets\n* Built-in **HTTP(S) streaming** mode\n\n  * No intermediate storage on target required\n* Delta-like **adaptive update** support\n\n  * Transparent selection of download optimization\n* Alternative network delta-streaming mode (using casync tool)\n\n  * chunk-based binary delta updates\n  * special bundle format and external chunk store\n* Bundle **encryption** for multiple recipients\n* **Bootloader support**:\n\n  * `grub \u003chttps://www.gnu.org/software/grub/\u003e`_\n  * `barebox \u003chttp://barebox.org/\u003e`_\n  * `u-boot \u003chttp://www.denx.de/wiki/U-Boot\u003e`_\n  * `EFI \u003chttps://de.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface\u003e`_\n  * Custom implementation\n* Storage support:\n\n  * read-only filesystems: SquashFS, EROFS, dm-verity protected images, ...\n  * read-write filesystems: ext4, VFAT, UBIFS, JFFS2\n  * eMMC boot partitions (atomic update)\n  * UBI volumes\n  * raw NAND flash (using nandwrite)\n  * raw NOR flash (using flashcp)\n  * MBR partition table\n  * GPT partition table\n* Independent from update source\n\n  * Simple webserver (e.g. lighttpd)\n  * Software provisioning server (e.g. **hawkBit** with `rauc-hawkbit-updater \u003chttps://github.com/rauc/rauc-hawkbit-updater\u003e`_)\n  * USB Stick\n* Controllable via **D-Bus** interface\n* Supports data migration\n* Network protocol support using libcurl (https, http, tftp/ftp, ssh, ...)\n* Several layers of update customization\n\n  * Update-specific extensions (hooks)\n  * System-specific extensions (handlers)\n  * fully custom update script\n\nHost Features\n~~~~~~~~~~~~~\n\n*  Create and sign update bundles\n*  Resign bundles\n*  Encrypt bundles\n*  Inspect bundle files\n\nTarget Features\n~~~~~~~~~~~~~~~\n\n*  Run as a system service (D-Bus interface)\n*  Install bundles\n*  View system status information\n*  Change status of symmetric/asymmetric/custom slots\n\nTarget Requirements\n-------------------\n\n* Boot state storage\n\n  * GRUB: environment file on SD/eMMC/SSD/disk\n  * Barebox: State partition on EEPROM/FRAM/MRAM or NAND flash\n  * U-Boot: environment variable\n  * EFI: EFI variables\n  * Custom: depends on implementation\n* Boot target selection support in the bootloader\n* Enough mass storage for two symmetric/asymmetric/custom slots\n* Storage location and storage space for the bundle:\n\n  * For USB stick update: Sufficent space on the stick for (compressed) bundle, no on-target storage required\n  * For HTTP(S) bundle streaming installation: Sufficient space on server, no on-target storage requied\n\n    * For adaptive updates: some on-target storage for meta-data\n  * For casync-based updates: temporary on-target storage for downloaded chunks required\n  * For external (non-streaming) download: Sufficient temporary on-target storage space for (compressed) bundle\n* Hardware watchdog (optional, but recommended)\n* RTC (optional, but recommended)\n\nUsage\n-----\n\nPlease see the `documentation \u003chttps://rauc.readthedocs.org/\u003e`__ for\ndetails.\n\nPrerequisites\n-------------\n\nHost (Build) Prerequisites\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n-  build-essential\n-  meson\n-  libtool\n-  libdbus-1-dev\n-  libglib2.0-dev\n-  libcurl3-dev\n-  libssl-dev\n\n.. code-block:: sh\n\n   sudo apt-get install build-essential meson libtool libdbus-1-dev libglib2.0-dev libcurl3-dev libssl-dev\n\nFor HTTP(S) streaming support, you also need netlink protocol headers:\n\n.. code-block:: sh\n\n    sudo apt-get install libnl-genl-3-dev\n\nIf you intend to use json-support you also need\n\n.. code-block:: sh\n\n    sudo apt-get install libjson-glib-dev\n\nTarget Prerequisites\n~~~~~~~~~~~~~~~~~~~~\n\nRequired kernel options (either ``y`` or ``m``):\n\n-  ``CONFIG_MD``\n-  ``CONFIG_BLK_DEV_DM``\n-  ``CONFIG_BLK_DEV_LOOP``\n-  ``CONFIG_DM_VERITY``\n-  ``CONFIG_SQUASHFS``\n-  ``CONFIG_CRYPTO_SHA256``\n-  ``CONFIG_BLK_DEV_NBD`` (for streaming support)\n-  ``CONFIG_DM_CRYPT`` (for encryption support)\n-  ``CONFIG_CRYPTO_AES`` (for encryption support)\n\nFor using tar archive in RAUC bundles with Busybox tar, you have to enable the\nfollowing Busybox feature:\n\n-  ``CONFIG_FEATURE_TAR_AUTODETECT=y``\n-  ``CONFIG_FEATURE_TAR_LONG_OPTIONS=y``\n\nDepending on the actual storage type and/or filesystem used, further target\ntools might be required.\nThe documentation chapter\n`Required Target Tools \u003chttp://rauc.readthedocs.io/en/latest/integration.html#required-target-tools\u003e`_\ngives a more detailed list on these.\n\nBuilding from Sources\n---------------------\n\n.. note:: RAUC is intended to be built both as a host tool as well as a target\n   tool (service). Therefore it is fully prepared for cross-compilation with meson.\n\n.. code-block:: sh\n\n    git clone https://github.com/rauc/rauc\n    cd rauc\n    meson setup build\n    meson compile -C build # or 'ninja -C build' on meson \u003c 0.54.0\n\nManual Installation\n-------------------\n\n.. note:: To prepare RAUC for the target device, it is highly recommended to\n  use an embedded Linux distribution build suite such as Yocto/OE, PTXdist or\n  Buildroot.\n\nOn the host system RAUC can be used directly from the build dir, or optionally\nbe installed. On the target instead, installing is highly recommended as it\nalso unpacks service and D-Bus configuration files required to run RAUC\nproperly:\n\n.. code-block:: sh\n\n    meson install\n\nRunning the Test Suite\n----------------------\n\n.. code-block:: sh\n\n    sudo apt-get install qemu-system-x86 time squashfs-tools e2fsprogs python3-pytest python3-dasbus python3-aiohttp python3-requests python3-pyasn1 python3-pyasn1-modules\n    # Optional to run all tests:\n    # sudo apt-get install faketime casync grub-common openssl softhsm2 opensc opensc-pkcs11 libengine-pkcs11-openssl mtd-utils nginx-light tree\n    ./qemu-test\n\nCreating a Bundle (Host)\n------------------------\n\nCreate a directory with the content that should be installed:\n\n.. code-block:: sh\n\n    mkdir content-dir/\n    cp $SOURCE/rootfs.ext4 content-dir/\n\nCreate a manifest describing which image to install where together with some\nmeta info:\n\n.. code-block:: sh\n\n    cat \u003e\u003e content-dir/manifest.raucm \u003c\u003c EOF\n    [update]\n    compatible=FooCorp Super BarBazzer\n    version=2019.01-1\n    [image.rootfs]\n    filename=rootfs.ext4\n    EOF\n\nLet RAUC create a bundle from this:\n\n.. code-block:: sh\n\n    rauc --cert autobuilder.cert.pem --key autobuilder.key.pem bundle content-dir/ update-2019.01-1.raucb\n\nStarting the RAUC Service (Target)\n----------------------------------\n\nCreate a system configuration file in ``/etc/rauc/system.conf`` and start the\nservice process in background:\n\n.. code-block:: sh\n\n    rauc service \u0026\n\nInstalling a Bundle (Target)\n----------------------------\n\nTo install the bundle (from local storage) on your target device, run:\n\n.. code-block:: sh\n\n    rauc install update-2023.02-1.raucb\n\nTo install a bundle from a webserver (using RAUC's built-in HTTP(S) streaming), run:\n\n.. code-block:: sh\n\n    rauc install https://example.com/update-2023.02-1.raucb\n\nContributing\n------------\n\nFork the repository and send us a pull request.\n\nPlease read the Documentation's\n`Contributing \u003chttp://rauc.readthedocs.io/en/latest/contributing.html\u003e`_\nsection for more details.\n\nLicense\n-------\n\nCopyright (C) 2015–2026 RAUC project\n\nRAUC is free software; you can redistribute it and/or modify it under the terms\nof the GNU Lesser General Public License as published by the Free Software\nFoundation; either version 2.1 of the License, or (at your option) any later\nversion.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along\nwith this source code, see the file named `COPYING`_. If not, see\nhttps://www.gnu.org/licenses/.\n\n.. |LGPLv2.1| image:: https://img.shields.io/badge/license-LGPLv2.1-blue.svg\n   :target: #license\n.. _COPYING: https://raw.githubusercontent.com/rauc/rauc/master/COPYING\n.. |CI_branch| image:: https://github.com/rauc/rauc/workflows/tests/badge.svg\n   :target: https://github.com/rauc/rauc/actions?query=workflow%3Atests\n.. |Codecov_branch| image:: https://codecov.io/gh/rauc/rauc/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/rauc/rauc\n.. |Coverity| image:: https://scan.coverity.com/projects/22299/badge.svg\n   :target: https://scan.coverity.com/projects/22299\n.. |Documentation| image:: https://readthedocs.org/projects/rauc/badge/?version=latest\n   :target: http://rauc.readthedocs.org/en/latest/?badge=latest\n.. |Matrix| image:: https://img.shields.io/matrix/rauc:matrix.org?label=matrix%20chat\n   :target: https://matrix.to/#/#rauc:matrix.org\n.. |codeql| image:: https://github.com/rauc/rauc/workflows/CodeQL/badge.svg\n   :target: https://github.com/rauc/rauc/actions/workflows/codeql.yml\n.. |OSS-Fuzz| image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/rauc.svg\n   :target: https://oss-fuzz-build-logs.storage.googleapis.com/index.html#rauc\n.. |CII Best Practices| image:: https://www.bestpractices.dev/projects/5075/badge\n   :target: https://www.bestpractices.dev/projects/5075\n.. |Repology| image:: https://repology.org/badge/tiny-repos/rauc.svg?header=distribution%20packages\n   :target: https://repology.org/project/rauc/versions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frauc%2Frauc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frauc%2Frauc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frauc%2Frauc/lists"}