# INAV firmware: navigation-capable flight control for fixed wing and multirotor

> INAV is GPL-3.0 flight control firmware for F4, AT32, F7 and H7 boards, with position hold, waypoint missions and return to home. It is configured through the separate INAV Configurator desktop app, and its hardware support is narrowing.

**iNavFlight/inav** — INAV: Navigation-enabled flight control software

- Repository: https://github.com/iNavFlight/inav
- Website: https://inavflight.github.io
- Stars: 4,239 · Forks: 1,919
- Language: C
- License: GPL-3.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/inavflight-inav

## What INAV adds over a plain flight controller firmware

INAV is navigation-enabled flight control software. The distinction matters: a base flight controller stabilises an airframe, while INAV layers position hold, altitude hold, return to home and waypoint missions on top of that stabilisation. Those navigation modes are the reason the project exists, and they are listed as features alongside the On Screen Display, Blackbox logging and gyro filtering.

The audience is narrower than "drone pilots". The README calls out excellent support for fixed wing UAVs, airplanes and flying wings, and the documentation set reflects that: a fixed wing setup guide, an autolaunch guide, a modes guide and a wing tuning masterclass are all shipped as PDFs in the docs directory. Multirotor flyers are supported too, with a separate tutorial playlist, but the fixed wing material is where the project invests its documentation.

A second audience is people who want to run unusual hardware. The README describes a fully configurable mixer that allows multirotor, fixed wing, rovers, boats and other experimental devices. If your airframe does not fit a preset template, the mixer is the escape hatch.

## How the firmware, configurator and Blackbox tools fit together

The repository is the firmware. It is written in C, builds with CMake, and the Dockerfile installs git, cmake, make, ruby, gcc, python3, python3-yaml, ninja-build and gcc-arm-none-eabi, which tells you the toolchain is a cross-compiler for ARM targets rather than a host binary. The build runs through cmake/docker.sh as the container entrypoint, with the working directory set to /src/build.

Configuration does not happen in this repository. The INAV Configurator is a separate desktop application, distributed from its own releases page for Windows, macOS and Linux, and it is what you use to flash firmware and set up the aircraft. The README points to it under both Downloads and Tools, which is a hint that newcomers conflate the two.

A third piece is logging. Blackbox flight recorder logging is a firmware feature, but reading the logs needs the INAV Blackbox Explorer, or the command line tools blackbox_decode and blackbox_render from the blackbox-tools repository. The data flow is therefore: firmware records to onboard storage, a desktop tool converts and renders it, and you tune from what you see. Radio-side telemetry is also separate: EdgeTX and OpenTX users get a widget from the OpenTX-Telemetry-Widget repository, and the firmware speaks SmartPort, FPort, MAVlink, LTM and CRSF over the air.

## Installing the INAV Configurator and flashing firmware

The README does not give install commands for the configurator. It gives a download link: the latest INAV Configurator release on GitHub, with builds under the Assets section for Windows, macOS and Linux. There is no package manager step documented, so treat it as a manual download and install.

For building the firmware itself, the repository ships a Dockerfile. It takes USER_ID, GROUP_ID and GDB as build arguments, and installs the ARM toolchain. The GDB argument is conditional: gdb is only installed when GDB is set to yes.

```dockerfile
FROM ubuntu:jammy

ARG USER_ID
ARG GROUP_ID
ARG GDB

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y git cmake make ruby gcc python3 python3-yaml ninja-build gcc-arm-none-eabi

RUN if [ "$GDB" = "yes" ]; then apt-get install -y gdb; fi
```

The image sets the entrypoint to /src/cmake/docker.sh and the working directory to /src/build, so a container run expects your source tree mounted at /src. The Dockerfile also runs git config --global --add safe.directory /src, which is the standard workaround for git refusing to operate on a mounted volume owned by another user.

Once you have firmware, the README's Installation section is not inline; it points to docs/Installation.md in the repository. Flashing is done through the configurator. The README does not document a rollback procedure for a failed flash, so plan for that gap before you start rather than after.

## Hardware support is shrinking, and the README says so

The most useful thing in this README is what it refuses to support. Three public service announcements sit at the top, and they are the clearest signal of where the project is heading.

First, F411. INAV no longer accepts targets based on the STM32 F411 MCU. INAV 7 was the last official release for those boards, INAV 8 is not officially available for them, and the README states the team has not tested it. Issues that cannot be reproduced on other MCUs may not be fixed, and F411 targets may eventually be removed entirely. If you own an F411 board, this is a dead end, not a configuration problem.

