Skip to content Link Search Menu Expand Document
ModalAI DOCS
Store

Arming Checks

Why PX4 refuses to arm on a VOXL drone, what each preflight message means, and which checks the VOXL defaults turn off.

Table of contents

  1. Finding the reason
  2. Common messages
    1. Kill switch engaged
    2. No manual control input
    3. Arming denied: throttle not in safe position
    4. Navigation error: No valid position estimate
    5. Waiting for estimator to initialize
    6. Estimator not stable
    7. High Accelerometer Bias or High Gyro Bias
    8. Accel or Gyro uncalibrated, missing, or inconsistent
    9. Compass messages
    10. Battery messages
    11. Attitude failure or imbalanced propeller
    12. Arming denied: calibrating
    13. Disarming denied: not landed
  3. Checks the VOXL defaults turn off
  4. Automatic disarm
  5. Source

PX4 runs a set of health and arming checks continuously. If any check fails, PX4 refuses to arm and reports why. This page covers PX4 v1.18 as shipped in the VOXL SDK, and the parameters the VOXL default parameter set in voxl-px4-params changes.

Finding the reason

QGroundControl shows every failed check. The vehicle status at the top of the screen reads Not Ready; click it to list the reasons. When you try to arm, QGroundControl also announces Arming denied: Resolve system health failures first followed by the failed checks.

Without QGroundControl, run the checks from an adb or ssh shell on VOXL 2:

px4-commander check

This prints Preflight check: OK or Preflight check: FAILED. Most failures are also written to the PX4 log as Preflight Fail: warnings, which you can read with:

journalctl --no-pager -b -u voxl-px4 | grep -i 'preflight\|arming'

Common messages

Kill switch engaged

The kill switch is on. On Starling 2 and Starling 2 Max the kill switch is channel 5, and switch high means motors killed. Flip it off and arm again. If the switch is off and the message stays, check the channel in QGroundControl’s Radio page and the RC_MAP_KILL_SW parameter.

No manual control input

PX4 is not receiving RC. Check that the transmitter is on and bound; for ELRS see voxl-elrs. Manual control lost means the link was working and dropped.

Arming denied: throttle not in safe position

The throttle stick is too high. In Position and Altitude modes the throttle must be at or below about 60% of its travel. In Manual and Stabilized modes it must be at the bottom. Lower the throttle and arm again.

The flight mode needs a position estimate and PX4 does not have one yet. On VIO drones this means VIO is not running or not initialized. Check voxl-inspect-vins (or voxl-inspect-qvio on drones that use qVIO) and see Flying with VIO. Arm in Manual mode, or wait for VIO and try again. The same applies to No valid altitude estimate and No valid global position estimate.

Mode not suitable for arming appears with this message when the selected mode cannot run, and Switching to Position is currently not available appears when you flip to a mode that cannot run yet.

Waiting for estimator to initialize

The EKF has not started yet. This is normal for a few seconds after PX4 starts. If it persists, check that the IMU and barometer are publishing data. ekf2 missing data means the EKF stopped receiving sensor data.

Estimator not stable

horizontal position unstable, horizontal velocity unstable, vertical velocity unstable, and height estimate not stable mean the EKF’s estimate is jumping. On VIO drones the usual cause is VIO resetting or a poor environment for VIO: low light, little texture, or a blocked tracking camera. See Environment and Optics.

High Accelerometer Bias or High Gyro Bias

The EKF estimates a large IMU bias. Keep the drone still on level ground after power on. If the message persists, recalibrate the IMU; see IMU calibration.

Accel or Gyro uncalibrated, missing, or inconsistent

MessageMeaning
Accel 0 uncalibrated, Gyro 0 uncalibratedNo calibration stored for that IMU. Run IMU calibration.
Accel Sensor 0 missing, No valid data from Accel 0PX4 expected the IMU and is not receiving data from it.
Accel 1 inconsistent - check cal, Gyro 1 inconsistent - check calTwo IMUs disagree by more than COM_ARM_IMU_ACC (0.7 m/s²) or COM_ARM_IMU_GYR (0.25 rad/s). Recalibrate.

The FPV parameter sets turn the accel consistency check off (COM_ARM_IMU_ACC = 0).

Compass messages

These apply to drones that use a magnetometer, such as drones with a GPS and compass module.

MessageMeaning
Compass 0 uncalibratedCalibrate the compass in QGroundControl under Vehicle Setup > Sensors > Compass.
Compasses 75° inconsistentTwo compasses disagree by more than COM_ARM_MAG_ANG (60°). Recalibrate both, and keep them away from power wiring.
Compass Sensor 0 missing, Found 0 compass (required: 1)The compass is not detected. See Compass problems.
heading estimate invalid, no heading referenceThe EKF has no usable heading.
Strong magnetic interferenceA warning only by default (COM_ARM_MAG_STR = 2). Move away from steel and power cables.

Battery messages

Low battery, Critical battery, and Emergency battery level follow the battery failsafe levels. Charge or replace the battery. Battery unhealthy means the battery reports a fault.

Attitude failure or imbalanced propeller

Attitude failure (roll) or (pitch) means the drone is tilted too far, for example upside down on the bench. Place it level. Imbalanced propeller detected comes from PX4’s failure detector; check the propellers for damage and correct mounting.

Arming denied: calibrating

A sensor calibration is running. Wait for it to finish.

Disarming denied: not landed

PX4 believes the drone is flying and refuses a disarm command. Land first, or use the kill switch in an emergency.

Checks the VOXL defaults turn off

The VOXL 2 default parameter set disables or relaxes several checks that do not apply to VOXL hardware. These messages do not block arming on a VOXL drone with default parameters.

CheckParameterVOXL defaultEffect
GPS qualityCOM_ARM_WO_GPS1GPS messages (fix too low, not enough satellites, drift) are warnings, so a VIO drone can arm without GPS.
Safety buttonCBRK_IO_SAFETY22027No safety button needed.
Power supplyCBRK_SUPPLY_CHK894281Avionics power and power module checks off.
CPU and RAM loadCOM_CPU_MAX-1Load check off.
SD cardCOM_ARM_SDCARD0SD card and crash dump checks off.

These checks are off in PX4’s own defaults and stay off on VOXL:

CheckParameterDefault
ESC telemetry (ESC telemetry missing, ESC 1 offline)COM_ARM_CHK_ESCS0
Ground station link (No connection to the ground control station)NAV_DLL_ACT0
Remote ID (Open Drone ID system missing)COM_ARM_ODID0; see Remote ID

Automatic disarm

With the Starling 2, Starling 2 Max, and most other ModalAI parameter sets, PX4 disarms if the drone does not take off within 20 seconds of arming (COM_DISARM_PRFLT). The FPV parameter sets turn this off. It also disarms shortly after it detects a landing (COM_DISARM_LAND).

Source

The checks are in the PX4 commander module, under src/modules/commander/HealthAndArmingChecks. The PX4 parameter reference describes every parameter on this page.