Skip to content

Telemetry

Continuous newline-delimited JSON stream. Connect and read; the app pushes updates automatically.

Telemetry fields:

FieldTypeDescription
droneNamestringDrone name (set via app UI)
speed{x, y, z}Velocity (m/s)
headingfloatCompass heading (degrees)
attitude{pitch, roll, yaw}Aircraft attitude (degrees)
location{latitude, longitude, altitude}GPS position
phoneLocation{latitude, longitude, heading, pressure, battery, wifiRssi}Operator phone/RC location and sensor data
gimbalAttitude{pitch, roll, yaw}Gimbal orientation (degrees)
gimbalJointAttitude{pitch, roll, yaw}Gimbal joint angles (degrees)
zoomRatiofloatCamera zoom ratio
zoomFl / hybridFl / opticalFlfloatFocal lengths (-1 if unavailable)
batteryLevelintBattery % (0–100)
satelliteCountintGPS satellite count
homeLocation{latitude, longitude}Home point coordinates
homeSetboolHome point set
distanceToHomefloatDistance to home (m)
waypointReachedboolFinal waypoint reached
waypointSeq / yawSeq / altitudeSeqintSequence id of the waypoint / yaw / altitude command currently being executed. Match against the seq returned by the command to avoid acting on a stale reach flag
intermediaryWaypointReachedboolIntermediate waypoint reached
yawReachedboolTarget yaw reached
altitudeReachedboolTarget altitude reached
isRecordingboolCamera recording active
flightModestringGPS / ATTI / VIRTUAL_STICK / GO_HOME / AUTO_LANDING / WAYPOINT / MANUAL
remainingFlightTimeintRemaining flight time (s)
timeNeededToGoHomefloatTime to return home (s)
timeNeededToLandfloatTime to land (s)
totalTimefloatGo-home + land time (s)
maxRadiusCanFlyAndGoHomefloatMax safe flyable radius (m)
batteryNeededToGoHomefloatBattery % needed for RTH
batteryNeededToLandfloatBattery % needed to land
remainingChargeintRaw remaining battery charge from SDK
seriousLowBatteryThresholdfloatCritical low battery %
lowBatteryThresholdfloatLow battery warning %
isManualOverrideActiveboolPilot has taken manual RC control
readyToTakeoffboolAll preflight conditions satisfied
takeoffBlockReasonstringWhy takeoff is blocked when readyToTakeoff is false
lrfTarget{latitude, longitude, altitude}Last geo-referenced laser rangefinder target, null until the laser locks
autoSensingActiveboolOn-device target detection running
detectedTargetsarrayDetected targets from auto-sensing
webRtcobjectWHIP/WebRTC sender state, FPS, processing, drop, error, and recovery metrics when video is active
  • Custom naming: Set drone name via the app UI (tap the name display). Examples: "RedScout", "Bravo".
  • UDP broadcast discovery: DJIInterface("") broadcasts DISCOVER_LYREBIRD on port 30000; the app replies LYREBIRD_HERE:{ip}.
  • UDP multicast discovery: The app announces over 239.255.42.99:30001 for LANs where multicast is available.
  • mDNS/Bonjour: Lyrebird advertises _lyrebird._tcp. with service metadata.
  • Config endpoint: /config returns drone name and connection metadata (used by ROS auto-discovery and the dashboard).
  • Dynamic ROS namespaces: Nodes launch under the drone’s name (e.g., /RedScout/location), eliminating manual IP-to-name mapping.