Documentation Index
Fetch the complete documentation index at: https://docs.altnautica.com/llms.txt
Use this file to discover all available pages before exploring further.
Installation
The Ground Agent uses the same install script as the Drone Agent. One command, one SD card image, one codebase. The hardware fingerprint at first boot picks the right profile automatically.Mission Control’s Flash Tool surfaces this install command automatically. See Install paths for the recommended flow per board class.
Prerequisites
- A Raspberry Pi 4B (or supported SBC) with a fresh Raspberry Pi OS Bookworm 64-bit image
- An RTL8812EU USB WiFi adapter plugged in
- Internet access during installation (WiFi or Ethernet)
- An SD card with at least 16 GB (32 GB recommended)
- A USB-C wall adapter or USB-C power bank that can sustain the board under radio load
One-line install
SSH into your SBC and run:What the install script does
System update
Runs
apt update and installs required packages: Python 3.11+, pip, systemd units, dnsmasq, hostapd, and build tools for the DKMS driver.DKMS driver build
Clones the RTL8812EU kernel module source and builds it via DKMS. This is the longest step. If kernel headers are missing, the script installs them first.
Agent install
Installs the
ados Python package from the GitHub release. Creates the ados system user, config directory at /etc/ados/, and runtime directory at /run/ados/.Systemd units
Deploys all systemd service units. They are not enabled yet because the profile has not been determined.
Profile detection
Runs
ados.bootstrap.profile_detect as the final step. The fingerprint checks for:- I2C device at
0x3Cor0x3D(OLED present) - Four GPIO pins with pull-ups (buttons wired)
- RTL8812EU USB device
- No flight controller on any serial port
profile: ground-station to /etc/ados/profile.conf and enables the ground-station systemd units.First boot after install
After the reboot, you should see:- OLED shows the Link screen with “No drone” (if not yet paired) or signal strength (if paired during install)
- WiFi AP broadcasts
ADOS-GS-XXXXwhereXXXXis the last four hex digits of the device ID - Setup webapp is reachable at
http://setup.ados.local/from any device on the AP
The AP passphrase is printed on the case sticker for production units. For bench builds, the default passphrase is
ados-ground. You can change it in the setup webapp or via the OLED menu.Verifying the install
SSH back into the SBC and run:ados to check WiFi AP, WFB-ng reception,
pairing, and network status.
Upgrading
To upgrade an existing ground station:Installing a specific branch
For testing pre-release features:Mesh support
Every ground-station install already pulls the mesh dependencies. There is no flag to set. On a fresh image or on--upgrade, the installer runs these steps:
- apt-installs
batctl,avahi-daemon,wpasupplicant(and trieswpasupplicant-mesh-saeorwpad-mesh-wolfsslfor the 802.11s SAE backend; falls back to IBSS carrier if neither is available). - Creates
/etc/ados/mesh/(mode 0755) so role-transition flows have somewhere to land mesh identity files. - Installs the three role-gated systemd units (
ados-batman.service,ados-wfb-relay.service,ados-wfb-receiver.service). They stay masked until a role transition starts them. The node stays indirectmode by default. profile_detectscans for a second USB-attached WiFi adapter at boot and setsmesh_capable: truein/etc/ados/profile.confwhen one is present. That flag unlocks the OLED Mesh submenu, the GCS Distributed RX and Mesh Hardware sub-views, and the/api/v1/ground-station/roleREST PUT for relay/receiver targets.
relay or receiver, plug a second RTL8812EU USB adapter into the node (default). This matches the primary adapter one-for-one so inventory stays simple and both radios run at the same 29 dBm for matched mesh range. Any 802.11s-capable USB WiFi adapter also works; MediaTek MT7612U (mainline mt76) and MT7921AU (mainline mt7921u) are the common alternatives when an operator prefers a mainline kernel driver for the mesh carrier.
Read the Mesh & Distributed Receive overview for the full picture.
Profile override
If auto-detection picks the wrong profile (rare, usually means ambiguous hardware), you can force it:/etc/ados/config.yaml directly:
Troubleshooting install issues
| Problem | Cause | Fix |
|---|---|---|
| DKMS build fails | Missing kernel headers | Run sudo apt install raspberrypi-kernel-headers and re-run the install |
| No WiFi AP after reboot | hostapd not started | Check systemctl status ados-hostapd |
| OLED blank | I2C not enabled | Run sudo raspi-config, enable I2C under Interface Options, reboot |
| Profile detected as “air” | Flight controller on USB | Unplug the FC and run sudo ados profile auto |
What is next
- Setup and Pairing for the first-time walkthrough
- WiFi AP to connect your laptop
- USB Tether for a wired connection
- Power and Runtime to size field power