PX4-Autopilot v1.17.0 Release Notes
Alpha/BetaPX4 v1.17 builds on PX4 v1.16, with the changes below landing since v1.16.2. This release adds Altitude Cruise mode, improves Fixed Wing Takeoff behaviour on navigation loss, and exposes cleaner high-level fixed-wing and rover control interfaces for ROS 2 workflows. The in-tree Zenoh middleware matures to rmw_zenoh compatibility, simulation gains Gazebo Jetty support and Ackermann SIH, and three new INS drivers (MicroStrain, sbgECom, EULER-NAV) join the ecosystem alongside Septentrio GNSS resilience reporting and barometer auto-calibration against GNSS height. PX4 v1.17 also includes user-visible MAVLink, RC, logging, failsafe, and rover refinements across the stack.
WARNING
PX4 v1.17 is documented on an alpha/beta release branch. See PX4-Autopilot main Release Notes for newer changes on main.
Read Before Upgrading
Please continue reading for upgrade instructions.
Major Changes
- New multicopter flight mode: Altitude Cruise. Holds tilt and heading on stick release so the vehicle keeps cruising at a steady velocity instead of stopping like Altitude mode does.
- Fixed Wing Takeoff mode now keeps climbing with level wings on navigation loss and can use the takeoff waypoint latitude and longitude to define the loiter position. (PX4-Autopilot#25226)
- Fixed-wing vehicles (and VTOLs in fixed-wing mode) can now be controlled from ROS 2 via the new
FwLateralLongitudinalSetpointTypein the PX4 ROS 2 Control Interface, exposing direct lateral and longitudinal setpoints. - Rovers can now be controlled from ROS 2 via the new
RoverSetpointTypesin the PX4 ROS 2 Control Interface, with valid combinations of position, speed, throttle, attitude, rate, and steering setpoints exposed as guaranteed-valid setpoint types. See Rovers Apps & API. - Experimental The in-tree Zenoh middleware matures to
rmw_zenohcompatibility (CDRv1 serialization, ROS 2 graph liveliness, auto-generated config fromdds_topics.yaml, Domain ID parameter, Zenoh CLI). Zenoh is built into the default firmware on FMU-v6xRT (make px4_fmu-v6xrt_default); on FMU-v6x and SITL it ships as azenohbuild variant (make px4_fmu-v6x_zenoh,make px4_sitl_zenoh). - Experimental Initial MC Neural Network Control test path: PX4 v1.17 integrates TensorFlow Lite Micro on-device so an externally trained network (for example trained with reinforcement learning in Aerial Gym) can be loaded as a tflite model and substituted for the multicopter controller for research and bench testing. It is not a replacement for the production controller stack.(PX4-Autopilot#24366)
Upgrade Guide
For users upgrading from v1.16, please take a moment to review the following before flying:
Re-check RC stick deadzones. The hardcoded 1 percent deadzone on RC channels 1 to 8 has been removed. If your transmitter has any centre-stick jitter, configure a per-channel deadzone explicitly via
RC<N>_DZafter upgrading, otherwise the vehicle may respond to small stick noise that v1.16 quietly ignored. (PX4-Autopilot#25502)Re-trim servos with the new
PWM_*_CENTERparameters. The oldPWM_*_TRIMservo trim parameters have been replaced byPWM_*_CENTERwith asymmetric deflection. Trim values are not auto-migrated. Open the actuator configuration in QGC after upgrade and re-set the centre for each servo channel that previously usedPWM_*_TRIM. (PX4-Autopilot#25897)Update your GCS or companion if it relies on MAVLink v1.
MAV_PROTO_VERnow defaults to2. MAVLink v1 is still available, but only as an explicit opt-in. If your ground station, telemetry radio, or companion computer link was implicitly relying on the v1 fallback, either update the GCS/companion to MAVLink v2 or setMAV_PROTO_VER=1on the affected channel. (PX4-Autopilot#25583)Migrate manual-control expo and deadzone parameters.
MPC_XY_MAN_EXPO,MPC_Z_MAN_EXPO, andMPC_YAW_MAN_EXPOare removed and fall back to a fixed default.MPC_HOLD_DZhas been renamed toMAN_DEADZONEand now applies globally across modes that allow a deadzone. If you previously tuned expo or hold deadzone, setMAN_DEADZONEexplicitly; expo customisation is no longer available.Confirm barometer auto-calibration behaviour matches your setup. The new
SENS_BAR_AUTOCALparameter enables barometer offset calibration against GNSS height when GNSS is the height reference, and is enabled by default. This is the desired behaviour for typical outdoor flight; if you operate indoor or in heavily GNSS-degraded environments and want to keep baro offsets locked, disableSENS_BAR_AUTOCAL. (PX4-Autopilot#24859)Re-tune range finder range-aid if you depended on
EKF2_RNG_A_IGATE.EKF2_RNG_A_IGATEhas been removed as part of the EKF2 parameter-naming consistency refactor. Range-aid tuning now relies on the remainingEKF2_RNG_A_*parameters. The defaultEKF2_MIN_RNGwas also reduced from 0.1 m to 0.01 m. (PX4-Autopilot#25137, PX4-Autopilot#25574)Verify magnetometer configuration. Magnetometer calibration is only allowed when at least one mag is available and enabled (priority not 0). If you previously disabled all mags via priority 0, you must enable at least one before running calibration. (PX4-Autopilot#25714)
Check airframe selection.
SYS_AUTOSTART=0is now treated the same as no valid airframe. If you relied onSYS_AUTOSTART=0for any custom workflow, select an explicit airframe. (PX4-Autopilot#25645)Update scripts and external tooling for renamed commander/termination interfaces. The
commander lockdown onshell command is nowcommander termination. TheFORCE_FAILSAFEaction is nowTERMINATION, andmanual_lockdownis nowkill. Update any startup scripts, test harnesses, or external tooling that calls these by name.Migrate consumers of
battery_status.serial_number. Theserial_numberfield has moved frombattery_statusto a newbattery_infouORB message. Any consumer (logger, GCS, companion software) reading the serial number frombattery_statusmust subscribe tobattery_infoinstead.Remove
parameters_injected.xmlfrom custom build flows.parameters_injected.xmlhas been removed from the build system. If you maintained a board layer or downstream fork that referenced it, drop the reference. (PX4-Autopilot#25549)
Other changes
Hardware Support
New Flight Controllers
- Radiolink PIX6. (PX4-Autopilot#25562)
- CUAV X25-Evo. (PX4-Autopilot#25176)
- Accton Godwit GA1. (PX4-Autopilot#25411)
- Kakute H7 dual-IMU build target (no English docs page).
- NarinFC-H7 (no English docs page).
- ESP32 generic-target support, sponsored by AutonoSky (no English docs page; experimental).
New Build Targets for Existing Hardware
cuav/fmu-v6xbuild target for the CUAV Pixhawk V6X.auterion/fmu-v6xbuild target for the Auterion FMU-v6x.
New CAN Peripherals & Vehicle Platforms
- MR-CANHUBK344 NXP B3RB Rover platform. (PX4-Autopilot#23897)
- NXP MR-Tropic target with imxrt-related fixes. (PX4-Autopilot#26052)
- ARK X20 and F9P GPS receivers. (PX4-Autopilot#25149)
- ARK DIST distance sensor.
Existing Boards: Improvements
- FMU-v6xRT: V6XRT001 and V6XRT002 sensor sets, LIS2MDL and BMM350 magnetometer support, DTCM added to heap. (PX4-Autopilot#25733)
- FMU-v6s: PCA9685 PWM expander driver, INA226 / INA228 / INA238 power-monitor support, HSE used as the RTC clock, init script reordered to start internal sensors first.
- ARK FPV: rover board variant, payload-deliverer module, and
encrypted_logsflash savings (FW and VTOL stripped). (PX4-Autopilot#25319, PX4-Autopilot#25322) - ARK SCH16T driver updated for new Murata modules. (PX4-Autopilot#24029)
- mRO PixracerPro: enable additional UARTs. (PX4-Autopilot#22516)
- 3DR Control Zero H7 OEM Rev G: MTD driver fix and missing module that prevented USB enumeration. (PX4-Autopilot#25015)
- ESP32: PWM register updates correctly on change. (PX4-Autopilot#25653)
- Tropic-Community baseboard (Teensy 4.1): PX4 config refresh, DTCM moved to heap with vectors in ITCM.
Common
- QGC Bootloader Update via the
SYS_BL_UPDATEparameter has been re-enabled after being broken for several releases. (PX4-Autopilot#25032) - Failsafe handling now lets the pilot take over from a degraded failsafe state. (PX4-Autopilot#26269)
- Offboard to Position (hold) mode change is no longer entered without RC. (PX4-Autopilot#26391)
- Motor failure detection uses more robust timeout checks. (PX4-Autopilot#25757)
- New
battery_infouORB message with serial number compatible with UAVCAN, MAVLink, and battery drivers;battery_status.serial_numberis removed. - UAVCAN battery: better remaining-time calculation (PX4-Autopilot#25500) and filter sample interval increased to 500 ms (PX4-Autopilot#25454).
- Battery instances are capped at 3 (loggable batteries also raised to 3).
- Remaining-flight-time failsafe disabled by default.
Control
- Servo PWM gains center setting and asymmetric deflection (
PWM_*_CENTER). (PX4-Autopilot#25897) - PWM center support extended to wheel and gimbal actuators. (PX4-Autopilot#26211)
- Configurable board PWM frequency from Kconfig. (PX4-Autopilot#24787)
- DShot telemetry refactored to the platform serial abstraction with RX/TX pin-swap support.
- UAVCAN ESC initialization no longer publishes random values when stopped. (PX4-Autopilot#25485)
- UAVCAN bootloader watchdog pet during long flashes. (PX4-Autopilot#25523)
- Control allocator enabled for spacecraft on v6x. (PX4-Autopilot#25276)
Estimation
- Barometer auto-calibration can calibrate offsets against GNSS height when GNSS is the height reference, enabled by default. (PX4-Autopilot#24859)
- Septentrio GNSS resilience reporting (jamming, spoofing, authentication state) is now exposed in PX4. (PX4-Autopilot#25012)
- EKF2 GPS checks include a GPS fix type validation bit. (PX4-Autopilot#25215)
- EKF2 GNSS aiding: dedicated
gnss_faultflag added toEstimatorStatusFlags; lat/lon/vel fusion is disabled ongnss_hgt_fault; hysteresis added for re-enabling fusion; GNSS-based altitude reset is suppressed in dead-reckoning mode. - EKF2 range fusion: skip unhealthy samples while respecting timeout (PX4-Autopilot#25634); reject bad measurements during
bad_acc_vertical(PX4-Autopilot#25636). - EKF2 mag: post-takeoff yaw reset is never skipped; mag heading and declination updates no longer perturb the xy gyro biases.
- EKF2 gravity: tilt alignment accelerated; gravity fusion start now uses an accel low-pass instead of peak hold.
- EKF2 airspeed/wind: distinguish airspeed source so wind dead-reckoning logic can use a synthetic airspeed.
- External heading update via
MAV_CMD_EXTERNAL_ATTITUDE_ESTIMATEis now consumed by EKF2. - RTCM telemetry stream now also published for UAVCAN GNSS receivers. (PX4-Autopilot#25315)
- EKF2 GNSS reset improvements. (PX4-Autopilot#25297)
传感器
- Added MicroStrain Inertial Sensors driver support. (PX4-Autopilot#23858)
- MicroStrain Inertial Sensors gain expanded aiding support. (PX4-Autopilot#25673)
- Added sbgECom INS driver. (PX4-Autopilot#24137)
- Added EULER-NAV Baro-Inertial AHRS driver. (PX4-Autopilot#24534)
- Added QMC5883P compass driver. (PX4-Autopilot#25115)
- Added ICM42688P IMU support on the Mamba F405 MK2 V2. (PX4-Autopilot#25047)
- Added LightWare SF30/d binary protocol. (PX4-Autopilot#25570)
- Airspeed calibration only saves the offset when the full procedure succeeds. (PX4-Autopilot#25412)
- AirspeedSelector adds a synthetic airspeed option.
- IMU gyro: default angular-acceleration filter lowered from 30 Hz to 20 Hz.
仿真
Gazebo
- Gazebo CMake linking is now version-agnostic across
gz-transport,gz-sim,gz-sensors, andgz-plugin, removing the hard pin to Harmonic in the build glue. Harmonic remains the supported, CI-tested version; building against newer Gazebo releases (e.g. Jetty / v15) is up to the developer to install and verify locally. (PX4-Autopilot#25521) - Rover simulation updated to match the current rover-control architecture. (PX4-Autopilot#25644)
- Gazebo bridge sensors can be selectively disabled. (PX4-Autopilot#25484)
- Gimbal yaw fix and DDS attitude publisher in the Gazebo bridge. (PX4-Autopilot#25754)
PX4_GZ_MODEL_POSEfor custom spawn pose. (PX4-Autopilot#24956)- Updated Gazebo 24.04 documentation. (PX4-Autopilot#25586)
Simulation-in-Hardware (SIH)
- SIH now supports Hexacopter X and Ackermann rovers. (PX4-Autopilot#25194, PX4-Autopilot#25405)
- HITL/SIH battery status now driven by battery configuration parameters. (PX4-Autopilot#24103)
Debug & Logging
AirspeedValidatedpromoted to a standard uORB topic. (PX4-Autopilot#25579)upload_log.pycan target a custom upload server via CLI argument. (PX4-Autopilot#25702)- ULog tooling can recover UTC timestamps even when
sensor_gpsis not present. (PX4-Autopilot#25534) - UAVCAN node status is now logged to uORB for debugging. (PX4-Autopilot#23890)
- ULog file format documentation expanded. (PX4-Autopilot#25624)
ROS 2 / uXRCE-DDS
- PX4 ROS 2 Control Interface support for Fixed Wing lateral and longitudinal setpoint and VTOL transitions.
- Simple index-based namespace (
UXRCE_DDS_NS_IDX) for uXRCE-DDS. (PX4-Autopilot#25444) - Namespace support for the uXRCE-DDS client during firmware upload. (PX4-Autopilot#25291)
- New DDS topics:
TransponderReport(ADS-B) (PX4-Autopilot#25652),landing_gearcommand from external modes (PX4-Autopilot#25496),Windtopic with 1 Hz rate limit, gimbal device attitude status, and FW high-level setpoint/configuration interfaces.
ROS 2 / Zenoh
ExperimentalThe in-tree Zenoh middleware (added in v1.16) matures toward rmw_zenoh compatibility in v1.17. Most of this work landed as direct commits without PR numbers; the following list groups it by area:
- rmw_zenoh compatibility: implement
rmw_zenohfeatures in the Zenoh module, move ROS 2 Rmw attachment code tormw_attachment.h, switch to CDRv1 to match ROS 2, set transport lease to 60 s to match ROS 2, omit timestamp attachment, experimental liveliness so the ROS 2 graph works. - Configuration and CLI: auto-generate default Zenoh config from
dds_topics.yaml, new Domain ID parameter (and movegidinto Zenoh), Zenoh CLI improvements, instance selection and pub/sub deletion, copy the uXRCE config layout for Zenoh. - Boards: Zenoh is now built into the default firmware on
px4/fmu-v6xrt(make px4_fmu-v6xrt_default). Onpx4/fmu-v6xand SITL it ships as an opt-inzenohbuild variant (make px4_fmu-v6x_zenoh,make px4_sitl_zenoh); the same opt-inzenoh.px4boardis also provided forauterion/fmu-v6sandauterion/fmu-v6x. Zenoh is additionally compiled in by default onnxp/mr-canhubk3,nxp/mr-tropic, andnxp/tropic-community. - NuttX support: update NuttX config for use with Zenoh; backport NuttX FMU-v6x config for Zenoh (PX4-Autopilot#26213).
- SITL: new
px4_sitl_zenohcmake variant, default to127.0.0.1on SITL/POSIX, autostart Zenoh in SITL when enabled, friendlier error message when scouting finds nothing, GCC/SITL compile fixes. - Robustness: validate payload size before stack allocation, increase CDR safety margin, handle parsing errors and non-existing types in config, fix topic-name and datatype mapping, pubsub-factory datatype-naming fix, fix status
keyexprprintf, prevent integer-conversion warnings in zenoh-pico, optimize memory usage with optional publish-on-matching. - Docs and OOM fixes (backport): PX4-Autopilot#26053.
- Submodule:
zenoh-picoupdated.
MAVLink
- MAVFTP hardening: rejects path-traversal sequences in FTP operations and validates sessions in FTP write/burst.
- MAVLink v1 is now opt-in via
MAV_PROTO_VER. (PX4-Autopilot#25583) - Extended
MISSION_CURRENTmessage implemented (populatesmission_stateand related fields per mavlink/mavlink#1869). (PX4-Autopilot#25034) MAV_CMD_REQUEST_MESSAGEsupported forMESSAGE_INTERVAL. (PX4-Autopilot#25460)- The low-bandwidth stream profile includes additional important streams with updated rates. (PX4-Autopilot#25524)
- Parameter transmission throttled on low-bandwidth links. (PX4-Autopilot#25126)
- Set system clock from
SYSTEM_TIME. (PX4-Autopilot#24807) - Hardfault streaming over MAVLink option added.
- MAVLink fuzz test added.
RC
- Removed the hardcoded 1 percent deadzone on RC channels 1 to 8. (PX4-Autopilot#25502)
- ManualControlSelector reworked: robust timeout checks, unified validity conditions, simplified prioritization, and an option to prioritize RC or MAVLink with fallback.
COM_RC_IN_MODEextended with source-ID ascending and descending priority modes; documentation rewritten.- Payload power switch generalized: optional 3-way switch, allowed on boards beyond ARK FPV, with unit tests.
Multi-Rotor
- New multicopter flight mode: Altitude Cruise. Like Altitude mode, but when the roll/pitch/yaw sticks are released the vehicle holds the current tilt and heading (rather than returning to level), letting it cruise at a steady velocity without constant stick input. Intended for long-distance flights where the same tilt is held for an extended period. The manual-control-loss failsafe can optionally be disabled for this mode by setting the corresponding bit in
COM_RCL_EXCEPT; when doing so, configure the data-link-loss failsafe viaNAV_DLL_ACTto avoid fly-aways. - Stick library refactored: globally available, getter-based, expo computed on getter call;
FixedWingModeManagernow uses the Sticks library. - Orbit mode: configurable max speed replaces the 10 m/s hardcode (PX4-Autopilot#25192) and
HeadingSmoothingis applied to avoid step changes during the approach; documentation clarified (PX4-Autopilot#25208). - MC PositionControl: switch out of goto setpoint immediately when receiving
trajectory_setpoint. - Hexarotor X added to SIH and to
ActuatorEffectivenessRotorsTest. MC_RATE*parameter metadata unified. (PX4-Autopilot#25133)
垂直起降
- Fixed VTOL stuck after back-transition in Mission Fast RTL.
- VTOL takeoff requires relaxed position only during the fixed-wing phase; on completion of takeoff, the state is forced to Loiter.
- VTOL airspeed measurement handling centralized.
- PX4 ROS 2 Control Interface can command VTOL transitions from external modes.
Fixed-wing
- Fixed Wing Takeoff mode keeps climbing with level wings on navigation loss and can use the takeoff waypoint latitude and longitude to define the loiter position. (PX4-Autopilot#25226)
- Reworked fixed-wing high-level control exposes clean lateral and longitudinal control interfaces for external integrations.
- FW Attitude Controller wheel controller rework.
- FW Autotune: identification maneuver auto-ramps the 1 Hz amplitude until R/P/Y rates of 0.8/0.5/0.5 rad/s are reached, then scales the identification signal accordingly.
- TECS hardening: NaN protection on airspeed and altitude inputs.
无人车
- Removed deprecated rover module.
- Added Apps & API support including Rover Setpoints.
- Rover simulation updated to match the reworked rover architecture. (PX4-Autopilot#25644)
- Continued per-vehicle (Ackermann/differential/mecanum) restructuring with separated actuator control, position-control updates, mode-management centralization, and module split into folders.
- New stick-input scaling parameters. (PX4-Autopilot#25427)
- Improved rover hold-position logic. (PX4-Autopilot#25466)
RX_MAX_THR_YAW_Rreplaced byRO_YAW_RATE_CORR.- Manual yaw-rate input: exponential scaling.
- Comprehensive Rover API documentation. (PX4-Autopilot#25499)
- MR-CANHUBK344 NXP B3RB rover platform. (PX4-Autopilot#23897)
- Aion Robotics R1 Rover airframe (
50001) marked discontinued.
Safety / Commander
- Failure injection refactored into its own class;
failure motor off -i <n>now requiresCA_FAILURE_MODEto be set. See motor failure injection and detection. (PX4-Autopilot#25756) - Naming for clarity:
FORCE_FAILSAFErenamed toTERMINATION;commander lockdown onrenamed tocommander termination;manual_lockdownrenamed tokill;ACTION_TERMINATErenamed toACTION_TERMINATION. - New RC termination switch with PWM-input default for ATS-based flight termination. (PX4-Autopilot#25209)
- Commander never overrides a user-intended termination (with unit test).
- Remaining-flight-time failsafe disabled by default.
- Home position is not reset if landed during an uncompleted mission. (PX4-Autopilot#24902)
- Off-track mission landing fix. (PX4-Autopilot#25725)
Infrastructure
parameters_injected.xmlremoved from the build system. (PX4-Autopilot#25549)- QGC Bootloader Update via
SYS_BL_UPDATErestored. (PX4-Autopilot#25032) - NuttX submodule updates: dcache fix and semaphore-holder-list fix.
- ITCM checker added in CI; ITCM mapping updated for v6xRT and Tropic-Community.
- Flash savings on KakuteH7 encrypted-logs variants and on selected ARK targets.
- Spacecraft tooling for Commander and
VehicleStatus. (PX4-Autopilot#24716)