Skip to content

MAVLink panel

The MAVLink panel is an engineering-grade surface for MAVLink-based drones (ArduPilot / PX4-based platforms) integrated through a WebSocket bridge. It’s not used with DJI aircraft (those use DJI Cloud API / DRC). It’s available in all modes (not debug-gated).

Connection

The panel starts with an input field + CONNECT / DISCONNECT buttons.

  • WebSocket bridge URL — the URL of your MAVLink-to-WebSocket bridge (e.g. ws://mavlink-bridge.example.com:4401). If your org has a standard bridge, your admin pre-fills this.
  • CONNECT — opens the WebSocket; the panel starts listening for MAVLink messages.
  • DISCONNECT — cleanly closes the connection.

Connection state is stored in the MavlinkConnectionService.state() signal — values disconnected / connecting / connected / error.

Demo mode

If you don’t have a real MAVLink bridge, the panel has built-in demo mode to exercise the UI with scripted telemetry.

  • START DEMO — spawns 3 simulated vehicles with continuously-moving positions, battery drain, and occasional mode changes.
  • STOP DEMO — halts the simulation.

Demo vehicles emit realistic-looking heartbeats + GLOBAL_POSITION_INT messages so you can see what the dashboard renders without live aircraft. Useful for training, dev work, or UI walkthroughs.

Vehicle dashboard

Once connected (or in demo mode), every vehicle’s data appears as a row or card. Per-vehicle info:

  • Drone ID — MAVLink system id.
  • Armed state● ARMED (red) or ○ DISARMED (grey).
  • Flight mode — auto / manual / guided / loiter / etc.
  • Satellite count.
  • Battery percentage.
  • Altitude AGL (m).
  • Ground speed (m/s).
  • Heading (degrees).
  • Lat / lng.
  • RSSI — radio signal strength.
  • Waypoint mission progress — current seq / total + throttle % + wind speed if an auto-mission is running.
  • Latest STATUSTEXT — most recent text message from the vehicle.

All fields update on every inbound heartbeat + telemetry packet.

Filtering

None in the current build. Vehicles auto-list in join order. Typical operational deployments have 1-4 vehicles so filtering hasn’t been a pain point, but planned.

These are aspirational:

  • Parameter read / write — no in-app PARAM_REQUEST / PARAM_SET UI. Use MAVProxy or QGroundControl for now.
  • Mission upload / download — no planner + uploader here; use external tools.
  • Calibration UI — no compass / accel calibration flows.
  • ESC / motor test — no motor-test dialog.

If you need those surfaces, run a dedicated MAVLink GCS (QGroundControl, MAVProxy, Mission Planner) alongside ARGUS. ARGUS’s MAVLink panel is deliberately minimal — it’s a read-only telemetry viewer for now.

When to use it

  • Debugging MAVLink connectivity. Confirm the bridge is up, heartbeats flowing, vehicle ids as expected.
  • Demos + training with the built-in demo mode.
  • Quick multi-vehicle status at a glance while other tiles show individual drones in detail.

For actual flight control of MAVLink drones, use the DRC controls + input mappings as with any other drone type. The MAVLink panel is display-only.

Known limitations

  • No bridge health indicator — if the bridge goes silent, you’ll see stale values but no explicit “lost connection” warning. Disconnect + reconnect to reset.
  • No export of the MAVLink message log.
  • Fleet tile — unified across MAVLink + DJI + handheld.
  • DRC controls — input-side control, works for MAVLink too.