PX4 Open Platform Integration

PX4 is an independent UTMOS Open Platform vendor. Integrators use the same authentication, command creation, command query, and event model as the rest of Open Platform, while requests set vendor to px4. PX4 does not reuse the DJI command catalog and is not part of the DJI compatibility layer.
Real PX4 downlink is disabled by default. Production behavior is read-only unless PX4_COMMAND_MODE=guarded, transport readiness, tenant authorization, and operator guard all allow a MAVLink command, parameter read, or parameter set frame to be sent.

Integration Surfaces

SurfaceCurrent capabilityPublic contract
Uplink telemetryMAVLink observation events and vehicle-state projectionPX4 cloud integration
MAV_CMD downlink178 PX4-sourced generated flowsPX4 command catalog
Parameter read1 px4.parameter.read flowParameter protocol
Parameter write1873 named px4.parameter.<name>.set commandsNamed parameter set
Bench validationReal controller, HITL, Gazebo Classic, and QGroundControlGazebo Classic HITL

Recommended Entry Points

Cloud Contract

NATS subjects, command.accepted, command.completed, uplink events, and status mapping

Command Catalog

Browse 178 MAV_CMD flows and parameter protocol entry points by capability domain

Parameter Set Catalog

Browse all 1873 PX4 named parameter set commands

Browse By PX4 Group

Find parameters by Commander, EKF2, MAVLink, Sensor Calibration, and other PX4 groups

Command Path

command.accepted only means Open Platform has authenticated, authorized, deduplicated, and persisted the request. It does not mean the flight controller has executed it. Use the query API’s status, response_code, response_message, and vendor_response for execution outcome.

Production Boundaries

  • PX4_COMMAND_MODE=disabled is the default; the agent sends no real downlink frame in that mode.
  • MAV_CMD does not accept generic mavlink_command payloads or raw param1 through param7 cloud fields.
  • Parameter writes do not expose generic px4.parameter.set or MAV_CMD_DO_SET_PARAMETER; use named parameter set commands.
  • Parameter writes must match PX4_PARAMETER_WRITE_ALLOWLIST; payloads cannot override param_id or value_type.
  • PX4 and DJI are peer vendors. Multi-vendor cloud behavior should converge through the shared command lifecycle, not by leaking PX4 semantics into DJI methods.

Minimal Request Example

{
  "vendor": "px4",
  "device_id": "px4-real-1",
  "command_type": "nav_return_to_launch",
  "payload": {},
  "idempotency_key": "req-px4-rtl-001",
  "timeout_seconds": 30
}
Parameter write example:
{
  "vendor": "px4",
  "device_id": "px4-real-1",
  "command_type": "px4.parameter.cbrk_usb_chk.set",
  "payload": {
    "value": 0
  },
  "idempotency_key": "req-px4-param-CBRK_USB_CHK-001",
  "timeout_seconds": 30
}

Next Steps

  1. Read PX4 cloud integration first to understand lifecycle and safety modes.
  2. For ordinary flight-controller actions, choose a capability domain from the PX4 command catalog.
  3. For parameter reads and writes, start with Parameter protocol, then use the parameter set catalog or PX4 group index for full write coverage.