Skip to main content

Installation

The agent installs with a single command. It detects your board, installs dependencies, configures systemd services, and starts everything automatically.
Mission Control’s Flash Tool surfaces this install command automatically. See Install paths for the recommended flow per board class.

Quick install

SSH into your companion computer and run:
That is it. The script handles everything from there.
The install script requires root access. It installs to /opt/ados/, creates config at /etc/ados/, registers systemd services, and fetches the prebuilt Rust service binaries to /opt/ados/bin/. systemd is the supported process manager.

What the install script does

1

Detect the board

Reads /proc/device-tree/model and matches against the 17 built-in board profiles. Sets the tier and enables the right features for your hardware.
2

Install system packages

Installs Python 3.11+, pip, virtualenv, and any board-specific packages (like the RTL8812EU DKMS driver for WFB-ng). Uses apt on Debian/Ubuntu systems.
3

Create the virtual environment

Sets up a Python venv at /opt/ados/venv/ and installs the ados-drone-agent package from PyPI along with its dependencies (pymavlink, FastAPI, uvicorn, paho-mqtt, structlog, Rich, and more). The prebuilt Rust service binaries (supervisor, MAVLink router, control front, cloud relay, video, logging, and others) are fetched and placed in /opt/ados/bin/.
4

Generate device identity

Creates a unique device ID at /etc/ados/device-id using a chained fallback: Python uuid, OpenSSL random, or hostname-timestamp-pid. This ID is used for cloud pairing and mDNS.
5

Write default config

Creates /etc/ados/config.yaml with defaults tuned for your detected board. Serial port, baud rate, video resolution, and tier are all pre-filled.
6

Install systemd services

Copies service unit files to /etc/systemd/system/ and enables them. The supervisor service starts at boot and manages all child services.
7

Start the agent

Runs systemctl start ados-supervisor which brings up the full service tree: MAVLink proxy, REST API, video pipeline (if a camera is detected), cloud relay, health monitor, and everything else your tier supports.

Install with pairing

If you have a pairing code from ADOS Mission Control, include it during install:
This pairs the agent to your cloud account during installation. The drone will appear in your Mission Control dashboard as soon as it connects.

Upgrade an existing installation

To upgrade to the latest version without losing your config:
Or run ados update, which re-runs the installer upgrade for you:
Both preserve /etc/ados/config.yaml and your pairing state. See Updating the Agent for details.

Install from source

For contributors and developers who want to modify the agent code:
For deployment on actual hardware, always use the install script instead of pip install -e. The install script catches packaging bugs (missing data files, broken entry points) that editable installs skip silently. Editable installs are for local development on your laptop only.

Install on macOS (for development)

You can install the package on macOS for development and packaging checks. It will not have systemd, WFB-ng, or hardware GPIO, so hardware behavior must be verified on Linux hardware.
Or with pipx for an isolated install:

Uninstall

On Linux (removes services, binary, and data, keeps config):
To remove everything including config:
On macOS:
The CLI auto-detects whether you installed with pip, pipx, or uv and uses the matching uninstall command.

Directory layout after install

Verifying the installation

After install, check that everything is running:
ados shows the local setup webapp URL, service state, MAVLink state, video state, network URLs, and remote access state. Open the setup URL in a browser to finish onboarding.

Requirements