Migration guide to Zephyr v4.4.0 (Working Draft)

This document describes the changes required when migrating your application from Zephyr v4.3.0 to Zephyr v4.4.0.

Any other changes (not directly related to migrating applications) can be found in the release notes.

Build System

  • Zephyr now officially defaults to C17 (ISO/IEC 9899:2018) as its minimum required C standard version. If your toolchain does not support this standard you will need to use one of the existing and now deprecated options: CONFIG_STD_C99 or CONFIG_STD_C11.

Kernel

Boards

Device Drivers and Devicetree

Ethernet

MDIO

  • The mdio_bus_enable() and mdio_bus_disable() functions have been removed. MDIO bus enabling/disabling is now handled internally by the MDIO drivers. (GitHub #99690).

QSPI

  • st,stm32-qspi compatible nodes configured with dual-flash property now need to also include the ssht-enable property to reenable sample shifting. Sample shifting is configurable now and disabled by default. (GitHub #98999).

Radio

  • The following devicetree bindings have been renamed for consistency with the radio- prefix:

  • A new radio.yaml base binding has been introduced for generic radio hardware capabilities. The tx-high-power-supported property has been renamed to radio-tx-high-power-supported for consistency.

  • Device trees and overlays using the old compatible strings must be updated to use the new names.

STM32

  • STM32 power supply configuration is now performed using Devicetree properties. New bindings st,stm32h7-pwr, st,stm32h7rs-pwr and st,stm32-dualreg-pwr have been introduced, and all Kconfig symbols related to power supply configuration have been removed:

    • CONFIG_POWER_SUPPLY_LDO

    • CONFIG_POWER_SUPPLY_DIRECT_SMPS,

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_LDO

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_LDO,

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT_AND_LDO

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT_AND_LDO

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT

    • CONFIG_POWER_SUPPLY_EXTERNAL_SOURCE

Stepper

  • For adi,tmc2209, the property msx-gpios is now replaced by m0-gpios and m1-gpios for consistency with other step/dir stepper drivers.

USB

Bluetooth

Bluetooth Host

  • CONFIG_BT_SIGNING has been deprecated.

  • BT_GATT_CHRC_AUTH has been deprecated.

  • bt_conn_le_info.interval has been deprecated. Use bt_conn_le_info.interval_us instead. Note that the units have changed: interval was in units of 1.25 milliseconds, while interval_us is in microseconds.

  • Legacy Bluetooth LE pairing using the passkey entry method no longer grants authenticated (MITM) protection as of the Bluetooth Core Specification v6.2. Stored bonds that were generated using this method will be downgraded to unauthenticated when loaded from persistent storage, resulting in a lower security level.

Networking

  • Networking APIs found in

    and relevant code in subsys/net etc. is namespaced. This means that either net_, NET_ or ZSOCK_ prefix is added to the network API name. This is done in order to avoid circular dependency with POSIX or libc that might define the same symbol. A compatibility header file include/zephyr/net/net_compat.h is created that provides the old symbols allowing the user to continue use the old symbols. External network applications can continue to use POSIX defined network symbols and include relevant POSIX header files like sys/socket.h to get the POSIX symbols as Zephyr networking header files will no longer include those. If the application or Zephyr internal code cannot use POSIX APIs, then the relevant network API prefix needs to be added to the code calling a network API.

Modem

Modem HL78XX

  • The Kconfig options related to HL78XX startup timing have been renamed in CONFIG_MODEM_HL78XX_DEV_* as follows:

    • MODEM_HL78XX_DEV_POWER_PULSE_DURATIONMODEM_HL78XX_DEV_POWER_PULSE_DURATION_MS

    • MODEM_HL78XX_DEV_RESET_PULSE_DURATIONMODEM_HL78XX_DEV_RESET_PULSE_DURATION_MS

    • MODEM_HL78XX_DEV_STARTUP_TIMEMODEM_HL78XX_DEV_STARTUP_TIME_MS

    • MODEM_HL78XX_DEV_SHUTDOWN_TIMEMODEM_HL78XX_DEV_SHUTDOWN_TIME_MS

  • The default startup timing was changed from 1000 ms to 120 ms to improve initialization reliability across all supported boards.

    Applications depending on the previous defaults must update their configuration.

Other subsystems

JWT

  • Previously deprecated CONFIG_JWT_SIGN_RSA_LEGACY is removed. This removal happens before the usual deprecation period of 2 releases because it has been agreed (see GitHub #97660) that Mbed TLS is an external module, so normal deprecation rules do not apply in this case.

Libsbc

  • Libsbc (sbc.c and sbc.h) is moved under the Bluetooth subsystem. The sbc.h is in include/zephyr/bluetooth now.

Modules

Trusted Firmware-M

  • The SECURE_UART1 TF-M define is now controlled by Zephyr’s CONFIG_TFM_SECURE_UART. This option will override any platform values previously specified in the TF-M repository.

Architectures