bat0 interface that behaves like an ordinary Ethernet interface.
The second adapter
batman-adv runs on a second WFB-class adapter (RTL8812EU or RTL8812AU), separate from the one on the drone link.
The two adapters sit on separate bands so they do not interfere. If you change either channel, plan around the other.
Carrier: 802.11s or IBSS
The mesh rides on either 802.11s, authenticated with SAE, or IBSS, authenticated with IBSS-RSN from the same shared key, for drivers without 802.11s support. Neither carrier allows an unauthenticated join; if the secure join cannot come up, the node stays off the mesh.wpasupplicant the installer adds. Every ground_station.mesh key is listed in Drone Agent configuration.
Mesh id and shared key
Two neighbouring meshes on the same channel must not see each other’s traffic, so every mesh has two pieces of identity:- Mesh id:
ados-followed by a short hex string, shared by every node, stored in/etc/ados/mesh/id. It becomes the 802.11s mesh id (or IBSS name). - Shared key: 32 random bytes in
/etc/ados/mesh/psk.key(mode0600) that authenticate peers.
What runs on the box
When a node changes torelay or receiver, two pieces start.
ados-batman (the mesh manager) joins and supervises the mesh:
- Loads
batman-adv. - Brings the second adapter up in 802.11s or IBSS mode on the configured channel.
- Joins by mesh id, authenticated with the shared key.
- Attaches the adapter to
bat0and bringsbat0up. - Sets the gateway mode from the node’s role and uplink.
- Re-joins and re-attaches if the interface, the join or the batman membership is lost, and re-evaluates the gateway mode as the uplink comes and goes.
ados-groundlink, started by the relay or receiver role unit, polls the neighbours, gateways and partition state, writes /run/ados/mesh-state.json, and publishes mesh events.
Cloud gateway election
Any mesh node with an internet uplink (Ethernet, Wi-Fi client or cellular) can advertise itself as a gateway, and the rest of the mesh routes cloud traffic through the best one. Each node decides fromground_station.cloud_uplink:
The receiver runs as a gateway client and picks the gateway with the best batman-adv link quality (TQ). When the selected gateway drops, batman-adv evicts it and the next best takes over. Mission Control’s Mesh & RX tab shows the gateways, their link quality and which one is selected.
TQ measures mesh link quality, not uplink speed, so a nearby node with a slow modem can outrank a distant one with a fast link. Pin the gateway you want:
direct node this route returns 404 E_NOT_IN_MESH.
Diagnostics
GET /api/v1/ground-station/mesh reads /run/ados/mesh-state.json, not batctl directly, so it can trail a fresh batctl query by one poll.
Next steps
Build a mesh
Pair relays and change roles.
Mesh troubleshooting
When the mesh does not come up.