The first flight controller ecosystem with integrated Field-Oriented Control ESC firmware — firmware written in Rust, configurator in Rust + TypeScript
FOC ESC • Downloads • Firmware • Configurator • Core Library • Getting Started • Hardware • Website
Every existing flight controller firmware — Betaflight, iNav, ArduPilot — treats the ESC as a black box. You flash the FC firmware, you flash the ESC firmware, and you hope they play nice together. The FC sends throttle commands over DShot and that's where its control ends.
NexusFlight breaks that wall down.
NexusFlight Suite is the first and only flight controller ecosystem that ships integrated FOC (Field-Oriented Control) ESC firmware alongside the FC firmware — both written in Rust, both configured from the same app, both designed to work as one system. The flight controller doesn't just send throttle percentages; it understands the motor model, tunes the FOC loop, and reads real-time telemetry from every phase of motor commutation.
To the best of our knowledge, no other flight controller software in the FPV drone ecosystem does this.
NexusFlight goes beyond matching Betaflight feature-for-feature. These are capabilities that no other open-source flight controller firmware offers:
| Feature | Betaflight | NexusFlight |
|---|---|---|
| Gyro filtering | Fixed-coefficient biquad chain | Adaptive Kalman filter — adjusts trust between prediction and measurement based on actual noise levels. ~50% less phase lag at equivalent noise rejection. |
| Rate controller | PID only | ADRC (Active Disturbance Rejection Control) — Extended State Observer estimates and cancels total disturbance (wind, prop wash, weight changes) in real-time. One tuning parameter instead of four. Same technology as DJI flight controllers. |
| Gain scheduling | TPA (linear D-term attenuation) | Model-based gain scheduling — scales all PID terms using thrust model curves and battery voltage compensation. Handles the full flight envelope. |
| Cross-axis coupling | None | Gyroscopic decoupling feedforward — pre-compensates precession torques during yaw maneuvers. |
| Auto-tune | Relay-based (Ziegler-Nichols oscillation) | Frequency-domain system identification — estimates plant transfer function from normal flight data via Welch's method. No deliberate oscillation needed. |
| Navigation | None (that's iNav) | 9-state EKF — GPS-IMU fusion with wind estimation, position hold, waypoint missions, wind-aware RTH. |
| ESC integration | DShot throttle commands | Integrated FOC ESC firmware — sinusoidal commutation, shared motor model, unified configuration. |
| Debug telemetry | Limited | Live 20Hz debug stream — gyro, PID terms, motors, attitude, CPU, battery, 4 debug channels with real-time SVG charts in the configurator. |
CoreDrive is a from-scratch BLDC motor ESC firmware with a full Field-Oriented Control engine. While traditional ESC firmware (BLHeli_32, BLHeli_S, AM32) uses trapezoidal six-step commutation, CoreDrive implements true sinusoidal FOC — the same control strategy used in industrial servo drives and high-performance robotics.
| Traditional Six-Step | CoreDrive FOC | |
|---|---|---|
| Commutation | 6 discrete steps per electrical revolution | Continuous sinusoidal — infinite resolution |
| Torque ripple | High — causes vibration and noise | Near-zero — smoother motor, cleaner gyro signal |
| Efficiency | ~85% typical | Up to ~90-93% depending on operating point — most pronounced at partial throttle and low-speed operation |
| Low-throttle control | Coarse, jittery | Precise and linear — better authority on micro quads |
| Noise | Audible commutation whine | Near-silent operation |
| Startup | Can stutter or desync | Controlled align, ramp with stall recovery |
CoreDrive decomposes motor current into two orthogonal axes using the Park and Clarke transforms:
- D-axis (Direct) — Controls magnetic flux. Held at zero for maximum torque-per-amp efficiency.
- Q-axis (Quadrature) — Controls torque. This is where your throttle command goes.
Each axis has its own PI controller with independently tunable Kp/Ki gains. A sensorless back-EMF observer estimates rotor position in real time — no hall sensors or encoders needed, just the three motor wires you already have.
- D-Q axis PI controllers — Independent Kp/Ki gains for flux (D) and torque (Q) control
- Motor model parameters — Configure winding resistance, inductance, and observer gain for your specific motor
- Sensorless rotor estimation — Back-EMF observer tracks rotor position without hall sensors or encoders
- Switchable control modes — Toggle between FOC and Six-Step per ESC from NexusGround, fly on either
- Configurable startup sequence — Listen duration, alignment hold, eRPM ramp rate, stall recovery with cooldown
- Full protection suite — Over-current (mA), over-temperature, under-voltage (mV), commutation desync, stall timeout
- 3D / bidirectional mode — Smooth FOC control in both motor directions for inverted flight
- PWM flexibility — 24, 48, or 96 kHz switching frequency with 0-30° timing advance
- Extended DShot Telemetry — eRPM, ESC temperature, current draw, and voltage per motor in real time
- 4-way passthrough — Configure each ESC individually through the FC, no direct ESC connection needed
- Integrated tuning — Tune FOC parameters from NexusGround's ESC/CoreDrive tab with live motor detection
Because the FC and ESC firmware are designed together:
- The FC reads motor eRPM via bidirectional DShot and feeds it directly into RPM-based dynamic notch filters — eliminating motor vibration harmonics from the gyro signal before they reach the PID loop
- Motor model parameters (resistance, inductance, pole pairs) are shared between the FOC observer and the FC's telemetry system
- Configuration backup captures both FC and ESC settings to Aegis-DB in one operation
- One configurator app (NexusGround) tunes both the flight PID loop and the motor FOC loop
The desktop app for configuring your flight controller and ESCs — PID tuning, FOC tuning, rates, receiver setup, OSD, VTX, blackbox, firmware flashing, auto-tune, live debug telemetry, and more.
| Platform | Download | Size |
|---|---|---|
| Windows 10/11 (x64) | NexusGround_0.3.2_x64-setup.exe | ~19 MB |
| Linux (.deb — Ubuntu/Debian) | NexusGround_0.3.2_amd64.deb | ~20 MB |
| Linux (.rpm — Fedora/RHEL) | NexusGround-0.3.2-1.x86_64.rpm | ~20 MB |
| Linux (.AppImage — Universal) | NexusGround_0.3.2_amd64.AppImage | ~88 MB |
Note: macOS builds are coming soon. For now, macOS users can build from source — see Building from Source.
Pre-built firmware binaries for supported flight controllers. Flash directly via NexusGround's built-in firmware flasher.
| Board Family | MCU | Download |
|---|---|---|
| STM32F405 boards | STM32F405RGT6 (168 MHz Cortex-M4F) | nexusflight_stm32f405.bin |
| STM32F411 boards | STM32F411CEU6 (100 MHz Cortex-M4F) | nexusflight_stm32f411.bin |
| STM32F7 boards | STM32F745/F722 (216 MHz Cortex-M7F) | nexusflight_stm32f7.bin |
| STM32G4 boards | STM32G473/G431 (170 MHz Cortex-M4F) | nexusflight_stm32g4.bin |
| STM32H7 boards | STM32H743/H723 (480 MHz Cortex-M7F) | nexusflight_stm32h7.bin |
Full board list: See Supported Hardware for all 27 supported boards across 6 MCU families.
The core flight algorithms as a standalone Rust crate — no_std compatible, usable in your own projects.
# Cargo.toml — available upon source access request
[dependencies]
nexus-core = { git = "https://github.com/AutomataNexus/NexusFlight.git", branch = "main" }| Asset | Download |
|---|---|
| Source documentation | API Reference |
Core Flight Stack:
- Pure Rust firmware — FC and ESC firmware have zero C dependencies, memory-safe by default
- Embassy async runtime — Cooperative multitasking with zero-cost state machines on a single stack
- 7 flight modes — Acro, Angle, Horizon, Position Hold, Waypoint Mission, Turtle (flip-over-after-crash), Launch Control
- Protocol support — MSP v2, CRSF/ELRS, S.BUS, DShot (150/300/600), SmartAudio, Tramp IRC, UBX GPS
- Bidirectional DShot — Real-time eRPM telemetry via GCR decoding, RPM-driven dynamic notch filters
- OSD — MAX7456 analog + MSP DisplayPort digital (DJI/HDZero/Walksnail)
- Blackbox — 96-byte v3 frames with dual gyro (raw+filtered), separated PID terms, debug channels, delta compression
- Safety — Staged failsafe (hold, ramp, disarm), arming pre-checks, watchdog, stack guard, hard fault handler
Advanced Control (beyond Betaflight):
- Adaptive Kalman gyro filter — Per-axis 1D Kalman with adaptive measurement noise R. Replaces PT1+biquad lowpass chain. Less phase lag, better noise rejection.
- ADRC rate controller — Extended State Observer estimates total disturbance and cancels it. Roll/pitch ADRC with PID yaw hybrid mode. Single bandwidth parameter tunes all observer gains.
- Cross-axis decoupling feedforward — Pre-compensates gyroscopic precession during yaw maneuvers.
- Model-based gain scheduling — Thrust-curve-aware PID scaling (linear/sqrt/model-based) + battery voltage compensation. Replaces simple TPA.
- Anti-gravity — Throttle change rate detection with temporary I-term boost for punch response.
- RC smoothing — Auto-tuned PT1 filter that detects RC frame rate and sets cutoff at 2x.
Navigation:
- 9-state Extended Kalman Filter — GPS-IMU sensor fusion: position (NED), velocity (NED), wind (NE), vertical accel bias
- Position Hold — Cascaded PID (position, velocity, lean angle) with heading rotation
- Waypoint Mission — Autonomous multi-point navigation state machine (transit, hold, RTH, landing)
- GPS Rescue — Wind-aware and battery-aware return-to-home via EKF or raw GPS fallback
Sensor Fusion & Filtering:
- Mahony AHRS — Complementary filter with gyro + accelerometer fusion for attitude estimation
- 256-point FFT — Fixed-point radix-2 with peak detection for dynamic notch frequency identification
- Dynamic notch — FFT-based and RPM-based, auto-tracking motor noise harmonics
- Configurable filter chain — PT1, biquad lowpass, biquad notch, per-axis configuration
- 15 configuration tabs — Setup, Firmware Flasher, PID, Rates, Receiver, Motors, Gyro/Filters, OSD, VTX, GPS, Blackbox, CLI, ESC/CoreDrive, Auto-Tune, Debug
- Frequency-domain auto-tune — Load blackbox logs, system identification via Welch's method, Bode plot visualization, automatic PID gain design for target bandwidth/phase margin
- Live debug telemetry — 20Hz real-time streaming of gyro, PID output, motors, attitude, CPU load, battery, RSSI, and 4 debug channels with SVG time-series charts and scrolling log console
- ESC/CoreDrive FOC tab — Per-motor detection, D/Q-axis PID tuning, motor model parameters, protection thresholds, startup sequence editor
- Built-in firmware flasher — AN3155 UART bootloader protocol with chip auto-detection, automatic config backup before flash
- Config profiles — Save/load/compare full FC + ESC configurations via Aegis-DB
- Toast notification system — Real-time feedback on saves, errors, and warnings across all tabs
- Cross-platform — Windows (NSIS installer) and Linux (.deb, .rpm, .AppImage)
- Light and dark themes — Cream/teal/copper light theme (default) with dark toggle, persisted to DB
- Built with Tauri 2 — React 19 + TypeScript + Vite frontend, Rust backend, native performance
no_stdcompatible — Runs on bare metal, WASM, or desktop- 551 unit tests — Comprehensive coverage across 36 modules
- Modular — Use only the algorithms you need (PID, ADRC, Kalman, AHRS, EKF, filters, RC, MSP, mixer, etc.)
- Benchmarked — Sub-10ns PID loop, ~1.8us FFT, ~54ns CRSF parse (Criterion benchmarks)
serdefeature flag — Optional serialization support for Tauri/WASM reuse#[repr(C)]config — Deterministic memory layout with CRC32 integrity for direct flash serialization
NexusFlight supports 27 flight controller boards across 6 MCU families:
| MCU Family | Clock | Boards | Status |
|---|---|---|---|
| STM32F405 | 168 MHz | SpeedyBee F405 V3/V4/Mini/AIO/Wing, Happymodel SuperF405, Flywoo F405S AIO, GEPRC F405, Matek F405 Wing V2 | Stable |
| STM32F411 | 100 MHz | BetaFPV F411, HDZero AIO5, Happymodel CrazyBee F4 DX | Stable |
| STM32F722 | 216 MHz | Flywoo F722 Pro V2, GEPRC F722 AIO | Stable |
| STM32G473 | 170 MHz | CrazyBee G473, BetaFPV G473, GEPRC Taker G473, HDZero Gamma 45A, HDZero AIO15 | Stable |
| STM32H743 | 480 MHz | HDZero Halo, GEPRC Taker H743, Sequre H7 V1/V2, Matek H743, T-Motor Pacer H743, iFlight Blitz H7 Pro | Stable |
| AT32F435 | 288 MHz | iFlight Blitz F4 F435 | Beta |
See docs/SUPPORTED_HARDWARE.md for the full board list with pinouts and features.
| Frame | Motors | Recommended MCU | Gyro |
|---|---|---|---|
| 65mm whoop | 4 | F411 | BMI270 |
| 75mm whoop | 4 | F411 | BMI270 |
| 5" freestyle/racing | 4 | F405/F722/G473 | ICM-42688-P |
| 5" HD (digital VTX) | 4 | G473/H743 | ICM-42688-P |
| 7-8" long range | 4 | F405/F745/H743 | ICM-42688-P |
Download the installer for your platform from the Releases page, or use the direct links above.
Plug in your FC via USB. NexusGround will auto-detect the board, MCU, and current firmware version.
Use the Firmware tab in NexusGround:
- Select your board (auto-detected or manual)
- Click Build from Source or browse a pre-built
.bin - Click Backup Config & Prepare Flash
- Enter bootloader mode (hold BOOT + plug USB)
- Click Detect & Flash
Use the configurator tabs to tune PIDs, set rates, configure your receiver, OSD, VTX, and GPS modes. Open the ESC/CoreDrive tab to tune FOC parameters, set protection thresholds, and configure motor startup. Use the Auto-Tune tab to analyze blackbox logs and compute optimal PID gains. Monitor everything in real-time with the Debug tab.
See docs/GETTING_STARTED.md for a detailed walkthrough.
NexusFlight Suite
│
├── NexusFlight (FC Firmware) ............... v0.3.2
│ ├── nexus-core ........... Flight algorithms: PID, ADRC, Kalman, AHRS, EKF,
│ │ filters, FFT, mixer, MSP, GPS, OSD, VTX, blackbox,
│ │ navigation, waypoints, 36 modules, 458 tests
│ ├── nexus-hal ............ Hardware abstraction traits (gyro, motor, RC, serial,
│ │ storage, ADC, watchdog, beeper, LED strip, servo)
│ ├── nexus-drivers ........ Device drivers: BMI270, ICM-42688-P, MAX7456, CRSF,
│ │ SBUS, DShot, u-blox GPS, SPI flash, VTX, 84 tests
│ ├── nexus-board .......... Board definitions and pin mappings (27 boards)
│ └── targets/ ............. MCU-specific entry points
│ ├── stm32f4 .......... STM32F405 / F411 (Cortex-M4F)
│ ├── stm32f7 .......... STM32F745 / F722 (Cortex-M7F)
│ ├── stm32g4 .......... STM32G473 / G431 (Cortex-M4F, DMAMUX)
│ ├── stm32h7 .......... STM32H743 / H723 (Cortex-M7F, 480 MHz)
│ └── sitl ............. Software-In-The-Loop (host testing, 7 tests)
│
├── CoreDrive (FOC ESC Firmware) ............ v0.3.1, 366 tests
│ ├── coredrive-core ....... FOC engine (Clarke/Park/SVPWM), D-Q PI controllers,
│ │ six-step commutation, sensorless SMO observer,
│ │ startup FSM, protection, telemetry, autotune,
│ │ Q15 fixed-point math, config serialization — 206 tests
│ ├── coredrive-dshot ...... DShot 150/300/600 + bidirectional EDT telemetry — 37 tests
│ ├── coredrive-hal ........ Hardware abstraction traits (ADC, PWM, GPIO, flash, serial)
│ ├── coredrive-board ...... 245 ESC board configs across 7 MCU families — 39 tests
│ ├── coredrive-passthrough 4-way passthrough protocol (CRC-16/XMODEM) — 23 tests
│ ├── coredrive-bootloader . AM32-compatible bootloader protocol — 20 tests
│ ├── coredrive-flasher .... PC-side firmware flasher (std, serialport) — 29 tests
│ └── targets/ ............. 4 MCU targets + 4 bootloaders
│ ├── stm32g0 .......... STM32G071 (Cortex-M0+, 64 MHz, FOC + six-step)
│ ├── at32f4 ........... AT32F421 (Cortex-M4, 120 MHz, FOC)
│ ├── stm32f0 .......... STM32F051 (Cortex-M0, 48 MHz, six-step)
│ └── gd32e2 ........... GD32E230 (Cortex-M23, 72 MHz, six-step)
│
├── NexusGround (Configurator) .............. v0.3.2
│ ├── src/ ................. React 19 + TypeScript + Vite (15 tabs)
│ ├── src-tauri/ ........... Rust backend: MSP bridge, serial, flasher, ESC passthrough,
│ │ auto-tune (FFT system ID), board DB, Aegis-DB client
│ └── 917 tests ............ 551 NexusFlight/NexusCore + 366 CoreDrive across all crates
│
└── Aegis-DB ................. Configuration database (FC + ESC backup/restore/profiles)
Hot-path benchmarks (Criterion, Cortex-M7 equivalent):
| Operation | Time |
|---|---|
| Full 3-axis PID loop + mixer + filters | ~9 ns |
| Single-axis PID (P+I+D+FF) | ~3 ns |
| 256-point FFT | ~1.8 us |
| Gyro filter chain (LP + notch + D-LP) | ~3.5 ns |
| CRSF RC frame parse | ~54 ns |
| DShot frame encode (per motor) | ~1.1 ns |
| MSP frame parse | ~73 ns |
The NexusFlight source code is maintained in private repositories during pre-1.0 development. We welcome contributors, hardware partners, and community members who want to get involved.
Open-sourcing NexusCore: We are working toward open-sourcing the nexus-core algorithms crate (PID, ADRC, Kalman, AHRS, EKF, filters, mixer — the pure math with no hardware deps) so the underlying implementations can be independently reviewed. This is planned for the v1.0 release.
To request early access:
- Visit NexusFlight.AutomataNexus.com and reach out via the contact form
- Email us at devops@automatanexus.com with:
- Your GitHub username
- What you'd like to contribute (firmware, FOC/ESC, drivers, ground station, docs, testing)
- Your experience with flight controllers, motor control, or embedded Rust
- Open an Issue in this repo using the "Source Access Request" template
We typically respond within 48 hours.
- Website: NexusFlight.AutomataNexus.com
- Email: devops@automatanexus.com
- Issues & Requests: GitHub Issues
NexusFlight Suite is licensed under the GNU General Public License v3.0. See LICENSE for details.
Commercial licensing is available — contact us at NexusFlight.AutomataNexus.com.
Built with Rust. Built for flight. The only FC suite with integrated FOC.
NexusFlight.AutomataNexus.com
