Releases: betaflight/betaflight
Releases · betaflight/betaflight
Release list
2026.6.2
2026.6.1
What's Changed
Features
- OSD: Custom text received from serial to be displayed by @blckmn in #14895
- Add switchable battery profiles by @jury89 in #14965
- Include AssistNow Autonomous into GPS features by @stsypanov in #14987
- Add individual servo channel forwarding support and run servo mixer for default frame types by @blckmn in #15013
- Upixel UP-T1-001-Plus support and optical flow position hold by @SteveCEvans in #14922
- Add flight plan PG configuration, CLI waypoint commands, and AUTOPILOT mode by @blckmn in #15030
- feat: add CAN peripheral support for STM32G4, STM32H7 and STM32C593 (ENABLE_CAN) by @blckmn in #15115
- Nav autopilot by @SteveCEvans in #15026
- feat: DroneCAN protocol stack (NodeStatus + GetNodeInfo) by @blckmn in #15137
- SITL: gate bridge-specific transforms on SITL_BRIDGE_GAZEBO by @blckmn in #15158
- feat: DroneCAN GNSS Fix2 provider (drives gpsSol) by @blckmn in #15143
- feat: STM32N6570-DK bring-up — LTDC backend, SSD1306 backend, dump cmd by @blckmn in #15153
- AUTOPILOT: Step one, Flight plan guidance implementation by @blckmn in #14923
- telemetry/mavlink: add HOME_POSITION/SYSTEM_TIME/STATUSTEXT TX by @blckmn in #15213
- STM32N6 platform support by @blckmn in #15214
- telemetry/mavlink: vehicle-setup unlock + custom_mode discovery by @blckmn in #15220
- Add ap_stop_threshold setting and improve braking performance by @SteveCEvans in #15150
- telemetry/mavlink: MISSION protocol upload/download by @blckmn in #15224
- The MAVLink packets rates change by using Ground Control Station by @demvlad in #15291
- Autopilot: injected runtime plans, geofence RTH return mission, LAND loiter by @blckmn in #15409
- Autopilot: rescue as a synthesised mission, TAKEOFF and hold patterns, SITL fidelity by @blckmn in #15413
- SITL harness: per-run session id in the telemetry stream by @blckmn in #15417
- Autopilot: OSD waypoint elements, CLI mission status, MAVLink SET_CURRENT by @blckmn in #15416
- The MAVLink serial RX provider is connected to telemetry incomming message handler by @demvlad in #15374
- DroneCAN ESC: RawCommand output, Status telemetry, dynamic node-ID allocation by @blckmn in #15350
- Autopilot: position-hold stick feedforward split from damping, braking state machine by @blckmn in #15435
- Autopilot: in-flight waypoint capture on a switch by @morrob955 in #15445
- OSD: flight-plan navigation minimap element by @morrob955 in #15447
- Unify autopilot position control on a velocity primitive; fly GPS rescue as a flight-plan mission by @blckmn in #15485
Improvements
- PICO use timeUs_t return types for time functions. by @mjs1441 in #14817
- Quick fix for issuix for issue 14819 by @PD45-46 in #14843
- Change displayed precision of max current of the post-flight statistics to float by @qubicllj in #14853
- delete file PICO/dshot.pio.programs by @qqqlab in #14863
- CLEANUP: make clean CONFIG=X by @blckmn in #14830
- REFACTOR: Camera Control in preparation for RP2350 implementation by @blckmn in #14856
- PICO: Use memfunctions.S from rp2040 bootrom source for memset, memcpy. by @mjs1441 in #14876
- PICO: Remove startup .S file (not in use). by @mjs1441 in #14886
- Report sensor hardware names per sensor type by @haslinghuis in #14892
- Add ACCGYRO_LSM6DSK320X by @haslinghuis in #14891
- Add MSP support for Attitude quaternions by @Robolightning in #14761
- Refactor release workflow to streamline artifact handling by @blckmn in #14910
- PICO: bidirectional DShot telemetry with edge detection by @andyp1per in #14887
- Add Nooploop TOFSense rangefinder family support by @ArturPelicho in #14896
- Add support for ICM42622P by @haslinghuis in #14918
- Add DEFAULT_BEEPER_OFF_FLAGS for reset of beeper_off_flags. by @mjs1441 in #14809
- Strengthen MSP/CRSF Packet Validation by @VoodooChild99 in #14842
- CRSF AHRS Support by @andyp1per in #14870
- Adding Simplifed Master Slider to Adjustments by @spatzengr in #14371
- MSP-adjCenter_adjScale by @spatzengr in #14920
- feat(driver): add MMC5603 magnetometer driver by @gintaris in #14924
- SITL: add -z,noexecstack linker flag to suppress RWX segment warning by @blckmn in #14938
- Feature/bmp580 barometer by @gintaris in #14925
- Flash/MT29F - First cut of support for the MT29F1G01ABAFDWB-IT:F flash chips (1Gb NAND) by @hydra in #14828
- SPI ExpressLRS 4.0 support by @CapnBry in #14932
- Move SCHEDULER_RELAX_RX/OSD STM32F411xE override from src/main to src/platform with fallback defaults by @blckmn in #14958
- Move GPIO_TypeDef and IO_GPIO out of common drivers into platform-specific headers to decouple IO implementation from hardware details by @blckmn in #14962
- CLI: Adding "options" for outputting the msp_build_info equivalent in the CLI by @blckmn in #14951
- Remove unused EXTITrigger_TypeDef mock definitions from SITL target and unit test platform headers by @blckmn in #14963
- faster cos and sin method by @Quick-Flash in #14790
- Move SmartAudio UART bidir push-pull prepend logic from MCU ifdef to UART_TRAIT_BIDIR_PP_PREPEND platform trait by @blckmn in #14956
- MSP: validate servo mixer targetChannel and inputSource bounds in MSP_SET_SERVO_MIX_RULE by @blckmn in #14952
- Add support for GigaDevice GD25Q16E and Zetta ZD25WQ32CE flash memories by @jwoloch in #14970
- BLACKBOX: log GPS epoch timestamp in H-frame and msToW in G-frame by @blckmn in #14950
- Sensors: Add initial support for ICM42686P by @haslinghuis in #14941
- SITL: Add ability to specify a command line argument and load a text file for writing config. by @blckmn in #14935
- Move timer functions to accept timerHardware_t*, rename platform-specific abbreviations, and relocate platform-only declarations to platform/timer.h by @blckmn in #14967
- flash_m25p16: Add support for GD25Q128 flash chip by @HGLRC-T in #14983
- Refactor DMA driver to abstract platform-specific types and functions behind a hardware-agnostic API by @blckmn in #14990
- Consolidate ENABLE_SDIO_INIT definitions in platform.h with explicit per-MCU family settings by @blckmn in #14991
- Move NVIC priority utility macros from nvic.h to per-platform platform.h headers by @blckmn in #14996
- Move platform-specific Bit_RESET definition from serial_4way to platform headers as GPIO_PIN_RESET by @blckmn in #14997
- Move expressLrsTimerEnableIRQs to platform common to remove USE_HAL_DRIVER from src/main by @blckmn in #14998
- Replace F7 platform guard for SERIAL_CHECK_TX with ENABLE_SERIAL_SKIP_CHECK_TX macro by @blckmn in #15001
- Refactor transponder IR DMA buffer type to uint32_t to remove platform dependency by @blckmn in #14995
- Replace STM32H7 p...
2026.6.0-rc3
What's Changed
Features
- Autopilot: injected runtime plans, geofence RTH return mission, LAND loiter by @blckmn in #15409
- Autopilot: rescue as a synthesised mission, TAKEOFF and hold patterns, SITL fidelity by @blckmn in #15413
- SITL harness: per-run session id in the telemetry stream by @blckmn in #15417
- Autopilot: OSD waypoint elements, CLI mission status, MAVLink SET_CURRENT by @blckmn in #15416
- The MAVLink serial RX provider is connected to telemetry incomming message handler by @demvlad in #15374
- DroneCAN ESC: RawCommand output, Status telemetry, dynamic node-ID allocation by @blckmn in #15350
- Autopilot: position-hold stick feedforward split from damping, braking state machine by @blckmn in #15435
- Autopilot: in-flight waypoint capture on a switch by @morrob955 in #15445
- OSD: flight-plan navigation minimap element by @morrob955 in #15447
Improvements
- Autopilot: nav velocity mode with drag feedforward by @blckmn in #15410
- flash_w25n: Add support for MX35LF2GE4AD flash chip by @RunnyCow in #15008
- perf(STM32H5): enable instruction cache by @haslinghuis in #15421
- cli: show live GPS detail in status output by @blckmn in #15450
- Autopilot: cross waypoint gates at corner speed - chase-lag braking, carrot measurement filtering, governor hysteresis by @morrob955 in #15453
- Autopilot: don't fail position hold on a single bad GPS fix by @morrob955 in #15454
- perf(STM32C5): enable instruction cache by @haslinghuis in #15434
Fixes
- Fix H7 FDCAN bring-up: kernel clock query and transceiver silent pin by @blckmn in #15429
- STM32H5: ADC circular GPDMA so battery/current track live values by @haslinghuis in #15419
- RTC is not set from GPS time using UBLOX M10 by @stsypanov in #15394
- STM32H5/N6: drive WS2811 LED strip correctly on GPDMA by @haslinghuis in #15438
- PICO: Allow non-inverted BEC enable on GPIOs, add missing dma include by @mjs1441 in #15444
- STM32: align MPU regions to actual size by @morrob955 in #15441
- fix(cli): don't dereference NULL sensor hardware names by @haslinghuis in #15456
- optimize at32f43x vbat and current more accurate when punch throttle by @shanggl in #15418
New Contributors
- @RunnyCow made their first contribution in #15008
- @morrob955 made their first contribution in #15445
- @shanggl made their first contribution in #15418
Full Changelog: 2026.6.0-rc2...2026.6.0-rc3
2026.6.0-rc2
What's Changed
Improvements
- fix(sitl): harden Gazebo gyro yaw sign against silent regression (follow-up to #15354) by @haslinghuis in #15355
- add support for FMSH FM25Q series (64Mb, 128Mb, 256Mb) SPI Flash by @ReganLai-Fudan in #15292
- Autopilot: flight plan safety — rx-loss policy, sanity checks, geofence, arming gate by @blckmn in #15408
Fixes
- fix(h5): use correct system bootloader address for software DFU entry by @haslinghuis in #15369
- serial: +++ escape to exit passthrough on DTR-less links by @dmboyd in #15357
- Position hold small improvements by @ctzsnooze in #15366
- Display battery usage estimation in OSD when battery capacity is set to 0 by @michaeldebacker in #15038
- msp: bound stream reads against payload length to prevent OOB reads by @blckmn in #15379
- Fix start frame detection for fast refresh (1 mS between frames) by @Grinzzz in #14322
- fix(dshot): guard spurious pullup edge in decodeTelemetryPacket by @nerdCopter in #15343
- fix(x32m7b): fix spi and sdmmc by @Romin0615 in #15371
- fix(vtx): apply all active VTX activation conditions (#15362) by @haslinghuis in #15363
- docs: accgyro_spi_icm20689.c 8Mhz comment correction by @nerdCopter in #15365
- fix(filter): correct fq comment in svfNotchFilter_t by @nerdCopter in #15300
- fix(barometer): replace VLA with fixed array in dps310 coefficient read by @nerdCopter in #15266
- Fix CRSF frame length validation by @Symmetricity in #15254
- Set d_max_advance default to 0 to match configurator guidance by @ChrisRosser in #15221
- FIX: BEEPER_USB suppression when battery present and configurator active by @haslinghuis in #14976
- GPS Rescue2026_6a by @ctzsnooze in #15382
- fix: the request parser writes data into a fixed-siz... in rcdevice.c by @orbisai0security in #15389
- fix(flashfs): avoid blocking MSP during NOR chip erase by @kedeng in #15273
- fix(crsf): rate-limit crsfTelemetryUpdateCheck to prevent scheduler starvation by @nerdCopter in #15358
- rx: detect sbus frame boundary via interbyte timeout by @blckmn in #15388
- Fix inverted timeout condition in W25Q128FV write-enable poll by @nerdCopter in #15396
- bus_quadspi_hal: capture HAL status in quadSpiSequence() by @nerdCopter in #15397
- flash_w25n: remove dead/buggy BBLUT read/write code by @nerdCopter in #15398
- fix: prevent spurious blackbox erase before RX link by @nerdCopter in #15404
- STM32C5: correct timer AF tables and complete timer coverage by @blckmn in #15405
Targets
- STM32H5: enable UART2-8 on H562/H563 and fix UART open hard fault by @haslinghuis in #15367
- feat(h5): enable LED_STRIP and remaining peripherals, drop VIRTUAL_GYRO by @haslinghuis in #15368
New Contributors
- @dmboyd made their first contribution in #15357
- @ReganLai-Fudan made their first contribution in #15292
- @Grinzzz made their first contribution in #14322
- @orbisai0security made their first contribution in #15389
- @somethingjustlike made their first contribution in #15310
- @marcusamery made their first contribution in #15395
Full Changelog: 2026.6.0-rc1...2026.6.0-rc2
2025.12.5
What's Changed
Fixes
- [2025.12] fix(uart): clear ORE when RXNEIE is enabled in HAL uartIrqHandler (fixes #15317, #15306) by @tracycam in #15325
- [2025.12] fix(msp): cancel pendingRequest on '$' only, restoring per-byte lastActivityMs by @nerdCopter in #15324
Full Changelog: 2025.12.4...2025.12.5
4.5.5
What's Changed
Fixes
- [4.5] fix(msp): cancel pendingRequest on '$' only, restoring per-byte lastActivityMs by @nerdCopter in #15330
Full Changelog: 4.5.4...4.5.5
2026.6.0-rc1
Release Notes
Betaflight 2025.6.0-rc1 brings a massive range of new features, improvements, fixes, and new hardware support. For comprehensive release nots please see: https://betaflight.com/docs/wiki/release/Betaflight-2026-6-Release-Notes
Please use the online pre-release version of the Betaflight App for configuring this release. It can be found here: https://master.app.betaflight.com
What's Changed
Features
- OSD: Custom text received from serial to be displayed by @blckmn in #14895
- Add switchable battery profiles by @jury89 in #14965
- Include AssistNow Autonomous into GPS features by @stsypanov in #14987
- Add individual servo channel forwarding support and run servo mixer for default frame types by @blckmn in #15013
- Upixel UP-T1-001-Plus support and optical flow position hold by @SteveCEvans in #14922
- Add flight plan PG configuration, CLI waypoint commands, and AUTOPILOT mode by @blckmn in #15030
- feat: add CAN peripheral support for STM32G4, STM32H7 and STM32C593 (ENABLE_CAN) by @blckmn in #15115
- Nav autopilot by @SteveCEvans in #15026
- feat: DroneCAN protocol stack (NodeStatus + GetNodeInfo) by @blckmn in #15137
- SITL: gate bridge-specific transforms on SITL_BRIDGE_GAZEBO by @blckmn in #15158
- feat: DroneCAN GNSS Fix2 provider (drives gpsSol) by @blckmn in #15143
- feat: STM32N6570-DK bring-up — LTDC backend, SSD1306 backend, dump cmd by @blckmn in #15153
- AUTOPILOT: Step one, Flight plan guidance implementation by @blckmn in #14923
- telemetry/mavlink: add HOME_POSITION/SYSTEM_TIME/STATUSTEXT TX by @blckmn in #15213
- STM32N6 platform support by @blckmn in #15214
- telemetry/mavlink: vehicle-setup unlock + custom_mode discovery by @blckmn in #15220
- Add ap_stop_threshold setting and improve braking performance by @SteveCEvans in #15150
- telemetry/mavlink: MISSION protocol upload/download by @blckmn in #15224
- The MAVLink packets rates change by using Ground Control Station by @demvlad in #15291
Improvements
- PICO use timeUs_t return types for time functions. by @mjs1441 in #14817
- Quick fix for issuix for issue 14819 by @PD45-46 in #14843
- Change displayed precision of max current of the post-flight statistics to float by @qubicllj in #14853
- delete file PICO/dshot.pio.programs by @qqqlab in #14863
- CLEANUP: make clean CONFIG=X by @blckmn in #14830
- REFACTOR: Camera Control in preparation for RP2350 implementation by @blckmn in #14856
- PICO: Use memfunctions.S from rp2040 bootrom source for memset, memcpy. by @mjs1441 in #14876
- PICO: Remove startup .S file (not in use). by @mjs1441 in #14886
- Report sensor hardware names per sensor type by @haslinghuis in #14892
- Add ACCGYRO_LSM6DSK320X by @haslinghuis in #14891
- Add MSP support for Attitude quaternions by @Robolightning in #14761
- Refactor release workflow to streamline artifact handling by @blckmn in #14910
- PICO: bidirectional DShot telemetry with edge detection by @andyp1per in #14887
- Add Nooploop TOFSense rangefinder family support by @ArturPelicho in #14896
- Add support for ICM42622P by @haslinghuis in #14918
- Add DEFAULT_BEEPER_OFF_FLAGS for reset of beeper_off_flags. by @mjs1441 in #14809
- Strengthen MSP/CRSF Packet Validation by @VoodooChild99 in #14842
- CRSF AHRS Support by @andyp1per in #14870
- Adding Simplifed Master Slider to Adjustments by @spatzengr in #14371
- MSP-adjCenter_adjScale by @spatzengr in #14920
- feat(driver): add MMC5603 magnetometer driver by @gintaris in #14924
- SITL: add -z,noexecstack linker flag to suppress RWX segment warning by @blckmn in #14938
- Feature/bmp580 barometer by @gintaris in #14925
- Flash/MT29F - First cut of support for the MT29F1G01ABAFDWB-IT:F flash chips (1Gb NAND) by @hydra in #14828
- SPI ExpressLRS 4.0 support by @CapnBry in #14932
- Move SCHEDULER_RELAX_RX/OSD STM32F411xE override from src/main to src/platform with fallback defaults by @blckmn in #14958
- Move GPIO_TypeDef and IO_GPIO out of common drivers into platform-specific headers to decouple IO implementation from hardware details by @blckmn in #14962
- CLI: Adding "options" for outputting the msp_build_info equivalent in the CLI by @blckmn in #14951
- Remove unused EXTITrigger_TypeDef mock definitions from SITL target and unit test platform headers by @blckmn in #14963
- faster cos and sin method by @Quick-Flash in #14790
- Move SmartAudio UART bidir push-pull prepend logic from MCU ifdef to UART_TRAIT_BIDIR_PP_PREPEND platform trait by @blckmn in #14956
- MSP: validate servo mixer targetChannel and inputSource bounds in MSP_SET_SERVO_MIX_RULE by @blckmn in #14952
- Add support for GigaDevice GD25Q16E and Zetta ZD25WQ32CE flash memories by @jwoloch in #14970
- BLACKBOX: log GPS epoch timestamp in H-frame and msToW in G-frame by @blckmn in #14950
- Sensors: Add initial support for ICM42686P by @haslinghuis in #14941
- SITL: Add ability to specify a command line argument and load a text file for writing config. by @blckmn in #14935
- Move timer functions to accept timerHardware_t*, rename platform-specific abbreviations, and relocate platform-only declarations to platform/timer.h by @blckmn in #14967
- flash_m25p16: Add support for GD25Q128 flash chip by @HGLRC-T in #14983
- Refactor DMA driver to abstract platform-specific types and functions behind a hardware-agnostic API by @blckmn in #14990
- Consolidate ENABLE_SDIO_INIT definitions in platform.h with explicit per-MCU family settings by @blckmn in #14991
- Move NVIC priority utility macros from nvic.h to per-platform platform.h headers by @blckmn in #14996
- Move platform-specific Bit_RESET definition from serial_4way to platform headers as GPIO_PIN_RESET by @blckmn in #14997
- Move expressLrsTimerEnableIRQs to platform common to remove USE_HAL_DRIVER from src/main by @blckmn in #14998
- Replace F7 platform guard for SERIAL_CHECK_TX with ENABLE_SERIAL_SKIP_CHECK_TX macro by @blckmn in #15001
- Refactor transponder IR DMA buffer type to uint32_t to remove platform dependency by @blckmn in #14995
- Replace STM32H7 preprocessor checks in asyncfatfs with ENABLE_AFATFS_DMA_CACHE feature flag by @blckmn in #14994
- Move platform-specific MSC/SDIO type abstractions and DMA init from src/main/msc to src/platform headers and common source by @blckmn in #14993
- Move overclock frequency options from chip-specific ifdefs in settings.c to ENABLE_OVERCLOCK_XXX_MHZ defines in platform headers by @blckmn in #14999
- Move hardware-specific OctoSPI/QuadSPI definitions and GPIO config from src/main headers to platform files by @blckmn in #14992
- Deprecate gyro_hardware and introduce cli sensor_hardware command by @haslinghuis in #15009
- Replace recursive submodule checkout with on-demand SDK hydration and selective per-platform...
2025.12.4
What's Changed
Fixes
- [2025.12] Backport CLI MSP race-condition fix (#15193) by @blckmn in #15201
- [backport] fix(config): unconditionally clamp failsafe_procedure to valid range by @nerdCopter in #15191
- [backport] fix(uart): guard half-duplex pinless UART modes (#15218) by @haslinghuis in #15258
Full Changelog: 2025.12.2...2025.12.4
4.5.4
What's Changed
Fixes
- [4.5.4] Backport CLI MSP race-condition fix (#15193) by @blckmn in #15200
- [backport] fix(config): unconditionally clamp failsafe_procedure to valid range by @nerdCopter in #15190
Full Changelog: 4.5.3...4.5.4
2025.12.2
Target updates for:
- AIRBOTG4AIO
- AXISFLYINGH743PRO
- BETAFPVG473_V2
- RADIOLINKF722
- BLADEF4
- BRAHMA_F405
- CADDX_PROTOS_F4
- JHEH743PRO
- DREAMWORKSH743
- GEPRCF722_BT_HD
- GEPRC_TAKER_F405AIO
- GEPRC_TAKER_H743MINI
- RADIOLINKF722
- HGLRC_F405_S
- HOBBYWING_XROTORF7CONV
- HOBBYWING_XROTORF7CONV
- HOBBYWING_XROTORF7CONV2
- JHEH743PRO
- MADFLIGHT_FC3
- RADIOLINKF405
- RADIOLINKF722
- RMNOVAH7
- RADIOLINKF722
- SIMPLIFLYF405
- TAKERG4AIO
Full Changelog: 2025.12.1...2025.12.2