# Release 1.12

# Pre Releases

# Changes

# Common

  • RTL Trigger based on remaining flight range (PR#16399 (opens new window))
    • Calculates time to home, on RTL, taking into account vehicle speed, wind speed, and destination distance/direction
  • Pre-emptive geofence breach (PR#16400 (opens new window))
    • Triggers a breach if the predicted current trajectory will result in a breach, allowing the vehicle to be re-routed to a safe hold position.
  • Airframe Scripts
  • Safety (switch) defaults to off (motors are disarmed, but servos / flaps can move)
  • Safety switch is latching: Once it is disabled, it will stay disabled
  • Land detector: Expand land detection to use the ground distance if a distance sensor is present
  • Added support for IRC Ghost including telemetry

# Sensors

  • Magnetometer calibration faster and more robust
    • new soft iron calibration coefficients
    • automatically determine the rotation of external sensors
  • Optimized rate control sensor pipeline (minimal inner loop end-to-end latency)

# Hardware

The release includes new hardware support for the following boards, peripherals, and accessories:

These are removed:

  • Removal of discontinued Intel AeroFC
  • MAVLink Ethernet configuration (PR#14460 (opens new window))
    • MAVLink Ethernet channel settings such as UDP port, remote port and broadcast mode now can be changed dynamically via parameters.
  • Support for querying COMPONENT_INFORMATION (PR#16039 (opens new window))
    • Parameter metadata is now automatically synchronized in combination with QGC daily.
    • This new message allows any MAVLink system to request rich hierarchical information from an autopilot, i.e., to understand which commands are supported in missions or to get parameter metadata. This message was introduced primarily to help GCS better understand autopilots (RFC: mavlink#1339 (opens new window))

# Commander

  • Commander: use control mode flags and cleanup arm/disarm (PR#16266 (opens new window))
    • Consolidate scattered arming requirements in arm_disarm(), and, keeps the vehicle_control_mode last state in commander
  • Commander: Separate out manual control setpoint processing (PR#16878 (opens new window))
    • Adds a new class ManualControl for handling manual_control_setpoint and handles RC loss, RC override, and RC arming/disarming

# Multicopter

注意

The gains have a new meaning

- Scale from velocity error in $m/s$ to acceleration output in $m/s^2$
- Existing gains need to roughly be rescaled by a factor of: $gravitational \_ constant / hover\_thrust$
- Automatic parameter transition assumes 50% hover thrust: `~10m/s^2 / 50% = 20 m/s^2`. See [question](https://github.com/PX4/PX4-Autopilot/pull/14823#issuecomment-791357646)

# VTOL

  • RTL improvements (PR#16377 (opens new window))
    • Hardens the RTL safety failsafes taking into consideration the many edge cases when trying to land, depending on the current vehicle mode (Multicopter vs Fixed-wing)
  • Fixed-wing / VTOL significant TECS improvements

# Control

  • Dynamic Notch Filter updated with Gyro FFT (PR#16385 (opens new window))
    • Adds dynamic notch filtering to the gyro control data resulting in much smoother control
  • Multi-EKF enabled by default on stm32f7 and stm32h7 boards

# GPS

  • The GPS protocol now defaults to u-blox for faster startup, and GPS_x_PROTOCOL needs to be changed if another GPS is used.

# NuttX

Nuttx was upgraded from 8.2+ to NuttX 10.10.0+ (opens new window) (@ 904a602c74dc08a100b5c2bd490807de19e73e10 (opens new window))

  • SDCARD performance: Results in better performance on H7 Targets

    • [BACKPORT] stm32:SDIO:Use 250 Ms Data path timeout, regardless of Card Clock frequency
    • [BACKPORT] stm32h7:SDMMC:Use 250 Ms Data path timeout, regardless of Card Clock frequency
    • [BACKPORT] stm32f7:SDMMC:Use 250 Ms Data path timeout, regardless of Card Clock frequency
    • [BACKPORT] Fixes race condition in event wait logic of SDMMC driver.
    • [BACKPORT] mmcsd:Stuck in 1-bit mode, Removed CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
  • Ethernet stability:

    • [BACKPORT] stm32x7:Ethernet Fixed hardfaults, from too big frames
    • [BACKPORT] stm32:Ethernet Fix too big frames
  • Boot up stability V5-V6X ensuring the LSE (RTC) oscillator is started

    • [BACKPORT] stm32h7:lse fix Kconfig help text

    • [BACKPORT] stm32f7:lse Use Kconfig values directly

    • [BACKPORT] stm32h7:Add DBGMCU

    • [BACKPORT] stm32f7:Add option to auto select LSE CAPABILITY

    • [BACKPORT] stm32h7:Add option to auto select LSE CAPABILITY

      注解

This Knob will cycle through the correct* values from low to high. To avoid damaging the crystal. We want to use the lowest setting that gets the OSC running. See app note AN2867 *It will take into account the rev of the silicon and use the correct code points to achieve the drive strength. See Eratta ES0392 Rev 7 2.2.14 LSE oscillator driving capability selection bits are swapped. :::

  • Driver changes

    • [BACKPORT] drivers/serial: fix Rx interrupt enable for cdcacm

    • [BACKPORT] binnfmt:Fix return before close ELF fd

    • [BACKPORT] stm32f7:Allow for reuse of the OTG_ID GPIO

    • [BACKPORT] stm32f7:SDMMC fix reset of do_gpio

    • [BACKPORT] stm32h7: serial: use dma tx semaphore as resource holder

    • [BACKPORT] stm32h7:SDMMC fix reset of do_gpio

    • [BACKPORT] stm32h7:Serial Add RX and TX DMA

    • [BACKPORT] stm32h7:Allow for reuse of the OTG_ID GPIO

    • [BACKPORT] Kinetis:kinetis:Replace DMA

    • [BACKPORT] kinetis:Serial use eDMA

    • [BACKPORT] kinetis:SPI use eDMA

    • [BACKPORT] Kinetis:Serail No DMA Poll needed

    • [BACKPORT] libc/stdio: Preallocate the stdin, stdout and stderr For targets without consoles.

  • FlexCan fixes

    • [BACKPORT][flexcan] Correct reset state for CTRL1 register
    • [BACKPORT][flexcan] Fix TX drop #2792 and correctly set CAN timings to non-zeroed registers
    • [BACKPORT] FlexCAN Fix TX abort process
  • Support for CAN bootloader

    • [BACKPORT] s32k1xx:Support ramfunc
  • STM32F412 cleanup

  • [BACKPORT] stm32f412:Corrected Pin count

  • [BACKPORT] stm32f412:Replaced Kludged pinmap with one for SoC

  • [BACKPORT] stm32412: Fixes pinmap CAN1

  • Security patches

  • [BACKPORT] tcp: Remove incomplete support for TCP reassembly

  • [BACKPORT] net/tcp/tcp_input.c: Correct bad check of urgent data length

  • [BACKPORT] libc: Add additional checks to malloc realloc and memalign

  • IMXRT fixes

  • Add Single wire and proper parity settings to IMXRT to support sbus etal.

  • [BACKPORT] imxrt:serial support single-wire mode

  • [BACKPORT] imxrt:imxrt_lowputc Fixed parity settings.

  • STM32H7 improvements

  • [BACKPORT] stm32h7:SPI Fix 16 bit SPI mode

  • [BACKPORT] stm32h7:DMA BDMA does not auto disabled on completion

  • [BACKPORT] Fix HEAP clobbering static data in SRAM4

  • [BACKPORT] stm32h7:SDMMC fix reset of do_gpio

# UAVCAN

  • UAVCANv0: Although the fundamental features like Firmware upgrades and parameter sync of CAN nodes have been implemented for over 5 years, we refreshed support now that finally, devices are on the market. Typical CAN GPS, airspeed and power modules are supported
  • UAVCANv0 Node: PX4 supported building nodes for many years - now we support building specific targets like the CUAV GPS units
  • UAVCANv1: Initial alpha of a complete end-to-end implementation