Lyrebird is an open-source ground-control solution for DJI drones: a lightweight Android app (Kotlin, DJI Mobile SDK V5) that runs on the RC’s Android system — built into controllers like the RC Pro and RC Plus, or on a phone connected to a non-smart controller like the RC-N3 — paired with a Python GroundStation client, ROS 2 packages, and a MediaMTX/dashboard video stack. Every aircraft speaks MAVLink 2 by default — the lightweight wire QGroundControl, MAVSDK, and pymavlink already know — alongside HTTP + TCP, also on by default, kept for compatibility with this project’s predecessor WildBridge and as the API for what MAVLink doesn’t cover (media, AI detections, live settings). Pick either, or use both — no DJI SDK required.
Multi-drone setup: each RC runs Lyrebird and exposes a MAVLink 2 vehicle (UDP 14550), HTTP commands (port 8080), TCP telemetry (port 8081), discovery, and WHIP/WHEP video publishing through MediaMTX.
Every aircraft is a full MAVLink 2 vehicle from boot — QGroundControl, MAVSDK, and pymavlink connect with no plugin. HTTP + TCP run alongside it, also on by default, for WildBridge compatibility and for what MAVLink doesn’t cover yet.
A complete ground segment, but never a required one
Not just an RC app: a Python GroundStation client, PX4-style ROS 2 packages, and a MediaMTX-backed multi-drone video and telemetry dashboard — all optional tooling on top of the same MAVLink/HTTP wires a custom application can talk to directly.
Multi-drone by design
Several aircraft coexist on one LAN. Auto-discovery finds each drone, and ROS namespaces follow the drone’s own name.
Two-computer safety
A Safety Computer can seize command authority from the Pilot Computer at any time, and only it can hand control back.