A 2D graphical telemetry monitor for the discovery-* family of bare-metal flight-controller firmware
(ark-discovery, and a planned holybro-discovery).
It connects to the board's USB CDC serial port and renders a primary-flight-display-style instrument panel — an artificial horizon (roll/pitch) with altitude and vertical-speed tapes — above a datalog panel of status/event lines (scrolling strip charts planned).
discovery-scope is intentionally a scope, not a full ground control station: it's read-only telemetry
visualization plus a few simple commands mirroring the firmware's serial controls (reboot-to-DFU, diagnostics
toggle). No maps, waypoints, or mission planning.
Working — live binary telemetry drives the PFD (artificial horizon + altitude/vertical-speed tapes) and an
event datalog. egui_plot strip charts off the raw sensor frames are the main remaining piece.
- egui / eframe — immediate-mode GUI; the panel repaints from the latest
telemetry each frame, which fits an instrument naturally. Custom 2D vector drawing (horizon, tapes, ladders)
uses egui's
Painter/Mesh. - egui_plot — scrolling strip charts for the datalog (planned).
- serialport — USB CDC access on a background thread, decoupled
from rendering. A
--demomode generates synthetic attitude so the panel runs without hardware. - discovery-telemetry — the shared postcard + COBS wire format the scope decodes (see below).
# install the latest from git (builds the binary into ~/.cargo/bin)
cargo install --git https://github.com/wboayue/discovery-scopecargo install accepts the usual selectors if you need them: --tag <v>, --branch <name>, --rev <sha>,
or --locked to honor the committed Cargo.lock.
# run against a connected board, auto-detecting the USB-CDC port
discovery-scope
# or name the port explicitly (find it with: ls /dev/cu.usbmodem*)
discovery-scope --port /dev/cu.usbmodemXXXX
# synthetic UI mock, no hardware needed
discovery-scope --demoWith no board attached the scope sits in SEARCHING/DISCONNECTED and auto-reconnects when one appears.
From a clone, swap discovery-scope for cargo run --release -- (e.g. cargo run --release -- --demo).
The scope decodes the binary wire format from the
discovery-telemetry crate (postcard frames + COBS framing
over USB CDC) — the single source of truth shared with the firmware. On connect the scope sends b to switch
the board into binary mode; the firmware keeps a human-readable text fallback for plain terminals. Attitude is
fused on the firmware (fusion-ahrs/fusion-altitude); the scope consumes the ready Fused frame.
ark-discovery— the STM32H743 ARK FPV firmware this monitors.
MIT — see LICENSE.
