Sitelet https://github.com/betaflight/betaflight/compare/4.5.3...4.5.4
Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: betaflight/betaflight
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4.5.3
Choose a base ref
...
head repository: betaflight/betaflight
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4.5.4
Choose a head ref
  • 6 commits
  • 25 files changed
  • 7 contributors

Commits on Dec 25, 2025

  1. Configuration menu
    Copy the full SHA
    fc61abf View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2026

  1. [4.5.4] Backport src/config submodule handling (#14158, #14175, #14190)…

    … (#15152)
    
    * Add betaflight/config as submodule (#14158)
    
    * config submodule - follow master (#14175)
    
    * Ignore submodule (#14190)
    
    * Bump src/config submodule to current master HEAD
    
    ---------
    
    Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
    Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
    3 people authored Apr 26, 2026
    Configuration menu
    Copy the full SHA
    7e60a3e View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2026

  1. Configuration menu
    Copy the full SHA
    a804ef4 View commit details
    Browse the repository at this point in the history

Commits on May 5, 2026

  1. usb: derive product name from BOARD_NAME when a config is built (4.5) (…

    …#15186)
    
    usb: derive product name from BOARD_NAME when a config is built
    
    Previously the USB product string was hard-coded per MCU target as
    "Betaflight <MCU>" regardless of the board being built. When building
    with CONFIG=, prefer the BOARD_NAME from the config header so the device
    identifies as the actual board (e.g. "Betaflight - AIKONF4V2"). Plain
    target builds keep the MCU-based fallback ("Betaflight - STM32F411").
    
    Format normalised to "Betaflight - <name>" across all targets.
    blckmn authored May 5, 2026
    Configuration menu
    Copy the full SHA
    78ff8ad View commit details
    Browse the repository at this point in the history

Commits on May 7, 2026

  1. [4.5.4] Backport CLI MSP race-condition fix (#15193) (#15200)

    Fix CLI entry race condition in MSP serial processing (fixes #14169, #15071) (#15193)
    
    * AI generated code: Anthropic Claude Sonnet 4.6
    
    Fix CLI entry race condition in MSP serial processing (fixes #14169, #15071)
    
    Root cause: PR #13940 refactored mspSerialProcess() from nested if/while to flat
    while + switch, inadvertently moving the pendingRequest abort logic **inside** the
    byte-processing loop. This caused MSP_PENDING_CLI to be cleared on every byte,
    preventing CLI entry when apps sent '#\r', '#\r\n', or when MSP polling arrived in
    the same RX burst. Legacy Android CLI and web configurator both lost CLI access.
    
    Fix: Move pendingRequest abort to an outer guard **before** the while loop—
    restoring semantics to pre-PR-13940 behaviour. Pending requests are now cleared
    once per activity burst, not once per byte.
    
    Preserved from PR #13940:
    - mspPortState_e / mspPacketState_e state refactor
    - New PORT_CLI_CMD state and STX (0x2) non-interactive passthrough mode
    - cliEnter(port, bool interactive) signature and dispatch logic
    - cliProcess() bool return type
    - All MSP packet processing restructuring
    
    Testing:
    - 44/44 unit tests pass (including test_cli_unittest)
    - make CONFIG=FOXEERF405 builds successfully
    - Tested on FOXEERF405: web configurator (master.app.betaflight.com) CLI works,
      legacy Betaflight CLI (Pavel Osnova) Android app CLI works
    
    Closes #14169
    Related-to #15071 (protocol stability concerns)
    Related-to #13940 (original MSP CLI passthrough feature)
    
    * msp_serial: Move pendingRequest abort outside byte-processing loop
    
    Abort pending CLI requests once per activity burst instead of per byte.
    This prevents multi-byte sequences (e.g. '#\r') from cancelling the CLI
    pending request set by the first character.
    
    ---------
    
    Co-authored-by: nerdCopter <56646290+nerdCopter@users.noreply.github.com>
    Co-authored-by: ndronet <ndronet@skynet.nicholls.edu>
    3 people authored May 7, 2026
    Configuration menu
    Copy the full SHA
    ca3287c View commit details
    Browse the repository at this point in the history
  2. [backport] fix(config): unconditionally clamp failsafe_procedure to v…

    …alid range (#15190)
    
    fix(config): unconditionally clamp failsafe_procedure to valid range
    
    Without USE_GPS_RESCUE, FAILSAFE_PROCEDURE_COUNT == 2 and
    FAILSAFE_PROCEDURE_GPS_RESCUE is absent from the enum. A stale value of
    2 in EEPROM (from a GPS-rescue-capable build flashed without full chip
    erase) is out of range for the new build and was never caught by the
    #ifdef USE_GPS_RESCUE-gated check.
    
    Add an unconditional >= FAILSAFE_PROCEDURE_COUNT guard immediately after
    the guarded block so any out-of-range procedure is reset to
    FAILSAFE_PROCEDURE_DROP_IT regardless of compile-time feature flags.
    FAILSAFE_PROCEDURE_COUNT is always defined as the enum sentinel.
    
    Resolves #15189
    
    Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
    nerdCopter and claude authored May 7, 2026
    Configuration menu
    Copy the full SHA
    25356b5 View commit details
    Browse the repository at this point in the history
Loading