madflight v2.4.2 Configuration Parameters

Parameters are saved to EEPROM (i.e. flash). They can be modified with:

  • madflight_board string in board file: #define MF_BOARD "brd/board_name.h"
  • madflight_config string defined in main.cpp
  • CLI set Command
  • Mavlink via Mission Planner or QGroundControl

Parameter Loading Logic

  • Step 1: Load defaults as listed on this page
  • Step 2: Overwrite with eeprom (eeprom could have less parameters than defaults)
  • Step 3: Overwrite with madflight_board and then madflight_config (if not already applied to eeprom)

Modules

AHR - Attitude and Heading Reference System (AHRS)

Parameter Description Default Options
ahr_gizmo AHRS Algorithm
since v2.0.0
MAHONY MAHONY
MAHONY_BF
MADGWICK
VQF

BAR - Barometer Sensors

Parameter Description Default Options
bar_gizmo Barometer Sensor Type
since v2.0.0
NONE NONE
BMP280
BMP388
BMP390
MS5611
HP203B
BMP580
DPS310
bar_i2c_adr Barometer I2C Address (decimal number only, set to 0 for automatic)
since v2.0.0
0
bar_i2c_bus Barometer I2C Bus
since v2.0.0
-1
bar_rate Barometer sample rate in [Hz]
since v2.0.0
100

BAT - Battery Sensors (current, voltage, power, capacity)

Parameter Description Default Options
bat_cal_i Battery ADC current scale calibration, value is actual_current_in_a / adc_reading (For INA226 and INA228 this is the Rshunt value in ohm)
since v1.3.4
1
bat_cal_v Battery ADC voltage scale calibration, value is actual_voltage_in_v / adc_reading
since v1.3.4
1
bat_gizmo Power Sensor Type
since v2.0.0
NONE NONE
ADC
INA226
INA228
bat_i2c_adr Power Sensor I2C Address (decimal number only, set to 0 for automatic)
since v2.0.0
0
bat_i2c_bus Power Sensor I2C Bus
since v2.0.0
-1

BBX - Blackbox Logging

#define MF_BINLOG_I16_SCALED This define will use scaled 2 byte integers in the binlogs to create smaller logs, otherwise use 4 byte floats. Most visualisation software does not support scaled integers, and will show unscaled values.

Parameter Description Default Options
bbx_baud Black Box Logger Baud Rate (0=auto)
since v2.3.2
0
bbx_gizmo Black Box Logger Type
since v2.0.0
NONE NONE
SDSPI
SDMMC
OPENLOG
bbx_log_ahr Max log interval in [Hz] for AHR
since v2.3.0
100
bbx_log_imu Max log interval in [Hz] for IMU
since v2.3.0
100
bbx_log_out Max log interval in [Hz] for OUT
since v2.3.0
100
bbx_log_pid Max log interval in [Hz] for PID
since v2.4.2
100
bbx_log_rcl Max log interval in [Hz] for RCL
since v2.3.0
100
bbx_ser_bus Black Box Logger Serial Bus
since v2.3.2
-1
bbx_spi_bus Black Box SPI Bus
since v2.0.0
-1

GPS - Global Positioning System

Parameter Description Default Options
gps_baud Baud Rate (0=auto baud)
since v2.0.0
0
gps_gizmo GPS Sensor Type
since v2.0.0
NONE NONE
UBLOX
gps_ser_bus GPS Serial Bus
since v2.0.0
-1

IMU - Inertial Measurement Unit Sensors