Second, GPS. INAV 8.0 marks M7, M6 and older UBLOX units as deprecated, and INAV 9.0.0 requires UBLOX units with protocol version 15.00 or newer, which means an M8 or newer. You can check your unit from the CLI: the status command prints a line such as GPS: HW Version: Unknown Proto: 0.00 Baud: 115200 (UBLOX Proto >= 15.0 required). INAV 8.0.0 warns you if the unit is too old. The stated reason is maintenance cost: testing GPS changes across many UBLOX versions takes time, and dropping old devices simplifies the code.

Third, the ICM426xx IMUs. Filtering settings changed in INAV 7.1 to match Ardupilot and Betaflight. Upgrading from an older version may require accelerometer recalibration, and if you are not on INAV's default tune you should check whether the tune still holds. That is a real upgrade cost, not a footnote.

## Flying navigation modes without a compass

INAV 7.1 added the ability to run position hold, waypoint navigation and return to home without a compass. That is a genuine capability change, and the README immediately argues against relying on it.

The project's own guidance is to install a compass anyway. The stated reasons are precision, reliability at low speeds and in strong wind, and reduced risk of drift or inaccurate positioning. The phrasing is promotional, but the substance is a limitation: without a compass, heading estimation degrades and the aircraft can drift. If your use case is a short return to home in open air, compass-free navigation may be enough. If you are flying waypoint missions in wind, the README is telling you it is not.

This is also where the choice between INAV and Betaflight becomes concrete. Betaflight targets manual and acro flight, where navigation is not the point. INAV's navigation stack is the reason to pick it, and the compass question only exists because INAV is doing the navigation at all.

## Licence, maintenance and what an upgrade costs you

INAV is GPL-3.0. That matters if you intend to redistribute a modified firmware image or ship a product built on it: the licence carries source disclosure obligations. It does not restrict flashing your own board or reading the code. This is a description of the licence identifier, not legal advice; check the LICENSE file and your own counsel before distributing anything.

The repository is not archived, and the last push was on 2026-09-22. The default branch is maintenance-10.x, while the most recent release listed is 9.1.0 from 2026-07-09, following 9.1.0-RC1 in June 2026 and 9.0.1 in February 2026. That pattern, an RC before the final and a maintenance branch ahead of the last release, suggests releases are staged rather than continuous.

Upgrade cost is documented in the same PSAs. Moving to INAV 7.1 or later on an ICM426xx board means recalibrating the accelerometer and rechecking a non-default tune. Moving to INAV 9.0.0 means owning an M8-or-newer UBLOX GPS. Each of those is a hardware or bench-time cost, not a download. Budget for it before you commit an airframe to the current release.

## Conclusion

INAV suits fixed wing and multirotor builders who want GPS navigation, waypoint missions and return to home on an F4, AT32, F7 or H7 board, and who accept that the configurator is a separate download and that some older hardware is being dropped. If you fly an F411 board, or a UBLOX GPS older than M8, INAV is the wrong tool: the README states F411 is no longer accepted and INAV 9.0.0 requires UBLOX protocol 15.00 or newer. Before flashing, check the target list for your board, run the status CLI command to read your GPS protocol version, and confirm your radio telemetry protocol (SmartPort, FPort, MAVlink, LTM or CRSF) is supported.

## FAQ

### Which is better, INAV or Betaflight?

They solve different problems. INAV is navigation-enabled flight control software with position hold, altitude hold, return to home and waypoint missions, and the README highlights support for fixed wing UAVs. Betaflight is not discussed in this repository's material, so a direct comparison cannot be made here.

### Is INAV free?

Yes. INAV is released under GPL-3.0, so the firmware source is available under that licence. The INAV Configurator is distributed separately from its own GitHub releases page for Windows, macOS and Linux.

### What is the latest version of INAV?

The most recent release listed in the repository is 9.1.0, dated 2026-07-09, following the 9.1.0-RC1 release candidate in June 2026. The default branch is maintenance-10.x, so work is already continuing past that release.

### Does INAV use MAVLink?

Yes, MAVLink is listed among the supported telemetry protocols, alongside SmartPort, FPort, LTM and CRSF. Telemetry is one of the feature categories the README lists for the firmware.

## Sources

- [iNavFlight/inav on GitHub](https://github.com/iNavFlight/inav)
- [License: GPL-3.0](https://github.com/iNavFlight/inav/blob/maintenance-10.x/LICENSE)
- [Project website](https://inavflight.github.io)
- [README](https://github.com/iNavFlight/inav/blob/maintenance-10.x/README.md)
- [Releases](https://github.com/iNavFlight/inav/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/inavflight-inav
