Maintenance 9.x to Maintenance-10.x#11457
Merged
sensei-hacker merged 44 commits intomaintenance-10.xfrom Mar 25, 2026
Merged
Conversation
Prevent continuous servo autotrim from applying trim adjustments during maneuver transitions when I-term is changing rapidly due to transient error. Root Cause: The autotrim code verified all flight conditions (level attitude, centered sticks, low rotation rate) but failed to check that the I-term was in a steady state before transferring it to servo trim. During maneuver transitions (e.g., exiting a turn), I-term accumulates transient error. When the plane momentarily satisfies all level-flight conditions, this transient I-term is incorrectly transferred to servo midpoints, causing the aircraft to fly out-of-trim. Changes: - Added I-term rate-of-change tracking in processContinuousServoAutotrim() - Added stability threshold check before applying autotrim - Added configurable parameter: servo_autotrim_iterm_rate_limit (default: 2) - Only transfers I-term to trim when rate of change is below threshold The fix ensures trim updates only occur during true steady-level flight, not during transient conditions following maneuvers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Move I-term tracking outside stable flight check for accurate rate calculation - Move servo_autotrim_iterm_rate_limit to end of struct for EEPROM compatibility
Add hwVersion field to MSP_GPSSTATISTICS (166) for GPS module detection: - Field added at end of message (backward compatible) - Exposes gpsState.hwVersion (800=M8, 900=M9, 1000=M10, 0=Unknown) - Enables configurator auto-detection of GPS module type Changes: - src/main/fc/fc_msp.c: Add sbufWriteU32(dst, gpsState.hwVersion) - docs/development/msp/msp_messages.json: Document hwVersion field Used by configurator GPS preset UI to automatically configure optimal constellation/rate settings based on hardware capability (M8/M9/M10). Backward compatible: Old configurators ignore extra bytes, new configurators check byteLength before reading hwVersion field. Related configurator PR: feature-gps-preset-ui branch Research: claude/developer/docs/gps/m9-16-satellite-limitation-official.md
Changed defaults to provide better out-of-box accuracy: - gps_ublox_use_galileo: OFF → ON - gps_ublox_use_beidou: OFF → ON - gps_ublox_use_glonass: OFF (unchanged) - gps_ublox_nav_hz: 10 → 8 Rationale: - 3 constellations (GPS+Galileo+Beidou) provide excellent coverage - 8Hz allows M9 modules to use 32 satellites (vs 16 at ≥10Hz) - Safe for M8 (handles 8Hz easily) - Optimal for M10 with 3 constellations at default clock - Glonass remains OFF to avoid M10 processing overhead Updated nav_hz description to document M9's 16-satellite limitation at ≥10Hz, discovered through u-blox forum research and Clive Turvey's code analysis. Regenerated Settings.md from settings.yaml. Related: GPS preset UI feature
Addresses Qodo code review suggestion to prevent sending uninitialized memory over MSP_GPSSTATISTICS. While global variables are zero-initialized in C, explicit initialization is better practice: - Makes intent clear in code - Works for all GPS providers (UBLOX, MSP, FAKE) - Future-proof if gpsState becomes non-global - Documents that 0 means UNKNOWN u-blox driver also initializes to UBX_HW_VERSION_UNKNOWN (0) during configuration, but this ensures all code paths are safe.
Signed-off-by: ncerzzk <huangcmzzk@gmail.com>
Maintenance 9.x to master
…g-mirror Passthrough, USB Improvements
New target: FlyDragon Pro
SimplyFly H7 target
MSP Bind Message, CLI Command
Position estimator GPS origin altitude improvement for poor initial GPS epv
Add GPS hardware version to MSP and optimize defaults for M8/M9/M10
…iterm Fix #9912: Add I-term stability check to servo autotrim
…5wing Add target BLUEBERRYF405
When a pull request only modifies files within one directory under src/main/target/, there is no need to rebuild all ~150 targets. A new `detect` job inspects the changed files. If every changed file is inside exactly one src/main/target/<DIR>/ sub-directory, the target names are read from that directory's CMakeLists.txt and passed to a new `build-single-target` job which runs `ninja <targets>` on a single runner instead of the usual 15-job matrix. Any PR that touches files outside a single target directory falls through to the existing full matrix build unchanged. The `upload-artifacts` job is updated to accept output from either build path.
CI: build only affected target for single-target PRs
added support of icm45686 sensor
fix lsm6dxx driver lack gyroAlign setting issue.
Virtual pitot fixes
Blackbox acceleration/vibration fixes
|
Test firmware build ready — commit Download firmware for PR #11457 228 targets built. Find your board's
|
xznhj8129
pushed a commit
to xznhj8129/inav
that referenced
this pull request
Apr 4, 2026
Maintenance 9.x to Maintenance-10.x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.