Skip to main content
Plug an HDMI monitor and a gamepad into the ground station. The agent opens its own cockpit full screen in Chromium: video, telemetry, alerts and skill buttons, with no laptop, phone or internet connection.
The cockpit can arm, take off, land and return the aircraft. Read Safety before flying from the kiosk.

What you need

  • An HDMI cable (a Pi 4B uses micro-HDMI) and any HDMI monitor.
  • A USB or Bluetooth gamepad.
The agent serves the cockpit itself. Nothing else needs installing.

How it starts

The ados-kiosk service runs on every ground station unless you turn it off:
  1. It stands down when ground_station.kiosk.enabled is false or ground_station.display.type is lcd or none.
  2. It waits for any connected display, checking every DRM card rather than assuming card0, and keeps waiting, so a monitor plugged in long after boot still gets the cockpit.
  3. It waits up to 90 seconds for the cockpit at http://localhost:8080/cockpit/?kiosk=1 to answer, so the screen never lands on an error page.
  4. It launches Chromium full screen: under the cage compositor on a board with no desktop, or as a full-screen window inside a running desktop session.
The kiosk re-reads its config every few seconds: changing enabled or the resolution restarts or stops it without a reboot. Without HDMI the rest of the ground station works normally.

The cockpit

Agent cockpit running full screen in kiosk mode with the link strip, safety band, HUD overlay, radar and map tiles, and the skill bar with Arm and Mode available while disarmed

The on-box cockpit on an HDMI monitor: full-frame video (a test pattern here) with the safety band, HUD, radar, mini-map and skill bar.

The cockpit has a menu rail: Feed, Link, Mesh, Pair, Uplink, System, Extensions and Settings. Feed is full-frame video with the HUD, an alert stack, a mini-map and the skill bar. It works by touch or gamepad. Video comes from the ground station’s own WHEP stream. Telemetry comes from the agent’s /api/telemetry endpoint, polled at 5 Hz.

Gamepad input

USB gamepads work immediately. Pair a Bluetooth gamepad first, from Mission Control (node panel, Buttons) or with POST /api/v1/ground-station/bluetooth/scan and POST /api/v1/ground-station/bluetooth/pair. In the cockpit the gamepad navigates the menus and fires the bound skills (Arm/Disarm, Takeoff, Land, RTL). Manual stick control from a ground station is carried by the ELRS/CRSF control lane, which reads the primary gamepad when it is enabled. See ELRS/CRSF control lane.

Pilot-in-command

A gamepad on the kiosk claims pilot-in-command (PIC) automatically when no one holds it. Other clients watch until they claim PIC. Claim or release PIC from Mission Control or the cockpit; the agent routes are POST /api/v1/ground-station/pic/claim and POST /api/v1/ground-station/pic/release. If the PIC client disconnects, the agent clears the claim and sends nothing on its behalf. What the aircraft does next is decided by the flight controller’s own RC-loss and GCS-loss failsafe. Configure and bench-test that failsafe before flying from the kiosk.

Display settings

The kiosk resolution is ground_station.kiosk.resolution: auto (keep the mode the compositor picked), 720p or 1080p. Set it from Mission Control (node panel, Display) or with PUT /api/v1/ground-station/display.

When things change

Next steps

ELRS/CRSF control lane

Stick control from the ground station.

Front panel

The OLED, buttons and touch LCD.
Last modified on October 11, 2026