Skip to content

2.0.0 Release Notes

Pawel Spychalski (DzikuVx) edited this page Sep 21, 2022 · 76 revisions
Clone this wiki locally

Hello and welcome to INAV 2.0.0 Release!

Please carefully read all of this document for the best possibile experience and safety.

Get in touch with other pilots, share experiences, suggestions and ask for help on:

INAV Official on Telegram
INAV Official on Facebook
INAV Official on Slack

Sponsors and supporters

Ongoing development would be impossible without ongoing cooperation with manufacturers and support from the following businesses:

Important Notes

  • DO NOT RESTORE ACCELEROMETER CALIBRATION VALUES FROM AN OLDER RELEASE (<2.0) Doing that will led to poor attitude estimation performance and may cause troubles.

  • When upgrading a full chip erase (when flashing) / defaults from CLI is advised. Be sure to backup your configuration and restore it wisely.

  • OSD layout configuration from releases < 2.0 is not compatible with the current one. Take a screenshot of your current OSD layout before upgrading and restore it manually from the configurator.

  • current_meter_offset setting changed scale. Need to be multiplied by 10 if it's value is coming from < INAV 2.0.0

  • Position Hold 2D (only keeping horizontal position with GPS aid) has been dropped. Now Position Hold is only 3D and it will hold position and altitude.

  • STM32F1 boards support has been dropped. NAZE/CC3D targets are no longer supported. Please upgrade to F4/F7 board. F3 boards are not recommended since their flash space is almost full and they are likely to not receive all features on the next release.

  • AIRMODE now excludes feature MOTOR_STOP in multicopters This means that if you have AIRMODE enabled on a multi-rotor, the motors will most likely spin on arming, even with feature MOTOR_STOP (or the configurator "Don't spin the motors when armed") set.

Upgrading from 1.9.X

  1. Be sure to run the latest INAV 2.0 Configuration release. Download from here
  2. Go to the CLI tab and copy and paste the diff output to a text file for later usage.
  3. Go to the OSD tab and take a screenshot of the current layout
  4. Flash INAV 2.0 enabling full chip erase . Now you FC should run INAV 2.0. Connect again and check firmware version.
  5. Go to the Mixer tab and load and apply your desidered mixer.
  6. Go back to your configuration text file and delete all lines starting with: mixer acczero accgain magzero osd. Adjust values to be adjusted noted in the release notes.
  7. Open the CLI tab in the configurator and paste your cleaned up configuration in the text box and type save and press enter. The flight controller will now reboot.
  8. Calibrate the accelerometer following the steps in the dedicated tab. Only first two steps needs to be made in the right order.
  9. Calibration of the magnetometer should be done at the field. The magnetic field indoors can be distorted and led to a bad calibration.
  10. Restore manually your OSD layout using the screenshot and upload the font you like using the dedicated button.
  11. Carefully check all the configuration and check on the bench without installed propellers if everything looks good. In particular check if the model preview behave correctly when you are moving your model and check surfaces movements for an airplane.
  12. Enjoy INAV 2.0.0 and explore its new features!

Walk through if TL;DR

