Zephyr 4.5.0 (Working Draft)
We are pleased to announce the release of Zephyr version 4.5.0.
Major enhancements with this release include:
New driver classes
Zephyr 4.5 adds several new driver APIs, including:
Clock Monitor for runtime observation of clock frequency
New subsystems
Zephyr 4.5 adds several new subsystem APIs, including:
Video for controlling video drivers
An overview of the changes required or recommended when migrating your application from Zephyr v4.4.0 to Zephyr v4.5.0 can be found in the separate migration guide.
The following sections provide detailed lists of changes by component.
API Changes
Removed APIs and options
Architectures
Xtensa
CONFIG_XTENSA_BACKTRACE_EXCEPTION_DUMP_HOOK
Counter
CONFIG_COUNTER_MAXIM_DS3231
Networking
CONFIG_NET_TC_SKIP_FOR_HIGH_PRIOCONFIG_NET_SOCKETS_POLL_MAXCONFIG_NET_GPTP_CLOCK_ACCURACY_*net_ipv6_set_hop_limit()net_if_ipv4_get_netmask()net_if_ipv4_set_netmask()net_if_ipv4_set_netmask_by_index()openthread_state_changed_cb_register()openthread_state_changed_cb_unregister()openthread_start()openthread_api_mutex_lock()openthread_api_mutex_try_lock()openthread_api_mutex_unlock()struct openthread_state_changed_cbTLS_CREDENTIAL_SERVER_CERTIFICATEstart_11r_roaming
Random
CONFIG_CTR_DRBG_CSPRNG_GENERATORCONFIG_CS_CTR_DRBG_PERSONALIZATION
West sign support for imgtool, which was deprecated in Zephyr 4.0, has been removed.
Deprecated APIs and options
Audio Codec
The
audio_codec_apistruct has been deprecated. Audio codec drivers are now expected to use theDEVICE_APImacro to declare their driver API.
Build system
The
zephyr_file_copy()CMake function has been deprecated. Use the nativefile(COPY_FILE ...)CMake command instead.
CPU Load
CONFIG_CPU_LOAD_METRICandcpu_load_metric_get()are deprecated. The CPU load metric module has been merged into the unified CPU load module; useCONFIG_CPU_LOADwith theCONFIG_CPU_LOAD_BACKEND_RUNTIME_STATSbackend andcpu_load_get_cpu().
DMIC
The
_dmic_opsstruct has been deprecated. DMIC drivers are now expected to use theDEVICE_APImacro to declare their driver API.
Fuel Gauge
Deprecated various fuel gauge property enums and union fields in favor of new versions with explicit unit suffixes.
LoRa
Renamed
lora_recv_duty_cycle()tolora_recv_duty_cycle_async()to be consistent with the existing sync/async naming convention.
Nordic
The internal SoC platform Kconfig symbols
NRF_PLATFORM_HALTIUMandNRF_PLATFORM_LUMOShave been deprecated. Use specific SOC_SERIES_* Kconfig options instead.The sysbuild Kconfig option
SB_CONFIG_NRF_HALTIUM_GENERATE_UICRhas been renamed toSB_CONFIG_NRF_GENERATE_UICR.The Nordic SoC headers
<haltium_power.h>and<haltium_pm_s2ram.h>have been renamed to<soc_power.h>and<soc_pm_s2ram.h>respectively.
Ring buffer
The ring buffer item API (
ring_buf_item_init(),ring_buf_item_put(),ring_buf_item_get(),ring_buf_item_space_get()) has been deprecated in favor ofsys_ringq(see sys_ringq Data Structure).
Networking
Deprecated LLMNR support (
CONFIG_LLMNR_RESOLVERandCONFIG_LLMNR_RESPONDER). LLMNR is being phased out; use mDNS (CONFIG_MDNS_RESOLVER/CONFIG_MDNS_RESPONDER) instead.
Networking Link layer
Deprecated
CONFIG_NET_L2_PTP. UsedCONFIG_NET_L2_PTP_TIMESTAMPINGinstead.
Video
All functions in the video driver API (
<zephyr/drivers/video.h>) have moved to the video subsystem (<zephyr/video/video.h>). Application only need to rename the#include.
Work queue
k_work_q.threadhas been deprecated. Usek_work_q.thread_idinstead.
New APIs and options
Architectures
CONFIG_ARM_MPU_CM7_UNMAPPED_REGION(Arm Cortex-M7 catch-all MPU region for unmapped addresses, erratum 1013783 workaround)
Audio
Bluetooth
Audio
Host
bt_le_adv_param.tx_powerandBT_LE_ADV_OPT_TX_POWERto request a specific TX power level per extended advertising set.
Mesh
Crypto
Devicetree
Haptics
haptics_monitorhaptics_monitor_typehaptics_source
HWSPINLOCK
Kconfig
Add
dt_partition_mtdpreprocessor function (GitHub #111599)
Kernel
LoRa
Network
Add
net_eth_set_if_type_wifi()to set the ethernet interface type to Wi-Fi.Add
net_dhcpv4_set_reboot_hint()to seed the DHCPv4 client with a previously leased address for INIT-REBOOT.Add an mDNS responder interface policy (
CONFIG_MDNS_RESPONDER_IFACE_POLICY_ALLOWLIST,CONFIG_MDNS_RESPONDER_IFACE_POLICY_DENYLIST) together withCONFIG_MDNS_RESPONDER_IFACE_LISTto control on which network interfaces the mDNS responder operates.Add
mdns_responder_enable_iface()andmdns_responder_disable_iface()(CONFIG_MDNS_RESPONDER_RUNTIME_IFACE_CONTROL) to enable or disable the mDNS responder on a network interface at runtime.
Power Management
Ring buffer
Zbus
New Boards
Arduino
Arduino Nesso N1 (
arduino_nesso_n1)
Seeed
Seeed Wio Tracker L1 (
wio_tracker_l1)
WCH
WCH CH32V103EVT (
ch32v103evt)
New Shields
New Drivers
GPIO
Diodes/Pericom PI4IOE5V6408 8-bit I2C-bus I/O expander (
diodes,pi4ioe5v6408).
Input
VIRTIO input device (
virtio,input).
Sensors
Analog Devices ADXL313 3-axis accelerometer (
adi,adxl313).
Clock Monitor
nxp,cmu-fc— NXP Clock Monitoring Unit (Frequency Check) back-end for the new Clock Monitor subsystem.nxp,cmu-fm— NXP Clock Monitoring Unit (Frequency Meter) back-end for the new Clock Monitor subsystem.
USB
espressif,esp32-usb-otg-fs- Espressif USB-OTG full-speed controller with internal FS/LS PHY.espressif,esp32-usb-otg-hs- Espressif USB-OTG high-speed controller with internal UTMI PHY.
New Samples
MCTP I2C GPIO Top Node Sample (renamed from
mctp_i2c_bus_owner)MCTP I3C Top Node Sample (renamed from
mctp_i3c_bus_owner)samples/drivers/clock_monitor/check_freq— demonstrates WINDOW-mode out-of-window frequency checking on the new Clock Monitor.samples/drivers/clock_monitor/measure_freq— demonstrates MEASURE-mode one-shot frequency measurement on the new Clock Monitor.
Libraries / Subsystems
Crypto
Added AES CFB and OFB cipher mode support.
Mbed TLS
TF-M
TF-M was updated from version 2.2.2 to version 2.3.0. Release notes can be found here.
DFU
Added
CONFIG_IMG_CUSTOM_SECTOR_SIZEto allow MCUboot to use a different sector size for reducing the swap-using-offset status area size.
LoRa / LoRaWAN
Added a native LoRaWAN backend (
CONFIG_LORA_MODULE_BACKEND_NATIVE) that implements LoRaWAN 1.0.x Class A directly on top of the LoRa radio driver, without the Semtech LoRaMac-node dependency. Currently supports the EU868 region.
Video
Introducing a video subsystem that inherits all the function names previously in video drivers.
Zbus
CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATIONnow works without requiring a dedicated pool on every channel (channels fall back to the shared pool untilzbus_chan_set_msg_sub_pool()is called)
Devicetree
Nodes can now use phandles to refer to their children without causing a cycle in the dependency graph and a build error. See dependency-mode how to use this new feature. (GitHub #108892)
Other notable changes
Build system
The minimum required CMake version has been raised to 3.28.0, a version satisfied by the CMake package in the Ubuntu 24.04 LTS package repositories. See the migration guide for options if your distribution ships an older version.
Kernel
CONFIG_SCHED_CPU_MASKno longer depends onCONFIG_SCHED_SIMPLE. CPU affinity masks are now supported on all three scheduler backends:SCHED_SIMPLE(O(N) list scan),SCHED_SCALABLE(O(N) red/black tree walk), andSCHED_MULTIQ(O(P·N) per-priority bucket scan). See the updated SMP documentation for per-backend performance notes.CONFIG_SCHED_CPU_MASK_PIN_ONLYnow enforces the one-CPU-bit invariant at both the API boundary (cpu_mask_mod()) and at queue time (thread_runq()). Callingk_thread_cpu_mask_clear(),k_thread_cpu_mask_enable_all(), ork_thread_cpu_mask_disable()in PIN_ONLY mode triggers an assertion failure. Usek_thread_cpu_pin()to reassign a thread to a different CPU.
Wi-Fi
Removed the
samples/net/wifi/test_certs/rsa2kenterprise test certificates (DES-encrypted private keys). Usersa2k_no_desinstead.
MCUboot
SB_CONFIG_BOOT_SIGNATURE_KEY_FILEnow accepts a comma-separated list of key files, embedding the public half of each in the MCUboot bootloader. When more than one key is given, MCUboot accepts an image signed with any of them – the typical use is a development bootloader that boots both development- and production-signed images, while production bootloaders embed only the production key. The first entry is the key the application is signed with and the rest are verification-only public keys. See Signing Binaries.
Arm
- The non-secure variant of
Arm Musca-S1 (
v2m_musca_s1/musca_s1/ns) has been removed due to TF-M removing platform support for this board.
As a consequence of the above, the secure variant of Arm Musca-S1 (
v2m_musca_s1) has been deprecated. This is to avoid a confusing state of partial support.
Trusted Firmware-A
CONFIG_TFA_BUILD_FIPis introduced to configure FIP (Firmware Image Package) generation. FIP generation is by default disabled, but can be enabled by settingCONFIG_TFA_BUILD_FIP=yinprj.confor for custom boards, in the board’s<board>_defconfigfile.