All Projects → rauc → rauc-hawkbit-updater

rauc / rauc-hawkbit-updater

Licence: LGPL-2.1 license
The RAUC hawkBit updater is a simple commandline tool/daemon that runs on your target and interfaces between RAUC and hawkBit's DDI API.

Programming Languages

c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to rauc-hawkbit-updater

fullmetalupdate
FullMetalUpdate Python client application.
Stars: ✭ 19 (-52.5%)
Mutual labels:  ota, software-update, fota, hawkbit
Rauc
Safe and secure software updates for embedded Linux
Stars: ✭ 360 (+800%)
Mutual labels:  embedded, ota, update
kocherga
Robust platform-agnostic Cyphal/DroneCAN bootloader for deeply embedded systems
Stars: ✭ 21 (-47.5%)
Mutual labels:  embedded, ota
Elegantota
Push OTAs to ESP8266 or ESP32 Elegantly.
Stars: ✭ 128 (+220%)
Mutual labels:  ota, update
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+8162.5%)
Mutual labels:  embedded, ota
Sparkle
A software update framework for macOS
Stars: ✭ 5,662 (+14055%)
Mutual labels:  update, software-update
Swupdate
Software Update for Embedded Systems
Stars: ✭ 711 (+1677.5%)
Mutual labels:  embedded, ota
arm synth
Wavetable Synth Running on an STM32F 32-bit ARM Cortex M3 microprocessor
Stars: ✭ 23 (-42.5%)
Mutual labels:  embedded
zephyr-rtos-tutorial
Zephyr tutorial for beginners
Stars: ✭ 94 (+135%)
Mutual labels:  embedded
rust-sysfs-pwm
Linux PWM Access via Sysfs in Rust
Stars: ✭ 42 (+5%)
Mutual labels:  embedded
arm-none-eabi-gcc-xpack
A binary xPack with the Arm Embedded GCC toolchain
Stars: ✭ 85 (+112.5%)
Mutual labels:  embedded
Embedded UKF Library
A compact Unscented Kalman Filter (UKF) library for Teensy4/Arduino system (or any real time embedded system in general)
Stars: ✭ 31 (-22.5%)
Mutual labels:  embedded
upkit
UpKit: Software Updates for Internet of Things devices
Stars: ✭ 44 (+10%)
Mutual labels:  software-update
cowl
A lightweight C/C++ library for working with Web Ontology Language (OWL) ontologies
Stars: ✭ 18 (-55%)
Mutual labels:  embedded
bacnet-stack
BACnet Protocol Stack library provides a BACnet application layer, network layer and media access (MAC) layer communications services.
Stars: ✭ 199 (+397.5%)
Mutual labels:  embedded
uart
serial com api
Stars: ✭ 37 (-7.5%)
Mutual labels:  embedded
libDaisy
Hardware Library for the Daisy Audio Platform
Stars: ✭ 164 (+310%)
Mutual labels:  embedded
openncc
OpenNCC Kit
Stars: ✭ 23 (-42.5%)
Mutual labels:  embedded
Emma
Emma Memory and Mapfile Analyser
Stars: ✭ 21 (-47.5%)
Mutual labels:  embedded
taps
TUF Augmentation Proposals (TAPs)
Stars: ✭ 23 (-42.5%)
Mutual labels:  update

RAUC hawkBit Updater

Build Status License Total alerts Language grade: C/C++ Documentation Matrix

The RAUC hawkBit updater is a simple commandline tool / daemon written in C (glib). It is a port of the RAUC hawkBit Client written in Python. The daemon runs on your target and operates as an interface between the RAUC D-Bus API and the hawkBit DDI API.

Quickstart

The RAUC hawkBit updater is primarily meant to be used as a daemon, but it also allows you to do a one shot instantly checking and install new software.

To quickly getting started with hawkBit server, follow this instruction.

Setup target (device) configuration file:

  [client]
  hawkbit_server            = 127.0.0.1:8080
  ssl                       = false
  ssl_verify                = false
  tenant_id                 = DEFAULT
  target_name               = test-target
  auth_token                = bhVahL1Il1shie2aj2poojeChee6ahShu
  #gateway_token            = bhVahL1Il1shie2aj2poojeChee6ahShu
  bundle_download_location  = /tmp/bundle.raucb
  retry_wait                = 60
  connect_timeout           = 20
  timeout                   = 60
  log_level                 = debug
  post_update_reboot        = false

  [device]
  product                   = Terminator
  model                     = T-1000
  serialnumber              = 8922673153
  hw_revision               = 2
  key1                      = value
  key2                      = value

All key/values under [device] group are sent to hawkBit as data (attributes). The attributes in hawkBit can be used in target filters.

Finally start the updater as daemon:

  ./rauc-hawkbit-updater -c config.conf

Debugging

When setting the log level to 'debug' the RAUC hawkBit client will print JSON payload sent and received. This can be done by using option -d.

  ./rauc-hawkbit-updater -d -c config.conf

Compile

  mkdir build
  cd build
  cmake ..
  make
  cd ..

Test Suite

Prepare test suite:

$ sudo apt install libgirepository1.0-dev nginx-full
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install --upgrade pip
(venv) $ pip install -r test-requirements.txt

Run hawkBit docker container:

$ docker pull hawkbit/hawkbit-update-server
$ docker run -d --name hawkbit -p 8080:8080 hawkbit/hawkbit-update-server

Run test suite:

(venv) $ ./test/wait-for-hawkbit-online && dbus-run-session -- pytest -v

Pass -o log_cli=true to pytest in order to enable live logging for all test cases.

Usage / options

/usr/bin/rauc-hawkbit-updater --help
Usage:
  rauc-hawkbit-updater [OPTION?]

Help Options:
  -h, --help               Show help options

Application Options:
  -c, --config-file        Configuration file
  -v, --version            Version information
  -d, --debug              Enable debug output
  -r, --run-once           Check and install new software and exit
  -s, --output-systemd     Enable output to systemd
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].