Skip to main content

INAV FAQ

INAV is the firmware for autonomous fixed-wing and multirotor flight with GPS features, built on the Betaflight lineage. That inheritance shapes how it is configured: much of it is done through a CLI of named settings rather than a parameter table, and the setting names are lower case with underscores.

These are the questions that come up most often. For putting INAV on a board in the first place, see the Firmware Flashing Guide.

How do I change the motor order?

You do not have to unsolder anything — INAV can remap which output drives which physical motor.

  1. Connect the board over USB and open INAV Configurator.
  2. Go to the Mixer tab.
  3. Click Motor Mixer Wizard.
  4. Set which physical motor each output corresponds to.
  5. Click Save and Reboot.

Then verify it. On the Outputs tab you can spin each motor individually — with the propellers off — and confirm that the motor INAV calls 1 is the one that moves when you test motor 1, and that each is turning the direction the mixer diagram shows.

Wrong order is fixed here, in software. Wrong direction is not: swap any two of the three motor wires at the ESC, or reverse that motor in an ESC configurator.

Propellers off for motor testing

Motor order and direction are exactly the things that are still wrong at this point in a build. A quad with its mixing wrong does not wobble gently — it flips at full power.

Which ESC protocol does INAV use, and what should I set?

motor_pwm_protocol, and its default is ONESHOT125 — not plain PWM, and not DShot. That catches people arriving from other firmware in both directions.

ValueType
STANDARDordinary PWM
ONESHOT125the default
MULTISHOT
BRUSHEDsmall brushed motors, not ESCs
DSHOT150digital
DSHOT300digital — the usual choice for a 4-in-1
DSHOT600digital

A 4-in-1 ESC running Bluejay or AM32 configured for DShot will not respond to ONESHOT125 at all, and nothing will report an error — the motors simply do nothing. Set DSHOT300 and reboot.

DShot also removes ESC calibration entirely, because it sends a number rather than a pulse length and there is nothing to calibrate.

How do I set up a receiver?

Two settings in two different places, which is why it is easy to do half of it.

In the Ports tab, enable Serial RX on the UART the receiver is wired to. Only one port can have it.

In the Receiver tab, set the receiver type to SERIAL — the other options are NONE, MSP for control from a companion computer, and a simulator mode — then choose the provider that matches your receiver:

ProviderReceiver
SBUSclassic SBUS, most Futaba-style receivers
SBUS_FASTSBUS at the faster rate some receivers offer
CRSFELRS and TBS Crossfire
GHSTImmersionRC Ghost
FPORT, FPORT2, FBUSFrSky's combined control and telemetry protocols
IBUSFlySky
SPEK1024, SPEK2048, SRXL2Spektrum
SUMDGraupner
JETIEXBUSJeti
SBUS2SBUS with telemetry
MAVLINKRC over a MAVLink link

Save and reboot, then check the channel bars on the Receiver tab move with the sticks before going any further.

How do I mount the flight controller sideways or upside down?

align_board_roll, align_board_pitch and align_board_yaw — and the units are the trap.

These are deci-degrees, not degrees

The values are in tenths of a degree. 180° is 1800. 90° is 900. 45° is 450.

Typing 180 gives the firmware 18 degrees, which is wrong in the most awkward possible way: small enough to look almost right on the bench, large enough to make the aircraft lean and drift in flight.

The range runs from −1800 to 3600, and each defaults to 0. Board alignment is a whole topic of its own — Flight Controller Board Orientation covers how to work out which rotation you actually need.

How do I set the external compass orientation?

align_mag, and this one takes a name, not a number:

ValueMeaning
DEFAULTwhatever the board target defines
CW0_DEGCW270_DEGrotated clockwise by that many degrees
CW0_DEG_FLIPCW270_DEG_FLIPthe same, with the sensor upside down

So an external compass rotated 90° clockwise relative to the board is CW90_DEG; one mounted upside down and not rotated is CW0_DEG_FLIP.

Note that INAV uses three different conventions for orientation in the same firmware: deci-degrees for the board, named rotations for the compass, and the mixer for the motors. They are not interchangeable, and a value that looks plausible in the wrong convention will be accepted without complaint.

External Compass Orientation explains how to determine the rotation rather than guess it.

How do I back up my configuration?

In the CLI tab:

CommandWhat it does
diff allprints only the settings that differ from the defaults
dump allprints every setting, defaults included
savewrites the configuration and reboots
defaultsresets everything

diff all is the one you want. Because it lists only your changes, the output is short enough to read, to keep in a text file, to put in a message when asking for help, and to paste straight back into a CLI on a freshly flashed board. dump all is a complete record but hundreds of lines, and restoring from it will also restore defaults that a newer firmware version may have deliberately changed.

To restore: flash the firmware, open the CLI, paste the saved diff all output, and finish with save.

Take a diff all before you flash

Firmware updates can reset the configuration. Thirty seconds spent copying diff all into a text file beforehand is the difference between a five-minute update and rebuilding a setup from memory.

My battery voltage or current reading is wrong

Two settings, each with its own unit convention:

vbat_scale — the voltage divider ratio multiplied by 100. A value of 1100 describes an 11:1 divider, such as 10 kΩ and 1 kΩ. If the reported pack voltage is off compared with a multimeter, adjust this proportionally: reading 1% low means raising it by about 1%. The CLI's status command shows the current reading while you work.

current_meter_scale — the output-voltage-to-current scaling, in 0.1 mV per amp. So 400 means 40 mV/A.

Current is far more likely to be wrong than voltage out of the box, because the current shunt is usually on the ESC rather than on the flight controller, so the board target's default was never chosen for your particular ESC. Fly a pack, compare what INAV reported as consumed against what your charger puts back in, and scale accordingly.


Written and maintained by the Robofusion engineering team.