2016-07-21 08:32:53 +02:00
<img src=hawkbit_logo.png width=533 height=246 />
2016-07-20 16:51:01 +02:00
2016-11-01 14:25:25 -04:00
# Eclipse hawkBit™ - Update Server
2016-01-21 15:40:38 +01:00
2024-11-05 11:41:56 +02:00
Eclipse [hawkBit ](http://www.eclipse.org/hawkbit/index.html ) is an domain independent back end solution for rolling out
software updates to constrained edge devices as well as more powerful controllers and gateways connected to IP based
networking infrastructure.
2016-01-21 13:20:56 +01:00
2024-10-04 13:22:35 +03:00
Build:
2024-10-04 14:35:49 +03:00
[](https://github.com/eclipse-hawkbit/hawkbit/actions/workflows/verify.yml)
2024-10-07 19:00:30 +03:00
[](https://sonarcloud.io/summary/new_code?id=eclipse-hawkbit_hawkbit)
2024-10-04 13:34:52 +03:00
[](https://search.maven.org/search?q=g:org.eclipse.hawkbit)
2019-04-10 10:20:09 +02:00
[](https://www.openhub.net/p/hawkbit)
2018-05-24 16:10:01 +02:00
2024-10-04 13:34:52 +03:00
License:
[](https://opensource.org/licenses/EPL-2.0)
2024-11-05 11:41:56 +02:00
Docker:
[](https://hub.docker.com/r/hawkbit/hawkbit-update-server)
2024-10-04 13:46:39 +03:00
[](https://hub.docker.com/r/hawkbit/hawkbit-update-server)
[](https://hub.docker.com/search?q=hawkbit%2Fhawkbit-update-server&type=image)
2016-09-26 08:56:16 +02:00
2016-03-16 11:49:46 +01:00
# Documentation
2023-07-20 11:16:36 +03:00
see [hawkBit Documentation ](https://www.eclipse.dev/hawkbit/ )
2016-03-16 11:49:46 +01:00
2016-01-29 11:28:29 +01:00
# Contact us
2020-01-22 10:24:57 +01:00
- Having questions about hawkBit? Check [Stack Overflow ](https://stackoverflow.com/questions/tagged/eclipse-hawkbit )
2024-11-05 11:41:56 +02:00
- Want to chat with the team behind
hawkBit? [](https://gitter.im/eclipse/hawkbit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2024-10-04 10:21:03 +03:00
- Having issues with hawkBit? Open a [GitHub issue ](https://github.com/eclipse-hawkbit/hawkbit/issues ).
2023-07-20 11:16:36 +03:00
- You can also check out our [Project Homepage ](https://www.eclipse.dev/hawkbit ) for further contact options.
2017-10-25 11:58:26 +02:00
2016-04-02 22:18:04 +02:00
# hawkBit sandbox
2024-11-05 11:41:56 +02:00
We offer a sandbox installation that is free for everyone to try out hawkBit. However, keep in mind that the sandbox
database will be reset from time to time. It is also not possible to upload any artifacts into the sandbox. But you can
use it to try out the Management API and DDI API. Keep in mind as well that you are not permitted to store any kind of
personal data in the sandbox.
2016-04-02 22:18:04 +02:00
2024-04-29 07:42:56 +02:00
[https://hawkbit.eclipseprojects.io ](https://hawkbit.eclipseprojects.io )
2016-01-21 13:18:55 +01:00
2017-12-16 17:17:54 +01:00
In addition the following vendors offer free trial accounts for their hawkBit compatible products:
2020-03-05 14:15:54 +01:00
- [Bosch IoT Rollouts ](https://developer.bosch-iot-suite.com/service/rollouts )
2019-01-31 07:29:27 +01:00
- [Kynetics Update Factory ](https://www.kynetics.com/iot-platform-update-factory )
2017-12-16 17:17:54 +01:00
2023-04-25 14:28:22 +02:00
# Device Integration (Client libraries)
2022-01-31 11:40:39 +01:00
2024-11-05 11:41:56 +02:00
hawkBit exposes HTTP/JSON based [Direct Device Integration (API) API ](https://www.eclipse.org/hawkbit/apis/ddi_api/ )
that allow any update client to integrate quite easily.
2016-01-26 11:34:39 +01:00
2024-11-05 11:41:56 +02:00
The [Eclipse Hara subproject ](https://projects.eclipse.org/projects/iot.hawkbit.hara ) aims to provide a reference agent
software implementation of the Eclipse hawkBit device API.
The [hara-ddiclient repository ](https://github.com/eclipse-hara/hara-ddiclient ) provides:
2023-04-06 13:17:51 +02:00
- a Kotlin library that facilitates and speeds up the development of DDI API clients running on the JVM
- a virtual-device application which provides:
- a reference example on how to use the library
- a configurable virtual device that can be used for different testing scenarios
2024-11-05 11:41:56 +02:00
The hara-ddiclient library has [reached version 2.x ](https://github.com/eclipse-hara/hara-ddiclient/releases ), and has
been successfully used in production for years.
2021-09-16 17:31:40 +02:00
2024-11-05 11:41:56 +02:00
Additionally, the hawkBit project has the long term goal to provide [Eclipse Hono ](https://github.com/eclipse/hono )
integration which will provide connectivity through various IoT protocols and as a result will allow a wide range of
clients to connect to hawkBit.
2017-03-30 08:46:31 +02:00
2023-04-25 14:28:22 +02:00
## Other open-source hawkBit Clients
2017-04-04 17:26:01 +02:00
There are clients outside of the Eclipse IoT eco system as well, e.g.:
2016-01-27 11:37:05 +01:00
2024-11-05 11:41:56 +02:00
- [SWupdate ](https://github.com/sbabic/swupdate ) which is a Linux Update agent with focus on a efficient and safe way to
update embedded systems.
- [rauc-hawkbit-updater ](https://github.com/rauc/rauc-hawkbit-updater ) which is a hawkBit client for
the [RAUC ](https://github.com/rauc/rauc ) update framework written in C/glib.
- [rauc-hawkbit ](https://github.com/rauc/rauc-hawkbit ) which is a python-based hawkBit client demo application and
library for the [RAUC ](https://github.com/rauc/rauc ) update framework.
- [hawkbit-rs ](https://github.com/collabora/hawkbit-rs ) provides a couple of [Rust ](https://www.rust-lang.org ) crates to
help [implement ](https://crates.io/crates/hawkbit ) and [test ](https://crates.io/crates/hawkbit_mock ) hawkBit clients.
- [Zephyr-RTOS ](https://docs.zephyrproject.org/apidoc/latest/group__hawkbit.html#details ): The Zephyr OS is a
small-footprint kernel designed for use on resource-constrained and embedded systems: from simple embedded
environmental sensors and LED wearables to sophisticated embedded controllers, smart watches, and IoT wireless
applications.
- [ChirpStack ](https://www.chirpstack.io/docs/chirpstack-gateway-os/use/software-update.html ): ChirpStack Gateway OS
uses [SWUpdate ](https://github.com/sbabic/swupdate ) for handling updates which can be integrated with Eclipse hawkBit.
ChirpStack is an open-source LoRaWAN Network Server which can be used to to setup private or public LoRaWAN networks.
2017-12-07 11:22:32 +01:00
2018-03-13 16:41:10 +01:00
# Runtime dependencies and support
2023-09-01 10:44:00 +03:00
## Java Runtime Environment: 17
2018-03-13 16:41:10 +01:00
## SQL database
2024-11-05 11:41:56 +02:00
| Database | H2 | MySQL/MariaDB | MS SQL Server | PostgreSQL | IBM DB2 |
|-----------------------------------|:------------------------------------------------------:|:---------------------------------------------------------------------------:|:-----------------------------------------------------------------:|:-----------------------------------------------------------------:|:------------------:|
| DDLs maintained by project | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Test dependencies defined | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
| Versions tested | 2.1 | MySQL 8.0.23, AWS Aurora | MS SQL Server 2017/2019 | PostgreSQL 12/13 | DB2 Server v11.1 |
| Docker image with driver provided | :white_check_mark: | :white_check_mark: (Tag: "-mysql") | :white_check_mark: | :white_check_mark: | |
2023-03-28 07:16:25 +02:00
| JDBC driver | [H2 2.1.214 ](https://github.com/h2database/h2database ) | [MariaDB Connector/J 2.7.8 ](https://github.com/MariaDB/mariadb-connector-j ) | [MSSQL-JDBC 10.2.3.jre8 ](https://github.com/Microsoft/mssql-jdbc ) | [PostgreSQL JDBC Driver 42.3.8 ](https://github.com/pgjdbc/pgjdbc ) | |
2024-11-05 11:41:56 +02:00
| Status | Test, Dev | Production grade | Production grade | Test, Dev | Test, Dev |
2018-03-13 16:41:10 +01:00
2021-01-14 09:07:03 +01:00
## (Optional) RabbitMQ: 3.6,3.7,3.8
2018-03-13 16:41:10 +01:00
2017-04-04 17:26:01 +02:00
# Getting Started
2017-01-11 14:32:55 +01:00
2024-11-05 11:41:56 +02:00
We are providing a [Spring Boot ](https://projects.spring.io/spring-boot/ ) based
reference [Update Server ](hawkbit-runtime/hawkbit-update-server ) including embedded H2 DB for test and evaluation
purposes.
2017-04-10 10:06:10 +02:00
Run with docker:
2018-06-11 15:56:15 +02:00
```bash
docker run -d -p 8080:8080 hawkbit/hawkbit-update-server
2017-04-10 10:06:10 +02:00
```
Open the update server in your browser:
2018-05-24 17:47:54 +02:00
[localhost:8080 ](http://localhost:8080 )
2017-04-10 10:06:10 +02:00
2024-11-05 11:41:56 +02:00
See below for how to build and run the update server on your own. In addition we have
a [guide ](https://www.eclipse.org/hawkbit/guides/runhawkbit/ ) for setting up a complete landscape.
2017-04-04 17:26:01 +02:00
2024-11-05 11:41:56 +02:00
**Note**: this docker image supports both DDI and DMF APIs. However, in order to have DMF API working you shall have
started additionally RabbitMQ on localhost:5672 with user guest/guest. Then the DMF will use / vhost. See more
at [guide ](https://www.eclipse.org/hawkbit/guides/runhawkbit/ ) -> _ Configure RabbitMQ connection settings _ .
2023-09-01 10:44:00 +03:00
2016-12-13 12:29:21 +01:00
# hawkBit (Spring boot) starters
2024-11-05 11:41:56 +02:00
Next to the [Update Server ](hawkbit-runtime/hawkbit-update-server ) we are also providing a set
of [Spring Boot Starters ](hawkbit-starters ) to quick start your
own [Spring Boot ](https://projects.spring.io/spring-boot/ ) based application.
2017-04-04 17:26:01 +02:00
# Clone, build and run hawkBit
2017-10-25 11:58:26 +02:00
## Build and start hawkBit [Update Server](hawkbit-runtime/hawkbit-update-server)
2016-12-13 12:29:21 +01:00
2018-06-06 16:52:34 +02:00
```bash
2024-10-04 10:21:03 +03:00
git clone https://github.com/eclipse-hawkbit/hawkbit.git
2018-06-11 15:56:15 +02:00
cd hawkbit
mvn clean install
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-#version #.jar
2016-02-09 17:49:24 +01:00
```
2017-04-04 17:26:01 +02:00
2024-10-04 10:21:03 +03:00
## Start hawkBit [Device Simulator](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-device-simulator) (optional)
2017-04-04 17:26:01 +02:00
2018-06-06 16:52:34 +02:00
```bash
2024-10-04 10:21:03 +03:00
git clone https://github.com/eclipse-hawkbit/hawkbit-examples.git
2018-06-11 15:56:15 +02:00
cd hawkbit-examples
mvn clean install
2016-02-09 17:49:24 +01:00
```
2017-04-04 17:26:01 +02:00
2018-06-06 16:52:34 +02:00
```bash
2018-06-11 15:56:15 +02:00
java -jar ./hawkbit-device-simulator/target/hawkbit-device-simulator-#version #.jar
2016-02-09 17:49:24 +01:00
```
2017-04-04 17:26:01 +02:00
2024-10-04 10:21:03 +03:00
## Generate getting started data with the [Management API example](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-example-mgmt-simulator) (optional)
2017-04-04 17:26:01 +02:00
2018-06-06 16:52:34 +02:00
```bash
2018-06-11 15:56:15 +02:00
java -jar ./hawkbit-example-mgmt-simulator/target/hawkbit-example-mgmt-simulator-#version #-exec.jar
2016-02-09 17:49:24 +01:00
```
2017-04-04 17:26:01 +02:00
# Status and API stability
2024-11-05 11:41:56 +02:00
hawkBit is currently in '0.X' semantic version. That is due to the need that there is still content in hawkBit that is
in need for refactoring. That includes the maven module structure, Spring Boot Properties, Spring Boot auto
configuration as well as internal Java APIs (e.g.
the [repository API ](https://github.com/eclipse-hawkbit/hawkbit/issues/197 ) ).
2017-04-04 17:26:01 +02:00
2024-11-05 11:41:56 +02:00
However, the device
facing [DDI API ](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-rest/hawkbit-ddi-api ) is on major
version 'v1' and will be kept stable.
2017-05-09 16:40:49 +02:00
2024-11-05 11:41:56 +02:00
Server facing and [DMF API ](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-dmf/hawkbit-dmf-api )
are [Management API ](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-rest/hawkbit-mgmt-api ) are on v1 as
well. However, we cannot fully guarantee the same stability during hawkBit's 0.X development but we will try as best we
can.