Skip to content

tier4/ota-client

Repository files navigation

OTAClient

Overview

OTAClient is software to perform over-the-air software updates for linux devices. It provides a set of APIs for user to start the OTA and monitor the progress and status.

It is designed to work with web.auto FMS OTA component.

Features

  • A/B partition update with support for generic x86_64 device, NVIDIA Jetson series based devices and Raspberry Pi device.
  • Full Rootfs update, with delta update support.
  • Local delta calculation, allowing update to any version of OTA image without the need of a pre-generated delta OTA package.
  • Support persist files from active slot to newly updated slot.
  • Verification over OTA image by digital signature and PKI.
  • Support for protected OTA server with cookie.
  • Optional OTA proxy support and OTA cache support.
  • Multiple ECU OTA supports.

Requirements

  • Python 3.8 or higher
  • Linux (Ubuntu 20.04, 22.04, 24.04)

Tested on ubuntu 20.04~24.04, and should work on modern linux distros that use systemd.

Installation

  • For development: Install from source code or use a released Python wheel package. See Development Guide.
  • For deployment: Using the OTAClient app image is recommended.

Configuration

Sample configuration files are available in the samples/ directory:

  • ecu_info.yaml - ECU information configuration
  • proxy_info.yaml - Proxy settings
  • otaclient.service - systemd service file

Protobuf Package

OTAClient uses protobuf for its API interface. To use OTAClient API in your Python project:

Installation

pip install https://raw.githubusercontent.com/tier4/ota-client/main/proto/whl/otaclient_pb2-<version>-py3-none-any.whl

Or add to your requirements.txt:

https://raw.githubusercontent.com/tier4/ota-client/main/proto/whl/otaclient_pb2-<version>-py3-none-any.whl

Usage

from otaclient_pb2.v2 import otaclient_pb2
from otaclient_pb2.v2 import otaclient_pb2_grpc

Testing

Note: The test structure is being reorganized. The old tests/ folder is frozen and no new tests should be added there. All new tests must be placed under the test/ folder, organized by category:

  • test/unit/ - Unit tests
  • test/integration/ - Integration tests
  • test/e2e/ - End-to-end tests

Please follow this structure when adding or updating tests.

Documentation

Contributing

Please refer to DEVELOPMENT.md for development setup, testing, and contribution guidelines.

License

OTAClient is licensed under the Apache License 2.0.

This project uses open-source software, each under its own license. For details, see the table below:

Software License Source
certifi MPL-2.0 GitHub

About

OTAClient

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages