Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/PX4/PX4-Autopilot/llms.txt

Use this file to discover all available pages before exploring further.

PX4 uses a centralized parameter system to control nearly every aspect of vehicle behavior — from sensor fusion weights to arming checks to maximum velocity limits. Parameters are typed values (32-bit integer or 32-bit float) stored persistently in EEPROM or on the SD card, so they survive power cycles. You can read and write parameters through QGroundControl, the MAVLink protocol, the NuttX system console, or programmatically from any companion computer.
Most day-to-day parameters — such as those set during sensor calibration or airframe selection — are written automatically by QGroundControl’s setup wizards. Use the raw Parameters screen only when you need to modify values that do not have a dedicated QGC interface.

How parameter storage works

PX4 stores the authoritative copy of all parameters on the flight controller itself. On NuttX-based controllers the values are written to EEPROM or a dedicated partition on the SD card. On Linux-based controllers (Raspberry Pi, Snapdragon) they are written to a file at a configurable path. When PX4 boots, the firmware reads saved parameters and applies them. If no saved value exists for a parameter, PX4 uses the compiled-in default. The parameter system supports atomic saves — a write either completes fully or the previous value is kept — preventing corruption from unexpected power loss.
Flight controllers such as Pixhawk 4, Cube Orange, and similar boards store parameters in internal EEPROM. The maximum storage size is 4 KB (PARAM_FILE_MAXSIZE). Parameters persist across firmware upgrades unless you explicitly reset them.

Viewing and changing parameters in QGroundControl

Open QGroundControl and navigate to Q icon > Vehicle Setup > Parameters. The screen shows all parameters grouped by functional module. You can search by name, description, or partial string.
1

Open the Parameters screen

Connect your vehicle via USB or telemetry radio. Click the Q icon in the top-left corner, choose Vehicle Setup, then click Parameters in the left sidebar.
2

Find a parameter

Type a name or keyword into the Search field. For example, type EKF2_AID to filter to all EKF2 aiding source parameters. Check Show modified only to see only parameters that differ from firmware defaults.You can also expand parameter groups on the left to browse by functional area (e.g., Multicopter Position Control, VTOL, EKF2).
3

Change a value

Click any parameter row to open the edit dialog. The dialog shows the current value, the valid range, units, and a description. Enter the new value and click Save.The value is immediately uploaded to the vehicle. Some parameters take effect instantly; others require a reboot. QGC indicates when a reboot is required.
4

Reboot if required

After changing parameters that require a reboot, open Tools > Reboot Vehicle (top-right of the Parameters screen) or power-cycle the flight controller manually. Always reboot before flying after changing calibration or EKF2 parameters.
Changing parameters while the vehicle is armed or in flight is not recommended unless the parameter documentation explicitly states it is safe to do so. Many parameters are only applied at startup.
You can set individual parameters from any MAVLink-capable ground station, companion computer, or script using the PARAM_SET message.
# Example: set MPC_XY_VEL_MAX to 8.0 m/s using pymavlink
from pymavlink import mavutil

connection = mavutil.mavlink_connection('udp:127.0.0.1:14550')
connection.wait_heartbeat()

connection.mav.param_set_send(
    connection.target_system,
    connection.target_component,
    b'MPC_XY_VEL_MAX',   # parameter name, null-padded to 16 bytes
    8.0,                  # new value (float)
    mavutil.mavlink.MAV_PARAM_TYPE_REAL32
)
To read a parameter back, send PARAM_REQUEST_READ with the parameter name. PX4 responds with a PARAM_VALUE message containing the current value, type, and total parameter count.
connection.mav.param_request_read_send(
    connection.target_system,
    connection.target_component,
    b'MPC_XY_VEL_MAX',
    -1   # -1 = look up by name, not by index
)
msg = connection.recv_match(type='PARAM_VALUE', blocking=True)
print(f"{msg.param_id}: {msg.param_value}")
Use PARAM_REQUEST_LIST to download the complete parameter set from the vehicle. QGC does this automatically on connection. For scripts, cache the list locally and use PARAM_SET/PARAM_REQUEST_READ for individual updates to avoid saturating the telemetry link.

Parameter namespaces

PX4 parameters are organized by prefix. Understanding the namespaces helps you find the right parameter quickly.
Controls the EKF2 navigation filter: which sensors it fuses, noise levels, and covariance reset triggers.
ParameterTypeDescription
EKF2_AID_MASKint32Bitmask enabling aiding sources: GPS, optical flow, vision, barometer, etc.
EKF2_GPS_DELAYfloatEstimated GPS measurement delay (ms) relative to IMU.
EKF2_MAG_TYPEint32Magnetometer fusion mode: automatic, 3-axis, or none.
EKF2_HGT_REFint32Primary height reference: barometer, GPS, range finder, or vision.
Controls position and velocity setpoints, speed limits, and tilt constraints for multicopters.
ParameterTypeDescription
MPC_XY_VEL_MAXfloatMaximum horizontal velocity in Position mode (m/s). Default: 12 m/s.
MPC_Z_VEL_MAX_UPfloatMaximum climb rate (m/s). Default: 3 m/s.
MPC_Z_VEL_MAX_DNfloatMaximum descent rate (m/s). Default: 1 m/s.
MPC_TILTMAX_AIRfloatMaximum tilt angle during flight (degrees).
PID gains and rate limits for multicopter attitude and rate controllers.
ParameterTypeDescription
MC_ROLL_PfloatRoll angle proportional gain.
MC_PITCH_PfloatPitch angle proportional gain.
MC_ROLLRATE_PfloatRoll rate proportional gain.
MC_PITCHRATE_PfloatPitch rate proportional gain.
Attitude and position control parameters for fixed-wing aircraft, including L1 guidance and TECS.
ParameterTypeDescription
FW_AIRSPD_TRIMfloatCruise airspeed setpoint (m/s).
FW_AIRSPD_MINfloatMinimum airspeed before stall warning (m/s).
FW_L1_PERIODfloatL1 lateral guidance period (s). Lower values = tighter tracking.
FW_T_CLMB_MAXfloatMaximum climb rate commanded by TECS (m/s).
Controls arming conditions, disarming behavior, and safety checks run by the commander module.
ParameterTypeDescription
COM_DISARM_LANDfloatTime (s) after landing before auto-disarm. Set to -1 to disable.
COM_RC_LOSS_TfloatRC signal loss timeout (s) before triggering RC loss failsafe.
COM_LOW_BAT_ACTint32Action on low battery: warning, return, or land.
COM_ARM_EKF_GPSfloatMaximum EKF2 GPS innovation threshold for arming.
Board-level and firmware-level configuration including logging, autostart, and vehicle type.
ParameterTypeDescription
SYS_AUTOSTARTint32Airframe ID loaded on boot. Set by the Airframe selection wizard.
SYS_HITLint32Enable Hardware-in-the-Loop simulation mode.
SDLOG_MODEint32When logging starts: on arm, on boot, or externally triggered.

Real parameter examples

The following parameters are commonly adjusted during initial setup and tuning.
# Sensor fusion: enable GPS + barometer height fusion
EKF2_AID_MASK = 1        # bit 0 = GPS position, bit 1 = GPS velocity
EKF2_HGT_REF  = 1        # 1 = barometer as primary height source

# Auto-disarm 5 seconds after landing
COM_DISARM_LAND = 5.0

# Limit horizontal speed to 8 m/s in Position mode
MPC_XY_VEL_MAX = 8.0

# Trigger RC loss failsafe after 0.5 seconds of no signal
COM_RC_LOSS_T = 0.5

Saving, loading, and resetting parameters

QGroundControl provides a Tools menu (top-right of the Parameters screen) with the following options:
ActionDescription
RefreshRe-fetch all parameter values from the vehicle.
Reset all to firmware defaultsRestore every parameter to its compiled-in default value.
Reset to vehicle’s configuration defaultsRestore defaults for the currently selected airframe.
Save to fileExport all parameters to a .params file for backup or fleet replication.
Load from fileUpload a previously saved .params file to the vehicle.
Reboot VehicleSoft-reboot the flight controller (required after certain parameter changes).
Save your parameters to a file after completing configuration. If you need to reflash firmware or configure another vehicle of the same type, loading the file is much faster than repeating every setup step manually.

Build docs developers (and LLMs) love