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_C99orCONFIG_STD_C11.
Kernel
Boards
Device Drivers and Devicetree
Ethernet
Driver MAC address configuration support using
net_eth_mac_confighas been introduced for the following drivers:drivers/ethernet/eth_sam_gmac.c (GitHub #96598)
Removed
CONFIG_ETH_SAM_GMAC_MAC_I2C_EEPROMRemoved
CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESSRemoved
CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZERemoved
mac-eepromproperty fromatmel,sam-gmacandatmel,sam0-gmac
The
fixed-linkproperty has been removed fromethernet-phy. Use the newethernet-phy-fixed-linkcompatible instead, if that functionality is needed. There you need to specify the fixed link parameters using thedefault-speedsproperty (GitHub #100454).
MDIO
The
mdio_bus_enable()andmdio_bus_disable()functions have been removed. MDIO bus enabling/disabling is now handled internally by the MDIO drivers. (GitHub #99690).
QSPI
st,stm32-qspicompatible nodes configured withdual-flashproperty now need to also include thessht-enableproperty 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:generic-fem-two-ctrl-pinsis nowradio-fem-two-ctrl-pinsgpio-radio-coexis nowradio-gpio-coex
A new
radio.yamlbase binding has been introduced for generic radio hardware capabilities. Thetx-high-power-supportedproperty has been renamed toradio-tx-high-power-supportedfor 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-pwrandst,stm32-dualreg-pwrhave been introduced, and all Kconfig symbols related to power supply configuration have been removed:CONFIG_POWER_SUPPLY_LDOCONFIG_POWER_SUPPLY_DIRECT_SMPS,CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_LDOCONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_LDO,CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT_AND_LDOCONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT_AND_LDOCONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXTCONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXTCONFIG_POWER_SUPPLY_EXTERNAL_SOURCE
Stepper
For
adi,tmc2209, the propertymsx-gpiosis now replaced bym0-gpiosandm1-gpiosfor consistency with other step/dir stepper drivers.
USB
maxim,max3421e_spihas been renamed tomaxim,max3421e-spi.
Bluetooth
Bluetooth Host
CONFIG_BT_SIGNINGhas been deprecated.BT_GATT_CHRC_AUTHhas been deprecated.bt_conn_le_info.intervalhas been deprecated. Usebt_conn_le_info.interval_usinstead. Note that the units have changed:intervalwas in units of 1.25 milliseconds, whileinterval_usis 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/netetc. is namespaced. This means that eithernet_,NET_orZSOCK_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 likesys/socket.hto 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_DURATION→MODEM_HL78XX_DEV_POWER_PULSE_DURATION_MSMODEM_HL78XX_DEV_RESET_PULSE_DURATION→MODEM_HL78XX_DEV_RESET_PULSE_DURATION_MSMODEM_HL78XX_DEV_STARTUP_TIME→MODEM_HL78XX_DEV_STARTUP_TIME_MSMODEM_HL78XX_DEV_SHUTDOWN_TIME→MODEM_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_LEGACYis 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_UART1TF-M define is now controlled by Zephyr’sCONFIG_TFM_SECURE_UART. This option will override any platform values previously specified in the TF-M repository.