https://github.com/rauc/rauc-hawkbit-updater
The RAUC hawkBit updater is a simple commandline tool/daemon that runs on your target and interfaces between RAUC and hawkBit's DDI API.
https://github.com/rauc/rauc-hawkbit-updater
client embedded fota hacktoberfest hawkbit iot linux ota software-update update
Last synced: about 13 hours ago
JSON representation
The RAUC hawkBit updater is a simple commandline tool/daemon that runs on your target and interfaces between RAUC and hawkBit's DDI API.
- Host: GitHub
- URL: https://github.com/rauc/rauc-hawkbit-updater
- Owner: rauc
- License: lgpl-2.1
- Created: 2018-11-21T10:58:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-07-08T12:13:04.000Z (9 months ago)
- Last Synced: 2025-07-08T12:25:21.180Z (9 months ago)
- Topics: client, embedded, fota, hacktoberfest, hawkbit, iot, linux, ota, software-update, update
- Language: C
- Homepage: https://rauc-hawkbit-updater.readthedocs.io
- Size: 368 KB
- Stars: 66
- Watchers: 11
- Forks: 38
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES
- Contributing: docs/contributing.rst
- License: LICENSE
Awesome Lists containing this project
README
RAUC hawkBit Updater
====================
[](https://github.com/rauc/rauc-hawkbit-updater/actions)
[](https://raw.githubusercontent.com/rauc/rauc-hawkbit-updater/master/LICENSE)
[](https://github.com/rauc/rauc-hawkbit-updater/actions/workflows/codeql.yml)
[](https://rauc-hawkbit-updater.readthedocs.io/en/latest/?badge=latest)
[](https://app.element.io/#/room/#rauc:matrix.org)
The RAUC hawkBit updater is a simple command-line 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](https://github.com/rauc/rauc)
and the [hawkBit DDI API](https://github.com/eclipse/hawkbit).
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 get started with hawkBit server, follow
[this](https://github.com/eclipse/hawkbit#getting-started)
instruction.
Setup target (device) configuration file:
```ini
[client]
hawkbit_server = hawkbit.example.com
target_name = target-1234
auth_token = bhVahL1Il1shie2aj2poojeChee6ahShu
#gateway_token = chietha8eiD8Ujaxerifoxoh6Aed1koof
#ssl_key = pkcs11:token=mytoken;object=mykey
#ssl_cert = /path/to/certificate.pem
bundle_download_location = /tmp/bundle.raucb
#tenant_id = DEFAULT
#ssl = true
#ssl_verify = true
#ssl_engine = pkcs11
#connect_timeout = 20
#timeout = 60
#retry_wait = 300
#low_speed_time = 60
#low_speed_rate = 100
#resume_downloads = false
#stream_bundle = false
#post_update_reboot = false
#log_level = message
#send_download_authentication = true
[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:
```shell
$ ./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.
```shell
$ ./rauc-hawkbit-updater -d -c config.conf
```
Compile
-------
Install build pre-requisites:
* meson
* libcurl
* libjson-glib
```shell
$ sudo apt-get update
$ sudo apt-get install meson libcurl4-openssl-dev libjson-glib-dev
```
```shell
$ meson setup build
$ ninja -C build
```
Test Suite
----------
Prepare test suite:
```shell
$ sudo apt install libcairo2-dev libgirepository1.0-dev nginx-full libnginx-mod-http-ndk libnginx-mod-http-lua
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install --upgrade pip
(venv) $ pip install -r test-requirements.txt
```
Run hawkBit docker container:
```shell
$ docker pull hawkbit/hawkbit-update-server
$ docker run -d --name hawkbit -p ::1:8080:8080 -p 127.0.0.1:8080:8080 \
hawkbit/hawkbit-update-server \
--hawkbit.server.security.dos.filter.enabled=false \
--hawkbit.server.security.dos.maxStatusEntriesPerAction=-1 \
--server.forward-headers-strategy=NATIVE
```
Run test suite:
```shell
(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
---------------
```shell
$ /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
```