Firmwares for Flight Controllers
CLI “defaults” after reflashing. Firmwares can also be downloaded from BF/INAV configurator
***** Make sure the soldering iron you are using is ESD-safe. some iron tips may float at arbitrary voltages unless an additional grounding wire is used. you can easily kill chips when soldering if soldering iron is not grounded properly. *****
Installing Betaflight/INAV/ArduPilot(ChibiOS)
-
BF WIKI – DFU flashing under Windows
- Identical theory for INAV/ArduPilot
- If GPS or other peripherals are connected to UART1 or UART3 of F4/F7/H7 chip and these peripherals are powered ON while connecting USB. FC can’t enter DFU mode. It is related to DFU protocol used in the STM32 bootloader, not hardware and PC driver issue.
- Make sure INAV firmware version is compatible with configurator version, e.g. use configurator 3.0 for fw 3.0.x, use configurator 4.1 for fw 4.1.x
- Always reset to default with
defaults
in CLI after each reflashing, “full chip erase” can not erase old data completely! - Start settings from scratch . Don’t try to use a diff or dump from other version.
- DFU mode can’t be bricked.
Install DFU Drivers (DFU mode)
—Use one or the other of two—
Zadig 2.8
- Connect the FC USB to the PC While holding the boot button in. (DO NOT power on FC via external 5V or Vbat)
- Open Zadig
- Choose Options > List All Devices
- Select STM32 BOOTLOADER in the device list (if instead you see STM32 Virtual Com Port you are not in DFU mode – don’t replace the driver!)
- Choose WinUSB (v6.x.x.x) in the box on the right side of the green arrow and click Replace Driver
- Unplug FC from the computer
- Restart BF/INAV configurator
- Connect the FC USB to the PC While holding the boot button in.
- BF/INAV configurator should show it’s connected in DFU mode in the top right corner
- Choose the latest hex file for your FC and then “Load Firmware Online/local”. Once loaded, click “Flash Firmware”.
ImpulseRC Driver Fixer
- Start ImpluseRC Driver Fixer
- Connect the FC USB to the PC While holding the boot button in. (DO NOT power on FC via external 5V or Vbat)
- The ImpulseRC Driver Fixer should then see and load the proper driver
- Start BF/INAV configurator
- Connect the FC USB to the PC while holding the boot button in.
- BF/INAV configurator should show it’s connected in DFU mode in the top right corner (DO NOT click the CONNECT button)
- Choose the latest hex file for your FC and then “Load Firmware Online/local”. Once loaded, click “Flash Firmware”.
Install STM32 VCP Drivers (COM mode)
- STM32 Virtual Com Port driver (Windows)
- STM32 Virtual Com Port driver X64 (Windows)
- PC devices manager should show “STMicroelectronics Virtual COM Port (COMxx)” if VCP drivers is installed successful.
- “FS Mode” is not suitable.
- If PC drivers manager doesn’t show right COM port, uninstall it.
- Restart your computer. reinstall STM VCP drivers without FC connected. then connect FC USB to the PC to see if COM port can be detected.
Flashing BF/INAV/ArduPilot firmware with STM32CubeProgrammer
FAQ
- Click FAQ
BetaFlight
INavFlight
- iNavFlight GitHub
- iNavFlight FW releases
- iNAV Configurator release
- INAV Lua Telemetry
- Mission Planner for INAV (Android)
ArduPilot
STM32CubeProgrammer
Barometer DPS310
- BetaFlight firmwares 4.2.x in “Release” branch don’t support barometer DPS310, pls downoad latest 4.3.x from “development” branch.
- or download customized betaflight 4.2.x from here
- betaflight_4.2.9_MATEKF405STD.hex
- betaflight_4.2.11_MATEKF405STD.hex
- with ArduPilot firmware, you might set the onboard DPS310 as external barometer, GND_EXT_BUS ->0, GND_PROBE_EXT ->64
- INAV2.5.1 downloaded from configurator don’t support new barometer DPS310. Pls use INAV2.6 or higher version and new configurator.
BetaFlight Unified Target since 4.1.2
- F405-CTR MATEKF405CTR(MTKS)
- F405-STD/F405-OSD MATEKF405STD (MTKS)
- F405-mini MATEKF405MINI(MTKS)
- F405-AIO MATEKF405AIO (MTKS)
BetaFlight legacy Target “MATEKF405” for F405-CTR/F405-STD/F405-mini/F405-AIO/F405-OSD
- Betaflight legacy target is not released any more in pull-down list of configurator, it has been superseded by the Unified Target since 4.1.2
INAV Target MATEKF405
- inav_6.0.0_MATEKF405
- inav_7.0.0_MATEKF405
- Softserial_TX1 is on TX4 pad & Softserial_TX2 is on TX2 pad if CPU based serial port is enabled since 2.0.1
Wiki INAV MATEKF405 family
ArduPilot(ChibiOSD) Mateksys F405-STD and variants
- http://firmware.ardupilot.org/
- ArduPilot (ChibiOS) Target MatekF405 for F405-CTR
- ArduPilot (ChibiOS) Target MatekF405-STD for F405-STD and F405-mini
- Flight controller F405-SE and F405-WING share same target/hwdef.
INAV Target MATEKF405SE
Betaflight unified Target MATEKF405SE
- betaflight_4.2.9_MATEKF405SE
- betaflight_4.2.11_MATEKF405SE
- BetaFlight 4.2.x downloaded from configurator don’t support DPS310.
ArduPilot (ChibiOS) hwdef MatekF405-WING
BetaFlight Unified Target
- F411-mini MTKS-MATEKF411
BetaFlight Target MATEKF411
——————————————————————————————————————————–
INAV Target MATEKF411
- inav_6.0.0_MATEKF411
- inav_7.0.0_MATEKF411
- Set OSD video format to “AUTO”, Do not have it set to PAL or NTSC, otherwise F411 could hang after rebooting.
https://www.mateksys.com/Downloads/FW/inav_2.4.0_MATEKF411_S5S6_SS2.hex
——————————————————————————————————————————–
INAV Target variant
MATEKF411_SFTSRL2
- if you want to use two softserials (TX only) at the same time. Eg. VTX control + S. Port
- softserial_tx1 on ST1 pad, softserial_tx2 on LED pad
MATEKF411_RSSI
- if you want to have analog RSSI input on ST1 pad. softserial_tx1 will be available on the LED pad.
MATEKF411_FD_SFTSRL
- if you need the softserial to be full-duplex (TX = ST1 pad, RX = LED pad), at the cost of losing the LED output.
MATEKF411_S5S6_SS2
- inav_3.0.2_MATEKF411_S5S6_SS2.hex
- inav_4.1.0_MATEKF411_S5S6_SS2.hex
- inav_5.1.0_MATEKF411_S5S6_SS2.hex
- If you use 2 servos outputs only. e.g. flying wing. you might use this firmware to get Softserial2_TX on S5 pad, Softserial2_RX on S6 pad.
BetaFlight Target MATEKF411RX
BetaFlight Unified Target
BetaFlight Unified Target (since BF4.2.x)
BetaFlight legacy Target MATEKF722
INAV Target MATEKF722
BetaFlight Unified Target
- F722-SE MATEKF722SE(MTKS)
- F722-mini, F722-miniSE MATEKF722MINI(MTKS)
- F722-WING MATEKF722SE(MTKS)
BetaFlight Legacy Target MATEKF722SE
- Betaflight_3.5.7_MATEKF722SE
- Betaflight_4.1.5_MATEKF722SE
- S5 doesn’t work for Hex/Octo motor due to normal DMA confliction if RPM filter is enabled
- Betaflight legacy target is not released any more in pull-down list of configurator, it has been superseded by the Unified Target since 4.1.2
Customized BetaFlight 4.2.x for new barometer DPS310
- betaflight_4.2.9_MATEKF722MINI.hex F722-miniSE
- betaflight_4.2.11_MATEKF722MINI.hex F722-miniSE
- betaflight_4.2.9_MATEKF722SE.hex F722-SE
- betaflight_4.2.11_MATEKF722SE.hex F722-SE
—————————————————————————————————
INAV Target MATEKF722SE for F722-SE & F722-WING
INAV Target MATEKF722MINI for F722-mini & F722-miniSE
INAV Target Variant MATEKF722SE_8MOTOR
- support 8 motors in multirotor mixer, S7 & S8 are defined as multirotor servo in normal target
- inav_6.0.0_MATEKF722SE_8MOTOR.hex
INAV Target Tips
- S5 doesn’t work for Hex & Octo copter due to normal DMA confliction if Dshot is selected
- Use multishot for Hex & Octo copter
- BF without RPM filter uses burst DMA, no confliction between S1 ~S8 with Dshot, BF with RPM filter uses normal DMA.
INAV Target MATEKF411SE
- inav_6.0.0_MATEKF411SE
- inav_7.0.0_MATEKF411SE
- Set OSD video format to “AUTO”, Do not have it set to PAL or NTSC, otherwise F411 could hang after rebooting.
Variant:
MATEKF411SE
Stock target. LED control and have SS1 on ST1 pad, SS2 on TX2 pad.MATEKF411SE_PINIO
Adds USER 2 PINIO support on the LED pad.MATEKF411SE_FD_SFTSRL1
Adds full duplex SS1 by putting the RX on the LED pad.MATEKF411SE_SS2_CH6
SS2 moved to Ch6 pad. This keeps UART 2 as a full UART (for example, for use with Crossfire) and SS2 support.
——————————————————————————————————————————–
BetaFlight unified Target MATEKF411SE(MTKS)
- betaflight_3.5.7_MATEKF411SE legacy target
- betaflight_4.1.5_MATEKF411SE legacy target
ArduPilot Target MATEKF765-WING
INav Target MATEKF765
BetaFlight Target MATEKF765
*** F722-PX, F722-HD, F722-WPX has INAV firmware preloaded for QC in factory ***
Barometer DPS310
- BetaFlight firmwares 4.2.x in “Release” branch don’t support barometer DPS310, pls downoad latest 4.3.x from “development” branch.
- or download customized betaflight 4.2.x from here
- betaflight_4.2.9_MATEKF722HD.hex
- betaflight_4.2.11_MATEKF722HD.hex
- INAV2.5.1 downloaded from configurator don’t support new barometer DPS310. Pls use INAV2.6 and newer.
——————————————————————————————————————————–
INAV Target MATEKF722PX
F722-PX, F722-HD share same INAV target MATEKF722PX
INAV Target MATEKF722WPX
F722-WPX uses INAV target MATEKF722WPX since 2.6
——————————————————————————————————————————–
BetaFlight Unified Target MATEKF722HD
F722-PX and F722-HD share same Betaflight unified target MATEKF722HD
- Select “MATEKF722HD” in pull-down list of configurator
- BetaFlight configurator 10.7 has supported FrskyOSD protocol, You need to enable “OSD(Frsky Protocol)” on Uart6.
F722-WPX can be flashed with Betaflight unified target MATEKF722HD also, DPS310 has been supported by Betaflight 4.3.0
Type CLI command
- resource SDCARD_CS 1 C15
- set sdcard_mode = SPI
- set sdcard_spi_bus = 2
- set blackbox_device = SDCARD
- serial 5 65536 115200 57600 0 115200
- save
H743-XXXX | ArduPilot | INAV | BetaFlight |
V1 | ICM20602(1st) MPU6000(2nd) |
MPU6000(default) ICM20602 |
MPU6000(default) ICM20602 |
V1.5/V2 | ICM42605(1st) MPU6000(2nd) |
MPU6000(default) ICM42605 |
MPU6000(default) ICM42605 |
V3 | ICM42688P(1st) ICM42605(2nd) |
ICM42688P(default) ICM42605 |
ICM42688P(default) |
ArduPilot Target MATEKH743
- https://firmware.ardupilot.org/Plane/stable/MatekH743/
- https://firmware.ardupilot.org/Copter/stable/MatekH743/
- Youtube Installing ArduPilot on an H743 Flight Controller
- If ICM42605 can’t be probed with ArduPilot 4.1, set INS_ENABLE_MASK to 7 or default 127.
INAV Target MATEKH743
*** In INAV code, ICM42605 and ICM42688p share same “ICM42605” driver, so you will see ICM42688-p displaied as “ICM42605” in CLI “status”
- inav_7.0.0_MATEKH743 for H743-xxxx all
- inav_6.0.0_MATEKH743 for H743-xxxx all
BetaFlight Target MATEKH743
- betaflight_4.2.11_MATEKH743 for H743-xxxx V1
- betaflight_4.5.1_MATEKH743_V3.hex for H743-xxxx V1.5/V2/V3
- You might download latest firmware of Target MATEKH743 directly from BF configurator if you just use the first IMU.
- The firmware downloaded from BF configurator doesn’t support the 2nd IMU on H743-xxxx V1.5/V2/V3
ArduPilot AP_Periph F405-MatekGPS
ArduPilot Plane/Copter/Rover MatekF405-CAN
INav Target MATEKF405CAN
ArduPilot Target MATEKF765-SE
INav Target MATEKF765SE
SKU | Blackbox | ArduPilot FW name |
INAV Target |
Betaflight Target |
F405-miniTE | flash | MatekF405-TE | MATEKF405TE | MatekF405-TE |
F405-HDTE | flash | MatekF405-TE | MATEKF405TE | MatekF405-TE |
F405-WMN | flash | MatekF405-TE | MATEKF405TE | MatekF405-TE |
F405-TE | SD | MatekF405-TE | MATEKF405TE_SD | MATEKF405TE_SD |
F405-WTE | SD | MatekF405-TE | MATEKF405TE_SD | MATEKF405TE_SD |
F405-VTOL | SD | MatekF405-TE | MATEKF405TE_SD | MATEKF405TE_SD |
ArduPilot hwdef MatekF405-TE
Tips
** Internal errors 0x4000 l:213 spi_fail ***
- ArduPilot MatekF405TE hwdef has SD card & dataflash definitions for logging, default is logging on dataflash.
- for F405-TE/F405-WTE/F405-VTOL using SD card logging. need to set LOG_BACKEND_TYPE = 1
BetaFlight
- betaflight_4.2.11_MATEKF405TE
- betaflight_4.3.1_MATEKF405TE
- F405-miniTE with ICM42688-p works with BF 4.3.x or newer only. BF4.2.x doesn’t support ICM42688-P
- set dshot_bitbang = ON when using X6 and X8 DSHOT
- You may also download latest BF 4.3.x firmware directly from BF configurator
INAV
*** In INAV code, ICM42605 and ICM42688p share same “ICM42605” driver, so you will see ICM42688-p displaied as “ICM42605” in CLI “status”
INAV Target MATEKF411TE
Acknowledgements
- How to setup INAV on a flying wing – video tutorial
- How to setup INAV on a flying wing – video tutorial – GPS, Baro and Compass
- The most common iNav mistakes