Complete, secure End-to-End OTA update system with HawkBit, including target updater, OTA manager, custom build system for OTA packages and a device fleet simulator.
I successfully made an end-to-end secure Over-the-Air (OTA) software update system for remote devices, by using the open-source platform hawkBit.
The hawkBit server is ready for production. My upcoming development steps involve creating the updater service on the target device, the OTA Manager, and the custom build system for the OTA update packages. For testing the complete system, I’ve created also an additional target device simulator. This simulator is capable of simulating a fleet with a large number of devices and able to inject all kind of update errors, timeouts and other issues.
This was a highly rewarding solo project that I designed, implemented and tested from start to finish.
This project implements a secure Over-the-Air (OTA) software update system for our devices using Hawkbit, a leading open-source platform.
Key Components:
Benefits:
This project ensures efficient and secure software updates, improving device functionality and security over time.
Eclipse hawkBit is a software update framework for IoT devices. It allows you to manage and deploy updates to edge devices, controllers, and gateways over the internet. It supports different protocols, roll-outs, and packages for your update needs. You can learn more about it on their official website or their GitHub repository.
To communicate with the target devices, the Hawkbit Direct Device Integration REST API is used.

Components
The Hawkbit Direct Device Integration (DDI) REST API is a set of resources provided by the hawkBit update server. It is designed for communication with devices to retrieve software update tasks. Here are the key points:
In short, the Hawkbit DDI REST API facilitates seamless communication between devices and the update server, allowing efficient software updates for constrained edge devices and more powerful controllers
The DDI REST API documentation can be found here: https://eclipse.dev/hawkbit/apis/ddi_api/
The updater service is responsible for the software updates on the target. The updates are provided by Hawkbit via distribution packages. These packages can contain updates for Docker containers, Python scripts, executables etc. The Updater service is written in Python3 and therefore platform independent. Python versions 3.6 to the latest version is supported and tested. The Updater service will run as a service in the background. Via Hawkbit it is also possible to update the Updater service itself.
The OTA Manager is using the Hawkbit Management REST API to communicate with Hawkbit and the underlying targets which are connected to Hawkbit. An explanation of this API can be found in the next section The Hawkbit Management REST API. The OTA Manager can be used to interface with the customers client system. The communication can be made bi-directional:
With all data available, it is possible to generate the configuration files (ota.ini) for all connected targets, with targetId and corresponding token to access Hawkbit. This is not implemented at the moment. Generating config files is tailor-made per customer.
The Hawkbit Management REST API is a powerful tool that allows you to manage and monitor software updates for devices. Here are the key points:
In summary, the Hawkbit Management REST API empowers efficient software management for both constrained edge devices and more powerful controllers.
The Management REST API documentation can be found here: https://eclipse.dev/hawkbit/apis/management_api/
The target device simulator is a simulator for simulating multiple target devices. Every target device runs in his own thread. It can be used to test the performance of a Hawkbit server. Remark: The real installing of a Docker container is not supported, because all the target device threads are running on the same machine. All non-Docker OTA packages with scripts and/or executables are supported.