Files
groundstation/README.md
T
piotr 056cd5440a
Build Ground Station / build (push) Successful in 35s
docs: explain Ground Station artifact components
2026-10-01 15:40:23 +02:00

2.4 KiB

Ground Station

Orange Pi Zero 3W supervisor and kiosk display for the custom OpenIPC/WFB ground station.

Components

The ARM64 artifact intentionally contains two executables:

  • groundstation-linux-arm64 — the long-running root supervisor. It owns the GX12 UART, logging, RC state, video lifecycle, and starts the display process.
  • groundstation-display-linux-arm64 — the unprivileged X11 kiosk renderer. It runs as orangepi on DISPLAY=:0; the supervisor owns it during normal use.

Current capabilities:

  • receives framed GX12 RC channel data at 115200 8N1;
  • validates protocol version, frame length and CRC-16;
  • logs channel changes instead of every frame;
  • starts/stops fpv-video from the configured CH6 power/lifecycle control;
  • starts an independent kiosk display before video, tolerates temporary X11 downtime without restarting the supervisor, and stops deterministically on shutdown;
  • keeps the fallback canvas below fpv-video, with Brak połączenia WFB while video is absent.

Future MIPI/touch targets use their own template rather than sharing one global layout. Flight OSD will use a separate transparent layer above video, preserving the pilot stream's priority.

Installation on Orange Pi

Extract the artifact and install both files:

sudo install -m 0755 groundstation-linux-arm64 /usr/local/bin/groundstation
sudo install -m 0755 groundstation-display-linux-arm64 /usr/local/bin/groundstation-display
sudo systemctl restart groundstation

Check logs:

systemctl status groundstation --no-pager
journalctl -u groundstation -b --no-pager -n 80

Do not run groundstation-display by hand during normal operation. It needs the X11 user/session environment and is managed by the supervisor. For isolated renderer debugging it supports:

groundstation-display -target x11

Configuration

The service reads /etc/groundstation/config.yml. For the verified permanent GX12 connection, use:

serial:
  path: /dev/ttyS2

/dev/ttyS0 is the Orange Pi boot/debug UART and must not be used for the permanently connected GX12.

Runtime dependencies

  • X11 session on :0 owned by orangepi; the kiosk waits for X11 and reconnects after display-manager restarts;
  • wmctrl for fullscreen/below kiosk state; without it the canvas maps as a normal window and the condition is logged;
  • runuser from util-linux for the unprivileged kiosk launch.