Skip to content

PX4-Autopilot v1.17.0 Release Notes

Alpha/Beta

PX4 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 FwLateralLongitudinalSetpointType in the PX4 ROS 2 Control Interface, exposing direct lateral and longitudinal setpoints.
  • Rovers can now be controlled from ROS 2 via the new RoverSetpointTypes in 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_zenoh compatibility (CDRv1 serialization, ROS 2 graph liveliness, auto-generated config from dds_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 a zenoh build 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:

  1. 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>_DZ after upgrading, otherwise the vehicle may respond to small stick noise that v1.16 quietly ignored. (PX4-Autopilot#25502)

  2. Re-trim servos with the new PWM_*_CENTER parameters. The old PWM_*_TRIM servo trim parameters have been replaced by PWM_*_CENTER with 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 used PWM_*_TRIM. (PX4-Autopilot#25897)

  3. Update your GCS or companion if it relies on MAVLink v1.MAV_PROTO_VER now defaults to 2. 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 set MAV_PROTO_VER=1 on the affected channel. (PX4-Autopilot#25583)

  4. Migrate manual-control expo and deadzone parameters.MPC_XY_MAN_EXPO, MPC_Z_MAN_EXPO, and MPC_YAW_MAN_EXPO are removed and fall back to a fixed default. MPC_HOLD_DZ has been renamed to MAN_DEADZONE and now applies globally across modes that allow a deadzone. If you previously tuned expo or hold deadzone, set MAN_DEADZONE explicitly; expo customisation is no longer available.

  5. Confirm barometer auto-calibration behaviour matches your setup. The new SENS_BAR_AUTOCAL parameter 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, disable SENS_BAR_AUTOCAL. (PX4-Autopilot#24859)

  6. Re-tune range finder range-aid if you depended on EKF2_RNG_A_IGATE.EKF2_RNG_A_IGATE has been removed as part of the EKF2 parameter-naming consistency refactor. Range-aid tuning now relies on the remaining EKF2_RNG_A_* parameters. The default EKF2_MIN_RNG was also reduced from 0.1 m to 0.01 m. (PX4-Autopilot#25137, PX4-Autopilot#25574)

  7. 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)

  8. Check airframe selection.SYS_AUTOSTART=0 is now treated the same as no valid airframe. If you relied on SYS_AUTOSTART=0 for any custom workflow, select an explicit airframe. (PX4-Autopilot#25645)

  9. Update scripts and external tooling for renamed commander/termination interfaces. The commander lockdown on shell command is now commander termination. The FORCE_FAILSAFE action is now TERMINATION, and manual_lockdown is now kill. Update any startup scripts, test harnesses, or external tooling that calls these by name.

  10. Migrate consumers of battery_status.serial_number. The serial_number field has moved from battery_status to a new battery_info uORB message. Any consumer (logger, GCS, companion software) reading the serial number from battery_status must subscribe to battery_info instead.

  11. Remove parameters_injected.xml from custom build flows.parameters_injected.xml has 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

New Build Targets for Existing Hardware

  • cuav/fmu-v6x build target for the CUAV Pixhawk V6X.
  • auterion/fmu-v6x build target for the Auterion FMU-v6x.

New CAN Peripherals & Vehicle Platforms

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_logs flash 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.

공통

  • QGC Bootloader Update via the SYS_BL_UPDATE parameter 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_info uORB message with serial number compatible with UAVCAN, MAVLink, and battery drivers; battery_status.serial_number is 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.

제어

  • 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_fault flag added to EstimatorStatusFlags; lat/lon/vel fusion is disabled on gnss_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_ESTIMATE is now consumed by EKF2.
  • RTCM telemetry stream now also published for UAVCAN GNSS receivers. (PX4-Autopilot#25315)
  • EKF2 GNSS reset improvements. (PX4-Autopilot#25297)

센서

시뮬레이션

Gazebo

  • Gazebo CMake linking is now version-agnostic across gz-transport, gz-sim, gz-sensors, and gz-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_POSE for custom spawn pose. (PX4-Autopilot#24956)
  • Updated Gazebo 24.04 documentation. (PX4-Autopilot#25586)

Simulation-in-Hardware (SIH)

Debug & Logging

ROS 2 / uXRCE-DDS

ROS 2 / Zenoh

Experimental

The 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_zenoh features in the Zenoh module, move ROS 2 Rmw attachment code to rmw_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 move gid into 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). On px4/fmu-v6x and SITL it ships as an opt-in zenoh build variant (make px4_fmu-v6x_zenoh, make px4_sitl_zenoh); the same opt-in zenoh.px4board is also provided for auterion/fmu-v6s and auterion/fmu-v6x. Zenoh is additionally compiled in by default on nxp/mr-canhubk3, nxp/mr-tropic, and nxp/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_zenoh cmake variant, default to 127.0.0.1 on 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 keyexpr printf, 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-pico updated.

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_MODE extended 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 via NAV_DLL_ACT to avoid fly-aways.
  • Stick library refactored: globally available, getter-based, expo computed on getter call; FixedWingModeManager now uses the Sticks library.
  • Orbit mode: configurable max speed replaces the 10 m/s hardcode (PX4-Autopilot#25192) and HeadingSmoothing is 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)

수직이착륙기(VTOL)

  • 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.

탐사선

Safety / Commander

  • Failure injection refactored into its own class; failure motor off -i <n> now requires CA_FAILURE_MODE to be set. See motor failure injection and detection. (PX4-Autopilot#25756)
  • Naming for clarity: FORCE_FAILSAFE renamed to TERMINATION; commander lockdown on renamed to commander termination; manual_lockdown renamed to kill; ACTION_TERMINATE renamed to ACTION_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.xml removed from the build system. (PX4-Autopilot#25549)
  • QGC Bootloader Update via SYS_BL_UPDATE restored. (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)