docs: explain Ground Station artifact components
Build Ground Station / build (push) Successful in 35s

This commit is contained in:
2026-10-01 15:40:23 +02:00
parent d3bc369164
commit 056cd5440a
+45 -28
View File
@@ -1,44 +1,61 @@
# Ground Station
Orange Pi Zero 3W application for the custom OpenIPC/WFB ground station.
Orange Pi Zero 3W supervisor and kiosk display for the custom OpenIPC/WFB ground station.
## Current baseline
## Components
- receives framed GX12 RC channel data over the dedicated AUX1 UART at 115200 8N1;
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 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, shows the exact fallback text `Brak połączenia WFB` only while no video output is presented, and future display targets (MIPI/touch) get their own target-specific templates instead of one global layout.
- 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.
The first baseline is intentionally small. It does **not** yet control an AUX, manipulate the flight-control link, or replace the primary video pipeline.
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.
## Run
## Installation on Orange Pi
Extract the artifact and install **both** files:
```bash
# Supervisor (YAML configuration, default /etc/groundstation/config.yml;
# hardware UART paths live in the config file)
groundstation -config /etc/groundstation/config.yml
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
```
# Test input mode
groundstation -stdin
Check logs:
# Kiosk canvas alone (the supervisor starts it; standalone for debugging)
```bash
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:
```bash
groundstation-display -target x11
```
## Configuration
The service reads `/etc/groundstation/config.yml`. For the verified permanent GX12 connection, use:
```yaml
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
- 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.
- 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.