PX4 Parameter Protocol

PX4 parameter reads and writes are not ordinary MAV_CMD flows. They use the MAVLink parameter microservice, while Open Platform still exposes them through the standard command lifecycle: create with POST /api/v1/open/downlink/commands and query with GET /api/v1/open/downlink/commands/{commandId}.

Capability Summary

CapabilityCountcommand_typeMAVLink frameResponse
Parameter read1px4.parameter.readPARAM_REQUEST_READ (20)PARAM_VALUE / PARAM_ERROR
Parameter write1873px4.parameter.<px4_param_name_lower>.setPARAM_SET (23)PARAM_VALUE / PARAM_ERROR

Where To Start

Read Parameter

Read any PX4 parameter id, for example COM_RC_IN_MODE

Write Parameter

Understand named parameter set requests, validation, and safety policy

Full Set Catalog

Browse 1873 named set commands and baseline metadata

Browse By PX4 Group

Find parameters by Commander, EKF2, MAVLink, Sensors, and other groups

Catalog Source

The current catalog is generated from PX4 parameters.json/xml build artifacts and checked with PX4 MAVLink parameter code as evidence. Catalog size:
CategoryCountMeaning
All writable named sets1873One fixed command type per parameter
FLOAT1310Written as floating-point values
INT32563Written as integers, enums, booleans, or bitmasks
Standard1455Normal runtime parameters
System411System, driver, and calibration parameters
Developer7Circuit breakers and development/debug parameters
volatile101PX4 runtime volatile parameters

Write Model

Callers do not construct raw PARAM_SET fields such as param_id, param_value, or param_type. Each parameter has its own named command:
px4.parameter.<px4_param_name_lower>.set
For example, CBRK_USB_CHK maps to:
px4.parameter.cbrk_usb_chk.set
Generic catalog-backed requests use payload.value:
{
  "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
}
Important parameters may have clearer business-specific fields. For example, COM_RC_IN_MODE uses payload.mode.

Completion Semantics

PX4 responsecommand.completed resultQuery status
Matching PARAM_VALUE with expected param_id, type, and valueparameter_value_confirmedSUCCEEDED
PARAM_ERRORparameter_errorFAILED
PARAM_VALUE for another parameter or mismatched valueparameter_mismatchUNKNOWN
No matching response before timeoutparameter_timeoutTIMED_OUT
Transport send failuretransport_failedFAILED
Agent local rejectionrejected_by_agentFAILED

Safety Policy

  • PX4_COMMAND_MODE=disabled is the default; disabled mode sends no real parameter frame to the controller.
  • Real reads and writes require guarded mode, ready transport, and operator guard.
  • Writes also require PX4_PARAMETER_WRITE_ALLOWLIST to contain the PX4 parameter ID fixed by the named command.
  • Payloads cannot provide param_id, value_type, or generic param1..param7.
  • MAV_CMD_DO_SET_PARAMETER is not exposed as an ordinary command flow; use named parameter set commands.

Detail Pages

The pages below provide more business-oriented explanations and typed payloads. They are not the full set command list; see the full set catalog for complete coverage.
Parametercommand_typeDescription
COM_RC_IN_MODEpx4.parameter.com_rc_in_mode.setManual-control input source
MPC_XY_VEL_MAXpx4.parameter.mpc_xy_vel_max.setMaximum horizontal velocity
CBRK_USB_CHKpx4.parameter.cbrk_usb_chk.setUSB-link circuit breaker
EKF2_GPS_CTRLpx4.parameter.ekf2_gps_ctrl.setGNSS fusion bitmask
MPC_Z_VEL_MAX_UPpx4.parameter.mpc_z_vel_max_up.setMaximum ascent velocity