2026.6.1
ruvnet/auto-browser2026.6.1Aug 2, 2026by blckmn
AI Summary
This release introduces extensive Autopilot capabilities, including flight plan navigation and DroneCAN protocol support, alongside new hardware support for STM32N6 and various sensor integrations. It also includes significant refactoring for the PICO platform and MAVLink telemetry enhancements.
Key Highlights
- Autopilot mode with flight plan guidance and navigation minimap
- STM32N6 platform support and CAN peripheral support for STM32G4/H7
- DroneCAN protocol stack (NodeStatus, GNSS Fix2, ESC telemetry)
- MAVLink MISSION protocol upload/download and vehicle-setup unlock
- Sensor support for ICM42622P, LSM6DSK320X, and MMC5603 magnetometer
New Features
- OSD custom text display from serial
- Switchable battery profiles
- Individual servo channel forwarding
- Flight plan PG configuration and AUTOPILOT mode
- Upixel UP-T1-001-Plus support and optical flow position hold
- DroneCAN protocol stack (NodeStatus + GetNodeInfo)
- DroneCAN GNSS Fix2 provider
- MAVLink HOME_POSITION/SYSTEM_TIME/STATUSTEXT TX
- MAVLink MISSION protocol upload/download
- DroneCAN ESC RawCommand output and Status telemetry
- Autopilot injected runtime plans and geofence RTH
- Position-hold stick feedforward and braking state machine
- OSD flight-plan navigation minimap element
Full Release Notes
<!-- Release notes generated using configuration in .github/release.yml at 2026.6.1 --> ## What's Changed ### Features * OSD: Custom text received from serial to be displayed by @blckmn in https://github.com/betaflight/betaflight/pull/14895 * Add switchable battery profiles by @jury89 in https://github.com/betaflight/betaflight/pull/14965 * Include AssistNow Autonomous into GPS features by @stsypanov in https://github.com/betaflight/betaflight/pull/14987 * Add individual servo channel forwarding support and run servo mixer for default frame types by @blckmn in https://github.com/betaflight/betaflight/pull/15013 * Upixel UP-T1-001-Plus support and optical flow position hold by @SteveCEvans in https://github.com/betaflight/betaflight/pull/14922 * Add flight plan PG configuration, CLI waypoint commands, and AUTOPILOT mode by @blckmn in https://github.com/betaflight/betaflight/pull/15030 * feat: add CAN peripheral support for STM32G4, STM32H7 and STM32C593 (ENABLE_CAN) by @blckmn in https://github.com/betaflight/betaflight/pull/15115 * Nav autopilot by @SteveCEvans in https://github.com/betaflight/betaflight/pull/15026 * feat: DroneCAN protocol stack (NodeStatus + GetNodeInfo) by @blckmn in https://github.com/betaflight/betaflight/pull/15137 * SITL: gate bridge-specific transforms on SITL_BRIDGE_GAZEBO by @blckmn in https://github.com/betaflight/betaflight/pull/15158 * feat: DroneCAN GNSS Fix2 provider (drives gpsSol) by @blckmn in https://github.com/betaflight/betaflight/pull/15143 * feat: STM32N6570-DK bring-up — LTDC backend, SSD1306 backend, dump cmd by @blckmn in https://github.com/betaflight/betaflight/pull/15153 * AUTOPILOT: Step one, Flight plan guidance implementation by @blckmn in https://github.com/betaflight/betaflight/pull/14923 * telemetry/mavlink: add HOME_POSITION/SYSTEM_TIME/STATUSTEXT TX by @blckmn in https://github.com/betaflight/betaflight/pull/15213 * STM32N6 platform support by @blckmn in https://github.com/betaflight/betaflight/pull/15214 * telemetry/mavlink: vehicle-setup unlock + custom_mode discovery by @blckmn in https://github.com/betaflight/betaflight/pull/15220 * Add ap_stop_threshold setting and improve braking performance by @SteveCEvans in https://github.com/betaflight/betaflight/pull/15150 * telemetry/mavlink: MISSION protocol upload/download by @blckmn in https://github.com/betaflight/betaflight/pull/15224 * The MAVLink packets rates change by using Ground Control Station by @demvlad in https://github.com/betaflight/betaflight/pull/15291 * Autopilot: injected runtime plans, geofence RTH return mission, LAND loiter by @blckmn in https://github.com/betaflight/betaflight/pull/15409 * Autopilot: rescue as a synthesised mission, TAKEOFF and hold patterns, SITL fidelity by @blckmn in https://github.com/betaflight/betaflight/pull/15413 * SITL harness: per-run session id in the telemetry stream by @blckmn in https://github.com/betaflight/betaflight/pull/15417 * Autopilot: OSD waypoint elements, CLI mission status, MAVLink SET_CURRENT by @blckmn in https://github.com/betaflight/betaflight/pull/15416 * The MAVLink serial RX provider is connected to telemetry incomming message handler by @demvlad in https://github.com/betaflight/betaflight/pull/15374 * DroneCAN ESC: RawCommand output, Status telemetry, dynamic node-ID allocation by @blckmn in https://github.com/betaflight/betaflight/pull/15350 * Autopilot: position-hold stick feedforward split from damping, braking state machine by @blckmn in https://github.com/betaflight/betaflight/pull/15435 * Autopilot: in-flight waypoint capture on a switch by @morrob955 in https://github.com/betaflight/betaflight/pull/15445 * OSD: flight-plan navigation minimap element by @morrob955 in https://github.com/betaflight/betaflight/pull/15447 * Unify autopilot position control on a velocity primitive; fly GPS rescue as a flight-plan mission by @blckmn in https://github.com/betaflight/betaflight/pull/15485 ### Improvements * PICO use timeUs_t return types for time functions. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14817 * Quick fix for issuix for issue 14819 by @PD45-46 in https://github.com/betaflight/betaflight/pull/14843 * Change displayed precision of max current of the post-flight statistics to float by @qubicllj in https://github.com/betaflight/betaflight/pull/14853 * delete file PICO/dshot.pio.programs by @qqqlab in https://github.com/betaflight/betaflight/pull/14863 * CLEANUP: make clean CONFIG=X by @blckmn in https://github.com/betaflight/betaflight/pull/14830 * REFACTOR: Camera Control in preparation for RP2350 implementation by @blckmn in https://github.com/betaflight/betaflight/pull/14856 * PICO: Use memfunctions.S from rp2040 bootrom source for memset, memcpy. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14876 * PICO: Remove startup .S file (not in use). by @mjs1441 in https://github.com/betaflight/betaflight/pull/14886 * Report sensor hardware names per sensor type by @haslinghuis in https://github.com/betaflight/betaflight/pull/14892 * Add ACCGYRO_LSM6DSK320X by @haslinghuis in https://github.com/betaflight/betaflight/pull/14891 * Add MSP support for Attitude quaternions by @Robolightning in https://github.com/betaflight/betaflight/pull/14761 * Refactor release workflow to streamline artifact handling by @blckmn in https://github.com/betaflight/betaflight/pull/14910 * PICO: bidirectional DShot telemetry with edge detection by @andyp1per in https://github.com/betaflight/betaflight/pull/14887 * Add Nooploop TOFSense rangefinder family support by @ArturPelicho in https://github.com/betaflight/betaflight/pull/14896 * Add support for ICM42622P by @haslinghuis in https://github.com/betaflight/betaflight/pull/14918 * Add DEFAULT_BEEPER_OFF_FLAGS for reset of beeper_off_flags. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14809 * Strengthen MSP/CRSF Packet Validation by @VoodooChild99 in https://github.com/betaflight/betaflight/pull/14842 * CRSF AHRS Support by @andyp1per in https://github.com/betaflight/betaflight/pull/14870 * Adding Simplifed Master Slider to Adjustments by @spatzengr in https://github.com/betaflight/betaflight/pull/14371 * MSP-adjCenter_adjScale by @spatzengr in https://github.com/betaflight/betaflight/pull/14920 * feat(driver): add MMC5603 magnetometer driver by @gintaris in https://github.com/betaflight/betaflight/pull/14924 * SITL: add -z,noexecstack linker flag to suppress RWX segment warning by @blckmn in https://github.com/betaflight/betaflight/pull/14938 * Feature/bmp580 barometer by @gintaris in https://github.com/betaflight/betaflight/pull/14925 * Flash/MT29F - First cut of support for the MT29F1G01ABAFDWB-IT:F flash chips (1Gb NAND) by @hydra in https://github.com/betaflight/betaflight/pull/14828 * SPI ExpressLRS 4.0 support by @CapnBry in https://github.com/betaflight/betaflight/pull/14932 * Move SCHEDULER_RELAX_RX/OSD STM32F411xE override from src/main to src/platform with fallback defaults by @blckmn in https://github.com/betaflight/betaflight/pull/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 https://github.com/betaflight/betaflight/pull/14962 * CLI: Adding "options" for outputting the msp_build_info equivalent in the CLI by @blckmn in https://github.com/betaflight/betaflight/pull/14951 * Remove unused EXTITrigger_TypeDef mock definitions from SITL target and unit test platform headers by @blckmn in https://github.com/betaflight/betaflight/pull/14963 * faster cos and sin method by @Quick-Flash in https://github.com/betaflight/betaflight/pull/14790 * Move SmartAudio UART bidir push-pull prepend logic from MCU ifdef to UART_TRAIT_BIDIR_PP_PREPEND platform trait by @blckmn in https://github.com/betaflight/betaflight/pull/14956 * MSP: validate servo mixer targetChannel and inputSource bounds in MSP_SET_SERVO_MIX_RULE by @blckmn in https://github.com/betaflight/betaflight/pull/14952 * Add support for GigaDevice GD25Q16E and Zetta ZD25WQ32CE flash memories by @jwoloch in https://github.com/betaflight/betaflight/pull/14970 * BLACKBOX: log GPS epoch timestamp in H-frame and msToW in G-frame by @blckmn in https://github.com/betaflight/betaflight/pull/14950 * Sensors: Add initial support for ICM42686P by @haslinghuis in https://github.com/betaflight/betaflight/pull/14941 * SITL: Add ability to specify a command line argument and load a text file for writing config. by @blckmn in https://github.com/betaflight/betaflight/pull/14935 * Move timer functions to accept timerHardware_t*, rename platform-specific abbreviations, and relocate platform-only declarations to platform/timer.h by @blckmn in https://github.com/betaflight/betaflight/pull/14967 * flash_m25p16: Add support for GD25Q128 flash chip by @HGLRC-T in https://github.com/betaflight/betaflight/pull/14983 * Refactor DMA driver to abstract platform-specific types and functions behind a hardware-agnostic API by @blckmn in https://github.com/betaflight/betaflight/pull/14990 * Consolidate ENABLE_SDIO_INIT definitions in platform.h with explicit per-MCU family settings by @blckmn in https://github.com/betaflight/betaflight/pull/14991 * Move NVIC priority utility macros from nvic.h to per-platform platform.h headers by @blckmn in https://github.com/betaflight/betaflight/pull/14996 * Move platform-specific Bit_RESET definition from serial_4way to platform headers as GPIO_PIN_RESET by @blckmn in https://github.com/betaflight/betaflight/pull/14997 * Move expressLrsTimerEnableIRQs to platform common to remove USE_HAL_DRIVER from src/main by @blckmn in https://github.com/betaflight/betaflight/pull/14998 * Replace F7 platform guard for SERIAL_CHECK_TX with ENABLE_SERIAL_SKIP_CHECK_TX macro by @blckmn in https://github.com/betaflight/betaflight/pull/15001 * Refactor transponder IR DMA buffer type to uint32_t to remove platform dependency by @blckmn in https://github.com/betaflight/betaflight/pull/14995 * Replace STM32H7 preprocessor checks in asyncfatfs with ENABLE_AFATFS_DMA_CACHE feature flag by @blckmn in https://github.com/betaflight/betaflight/pull/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 https://github.com/betaflight/betaflight/pull/14993 * Move overclock frequency options from chip-specific ifdefs in settings.c to ENABLE_OVERCLOCK_XXX_MHZ defines in platform headers by @blckmn in https://github.com/betaflight/betaflight/pull/14999 * Move hardware-specific OctoSPI/QuadSPI definitions and GPIO config from src/main headers to platform files by @blckmn in https://github.com/betaflight/betaflight/pull/14992 * Deprecate gyro_hardware and introduce cli sensor_hardware command by @haslinghuis in https://github.com/betaflight/betaflight/pull/15009 * Replace recursive submodule checkout with on-demand SDK hydration and selective per-platform caching in CI by @blckmn in https://github.com/betaflight/betaflight/pull/15021 * Improve handling of GPS messages by @stsypanov in https://github.com/betaflight/betaflight/pull/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 https://github.com/betaflight/betaflight/pull/15017 * Replace void* and MCU-specific TypeDef pointers with opaque resource types in driver interfaces by @blckmn in https://github.com/betaflight/betaflight/pull/15033 * Remove airmode lpf by @Quick-Flash in https://github.com/betaflight/betaflight/pull/15029 * Migrate UART from HAL to LL, eliminating HAL handle dependencies by @blckmn in https://github.com/betaflight/betaflight/pull/15035 * Migrate STM32 I2C from HAL to LL with register-level state machine by @blckmn in https://github.com/betaflight/betaflight/pull/15037 * STM32H5: convert lib/main/STM32H5 to STM32CubeH5 submodule (v1.6.0) by @blckmn in https://github.com/betaflight/betaflight/pull/15054 * GPS: reorder UBLOX procession to have NAV_PVT and NAV_SAT messages first by @stsypanov in https://github.com/betaflight/betaflight/pull/15044 * Add MSP2_CLI_SETTING (0x300E) command for getting and setting CLI settings over MSP by @blckmn in https://github.com/betaflight/betaflight/pull/14972 * Guard escSensorPassthrough with USE_PWM_OUTPUT in CLI serialpassthrough by @blckmn in https://github.com/betaflight/betaflight/pull/15067 * Fix SDK hydration race condition in parallel builds by @blckmn in https://github.com/betaflight/betaflight/pull/15083 * feat: add support for Macronix MX25L12845G flash by @oskarsselis in https://github.com/betaflight/betaflight/pull/15065 * Expand chirp debug channels for offline system identification by @blckmn in https://github.com/betaflight/betaflight/pull/15113 * Remove STM32 MCU-family ifdefs from src/main by @blckmn in https://github.com/betaflight/betaflight/pull/15122 * Update mt29f flash support by @hydra in https://github.com/betaflight/betaflight/pull/15134 * Add by25 q128 es memory ic support by @MatviiG in https://github.com/betaflight/betaflight/pull/15042 * Expose transponder provider and data via CLI by @blckmn in https://github.com/betaflight/betaflight/pull/15126 * SITL: Gazebo Harmonic model fixes and UDP RX path by @blckmn in https://github.com/betaflight/betaflight/pull/15140 * Add CLI 'env' command; drop compiled-in MCU type ID by @blckmn in https://github.com/betaflight/betaflight/pull/15139 * feat: LCD console subsystem for runtime debug output by @blckmn in https://github.com/betaflight/betaflight/pull/15148 * PICO: gyro_clkin platform abstraction so RP2350 can use USE_GYRO_CLKIN by @blckmn in https://github.com/betaflight/betaflight/pull/15162 * Add support for the BOYAMICRO BY25Q64 flash. by @LYNHQQ in https://github.com/betaflight/betaflight/pull/15025 * Speed up serial GPS message decoding by @stsypanov in https://github.com/betaflight/betaflight/pull/15129 * MSP: Expose additional rpm fields by @haslinghuis in https://github.com/betaflight/betaflight/pull/15144 * usb: derive product name from BOARD_NAME when a config is built by @blckmn in https://github.com/betaflight/betaflight/pull/15182 * GPS: replace full a calendar to epoch round trip with a direct field copy by @stsypanov in https://github.com/betaflight/betaflight/pull/15184 * drivers/flash: OctoSPI multichip support + MX66UW1G45G driver by @blckmn in https://github.com/betaflight/betaflight/pull/15199 * telemetry/mavlink: add RX dispatch and handshake responders by @blckmn in https://github.com/betaflight/betaflight/pull/15211 * GPS: add fast-path for UBX_PARSE_PAYLOAD_CONTENT state by @stsypanov in https://github.com/betaflight/betaflight/pull/15183 * test: compute CRSF CRC at runtime in ELRS MSP version test by @ChrisRosser in https://github.com/betaflight/betaflight/pull/15204 * feat(flash): add support for XTX XT25F128F by @gaoyu2144287 in https://github.com/betaflight/betaflight/pull/15219 * ComputeLedStripColorByVtxFreq by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15135 * refactor: make ELRS V3 default, require USE_ELRSV4 for V4 by @haslinghuis in https://github.com/betaflight/betaflight/pull/15232 * Move submodules from lib/main to lib/modules by @blckmn in https://github.com/betaflight/betaflight/pull/15241 * chore: remove dead code in #if 0 blocks by @haslinghuis in https://github.com/betaflight/betaflight/pull/15237 * Improve the speed of scaleRangef by @Quick-Flash in https://github.com/betaflight/betaflight/pull/15048 * AT32: add gyro_clkin platform implementation by @blckmn in https://github.com/betaflight/betaflight/pull/15251 * PICO: Simplify pico_trace by @mjs1441 in https://github.com/betaflight/betaflight/pull/15263 * Replace Biquad with SVF by @Quick-Flash in https://github.com/betaflight/betaflight/pull/15056 * Task stats improvements for state-based tasks by @mjs1441 in https://github.com/betaflight/betaflight/pull/15276 * Share common/stm32 source list across STM32-style families by @blckmn in https://github.com/betaflight/betaflight/pull/15307 * Apply serialRxBytesWaiting-related optimization to /src/main/telemetry by @stsypanov in https://github.com/betaflight/betaflight/pull/15305 * refactor(axis): sign-bearing earth-frame axis enums (ENU/NWU/EF) across IMU & navigation by @haslinghuis in https://github.com/betaflight/betaflight/pull/15346 * fix(sitl): harden Gazebo gyro yaw sign against silent regression (follow-up to #15354) by @haslinghuis in https://github.com/betaflight/betaflight/pull/15355 * add support for FMSH FM25Q series (64Mb, 128Mb, 256Mb) SPI Flash by @ReganLai-Fudan in https://github.com/betaflight/betaflight/pull/15292 * Autopilot: flight plan safety — rx-loss policy, sanity checks, geofence, arming gate by @blckmn in https://github.com/betaflight/betaflight/pull/15408 * Autopilot: nav velocity mode with drag feedforward by @blckmn in https://github.com/betaflight/betaflight/pull/15410 * flash_w25n: Add support for MX35LF2GE4AD flash chip by @RunnyCow in https://github.com/betaflight/betaflight/pull/15008 * perf(STM32H5): enable instruction cache by @haslinghuis in https://github.com/betaflight/betaflight/pull/15421 * cli: show live GPS detail in status output by @blckmn in https://github.com/betaflight/betaflight/pull/15450 * Autopilot: cross waypoint gates at corner speed - chase-lag braking, carrot measurement filtering, governor hysteresis by @morrob955 in https://github.com/betaflight/betaflight/pull/15453 * Autopilot: don't fail position hold on a single bad GPS fix by @morrob955 in https://github.com/betaflight/betaflight/pull/15454 * perf(STM32C5): enable instruction cache by @haslinghuis in https://github.com/betaflight/betaflight/pull/15434 * Add pre-engagement Position Hold readiness OSD element by @nerdCopter in https://github.com/betaflight/betaflight/pull/15465 ### Fixes * Fix custom mag_align_yaw by @haslinghuis in https://github.com/betaflight/betaflight/pull/14849 * Fix ICM-40609D accelerometer reading 0.5g instead of 1.0g by @nerdCopter in https://github.com/betaflight/betaflight/pull/14834 * PICO dshot timing update - fix erratic motor movement when disarmed by @qqqlab in https://github.com/betaflight/betaflight/pull/14864 * Scheduler - upgrade taskCount and lateTaskCount to uint32_t. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14889 * CRSF: fix race condition in subset frame handling by @andyp1per in https://github.com/betaflight/betaflight/pull/14893 * [RX] Fix RX_MSP: missing CLI feature name and RX rate always 0 by @Remenby31 in https://github.com/betaflight/betaflight/pull/14861 * Fix error in blackbox.c when building without LTO by @mjs1441 in https://github.com/betaflight/betaflight/pull/14816 * Fix battery percentage calculation with battery capacity set to 0 by @michaeldebacker in https://github.com/betaflight/betaflight/pull/14899 * Define USE_LED_STRIP if USE_LED_STRIP_64 is defined by @osirisinferi in https://github.com/betaflight/betaflight/pull/14916 * fix: remove beacon timestamp update when blocked by @nerdCopter in https://github.com/betaflight/betaflight/pull/14904 * Fix motor output not restored after ESC passthrough exit by @kedeng in https://github.com/betaflight/betaflight/pull/14917 * PICO DShot bidir - clarify code to prevent build error with DEBUG=GDB by @mjs1441 in https://github.com/betaflight/betaflight/pull/14926 * Fix use of uninitialised variables in acceleration.c, gyro.c by @mjs1441 in https://github.com/betaflight/betaflight/pull/14928 * Remove linker script for SITL target on MacOS x86-64 by @tstibor in https://github.com/betaflight/betaflight/pull/14934 * FIX: Virtual GPS provider does not need a serial port by @blckmn in https://github.com/betaflight/betaflight/pull/14936 * Update camera control condition in common_post.h by @haslinghuis in https://github.com/betaflight/betaflight/pull/14948 * CLI: fix NULL pointer dereference in help search by @jury89 in https://github.com/betaflight/betaflight/pull/14947 * FIX: dshot beacon by @haslinghuis in https://github.com/betaflight/betaflight/pull/14869 * PICO DSHOT (bidir) - fix for telemetry sampling. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14968 * Constrain GYRO_CLKIN to supported IMU sensors by @haslinghuis in https://github.com/betaflight/betaflight/pull/14971 * fix: initialize vtxtable powerlabels buffer to prevent strncpy stack corruption (#14835) by @nerdCopter in https://github.com/betaflight/betaflight/pull/14979 * Drivers: correct LSM6DSV16X FS_G_4000DPS encoding by @zebulon-86 in https://github.com/betaflight/betaflight/pull/15043 * Fix calib arm disable flag for SITL by @haslinghuis in https://github.com/betaflight/betaflight/pull/15073 * SITL: move .pg_registry out of the executable segment by @blckmn in https://github.com/betaflight/betaflight/pull/15116 * Pico Fix UART issues and implement SERIAL_CHECK_TX option by @mjs1441 in https://github.com/betaflight/betaflight/pull/15117 * Display altitude in sensors tab even if not armed by @SteveCEvans in https://github.com/betaflight/betaflight/pull/15119 * fix: escprog ki 255 (KISSALL) broken on DShot builds (fixes #15114) by @nerdCopter in https://github.com/betaflight/betaflight/pull/15132 * Resolved wrong string buffers size issue by @demvlad in https://github.com/betaflight/betaflight/pull/15141 * Send 0x03 gps time CRSF message by @ot0tot in https://github.com/betaflight/betaflight/pull/15167 * drivers/bus: NULL-check dev->bus in busBusy() by @blckmn in https://github.com/betaflight/betaflight/pull/15188 * Fix QMC5883P by @haslinghuis in https://github.com/betaflight/betaflight/pull/15174 * Fix CLI entry race condition in MSP serial processing (fixes #14169, #15071) by @nerdCopter in https://github.com/betaflight/betaflight/pull/15193 * fix(config): unconditionally clamp failsafe_procedure to valid range by @nerdCopter in https://github.com/betaflight/betaflight/pull/15192 * telemetry/mavlink: send GLOBAL_POSITION_INT.hdg in centidegrees by @blckmn in https://github.com/betaflight/betaflight/pull/15205 * Improve OSD VTX information in non factory band by @chibaron in https://github.com/betaflight/betaflight/pull/15175 * fix(uart): guard half-duplex pinless UART modes by @kedeng in https://github.com/betaflight/betaflight/pull/15218 * CRSF: bound subset RC channel unpacking by @Symmetricity in https://github.com/betaflight/betaflight/pull/15249 * cli: NULL-safe nextArg, fix CLI null-deref crashes in aux/color/led by @blckmn in https://github.com/betaflight/betaflight/pull/15253 * fix(common): guard atoi() with PLATFORM_NO_LIBC by @katzfey in https://github.com/betaflight/betaflight/pull/15260 * fix: IST8310 magnetometer check DRDY before reading data by @haslinghuis in https://github.com/betaflight/betaflight/pull/15243 * Fix duplicate PG ID by @haslinghuis in https://github.com/betaflight/betaflight/pull/15225 * PICO: Fix unsafe use of naive MAX, MIN macros by @mjs1441 in https://github.com/betaflight/betaflight/pull/15269 * STM32H5: fix SPEEDYBEEH5 bring-up (clock tree, SPI kernel clock, ADC null-deref) by @haslinghuis in https://github.com/betaflight/betaflight/pull/15293 * Althold fixes by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15299 * allow for POS_HOLD in SITL by @ehenry344 in https://github.com/betaflight/betaflight/pull/15280 * Ensure heading is known before enabling GPS based position hold by @SteveCEvans in https://github.com/betaflight/betaflight/pull/15240 * STM32C5: C562 platform bring-up (I3C-as-I2C, SPA06 baro, ADC mux, baro pacing) by @blckmn in https://github.com/betaflight/betaflight/pull/15302 * Adjust PIDs and fix FF scaling in Altitude Hold by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15303 * STM32C5: fix I3C legacy-I2C register reads for the SPA06 baro by @blckmn in https://github.com/betaflight/betaflight/pull/15328 * STM32C5: bound ADC internal-sensor waits so a stalled ADC can't hang the scheduler by @blckmn in https://github.com/betaflight/betaflight/pull/15329 * Fix GPS distance calculation and sign of accelEast by @SteveCEvans in https://github.com/betaflight/betaflight/pull/15321 * fix(accgyro): IIM-42652 FSR/AAF + restore IIM-42653 AAF placement by @haslinghuis in https://github.com/betaflight/betaflight/pull/15261 * fix(baro): close negation around all default-baro defines by @katzfey in https://github.com/betaflight/betaflight/pull/15259 * fix(msp): cancel pendingRequest on '$' only, restoring per-byte lastActivityMs by @nerdCopter in https://github.com/betaflight/betaflight/pull/15323 * fix(dshot): remove stale requestTelemetry bridge in AT32/APM32 bitbang bbWriteInt by @tracycam in https://github.com/betaflight/betaflight/pull/15326 * dshot_bitbang: replace telemetry busy-wait with non-blocking DMA abort by @ChrisRosser in https://github.com/betaflight/betaflight/pull/15332 * Fix OSD RTC short timezone offset by @anoshyn in https://github.com/betaflight/betaflight/pull/15312 * fix(position): correct East-West inversion in getLinearAccelENU by @haslinghuis in https://github.com/betaflight/betaflight/pull/15342 * fix(sitl): restore Gazebo gyro Z sign lost in #15280 by @nerdCopter in https://github.com/betaflight/betaflight/pull/15354 * RX MSP Override: require fresh MSP RC data before substituting channels by @EdikSimonian in https://github.com/betaflight/betaflight/pull/15217 * Position hold =Update 2026-6 by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15361 * fix(h5): use correct system bootloader address for software DFU entry by @haslinghuis in https://github.com/betaflight/betaflight/pull/15369 * serial: +++ escape to exit passthrough on DTR-less links by @dmboyd in https://github.com/betaflight/betaflight/pull/15357 * Position hold small improvements by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15366 * Display battery usage estimation in OSD when battery capacity is set to 0 by @michaeldebacker in https://github.com/betaflight/betaflight/pull/15038 * msp: bound stream reads against payload length to prevent OOB reads by @blckmn in https://github.com/betaflight/betaflight/pull/15379 * Fix start frame detection for fast refresh (1 mS between frames) by @Grinzzz in https://github.com/betaflight/betaflight/pull/14322 * fix(dshot): guard spurious pullup edge in decodeTelemetryPacket by @nerdCopter in https://github.com/betaflight/betaflight/pull/15343 * fix(x32m7b): fix spi and sdmmc by @Romin0615 in https://github.com/betaflight/betaflight/pull/15371 * fix(vtx): apply all active VTX activation conditions (#15362) by @haslinghuis in https://github.com/betaflight/betaflight/pull/15363 * docs: accgyro_spi_icm20689.c 8Mhz comment correction by @nerdCopter in https://github.com/betaflight/betaflight/pull/15365 * fix(filter): correct fq comment in svfNotchFilter_t by @nerdCopter in https://github.com/betaflight/betaflight/pull/15300 * fix(barometer): replace VLA with fixed array in dps310 coefficient read by @nerdCopter in https://github.com/betaflight/betaflight/pull/15266 * Fix CRSF frame length validation by @Symmetricity in https://github.com/betaflight/betaflight/pull/15254 * Set d_max_advance default to 0 to match configurator guidance by @ChrisRosser in https://github.com/betaflight/betaflight/pull/15221 * FIX: BEEPER_USB suppression when battery present and configurator active by @haslinghuis in https://github.com/betaflight/betaflight/pull/14976 * GPS Rescue2026_6a by @ctzsnooze in https://github.com/betaflight/betaflight/pull/15382 * fix: the request parser writes data into a fixed-siz... in rcdevice.c by @orbisai0security in https://github.com/betaflight/betaflight/pull/15389 * fix(flashfs): avoid blocking MSP during NOR chip erase by @kedeng in https://github.com/betaflight/betaflight/pull/15273 * fix(crsf): rate-limit crsfTelemetryUpdateCheck to prevent scheduler starvation by @nerdCopter in https://github.com/betaflight/betaflight/pull/15358 * rx: detect sbus frame boundary via interbyte timeout by @blckmn in https://github.com/betaflight/betaflight/pull/15388 * Fix inverted timeout condition in W25Q128FV write-enable poll by @nerdCopter in https://github.com/betaflight/betaflight/pull/15396 * bus_quadspi_hal: capture HAL status in quadSpiSequence() by @nerdCopter in https://github.com/betaflight/betaflight/pull/15397 * flash_w25n: remove dead/buggy BBLUT read/write code by @nerdCopter in https://github.com/betaflight/betaflight/pull/15398 * fix: prevent spurious blackbox erase before RX link by @nerdCopter in https://github.com/betaflight/betaflight/pull/15404 * STM32C5: correct timer AF tables and complete timer coverage by @blckmn in https://github.com/betaflight/betaflight/pull/15405 * Fix H7 FDCAN bring-up: kernel clock query and transceiver silent pin by @blckmn in https://github.com/betaflight/betaflight/pull/15429 * STM32H5: ADC circular GPDMA so battery/current track live values by @haslinghuis in https://github.com/betaflight/betaflight/pull/15419 * RTC is not set from GPS time using UBLOX M10 by @stsypanov in https://github.com/betaflight/betaflight/pull/15394 * STM32H5/N6: drive WS2811 LED strip correctly on GPDMA by @haslinghuis in https://github.com/betaflight/betaflight/pull/15438 * PICO: Allow non-inverted BEC enable on GPIOs, add missing dma include by @mjs1441 in https://github.com/betaflight/betaflight/pull/15444 * STM32: align MPU regions to actual size by @morrob955 in https://github.com/betaflight/betaflight/pull/15441 * fix(cli): don't dereference NULL sensor hardware names by @haslinghuis in https://github.com/betaflight/betaflight/pull/15456 * optimize at32f43x vbat and current more accurate when punch throttle by @shanggl in https://github.com/betaflight/betaflight/pull/15418 * fix: keep the beeper and RX_LOST beacon alive after a USB session by @haslinghuis in https://github.com/betaflight/betaflight/pull/15477 * Align BMI270 axes to ICM42688 on shared-footprint boards by @blckmn in https://github.com/betaflight/betaflight/pull/15484 * X32M7B: relocate CLI command handlers from ITCM to AHB_SRAM by @nerdCopter in https://github.com/betaflight/betaflight/pull/15463 * PICO: Fix up RP2350.mk to find extra linker file in new config folder by @mjs1441 in https://github.com/betaflight/betaflight/pull/15503 * fix(h5): correct USART10 AF, drop invalid I2C4 pin, add missing UART/I2C pins by @haslinghuis in https://github.com/betaflight/betaflight/pull/15506 * fix(g4,n6): correct alternate-function errors in the I2C and UART tables by @haslinghuis in https://github.com/betaflight/betaflight/pull/15508 * fix(crsf): don't gate chunked MSP replies on inbound frames by @haslinghuis in https://github.com/betaflight/betaflight/pull/15501 * fix(STM32C5): bound I3C-as-I2C flag waits by time, not loop count by @haslinghuis in https://github.com/betaflight/betaflight/pull/15479 * fix(spi): re-assert CS when repeating a DMA segment by @haslinghuis in https://github.com/betaflight/betaflight/pull/15478 * Flash/MT29F - Add support for multi-plane variants. by @hydra in https://github.com/betaflight/betaflight/pull/15474 * Optimize timer-based bidirectional DShot on F4 MCUs to reduce scheduler jitter by @ot0tot in https://github.com/betaflight/betaflight/pull/15437 * GT25Q-series flash updates by @somethingjustlike in https://github.com/betaflight/betaflight/pull/15402 * fix(osd): use battery state when battery capacity is unset by @michaeldebacker in https://github.com/betaflight/betaflight/pull/15415 * Fix beeper never sounding when BEEPER_USB off-flag is set (restores battery gate) by @nerdCopter in https://github.com/betaflight/betaflight/pull/15424 * Bound VCP TX waits to fix TASK_SERIAL maxload corruption by @nerdCopter in https://github.com/betaflight/betaflight/pull/15449 * cli.c: Average reported task rates for consistent status output by @ot0tot in https://github.com/betaflight/betaflight/pull/15436 ### Targets * Enable important features for RP2350B by @andyp1per in https://github.com/betaflight/betaflight/pull/14875 * Update mk/config.mk to allow include of board-specific config.mk by @mjs1441 in https://github.com/betaflight/betaflight/pull/14810 * Add STM32N6 HAL/LL drivers and USB device library by @blckmn in https://github.com/betaflight/betaflight/pull/15000 * STM32N6: move vendor HAL to STM32CubeN6 submodule (v1.3.0) by @blckmn in https://github.com/betaflight/betaflight/pull/15011 * Add ESP32-S3 platform scaffold with stub drivers, build system integration, and split platform-specific tools into platform mk directories by @blckmn in https://github.com/betaflight/betaflight/pull/15016 * STM32H5: add SPI bus support with GPDMA infrastructure by @blckmn in https://github.com/betaflight/betaflight/pull/15063 * Add ESP32 interrupt infrastructure, harden UART driver, and fix opaque resource types by @blckmn in https://github.com/betaflight/betaflight/pull/15064 * STM32H5: add UART driver support with CLI enabled by @blckmn in https://github.com/betaflight/betaflight/pull/15068 * Add GDMA-backed SPI DMA transfers for ESP32-S3 by @blckmn in https://github.com/betaflight/betaflight/pull/15069 * Update APM32F4 and USB libraries by @LuckkMaker in https://github.com/betaflight/betaflight/pull/15098 * PICO: Initial commit for framebuffer OSD displayport device (FB_OSD) with RP2350 implementation. by @mjs1441 in https://github.com/betaflight/betaflight/pull/14882 * Add apm32f425/427 support by @LuckkMaker in https://github.com/betaflight/betaflight/pull/15138 * add gd32h7xx firmware library support by @jianpingwu1 in https://github.com/betaflight/betaflight/pull/14985 * STM32C5: add STM32C562 platform support (NUCLEO-C562RE bring-up) by @blckmn in https://github.com/betaflight/betaflight/pull/15172 * STM32C5: source SYSCLK from HSE via PSI (with HSI fallback) by @blckmn in https://github.com/betaflight/betaflight/pull/15177 * Add STM32H757 dual-core MCU support by @andyp1per in https://github.com/betaflight/betaflight/pull/15234 * STM32N6: working CONFIG_IN_MEMORY_MAPPED_FLASH on OPENN657V1 by @blckmn in https://github.com/betaflight/betaflight/pull/15246 * Add xcore32m7 platform support by @LYNHQQ in https://github.com/betaflight/betaflight/pull/15169 * STM32N6 OBL + BF NS bring-up: USB VCP enumerates, CLI responsive by @blckmn in https://github.com/betaflight/betaflight/pull/15257 * STM32C5: enable SPI DMA on the STM32C562 target by @blckmn in https://github.com/betaflight/betaflight/pull/15322 * STM32C5: config partition at end of flash; C591 UART pins by @blckmn in https://github.com/betaflight/betaflight/pull/15335 * STM32H5: enable UART2-8 on H562/H563 and fix UART open hard fault by @haslinghuis in https://github.com/betaflight/betaflight/pull/15367 * feat(h5): enable LED_STRIP and remaining peripherals, drop VIRTUAL_GYRO by @haslinghuis in https://github.com/betaflight/betaflight/pull/15368 ## New Contributors * @PD45-46 made their first contribution in https://github.com/betaflight/betaflight/pull/14843 * @qqqlab made their first contribution in https://github.com/betaflight/betaflight/pull/14863 * @andyp1per made their first contribution in https://github.com/betaflight/betaflight/pull/14875 * @Remenby31 made their first contribution in https://github.com/betaflight/betaflight/pull/14861 * @b-r-y made their first contribution in https://github.com/betaflight/betaflight/pull/14829 * @michaeldebacker made their first contribution in https://github.com/betaflight/betaflight/pull/14899 * @Robolightning made their first contribution in https://github.com/betaflight/betaflight/pull/14761 * @ArturPelicho made their first contribution in https://github.com/betaflight/betaflight/pull/14896 * @VoodooChild99 made their first contribution in https://github.com/betaflight/betaflight/pull/14842 * @spatzengr made their first contribution in https://github.com/betaflight/betaflight/pull/14371 * @gintaris made their first contribution in https://github.com/betaflight/betaflight/pull/14924 * @jury89 made their first contribution in https://github.com/betaflight/betaflight/pull/14946 * @jwoloch made their first contribution in https://github.com/betaflight/betaflight/pull/14970 * @remete618 made their first contribution in https://github.com/betaflight/betaflight/pull/14982 * @HGLRC-T made their first contribution in https://github.com/betaflight/betaflight/pull/14983 * @Manwe-777 made their first contribution in https://github.com/betaflight/betaflight/pull/14945 * @stsypanov made their first contribution in https://github.com/betaflight/betaflight/pull/14987 * @hanneskaeufler made their first contribution in https://github.com/betaflight/betaflight/pull/15045 * @zebulon-86 made their first contribution in https://github.com/betaflight/betaflight/pull/15043 * @oskarsselis made their first contribution in https://github.com/betaflight/betaflight/pull/15065 * @MatviiG made their first contribution in https://github.com/betaflight/betaflight/pull/15042 * @gaoyu2144287 made their first contribution in https://github.com/betaflight/betaflight/pull/15219 * @Romin0615 made their first contribution in https://github.com/betaflight/betaflight/pull/15242 * @Symmetricity made their first contribution in https://github.com/betaflight/betaflight/pull/15249 * @ehenry344 made their first contribution in https://github.com/betaflight/betaflight/pull/15280 * @anoshyn made their first contribution in https://github.com/betaflight/betaflight/pull/15312 * @EdikSimonian made their first contribution in https://github.com/betaflight/betaflight/pull/15217 * @dmboyd made their first contribution in https://github.com/betaflight/betaflight/pull/15357 * @ReganLai-Fudan made their first contribution in https://github.com/betaflight/betaflight/pull/15292 * @Grinzzz made their first contribution in https://github.com/betaflight/betaflight/pull/14322 * @orbisai0security made their first contribution in https://github.com/betaflight/betaflight/pull/15389 * @somethingjustlike made their first contribution in https://github.com/betaflight/betaflight/pull/15310 * @marcusamery made their first contribution in https://github.com/betaflight/betaflight/pull/15395 * @RunnyCow made their first contribution in https://github.com/betaflight/betaflight/pull/15008 * @morrob955 made their first contribution in https://github.com/betaflight/betaflight/pull/15445 * @shanggl made their first contribution in https://github.com/betaflight/betaflight/pull/15418 **Full Changelog**: https://github.com/betaflight/betaflight/compare/2025.12.1...2026.6.1