Parameter Description Default Options
imu_acc_lp Accelerometer Low Pass Filter cutoff frequency in [Hz]
since v2.0.0
70
imu_align Gyro/Acc Sensor Alignment
since v2.0.0
CW0 CW0
CW90
CW180
CW270
CW0FLIP
CW90FLIP
CW180FLIP
CW270FLIP
imu_bus_type Gyro/Acc Bus Type
since v2.0.1
SPI SPI
I2C
imu_cal_ax Accel x zero offset calibration
since v1.3.4
0
imu_cal_ay Accel y zero offset calibration
since v1.3.4
0
imu_cal_az Accel z zero offset calibration
since v1.3.4
0
imu_cal_gx Gyro x zero offset calibration
since v1.3.4
0
imu_cal_gy Gyro y zero offset calibration
since v1.3.4
0
imu_cal_gz Gyro z zero offset calibration
since v1.3.4
0
imu_gizmo Gyro/Acc Sensor Type
since v2.0.0
NONE NONE
BMI270
MPU6000
MPU6050
MPU6500
MPU9150
MPU9250
ICM45686
ICM42688
ICM42688P
AUTO
LSM6DSV
LSM6DSO
LSM6DSV16B
imu_gyr_lp Gyro Low Pass Filter cutoff frequency in [Hz]
since v2.0.0
60
imu_i2c_adr Gyro/Acc Sensor I2C Address (decimal number only, set to 0 for automatic)
since v2.0.0
0
imu_i2c_bus Gyro/Acc Sensor I2C Bus
since v2.0.0
-1
imu_rate Gyro/Acc sample rate in [Hz]. NOTE: not all IMU drivers support all rates
since v2.0.0
1000
imu_spi_bus Gyro/Acc Sensor SPI Bus
since v2.0.0
-1

LED - Light Emmitting Diode

Parameter Description Default Options
led_gizmo LED Type
since v2.0.0
NONE NONE
HIGH_IS_ON
LOW_IS_ON
RGB

MAG - Magnetometer Sensors

Parameter Description Default Options
mag_align Magnetometer Alignment
since v2.1.1
CW0 CW0
CW90
CW180
CW270
CW0FLIP
CW90FLIP
CW180FLIP
CW270FLIP
mag_cal_sx Magnetometer x scale calibration
since v1.3.4
1
mag_cal_sy Magnetometer y scale calibration
since v1.3.4
1
mag_cal_sz Magnetometer z scale calibration
since v1.3.4
1
mag_cal_x Magnetometer x zero offset calibration
since v1.3.4
0
mag_cal_y Magnetometer y zero offset calibration
since v1.3.4
0
mag_cal_z Magnetometer z zero offset calibration
since v1.3.4
0
mag_gizmo Magnetometer Sensor Type
since v2.0.0
NONE NONE
QMC5883
QMC6309
RM3100
QMC5883L
QMC5883P
MMC5603
BMM150
mag_i2c_adr Magnetometer I2C Address (decimal number only, set to 0 for automatic)
since v2.0.0
0
mag_i2c_bus Magnetometer I2C Bus
since v2.0.0
-1
mag_lp Magnetometer Gyro Low Pass Filter cutoff frequency in [Hz]. Set to 1e10Hz for no filtering
since v2.0.0
1e10

OFL - Optical Flow Sensors

Parameter Description Default Options
ofl_align Optical Flow XY-Axis Orientation. Example: ES means positive x-axis points East (right) and positive y-axis points South (back)
since v2.1.3
NE NE
NW
ES
EN
SW
SE
WN
WS
ofl_baud Optical Flow Baud Rate. 0=auto
since v2.1.3
0
ofl_cal_rad Optical Flow Manual Calibration Factor in [Radians/Pixels], leave at 0 to use gizmo defined calibration
since v2.1.4
0
ofl_gizmo Optical Flow Sensor Type
since v2.1.3
NONE NONE
PMW3901
PMW3901U
ofl_ser_bus Optical Flow Serial Bus
since v2.1.3
-1
ofl_spi_bus Optical Flow SPI Bus
since v2.1.3
-1

PID - Proportional Integral Derivative Controller

This is the brain of the flight controller.

!!! Parameter changes can lead unpleasant surprises, you have been warned !!!

Selecting a different controller

Use following procedure to change the selected pid_gizmo controller, to ensure the defaults of the new controller are applied.

defaults pid              # this resets the pid values
set pid_gizmo NEW_GIZMO   # select the new PID controller
save                      # save parameters to EEPROM and reboot

...                       # wait for reboot

dump pid                  # check that you now have default values for NEW_GIZMO PID controller
set pid_xxx value         # change parameters as desired

Note: If a pid_xxx parameter is -1 then the default value for the selected pid_gizmo is used.

