Zephyr 4.0.0 (Working Draft)
We are pleased to announce the release of Zephyr version 4.0.0.
Major enhancements with this release include:
The introduction of the secure storage subsystem. It allows the use of the PSA Secure Storage API and of persistent keys in the PSA Crypto API on all board targets. It is now the standard way to provide device-specific protection to data at rest. (GitHub #76222)
An overview of the changes required or recommended when migrating your application from Zephyr v3.7.0 to Zephyr v4.0.0 can be found in the separate migration guide.
The following sections provide detailed lists of changes by component.
API Changes
Removed deprecated arch-level CMSIS header files
include/zephyr/arch/arm/cortex_a_r/cmsis.h
andinclude/zephyr/arch/arm/cortex_m/cmsis.h
.cmsis_core.h
needs to be included now.Removed deprecated
ceiling_fraction
macro.DIV_ROUND_UP
needs to be used now.Deprecated
EARLY
,APPLICATION
andSMP
init levels can no longer be used for devices.Removed deprecated header file
include/zephyr/random/rand32.h
.random.h
needs to be included now.
Removed APIs in this release
Macro
K_THREAD_STACK_MEMBER
, deprecated since v3.5.0, has been removed. UseK_KERNEL_STACK_MEMBER
instead.CBPRINTF_PACKAGE_COPY_*
macros, deprecated since Zephyr 3.5.0, have been removed._ENUM_TOKEN
and_ENUM_UPPER_TOKEN
macros, deprecated since Zephyr 2.7.0, are no longer generated.
Deprecated in this release
Deprecated the
net_buf_put()
andnet_buf_get()
API functions in favor ofk_fifo_put()
andk_fifo_get()
.The Keyboard Scan subsystem has been marked as deprecated.
Architectures
ARC
ARM
ARM64
Added initial support for
arch_stack_walk()
that supports unwinding via esf onlyAdded support for demand paging.
Added support for Linkable Loadable Extensions (LLEXT).
RISC-V
The stack traces upon fatal exception now prints the address of stack pointer (sp) or frame pointer (fp) depending on the build configuration.
When
CONFIG_EXTRA_EXCEPTION_INFO
is enabled, the exception stack frame (arch_esf) has an additional fieldcsf
that points to the callee-saved-registers upon an fatal error, which can be accessed ink_sys_fatal_error_handler()
byesf->csf
.For SoCs that select
RISCV_SOC_HAS_ISR_STACKING
, theSOC_ISR_STACKING_ESF_DECLARE
has to include thecsf
member, otherwise the build would fail.
Xtensa
x86
Added initial support for
arch_stack_walk()
that supports unwinding via esf only
Kernel
Devicetree devices are now exported to Linkable Loadable Extensions (LLEXT).
Bluetooth
Audio
bt_tbs_client_register_cb()
now supports multiple listeners and may now return an error.Added APIs for getting and setting the assisted listening stream values in codec capabilities and codec configuration:
Added APIs for getting and setting the broadcast name in codec capabilities and codec configuration:
Host
Added API
bt_gatt_get_uatt_mtu()
to get current Unenhanced ATT MTU of a given connection (experimental).Added
CONFIG_BT_CONN_TX_NOTIFY_WQ
. The option allows using a separate workqueue for connection TX notify processing (bt_conn_tx_notify()
) to make Bluetooth stack more independent from the system workqueue.The host now disconnects from the peer upon ATT timeout.
Added a warning to
bt_conn_le_create()
andbt_conn_le_create_synced()
if the connection pointer passed as an argument is not NULL.Added Kconfig option
CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE
to enforcebt_conn_le_create()
andbt_conn_le_create_synced()
return an error if the connection pointer passed as an argument is not NULL.
Controller
Added Periodic Advertising Sync Transfer (PAST) support with support for both sending and receiving roles. The option can be enabled by
CONFIG_BT_CTLR_SYNC_TRANSFER_SENDER
andCONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER
.
HCI Drivers
Mesh
Introduced a mesh-specific workqueue to increase reliability of the mesh messages transmission. To get the old behavior enable
CONFIG_BT_MESH_WORKQ_SYS
.
Boards & SoC Support
Added support for these SoC series:
Added ESP32-C2 and ESP8684 SoC support.
Added STM32U0 series with GPIO, Serial, I2C, DAC, ADC, flash, PWM and counter driver support.
Added STM32WB0 series with GPIO, Serial, I2C, SPI, ADC, DMA and flash driver support.
Added STM32U545xx SoC variant.
Made these changes in other SoC series:
NXP S32Z270: Added support for the new silicon cut version 2.0. Note that the previous versions (1.0 and 1.1) are no longer supported.
Added ESP32 WROVER-E-N16R4 variant.
STM32H5: Added support for OpenOCD through STMicroelectronics OpenOCD fork.
MAX32: Enabled Segger RTT and SystemView support.
Silabs Series 2: Use oscillator, clock and DCDC configuration from device tree during init.
Silabs Series 2: Added initialization for SMU (Security Management Unit).
Silabs Series 2: Use sleeptimer as the default OS timer instead of systick.
Added support for these boards:
01space ESP32C3 0.42 OLED (
esp32c3_042_oled
)ADI MAX32662EVKIT (
max32662evkit
)ADI MAX32666EVKIT (
max32666evkit
)ADI MAX32666FTHR (
max32666fthr
)ADI MAX32675EVKIT (
max32675evkit
)ADI MAX32690FTHR (
max32690fthr
)Arduino Nicla Vision (
arduino_nicla_vision
)BeagleBone AI-64 (
beaglebone_ai64
)BeaglePlay (CC1352) (
beagleplay
)DPTechnics Walter (
walter
)Espressif ESP32-C3-DevKitC (
esp32c3_devkitc
)Espressif ESP32-C3-DevKit-RUST (
esp32c3_rust
)Espressif ESP32-S3-EYE (
esp32s3_eye
)Espressif ESP8684-DevKitM (
esp8684_devkitm
)mikroe STM32 M4 Clicker (
mikroe_stm32_m4_clicker
)Nordic Semiconductor nRF54L15 DK (
nrf54l15dk
)Nordic Semiconductor nRF54L20 PDK (
nrf54l20pdk
)Nordic Semiconductor nRF7002 DK (
nrf7002dk
)Nuvoton NPCM400_EVB (
npcm400_evb
)NXP FRDM-MCXA156 (
frdm_mcxa156
)NXP FRDM-MCXC242 (
frdm_mcxc242
)NXP FRDM-MCXC444 (
frdm_mcxc444
)NXP FRDM-MCXN236 (
frdm_mcxn236
)NXP FRDM-MCXW71 (
frdm_mcxw71
)NXP i.MX95 EVK (
imx95_evk
)NXP MIMXRT1180-EVK (
mimxrt1180_evk
)PHYTEC phyBOARD-Nash i.MX93 (
phyboard_nash
)Renesas RA2A1 Evaluation Kit (
ek_ra2a1
)Renesas RA4E2 Evaluation Kit (
ek_ra4e2
)Renesas RA4M2 Evaluation Kit (
ek_ra4m2
)Renesas RA4M3 Evaluation Kit (
ek_ra4m3
)Renesas RA4W1 Evaluation Kit (
ek_ra4w1
)Renesas RA6E2 Evaluation Kit (
ek_ra6e2
)Renesas RA6M1 Evaluation Kit (
ek_ra6m1
)Renesas RA6M2 Evaluation Kit (
ek_ra6m2
)Renesas RA6M3 Evaluation Kit (
ek_ra6m3
)Renesas RA6M4 Evaluation Kit (
ek_ra6m4
)Renesas RA6M5 Evaluation Kit (
ek_ra6m5
)Renesas RA8D1 Evaluation Kit (
ek_ra8d1
)Renesas RA6E1 Fast Prototyping Board (
fpb_ra6e1
)Renesas RA6E2 Fast Prototyping Board (
fpb_ra6e2
)Renesas RA8T1 Evaluation Kit (
mck_ra8t1
)Renode Cortex-R8 Virtual (
cortex_r8_virtual
)Seeed XIAO ESP32-S3 Sense Variant:
xiao_esp32s3
.sensry.io Ganymed Break-Out-Board (BOB) (
ganymed_bob
)SiLabs SiM3U1xx 32-bit MCU USB Development Kit (
sim3u1xx_dk
)SparkFun Thing Plus Matter (
sparkfun_thing_plus_matter_mgm240p
)ST Nucleo G431KB (
nucleo_g431kb
)ST Nucleo H503RB (
nucleo_h503rb
)ST Nucleo H755ZI-Q (
nucleo_h755zi_q
)ST Nucleo U031R8 (
nucleo_u031r8
)ST Nucleo U083RC (
nucleo_u083rc
)ST Nucleo WB05KZ (
nucleo_wb05kz
)ST Nucleo WB09KE (
nucleo_wb09ke
)ST STM32U083C-DK (
stm32u083c_dk
)TI CC1352P7 LaunchPad (
cc1352p7_lp
)vcc-gnd YD-STM32H750VB (
yd_stm32h750vb
)WeAct Studio STM32F405 Core Board V1.0 (
weact_stm32f405_core
)WeAct Studio USB2CANFDV1 (
usb2canfdv1
)Witte Technology Linum Board (
linum
)
Made these board changes:
native_posix has been deprecated in favour of native_sim.
The nrf54l15bsim target now includes models of the AAR, CCM and ECB peripherals, and many other improvements.
Support for Google Kukui EC board (
google_kukui
) has been dropped.STM32: Deprecated MCO configuration via Kconfig in favour of setting it through devicetree. See
samples/boards/stm32/mco
sample.STM32: STM32CubeProgrammer is now the default runner on all STMicroelectronics STM32 boards.
Removed the
nrf54l15pdk
board, use nRF54L15 DK instead.PHYTEC:
mimx8mp_phyboard_pollux
has been renamed to phyboard_pollux, with the old name marked as deprecated.PHYTEC:
mimx8mm_phyboard_polis
has been renamed to phyboard_polis, with the old name marked as deprecated.The board qualifier for MPS3/AN547 is changed from:
mps3/an547
tomps3/corstone300/an547
for secure andmps3/an547/ns
tomps3/corstone300/an547/ns
for non-secure.
Added Thingy53 forwarding of network core pins to network core for SPI peripheral (disabled by default) including pin mappings.
Added support for the following shields:
Build system and Infrastructure
Added support for .elf files to the west flash command for jlink, pyocd and linkserver runners.
Extracted pickled EDT generation from gen_defines.py into gen_edt.py. This moved the following parameters from the cmake variable
EXTRA_GEN_DEFINES_ARGS
toEXTRA_GEN_EDT_ARGS
:--dts
--dtc-flags
--bindings-dirs
--dts-out
--edt-pickle-out
--vendor-prefixes
--edtlib-Werror
Switched to using imgtool directly from the build system when signing images instead of calling
west sign
.Added support for selecting MCUboot operating mode in sysbuild using
SB_CONFIG_MCUBOOT_MODE
.Added support for RAM-load MCUboot operating mode in build system, including sysbuild support.
Documentation
Added a new interactive board catalog enabling users to search boards by criteria such as name, architecture, vendor, or SoC.
Added a new interactive code sample catalog for quickly finding code samples based on name and description.
Added
zephyr:board
directive andzephyr:board
role to mark Sphinx pages as board documentation and reference them from other pages. Most existing board documentation pages have been updated to use this directive, with full migration planned for the next release.Added
zephyr:code-sample-category
directive to describe and group code samples in the documentation.Added a link to the source code of the driver matching a binding’s compatible string (when one can be found in the Zephyr tree) to the Devicetree bindings documentation.
Added a button to all code sample README pages allowing to directly browse the sample’s source code on GitHub.
Moved Zephyr C API documentation out of main documentation. API references now feature a rich tooltip and link to the dedicated Doxygen site.
Added two new build commands,
make html-live
andmake html-live-fast
, that automatically locally host the generated documentation. They also automatically rebuild and rehost the documentation when changes to the input.rst
files are detected on the filesystem.
Drivers and Sensors
ADC
Added proper ADC2 calibration entries in ESP32.
Fixed calibration scheme in ESP32-S3.
STM32H7: Added support for higher sampling frequencies thanks to boost mode implementation.
Added initial support for Renesas RA8 ADC driver (
renesas,ra-adc
)Added driver for Analog Devices MAX32 SoC series (
adi,max32-adc
).
Battery
CAN
Added initial support for Renesas RA CANFD (
renesas,ra-canfd-global
,renesas,ra-canfd
)Added Flexcan support for S32Z27x (
nxp,flexcan
,nxp,flexcan-fd
)Improved NXP S32 CANXL error reporting (
nxp,s32-canxl
)
Charger
Clock control
STM32 MCO (Microcontroller Clock Output) is now available on STM32U5 series.
STM32 MCO can and should now be configured with device tree.
STM32:
CONFIG_CLOCK_CONTROL
is now enabled by default at family level and doesn’t need to be enabled at board level anymore.STM32H7: PLL FRACN can now be configured (see
st,stm32h7-pll-clock
)Added initial support for Renesas RA clock control driver (
renesas,ra-cgc-pclk
,renesas,ra-cgc-pclk-block
,renesas,ra-cgc-pll
,renesas,ra-cgc-external-clock
,renesas,ra-cgc-subclk
,renesas,ra-cgc-pll-out
)Silabs: Added support for Series 2+ Clock Management Unit (see
silabs,series-clock
)
Comparator
Introduced comparator device driver subsystem selected with
CONFIG_COMPARATOR
Introduced comparator shell commands selected with
CONFIG_COMPARATOR_SHELL
Added support for Nordic nRF COMP (
nordic,nrf-comp
)Added support for Nordic nRF LPCOMP (
nordic,nrf-lpcomp
)Added support for NXP Kinetis ACMP (
nxp,kinetis-acmp
)
Counter
Added initial support for Renesas RA8 AGT counter driver (
renesas,ra-agt
)Added driver for Analog Devices MAX32 SoC series (
adi,max32-counter
).
Crypto
Added support for STM32L4 AES.
Deprecated the TinyCrypt shim driver
CONFIG_CRYPTO_TINYCRYPT_SHIM
.
DAC
DAC API now supports specifying channel path as internal. Support has been added in STM32 drivers.
Disk
STM32F7 SDMMC driver now supports usage of DMA.
STM32 mem controller driver now supports FMC for STM32H5.
SDMMC subsystem driver will now power down the SD card when the disk is deinitialized
Display
NXP ELCDIF driver now supports flipping the image along the horizontal or vertical axis using the PXP. Use
CONFIG_MCUX_ELCDIF_PXP_FLIP_DIRECTION
to set the desired flip.ST7789V driver now supports BGR565, enabled with
CONFIG_ST7789V_BGR565
.Added driver for SSD1327 OLED display controller (
solomon,ssd1327fb
).Added driver for SSD1322 OLED display controller (
solomon,ssd1322
).Added driver for IST3931 monochrome display controller (
istech,ist3931
).
DMA
Added driver for Analog Devices MAX32 SoC series (
adi,max32-dma
).
EEPROM
Added support for using the EEPROM simulator with embedded C standard libraries (
zephyr,sim-eeprom
).
Entropy
Added initial support for Renesas RA8 Entropy driver (
renesas,ra-rsip-e51a-trng
)Added driver for Analog Devices MAX32 SoC series (
adi,max32-trng
).
Ethernet
Added a
get_phy()
function to the ethernet driver api, which returns the phy device associated to a network interface.Added 2.5G and 5G link speeds to the ethernet hardware capabilities api.
Added check for null api pointer in
net_eth_get_hw_capabilities()
, fixing netusb crash.Added synopsis dwc_xgmac ethernet driver.
Added NXP iMX NETC driver.
Adin2111
Fixed bug that resulted in double RX buffer read when generic spi protocol is used.
Fixed essential thread termination on OA read failure.
Skip checks for port 2 on the adin1110 since it doesn’t apply, as there is no port 2.
ENC28J60
Added support for the
zephyr,random-mac-address
property.Fixed race condition between interrupt service and L2 init affecting carrier status in init.
ENC424j600: Added ability to change mac address at runtime with net management api.
ESP32: Added configuration of interrupts from DT.
Lan865x
Enable all multicast MAC address for IPv6. All multicast mac address can now be received and allows for correct handling of the IPv6 neighbor discovery protocol.
Fixed transmission stopping when setting mac address or promiscuous mode.
LiteX
Renamed the
compatible
fromlitex,eth0
tolitex,liteeth
.Added support for multiple instances of the liteX ethernet driver.
Added support for VLAN to the liteX ethernet driver.
Added phy support.
Native_posix
Implemented getting the interface name from the command line.
Now prints error number in error message when creating an interface.
NXP ENET_QOS: Fixed check for
zephyr,random-mac-address
property.NXP ENET:
Fixed fused MAC address initialization code.
Fixed code path for handling tx errors with timestamped frames.
Fixed network carrier status race condition during init.
NXP S32: Added configs to enable VLAN promiscuous and untagged, and enable SI message interrupt.
STM32
Driver can now be configured to use a preemptive RX thread priority, which could be useful in case of high network traffic load (reduces jitter).
Added support for DT-defined mdio.
Fixed bus error after network disconnection that happened in some cases.
TC6: Combine read chunks into continuous net buffer. This fixes IPv6 neighbor discovery protocol because 64 bytes was not enough for all headers.
PHY driver changes
Added Qualcomm AR8031 phy driver.
Added DP83825 phy driver.
PHY_MII
Fixed generic phy_mii driver not using the value of the
no-reset
property from devicetree.Removed excess newlines from log output of phy_mii driver.
KSZ8081
Fixed reset times during init that were unnecessarily long.
Removed unnecessary reset on every link configuration that blocked system workqueue
Fixed issue relating to strap-in override bits.
Flash
Fixed SPI NOR driver issue where wp, hold and reset pins were incorrectly initialized from device tee when SFDP at run-time has been enabled (GitHub #80383)
Updated all Espressif’s SoC driver initialization to allow new chipsets and octal flash support.
Added
CONFIG_SPI_NOR_ACTIVE_DWELL_MS
, to the SPI NOR driver configuration, which allows setting the time during which the driver will wait before triggering Deep Power Down (DPD). This option replacesCONFIG_SPI_NOR_IDLE_IN_DPD
, aiming at reducing unnecessary power state changes and SPI transfers between other operations, specifically when burst type access to an SPI NOR device occurs.Added
CONFIG_SPI_NOR_INIT_PRIORITY
to allow selecting the SPI NOR driver initialization priority.The flash API has been extended with the
flash_copy()
utility function which allows performing direct data copies between two Flash API devices.Fixed a Flash Simulator issue where offsets were assumed to be absolute instead of relative to the device base address (GitHub #79082).
Extended STM32 OSPI drivers to support QUAL, DUAL and SPI modes. Additionally, added support for custom write and SFDP:BFP opcodes.
Added possibility to run STM32H7 flash driver from Cortex-M4 core.
Implemented readout protection handling (RDP levels) for STM32F7 SoCs.
Added initial support for Renesas RA8 Flash controller driver (
renesas,ra-flash-hp-controller
)Added driver for Analog Devices MAX32 SoC series (
adi,max32-flash-controller
).
GNSS
GPIO
tle9104: Add support for the parallel output mode via setting the properties
parallel-out12
andparallel-out34
.
Hardware info
I2C
Added initial support for Renesas RA8 I2C driver (
renesas,ra-iic
)
I2S
Added ESP32-S3 and ESP32-C3 driver support.
I3C
Added support for SETAASA optimization during initialization. Added a
supports-setaasa
property toi3c-devices.yaml
.Added sending DEFTGTS if any devices that support functioning as a secondary controller on the bus.
Added retrieving GETMXDS within
i3c_device_basic_info_get()
if BCR mxds bit is set.Added helper functions for sending CCCs for ENTTM, VENDOR, DEFTGTS, SETAASA, GETMXDS, SETBUSCON, RSTACT DC, ENTAS0, ENTAS1, ENTAS2, and ENTAS3.
Added shell commands for sending CCCs for ENTTM, VENDOR, DEFTGTS, SETAASA, GETMXDS, SETBUSCON, RSTACT DC, ENTAS0, ENTAS1, ENTAS2, and ENTAS3.
Added shell commands for setting the I3C speed, sending HDR-DDR, raising IBIs, enabling IBIs, disabling IBIs, and scanning I2C addresses.
i3c_ccc_do_setdasa()
has been modified to now require specifying the assigned dynamic address rather than having the dynamic address be determined within the function.i3c_determine_default_addr()
has been removedattach_i3c_device
now no longer requires the attached address as an argument. It is now up to the driver to determine the attached address from thei3c_device_desc
.
Input
New feature:
zephyr,input-double-tap
.New driver:
ilitek,ili2132a
.Added power management support to all keyboard matrix drivers, added a
no-disconnect
property togpio-keys
so it can be used with power management on GPIO drivers that do not support pin disconnection.Added a new framework for touchscreen common properties and features (screen size, inversion, xy swap).
Fixed broken ESP32 input touch sensor driver.
Interrupt
Updated ESP32 family interrupt allocator with proper IRQ flags and priorities.
LED
lp5562: added
enable-gpios
property to describe the EN/VCC GPIO of the lp5562.lp5569: added
charge-pump-mode
property to configure the charge pump of the lp5569.lp5569: added
enable-gpios
property to describe the EN/PWM GPIO of the lp5569.LED code samples have been consolidated under the samples/drivers/led directory.
LED Strip
Updated ws2812 GPIO driver to support dynamic bus timings
LoRa
Mailbox
Added driver support for ESP32 and ESP32-S3 SoCs.
MDIO
Added litex MDIO driver.
Added support for mdio shell to stm32 mdio.
Added mdio driver for dwc_xgmac synopsis ethernet.
Added NXP IMX NETC mdio driver.
NXP ENET MDIO: Fixed inconsistent behavior by keeping the mdio interrupt enabled all the time.
MFD
Modem
Added support for the U-Blox LARA-R6 modem.
Added support for setting the modem’s UART baudrate during init.
MIPI-DBI
Added bitbang MIPI-DBI driver, supporting 8080 and 6800 mode (
zephyr,mipi-dbi-bitbang
).Added support for STM32 FMC memory controller (
st,stm32-fmc-mipi-dbi
).Added support for 8080 mode to NXP LCDIC controller.
MSPI
Pin control
Added support for Microchip MEC5
Added SCMI-based driver for NXP i.MX
Added support for i.MX93 M33 core
Added support for ESP32C2
STM32:
CONFIG_PINCTRL
is now selected by drivers requiring it and shouldn’t be enabled at board level anymore.
PWM
rpi_pico: The driver now configures the divide ratio adaptively.
Added initial support for Renesas RA8 PWM driver (
renesas,ra8-pwm
)Added driver for Analog Devices MAX32 SoC series (
adi,max32-pwm
).
Regulators
Upgraded CP9314 driver to B1 silicon revision
Added basic driver for MPS MPM54304
Reset
RTC
STM32: HSE can now be used as domain clock.
RTIO
SDHC
Added ESP32-S3 driver support.
SPI SDHC driver now handles SPI devices with runtime PM support correctly
Sensors
General
The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed to support all JEDEC JC 42.4 compatible temperature sensors. It now uses the
jedec,jc-42.4-temp
compatible string instead to themicrochip,mcp9808
string.Added support for VDD based ADC reference to the NTC thermistor driver.
Added Avago APDS9253 (
avago,apds9253
) and APDS9306 (avago,apds9306
) ambient light sensor drivers.Added gain and resolution attributes (
SENSOR_ATTR_GAIN
andSENSOR_ATTR_RESOLUTION
).
ADI
Add RTIO streaming support to ADXL345, ADXL362, and ADXL372 accelerometer drivers.
Bosch
Merged BMP390 into BMP388.
Added support for power domains to BMM150 and BME680 drivers.
Added BMP180 pressure sensor driver (
bosch,bmp180
).
Memsic
Added MMC56X3 magnetometer and temperature sensor driver (
memsic,mmc56x3
).
NXP
Added P3T1755 digital temperature sensor driver (
nxp,p3t1755
).Added FXLS8974 accelerometer driver (
nxp,fxls8974
).
ST
Aligned drivers to stmemsc HAL i/f v2.6.
Added LSM9DS1 accelerometer/gyroscope/magnetometer sensor driver (
st,lsm9ds1
).
TDK
Added I2C bus support to ICM42670.
TI
Added support for INA236 to the existing INA230 driver.
Added support for TMAG3001 to the existing TMAG5273 driver.
Added TMP1075 temperature sensor driver (
ti,tmp1075
).
Vishay
Added trigger capability to VCNL36825T driver.
WE
Added Würth Elektronik HIDS-2525020210002
we,wsen-hids-2525020210002
humidity sensor driver.
Serial
LiteX: Renamed the
compatible
fromlitex,uart0
tolitex,uart
.Nordic: Removed
CONFIG_UART_n_GPIO_MANAGEMENT
Kconfig options (where n is an instance index) which had no use after pinctrl driver was introduced.NS16550: Added support for Synopsys Designware 8250 UART.
Renesas: Added support for SCI UART.
Sensry: Added UART support for Ganymed SY1XX.
SPI
Added initial support for Renesas RA8 SPI driver (
renesas,ra8-spi-b
)Added RTIO support to the Analog Devices MAX32 driver.
Silabs: Added support for EUSART (
silabs,gecko-spi-eusart
)
Steppers
Introduced stepper controller device driver subsystem selected with
CONFIG_STEPPER
Introduced stepper shell commands for controlling and configuring stepper motors with
CONFIG_STEPPER_SHELL
Added support for ADI TMC5041 (
adi,tmc5041
)Added support for gpio-stepper-controller (
gpio-stepper-controller
)Added stepper api test-suite
Added stepper shell test-suite
Timer
Silabs: Added support for Sleeptimer (
silabs,gecko-stimer
)
USB
Added support for USB HS on STM32U59x/STM32U5Ax SoC variants.
Video
Introduced API to control frame rate
Introduced API for partial frames transfer with the video buffer field
line_offset
Introduced API for multi-heap video buffer allocation with
CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAP
Introduced bindings for common video link properties in
video-interfaces.yaml
Introduced missing
CONFIG_VIDEO_LOG_LEVEL
Added a sample for capturing video and displaying it with LVGL (Video capture to LVGL)
Added support for GalaxyCore GC2145 image sensor (
gc,gc2145
)Added support for ESP32-S3 LCD-CAM interface (
espressif,esp32-lcd-cam
)Added support for NXP MCUX SMARTDMA interface (
nxp,smartdma
)Added support for more OmniVision OV2640 controls (
ovti,ov2640
)Added support for more OmniVision OV5640 controls (
ovti,ov5640
)STM32: Implemented
video_get_ctrl()
andvideo_set_ctrl()
APIs.
W1
Added 1-Wire master driver for Analog Devices MAX32 SoC series (
adi,max32-w1
)
Watchdog
Added driver for Analog Devices MAX32 SoC series (
adi,max32-watchdog
).
Wi-Fi
Add Wi-Fi Easy Connect (DPP) support.
Add support for Wi-Fi credentials library.
Add enterprise support for station.
Add Wi-Fi snippet support for networking samples.
Add build testing for various Wi-Fi config combinations.
Add regulatory domain support to Wi-Fi shell.
Add WPS support to Wi-Fi shell.
Add 802.11r connect command usage in Wi-Fi shell.
Add current PHY rate to hostap status message.
Allow user to reset Wi-Fi statistics in Wi-Fi shell.
Display RTS threshold in Wi-Fi shell.
Fix SSID array length size in scanning results.
Fix the “wifi ap config” command using the STA interface instead of SAP interface.
Fix memory leak in hostap when doing a disconnect.
Fix setting of frequency band both in AP and STA mode in Wi-Fi shell.
Fix correct channel scan range in Wi-Fi 6GHz.
Fix scan results printing in Wi-Fi shell.
Increase main and shell stack sizes for Wi-Fi shell sample.
Increase the maximum count of connected STA to 8 in Wi-Fi shell.
Relocate AP and STA Wi-Fi sample to samples/net/wifi directory.
Run Wi-Fi tests together with network tests.
Updated ESP32 Wi-Fi driver to reflect actual negotiated PHY mode.
Add ESP32-C2 Wi-Fi support.
Add ESP32 driver APSTA support.
Add NXP RW612 driver support.
Networking
802.15.4:
Implemented support for beacons without association bit.
Implemented support for beacons payload.
Fixed a bug where LL address endianness was swapped twice when deciphering a frame.
Fixed missing context lock release when checking destination address.
Improved error logging in 6LoWPAN fragmentation.
Improved error logging in 802.15.4 management commands.
ARP:
Fixed ARP probe verification during IPv4 address conflict detection.
CoAP:
Added new API
coap_rst_init()
to simplify creating RST replies.Implemented replying with CoAP RST response for unknown queries in CoAP client.
Added support for runtime configuration of ACK random factor parameter.
Added support for No Response CoAP option.
Added a new sample demonstrating downloading a resource with GET request.
Fixed handling of received CoAP RST reply in CoAP client.
Fixed socket error reporting to the application in CoAP client.
Fixed handling of response retransmissions in CoAP client.
Fixed a bug where CoAP block numbers were limited to
uint8_t
.Various fixes in the block transfer support in CoAP client.
Improved handling of truncated datagrams in CoAP client.
Improved thread safety of CoAP client.
Fixed missing
static
keyword in some internal functions.Various other minor fixes in CoAP client.
DHCPv4:
Added support for parsing multiple DNS servers received from DHCP server.
Added support for DNS Server option in DHCPv4 server.
Added support for Router option in DHCPv4 server.
Added support for application callback which allows to assign custom addresses in DHCPv4 server.
Fixed DNS server list allocation in DHCPv4 client.
Fixed a bug where system workqueue could be blocked indefinitely by DHCPv4 client.
DHCPv6:
Fixed a bug where system workqueue could be blocked indefinitely by DHCPv6 client.
DNS/mDNS/LLMNR:
Added support for collecting DNS statistics.
Added support for more error codes in
zsock_gai_strerror()
.Fixed handling of DNS responses encoded with capital letters.
Fixed DNS dispatcher operation on multiple network interfaces.
Fixed error being reported for mDNS queries with query count equal to 0.
Various other minor fixes in DNS/mDNS implementations.
Ethernet:
gPTP/PTP:
Fixed handling of second overflow/underflow.
Fixed PTP clock adjusting with offset.
HTTP:
Added support for specifying response headers and response code by the application.
Added support for netusb in the HTTP server sample.
Added support for accessing HTTP request headers from the application callback.
Added support for handling IPv4 connections over IPv6 socket in HTTP server.
Added support for creating HTTP server instances without specifying local host.
Added overlays to support HTTP over IEEE 802.15.4 for HTTP client and server samples.
Added support for static filesystem resources in HTTP server.
Fixed assertion in HTTP server sample when resource upload was aborted.
Refactored dynamic resource callback format for easier handling of short requests/replies.
Fixed possible busy-looping in case of errors in the HTTP server sample.
Fixed possible incorrect HTTP headers matching in HTTP server.
Refactored HTTP server sample to better demonstrate server use cases.
Fixed processing of multiple HTTP/1 requests over the same connection.
Improved HTTP server test coverage.
Various other minor fixes in HTTP server.
IPv4:
Improved IGMP test coverage.
Fixed IGMPv2 queries processing when IGMPv3 is enabled.
Fixed
CONFIG_NET_NATIVE_IPV4
dependency for native IPv4 options.Fix net_pkt leak in
send_ipv4_fragment()
.`
IPv6:
Added a public header for Multicast Listener Discovery APIs.
Added new
net_ipv6_addr_prefix_mask()
API function.Made IPv6 Router Solicitation timeout configurable.
Fixed endless IPv6 packet looping with both routing and VLAN support enabled.
Fixed unneeded error logging in case of dropped NS packets.
Fixed accepting of incoming DAD NS messages.
Various fixes improving IPv6 routing.
LwM2M:
Added TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 to DTLS cipher list.
Added LwM2M shell command for listing resources.
Added LwM2M shell command to list observations.
Added support for accepting SenML-CBOR floats decoded as integers.
Added support for X509 hostname verification if using certificates, when URI contains valid name.
Regenerated generated code files using zcbor 0.9.0 for lwm2m_senml_cbor.
Improved thread safety of the LwM2M engine.
Fixed block transfer issues for composite operations.
Fixed enabler version reporting during bootstrap discovery.
Removed unneeded Security object instance from the LwM2M client sample.
Fixed buffer size check for U16 resource.
Removed deprecated APIs and configs.
Optional Location object resources altitude, radius, and speed can now be used optionally as per the location object’s specification. Users of these resources will now need to provide a read buffer.
Fixed the retry counter not being reset on successful Registration update.
Fixed REGISTRATION_TIMEOUT event not always being emitted on registration errors.
Fixed c++ support in LwM2M public header.
Fixed a bug where DISCONNECTED event was not always emitted when needed.
Misc:
Added support for network packet allocation statistics.
Added a new library implementing Prometheus monitoring support.
Added USB CDC NCM support for Echo Server sample.
Added packet drop statistics for capture interfaces.
Added new
net_hostname_set_postfix_str()
API function to set hostname postfix in non-hexadecimal format.Added API version information to public networking headers.
Implemented optional periodic SNTP time resynchronization.
Improved error reporting when starting/stopping virtual interfaces.
Fixed build error of packet capture library when variable sized buffers are used.
Fixed build error of packet capture library when either IPv4 or IPv6 is disabled.
Fixed CMake complaint about missing sources in net library in certain configurations.
Fixed compilation issues with networking and SystemView Tracing enabled.
Removed redundant DHCPv4 code from telnet sample.
Fixed build warnings in Echo Client sample with IPv6 disabled.
Removed deprecated net_pkt functions.
Extended network tracing support and added documentation page (Network Tracing).
Moved network buffers implementation out of net subsystem into lib directory and renamed public header to include/zephyr/net_buf.h.
Deprecated the
net_buf_put()
andnet_buf_get()
API functions.Removed
wpansub
sample.
MQTT:
Updated information in the mqtt_publisher sample about Mosquitto broker configuration.
Updated MQTT tests to be self-contained, no longer requiring external broker.
Optimized buffer handling in MQTT encoder/decoder.
Network contexts:
Fixed IPv4 destination address setting when using
sendmsg()
withCONFIG_NET_IPV4_MAPPING_TO_IPV6
option enabled.Fixed possible unaligned memory access when in
net_context_bind()
.Fixed missing NULL pointer check for V6ONLY option read.
Network Interface:
Added new
net_if_ipv4_get_gw()
API function.Fixed checksum offloading checks for VLAN interfaces.
Fixed native IP support being required to register IP addresses on an interface.
Fixed missing mutex locks in a few net_if functions.
Fixed rejoining of IPv6 multicast groups.
Fixed
net_if_send_data()
operation for offloaded interfaces.Fixed needless IPv6 multicast groups joining if IPv6 is disabled.
Fixed compiler warnings when building with
-Wtype-limits
.
OpenThread:
Added support for
CONFIG_IEEE802154_SELECTIVE_TXCHANNEL
option in OpenThread radio platform.Added NAT64 send and receive callbacks.
Added new Kconfig options:
Fixed deprecated/preferred IPv6 address state transitions.
Fixed handling of deprecated IPv6 addresses.
Other various minor fixes in Zephyr’s OpenThread port.
Shell:
Added support for enabling/disabling individual network shell commands with Kconfig.
Added new
net dhcpv4/6 client
commands for DHCPv4/6 client management.Added new
net virtual
commands for virtual interface management.net ipv4/6
commands are now available even if native IP stack is disabled.Added new
net cm
commands exposing Connection Manager functionality.Fixed possible assertion if telnet shell backend connection is terminated.
Event monitor thread stack size is now configurable with Kconfig.
Relocated
bridge
command undernet
command, i. e.net bridge
.Multiple minor improvements in various command outputs.
Sockets:
Added dedicated
net_socket_service_handler_t
callback function type for socket services.Added TLS 1.3 support for TLS sockets.
Fixed socket leak when closing NSOS socket.
Moved socket service library out of experimental.
Deprecated
CONFIG_NET_SOCKETS_POLL_MAX
.Moved
zsock_poll()
andzsock_select
implementations intozvfs
library.Removed
work_q
parameter from socket service macros as it was no longer used.Separated native INET sockets implementation from socket syscalls so that it doesn’t have to be built when offloaded sockets are used.
Fixed possible infinite block inside TLS socket
zsock_connect()
when peer goes down silently.Fixed
msg_controllen
not being set correctly inzsock_recvmsg()
.Fixed possible busy-looping when polling TLS socket for POLLOUT event.
TCP:
Fixed propagating connection errors to the socket layer.
Improved ACK reply logic when peer does not send PSH flag with data.
Websocket:
Added support for Websocket console in the Echo Server sample.
Fixed undefined reference to
MSG_DONTWAIT
while building websockets without POSIX.
Wi-Fi:
zperf:
Added support for USB CDC NCM in the zperf sample.
Fixed DHCPv4 client not being started in the zperf sample in certain configurations.
USB
Devicetree
Added support for string-array and array type properties to be enums. Many new macros added for this, for example
DT_ENUM_IDX_BY_IDX
.Added
DT_NODE_HAS_STATUS_OKAY
.Added
DT_INST_NUM_IRQS
.Added macros
DT_NODE_FULL_NAME_UNQUOTED
,DT_NODE_FULL_NAME_TOKEN
, andDT_NODE_FULL_NAME_UPPER_TOKEN
.DT_*_REG_ADDR
now returns an explicit unsigned value with C’sU
suffix.Fixed escaping of double quotes, backslashes, and new line characters from DTS so that they can be used in string properties.
Renamed
power-domain
base property topower-domains
, and introducedpower-domain-names
property.#power-domain-cells
is now required as well.
Kconfig
Libraries / Subsystems
Debug
Added west runner for probe-rs, a Rust-based embedded toolkit.
Demand Paging
Added LRU (Least Recently Used) eviction algorithm.
Added on-demand memory mapping support (
CONFIG_DEMAND_MAPPING
).Made demand paging SMP compatible.
Formatted output
Management
MCUmgr
Added support for Enumeration Management Group, which allows for listing information on supported groups.
Fixed formatting of milliseconds in
OS_MGMT_ID_DATETIME_STR
by adding leading zeros.Added support for custom os mgmt bootloader info responses using notification hooks, this can be enabled with
CONFIG_MCUMGR_GRP_OS_BOOTLOADER_INFO_HOOK
, the data structure isos_mgmt_bootloader_info_data
.Added support for img mgmt slot info command, which allows for listing information on images and slots on the device.
Added support for LoRaWAN MCUmgr transport, which can be enabled with
CONFIG_MCUMGR_TRANSPORT_LORAWAN
.
hawkBit
hawkbit_autohandler()
now takes one argument. If the argument is set to true, the autohandler will reshedule itself after running. If the argument is set to false, the autohandler will not reshedule itself. Both variants are scheduled independent of each other. The autohandler always runs in the system workqueue.Use the
hawkbit_autohandler_wait()
function to wait for the autohandler to finish.Running hawkBit from the shell is now executed in the system workqueue.
Use the
hawkbit_autohandler_cancel()
function to cancel the autohandler.Use the
hawkbit_autohandler_set_delay()
function to delay the next run of the autohandler.The hawkBit header file was separated into multiple header files. The main header file is now
<zephyr/mgmt/hawkbit/hawkbit.h>
, the autohandler header file is now<zephyr/mgmt/hawkbit/autohandler.h>
and the configuration header file is now<zephyr/mgmt/hawkbit/config.h>
.
Logging
Modem modules
Power management
Added initial ESP32-C6 power management interface to allow light and deep-sleep features.
Crypto
Mbed TLS was updated to version 3.6.2 (from 3.6.0). The release notes can be found at:
The Kconfig symbol
CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG_ALLOW_NON_CSPRNG
was added to allowpsa_get_random()
to make use of non-cryptographically secure random sources whenCONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
is also enabled. This is only meant to be used for test purposes, not in production. (GitHub #76408)The Kconfig symbol
CONFIG_MBEDTLS_TLS_VERSION_1_3
was added to enable TLS 1.3 support from Mbed TLS. When this is enabled the following new Kconfig symbols can also be enabled:CONFIG_MBEDTLS_TLS_SESSION_TICKETS
to enable session tickets (RFC 5077);CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
for TLS 1.3 PSK key exchange mode;CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
for TLS 1.3 ephemeral key exchange mode;CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
for TLS 1.3 PSK ephemeral key exchange mode.
CMSIS-NN
FPGA
Random
SD
No significant changes in this release
Settings
Settings has been extended to allow prioritizing the commit handlers using
SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(...)
for static_handlers andsettings_register_with_cprio(...)
for dynamic_handlers.
Shell:
Reorganized the
kernel threads
andkernel stacks
shell command under the L1kernel thread
shell command askernel thread list
&kernel thread stacks
Added multiple shell command to configure the CPU mask affinity / pinning a thread in runtime, do
kernel thread -h
for more info.kernel reboot
shell command without any additional arguments will now do a cold reboot instead of requiring you to typekernel reboot cold
.
State Machine Framework
Storage
LittleFS: The module has been updated with changes committed upstream from version 2.8.1, the last module update, up to and including the released version 2.9.3.
LittleFS: Fixed an issue where the DTS option for configuring block cycles for LittleFS instances was ignored (GitHub #79072).
LittleFS: Fixed issue with lookahead buffer size mismatch to actual allocated buffer size (GitHub #77917).
FAT FS: Added
CONFIG_FILE_SYSTEM_LIB_LINK
to allow linking file system support libraries without enabling the File System subsystem. This option can be used when a user wants to directly use file system libraries, bypassing the File System subsystem.FAT FS: Added
CONFIG_FS_FATFS_LBA64
to enable support for the 64-bit LBA and GPT in FAT file system driver.FAT FS: Added
CONFIG_FS_FATFS_MULTI_PARTITION
that enables support for devices partitioned with GPT or MBR.FAT FS: Added
CONFIG_FS_FATFS_HAS_RTC
that enables RTC usage for time-stamping files on FAT file systems.FAT FS: Added
CONFIG_FS_FATFS_EXTRA_NATIVE_API
that enables additional FAT file system driver functions, which are not exposed via Zephyr File System subsystem, for users that intend to directly call them in their code.Stream Flash: Fixed an issue where
stream_flash_erase_page()
did not properly check the requested erase range and possibly allowed erasing any page on a device (GitHub #79800).Shell: Fixed an issue were a failed file system mount attempt using the shell would make it impossible to ever succeed in mounting that file system again until the device was reset (GitHub #80024).
ZMS: Introduction of a new storage system that is designed to work with all types of non-volatile storage technologies. It supports classical on-chip NOR flash as well as new technologies like RRAM and MRAM that do not require a separate erase operation at all.
Task Watchdog
POSIX API
LoRa/LoRaWAN
ZBus
JWT (JSON Web Token)
The following new symbols were added to allow specifying both the signature algorithm and crypto library:
CONFIG_JWT_SIGN_RSA_PSA
(default) RSA signature using the PSA Crypto API;CONFIG_JWT_SIGN_RSA_LEGACY
RSA signature using Mbed TLS;CONFIG_JWT_SIGN_ECDSA_PSA
ECDSA signature using the PSA Crypto API.
Firmware
Introduced basic support for ARM’s System Control and Management Interface, which includes:
Subset of clock management protocol commands
Subset of pin control protocol commands
Shared memory and mailbox-based transport
HALs
Nordic
STM32
Updated STM32C0 to cube version V1.2.0.
Updated STM32F1 to cube version V1.8.6.
Updated STM32F2 to cube version V1.9.5.
Updated STM32F4 to cube version V1.28.1.
Updated STM32G4 to cube version V1.6.0.
Updated STM32H5 to cube version V1.3.0.
Updated STM32H7 to cube version V1.11.2.
Updated STM32H7RS to cube version V1.1.0.
Added STM32U0 Cube package (1.1.0)
Updated STM32U5 to cube version V1.6.0.
Updated STM32WB to cube version V1.20.0.
Added STM32WB0 Cube package (1.0.0)
Updated STM32WBA to cube version V1.4.1.
ADI
Espressif
Synced HAL to version v5.1.4 to update SoCs low level files, RF libraries and overall driver support.
Silabs
Updated Series 2 to Simplicity SDK 2024.6, while Series 0/1 continue to use Gecko SDK 4.4.
MCUboot
Removed broken target config header feature.
Removed
image_index
fromboot_encrypt
.Renamed boot_enc_decrypt to boot_decrypt_key.
Updated to use
EXTRA_CONF_FILE
instead of the deprecatedOVERLAY_CONFIG
argument.Updated
boot_encrypt()
to instead beboot_enc_encrypt()
andboot_enc_decrypt()
.Updated
boot_enc_valid
to take slot instead of image index.Updated
boot_enc_load()
to take slot number instead of image.Updated logging to debug level in boot_serial.
Updated Kconfig to allow disabling NRFX_WDT on nRF devices.
Updated CMake ERROR statements into FATAL_ERROR.
Added application version that is being booted output prior to booting it.
Added sysbuild support to the hello-world sample.
Added SIG_PURE TLV to bootutil.
Added write block size checking to bootutil.
Added check for unexpected flash sector size.
Added SHA512 support to MCUboot code and support for calculating SHA512 hash in imgtool.
Added fallback to USB DFU option.
Added better mode selection checks to bootutil.
Added bootuil protected TLV size to image size check.
Added functionaliy to remove images with conflicting flags or where features are required that are not supported.
Added compressed image flags and TLVs to MCUboot, Kconfig options and support for generating compressed LZMA2 images with ARM thumb filter to imgtool.
Added image header verification before checking image.
Added state to
boot_is_header_valid()
function.Added
CONFIG_MCUBOOT_ENC_BUILTIN_KEY
Kconfig option.Added non-bootable flag to imgtool.
Added zephyr prefix to generated header path.
Added optional img mgmt slot info feature.
Added bootutil support for maximum image size details for additional images.
Added support for automatically calculating max sectors.
Added missing
boot_enc_init()
function.Added support for keeping image encrypted in scratch area in bootutil.
Fixed serial recovery for NXP IMX.RT, LPC55x and MCXNx platforms
Fixed issue with public RSA signing in imgtool.
Fixed issue with
boot_serial_enter()
being defined but not used warning.Fixed issue with
main()
in sample returning wrong type warning.Fixed issue with using pointers in bootutil.
Fixed wrong usage of slot numbers in boot_serial.
Fixed slot info for directXIP/RAM load in bootutil.
Fixed bootutil issue with not zeroing AES and SHA-256 contexts with mbedTLS.
Fixed boot_serial
format
andincompatible-pointer-types
warnings.Fixed booltuil wrong definition of
find_swap_count
.Fixed bootutil swap move max app size calculation.
Fixed imgtool issue where getpub failed for ed25519 key.
Fixed issue with sysbuild if something else is named mcuboot.
Fixed RAM load chain load address.
Fixed issue with properly retrieving image headers after interrupted swap-scratch in bootutil.
The MCUboot version in this release is version
2.1.0+0-dev
.
OSDP
Trusted Firmware-M (TF-M)
TF-M was updated to version 2.1.1 (from 2.1.0). The release notes can be found at: https://trustedfirmware-m.readthedocs.io/en/tf-mv2.1.1/releases/2.1.1.html
Nanopb
Updated the nanopb module to version 0.4.9. Full release notes at https://github.com/nanopb/nanopb/blob/0.4.9/CHANGELOG.txt
LVGL
Added definition of
LV_ATTRIBUTE_MEM_ALIGN
so library internal data structures can be aligned to a specific boundary.
zcbor
Updated the zcbor library to version 0.9.0. Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md Highlights:
Many code generation bugfixes
You can now decide at run-time whether the decoder should enforce canonical encoding.
Allow –file-header to accept a path to a file with header contents
Tests and Samples
Together with the deprecation of native_posix, many tests which were explicitly run in native_posix now run in native_sim instead. native_posix as a platform remains tested though.
Added SMF Calculator sample demonstrating the usage of the State Machine framework in combination with LVGL to create a simple calculator application.