Files
PX4-Autopilot/docs/en/releases/1.18.md

368 lines
55 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PX4-Autopilot v1.18.0 Release Notes
<Badge type="warning" text="Beta" />
<script setup>
import { useData } from 'vitepress'
const { site } = useData();
</script>
<div v-if="site.title !== 'PX4 Guide (main)'">
<div class="custom-block danger">
<p class="custom-block-title">This page is on a release branch, and hence possibly out of date. <a href="https://docs.px4.io/main/en/releases/1.18">See the latest version</a>.</p>
</div>
<Redirect to="https://docs.px4.io/main/en/releases/1.18" />
</div>
PX4 v1.18 builds on [PX4 v1.17](../releases/1.17.md)
::: warning
PX4 v1.18 is in beta testing.
Update these notes with features that are going to be in `v1.18`.
For new features that aren't going into v1.18, update [`main`](../releases/main.md).
:::
## Read Before Upgrading
Please continue reading for [upgrade instructions](#upgrade-guide).
## Major Changes
- **New Guided Course flight mode (Fixed-Wing).** Holds a constant ground-track bearing, altitude, and airspeed with no manual input, controllable in flight from a GCS via `MAV_CMD_GUIDED_CHANGE_HEADING`, `MAV_CMD_DO_CHANGE_ALTITUDE`, and `MAV_CMD_DO_CHANGE_SPEED`. ([PX4-Autopilot#27156](https://github.com/PX4/PX4-Autopilot/pull/27156))
- **Software Bill of Materials (SBOM).** Every firmware build now automatically generates an SPDX 2.3 SBOM describing the sources that went into it (opt out with `PX4_SBOM_DISABLE=1`). ([PX4-Autopilot#26731](https://github.com/PX4/PX4-Autopilot/pull/26731))
- **MAVLink signing is now spec-compliant (breaking change).** Signing activates only when a valid key is present on the SD card, `SETUP_SIGNING` is accepted on any link (not just USB) but rejected while armed, and signing can be disabled with a signed all-zero key. The non-standard `MAV_SIGN_CFG` parameter was removed, and there is zero CPU/bandwidth overhead when signing is inactive. ([PX4-Autopilot#26894](https://github.com/PX4/PX4-Autopilot/pull/26894))
- **Manual control (RC) override reworked (breaking change).** The pilot now regains control based on how fast a stick is moved rather than by how far it is deflected. New [MAN_OVERRIDE_SPD](../advanced_config/parameter_reference.md#MAN_OVERRIDE_SPD) (normalized stick travel per second, default `1`, negative to disable) replaces the removed `COM_RC_OVERRIDE` bitmask and `COM_RC_STICK_OV` threshold; override now applies uniformly across auto and offboard modes. Existing `COM_RC_OVERRIDE=0` settings migrate to `MAN_OVERRIDE_SPD=-1`. Affects multicopters and VTOLs in MC mode. ([PX4-Autopilot#27041](https://github.com/PX4/PX4-Autopilot/pull/27041))
- **Runtime EKF2 sensor fusion control over MAVLink.** Fusion sources can now be toggled at runtime (`VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE`), a new [EKF2_SENS_EN](../advanced_config/parameter_reference.md#EKF2_SENS_EN) bitmask (replacing `EKF2_EN_BOOT`) selects enabled fusion sources, and a new `ESTIMATOR_SENSOR_FUSION_STATUS` MAVLink stream reports intended and active fusion masks to the GCS. ([PX4-Autopilot#26739](https://github.com/PX4/PX4-Autopilot/pull/26739))
- **Per-receiver GPS configuration.** Antenna lever-arm offsets, measurement delay, and device-ID matching moved from single global EKF2 parameters to per-receiver `SENS_GPS{0,1}_*` sets, enabling correct multi-GPS blending. Removes `EKF2_GPS_POS_X/Y/Z` and `EKF2_GPS_DELAY` (auto-migrated). ([PX4-Autopilot#26634](https://github.com/PX4/PX4-Autopilot/pull/26634), [PX4-Autopilot#26660](https://github.com/PX4/PX4-Autopilot/pull/26660))
- **UAVCAN node firmware flashing from the SD card.** The UAVCAN server can now flash connected CAN nodes directly from `.bin` files on the SD card, tracking versions in an `FW.db` database and reflashing any node whose version does not match. ([PX4-Autopilot#27043](https://github.com/PX4/PX4-Autopilot/pull/27043))
- **[Serial Passthrough](../uart/serial_passthrough.md) over MAVLink.** The new `serialpassthrough` driver lets MAVLink clients read from and write to flight controller serial ports (TEL1/2, GPS1/2, TEL3/4) via `SERIAL_CONTROL`, so connected devices can be configured without unplugging them from the vehicle. On STM32F7/H7 boards, ESC signal pins can also be written via a software bit-bang UART. ([PX4-Autopilot#27605](https://github.com/PX4/PX4-Autopilot/pull/27605))
- **PX4 for ModalAI VOXL 2 ships as a Debian package.** The separate VOXL 2 board variants were merged into a single build, packaged as `voxl-px4_*_arm64.deb` in CI and published with every PX4 release. ([PX4-Autopilot#26727](https://github.com/PX4/PX4-Autopilot/pull/26727))
- **Hardware bench testing (px4bench).** New toolkit (`Tools/bench_test/`) for automated firmware qualification on a real flight controller over USB: it flashes and verifies the firmware identity, runs boot, communication, storage, parameter-persistence, and serial-loopback checks, and can fly a full SIH auto mission on the FMU itself, writing machine-readable reports with full firmware traceability. See [Hardware Bench Testing](../test_and_ci/bench_testing.md). ([PX4-Autopilot#27823](https://github.com/PX4/PX4-Autopilot/pull/27823))
## Upgrade Guide
For users upgrading from v1.17, please take a moment to review the following before flying:
1. **Re-check manual control override behaviour.**
The pilot now regains control based on how fast a stick is moved rather than by how far it is deflected, and override applies uniformly across auto and offboard modes. The `COM_RC_OVERRIDE` bitmask and `COM_RC_STICK_OV` threshold are replaced by [MAN_OVERRIDE_SPD](../advanced_config/parameter_reference.md#MAN_OVERRIDE_SPD) (normalized stick travel per second, default `1`, negative to disable). `COM_RC_OVERRIDE=0` is migrated to `MAN_OVERRIDE_SPD=-1`; any other customization must be re-tuned. Affects multicopters and VTOLs in MC mode.
([PX4-Autopilot#27041](https://github.com/PX4/PX4-Autopilot/pull/27041))
2. **Re-provision MAVLink signing.**
Signing is now spec-compliant: it activates only when a valid key is present on the SD card, and the non-standard `MAV_SIGN_CFG` parameter has been removed. `SETUP_SIGNING` is accepted on any link but rejected while armed. If you used signing in v1.17, re-provision the key from your GCS and confirm it supports the standard flow.
([PX4-Autopilot#26894](https://github.com/PX4/PX4-Autopilot/pull/26894))
3. **Migrate EKF2 fusion source selection.**
`EKF2_EN_BOOT` is replaced by the [EKF2_SENS_EN](../advanced_config/parameter_reference.md#EKF2_SENS_EN) bitmask selecting which sensor fusion sources are enabled; fusion sources can additionally be toggled at runtime over MAVLink.
([PX4-Autopilot#26739](https://github.com/PX4/PX4-Autopilot/pull/26739))
4. **Verify per-receiver GPS configuration.**
Antenna lever-arm offsets and measurement delay moved from the global `EKF2_GPS_POS_X/Y/Z` and `EKF2_GPS_DELAY` parameters to per-receiver `SENS_GPS0_*` / `SENS_GPS1_*` sets matched by device ID. Values are auto-migrated, but multi-GPS setups should verify each receiver's offsets after upgrading.
([PX4-Autopilot#26634](https://github.com/PX4/PX4-Autopilot/pull/26634), [PX4-Autopilot#26660](https://github.com/PX4/PX4-Autopilot/pull/26660))
5. **Review log rotation defaults.**
Log rotation is now enabled by default: each log file is capped at [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE) (default `1024` MB) and cleanup keeps at least `(100 - SDLOG_ROTATE)%` of the disk free (default 10%), running at log start rather than boot. `SDLOG_DIRS_MAX` is now an orthogonal directory-count cap defaulting to `0` (disabled) and no longer enforces the old implicit ~300 MB free-space floor; if you relied on that floor, set [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) instead. See [Log Cleanup](../dev_log/logging.md#log-cleanup).
6. **Update custom logger topic files.**
`etc/logging/logger_topics.txt` on the SD card is now appended on top of the selected logging profile instead of replacing the entire topic set. Keep only the extra topics you want in the file.
([PX4-Autopilot#27462](https://github.com/PX4/PX4-Autopilot/pull/27462))
7. **Check removed commander parameters.**
`COM_FLT_PROFILE`, `COM_KILL_DISARM`, `COM_MOT_TEST_EN`, `COM_TAKEOFF_ACT`, `COM_HLDL_REG_T`, `COM_ARM_SDCARD`, `COM_IMB_PROP_ACT`, `COM_OBC_LOSS_T`, and `COM_LKDOWN_TKO` are removed and their previous default behaviour is now fixed (see the removed-parameters table under [Common](#common)). In particular, the vehicle now always switches to Hold after takeoff; if you relied on `COM_TAKEOFF_ACT` to continue into a mission, take off in Mission mode instead.
8. **Migrate landing yaw/position nudging.**
`MPC_LAND_RC_HELP` is replaced by Bit 1 of [MPC_AUTO_NUDGING](../advanced_config/parameter_reference.md#MPC_AUTO_NUDGING) (auto-migrated). Bit 0 enables the new yaw nudging in all auto modes.
([PX4-Autopilot#27691](https://github.com/PX4/PX4-Autopilot/pull/27691))
9. **Re-tune motor failure detection offsets.**
`MOTFAIL_LOW_OFF` and `MOTFAIL_HIGH_OFF` are replaced by a single [MOTFAIL_OFF](../advanced_config/parameter_reference.md#MOTFAIL_OFF) (default `10` A) triggering on absolute current deviation.
([PX4-Autopilot#26990](https://github.com/PX4/PX4-Autopilot/pull/26990))
10. **Update GCS/companion software that uses deprecated MAVLink request commands.**
`MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES`, `MAV_CMD_REQUEST_PROTOCOL_VERSION`, `MAV_CMD_GET_HOME_POSITION`, `MAV_CMD_REQUEST_FLIGHT_INFORMATION`, and `MAV_CMD_REQUEST_STORAGE_INFORMATION` are removed; use `MAV_CMD_REQUEST_MESSAGE` instead.
([PX4-Autopilot#27251](https://github.com/PX4/PX4-Autopilot/pull/27251), [PX4-Autopilot#27252](https://github.com/PX4/PX4-Autopilot/pull/27252))
11. **Update AFBR-S50 startup scripts.**
The `-r` command-line rotation flag is removed; set the mounting orientation via [SENS_AFBR_ROT](../advanced_config/parameter_reference.md#SENS_AFBR_ROT) instead.
([PX4-Autopilot#27385](https://github.com/PX4/PX4-Autopilot/pull/27385))
## Hardware Support
### New Flight Controllers
- [CUAV X25-MEGA](../flight_controller/cuav_x25-mega.md): STM32H743 autopilot for commercial integration, with triple-redundant heated IMUs (ADIS16607 primary), dual barometers, and an RM3100 compass. ([PX4-Autopilot#26664](https://github.com/PX4/PX4-Autopilot/pull/26664))
- [CUAV X25-SUPER](../flight_controller/cuav_x25-super.md): STM32H743 autopilot in the same family as the X25-MEGA, with a Murata SCH16T primary IMU, triple-redundant heated IMUs, dual barometers, and an RM3100 compass. ([PX4-Autopilot#26474](https://github.com/PX4/PX4-Autopilot/pull/26474))
- [Corvon V5](../flight_controller/corvon_v5.md): Pixhawk FMUv5-standard board (STM32F765) with triple IMUs (ICM-20689, ICM-20602, BMI088), IST8310 magnetometer, and MS5611 barometer. ([PX4-Autopilot#26286](https://github.com/PX4/PX4-Autopilot/pull/26286))
- [Corvon 743v2](../flight_controller/corvon_743v2.md): upgrade of the 743v1 with dual IMUs (ICM-42688P, BMI088), BMP581 barometer, a DJI O4 Air Unit connector, and onboard Bluetooth. ([PX4-Autopilot#27569](https://github.com/PX4/PX4-Autopilot/pull/27569))
- [AEDROX AEDROXH7](../flight_controller/aedrox_aedroxh7.md): STM32H743-based FPV/racing flight controller (ICM-42688-P IMU, DPS310 barometer, W25N NAND flash, MAX7456 OSD, 8 bidirectional-DShot outputs). ([PX4-Autopilot#27226](https://github.com/PX4/PX4-Autopilot/pull/27226))
- [CBUnmanned H753-SOM](../flight_controller/cbunmanned_h753-som.md): System-on-Module built around the STM32H753 with dual ICM-42670-P IMUs, designed to be mounted on a vehicle-specific carrier board. ([PX4-Autopilot#27234](https://github.com/PX4/PX4-Autopilot/pull/27234))
- [3DR Control N1](../flight_controller/3dr_ctrl-n1.md): compact low-profile STM32H743 flight controller (dual IIM-42653 IMUs, AK09940A magnetometer, DPS368 barometer) for use with a carrier board. This board bring-up also introduced the AKM AK09940A magnetometer driver. ([PX4-Autopilot#27395](https://github.com/PX4/PX4-Autopilot/pull/27395))
- **ARK FMU-v6s**: a low-cost variant of the ARK V6X (single IIM-42653 IMU, IIS2MDC magnetometer, BMP390 barometer). ([PX4-Autopilot#26631](https://github.com/PX4/PX4-Autopilot/pull/26631))
- [Gear Up AirBrainH743](../flight_controller/gearup_airbrainh743.md): STM32H743 flight controller with DPS310 barometer, LIS2MDL magnetometer, and 128 MB NAND flash for SD-card-free logging. ([PX4-Autopilot#26239](https://github.com/PX4/PX4-Autopilot/pull/26239))
- [X-MAV AP-H743r1](../flight_controller/x-mav_ap-h743r1.md): STM32H743 autopilot with a dedicated STM32F103 IO processor, dual IMUs (ICM-42688-P or BMI270 depending on version), and SPL06 barometer. ([PX4-Autopilot#25967](https://github.com/PX4/PX4-Autopilot/pull/25967))
- [MicoAir H743-Lite](../flight_controller/micoair743-lite.md): compact STM32H743 flight controller with an ICM-45686 IMU and integrated Bluetooth telemetry. ([PX4-Autopilot#25777](https://github.com/PX4/PX4-Autopilot/pull/25777))
- [SVehicle-E2](../flight_controller/svehicle_e2.md): STM32H753 autopilot with a dedicated STM32F103 IO processor, triple IMUs (BMI088, ICM-42688-P, ICM-20649), and dual ICP-20100 barometers. ([PX4-Autopilot#25578](https://github.com/PX4/PX4-Autopilot/pull/25578))
### New Build Targets for Existing Hardware
- Airship build variant for the FMU-v6x (`make px4_fmu-v6x_airship`), enabling the airship attitude controller and Cloudship airframe while disabling the multicopter, fixed-wing, and VTOL controllers. ([PX4-Autopilot#27739](https://github.com/PX4/PX4-Autopilot/pull/27739))
- Firmware-release build target for the SAAM saampixv1_1 flight controller.
### New Sensors & Peripherals
- ARK MAG DroneCAN magnetometer node. ([PX4-Autopilot#25822](https://github.com/PX4/PX4-Autopilot/pull/25822))
- [sbgECom INS](../sensor/sbgecom.md) driver for SBG Systems inertial navigation sensors. ([PX4-Autopilot#24137](https://github.com/PX4/PX4-Autopilot/pull/24137))
- Sony AS-DT1 [distance sensor](../sensor/sony_asdt1.md) driver, with mounting orientation configurable via a rotation parameter (enabled on FMU-v6XRT). ([PX4-Autopilot#27769](https://github.com/PX4/PX4-Autopilot/pull/27769))
- Analog Devices ADIS1657x IMU driver. ([PX4-Autopilot#27239](https://github.com/PX4/PX4-Autopilot/pull/27239))
- Analog Devices ADIS1650x IMU driver (ADIS16500/16501/16505/16507 family). ([PX4-Autopilot#27240](https://github.com/PX4/PX4-Autopilot/pull/27240))
- ST LSM6DSV16X IMU driver, enabled as a probe-based alternative IMU on [Pixhawk 6C](../flight_controller/pixhawk6c.md). ([PX4-Autopilot#26951](https://github.com/PX4/PX4-Autopilot/pull/26951))
- LSM6DSV 32X and DSK320X variant support in the ST LSM6DSV IMU driver. ([PX4-Autopilot#27523](https://github.com/PX4/PX4-Autopilot/pull/27523))
- [Hiwonder 4-channel encoder motor module](../peripherals/hiwonder_emm.md) driver, enabled via [HIWONDER_EMM_EN](../advanced_config/parameter_reference.md#HIWONDER_EMM_EN) (started from `rc.rover`). ([PX4-Autopilot#27229](https://github.com/PX4/PX4-Autopilot/pull/27229))
- TI ADS7128 I2C ADC driver. ([PX4-Autopilot#26471](https://github.com/PX4/PX4-Autopilot/pull/26471))
- AUAV L60D support in the AUAV differential pressure sensor driver. ([PX4-Autopilot#27219](https://github.com/PX4/PX4-Autopilot/pull/27219))
- Infineon DPS368 support in the DPS310 barometer driver, selectable with the `-8` start flag. ([PX4-Autopilot#27724](https://github.com/PX4/PX4-Autopilot/pull/27724))
- [VectorNav INS](../sensor/vectornav.md) driver: added options to select the IMU output rate and the serial output port. ([PX4-Autopilot#27318](https://github.com/PX4/PX4-Autopilot/pull/27318))
- AFBR-S50 rangefinder: mounting orientation is now set via [SENS_AFBR_ROT](../advanced_config/parameter_reference.md#SENS_AFBR_ROT) instead of the removed `-r` command-line flag. ([PX4-Autopilot#27385](https://github.com/PX4/PX4-Autopilot/pull/27385))
### Existing Boards: Improvements
- Accton Godwit GA1: ICM45686 IMU support. ([PX4-Autopilot#27281](https://github.com/PX4/PX4-Autopilot/pull/27281))
- ZeroOne X6 Series V2: TDK IIM42652 IMU and Bosch BMP581 barometer support. ([PX4-Autopilot#27475](https://github.com/PX4/PX4-Autopilot/pull/27475))
- ZeroOne X6: BMM350 compass compatibility. ([PX4-Autopilot#26870](https://github.com/PX4/PX4-Autopilot/pull/26870))
- [Pixhawk 6C](../flight_controller/pixhawk6c.md): RM3100 fallback for the internal compass. ([PX4-Autopilot#27299](https://github.com/PX4/PX4-Autopilot/pull/27299))
- ModalAI VOXL 2: the separate board variants were merged into a single build, and PX4 for VOXL 2 is now packaged as a Debian package (`voxl-px4_*_arm64.deb`) that is built in CI and published with every PX4 release. ([PX4-Autopilot#26727](https://github.com/PX4/PX4-Autopilot/pull/26727))
- ModalAI VOXL 2: INA226 and INA228 power monitor support, selectable via the `POWER_MANAGER` startup option, and the Lightware laser rangefinder driver enabled. ([PX4-Autopilot#26840](https://github.com/PX4/PX4-Autopilot/pull/26840), [PX4-Autopilot#27620](https://github.com/PX4/PX4-Autopilot/pull/27620))
### Notable Fixes
- STM32H7 bootloaders rebuilt with the uncorrectable-flash-ECC scrub, preventing a torn parameter-flash write from bricking the board on every subsequent boot. The `bl_update` command is now included so fielded boards can apply the new bootloader via [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE) without a debugger. ([PX4-Autopilot#27715](https://github.com/PX4/PX4-Autopilot/pull/27715))
- DShot 3D mode: deadzone inputs now send an explicit motor-stop command instead of spinning the motor at minimum throttle, and the deadband is inclusive on both ends. ([PX4-Autopilot#26685](https://github.com/PX4/PX4-Autopilot/pull/26685))
- Multi-bank Invensense IMUs (IIM-426xx/ICM-42xxx families) no longer get stuck failing to probe until a power cycle when a soft reset leaves a non-zero register bank selected. ([PX4-Autopilot#27117](https://github.com/PX4/PX4-Autopilot/pull/27117))
- SPL06 barometer: fixed an SPI read off-by-one that dropped data bytes. ([PX4-Autopilot#27074](https://github.com/PX4/PX4-Autopilot/pull/27074))
- PAW3902/PAA3905 optical flow sensors now report the actual accumulated integration timespan instead of a hardcoded per-mode interval, fixing flow scaling whenever reads span more than one frame period. ([PX4-Autopilot#27418](https://github.com/PX4/PX4-Autopilot/pull/27418))
- VL53L0X rangefinder: invalid 8.19 m readings are filtered out and measurements now carry a quality field; VL53L1X maps its range status to the quality field. ([PX4-Autopilot#27214](https://github.com/PX4/PX4-Autopilot/pull/27214), [PX4-Autopilot#27355](https://github.com/PX4/PX4-Autopilot/pull/27355), [PX4-Autopilot#27308](https://github.com/PX4/PX4-Autopilot/pull/27308))
- PCA9685 PWM output board now uses the correct internal oscillator frequency, so configured servo PWM rates match the actual output. ([PX4-Autopilot#27425](https://github.com/PX4/PX4-Autopilot/pull/27425))
- MAVLink OpenDroneID Basic ID messages are now forwarded to DroneCAN Remote ID peripherals. ([PX4-Autopilot#27274](https://github.com/PX4/PX4-Autopilot/pull/27274))
## Common
- [Remote ID (Open Drone ID) in-flight failsafe](../peripherals/remote_id.md): extended [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) to also trigger a configurable failsafe action (Return, Land, or Terminate) if the Remote ID heartbeat is lost while airborne. Users previously on `COM_ARM_ODID=2` retain the same arming behaviour; set to `3` or higher to enable the in-flight action. ([PX4-Autopilot#27029](https://github.com/PX4/PX4-Autopilot/pull/27029))
- [QGroundControl Bootloader Update](../advanced_config/bootloader_update.md#qgc-bootloader-update-sys-bl-update) via the [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE) parameter has been re-enabled after being broken for a number of releases. ([PX4-Autopilot#25032: build: romf: fix generation of rc.board_bootloader_upgrade](https://github.com/PX4/PX4-Autopilot/pull/25032)).
- [Feature: Allow prioritization of manual control inputs based on their instance number in ascending or descending order](../config/manual_control.md#px4-configuration). ([PX4-Autopilot#25602: Ascending and descending manual control input priorities](https://github.com/PX4/PX4-Autopilot/pull/25602)).
- Quick magnetometer calibration now supports specifying an arbitrary initial heading ([PX4-Autopilot#24637](https://github.com/PX4/PX4-Autopilot/pull/24637))
- Removed parameters:
| Name | Notes |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `COM_FLT_PROFILE` | Unused ([PX4-Autopilot#26735](https://github.com/PX4/PX4-Autopilot/pull/26735)) |
| `COM_KILL_DISARM` | Autopilot now always disarms if still killed after 5 seconds (previous default). ([PX4-Autopilot#26736](https://github.com/PX4/PX4-Autopilot/pull/26736)) |
| `COM_MOT_TEST_EN` | Motor tests now always possible (was the default). ([PX4-Autopilot#26775](https://github.com/PX4/PX4-Autopilot/pull/26775)) |
| `COM_TAKEOFF_ACT` | Vehicle always switches to Hold mode when the takeoff is done. If you want to automatically do a mission, take off in Mission mode. ([PX4-Autopilot#26808](https://github.com/PX4/PX4-Autopilot/pull/26808)) |
| `COM_HLDL_REG_T` | When a high latency link is regained it's always considered regained immediately (was the default). ([PX4-Autopilot#26809](https://github.com/PX4/PX4-Autopilot/pull/26809)) |
| `COM_ARM_SDCARD` | There's now always a warning when the autopilot SD card is missing (was the default). Boards that don't have an SD card need to skip the check with a compile time define. ([PX4-Autopilot#27259](https://github.com/PX4/PX4-Autopilot/pull/27259)) |
| `COM_IMB_PROP_ACT` | There's now always a warning when imbalanced propellers (high vibration) is detected (was the default). ([PX4-Autopilot#27260](https://github.com/PX4/PX4-Autopilot/pull/27260)) |
| `COM_OBC_LOSS_T` | Timeout for missing heartbeats from the onboard computer is always 5 seconds (was the default). ([PX4-Autopilot#27261](https://github.com/PX4/PX4-Autopilot/pull/27261)) |
| `COM_LKDOWN_TKO` | Takeoff failure detection always runs for 3 seconds (was the default). ([PX4-Autopilot#27262](https://github.com/PX4/PX4-Autopilot/pull/27262)) |
- [Serial Passthrough (MAVLink SERIAL_CONTROL)](../uart/serial_passthrough.md): new `serialpassthrough` driver enables MAVLink clients to read from and write to FC serial ports (TEL1/2, GPS1/2, TEL3/4).
On STM32F7/H7 boards, ESC signal pins can also be written via a software bit-bang UART (device IDs 2027): note that a bridge application is also required, so this functionality is not usable out of the box.
([PX4-Autopilot#27605: feat(drivers): implemented serial passthrough](https://github.com/PX4/PX4-Autopilot/pull/27605)).
- UAVCAN: firmware can now be flashed onto connected CAN nodes directly from the SD card. Place node firmware `.bin` files at the card root or in `/fs/microsd/ufw_staging/`; on boot the UAVCAN server migrates them into `/fs/microsd/ufw/`, tracks them in an `FW.db` database, and flashes any connected node whose firmware version does not match. ([PX4-Autopilot#27043](https://github.com/PX4/PX4-Autopilot/pull/27043))
## Control
- Added new flight mode(s): [Altitude Cruise (MC)](../flight_modes_mc/altitude_cruise.md), Altitude Cruise (FW).
For fixed-wing the mode behaves the same as Altitude mode but you can disable the manual control loss failsafe. ([PX4-Autopilot#25435: Add new flight mode: Altitude Cruise](https://github.com/PX4/PX4-Autopilot/pull/25435)).
- Multicopter attitude control gains an optional feed-forward reference model: a 2nd-order critically-damped model smooths the attitude setpoint and feeds its angular-rate derivative onto the rate setpoint, removing the steady-state ramp-tracking lag of the pure-P attitude law. Configured via [MC_REF_W_N](../advanced_config/parameter_reference.md#MC_REF_W_N), [MC_REF_FF](../advanced_config/parameter_reference.md#MC_REF_FF) (default `0` = disabled), and [MC_REF_FF_MAX](../advanced_config/parameter_reference.md#MC_REF_FF_MAX). Shipped disabled by default; `MC_REF_FF=0` is the exact legacy behavior. ([PX4-Autopilot#27255](https://github.com/PX4/PX4-Autopilot/pull/27255))
- New [COM_FLTMODE_BOOT](../advanced_config/parameter_reference.md#COM_FLTMODE_BOOT) sets the flight mode the vehicle boots into before any RC input or mode command is received. Default is Hold; Manual, Altitude, Position, Mission, Stabilized, Takeoff, and external modes can also be selected. ([PX4-Autopilot#27641](https://github.com/PX4/PX4-Autopilot/pull/27641))
- Stick inputs are now ignored while an arm or kill gesture is being held: during an arm gesture the throttle and yaw sticks are neutralized, and during a kill gesture all four channels are neutralized, so holding the sticks in the gesture corners no longer feeds spurious commands into the controller.
- New [MPC_Z_ERR_MAX](../advanced_config/parameter_reference.md#MPC_Z_ERR_MAX) (default `1.0` m) caps how far the smoothed vertical trajectory may lead the vehicle, the vertical analog of `MPC_XY_ERR_MAX`. This suppresses altitude overshoots caused by a noisy altitude reference, such as a mission setpoint jittering as the home altitude estimate is refined in flight. ([PX4-Autopilot#27607](https://github.com/PX4/PX4-Autopilot/pull/27607))
## Safety
- Rotary-wing vehicles now support uncommanded altitude loss detection: if the vehicle descends more than [FD_ALT_LOSS](../advanced_config/parameter_reference.md#FD_ALT_LOSS) meters below its setpoint in altitude-controlled flight, flight termination (and parachute deployment) is triggered. See [Altitude Loss Trigger](../config/safety.md#altitude-loss-trigger). ([PX4-Autopilot#26837](https://github.com/PX4/PX4-Autopilot/pull/26837))
- [Parachute health failsafe](../peripherals/parachute.md): extended [COM_PARACHUTE](../advanced_config/parameter_reference.md#COM_PARACHUTE) from a boolean into a configurable arming check and in-flight failsafe action parameter (Warning, Error, Return, or Land). The previously enabled value `COM_PARACHUTE=1` (Warning) now only warns without preventing arming; use `COM_PARACHUTE=2` (Error) or higher to prevent arming when the parachute system is missing or unhealthy. ([PX4-Autopilot#26918](https://github.com/PX4/PX4-Autopilot/pull/26918))
- [GNSS check failsafe](../config/safety.md#gnss-check-failsafe): new failsafe that monitors the number of usable GNSS receivers with a 3D fix and their position consistency. The required number of receivers is set via [SYS_HAS_NUM_GNSS](../advanced_config/parameter_reference.md#SYS_HAS_NUM_GNSS) and the failsafe action via [COM_GNSSLOSS_ACT](../advanced_config/parameter_reference.md#COM_GNSSLOSS_ACT). ([PX4-Autopilot#26863](https://github.com/PX4/PX4-Autopilot/pull/26863))
- New companion computer over-temperature warning: [COM_CC_TEMP_WARN](../advanced_config/parameter_reference.md#COM_CC_TEMP_WARN) (default `80` C, set `-1` to disable) raises a warning when the reported companion computer temperature exceeds the threshold. ([PX4-Autopilot#27637](https://github.com/PX4/PX4-Autopilot/pull/27637))
- New ESC over-temperature warning: [COM_ESC_OT_WARN](../advanced_config/parameter_reference.md#COM_ESC_OT_WARN) (default `90` C, set `-1` to disable) raises a warning when a reported ESC temperature exceeds the threshold. ([PX4-Autopilot#27626](https://github.com/PX4/PX4-Autopilot/pull/27626))
- New actuator group preflight check verifies configured functional actuator groups (torque/thrust/tilt) before arming. ([PX4-Autopilot#27283](https://github.com/PX4/PX4-Autopilot/pull/27283))
- Motor under/over-current failure detection offsets `MOTFAIL_LOW_OFF` and `MOTFAIL_HIGH_OFF` are replaced by a single [MOTFAIL_OFF](../advanced_config/parameter_reference.md#MOTFAIL_OFF) parameter (default `10` A); the check now triggers on the absolute current deviation. ([PX4-Autopilot#26990](https://github.com/PX4/PX4-Autopilot/pull/26990))
- Rejected missions now report the reason to the GCS (e.g. empty mission, dataman read failure) instead of failing silently. ([PX4-Autopilot#27254](https://github.com/PX4/PX4-Autopilot/pull/27254))
- Arming with [RTL_TYPE](../advanced_config/parameter_reference.md#RTL_TYPE) set to `5` (safe points only) no longer requires a rally point to be uploaded: the vehicle falls back to returning to the home position when no rally point is defined. ([PX4-Autopilot#27773](https://github.com/PX4/PX4-Autopilot/pull/27773))
- GCS connection-loss failsafe no longer triggers flight termination while the vehicle is disarmed, preventing a termination state from latching before or at arming after a ground station link loss. ([PX4-Autopilot#26820](https://github.com/PX4/PX4-Autopilot/pull/26820))
- New [NAV_RCL_ACT](../advanced_config/parameter_reference.md#NAV_RCL_ACT) option `7` (Hold without failsafe): on manual control (RC) loss the vehicle holds position but does not enter a failsafe state, so an external mode or offboard controller can keep commanding it. ([PX4-Autopilot#27792](https://github.com/PX4/PX4-Autopilot/pull/27792))
- Control allocator now stops the motors when it receives a NaN thrust setpoint, instead of forwarding invalid values to the ESCs. ([PX4-Autopilot#26494](https://github.com/PX4/PX4-Autopilot/pull/26494))
## Estimation
- Added [EKF2_POS_LOCK](../advanced_config/parameter_reference.md#EKF2_POS_LOCK) to force constant position fusion while landed, useful for vehicles relying on dead-reckoning sensors (airspeed, optical flow) that provide no aiding on the ground.
- EKF2 fusion sources can now be toggled at runtime over MAVLink (`VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE`), and the new [EKF2_SENS_EN](../advanced_config/parameter_reference.md#EKF2_SENS_EN) bitmask (replacing `EKF2_EN_BOOT`) selects which sensor fusion sources are enabled. A new `ESTIMATOR_SENSOR_FUSION_STATUS` MAVLink stream reports the intended and active fusion source bitmasks to the GCS. ([PX4-Autopilot#26739](https://github.com/PX4/PX4-Autopilot/pull/26739))
- EKF2 now uses latitude-dependent normal gravity (Somigliana model) in the state and output predictor instead of a fixed 9.80665 m/s^2, removing a ~0.5% error that fed directly into the vertical-velocity prediction. Before a global latitude is known it stays at the constant value, preserving prior behavior. ([PX4-Autopilot#27602](https://github.com/PX4/PX4-Autopilot/pull/27602))
- EKF2 now limits the maximum heading change rate from magnetometer fusion to prevent rapid convergence to a wrong heading when heading variance is high. ([PX4-Autopilot#27551](https://github.com/PX4/PX4-Autopilot/pull/27551))
- EKF2 adds ranging beacon (range-only) fusion support, with a MAVLink `RANGING_BEACON` parser and new parameters [EKF2_RNGBC_CTRL](../advanced_config/parameter_reference.md#EKF2_RNGBC_CTRL), [EKF2_RNGBC_DELAY](../advanced_config/parameter_reference.md#EKF2_RNGBC_DELAY), [EKF2_RNGBC_GATE](../advanced_config/parameter_reference.md#EKF2_RNGBC_GATE), and [EKF2_RNGBC_NOISE](../advanced_config/parameter_reference.md#EKF2_RNGBC_NOISE). Beacon range is fused horizontally only (no altitude correction). ([PX4-Autopilot#26772](https://github.com/PX4/PX4-Autopilot/pull/26772))
- GPS antenna position offsets are now configured per receiver via [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX)/`_OFFY`/`_OFFZ` (and the `SENS_GPS1_*` set), matched to a physical receiver by device ID ([SENS_GPS0_ID](../advanced_config/parameter_reference.md#SENS_GPS0_ID)/`SENS_GPS1_ID`), replacing the single `EKF2_GPS_POS_X/Y/Z` set. ([PX4-Autopilot#26634](https://github.com/PX4/PX4-Autopilot/pull/26634))
- GPS measurement delay is now configured per receiver via [SENS_GPS0_DELAY](../advanced_config/parameter_reference.md#SENS_GPS0_DELAY) and [SENS_GPS1_DELAY](../advanced_config/parameter_reference.md#SENS_GPS1_DELAY), replacing `EKF2_GPS_DELAY` (automatically migrated). The delay is applied before receiver blending; PPS time correction, when active, takes priority. ([PX4-Autopilot#26660](https://github.com/PX4/PX4-Autopilot/pull/26660))
- PPS time synchronization can now select which GPS receiver to correlate against by device ID via the new [PPS_CAP_GPS_ID](../advanced_config/parameter_reference.md#PPS_CAP_GPS_ID) parameter (reboot required), avoiding dependence on uORB instance ordering in multi-GPS setups. See [PPS Time Synchronization](../advanced/pps_time_sync.md). ([PX4-Autopilot#26719](https://github.com/PX4/PX4-Autopilot/pull/26719))
- DroneCAN GNSS receivers can now provide UTC-coherent timestamps: a new leaky-min clock-offset estimator maps a node's PPS-anchored `Fix2.timestamp` into the flight controller's HRT and subtracts the node's processing delay. Nodes that do not provide a valid UTC timestamp fall back to the `SENS_GPS*_DELAY` path. ([PX4-Autopilot#27427](https://github.com/PX4/PX4-Autopilot/pull/27427))
- EKF2 can now use GNSS height as the height reference when GNSS is in dead-reckoning mode, provided it can start without requiring a reset. ([PX4-Autopilot#27766](https://github.com/PX4/PX4-Autopilot/pull/27766))
- EKF2 now counts NED-frame external vision velocity fusion as a horizontal (NE) aiding source (and only counts vision position when it is in the NED frame), so vehicles aided only by vision velocity are no longer treated as dead-reckoning. ([PX4-Autopilot#27538](https://github.com/PX4/PX4-Autopilot/pull/27538))
## RC
- Parse ELRS Status and Link Statistics TX messages in the CRSF parser.
- Manual control (RC) override reworked: the pilot now regains control based on how fast a stick is moved rather than by how far it is deflected, so a statically-held or trimmed-off stick can no longer trigger an unwanted takeover. New [MAN_OVERRIDE_SPD](../advanced_config/parameter_reference.md#MAN_OVERRIDE_SPD) (normalized stick travel per second, default `1`, negative to disable) replaces the removed `COM_RC_OVERRIDE` bitmask and `COM_RC_STICK_OV` threshold; override now applies uniformly across auto and offboard modes. Existing `COM_RC_OVERRIDE=0` settings are migrated to `MAN_OVERRIDE_SPD=-1` on import. Only affects multicopters and VTOLs in MC mode. ([PX4-Autopilot#27041](https://github.com/PX4/PX4-Autopilot/pull/27041))
- CRSF receivers can now be put into bind mode from QGroundControl or the NSH console via `MAV_CMD_START_RX_PAIR`; the driver sends the CRSF bind frame over UART and rejects binding while armed or on singlewire setups. ([PX4-Autopilot#26790](https://github.com/PX4/PX4-Autopilot/pull/26790))
## Vehicle-Specific
### Multi-Rotor
- Removed parameters:
| Name | Notes |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MPC_LAND_RC_HELP` | Replaced by Bit 1 of [MPC_AUTO_NUDGING](../advanced_config/parameter_reference.md#MPC_AUTO_NUDGING). ([PX4-Autopilot#27691](https://github.com/PX4/PX4-Autopilot/pull/27691)) |
- Yaw stick nudging in auto modes ([MPC_AUTO_NUDGING](../advanced_config/parameter_reference.md#MPC_AUTO_NUDGING)). Bit 0 lets the yaw stick rotate vehicle heading during any auto mode (mission, RTL, hold, landing, takeoff) without switching modes. The heading is held when the stick is released and cleared on a flight mode switch. Requires stick override to be disabled ([MAN_OVERRIDE_SPD](../advanced_config/parameter_reference.md#MAN_OVERRIDE_SPD) = -1). ([PX4-Autopilot#27691](https://github.com/PX4/PX4-Autopilot/pull/27691))
### VTOL
- [Return mode VTOL Rally Point Approach Loiters](../flight_modes_vtol/return.md#vtol-rally-point-approach-loiters): VTOLs returning in fixed-wing mode can now use the approach loiter associated with the selected home/rally landing location (instead of home) to choose the most wind-aligned valid approach (if several are defined). ([PX4-Autopilot#27004: fix(navigator): rtl compute wind angle to select best land approach based on rally point location instead of home location](https://github.com/PX4/PX4-Autopilot/pull/27004))
### Fixed-wing
- New [Guided Course mode](../flight_modes_fw/guided_course.md): maintains a constant ground-track bearing, altitude, and airspeed with no manual stick input. Activated over MAVLink and accepts in-flight updates via `MAV_CMD_GUIDED_CHANGE_HEADING` (course), `MAV_CMD_DO_CHANGE_ALTITUDE` (altitude), and `MAV_CMD_DO_CHANGE_SPEED` (airspeed). ([PX4-Autopilot#27156](https://github.com/PX4/PX4-Autopilot/pull/27156))
- Rate feed-forward parameters [FW_RR_FF](../advanced_config/parameter_reference.md#FW_RR_FF), [FW_PR_FF](../advanced_config/parameter_reference.md#FW_PR_FF), and [FW_YR_FF](../advanced_config/parameter_reference.md#FW_YR_FF) now accept negative values (min lowered from `0` to `-10`). Negative values reduce setpoint-tracking aggressiveness while preserving disturbance rejection and are scaled quadratically with airspeed, whereas positive values compensate aerodynamic damping and scale linearly. ([PX4-Autopilot#27736](https://github.com/PX4/PX4-Autopilot/pull/27736))
- New [FW_WP_RST_DIST](../advanced_config/parameter_reference.md#FW_WP_RST_DIST) parameter (default `-1`, disabled): if a horizontal position reset larger than this distance occurs while flying between two mission waypoints, the vehicle flies directly to the current waypoint instead of rejoining the original line. ([PX4-Autopilot#27722](https://github.com/PX4/PX4-Autopilot/pull/27722))
- Internal combustion engine control gains a feed-forward PI idle-RPM governor, enabled by setting [ICE_IDLE_RPM](../advanced_config/parameter_reference.md#ICE_IDLE_RPM) above `0` (disabled by default). New gains [ICE_IDLE_RPM_P](../advanced_config/parameter_reference.md#ICE_IDLE_RPM_P), [ICE_IDLE_RPM_I](../advanced_config/parameter_reference.md#ICE_IDLE_RPM_I), and feed-forward throttle [ICE_IDLE_THR_FF](../advanced_config/parameter_reference.md#ICE_IDLE_THR_FF) tune the idle hold. ([PX4-Autopilot#27650](https://github.com/PX4/PX4-Autopilot/pull/27650))
- The performance model now warns when [FW_R_LIM](../advanced_config/parameter_reference.md#FW_R_LIM) is infeasible because the roll-compensated airspeed range is empty, prompting the user to raise the maximum airspeed. See [Weight and Altitude Tuning](../config_fw/weight_and_altitude_tuning.md). ([PX4-Autopilot#27547](https://github.com/PX4/PX4-Autopilot/pull/27547))
- TECS default for the height-rate feed-forward [FW_T_HRATE_FF](../advanced_config/parameter_reference.md#FW_T_HRATE_FF) increased from `0.3` to `0.5`. ([PX4-Autopilot#27218](https://github.com/PX4/PX4-Autopilot/pull/27218))
- Catapult/hand [launch detection](../flight_modes_fw/takeoff.md) now uses total acceleration magnitude instead of only the body-forward component, making detection insensitive to launcher mounting orientation. ([PX4-Autopilot#26857](https://github.com/PX4/PX4-Autopilot/pull/26857))
<!-- MOVED THIS TO v1.17
- [Fixed Wing Takeoff mode](../flight_modes_fw/takeoff.md) will now keep climbing with level wings on position loss.
A target takeoff waypoint can be set to control takeoff course and loiter altitude. ([PX4-Autopilot#25083](https://github.com/PX4/PX4-Autopilot/pull/25083)).
- Automatically suppress angular rate oscillations using [Gain compression](../features_fw/gain_compression.md). ([PX4-Autopilot#25840: FW rate control: add gain compression algorithm](https://github.com/PX4/PX4-Autopilot/pull/25840))
-->
### Rover
- Added a rover build target for the ARK Pi6X (`make ark_pi6x_rover`), enabling the Ackermann, differential, and mecanum rover modules and the RoboClaw motor driver. ([PX4-Autopilot#26296](https://github.com/PX4/PX4-Autopilot/pull/26296))
### Airship
- Added a Generic Airship airframe with two forward thrusters and a cruciform tail (elevators and rudders), alongside the existing Cloudship geometry. ([PX4-Autopilot#27697](https://github.com/PX4/PX4-Autopilot/pull/27697))
<!-- MOVED THIS TO v1.17
- Removed deprecated rover module ([PX4-Autopilot#25054](https://github.com/PX4/PX4-Autopilot/pull/25054)).
- Add support for [Apps & API](../flight_modes_rover/api.md) ([PX4-Autopilot#25074](https://github.com/PX4/PX4-Autopilot/pull/25074), [PX4-ROS2-Interface-Lib#140](https://github.com/Auterion/px4-ros2-interface-lib/pull/140)).
- Update [rover simulation](../frames_rover/index.md#simulation) ([PX4-Autopilot#25644](https://github.com/PX4/PX4-Autopilot/pull/25644)) (see [Simulation](#simulation) release note for details).
-->
## MAVLink
- Removed support for deprecated request commands `MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES`, `MAV_CMD_REQUEST_PROTOCOL_VERSION`, `MAV_CMD_GET_HOME_POSITION`, `MAV_CMD_REQUEST_FLIGHT_INFORMATION`, `MAV_CMD_REQUEST_STORAGE_INFORMATION` (Replaced by `MAV_CMD_REQUEST_MESSAGE`).
([PX4-Autopilot#27251: fix(mavlink): Remove deprecated MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES](https://github.com/PX4/PX4-Autopilot/pull/27251), [PX4-Autopilot#27252: fix(mavlink): Remove legacy mavlink message requestors#27252](https://github.com/PX4/PX4-Autopilot/pull/27252))
- MAVLink signing is now spec-compliant: signing activates only when a valid key is present on the SD card, `SETUP_SIGNING` is accepted on any link (not just USB) but rejected while armed, and signing can be disabled with a signed all-zero key. The non-standard `MAV_SIGN_CFG` parameter was removed and there is zero CPU/bandwidth overhead when signing is inactive. ([PX4-Autopilot#26894](https://github.com/PX4/PX4-Autopilot/pull/26894))
- MAVLink FTP now maps the `@MAV_LOG` virtual directory (per the MAVLink FTP spec) to the flight-stack log root, so a GCS can browse logs without knowing the on-disk path. ([PX4-Autopilot#27151](https://github.com/PX4/PX4-Autopilot/pull/27151))
- MAVLink FTP adds support for the `ListDirectoryWithTime` command, returning each file's last-modification time alongside the listing so a GCS can retrieve log timestamps without downloading the files (clients fall back to plain `ListDirectory` when unsupported). ([PX4-Autopilot#27542](https://github.com/PX4/PX4-Autopilot/pull/27542))
- Fragmented `GPS_RTCM_DATA` messages are now reassembled before injection to the GPS receiver, with a compatibility fallback for older QGroundControl builds that omit the final zero-length fragment, fixing RTK correction handling for multi-fragment RTCM streams. See [RTK GPS](../advanced/rtk_gps.md). ([PX4-Autopilot#27084](https://github.com/PX4/PX4-Autopilot/pull/27084))
- New `ESTIMATOR_SENSOR_FUSION_STATUS` MAVLink stream exposes per-sensor intended and active fusion bitmasks to the GCS. ([PX4-Autopilot#26739](https://github.com/PX4/PX4-Autopilot/pull/26739))
- The mission protocol now resends `MISSION_COUNT` if no `MISSION_ACK` is received, recovering from a dropped `MISSION_COUNT` during upload. ([PX4-Autopilot#26872](https://github.com/PX4/PX4-Autopilot/pull/26872))
- The MAVLink development dialect (`development.xml`) is no longer built into default targets; dedicated `mavlink-dev` build variants (fmu-v6x, sitl) are provided for prototyping unstable messages. ([PX4-Autopilot#25834](https://github.com/PX4/PX4-Autopilot/pull/25834))
- Added support for the `MAV_CMD_DO_SET_GLOBAL_ORIGIN` command, letting a GCS set the global origin used to convert local to global position. Enabled in release builds. ([PX4-Autopilot#24697](https://github.com/PX4/PX4-Autopilot/pull/24697), [PX4-Autopilot#27789](https://github.com/PX4/PX4-Autopilot/pull/27789))
- The `cellular_status` uORB message and MAVLink `CELLULAR_STATUS` stream gained extended fields for richer modem/link reporting. ([PX4-Autopilot#27760](https://github.com/PX4/PX4-Autopilot/pull/27760))
## Ethernet & Networking
- MAVLink over UDP on NuttX now sets a send timeout on the socket, so a saturated or stalled network link can no longer block the MAVLink sender indefinitely while waiting for IO buffers. ([PX4-Autopilot#26988](https://github.com/PX4/PX4-Autopilot/pull/26988))
- The uXRCE-DDS client no longer stalls under high UDP load. ([PX4-Autopilot#26161](https://github.com/PX4/PX4-Autopilot/pull/26161))
## ROS 2
- [External modes](../ros2/px4_ros2_control_interface.md) can now negotiate their setpoint type with PX4: a mode publishes a `SetpointConfig` declaring which setpoint it will send (direct actuators, goto, trajectory, rates, attitude, rover, 6-DOF trajectory, thrust/torque, position triplet, etc.) and PX4 replies with a `SetpointConfigReply` indicating whether the configuration is valid for the current vehicle, along with a configurable setpoint timeout. ([PX4-Autopilot#27683](https://github.com/PX4/PX4-Autopilot/pull/27683))
<!-- MOVED THIS TO v1.17
- [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [Fixed Wing lateral/longitudinal setpoint](../ros2/px4_ros2_control_interface.md#fw-lateral-longitudinal-setpoint) (`FwLateralLongitudinalSetpointType`) and [VTOL transitions](../ros2/px4_ros2_control_interface.md#controlling-a-vtol). ([PX4-Autopilot#24056](https://github.com/PX4/PX4-Autopilot/pull/24056)).
- [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [ROS-based waypoint missions](../ros2/px4_ros2_waypoint_missions.md).
-->
### uXRCE-DDS
- uXRCE-DDS, add support for DDS `v3`, ROS 2 Lyrical and Rolling ([PX4-Autopilot#27597](https://github.com/PX4/PX4-Autopilot/pull/27597))
- uXRCE-DDS topic bridging gained per-topic drain and unlimited-rate options, letting a topic be published as fast as it updates instead of at a fixed interval. ([PX4-Autopilot#27688](https://github.com/PX4/PX4-Autopilot/pull/27688))
### Zenoh
- Zenoh publisher options (reliability, priority, congestion control, express) are now configurable, both as common defaults and per-publisher overrides gated by the `ZENOH_PUB_OPTION_OVERRIDE` build option. ([PX4-Autopilot#27157](https://github.com/PX4/PX4-Autopilot/pull/27157))
- Added a Zenoh build variant (`zenoh.px4board`) for the ARKV6X flight controller. ([PX4-Autopilot#25887](https://github.com/PX4/PX4-Autopilot/pull/25887))
## Simulation
### SITL
- [X-Plane SITL](../sim_xplane/index.md): new SITL integration with airframes for the Cessna 172, Bayraktar TB2, EHang 184, Alia-250, and a quad tailsitter. ([PX4-Autopilot#22493](https://github.com/PX4/PX4-Autopilot/pull/22493))
- [RotorPy SITL](../sim_rotorpy/index.md): added support for the RotorPy multirotor simulator, launchable via the standard simulator start scripts. ([PX4-Autopilot#27116](https://github.com/PX4/PX4-Autopilot/pull/27116))
- MAVLink can now be bound to a specific network interface by setting the `PX4_NET_INTERFACE` environment variable. ([PX4-Autopilot#26385](https://github.com/PX4/PX4-Autopilot/pull/26385))
- The simulated GPS (`sensor_gps_sim`) now supports failure injection via `MAV_CMD_INJECT_FAILURE` (`FAILURE_UNIT_SENSOR_GPS`) with off, stuck, and wrong modes, selectable per receiver. ([PX4-Autopilot#27396](https://github.com/PX4/PX4-Autopilot/pull/27396))
- The simulated airspeed sensor (`sensor_airspeed_sim`) now supports off, stuck, and wrong failure injection via `MAV_CMD_INJECT_FAILURE`. ([PX4-Autopilot#27006](https://github.com/PX4/PX4-Autopilot/pull/27006))
### Gazebo
- Add [ridge world](../sim_gazebo_gz/worlds.md#ridge) for testing terrain following with 1D lidar. ([PX4-Autopilot#27600](https://github.com/PX4/PX4-Autopilot/pull/27600))
- The [gstreamer plugin](../sim_gazebo_gz/index.md) now supports streaming video from multiple cameras/vehicles simultaneously over UDP (base port plus instance offset); RTMP remains single-stream. ([PX4-Autopilot#27275](https://github.com/PX4/PX4-Autopilot/pull/27275))
### SIH
- Add option to set wind velocity ([PX4-Autopilot#26467](https://github.com/PX4/PX4-Autopilot/pull/26467))
- Added a quadratic thrust model and a hexacopter (`sihsim_hex`) airframe for more realistic multirotor simulation. ([PX4-Autopilot#26587](https://github.com/PX4/PX4-Autopilot/pull/26587))
- Added a propeller aerodynamic model with advance ratio, plus new HIL airframes including a hexacopter (`1105_rc_hexa_x_sih`). ([PX4-Autopilot#26720](https://github.com/PX4/PX4-Autopilot/pull/26720))
- Added ranging-beacon simulation with configurable measurement noise via [SIH_RNGBC_NOISE](../advanced_config/parameter_reference.md#SIH_RNGBC_NOISE) (default `30` m). ([PX4-Autopilot#26772](https://github.com/PX4/PX4-Autopilot/pull/26772))
- The simulator now publishes ESC telemetry (per-motor RPM and temperature) for testing ESC status handling in SITL. ([PX4-Autopilot#27626](https://github.com/PX4/PX4-Autopilot/pull/27626))
- Added a dedicated SIH SITL build target (`px4_sitl_sih`) that disables the Gazebo bridge/plugins, and taught `sitl_multiple_run.sh` to accept model and build-target arguments for multi-instance SIH runs. ([PX4-Autopilot#26672](https://github.com/PX4/PX4-Autopilot/pull/26672))
### HIL
- Sensor calibration is now disabled while running in hardware-in-the-loop, preventing accidental calibration of simulated sensors. ([PX4-Autopilot#26942](https://github.com/PX4/PX4-Autopilot/pull/26942))
<!-- MOVED THIS TO v1.17
- Overhaul rover simulation:
- Add synthetic differential rover model: [PX4-gazebo-models#107](https://github.com/PX4/PX4-gazebo-models/pull/107)
- Add synthetic mecanum rover model: [PX4-gazebo-models#113](https://github.com/PX4/PX4-gazebo-models/pull/113)
- Update synthetic ackermann rover model: [PX4-gazebo-models#117](https://github.com/PX4/PX4-gazebo-models/pull/117)
-->
## Debug & Logging
### Logging
- Logger: reworked log rotation and cleanup. Log rotation is now on by default, and cleanup runs at log start rather than boot so logs can be downloaded via FTP before being deleted.
- New [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE) (default `1024` MB) caps the size of a single log file; once reached, the logger closes the current file and starts a new one.
- New [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) (default `90`) sets the maximum disk usage percentage. Cleanup guarantees `(100 - SDLOG_ROTATE)%` of the disk stays free at all times, even while writing a new log file. Set `0` to disable space-based cleanup, `100` to allow filling the disk completely.
- `SDLOG_DIRS_MAX` is now an orthogonal cap on the number of log directories (default `0` = disabled), on top of the space-based cleanup driven by `SDLOG_ROTATE` and `SDLOG_MAX_SIZE`. SITL defaults to `7`.
- Logger: support for small flash storage (e.g. 128 MB W25N NAND on kakuteh7mini, kakuteh7v2, airbrainh743). Logs can now be written directly to an internal littlefs volume instead of requiring an SD card.
- Logger: topics listed in `etc/logging/logger_topics.txt` on the SD card are now appended on top of the selected logging profile instead of replacing the entire topic set. Previous behavior (the file overriding all profile topics) is gone; add only the extra topics you want. ([PX4-Autopilot#27462](https://github.com/PX4/PX4-Autopilot/pull/27462))
- Logger: the high-rate sensors logging profile now records `sensor_baro`, `sensor_mag`, `sensor_gps`, `sensor_gnss_relative`, `distance_sensor`, `sensor_optical_flow`, `vehicle_air_data`, `vehicle_magnetometer`, `vehicle_thrust_setpoint`, and `estimator_aid_src_baro_hgt` at 100 Hz. ([PX4-Autopilot#26922](https://github.com/PX4/PX4-Autopilot/pull/26922))
- [Asset Tracking](../debug/asset_tracking.md): Automatic tracking and logging of external device information including vendor name, firmware and hardware version, serial numbers. Currently supports DroneCAN devices. ([PX4-Autopilot#25617](https://github.com/PX4/PX4-Autopilot/pull/25617))
### Storage
- MTD/storage: added NOR flash support (with bulk erase) to the `mtd` subsystem and manifest, allowing NOR flash to be used as a storage backend (e.g. for parameters and littlefs volumes) on boards that provide it, such as FMU-v6s.
- New `mklittlefs` systemcmd for reformatting a littlefs volume from the NSH console, analogous to `mkfatfs` for FAT filesystems.
## Infrastructure
- SPDX 2.3 SBOM (software bill of materials) generation is now integrated into the firmware build via `cmake/sbom.cmake`. SBOMs are produced automatically as part of the build and can be disabled by setting the `PX4_SBOM_DISABLE=1` environment variable. ([PX4-Autopilot#26731](https://github.com/PX4/PX4-Autopilot/pull/26731))
- New `px4bench` [hardware bench testing](../test_and_ci/bench_testing.md) suite (`Tools/bench_test/`) qualifies a firmware build on a real NuttX board over USB: it flashes and verifies the firmware identity, then runs boot, communication, storage, parameter-persistence, and serial-loopback checks, plus an optional SIH auto mission flown on the FMU itself, writing machine-readable reports with full firmware traceability. Adds `bench` test build variants (e.g. FMU-v6XRT). ([PX4-Autopilot#27823](https://github.com/PX4/PX4-Autopilot/pull/27823))
- SITL can now be built with [AddressSanitizer and ThreadSanitizer](../test_and_ci/sanitizers.md) to catch memory errors and data races; a series of data races found this way in MAVLink and the lockstep scheduler were fixed. ([PX4-Autopilot#27606](https://github.com/PX4/PX4-Autopilot/pull/27606))
- Firmware upload now works from WSL2. When building inside WSL2, the uploader detects and uses the Windows Python interpreter (`python.exe`) to reach `COM<N>` serial ports that WSL2 cannot expose directly. ([PX4-Autopilot#27674](https://github.com/PX4/PX4-Autopilot/pull/27674))
- SITL Debian packages now declare their runtime dependencies (including Gazebo Harmonic) via `.deb` `Depends`, so `apt` resolves everything needed to run the simulator. ([PX4-Autopilot#27162](https://github.com/PX4/PX4-Autopilot/pull/27162), [PX4-Autopilot#27178](https://github.com/PX4/PX4-Autopilot/pull/27178))
- macOS development setup reworked: the toolchain installs via inline Homebrew dependencies in `Tools/setup/macos.sh` (the `px4-dev` meta-formula is deprecated), Python dependencies can install into a virtual environment, and Gazebo SITL works out of the box with Homebrew 4.5+. ([PX4-Autopilot#27127](https://github.com/PX4/PX4-Autopilot/pull/27127), [PX4-Autopilot#27148](https://github.com/PX4/PX4-Autopilot/pull/27148), [PX4-Autopilot#26702](https://github.com/PX4/PX4-Autopilot/pull/26702))
- PX4-OpticalFlow is now a git submodule instead of a build-time download, making SITL builds reproducible and offline-friendly. ([PX4-Autopilot#27184](https://github.com/PX4/PX4-Autopilot/pull/27184))
- New `make format_changed` target formats only files that differ from `HEAD` (via astyle), which is much faster than `make format` scanning the whole tree. ([PX4-Autopilot#27122](https://github.com/PX4/PX4-Autopilot/pull/27122))
- Added DroneCAN sensor latency calibration scripts under `Tools/dronecan_calibration/` (`range_sensor_latency.py`, `flow_sensor_latency.py`) that cross-correlate CAN sensor signals against the FC's directly-connected IMU in flight logs to estimate CAN transport/pipeline delay.