pid_gizmo BASIC

This controller is a very basic PID rate controller. When in Angle Mode the angle error is converted to a desired rate which the controller tries to keep.

Betaflight friends will notice that the default MF parameters are identical to the BF defaults. Yes, this is by design, so your BF PID setup should work with this controller. But this controller lacks all the fancy stuff BF offers.

Supported FlightModes: RATE, ANGLE

BASIC Controller Parameters and Default Values

== General ==
pid_i_limit       10  Integrator saturation level in % of output
pid_angl_mult      5  Multiplicator to convert Angle Error to Rate Error

== Roll ==
pid_kp0            45  Roll Kp - same as BF default
pid_ki0            80  Roll Ki - same as BF default
pid_kd0            30  Roll Kd - same as BF default
pid_rol_rate_lim  300  Roll rate limit in deg/sec for rate mode - BF default is 600
pid_rol_angl_lim   30  Roll angle limit in deg for angle mode - DO NOT INCREASE OVER 70 OR YOU WILL CRASH DUE TO GIMBAL-LOCKS

== Pitch == (default -1 means use Roll value) 
pid_kp1            -1  Pitch Kp - BF default is 47
pid_ki1            -1  Pitch Ki - BF default is 84
pid_kd1            -1  Pitch Kd - BF default is 34
pid_pit_rate_lim   -1  Pitch rate limit in deg/sec for rate mode - BF default is 600
pid_pit_angl_lim   -1  Pitch angle limit in deg for angle mode - DO NOT INCREASE OVER 70 OR YOU WILL CRASH DUE TO GIMBAL-LOCKS

== Yaw ==
pid_kp2            45  Yaw Kp - same as BF default
pid_ki2            80  Yaw Ki - same as BF default
pid_kd2             0  Yaw Kd - same as BF default
pid_yaw_rate_lim  160  Yaw rate limit in deg/sec for rate+angle modes 

== D-Term Filter ==
pid_filt0_type    PT1  D-Term filter type
pid_filt0_freq     30  D-Term filter cutoff frequency [Hz]

pid_gizmo EXPERIMENTAL

As the name implies, this is a work in progress experimental PID controller for madflight.

Limited flight testing has been done, so be prepared for surprises and hands-on trial-and-error work to improve this controller.

Supported FlightModes: RATE, ANGLE, COPTER_ALTHOLD

This controller is an extended version of the BASIC controller:

  • ANGLE: Added no drift yaw control when mag is present
  • COPTER_ALTHOLD: Copter Altitutde Hold Mode (start this mode from hover in ANGLE mode, not on ground)

See file pid/GizmoPidEXPERIMENTAL.cpp for the config parameters of this controller.

Parameter Description Default Options
pid_angl_mult Angle to rate multiplier
since v2.4.0
-1
pid_filt0_freq Filter Frequency (or filter parameter 1 for non-frequency filters)
since v2.4.0
-1
pid_filt0_q Filter Q (or filter parameter 2 for non-Q filters)
since v2.4.0
-1
pid_filt0_type Filter Type
since v2.4.0
NONE
pid_filt1_freq
since v2.4.0
-1
pid_filt1_q
since v2.4.0
-1
pid_filt1_type
since v2.4.0
NONE
pid_filt2_freq
since v2.4.0
-1
pid_filt2_q
since v2.4.0
-1
pid_filt2_type
since v2.4.0
NONE
pid_filt3_freq
since v2.4.0
-1
pid_filt3_q
since v2.4.0
-1
pid_filt3_type
since v2.4.0
NONE
pid_gizmo PID controller. IMPORTANT: Read module instructions before changing this parameter!!!
since v2.4.0
BASIC BASIC
EXPERIMENTAL
pid_i_limit I-Term limit. Usually in percent of output, check pid_gizmo documentation
since v2.4.0
-1
pid_ka0 Additional-A PID Term
since v2.4.0
-1
pid_ka1
since v2.4.0
-1
pid_ka2
since v2.4.0
-1
pid_ka3
since v2.4.0
-1
pid_kb0 Additional-B PID Term
since v2.4.0
-1
pid_kb1
since v2.4.0
-1
pid_kb2
since v2.4.0
-1
pid_kb3
since v2.4.0
-1
pid_kd0 Derivative/Damping PID Term
since v2.4.0
-1
pid_kd1
since v2.4.0
-1
pid_kd2
since v2.4.0
-1
pid_kd3
since v2.4.0
-1
pid_ki0 Integral PID Term
since v2.4.0
-1
pid_ki1
since v2.4.0
-1
pid_ki2
since v2.4.0
-1
pid_ki3
since v2.4.0
-1
pid_kp0 Proportional PID Term
since v2.4.0
-1
pid_kp1
since v2.4.0
-1
pid_kp2
since v2.4.0
-1
pid_kp3
since v2.4.0
-1
pid_pit_angl_lim Pitch angle limit in angle flightmode [deg]
since v2.4.0
-1
pid_pit_rate_lim Pitch rate limit [deg/s]
since v2.4.0
-1
pid_rol_angl_lim Roll angle limit in angle flightmode [deg]
since v2.4.0
-1
pid_rol_rate_lim Roll rate limit [deg/s]
since v2.4.0
-1
pid_yaw_rate_lim Yaw rate limit [deg/s]
since v2.4.0
-1

