INAV MSP Frame Changelog
MSP API Version 2.3​
MSP2_INAV_MC_BRAKING / MSP2_INAV_SET_MC_BRAKING​
New MSP frames used to setup mixer properties.
Frame IDs:
- MSP2_INAV_MC_BRAKING, Frame ID 0x200B
- MSP2_INAV_SET_MC_BRAKING, Frame ID 0x200C
| Length | Setting | Notes |
|---|---|---|
| 2 | nav_mc_braking_speed_threshold | |
| 2 | nav_mc_braking_disengage_speed | |
| 2 | nav_mc_braking_timeout | |
| 1 | nav_mc_braking_boost_factor | |
| 2 | nav_mc_braking_boost_timeout | |
| 2 | nav_mc_braking_boost_speed_threshold | |
| 2 | nav_mc_braking_boost_disengage_speed | |
| 1 | nav_mc_braking_bank_angle |
MSP API Version 2.2​
Since mixerMode is no longer used, legacy MSP frames will return always mixer mode 3 (QuadX) and attempt to set mixer mode via MSP will be ignored. This affects following MSP frames:
- MSP_IDENT
- MSP_MIXER
- MSP_BF_CONFIG
- MSP_SET_MIXER
- MSP_SET_BF_CONFIG
MSP2_INAV_MIXER / MSP2_INAV_SET_MIXER​
New MSP frames used to setup mixer properties.
Frame IDs:
- MSP2_INAV_MIXER, Frame ID 0x2010
- MSP2_INAV_SET_MIXER, Frame ID 0x2011
| Length | Setting | Notes |
|---|---|---|
| 1 | yaw_motor_direction | |
| 2 | yaw_jump_prevention_limit | |
| 1 | platform_type | |
| 1 | has_flaps |
INAV 1.9 MSP Version 2.1​
MSP2_COMMON_MOTOR_MIXER / MSP2_COMMON_SET_MOTOR_MIXER​
Frame IDs:
- MMSP2_COMMON_MOTOR_MIXER, Frame ID 0x1005
- MSP2_COMMON_SET_MOTOR_MIXER, Frame ID 0x1006
INAV 1.7.1 MSP API Version 1.26​
MSP_FW_CONFIG / MSP_SET_FW_CONFIG​
Get and set Fixed Wing options
Frame IDs:
- MSP_FW_CONFIG, Frame ID 23
- MSP_SET_FW_CONFIG, Frame ID 24
| Length | Setting | Notes |
|---|---|---|
| 2 | nav_fw_cruise_thr | |
| 2 | nav_fw_min_thr | |
| 2 | nav_fw_max_thr | |
| 1 | nav_fw_bank_angle | |
| 1 | nav_fw_climb_angle | |
| 1 | nav_fw_dive_angle | |
| 1 | nav_fw_pitch2thr | |
| 2 | nav_fw_loiter_radius |
MSP_RTH_AND_LAND_CONFIG / MSP_SET_RTH_AND_LAND_CONFIG​
Get and set Return-To-Home and Land options
Frame IDs:
- MSP_RTH_AND_LAND_CONFIG, Frame ID 21
- MSP_SET_RTH_AND_LAND_CONFIG, Frame ID 22
| Length | Setting | Notes |
|---|---|---|
| 2 | nav_min_rth_distance | |
| 1 | nav_rth_climb_first | boolean |
| 1 | nav_rth_climb_ignore_emerg | boolean |
| 1 | nav_rth_tail_first | boolean |
| 1 | nav_rth_allow_landing | boolean |
| 1 | nav_rth_alt_mode | dictionary |
| 2 | nav_rth_abort_threshold | |
| 2 | nav_rth_altitude | |
| 2 | nav_landing_speed | |
| 2 | nav_land_slowdown_minalt | |
| 2 | nav_land_slowdown_maxalt | |
| 2 | nav_emerg_landing_speed |
INAV 1.6 MSP API Version 1.24​
MSP_WP_MISSION_LOAD / MSP_WP_MISSION_SAVE​
Load/save waypoint mission to non-volatile storage
Frame IDs:
- MSP_WP_MISSION_LOAD, Frame ID 18
- MSP_WP_MISSION_SAVE, Frame ID 19
| Length | Notes |
|---|---|
| 1 | Mission ID (reserved) |
MSP_POSITION_ESTIMATION_CONFIG​
Frame IDs:
- MSP_POSITION_ESTIMATION_CONFIG, Frame ID 16
- MSP_SET_POSITION_ESTIMATION_CONFIG, Frame ID 17
| Length | Setting | Notes |
|---|---|---|
| 2 | inav_w_z_baro_p | float as value * 100 |
| 2 | inav_w_z_gps_p | float as value * 100 |
| 2 | inav_w_z_gps_v | float as value * 100 |
| 2 | inav_w_xy_gps_p | float as value * 100 |
| 2 | inav_w_xy_gps_v | float as value * 100 |
| 1 | inav_gps_min_sats | |
| 1 | inav_use_gps_velned | ON/OFF |
| 6 | reserved |
MSP_CALIBRATION_DATA​
Sensors calibration data
| Length | Setting | Notes |
|---|---|---|
| 2 | acczero_x | |
| 2 | acczero_y | |
| 2 | acczero_z | |
| 2 | accgain_x | |
| 2 | accgain_y | |
| 2 | accgain_z | |
| 2 | magzero_x | |
| 2 | magzero_y | |
| 2 | magzero_z | |
| 8 | reserved |
Frame IDs:
- MSP_CALIBRATION_DATA, Frame ID 14
- MSP_SET_CALIBRATION_DATA, Frame ID 15
MSP_NAV_POSHOLD​
Basic position hold settings. Mostly, but not only, for multirotor
Frame IDs:
- MSP_NAV_POSHOLD, Frame ID 12
- MSP_SET_NAV_POSHOLD, Frame ID 13
| Length | Setting | Notes |
|---|---|---|
| 1 | nav_user_control_mode | dictionary |
| 2 | nav_max_speed | |
| 2 | nav_max_climb_rate | |
| 2 | nav_manual_speed | |
| 2 | nav_manual_climb_rate | |
| 1 | nav_mc_bank_angle | |
| 1 | nav_use_midthr_for_althold | ON/OFF |
| 2 | nav_mc_hover_thr | |
| 8 | reserved |
INAV 1.5 MSP API Version 1.23​
For INAV 1.5 and later, the MSP_STATUS/sensor field reports sensor failure. This updates MSP_SENSOR (see http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol) in a backwards compatible manner to report additional sensors and sensor health. The sensor field is reported as:
| Bit | Usage |
|---|---|
| 0 | Set if ACC present |
| 1 | Set if BARO present |
| 2 | Set if MAG present |
| 3 | Set if GPS present |
| 4 | Set if SONAR present |
| 5 | Reserved for OPFLOW (not implemented) |
| 6 | Set if PITOT present |
| 15 | Set on sensor failure |
The sensor hardware failure indication is backwards compatible with versions prior to 1.5 (and other Multiwii / Cleanflight derivatives).
MSP_SENSOR_CONFIG​
Frame IDs:
- MSP_SENSOR_CONFIG, Frame ID 96
- MSP_SET_SENSOR_CONFIG, Frame ID 97
| length | setting | Notes |
|---|---|---|
| 1 | acc_hardware | |
| 1 | baro_hardware | |
| 1 | mag_hardware | |
| 1 | pitot_hardware | |
| 1 | Reserved for rangefinder | not yet implemented |
| 1 | Reserved for OpFlow | not yet implemented |
INAV 1.4 MSP API Version 1.22​
MSP_INAV_PID​
Frame IDs:
- MSP_INAV_PID, Frame ID 6
- MSP_SET_INAV_PID, Frame ID 7
| length | setting | Notes |
|---|---|---|
| 1 | async_mode | |
| 2 | acc_task_frequency | |
| 2 | attitude_task_frequency | |
| 1 | mag_hold_rate_limit | |
| 1 | MAG_HOLD_ERROR_LPF_FREQ | not implemented yet as configurable |
| 2 | yaw_jump_prevention_limit | |
| 1 | gyro_lpf | |
| 1 | acc_soft_lpf_hz | |
| 4 | reserved | reserved for further usage |
MSP_FILTER_CONFIG​
Compatible with Betaflight
Frame IDs:
- MSP_FILTER_CONFIG Frame ID 92
- MSP_SET_FILTER_CONFIG Frame ID 93
| length | setting | Notes |
|---|---|---|
| 1 | gyro_soft_lpf_hz | |
| 2 | dterm_lpf_hz | |
| 2 | yaw_lpf_hz | |
| 2 | gyro_soft_notch_hz_1 | Since INAV 1.6 |
| 2 | gyro_soft_notch_cutoff_1 | Since INAV 1.6 |
| 2 | dterm_soft_notch_hz | Since INAV 1.6 |
| 2 | dterm_soft_notch_cutoff | Since INAV 1.6 |
| 2 | gyro_soft_notch_hz_2 | Since INAV 1.6 |
| 2 | gyro_soft_notch_cutoff_2 | Since INAV 1.6 |
MSP_PID_ADVANCED​
Compatible with Betaflight
Frame IDs:
- MSP_PID_ADVANCED Frame ID 94
- MSP_SET_PID_ADVANCED Frame ID 95
| length | setting | Notes |
|---|---|---|
| 2 | rollPitchItermIgnoreRate | |
| 2 | yawItermIgnoreRate | |
| 2 | yaw_p_limit | |
| 1 | not used | Betaflight deltaMethod |
| 1 | not used | Betaflight vbatPidCompensation |
| 1 | not used | Betaflight setpointRelaxRatio |
| 1 | dterm_setpoint_weight | Since INAV 1.6 |
| 2 | pidsum_limit | Since INAV 1.6 |
| 1 | not used | Betaflight itermThrottleGain |
| 2 | rate_accel_limit_roll_pitch | divided by 10 |
| 2 | rate_accel_limit_yaw | divided by 10 |
INAV 1.3 MSP API 1.21​
case MSP_ADVANCED_CONFIG:​
Frame IDs:
- MSP_ADVANCED_CONFIG, Frame ID 90
- MSP_SET_ADVANCED_CONFIG, Frame ID 91
| length | setting | Notes |
|---|---|---|
| 1 | gyro_sync_denom | |
| 1 | not used | Betaflight masterConfig.pid_process_denom |
| 1 | not used | Betaflight masterConfig.motorConfig.useUnsyncedPwm |
| 1 | motor_pwm_protocol | dictionary |
| 2 | motor_pwm_rate | |
| 2 | servo_pwm_rate | |
| 1 | gyro_sync | boolean |
##Change log:
- 2016-11-20 - scaling of
rate_accel_limit_roll_pitchandrate_accel_limit_yawin MSP_PID_ADVANCED changed from 1000 to 10 - 2016-12-11 - added MSP_STATUS update for INAV 1.5
- 2017-01-15 - added dterm_setpoint_weight added to MSP_PID_ADVANCED frame
- 2017-01-15 - MSP_CALIBRATION_DATA
- 2017-01-18 -
pidsum_limitinMSP_PID_ADVANCED - 2017-01-23 - MSP_POSITION_ESTIMATOR