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
ARM
CONFIG_PLATFORM_SPECIFIC_INITz_arm_platform_init()
RISC-V
CONFIG_EXTRA_EXCEPTION_INFO
x86
CONFIG_SSECONFIG_SSE_FP_MATH
Xtensa
CONFIG_XTENSA_BACKTRACE_EXCEPTION_DUMP_HOOK
Bluetooth
Controller
CONFIG_BT_CTRL_ADV_ADI_IN_SCAN_RSP
Host
The
CONFIG_BT_RECV_CONTEXTchoice and its optionsCONFIG_BT_RECV_WORKQ_SYSandCONFIG_BT_RECV_WORKQ_BThave been removed. The host now always processes low-priority HCI packets on the dedicated Bluetooth RX workqueue (the formerCONFIG_BT_RECV_WORKQ_BTbehavior). See the migration guide.Selected Host work items have moved from the system workqueue to the dedicated Bluetooth RX workqueue. Application callbacks reached from those work items now run in the Bluetooth RX thread. See the migration guide for affected callback families.
The
CONFIG_BT_HCI_RAW_H4andCONFIG_BT_HCI_RAW_H4_ENABLEKconfig options have been removed. They have had no effect since Zephyr 4.2, where the HCI raw layer switched to using H:4 packet encoding for all buffers unconditionally. Applications still setting these options can simply drop them.CONFIG_BT_AUTO_PHY_UPDATE, replaced by theBT_AUTO_PHY_CENTRALandBT_AUTO_PHY_PERIPHERALchoices_bt_gatt_cccBT_GATT_CCC_INITIALIZERCONFIG_BT_CONN_TX_MAXCONFIG_BT_FIXED_PASSKEYbt_passkey_set()BT_PASSKEY_INVALID
Mesh
CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASECONFIG_BT_MESH_BLOB_IO_FLASH_WITHOUT_ERASE
Services
CONFIG_BT_DIS_MANUFCONFIG_BT_DIS_MODEL
Boards
Dropped the following deprecated board aliases:
arduino_uno_r4_minimaarduino_uno_r4_wifiesp32c6_devkitcesp32_devkitc_wroom/esp32/procpuesp32_devkitc_wroom/esp32/appcpuesp32_devkitc_wrover/esp32/procpuesp32_devkitc_wrover/esp32/appcpuneorv32panb511evbraytac_an54l15q_db/nrf54l15/cpuappscobc_module1xiao_esp32c6
Build system
CONFIG_BUILD_NO_GAP_FILLcmake/app/boilerplate.cmakeBoard revision Kconfig fragments named
<board>_<revision>.conf, replaced by<board>_<revision>_defconfigPattern expansion in
zephyr_code_relocate(FILES ...), replaced byfile(GLOB ...)The CMake
flash,debug,debugserver,attachandrtttargets, replaced by the correspondingwestcommandsThe
WEST_DIRbuild system variable
CAN
bus-speedbus-speed-data
Comparator
nxp,enable-output-pin,nxp,use-unfiltered-output,nxp,high-speed-mode,nxp,enable-sample,nxp,filter-count,nxp,filter-periodandnxp,window-modeproperties ofnxp,kinetis-acmp
Counter
CONFIG_COUNTER_MAXIM_DS3231prescalerproperty ofnxp,lptmr
hawkBit
<zephyr/mgmt/hawkbit.h>
LLEXT
llext_get_fn_table, replaced byllext_get_fn_table_entry
Mbed TLS
CONFIG_MBEDTLS_MDCONFIG_MBEDTLS_LMSCONFIG_MBEDTLS_TLS_VERSION_1_2CONFIG_MBEDTLS_DTLSCONFIG_MBEDTLS_TLS_VERSION_1_3CONFIG_MBEDTLS_TLS_SESSION_TICKETSCONFIG_MBEDTLS_CTR_DRBG_ENABLEDCONFIG_MBEDTLS_HMAC_DRBG_ENABLED
MCUboot
CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH, replaced byCONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE
MCUmgr
CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM
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
Nordic
owner-id,perm-read,perm-write,perm-execute,perm-secureandnon-secure-callableproperties ofnordic,owned-memoryandnordic,owned-partitions
Random
CONFIG_CTR_DRBG_CSPRNG_GENERATORCONFIG_CS_CTR_DRBG_PERSONALIZATION
SPI
The optional delay argument of
SPI_CONFIG_DT,SPI_CONFIG_DT_INST,SPI_DT_SPEC_GET,SPI_DT_SPEC_INST_GET,SPI_DT_IODEV_DEFINE,SPI_DT_INST_IODEV_DEFINEandSPI_CS_CONTROL_INIThas been removed.
Stream Flash
stream_flash_erase_page()
ZTest
CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNTCONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT
West sign support for imgtool, which was deprecated in Zephyr 4.0, has been removed.
The
scripts/logging/dictionary/log_parser_uart.pydictionary logging script, which was deprecated in Zephyr 4.3, has been removed. Use scripts/logging/dictionary/live_log_parser.py instead.The
--skip-rebuildoption ofwest flash,west debugand the other commands that invoke a runner, which was deprecated in Zephyr 4.3, has been removed. Use--no-rebuildinstead.
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.
Timer
New
sys_clock_no_timeout()hook for handling ofCONFIG_SYSTEM_CLOCK_SLOPPY_IDLE, replacing the call tosys_clock_set_timeout()withticks=K_TICKS_FOREVER.New
sys_clock_idle_enter()hook for handling of entry in low-power state, replacing the call tosys_clock_set_timeout()withidle=true.
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.
West
west spdx --initis deprecated. A build withCONFIG_BUILD_OUTPUT_METAnow asks CMake for the file-based API thatwest spdxreads, so the build directory no longer has to be prepared before it is configured. See Software bill of materials: west spdx.
Work queue
k_work_q.threadhas been deprecated. Usek_work_q.thread_idinstead.
New APIs and options
ADC
Optional
adc_driver_api.ref_getcallback andadc_ref_get()so applications andadc_raw_to_millivolts_dt()can use a driver-owned runtime millivolt scale for anyadc_reference. Staticadc_driver_api.ref_internalremains the fallback forADC_REF_INTERNALwhen the callback is NULL.adc_raw_to_millivolts_dt()falls back to channel DTzephyr,vref-mvwhenadc_ref_get()fails.
Architectures
CONFIG_ARM_MPU_CM7_UNMAPPED_REGION(Arm Cortex-M7 catch-all MPU region for unmapped addresses, erratum 1013783 workaround)CONFIG_EXCEPTION_DUMP(enabled by default, can be disabled to compile out the fault handler output on size constrained builds)
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.BT_HCI_QUIRK_NO_FLOW_CONTROLHCI device quirk for controllers that advertise but reject the controller to host flow control commands.
Mesh
Crypto
Devicetree
Haptics
haptics_monitorhaptics_monitor_typehaptics_source
HWSPINLOCK
Kconfig
Add
dt_partition_mtdpreprocessor function (GitHub #111599)
Kernel
Namespaced equivalents of the interrupt control APIs, preferred for new code; the unprefixed names remain fully supported:
k_irq_lock(),k_irq_unlock(),k_irq_enable(),k_irq_disable(),k_irq_is_enabled(),k_irq_connect_dynamic()andk_irq_disconnect_dynamic()
LoRa
Management
MCUmgr
Added support for SPI MCUmgr SMP transport, which can be enabled with
CONFIG_MCUMGR_TRANSPORT_SPI.Added experimental transport management group:
CONFIG_MCUMGR_GRP_TRANSPORT,CONFIG_MCUMGR_GRP_TRANSPORT_LOCKING,CONFIG_MCUMGR_GRP_TRANSPORT_MAX_BRIDGES,CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_DEFAULT,CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE,CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE_GROUP_ID,CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_FUNCTIONandCONFIG_MCUMGR_GRP_TRANSPORT_INFO_FUNCTIONS.
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.Add a DHCPv6 server with IPv6 prefix delegation support (
CONFIG_NET_DHCPV6_SERVER):net_dhcpv6_server_start(),net_dhcpv6_server_stop()andnet_dhcpv6_server_foreach_lease().Add IPv6 router role, that is, transmission of Router Advertisements (
CONFIG_NET_IPV6_ND_RA_TX):net_if_ipv6_router_start(),net_if_ipv6_router_stop()andnet_if_ipv6_prefix_set_advertise().Add requesting router support to the DHCPv6 client, a delegated prefix can be sub-delegated onto downstream links via
net_dhcpv6_params.downstream_ifaces.Add
net_eth_mcast_addr_add(),net_eth_mcast_addr_rm()andnet_eth_mcast_addr_foreach(). The Ethernet L2 now keeps track of the link layer multicast addresses that an interface listens to, so an Ethernet driver is asked to change its receive filter only when a group is joined by its first user or left by its last one. Previously the IP level joins and the packet socket memberships were forwarded to the driver separately, and leaving one group could stop the device from listening to another group that needs the same link layer address. This happens easily as IPv4 multicast addresses map 32:1 to link layer addresses. A driver can also treatETHERNET_CONFIG_TYPE_FILTERas a hint that the addresses changed and reprogram its filter by iterating them withnet_eth_mcast_addr_foreach(), which suits devices that filter by a hash of the address. How many addresses an interface can track is the sum of what the enabled subsystems ask for, andCONFIG_NET_L2_ETHERNET_MCAST_FILTER_COUNTcan raise it if an application needs more. A multicast destination address given tonet_eth_mac_filter()or toNET_REQUEST_ETHERNET_SET_MAC_FILTERis counted the same way, so each such filter that an application sets must now also be unset by it, and unsetting one that was never set fails with-ENOENT.Add
ZSOCK_PACKET_ADD_MEMBERSHIPandZSOCK_PACKET_DROP_MEMBERSHIPsocket options at theZSOCK_SOL_PACKETlevel (CONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP), so that a packet socket can ask the network interface to start or stop listening to an extra L2 multicast address. On Ethernet the address is programmed to the receive filter of the device if it supports filtering, and a device that does not filter passes the group up anyway. A join that the interface cannot serve is reported to the application,ENOMEMif the interface cannot track another address andENOTSUPif it is not an Ethernet interface. The membership changes are reported by theNET_EVENT_PACKET_MCAST_MEMBERSHIP_ADDandNET_EVENT_PACKET_MCAST_MEMBERSHIP_DROPnetwork management events. Memberships still held when the socket is closed are dropped automatically, andCONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP_COUNTsets how many memberships can be active at the same time.
Power Management
Pulse IO
Added the Pulse IO subsystem, a vendor-neutral API for hardware that generates and captures timed digital edges on a GPIO line.
Ring buffer
Zbus
New Boards
Adafruit Industries, LLC
Adafruit Feather ESP32C6 (
adafruit_feather_esp32c6)TRRS Trinkey (
adafruit_trrs_trinkey)
Advanced Micro Devices (AMD), Inc.
ACP 7.0 Xtensa Audio DSP (
acp_7_0_adsp)ACP 7.X Xtensa Audio DSP (
acp_7_x_adsp)AMD Zynq UltraScale+ MPSoC APU (
zynqmp_apu)AMD Zynq UltraScale+ MPSoC RPU (
zynqmp_rpu)
Aesc Silicon
ElemRV Flask-H (
elemrv_flask_h)
Ai-Thinker Co., Ltd.
Ai-Thinker M64P-32S Development Board (
ai_m64p_32s_kit)AiPi-Eyes-S2 Multi-Functional Development Board (
aipi_eyes_s2)
Alif Semiconductor
Alif Balletto B1 Development Kit (
balletto_b1_dk)Alif Ensemble E8 AI/ML AppKit (
ensemble_e8_ak)
Analog Devices, Inc.
MAX32651EVKIT (
max32651evkit)
Antmicro
STM32H7 HDMI Board (
stm32h7_hdmi_board)STM32H7 Renode Reference Platform (
stm32h7_renode_reference_board)
Arduino
Arduino Nano RP2040 Connect (
arduino_nano_connect)Arduino Nesso N1 (
arduino_nesso_n1)
ARM Ltd.
Arm Corstone-1000-A320 Fixed Virtual Platform (
fvp_corstone1000)
Armfly
Armfly STM32H743XIH6 (
armfly_stm32h743xih6)
Barth Elektronik GmbH
STG-800 lococube mini-PLC (
stg_800)
BeagleBoard.org Foundation
BeagleBadge (
beaglebadge)BeagleConnect Zepto (
beagleconnect_zepto)PocketBeagle 2 Industrial (
pocketbeagle_2_industrial)
BLIIoT Technology Co., Ltd.
BLIIoT ARMxy BL350 AM62x M4 (
am62x_m4_bl350)
Bouffalo Lab (Nanjing) Co., Ltd.
Bouffalo Lab BL618 G0 evaluation board (
bl618g0)
CAN-module, FOP
CANBRIDGE G473 (
canbridge_g473)USBCAN ISO (
usbcan_iso)USBCANFD DUAL (
usbcanfd_dual)USBCANFD SOLO (
usbcanfd_solo)
Chengdu Ebyte Electronic Technology
Ebyte E80 Module Development Board (HF) (
e80_900mbl_01)Ebyte EoRa-HUB-900TB Module Test Kit (
eora_hub_900tb)
Chengdu Heltec Automation Technology Co., Ltd.
Heltec T114 v2 (
heltec_t114_v2)
Cirrus Logic, Inc.
CRD40L26-POC-C (
crd40l26)
emtrion GmbH
emSBC-NEON-CM7 (
emsbc_neon_cm7)
Espressif Systems
ESP32-P4-Function-EV-Board (
esp32p4_function_ev_board)ESP32-P4X-Function-EV-Board (
esp32p4x_function_ev_board)ESP32-S3-BOX-3 (
esp32s3_box3)
Eurovibes
STM32G431 based Sertest-NG board (
eurovibes_stm32g431_sertest-ng)
FlySky
FlySky FS-i6S (
fs_i6s)
Heimann Sensor GmbH
Heimann HTPA Eval Board (rev0) (
htpa_eval)
Intel Corporation
Nova Lake RVP (
intel_nvl_s_rvp)
Jhoinrch
RH02 (
rh02)RH02 Plus (2026) (
rh02_plus_2026)
KAGA FEI Co., Ltd.
EC4L15BA1-EVB (
ec4l15ba1)
KinCony Electronics Co., Ltd.
KC868-A8 (
kincony_kc868_a8)
Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd
LilyGO T-Deck / T-Deck Plus (
t_deck)
M5Stack
PaperColor (
m5stack_paper_color)M5Stack StickS3 (
m5stack_sticks3)Unit C6L (
m5stack_unitc6l)
Makerfabs
Matouch MTRO128G (
matouch_mtro128g)
Microchip Technology Inc.
Microchip M2S010 MKR Kit (
m2s010_mkr_kit)Microchip M2S Hello FPGA Kit (
m2s_hello_fpga_kit)PIC32CK GC01 Curiosity Ultra (
pic32ck_gc01_cult)PIC32CM GC00 Curiosity Pro (
pic32cm_gc00_cpro)PIC32CM SG00 Curiosity Pro (
pic32cm_sg00_cpro)SAMA5D27 SOM1 Kit1 (
sama5d27_som1_ek1)
MuseLab Electronics
MuseLab nanoCH32V317 (
nano_ch32v317)MuseLab nanoCH57x (
nano_ch57x)
Nordic Semiconductor
nRF93M1 DK (
nrf93m1dk)
Norik Systems
DECT NR+ USB Dongle (
dect_nr_plus_usb_dongle)
NUCODE Co., Ltd. (nuworks.io)
NUCODE NU32 (
nucode_nu32)NUCODE NU40 (
nucode_nu40)
Nuvoton Technology Corporation
NUMAKER M031KI (
numaker_m031ki)NUMAKER M3351KI (
numaker_m3351ki)
NXP Semiconductors
FRDM-IMXRT1152 (
frdm_imxrt1152)FRDM-IMXRT700 (
frdm_imxrt700)i.MX952 EVK (
imx952_evk)LPC845-BRK (
lpc845brk)LPCXpresso54628 (
lpcxpresso54628)MIMXRT685-AUD-EVK (
mimxrt685_aud_evk)MR-NavQ95B (
mr_navq95b)
OLIMEX Ltd.
ESP32-P4-PC (
esp32p4_pc)
Others
BL704L Development Board (
bl704l_dvk)ESP32-H2-SUPERMINI (
esp32h2_supermini)JZ-F407VET6 Industrial Control Board (
jz_f407vet6)STM32 Debug Probe (
stm32_debug_probe)
Pine64
PineCone BL602 Evaluation Board (
pinecone)
QEMU
QEMU Emulation for ARM Cortex-A72 (
qemu_cortex_a72)
Radxa
Radxa ROCK 3B (
rock_3b)ROCK 5B+ (
rock_5b_plus)
Raspberry Pi Foundation
Raspberry Pi Zero 2 W (
rpi_zero_2w)
Raytac Corporation
AN54LV-DB-15 (
raytac_an54lv_db_15)
Realtek Semiconductor Corp.
RTL8721Dx Evaluation Board (
pke8721daf_c13_f10)
Renesas Electronics Corporation
R-Car Ironhide (
rcar_ironhide_x5h)RZ/A3M Evaluation Kit (
rza3m_ek)
Seeed Technology Co., Ltd
reTerminal E1001 (
reterminal_e1001)reTerminal E1003 (
reterminal_e1003)Wio Tracker L1 (
wio_tracker_l1)XIAO ESP32C5 (
xiao_esp32c5)XIAO nRF54LM20A (
xiao_nrf54lm20a)
SEGGER Microcontroller GmbH
NAND Flash Evaluator (
nandeval_h743zi)
SHAKTI Processor Program
Nexys Video (Ganga SoC) (
nexys_ganga)
Shanghai Ruiside Electronic Technology Co., Ltd.
RA8P1 Titan (
ra8p1_titan)RA8P1 Titan Mini (
ra8p1_titan_mini)
Shenzhen JLC Technology Group Co., Ltd.
SkyStar GD32F407VET6 (
skystar_gd32f407vet6)
Shenzhen Luckfox Technology Co., Ltd.
Pico Ultra (
pico_ultra)
Shenzhen Sipeed Technology Co., Ltd.
Sipeed M0Sense (
m0sense)Sipeed M1S Dock (
m1s_dock)
Shenzhen Xunlong Software CO.,Limited
Orange Pi Zero 2W (
opi_zero2w)
Silicon Laboratories
KG100S Radio board (KG100S-RB4332A) (
kg100s_rb4332a)EFR32xG26 Dev Kit (xG26-DK2608A) (
xg26_dk2608a)EFR32xG26 2.4 GHz +20 dBm Radio Board (
xg26_rb4121a)
STMicroelectronics
Nucleo G491RE (
nucleo_g491re)Nucleo U545RE Q (
nucleo_u545re_q)
Sutajio Ko-Usagi PTE Ltd.
Tomu (
tomu)
Texas Instruments
AM13E230X Launchpad (
lp_am13e230)TI AM243x LaunchPad (
lp_am243)MSPM33C321A Launchpad (
lp_mspm33c321a)
Trenz Electronic
Trenz Electronic TE0950 (
te0950)
Tuya Inc.
TYZS3 (
tyzs3)
u-blox
EVK-NORA-B2 (
ubx_evknorab2)
Udoo
UDOO KEY (
udoo_key)
Umeta & Ikki Automotive Parts
UIAPduino Pro Micro CH32V003 (
uiapduino_pro_micro_ch32v003)
VIEWE Display Co., Ltd.
VIEWE UEDX24240013-MD50E (
uedx24240013_md50e)VIEWE UEDX32480035E-WB-A (
uedx32480035e_wb_a)
Waveshare Electronics
ESP32-C6 LCD 1.47" (
esp32c6_lcd_1_47)ESP32-P4-WIFI6 (
esp32p4_wifi6)ESP32-P4-WIFI6-Dev-Kit (
esp32p4_wifi6_dev_kit)Waveshare ESP32-P4-ETH (
waveshare_esp32p4_eth)
WeAct Studio
WeActStudio CH32V00xCoreBoard (
ch32v00x_core)USB2CANFDV2 (
usb2canfdv2)WeAct RA4M1 Core Board (
weact_ra4m1_core)
WinChipHead
WCH CH32H417EVT (
ch32h417evt)WCH CH32V103EVT (
ch32v103evt)WCH CH32V203EVT (
ch32v203c8t6evt)WCH CH32V305F-EVT-R0 (
ch32v305f_evt_r0)
WIZnet Co., Ltd.
W55RP20-EVB-Pico (
w55rp20_evb_pico)W6100-EVB-Pico (
w6100_evb_pico)W6100-EVB-Pico2 (
w6100_evb_pico2)W6300-EVB-Pico2 (
w6300_evb_pico2)
New Shields
New Drivers
ADC
ARM architecture
Audio
Auxiliary Display
Bluetooth
Buzzer
CAN
Charger
Clock control
Clock monitor
Comparator
Counter
CPU
CPU frequency scaling
CRC
Cryptographic accelerator
DAC
DAI
DALI
Disk
Display
DMA
DSP
EDAC
ESPI
Ethernet
Firmware
Flash controller
FPGA
Fuel gauge
GNSS
GPIO & Headers
Haptics
Hardware information
I2C
I2S
I3C
IEEE 802.15.4
Input
Interrupt controller
IPC
LED
LED strip
LoRa
Mailbox
MCUmgr
Memory controller
Miscellaneous
Modem
MTD
Multi-bit SPI
Multi-Function Device
MUX
Networking
OPAMP
OTP memory
PCIe
PHY
Pin control
Power domain
Power management
Pulse IO
PWM
Regulator
Reset controller
Retained memory
RNG
RTC
SDHC
Sensors
Serial controller
SMbus
SPI
Tachometer
Timer
USB
Wakeup Controller
Watchdog
Wi-Fi
New Samples
Libraries / Subsystems
Crypto
Added AES CFB and OFB cipher mode support.
Mbed TLS
Mbed TLS was updated to version 4.1.1. Release notes can be found here.
TF-PSA-Crypto was updated to version 1.1.1. Release notes can be found here.
Added
CONFIG_TF_PSA_CRYPTO_DISPATCH_DIR, which enables TF-PSA-Crypto to use custom implementations of crypto operation dispatch. This makes hardware acceleration of cryptographic operations possible by using an accelerator-aware dispatch implementation.
TF-M
TF-M was updated from version 2.2.2 to version 2.3.1. Release notes can be found at:
TF-M can now be compiled using LLVM by setting
ZEPHYR_TOOLCHAIN_VARIANTtozephyr/llvm.
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)
__assert
__ASSERT_ONdefine has been removed.
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.
Timer
With
CONFIG_SYSTEM_CLOCK_SLOPPY_IDLEenabled, a driver may no longer stop its time base as soon as no timeout is pending, if that breakssys_clock_cycle_get_32()/sys_clock_cycle_get_64(). Those must keep counting while the CPU runs. Stopping the time base is permitted only fromsys_clock_idle_enter(), wheresys_clock_idle_exit()is guaranteed to follow.Tickless system-timer drivers can now be built on a shared implementation header,
drivers/timer/system_timer_generic.h, which owns the tick accounting each driver previously open-coded: the cycle-to-tick conversion, the announce baseline, the tick-aligned deadline and the counter wrap and range handling. A driver reduces to a few cycle-domain primitives, a cycle-counter read plus an absolute-compare arm. See the migration guide for how to use it (GitHub #115844).
Wi-Fi
Removed the
samples/net/wifi/test_certs/rsa2kenterprise test certificates (DES-encrypted private keys). Usersa2k_no_desinstead.The transmit power ceiling properties in
wifi-tx-power-2g.yamlandwifi-tx-power-5g.yamlare no longerrequiredand now carry conservative defaults, so a board that has not been characterised errs on the side of transmitting too little rather than exceeding a regulatory limit. Boards that have measured their own limits continue to state them explicitly, so no board changes behaviour.
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.
NXP
The NXP LPC DTSI files have been reorganized from the flat
dts/arm/nxp/lpc/directory into per-series subdirectories (lpc11u6x/,lpc51u68/,lpc54xxx/,lpc55xxx/,lpc84x/). See the migration guide for how to update out-of-tree board includes.The NXP Kinetis DTSI files have been reorganized from the flat
dts/arm/nxp/kinetis/directory into per-series subdirectories (k2x/,k32lx/,k6x/,k8x/,ke1xf/,ke1xz/,kl2x/,kv5x/,kwx/). See the migration guide for how to update out-of-tree board includes.The NXP MCX DTSI files have been reorganized from the flat
dts/arm/nxp/mcx/directory into per-series subdirectories (mcxa/,mcxc/,mcxe/,mcxl/,mcxn/,mcxw/). See the migration guide for how to update out-of-tree board includes.The NXP i.MX RT DTSI files have been reorganized from the flat
dts/arm/nxp/imxrt/directory into per-series subdirectories (imxrt10xx/,imxrt11xx/,imxrt5xx/,imxrt6xx/,imxrt7xx/,imxrt118x/). See the migration guide for how to update out-of-tree board includes.
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.