MicoAir F405 V2 Flight Controller — User Manual
The MicoAir F405 V2 (board name: MicoAir405v2) is a cost-effective 30.5×30.5 flight controller for ArduPilot and INAV builds. Its claim to fame: it was the first F405 board to pair the budget STM32F405 processor with the Bosch BMI088 — an industrial-grade IMU whose temperature stability and vibration robustness are normally found on much more expensive autopilots. If you want a reliable GPS-mission-capable long-range build without paying H7 money, this is the board.

Where to buy
- Robofusion store (ships from Canada — free Canada-wide shipping): MicoAir F405 V2 Flight Controller — FC only, or as a stack with a 50 A Bluejay 4-in-1 ESC
A flight controller's real job is reading its IMU (gyro + accelerometer) cleanly. A fast CPU with a noisy IMU still flies badly; a modest CPU with a clean IMU flies beautifully. The BMI088 on this board was designed by Bosch for drones and robotics — it shrugs off motor vibration that makes hobby-grade IMUs drift. That is why an F405 board with a BMI088 can out-fly pricier boards on paper specs. The trade-off of the older F405 processor: fewer UARTs and less headroom for heavy logging or Lua scripting — see the comparison below.
F405 V2, H743 V2, or NxtPX4 V2 — which one?
| F405 V2 | H743 V2 | NxtPX4 V2 | |
|---|---|---|---|
| Processor | STM32F405, 168 MHz | STM32H743, 480 MHz | STM32H743, 480 MHz |
| IMU | BMI088 | BMI088 + BMI270 (dual) | BMI088 × 2 (dual) |
| Firmware | ArduPilot / INAV | ArduPilot / PX4 / INAV / Betaflight | PX4 (native) / ArduPilot |
| UARTs / PWM | 6 / 10 | 8 / 11 | 7 / 8 |
| Mounting | 30.5 × 30.5 mm | 30.5 × 30.5 mm | 20 × 20 mm |
| Best for | Budget long-range ArduPilot/INAV | Do-it-all flagship | Small PX4 research drones |
Specifications
| Item | Specification |
|---|---|
| MCU | STM32F405RGT6, 168 MHz, 1 MB flash |
| IMU | BMI088 (Bosch, 6-axis) |
| Barometer | SPL06 |
| OSD chip | AT7456E (analog OSD) |
| Logging | MicroSD card slot |
| Interfaces | 6× UART, 10× PWM, 1× I2C, 1× SWD, 2× ADC (voltage / current) |
| USB | Type-C |
| HD VTX connector | SH1.0-6P for DJI O3 Air Unit |
| BEC | 5 V 3 A (receiver, GPS, optical flow…) + 9 V 3 A (VTX, camera) |
| Battery input | Up to 6S LiPo, on-board voltage sensing |
| Compass | None built-in — connect external via I2C (SDA/SCL) |
| Mounting | 30.5 × 30.5 mm, Φ4 mm holes |
| Dimensions / weight | 36 × 36 × 8 mm / 9 g |
Pinout
Top and bottom pad layout:


UART mapping
| Port | ArduPilot | Default function |
|---|---|---|
| USB | SERIAL0 | GCS connection |
| UART1 | SERIAL1 | Spare (DMA) — good for CRSF/ELRS |
| UART2 | SERIAL2 | DJI HD VTX (DisplayPort, DMA) |
| UART3 | SERIAL3 | GPS |
| UART4 | SERIAL4 | Spare (DMA) |
| UART5 | SERIAL5 | ESC telemetry |
| UART6 | SERIAL6 | SBUS input (RX6 inverted from SBUS pin; TX6 has no DMA) |
RC input
- SBUS receivers — use the dedicated SBUS pin (internally inverted into RX6); works out of the box
- CRSF / ELRS and other bidirectional protocols — use a full UART such as UART1 or UART4: wire RX/TX, set that port's
SERIALn_PROTOCOL = 23, and changeSERIAL6_PROTOCOLto anything other than 23 - PPM is not supported
Typical setup: ELRS receiver TX → R1 pad, receiver RX → T1 pad, then SERIAL1_PROTOCOL = 23, SERIAL6_PROTOCOL = 0. Done — full telemetry included.
OSD and HD VTX
- Analog OSD — onboard AT7456E (
OSD_TYPE = 1), pairs with analog VTX modules like the VT5804 / VT5805 - DJI O3 — SH1.0-6P connector with DisplayPort OSD on UART2
Pin 1 of the SH1.0-6P connector carries the 9 V BEC rail for the video system. Never wire a 5 V peripheral to it.
PWM outputs and DShot
10 PWM outputs; channels 1–8 support DShot, channels 1–4 additionally support bi-directional DShot (RPM telemetry for gyro filtering). Outputs are grouped — every output in a group must run the same protocol:
| Group | Outputs |
|---|---|
| 1 | 1, 2, 5, 6 |
| 2 | 3, 4 |
| 3 | 7, 8 |
| 4 | 9, 10 |
Battery monitoring
Voltage sensing is built in (up to 6S); current sensing comes from the 4-in-1 ESC via the ESC connector. Default ArduPilot parameters:
| Parameter | Value |
|---|---|
BATT_VOLT_PIN | 10 |
BATT_CURR_PIN | 11 |
BATT_VOLT_MULT | 21.2 |
BATT_AMP_PERVLT | 116.5 |
The current scale (BATT_AMP_PERVLT) is ESC-dependent — verify against a charger's mAh count after a few flights and adjust.
Compass
No compass on the board. For GPS missions add an external compass — the usual route is a GPS+compass combo module (e.g. an M10 GPS with QMC5883L) wired to the SDA/SCL pads. Mount it on a mast away from power wiring.
Firmware
| Firmware | Support | Target / notes |
|---|---|---|
| ArduPilot | Official since 4.5.0 | Target MicoAir405v2 — builds on firmware.ardupilot.org, or the custom firmware builder |
| INAV | Official since 8.0 | Target MICOAIR405V2; older builds on micoair GitHub |
Betaflight and PX4 are not supported on this board — if you need them, use the H743 V2.
First-time flashing (DFU)
- Hold the bootloader button, plug in USB — the board enumerates in DFU mode
- Flash the
arduXXXX_with_bl.hexfile with a DFU tool (or Mission Planner → Load custom firmware, or MicoConfigurator) - Afterwards, update over USB with
.apjfiles from any ground station
FAQ
Is an F405 still worth buying in the H7 era?
For ArduPilot/INAV cruising builds — yes. The F405 runs standard GPS missions, OSD, and DShot without breaking a sweat. You give up spare UARTs, heavy logging headroom, and Lua scripting. If the price difference doesn't matter to you, buy the H743 V2; if it does, this board flies just as straight.