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 and the hawkBit DDI API.
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 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
#stream_bundle = 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:
$ ./rauc-hawkbit-updater -c config.conf
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
Install build pre-requisites:
- meson
- libcurl
- libjson-glib
$ sudo apt-get update
$ sudo apt-get install meson libcurl4-openssl-dev libjson-glib-dev
$ meson setup build
$ ninja -C build
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 \
--hawkbit.server.security.dos.filter.enabled=false \
--hawkbit.server.security.dos.maxStatusEntriesPerAction=-1
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.
$ /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