Known bugs

  • RadioLink R9DS (an possibly all RadioLink receivers) SBUS output cannot be used . They are not complying with standards and this results in them sending invalid SBUS packets to the FC (#3563)
  • If INAV Configurator starts minimized, you have to manually remove content of C:\Users%Your_UserNname%\AppData\Local\inav-configurator
  • When running async (GYRO or ALL), gyro update will stick to PID loop frequency even if the configurator reports an higher frequency. You can check this via tasks command in CLI. It's strongly recommended not to run async and synchronize looptime to gyroscope. (#3628)

New mixer and mixer GUI

Starting from INAV 2.0.0, there are no predefined mixers on the firmware side: CLI command mixer QUADX will just not work. Mixer has to be configured using INAV Configurator 2.0 with Mixer tab.

Restoring from previous releases via CLI will not work correctly. Please use Configurator 2.0 mixer tab to configure it from scratch.


It is no longer necessary to use smix reverse to reverse a tricopter tail servo; this can be done in the 2.0 Configurator or with the CLI smix 0 5 2 -100 0.

Added NAV CRUISE flight mode (fixed wing)

This release introduces the new NAV CRUISE flight mode. When enabled the machine will try to maintain the current heading and compensate for any external disturbances (2D CRUISE). User can adjust the flight direction directly with ROLL stick or with the YAW stick ( nav_fw_cruise_yaw_rate set the yawing rate at full stick deflection ). The latter will offer a smoother way to adjust the flight direction. If the mode is enabled in conjunction with NAV ALTHOLD also the current altitude will be maintained (3D CRUISE). Altitude can be adjusted, as usual, via the pitch stick. In both modes ANGLE mode is active and the plane will stay leveled.

OSD improvements

OSD functionally got overhauled and improved. Now it is possible to have three OSD layouts and switch between them via an RC channel. Furthermore new two modes have been added: map and radar.

  • map mode draws the home centered, while the craft moves around. There are two available maps: one with the North pointing up and another one with the takeoff direction pointing up.
  • radar mode draws the craft in the center and the home moving around.

Those modes will enable the display of other aircraft flying in the vicinity in a future releases.

It is now possible to display a lot of new data on the OSD:

  • All the values adjustable in flight via RC. When a value is selected for adjustment it starts blinking. This means it is possible to select a lot of adjustments with a pot for example and know easily which one is being adjusted.
  • Wind estimation
  • Numeric attitude angles
  • Cruise mode heading info
  • Numeric heading to home
  • New battery related data: estimated remaining time and distance before having to head home, sag compensated battery voltage, estimated battery impedance
  • Outputs of the PID controllers

Added full VTX control via Smart Audio / TRAMP

User can now select VTX settings from the configurator or via the OSD CMS. Furthermore vtx_low_power_disarm setting has been added. Setting it to ON will set the power to its minimum value on startup (usually 25mW) and increase it to vtx_power when arming and change it back to its lowest setting after disarming. Note that this setting can jeopardize the ability to find a lost quad using a strong signal coming from the VTX but on the other way it can prevent the VTX to overheat if you do quick flight cycles on the same battery. UNTIL_FIRST_ARM will set the VTX to its minimum power, but once the craft is armed it will increase the output power to vtx_power and it will never decrease until the craft is power cycled. OFF will make the power output always to be set to the vtx_power setting.

Wind Estimation for Fixed Wing

It is possible to show estimated wind speed and direction on the OSD. In particular both lateral and vertical indicators are present. This is an experimental feature, you are encouraged to use it and report any anomalies in the estimated wind speed.

These features have been added for helping with the battery management:

  • Battery profile with optional automatic switching
  • Sag compensated battery voltage and battery impedance calculation
  • Estimation of the remaining flight time and distance before having to head home
  • Automatic compensation of throttle command based on battery voltage to help maintain constant thrust regardless of the battery voltage
  • The current sensor can be calibrated more accurately (increased offset voltage resolution: 0.1mV instead of 1mV). If you'd like to keep your current_meter_offset value from an old config you need to multiply it by 10).

You can read more about these feature in the battery documentation

CLI parameter renaming / new parameters

Name Description
nav_fw_cruise_yaw_rate Max YAW rate when NAV CRUISE mode is enabled (0=disable control via yaw stick) [dps]
gyro_stage2_lowpass_hz Software based second stage lowpass filter for gyro. Value is cutoff frequency (Hz). Currently experimental
name The craft name is now a set value. name MYCRAFT is replaced by set name = MYCRAFT.
switch_disarm_delay Defines a delay for switch disarming setting (default 150ms, PR #3118) For better safety, a value of at least 250ms is recommended
inav_reset_home Defines when the home position is automatically reset, default is EACH_ARM. Allowed values: NEVER, FIRST_ARM, EACH_ARM
model_preview_type Defines the aircraft type. This is advisory for display purposes only (Configurator, Ground Control Stations) and has no affect on aircraft behaviour. This setting takes the numeric values equivalent to the old 'mixer'.
platform_type Defines the aircraft (vehicle) type. This value affects the vehicle performance. Default is MULTIROTOR, allowed values: MULTIROTOR, AIRPLANE, HELICOPTER, TRICOPTER, ROVER, BOAT. Only MULTIROTOR, AIRPLANE and TRICOPTER are implemented in INAV 2.0.
has_flaps Defines is UAV is capable of having flaps. If ON and AIRPLANE platform_type is used, FLAPERON flight mode will be available for the pilot
vtx_band Configure the VTX band. Set to zero to use vtx_freq. Bands: 1: A, 2: B, 3: E, 4: F, 5: Race.
vtx_channel Channel to use within the configured vtx_band. Valid values are [1, 8].
vtx_freq Set the VTX frequency using raw MHz. This parameter is ignored unless vtx_band is 0.
vtx_halfduplex Use half duplex UART to communicate with the VTX, using only a TX pin in the FC.
vtx_low_power_disarm When the craft is disarmed, set the VTX to its lowest power. ON will set the power to its minimum value on startup, increase it to vtx_power when arming and change it back to its lowest setting after disarming. UNTIL_FIRST_ARM will start with minimum power, but once the craft is armed it will increase to vtx_power and it will never decrease until the craft is power cycled.
vtx_pit_mode_freq Frequency to use (in MHz) when the VTX is in pit mode.
vtx_power VTX RF power level to use. The exact number of mw depends on the VTX hardware.
nav_rth_home_altitude Aircraft will climb/descend to this altitude after reaching home if landing is not enabled. Set to 0 to stay at nav_rth_altitude (default) [cm]
nav_fw_cruise_speed Speed for the plane/wing at cruise throttle used for remaining flight time/distance estimation in cm/s
cruise_power Power draw at cruise throttle used for remaining flight time/distance estimation in 0.01W unit
idle_power Power draw at zero throttle used for remaining flight time/distance estimation in 0.01W unit
rth_energy_margin Energy margin wanted after getting home (percent of battery energy capacity). Use for the remaining flight time/distance calculation
osd_estimations_wind_compensation Use wind estimation for remaining flight time/distance estimation
nav_fw_allow_manual_thr_increase Enable the possibility to manually increase the throttle in auto throttle controlled modes for fixed wing
bat_voltage_src Chose between raw and sag compensated battery voltage to use for battery alarms and telemetry. Possible values are RAW and SAG_COMP
bat_cells Number of cells of the battery (0 = autodetect), see battery documentation
vbat_cell_detect_voltage Maximum voltage per cell, used for auto-detecting the number of cells of the battery in 0.01V units, default is 4.30V
align_opflow Optical flow module alignment (default CW0_DEG_FLIP)
fw_min_throttle_down_pitch Automatic pitch down angle when throttle is at 0 in angle mode. Progressively applied between cruise throttle and zero throttle
tz_automatic_dst Automatically add Daylight Saving Time to the GPS time when needed or simply ignore it. Includes presets for EU and the USA - if you live outside these areas it is suggested to manage DST manually via tz_offset.
motor_accel_time Minimum time for the motor(s) to accelerate from 0 to 100% throttle (ms) [0-1000]
motor_decel_time Minimum time for the motor(s) to deccelerate from 100 to 0% throttle (ms) [0-1000]
thr_comp_weight Weight used for the throttle compensation based on battery voltage.
nav_overrides_motor_stop Setting to OFF combined with MOTOR_STOP feature will allow user to stop motor when in autonomous modes. On most planes this setting is likely to cause a stall. Use caution

New boards

  • Added support for MATEKF411 mini and MATEKF411-WING (@fiam, #3146)
  • Added support for DALRCF405 (@nyway, #3184)
  • Add CLRACINGF4AIRV3 to CLRACINGF4AIR target (@bnn1044, #3239)

New features


Removed features:

  • Feature CHANNEL_FORWARDING has been removed, it can be implemented using new mixer GUI in Configurator
  • Feature SERVO_GIMBAL has been removed, it can be implemented using new mixer GUI in Configurator
  • The mid_rc CLI variable has been removed, and the setting removed from the configurator. If necessary (e.g.Futaba TX), the same effect can be achieved using rxrange settings.


  • Avoid to delete navigation modes if MAG is not available (@shellixyz, #2984)
  • Prevent out of time ARMED message in the OSD when arming with the OSD disabled (@shellixyz, #3098)
  • Allow using CMS while OSD is disabled (@shellixyz, #3099)
  • Fix current sensor overflow (@shellixyz, #3131)
  • Remove YAW inversion in 3D mode for vehicles that don't need it (@eephyne, #3128)
  • Fix vertical alignment of ARMED screen in OSD when using NTSC (@fiam, #3149)
  • Make the total trip distance OSD item work when no current sensor is present (@shellixyz, #3163)
  • Add missing OSD alarm settings from CLI (@shellixyz, #3182)
  • Fix "sensor lost" problems when using FPort telemetry (@fiam, #3206)
  • MATEKF405: As requested in #3223 S5 is no longer used for FW servos (@DzikuVx, #3224)
  • Fix outputs 5 and 6 in SPRACINGF3 (@shellixyz, #3236)
  • Correct home yaw when a valid heading is acquired (@fiam, #3247)
  • Fix logging of negative altitudes in BlackBox logs (@stronnag, #3250)
  • Properly round servo values after applying servo filtering (@fiam, #3276)
  • Fix and simplify applyFixedWingPitchRollThrottleController() (@shellixyz, #3297)
  • change year base for RTC time_t to correct leap processing (@stronnag, #3307)
  • Make FPort stop one sensor cycle every 3 (@fiam, #3308)
  • Fix RTH hover above home (can't keep altitude) (@shellixyz, #3332)
  • Fix FF_PIKOF4 and FF_PIKOF4OSD targets (@shellixyz, #3333)
  • remove unneeded rxConfig from sbusChannelsInit and fix up callers (@stronnag, #3338)
  • Fix potential overflow in energy metering (@shellixyz, #3342)
  • Reset disarm reason at moment of arming (@digitalentity, #3360)
  • Fix support for AK8975 MAG (@fiam, #3413)
  • Gyro SPI bus fix according to OmnibusF4-nano v8 schematics (@digitalentity, #3426)
  • Fix VTX device type reported via MSP (@fiam, #3429)
  • Add missing break when adjusting ADJUSTMENT_RC_YAW_EXPO (@fiam, #3430)
  • Work around compiler bug, fix MSP2_INAV_ANALOG and convert amperage from int32_t to int16_t (@shellixyz, #3469)
  • Prevent time comparison overflow in S.Port driver (@fiam, #3536)
  • Fix automatic DST support (@fiam, #3542)
  • PWM driver - startup value fix (fixes servo twitching at startup) (@marbalon, [#3540])
  • Fix FrSky HDOP range (@teckel12, #3519)
  • Fix division by 0 in generateThrottleCurve() (@shellixyz, #3502)
  • Fix current BB logging and improve battery code (@shellixyz, #3490)
  • Add definition for MAX_SPI_SPEED to limit spi seed if defined for target (@marbalon, #3532)
  • Fix incorrect axis convention (incompliance with datasheet) for IST8310 compass (@digitalentity, #3546)
  • Fix a rare edge case where RC receiver failsafe channel values may leak into AUX mode switching and cause a disarm (@digitalentity, [#3482])
  • Add workaround for AKK VTX with S.Audio bug (@fiam, [#3633])
  • Fix orientation of the drivers for AK8963, AK8975 and MPU9250 MAG (@fiam, [#3447])
  • Fix PCA9685 support (@DzikuVx, [#3744])

Developer Notes

Due to a beneficial change in the build environment (generated files are stored per target, not in a common area), it is necessary to remove a couple of files from any older branches (these files are generated automatically by the build).

# on a Posix O/S
rm -f src/main/fc/settings_generated.[ch]