INAV PID tuning: CLI settings
P, I, D and feedforward gains per axis for multirotors and fixed wing, I-term relax, D-boost, anti-gravity, heading hold, fixed-wing autotune and EzTune. They live in the control profile, so `control_profile N` selects which copy `set` changes.
74 settings in INAV 9.1.
Each range and value list is read from the release's src/main/fc/settings.yaml, each default from
the release's settings.yaml, with each constant and C type resolved by INAV's own settings.rb against the SITL and flight-controller target headers, so a board's own config can still change it. Set one with set name = value, then save.
Paste a diff all into the CLI checker to test it against any release.
| Setting | Type | Range or values | Default | 8.0 | 9.0 | 9.1 | Notes |
|---|---|---|---|---|---|---|---|
antigravity_accelerator # |
float control profile |
1 to 20 | 1needs USE_ANTIGRAVITY |
✓ | ✓ | ✓ | Multiplier for Antigravity gain. The bigger is the difference between actual and filtered throttle input, the bigger Antigravity gain |
antigravity_cutoff_lpf_hz # |
uint8 control profile |
1 to 30 | 15needs USE_ANTIGRAVITY |
✓ | ✓ | ✓ | Antigravity cutoff frequenct for Throtte filter. Antigravity is based on the difference between actual and filtered throttle input. The bigger is the difference, the bigger Antigravity gain |
antigravity_gain # |
float control profile |
1 to 20 | 1needs USE_ANTIGRAVITY |
✓ | ✓ | ✓ | Max Antigravity gain. `1` means Antigravity is disabled, `2` means Iterm is allowed to double during rapid throttle movements |
d_boost_gyro_delta_lpf_hz # |
uint8 control profile |
10 to 250 | 80needs USE_D_BOOST |
✓ | ✓ | ✓ | Cutoff frequency for the low pass filter applied to the gyro delta signal used for D-term boost. Lower value will produce a smoother D-term boost signal, but it will be more delayed. |
d_boost_max # |
float control profile |
1 to 3 | 1.25needs USE_D_BOOST |
✓ | ✓ | ✓ | D-term multiplier when rapid external conditions are detected. Lower values give sharper response to stick input, higher values give smoother response by scaling D-gains up. |
d_boost_max_at_acceleration # |
float control profile |
1000 to 16000 | 7500needs USE_D_BOOST |
✓ | ✓ | ✓ | Acceleration threshold for D-term multiplier. When acceleration is above this value, D-term multiplier is set to `d_boost_max` |
d_boost_min # |
float control profile |
0 to 1 | 0.5needs USE_D_BOOST |
✓ | ✓ | ✓ | D-term multiplier when pilot provides rapid stick input. Lower values give sharper response to stick input, higher values give smoother response. |
ez_aggressiveness # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune aggressiveness |
ez_axis_ratio # |
uint8 control profile |
25 to 175 | 110 |
✓ | ✓ | ✓ | EzTune axis ratio |
ez_damping # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune damping |
ez_enabled # |
uint8 control profile |
OFF, ON | OFF |
✓ | ✓ | ✓ | Enables EzTune feature |
ez_expo # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune expo |
ez_filter_hz # |
uint16 control profile |
20 to 300 | 110 |
✓ | ✓ | ✓ | EzTune filter cutoff frequency |
ez_rate # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune rate |
ez_response # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune response |
ez_snappiness # |
uint8 control profile |
0 to 100 | 0 |
✓ | ✓ | ✓ | EzTune snappiness |
ez_stability # |
uint8 control profile |
0 to 200 | 100 |
✓ | ✓ | ✓ | EzTune stability |
fw_autotune_max_rate_deflection # |
uint8 global |
50 to 100 | 90needs USE_AUTOTUNE_FIXED_WING |
✓ | ✓ | ✓ | The target percentage of maximum mixer output used for determining the rates in `AUTO` and `LIMIT`. |
fw_autotune_min_stick # |
uint8 global |
0 to 100 | 50needs USE_AUTOTUNE_FIXED_WING |
✓ | ✓ | ✓ | Minimum stick input [%], after applying deadband and expo, to start recording the plane's response to stick input. |
fw_autotune_rate_adjustment # |
uint8 global |
FIXED, LIMIT, AUTO | AUTOneeds USE_AUTOTUNE_FIXED_WING |
✓ | ✓ | ✓ | `AUTO` and `LIMIT` adjust the rates to match the capabilities of the airplane, with `LIMIT` they are never increased above the starting rates setting. `FIXED` does not adjust the rates. Rates are not changed when tuning in `ANGLE` mode. |
fw_d_level # |
uint16 control profile |
0 to 255 | 75 |
✓ | ✓ | ✓ | Fixed-wing attitude stabilisation HORIZON transition point |
fw_d_pitch # |
uint16 control profile |
0 to 255 | 0 |
✓ | ✓ | ✓ | Fixed wing rate stabilisation D-gain for PITCH |
fw_d_roll # |
uint16 control profile |
0 to 255 | 0 |
✓ | ✓ | ✓ | Fixed wing rate stabilisation D-gain for ROLL |
fw_d_yaw # |
uint16 control profile |
0 to 255 | 0 |
✓ | ✓ | ✓ | Fixed wing rate stabilisation D-gain for YAW |
fw_ff_pitch # |
uint16 control profile |
0 to 255 | 50 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation FF-gain for PITCH |
fw_ff_roll # |
uint16 control profile |
0 to 255 | 50 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation FF-gain for ROLL |
fw_ff_yaw # |
uint16 control profile |
0 to 255 | 60 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation FF-gain for YAW |
fw_i_level # |
uint16 control profile |
0 to 255 | 5 |
✓ | ✓ | ✓ | Fixed-wing attitude stabilisation low-pass filter cutoff |
fw_i_pitch # |
uint16 control profile |
0 to 255 | 7 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation I-gain for PITCH |
fw_i_roll # |
uint16 control profile |
0 to 255 | 7 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation I-gain for ROLL |
fw_i_yaw # |
uint16 control profile |
0 to 255 | 10 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation I-gain for YAW |
fw_iterm_lock_engage_threshold # |
uint8 control profile |
5 to 25 | 10 |
✓ | ✓ | ✓ | Defines error rate (in percents of max rate) when Iterm Lock is engaged when sticks are release. Iterm Lock will stay active until error drops below this number |
fw_iterm_lock_rate_threshold # |
uint8 control profile |
10 to 100 | 40 |
✓ | ✓ | ✓ | Defines the steepness of the attenuation curve. Higher values result in flatter attenuation. Lower values force full attenuation with lower stick deflection |
fw_iterm_lock_time_max_ms # |
uint16 control profile |
100 to 1000 | 500 |
✓ | ✓ | ✓ | Defines max time in milliseconds for how long ITerm Lock will depress Iterm after sticks are release |
fw_level_pitch_gain # |
float control profile |
0 to 20 | 5 |
✓ | ✓ | ✓ | I-gain for the pitch trim for self-leveling flight modes. Higher values means that AUTOTRIM will be faster but might introduce oscillations |
fw_level_pitch_trim # |
float control profile |
-10 to 10 | 0 |
✓ | ✓ | ✓ | Pitch trim for self-leveling flight modes. In degrees. +5 means airplane nose should be raised 5 deg from level |
fw_p_level # |
uint16 control profile |
0 to 255 | 20 |
✓ | ✓ | ✓ | Fixed-wing attitude stabilisation P-gain |
fw_p_pitch # |
uint16 control profile |
0 to 255 | 5 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation P-gain for PITCH |
fw_p_roll # |
uint16 control profile |
0 to 255 | 5 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation P-gain for ROLL |
fw_p_yaw # |
uint16 control profile |
0 to 255 | 6 |
✓ | ✓ | ✓ | Fixed-wing rate stabilisation P-gain for YAW |
fw_reference_airspeed # |
float control profile |
300 to 6000 | 1500 |
✓ | ✓ | ✓ | Reference airspeed. Set this to airspeed at which PIDs were tuned. Usually should be set to cruise airspeed. Also used for coordinated turn calculation if airspeed sensor is not present. |
fw_turn_assist_pitch_gain # |
float control profile |
0 to 2 | 1 |
✓ | ✓ | ✓ | Gain required to keep constant pitch angle during coordinated turns (in TURN_ASSIST mode). Value significantly different from 1.0 indicates a problem with the airspeed calibration (if present) or value of `fw_reference_airspeed` parameter |
fw_turn_assist_yaw_gain # |
float control profile |
0 to 2 | 1 |
✓ | ✓ | ✓ | Gain required to keep the yaw rate consistent with the turn rate for a coordinated turn (in TURN_ASSIST mode). Value significantly different from 1.0 indicates a problem with the airspeed calibration (if present) or value of `fw_reference_airspeed` parameter |
fw_yaw_iterm_freeze_bank_angle # |
uint16 control profile |
0 to 90 | 0 |
✓ | ✓ | ✓ | Yaw Iterm is frozen when bank angle is above this threshold [degrees]. This solves the problem of the rudder counteracting turns by partially disabling yaw stabilization when making banked turns. Setting to 0 (the default) disables this feature. Only applies when autopilot is not active and TURN ASSIST is disabled. |
heading_hold_rate_limit # |
uint8 control profile |
10 to 250 | 90 |
✓ | ✓ | ✓ | This setting limits yaw rotation rate that HEADING_HOLD controller can request from PID inner loop controller. It is independent from manual yaw rate and used only when HEADING_HOLD flight mode is enabled by pilot, RTH or WAYPOINT modes. |
iterm_windup # |
uint8 control profile |
0 to 90 | 50 |
✓ | ✓ | ✓ | Used to prevent Iterm accumulation on during maneuvers. Iterm will be dampened when motors are reaching it's limit (when requested motor correction range is above percentage specified by this parameter) |
max_angle_inclination_pit # |
int16 control profile |
100 to 900 | 450 |
✓ | ✓ | ✓ | Maximum inclination in level (angle) mode (PITCH axis). 100=10° |
max_angle_inclination_rll # |
int16 control profile |
100 to 900 | 450 |
✓ | ✓ | ✓ | Maximum inclination in level (angle) mode (ROLL axis). 100=10° |
mc_cd_lpf_hz # |
uint8 control profile |
0 to 200 | 30 |
✓ | ✓ | ✓ | Cutoff frequency for Control Derivative. This controls the cutoff for the LPF that is applied to the CD (Feed Forward) signal to the PID controller. Lower value will produce a smoother CD gain to the controller, but it will be more delayed. Higher values will produce CD gain that may have more noise in the signal depending on your RC link but wil be less delayed. |
mc_cd_pitch # |
uint16 control profile |
0 to 255 | 60 |
✓ | ✓ | ✓ | Multicopter Control Derivative gain for PITCH (known as 'Feed Forward' in Betaflight). The CD intoduces a term to the PID controller that is the magnitude of the Setpoint change. Fast inputs produce a high CD gain to help push the MC into a move; in advance of the P-gain if set high enough. |
mc_cd_roll # |
uint16 control profile |
0 to 255 | 60 |
✓ | ✓ | ✓ | Multicopter Control Derivative gain for ROLL (known as 'Feed Forward' in Betaflight). The CD intoduces a term to the PID controller that is the magnitude of the Setpoint change. Fast inputs produce a high CD gain to help push the MC into a move; in advance of the P-gain if set high enough. |
mc_cd_yaw # |
uint16 control profile |
0 to 255 | 60 |
✓ | ✓ | ✓ | Multicopter Control Derivative gain for YAW (known as 'Feed Forward' in Betaflight). The CD intoduces a term to the PID controller that is the magnitude of the Setpoint change. Fast inputs produce a high CD gain to help push the MC into a move; in advance of the P-gain if set high enough. |
mc_d_level # |
uint16 control profile |
0 to 255 | 75 |
✓ | ✓ | ✓ | Multicopter attitude stabilisation HORIZON transition point |
mc_d_pitch # |
uint16 control profile |
0 to 255 | 23 |
✓ | ✓ | ✓ | Multicopter rate stabilisation D-gain for PITCH |
mc_d_roll # |
uint16 control profile |
0 to 255 | 23 |
✓ | ✓ | ✓ | Multicopter rate stabilisation D-gain for ROLL |
mc_d_yaw # |
uint16 control profile |
0 to 255 | 0 |
✓ | ✓ | ✓ | Multicopter rate stabilisation D-gain for YAW |
mc_i_level # |
uint16 control profile |
0 to 255 | 15 |
✓ | ✓ | ✓ | Multicopter attitude stabilisation low-pass filter cutoff |
mc_i_pitch # |
uint16 control profile |
0 to 255 | 30 |
✓ | ✓ | ✓ | Multicopter rate stabilisation I-gain for PITCH |
mc_i_roll # |
uint16 control profile |
0 to 255 | 30 |
✓ | ✓ | ✓ | Multicopter rate stabilisation I-gain for ROLL |
mc_i_yaw # |
uint16 control profile |
0 to 255 | 45 |
✓ | ✓ | ✓ | Multicopter rate stabilisation I-gain for YAW |
mc_iterm_relax # |
uint8 control profile |
OFF, RP, RPY | RP |
✓ | ✓ | ✓ | Iterm relax type. When enabled, Iterm will be relaxed when stick is centered. This will help to reduce bounceback and followthrough on multirotors. It is recommended to enable this feature on all multirotors. |
mc_iterm_relax_cutoff # |
uint8 control profile |
1 to 100 | 15 |
✓ | ✓ | ✓ | Iterm relax cutoff frequency. |
mc_p_level # |
uint16 control profile |
0 to 255 | 20 |
✓ | ✓ | ✓ | Multicopter attitude stabilisation P-gain |
mc_p_pitch # |
uint16 control profile |
0 to 255 | 40 |
✓ | ✓ | ✓ | Multicopter rate stabilisation P-gain for PITCH |
mc_p_roll # |
uint16 control profile |
0 to 255 | 40 |
✓ | ✓ | ✓ | Multicopter rate stabilisation P-gain for ROLL |
mc_p_yaw # |
uint16 control profile |
0 to 255 | 85 |
✓ | ✓ | ✓ | Multicopter rate stabilisation P-gain for YAW |
pid_iterm_limit_percent # |
uint16 control profile |
0 to 200 | 33 |
✓ | ✓ | ✓ | Limits max/min I-term value in stabilization PID controller. It solves the problem of servo saturation before take-off/throwing the airplane into the air. Or multirotors with low authority. By default, error accumulated in I-term can not exceed 33% of total pid throw (around 165us on deafult pidsum_limit of pitch/roll). Set 0 to disable completely. |
pid_type # |
uint8 control profile |
NONE, PID, PIFF, AUTO | AUTO |
✓ | ✓ | ✓ | Allows to set type of PID controller used in control loop. Possible values: `NONE`, `PID`, `PIFF`, `AUTO`. Change only in case of experimental platforms like VTOL, tailsitters, rovers, boats, etc. Airplanes should always use `PIFF` and multirotors `PID` |
rate_accel_limit_roll_pitch # |
uint32 control profile |
0 to 500000 | 0 |
✓ | ✓ | ✓ | Limits acceleration of ROLL/PITCH rotation speed that can be requested by stick input. In degrees-per-second-squared. Small and powerful UAV flies great with high acceleration limit ( > 5000 dps^2 and even > 10000 dps^2). Big and heavy multirotors will benefit from low acceleration limit (~ 360 dps^2). When set correctly, it greatly improves stopping performance. Value of 0 disables limiting. |
rate_accel_limit_yaw # |
uint32 control profile |
0 to 500000 | 10000 |
✓ | ✓ | ✓ | Limits acceleration of YAW rotation speed that can be requested by stick input. In degrees-per-second-squared. Small and powerful UAV flies great with high acceleration limit ( > 10000 dps^2). Big and heavy multirotors will benefit from low acceleration limit (~ 180 dps^2). When set correctly, it greatly improves stopping performance and general stability during yaw turns. Value of 0 disables limiting. |
smith_predictor_delay # |
float control profile |
0 to 8 | 0needs USE_SMITH_PREDICTOR |
✓ | ✓ | ✓ | Expected delay of the gyro signal. In milliseconds |
smith_predictor_lpf_hz # |
uint16 control profile |
1 to 500 | 50needs USE_SMITH_PREDICTOR |
✓ | ✓ | ✓ | Cutoff frequency for the Smith Predictor Low Pass Filter |
smith_predictor_strength # |
float control profile |
0 to 1 | 0.5needs USE_SMITH_PREDICTOR |
✓ | ✓ | ✓ | The strength factor of a Smith Predictor of PID measurement. In percents |
yaw_lpf_hz # |
uint8 control profile |
0 to 200 | 0 |
✓ | ✓ | ✓ | Yaw P term low pass filter cutoff frequency. Should be disabled (set to `0`) on small multirotors (7 inches and below) |
✓ present, Δ changed in that release (hover for what changed), — not in that release.
“needs USE_…” is the build option the setting is compiled with: a target that does not define it has no such setting.Descriptions are INAV's own, from settings.yaml.
Other sections
- Gyro and D-term filters (28)
- Rates, expo and TPA (32)
- Navigation, RTH and waypoints (53)
- Multirotor navigation (31)
- Fixed-wing navigation and launch (63)
- Position estimator (23)
- GPS (11)
- Accelerometer, compass and other sensors (56)
- Receiver and RC input (21)
- Failsafe and arming (18)
- Motors, ESC and beeper (15)
- Mixer profiles (12)
- Servos, gimbal and head tracker (19)
- Battery, current sensor and power limits (35)
- OSD (114)
- Video transmitter (12)
- Telemetry (31)
- Blackbox, logging and stats (12)
- System (13)
What changed between releases: 8.0 → 9.0 · 9.0 → 9.1. Machine-readable: params.json (9.1.0), GPL-3.0 like the firmware it comes from.