GithubHelp home page GithubHelp logo

sbabic / swupdate Goto Github PK

View Code? Open in Web Editor NEW
1.3K 92.0 374.0 15.48 MB

Software Update for Embedded Systems

License: GNU General Public License v2.0

C 77.08% Lua 4.84% C++ 3.85% Makefile 1.96% Shell 0.84% Perl 9.62% HTML 0.21% JavaScript 0.38% CSS 0.02% Lex 0.27% Yacc 0.61% Python 0.32%
embedded embedded-systems flashes emmc swupdate lua iot ota industrial-linux fota

swupdate's Introduction

SWUpdate - Software Update for Embedded Linux Devices

pipeline status Coverity Scan Build Status License REUSE status CII Best Practices Donate

SWUpdate is a Linux Update agent with the goal to provide an efficient and safe way to update an embedded Linux system in field. SWUpdate supports local and OTA updates, multiple update strategies and it is designed with security in mind.

Getting started

To start with SWUpdate, it is suggested you look at the documentation and build for one evaluation board (or you run SWUpdate on your host for a first overview).

Features

SWUpdate is a framework with a lot of configurable options:

  • Update of all components of device (rootfs, kernel, bootloader, microcontroller FW)
  • Install on embedded media (eMMC, SD, Raw NAND, UBIFS, NOR and SPI-NOR flashes)
  • Partitioner for GPT and MBR partition table
  • Allow single image delivery on multiple devices
  • Streaming mode without temporary copies of artifacts
  • Multiple interfaces (local and OTA) for getting software
    • local storage (USB, etc.)
    • integrated web server
    • integrated REST client connector to hawkBit for fleet updates.
    • remote server download
  • Software delivered as images, gzipped tarball, etc.
  • Allow custom handlers for installing FPGA firmware, microcontroller firmware via custom protocols.
  • Delta updates based on librsync.
  • Fail safe and atomic update
  • Lua interpreter to extend the update rules on your needs
  • Hardware / Software compatibility.
  • Small footprint to generate a rescue system to restore the device.
  • Cryptographic sign and verification of updates
    • support for OpenSSL
    • support for mbedTLS
    • support for WolfSSL
  • Encryption of artifacts via symmetric AES key.
  • pre and post update scripts
  • small resources required.
  • controllable via library
  • progress interface to report update status to an application / HMI.
  • ...and many others.

Take a look at features.

Technical documentation

Documentation is part of the project and can be generated, or you access to the Online Documentation.

Building

SWUpdate is well integrated in the Yocto build system by adding the meta-swupdate layer. It is also integrated in Buildroot. Debian (and Debian-like distributions) has merged a package.

Examples using meta-swupdate with evaluation boards (Beaglebone, RPI3) are provided in meta-swupdate-boards layer.

License

SWUpdate is released under GPLv2. A library to control SWUpdate is part of the project and it is released under LGPLv2.1. License information for any file is either explicitly stated or defaults to GPL version 2.0. Extension written in Lua are subjected to Lua license (MIT).

Community support

A community support takes place on the SWUpdate's Mailing List:

Please subscribe to the list to post.

A web-interface is available here.

Open Source Compliance

SWUpdate was analyzed to be Open Source compliant. See Open Source Compliance for details.

Contributing to the project

Contributions are welcome ! You can submit your patches (or post questions regarding the project) to the Mailing List.

Please read the contributing chapter in the documentation how to contribute to the project.

Patches are collected by Patchwork

swupdate's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.