Talking to drones without the internet
Two questions landed on me this week, back to back: how does a ground control station work with no internet, and how does it talk to a real drone? They sound like the same question. Hindi pala (turns out they're not) — and untangling them is the whole design.
"How is this supposed to work with no internet?"
"But then how does it talk back and forth to a real device?"
They sound like one question. They're actually opposite ends of the design, and the most important thing I can say is: air-gap means no internet — it does not mean no communication. A field laptop with no signal still flies its drones. Yan mismo yung buong punto (that's the entire point) of building it this way.
Two channels, and neither is the internet
There are two completely separate channels in this system. People collapse them into one ("the network") and then the air-gap claim sounds impossible.
INTERNET ✗ ─────── [ operator laptop ] ─────────────────┐
(never required) │ │
channel A: MAP │ channel B: DEVICE LINK
(local file) ▼ (local radio / serial / Wi-Fi)
basemap.pmtiles UDP · serial · RF · mesh · SATCOM → the asset
Channel A is the map. Tiles come from a single file that ships in the bundle, not from a tile server. You build or download that file once, with internet, commit it, and from then on the map renders offline forever. Build-time touches the network; runtime never does.
Channel B is the device link. This is the one people don't expect to exist on an "air-gapped" box. It's a local bearer — a point-to-point radio, a serial cable, a Wi-Fi access point the drone itself broadcasts, a mesh, a satellite modem. None of those is the public internet. A SiK radio on 915 MHz doesn't route through Cloudflare.
So: no internet, full comms. Hindi sila magkalaban (the two aren't in tension) once you stop treating them as the same wire.
The device bearers
Every supported asset talks over something local:
| Asset | Bearer | Transport |
|---|---|---|
| Micro-UAS (Tello) | the drone's own Wi-Fi AP | UDP text protocol |
| PX4 / ArduPilot | SiK/RF radio, or a tactical LAN | serial, or UDP |
| STANAG 4586 UAV | military datalink | LAN / serial |
| Swarm | mesh radio | (planned MeshLink) |
| Long range | SATCOM | its own bearer |
Notice there's no row that says "the cloud."
Restricted section
The concepts stay open; the implementation detail doesn't.
Request access
The shape of the answer to both questions turns out to be the same: draw the seam in the right place, and keep the internet out of the parts that don't need it. The map reads a local file. The drone talks over a local radio. Neither one calls home. And when the next device shows up, it plugs into the same hole the last one did.
docs/architecture/04-air-gap-and-comms.md.
Thoughts?
Comments are threads on GitHub, so a GitHub account is needed to post. No account? Email me instead — I read everything.