Copyright (c) 2023 - 2024 Antmicro
Remote Device Fleet Manager (RDFM) is an open source framework for modular, configurable, multi-OS Over-the-Air (OTA) software updates and fleet management for embedded devices, as well as ML model management.
RDFM's main features include:
- Support for devices running Linux
- incl. support for NVIDIA Jetson modules using BSPs based on JetPack 5 and newer
- Support for devices running Android (with native updater support)
- Support for MCUs running Zephyr RTOS
- A/B partitioning schemes with auto-rollback
- Delta package updates
- Fleet management server (optional)
- OAuth2 support for read/write permissions
- Key-based (RSA) device authentication utilizing JSON Web Tokens for API authorization
- Open API for easy integration with CI systems or other fleet management solutions
- Compatible with all databases supported by SQLAlchemy
You can find out more about the framework and its capabilities in the following blog articles:
- Introductory article and overview
- RDFM delta packages overview
- RDFM support for Zephyr-controlled MCUs
- Updates for NVIDIA BSP releases
Below, you can see a screencast of the Hifive Unmatched board updated with a delta package, simulated in Renode, Antmicro's open source simulation framework.
RDFM's system stucture can be visualized as follows:
A typical RDFM system architecture consists of:
- an RDFM Management Server - handles device connections, packages, deployment, remote device management
- Devices - they connect to a central management server and utilize the exposed REST API and device-server RDFM protocol to enable remote management
- Users - individual users that are authenticated and allowed read-only/read-write access to resources exposed by the server.
The RDFM documentation provides an overview of RDFM's system architecture as well as detailed information and guides for the framework's clients, utilities, management server and API.
Follow the quick tutorial below to set up an instance of an RDFM server.
The simplest method for running the RDFM server is by using a Docker container. To set up a local development environment, first clone the RDFM repository:
git clone https://github.com/antmicro/rdfm.git
cd rdfm/
Build the container image by running the following from the root folder of the cloned repository:
docker build -f server/deploy/Dockerfile -t antmicro/rdfm-server:latest .
Then, start the server by running:
docker-compose -f server/deploy/docker-compose.development.yml up
Refer to the Management Server chapter of the RDFM documentation to learn about configuration options of the RDFM server.
We provide two README files containing sample tutorials for running an RDFM Linux client to update the SiFive HiFive Unmatched board:
For detailed information regarding client setup, refer to the following chapters in the RDFM documentation:
You can define the server address for a Linux RDFM client by editing the configuration contained in the rdfm.conf
file located in the /etc/rdfm
directory, for example:
{
"ServerURL": "https://rdfm.domain.tld/"
}
This repository contains sources for the RDFM OTA update / fleet manager system. It is structured as follows:
documentation/
- sources for the RDFM documentationdevices/
- RDFM-compatible clients that handle communication with the RDFM management server and perform the actual update procedureserver/
- RDFM management server that distributes packages to connected devicesmanager/
- CLI tool used for managing devices connected to the servertools/
- tools used by RDFM componentscommon/
- common libraries used by RDFM components
For more details, see the individual README files in the directories above or refer to the RDFM documentation.
RDFM
is licensed under the Apache-2.0 license. For details, see the LICENSE file.