PIN - GPIO Pin Mapping

Parameter Description Default Options
pin_bat_i Battery ADC Current Sense Pin
since v2.0.0
-1
pin_bat_v Battery ADC Voltage Sense Pin
since v2.0.0
-1
pin_bbx_cs SDCard SPI CS Pin
since v2.0.0
-1
pin_i2c0_scl I2C0 SCL Pin
since v2.0.0
-1
pin_i2c0_sda I2C0 SDA Pin
since v2.0.0
-1
pin_i2c1_scl I2C1 SCL Pin
since v2.0.0
-1
pin_i2c1_sda I2C1 SDA Pin
since v2.0.0
-1
pin_i2c2_scl I2C2 SCL Pin
since v2.0.0
-1
pin_i2c2_sda I2C2 SDA Pin
since v2.0.0
-1
pin_i2c3_scl I2C3 SCL Pin
since v2.0.0
-1
pin_i2c3_sda I2C3 SDA Pin
since v2.0.0
-1
pin_imu_clkin Gyro/Acc CLKIN Pin. Only for ICM-42866-P. Only tested for RP2XXX targets.
since v2.2.0
-1
pin_imu_cs IMU SPI Chip Select Pin
since v2.0.0
-1
pin_imu_int IMU Interrupt Pin
since v2.0.0
-1
pin_led LED Pin
since v2.0.0
-1
pin_mmc_clk SDCard MMC CLK Pin
since v2.0.0
-1
pin_mmc_cmd SDCard MMC CMD Pin
since v2.0.0
-1
pin_mmc_dat SDCard MMC DAT Pin
since v2.0.0
-1
pin_ofl_cs Optical Flow SPI CS Pin
since v2.1.3
-1
pin_out0 Output0 Pin
since v2.0.0
-1
pin_out1 Output1 Pin
since v2.0.0
-1
pin_out10 Output10 Pin
since v2.0.0
-1
pin_out11 Output11 Pin
since v2.0.0
-1
pin_out12 Output12 Pin
since v2.0.0
-1
pin_out13 Output13 Pin
since v2.0.0
-1
pin_out14 Output14 Pin
since v2.0.0
-1
pin_out15 Output15 Pin
since v2.0.0
-1
pin_out2 Output2 Pin
since v2.0.0
-1
pin_out3 Output3 Pin
since v2.0.0
-1
pin_out4 Output4 Pin
since v2.0.0
-1
pin_out5 Output5 Pin
since v2.0.0
-1
pin_out6 Output6 Pin
since v2.0.0
-1
pin_out7 Output7 Pin
since v2.0.0
-1
pin_out8 Output8 Pin
since v2.0.0
-1
pin_out9 Output9 Pin
since v2.0.0
-1
pin_rcl_ppm Radio Receiver PPM Pin (need to set rcl_gizmo=PPM)
since v2.0.0
-1
pin_rdr_echo Radar/Sonar Echo Pin
since v2.0.1
-1
pin_rdr_trig Radar/Sonar Trigger Pin
since v2.0.1
-1
pin_ser0_inv Serial0 Inverter Pin
since v2.0.0
-1
pin_ser0_rx Serial0 RX Pin
since v2.0.0
-1
pin_ser0_tx Serial0 TX Pin
since v2.0.0
-1
pin_ser1_inv Serial1 Inverter Pin
since v2.0.0
-1
pin_ser1_rx Serial1 RX Pin
since v2.0.0
-1
pin_ser1_tx Serial1 TX Pin
since v2.0.0
-1
pin_ser2_inv Serial2 Inverter Pin
since v2.0.0
-1
pin_ser2_rx Serial2 RX Pin
since v2.0.0
-1
pin_ser2_tx Serial2 TX Pin
since v2.0.0
-1
pin_ser3_inv Serial3 Inverter Pin
since v2.0.0
-1
pin_ser3_rx Serial3 RX Pin
since v2.0.0
-1
pin_ser3_tx Serial3 TX Pin
since v2.0.0
-1
pin_ser4_inv Serial4 Inverter Pin
since v2.0.0
-1
pin_ser4_rx Serial4 RX Pin
since v2.0.0
-1
pin_ser4_tx Serial4 TX Pin
since v2.0.0
-1
pin_ser5_inv Serial5 Inverter Pin
since v2.0.0
-1
pin_ser5_rx Serial5 RX Pin
since v2.0.0
-1
pin_ser5_tx Serial5 TX Pin
since v2.0.0
-1
pin_ser6_inv Serial6 Inverter Pin
since v2.0.0
-1
pin_ser6_rx Serial6 RX Pin
since v2.0.0
-1
pin_ser6_tx Serial6 TX Pin
since v2.0.0
-1
pin_ser7_inv Serial7 Inverter Pin
since v2.0.0
-1
pin_ser7_rx Serial7 RX Pin
since v2.0.0
-1
pin_ser7_tx Serial7 TX Pin
since v2.0.0
-1
pin_spi0_miso SPI0 MISO Pin
since v2.0.0
-1
pin_spi0_mosi SPI0 MOSI Pin
since v2.0.0
-1
pin_spi0_sclk SPI0 SCLK Pin
since v2.0.0
-1
pin_spi1_miso SPI1 MISO Pin
since v2.0.0
-1
pin_spi1_mosi SPI1 MOSI Pin
since v2.0.0
-1
pin_spi1_sclk SPI1 SCLK Pin
since v2.0.0
-1
pin_spi2_miso SPI2 MISO Pin
since v2.0.0
-1
pin_spi2_mosi SPI2 MOSI Pin
since v2.0.0
-1
pin_spi2_sclk SPI2 SCLK Pin
since v2.0.0
-1
pin_spi3_miso SPI3 MISO Pin
since v2.0.0
-1
pin_spi3_mosi SPI3 MOSI Pin
since v2.0.0
-1
pin_spi3_sclk SPI3 SCLK Pin
since v2.0.0
-1
Parameter Description Default Options
rcl_arm_ch Arm Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
5
rcl_arm_max Maximum PWM for ARMED
since v1.3.4
2500
rcl_arm_min Minimum PWM for ARMED
since v1.3.4
1600
rcl_baud Radio Receiver Baud Rate. Set to 0 for automatic.
since v2.0.0
0
rcl_deadband Radio Receiver Stick Deadband
since v2.0.0
0
rcl_flt0 Flight Mode 0
since v2.4.0
CUSTOM0
rcl_flt1 Flight Mode 1
since v2.4.0
CUSTOM0
rcl_flt2 Flight Mode 2
since v2.4.0
CUSTOM0
rcl_flt3 Flight Mode 3
since v2.4.0
CUSTOM0
rcl_flt4 Flight Mode 4
since v2.4.0
CUSTOM0
rcl_flt5 Flight Mode 5
since v2.4.0
CUSTOM0
rcl_flt_ch Flight Mode Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
6
rcl_flt_max Flight Mode 6-pos Switch Highest PWM (flight mode 5)
since v1.3.4
1815
rcl_flt_min Flight Mode 6-pos Switch Lowest PWM (flight mode 0)
since v1.3.4
1165
rcl_gizmo Radio Receiver Type
since v2.0.0
NONE NONE
MAVLINK
CRSF
SBUS
SBUS_NOT_INV
DSM
PPM
IBUS
rcl_num_ch Radio Receiver Nunber of Channels. Max 20
since v2.0.0
8
rcl_pit_ch Pitch Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
2
rcl_pit_expo Pitch Stick Expo: 0.0 (smooth transition from center sensitity to max sensitity) to 1.0 (center sensitivity until approx 50% deflection)
since v2.3.3
0.0
rcl_pit_mid Pitch Stick Centered PWM in [us] 500-2500
since v1.3.4
1500
rcl_pit_pull Pitch Stick Pulled PWM in [us] 500-2500
since v1.3.4
1100
rcl_pit_push Pitch Stick Pushed PWM in [us] 500-2500
since v1.3.4
1900
rcl_pit_sens Pitch Stick Center Sensitivity: 0.0 (very curvy) to 1.0 (straight line)
since v2.3.3
0.1
rcl_rol_ch Roll Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
1
rcl_rol_expo Roll Stick Expo: 0.0 (smooth transition from center sensitity to max sensitity) to 1.0 (center sensitivity until approx 50% deflection)
since v2.3.3
0.0
rcl_rol_left Roll Stick Left PWM in [us] 500-2500
since v1.3.4
1100
rcl_rol_mid Roll Stick Center PWM in [us] 500-2500
since v1.3.4
1500
rcl_rol_right Roll Stick Right PWM in [us] 500-2500
since v1.3.4
1900
rcl_rol_sens Roll Stick Center Sensitivity: 0.0 (very curvy) to 1.0 (straight line)
since v2.3.3
0.1
rcl_ser_bus Radio Receiver Serial Bus
since v2.0.0
-1
rcl_thr_ch Throttle Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
3
rcl_thr_mid Throttle Stick Centered PWM in [us] 500-2500
since v1.3.4
1500
rcl_thr_pull Throttle Stick Pulled PWM in [us] 500-2500
since v1.3.4
1100
rcl_thr_push Throttle Stick Pushed PWM in [us] 500-2500
since v1.3.4
1900
rcl_vsp_expo Vertical Speed Stick Expo: 0.0 (smooth transition from center sensitity to max sensitity) to 1.0 (center sensitivity until approx 50% deflection)
since v2.3.3
0.0
rcl_vsp_sens Vertical Speed Stick Center Sensitivity: 0.0 (very curvy) to 1.0 (straight line)
since v2.3.3
0.1
rcl_yaw_ch Yaw Channel (1-based) - default is AETR,arm,flightmode
since v1.3.4
4
rcl_yaw_expo Yaw Stick Expo: 0.0 (smooth transition from center sensitity to max sensitity) to 1.0 (center sensitivity until approx 50% deflection)
since v2.3.3
0.0
rcl_yaw_left Yaw Stick Left PWM in [us] 500-2500
since v1.3.4
1100
rcl_yaw_mid Yaw Stick Center PWM in [us] 500-2500
since v1.3.4
1500
rcl_yaw_right Yaw Stick Right PWM in [us] 500-2500
since v1.3.4
1900
rcl_yaw_sens Yaw Stick Center Sensitivity: 0.0 (very curvy) to 1.0 (straight line)
since v2.3.3
0.1

RDR - Radar, Lidar, and Ultrasonic Distance Sensors

Parameter Description Default Options
rdr_baud Radar/Sonar Baud Rate. Set to 0 for automatic.
since v2.0.0
0
rdr_gizmo Radar/Sonar Sensor Type
since v2.0.0
NONE NONE
LD2411S
LD2413
USD1
SR04
DTS6012M
VL53L3CX
rdr_i2c_adr Optical Flow I2C Address (decimal number only, set to 0 for automatic)
since v2.1.3
0
rdr_i2c_bus Optical Flow I2C Bus
since v2.1.3
-1
rdr_ser_bus Radar/Sonar Serial Bus
since v2.0.0
-1