piotr a31bed8aeb feat: independent fullscreen kiosk display foundation (#1)
Kiosk process owns its display lifecycle: waits for X11, keeps the
fullscreen black canvas below video, stops deterministically on signal.
Supervisor starts it before video, restarts only on process death, and
shuts the whole process group down; X11 downtime never restarts the
supervisor. Per-target opener/template abstractions for future MIPI.
2026-09-30 23:12:06 +02:00
2026-09-29 11:26:27 +02:00
2026-09-29 11:35:50 +02:00

Ground Station

Orange Pi Zero 3W application for the custom OpenIPC/WFB ground station.

Current baseline

  • receives framed GX12 RC channel data over the dedicated AUX1 UART at 115200 8N1;
  • validates protocol version, frame length and CRC-16;
  • logs final mixed channel values;
  • starts an independent kiosk display process that maps a fullscreen black canvas on DISPLAY=:0 before video, tolerates X11 downtime without restarting the supervisor, and stops deterministically on shutdown;
  • video keeps rendering priority: the kiosk canvas stays below the fpv-video window, and future display targets (MIPI/touch) get their own target-specific templates instead of one global layout.

The first baseline is intentionally small. It does not yet control an AUX, manipulate the flight-control link, or replace the primary video pipeline.

Run

# Supervisor (YAML configuration, default /etc/groundstation/config.yml;
# hardware UART paths live in the config file)
groundstation -config /etc/groundstation/config.yml

# Test input mode
groundstation -stdin

# Kiosk canvas alone (the supervisor starts it; standalone for debugging)
groundstation-display -target x11

Runtime dependencies

  • an X11 session on :0 owned by the orangepi desktop user (the kiosk waits for X11 to appear and reconnects after display-manager restarts);
  • wmctrl for the fullscreen/below kiosk window state — without it the canvas still maps but stays a plain window (logged);
  • runuser from util-linux (base install) for the unprivileged kiosk launch.

Protocol

The v1 protocol is described in AGENTS.md once the repository policy file is approved. It carries 16 final EdgeTX channel outputs as a binary framed message with CRC.

Project direction

  1. GX12 Ground Station UART mode sends final RC/switch state to Orange Pi.
  2. Orange Pi logs and renders state while supervising the FPV video launcher.
  3. Add WFB quality, recorder state, and MIPI touch display independently of pilot video.
  4. Add a watchdog-protected override of exactly one reserved SAFE/NORMAL/HIGH AUX.
S
Description
No description provided
Readme
225 KiB
Languages
Go 99.8%
Dockerfile 0.2%