github betaflight/betaflight 2026.6.0-rc1

pre-release5 hours ago

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 caching in CI by @blckmn in #15021
  • Improve handling of GPS messages by @stsypanov in #15020
  • Replace SIMULATOR_BUILD with ENABLE_SIMULATOR flags in src/main and add platform stubs to eliminate simulator ifdefs from init.c by @blckmn in #15017
  • Replace void* and MCU-specific TypeDef pointers with opaque resource types in driver interfaces by @blckmn in #15033
  • Remove airmode lpf by @Quick-Flash in #15029
  • Migrate UART from HAL to LL, eliminating HAL handle dependencies by @blckmn in #15035
  • Migrate STM32 I2C from HAL to LL with register-level state machine by @blckmn in #15037
  • STM32H5: convert lib/main/STM32H5 to STM32CubeH5 submodule (v1.6.0) by @blckmn in #15054
  • GPS: reorder UBLOX procession to have NAV_PVT and NAV_SAT messages first by @stsypanov in #15044
  • Add MSP2_CLI_SETTING (0x300E) command for getting and setting CLI settings over MSP by @blckmn in #14972
  • Guard escSensorPassthrough with USE_PWM_OUTPUT in CLI serialpassthrough by @blckmn in #15067
  • Fix SDK hydration race condition in parallel builds by @blckmn in #15083
  • feat: add support for Macronix MX25L12845G flash by @oskarsselis in #15065
  • Expand chirp debug channels for offline system identification by @blckmn in #15113
  • Remove STM32 MCU-family ifdefs from src/main by @blckmn in #15122
  • Update mt29f flash support by @hydra in #15134
  • Add by25 q128 es memory ic support by @MatviiG in #15042
  • Expose transponder provider and data via CLI by @blckmn in #15126
  • SITL: Gazebo Harmonic model fixes and UDP RX path by @blckmn in #15140
  • Add CLI 'env' command; drop compiled-in MCU type ID by @blckmn in #15139
  • feat: LCD console subsystem for runtime debug output by @blckmn in #15148
  • PICO: gyro_clkin platform abstraction so RP2350 can use USE_GYRO_CLKIN by @blckmn in #15162
  • Add support for the BOYAMICRO BY25Q64 flash. by @LYNHQQ in #15025
  • Speed up serial GPS message decoding by @stsypanov in #15129
  • MSP: Expose additional rpm fields by @haslinghuis in #15144
  • usb: derive product name from BOARD_NAME when a config is built by @blckmn in #15182
  • GPS: replace full a calendar to epoch round trip with a direct field copy by @stsypanov in #15184
  • drivers/flash: OctoSPI multichip support + MX66UW1G45G driver by @blckmn in #15199
  • telemetry/mavlink: add RX dispatch and handshake responders by @blckmn in #15211
  • GPS: add fast-path for UBX_PARSE_PAYLOAD_CONTENT state by @stsypanov in #15183
  • test: compute CRSF CRC at runtime in ELRS MSP version test by @ChrisRosser in #15204
  • feat(flash): add support for XTX XT25F128F by @gaoyu2144287 in #15219
  • ComputeLedStripColorByVtxFreq by @ctzsnooze in #15135
  • refactor: make ELRS V3 default, require USE_ELRSV4 for V4 by @haslinghuis in #15232
  • Move submodules from lib/main to lib/modules by @blckmn in #15241
  • chore: remove dead code in #if 0 blocks by @haslinghuis in #15237
  • Improve the speed of scaleRangef by @Quick-Flash in #15048
  • AT32: add gyro_clkin platform implementation by @blckmn in #15251
  • PICO: Simplify pico_trace by @mjs1441 in #15263
  • Replace Biquad with SVF by @Quick-Flash in #15056
  • Task stats improvements for state-based tasks by @mjs1441 in #15276
  • Share common/stm32 source list across STM32-style families by @blckmn in #15307
  • Apply serialRxBytesWaiting-related optimization to /src/main/telemetry by @stsypanov in #15305
  • refactor(axis): sign-bearing earth-frame axis enums (ENU/NWU/EF) across IMU & navigation by @haslinghuis in #15346

Fixes

Targets

  • Enable important features for RP2350B by @andyp1per in #14875
  • Update mk/config.mk to allow include of board-specific config.mk by @mjs1441 in #14810
  • Add STM32N6 HAL/LL drivers and USB device library by @blckmn in #15000
  • STM32N6: move vendor HAL to STM32CubeN6 submodule (v1.3.0) by @blckmn in #15011
  • Add ESP32-S3 platform scaffold with stub drivers, build system integration, and split platform-specific tools into platform mk directories by @blckmn in #15016
  • STM32H5: add SPI bus support with GPDMA infrastructure by @blckmn in #15063
  • Add ESP32 interrupt infrastructure, harden UART driver, and fix opaque resource types by @blckmn in #15064
  • STM32H5: add UART driver support with CLI enabled by @blckmn in #15068
  • Add GDMA-backed SPI DMA transfers for ESP32-S3 by @blckmn in #15069
  • Update APM32F4 and USB libraries by @LuckkMaker in #15098
  • PICO: Initial commit for framebuffer OSD displayport device (FB_OSD) with RP2350 implementation. by @mjs1441 in #14882
  • Add apm32f425/427 support by @LuckkMaker in #15138
  • add gd32h7xx firmware library support by @jianpingwu1 in #14985
  • STM32C5: add STM32C562 platform support (NUCLEO-C562RE bring-up) by @blckmn in #15172
  • STM32C5: source SYSCLK from HSE via PSI (with HSI fallback) by @blckmn in #15177
  • Add STM32H757 dual-core MCU support by @andyp1per in #15234
  • STM32N6: working CONFIG_IN_MEMORY_MAPPED_FLASH on OPENN657V1 by @blckmn in #15246
  • Add xcore32m7 platform support by @LYNHQQ in #15169
  • STM32N6 OBL + BF NS bring-up: USB VCP enumerates, CLI responsive by @blckmn in #15257
  • STM32C5: enable SPI DMA on the STM32C562 target by @blckmn in #15322
  • STM32C5: config partition at end of flash; C591 UART pins by @blckmn in #15335

New Contributors

Full Changelog: 2025.12.4...2026.6.0-rc1

Don't miss a new betaflight release

NewReleases is sending notifications on new releases.