doc/releases/release-notes-4.0.rst
:orphan:
.. _zephyr_4.0:
Zephyr 4.0.0 ############
We are pleased to announce the release of Zephyr version 4.0.0.
Major enhancements with this release include:
Secure Storage Subsystem:
A newly introduced :ref:secure storage<secure_storage> subsystem 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)
ZMS (Zephyr Memory Storage) Subsystem:
:ref:ZMS <zms_api> is a new key-value storage subsystem compatible with all non-volatile storage
types, including traditional NOR flash and advanced technologies like RRAM and MRAM that support
write without erasure.
Analog Comparators:
A new :ref:comparator<comparator_api> device driver subsystem for analog comparators has been
added, complete with shell support. It supports initial configuration through Devicetree and
runtime configuration through vendor specific APIs. Initially the :dtcompatible:nordic,nrf-comp,
:dtcompatible:nordic,nrf-lpcomp and :dtcompatible:nxp,kinetis-acmp are supported.
Stepper Motors:
It is now possible to interact with stepper motors using a standard API thanks to the new
:ref:stepper<stepper_api> device driver subsystem, which also comes with shell support.
Initially implemented drivers include a simple :dtcompatible:zephyr,gpio-steppers and a complex
sensor-less stall-detection capable with integrated ramp-controller :dtcompatible:adi,tmc5041.
Haptics:
A new :ref:haptics_api device driver subsystem allows unified access to haptic controllers,
enabling users to add haptic feedback to their applications.
Multimedia Capabilities Zephyr's audio and video capabilities have been expanded with support for new image sensors, video interfaces, audio interfaces, and codecs being supported.
Prometheus Library:
A Prometheus_ metrics library has been added to the networking stack. It provides a way to
expose metrics to Prometheus clients over HTTP, facilitating the consolidated remote monitoring of
Zephyr devices alongside other systems typically monitored using Prometheus.
Documentation Improvements:
Several enhancements were made to the online documentation to improve content discovery and
navigation. These include a new :ref:interactive board catalog <boards> and an interactive
directory for :zephyr:code-sample-category:code samples <samples>.
Expanded Board Support:
Over 60 :ref:new boards <boards_added_in_zephyr_4_0> and
:ref:shields <shields_added_in_zephyr_4_0> are supported in Zephyr 4.0.
.. _Prometheus: https://prometheus.io/
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 :ref:migration guide<migration_4.0>.
The following sections provide detailed lists of changes by component.
Security Vulnerability Related
The following CVEs are addressed by this release:
More detailed information can be found in: https://docs.zephyrproject.org/latest/security/vulnerabilities.html
2024-8798: Under embargo until 2024-11-222024-10395: Under embargo until 2025-01-232024-11263 Zephyr project bug tracker GHSA-jjf3-7x72-pqm9 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jjf3-7x72-pqm9>_API Changes
Macro K_THREAD_STACK_MEMBER, deprecated since v3.5.0, has been removed.
Use :c:macro:K_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.
Removed deprecated arch-level CMSIS header files
include/zephyr/arch/arm/cortex_a_r/cmsis.h and
include/zephyr/arch/arm/cortex_m/cmsis.h. cmsis_core.h needs to be
included now.
Removed deprecated ceiling_fraction macro. :c:macro:DIV_ROUND_UP needs
to be used now.
Removed deprecated header file
include/zephyr/random/rand32.h. random.h needs to be included now.
Deprecated EARLY, APPLICATION and SMP init levels can no longer be
used for devices.
Removed deprecated net_pkt functions.
Deprecated the net_buf_put() and net_buf_get() API functions in favor of
:c:func:k_fifo_put and :c:func:k_fifo_get.
The kscan_api subsystem has been marked as deprecated.
Deprecated the TinyCrypt shim driver CONFIG_CRYPTO_TINYCRYPT_SHIM.
native_posix has been deprecated in favour of
:zephyr:board:native_sim<native_sim>.
include/zephyr/net/buf.h is deprecated in favor of
include/zephyr/net_buf.h>. The old header will be removed in future releases
and its usage should be avoided.
Architectures
ARC
ARM
ARM64
Added initial support for :c:func:arch_stack_walk that supports unwinding via esf only
Added sys_arch_reboot() support to ARM64
Added 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 :kconfig:option:CONFIG_EXTRA_EXCEPTION_INFO is enabled, the exception stack frame (arch_esf)
has an additional field csf that points to the callee-saved-registers upon an fatal error,
which can be accessed in :c:func:k_sys_fatal_error_handler by esf->csf.
RISCV_SOC_HAS_ISR_STACKING, the SOC_ISR_STACKING_ESF_DECLARE has to
include the csf member, otherwise the build would fail.Xtensa
x86
arch_stack_walk that supports unwinding via esf onlyKernel
llext.Bluetooth
Audio
:c:func: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:
bt_audio_codec_cfg_meta_get_assisted_listening_streambt_audio_codec_cfg_meta_set_assisted_listening_streambt_audio_codec_cap_meta_get_assisted_listening_streambt_audio_codec_cap_meta_set_assisted_listening_streamAdded APIs for getting and setting the broadcast name in codec capabilities and codec configuration:
bt_audio_codec_cfg_meta_get_broadcast_namebt_audio_codec_cfg_meta_set_broadcast_namebt_audio_codec_cap_meta_get_broadcast_namebt_audio_codec_cap_meta_set_broadcast_nameHost
Added API :c:func:bt_gatt_get_uatt_mtu to get current Unenhanced ATT MTU of a given
connection (experimental).
Added :kconfig:option:CONFIG_BT_CONN_TX_NOTIFY_WQ.
The option allows using a separate workqueue for connection TX notify processing
(:c:func: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 :c:func:bt_conn_le_create and :c:func:bt_conn_le_create_synced if
the connection pointer passed as an argument is not NULL.
Added Kconfig option :kconfig:option:CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE to enforce
:c:func:bt_conn_le_create and :c:func:bt_conn_le_create_synced return an error if the
connection pointer passed as an argument is not NULL.
Fixed an ltk derive issue in L2CAP
Added listener callback for discovery (BR)
Corrected BR bonding type (SSP)
Added support for non-bondable mode (SSP)
Changed SSP so that no MITM if required level is less than L3
Added checking the receiving buffer length before pulling data (AVDTP)
Added support of security level 4 to SSP
Fixed LE LTK cannot be derived
Added support for Multi-Command Packet (l2cap)
Improved the L2CAP code to Set flags in CFG RSP
Improved the L2CAP code to handle all configuration options
Improved the SSP code to clear pairing flag if ssp pairing completed area
Improved the SMP code to check if remote supports CID 0x0007
Added support for SMP CT2 flag
Improved the SSP code so the proper callback is called when pairing fails
Controller
CONFIG_BT_CTLR_SYNC_TRANSFER_SENDER and
:kconfig:option:CONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER.HCI Drivers
Mesh
CONFIG_BT_MESH_WORKQ_SYS.Boards & SoC Support
Added support for these SoC series:
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.
NXP s32k3: fixed RAM retention issue
NXP s32k1: obtain system clock frequency from Devicetree 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.
NXP i.MX8MP: Enable the IRQ_STEER interrupt controller.
NXP RWxxx:
NXP IMXRT: Fixed flexspi boot issue caused by an erroneous relocation of the Flash Configuration Block of Kconfig defaults being sourced
NXP RT11xx: enabled FlexIO
NXP IMXRT116x: Fixed bus clocking to align with the settings of the MCUXpresso SDK
NXP mimxrt685: fixed clocks to enable DMIC
NXP MCX N Series: Fixed NXP LPSPI native chip select when using synchronous API with DMA bug
Nordic nRF54H: Added support for the FLPR (Fast Lightweight Processor) RISC-V CPU.
.. _boards_added_in_zephyr_4_0:
Added support for these boards:
01space ESP32C3 0.42 OLED <esp32c3_042_oled> (esp32c3_042_oled)ADI MAX32662EVKIT <max32662evkit> (max32662evkit)ADI MAX32666EVKIT <max32666evkit> (max32666evkit)ADI MAX32666FTHR <max32666fthr> (max32666fthr)ADI MAX32675EVKIT <max32675evkit> (max32675evkit)ADI MAX32690FTHR <max32690fthr> (max32690fthr)arduino_nicla_vision (arduino_nicla_vision)BeagleBone AI-64 <beaglebone_ai64> (beaglebone_ai64)BeaglePlay (CC1352) <beagleplay> (beagleplay)DPTechnics Walter <walter> (walter)Espressif ESP32-C3-DevKitC <esp32c3_devkitc> (esp32c3_devkitc)Espressif ESP32-C3-DevKit-RUST <esp32c3_rust> (esp32c3_rust)Espressif ESP32-S3-EYE <esp32s3_eye> (esp32s3_eye)Espressif ESP8684-DevKitM <esp8684_devkitm> (esp8684_devkitm)Gardena Smart Garden Radio Module <sgrm> (sgrm)mikroe STM32 M4 Clicker <mikroe_stm32_m4_clicker> (mikroe_stm32_m4_clicker)Nordic Semiconductor nRF54L15 DK <nrf54l15dk> (nrf54l15dk)nrf54l20pdk)Nordic Semiconductor nRF7002 DK <nrf7002dk> (nrf7002dk)Nuvoton NPCM400_EVB <npcm400_evb> (npcm400_evb)NXP FRDM-MCXA156 <frdm_mcxa156> (frdm_mcxa156)NXP FRDM-MCXC242 <frdm_mcxc242> (frdm_mcxc242)NXP FRDM-MCXC444 <frdm_mcxc444> (frdm_mcxc444)NXP FRDM-MCXN236 <frdm_mcxn236> (frdm_mcxn236)NXP FRDM-MCXW71 <frdm_mcxw71> (frdm_mcxw71)NXP i.MX95 EVK <imx95_evk> (imx95_evk)NXP MIMXRT1180-EVK <mimxrt1180_evk> (mimxrt1180_evk)PHYTEC phyBOARD-Nash i.MX93 <phyboard_nash> (phyboard_nash)Renesas RA2A1 Evaluation Kit <ek_ra2a1> (ek_ra2a1)Renesas RA4E2 Evaluation Kit <ek_ra4e2> (ek_ra4e2)Renesas RA4M2 Evaluation Kit <ek_ra4m2> (ek_ra4m2)Renesas RA4M3 Evaluation Kit <ek_ra4m3> (ek_ra4m3)Renesas RA4W1 Evaluation Kit <ek_ra4w1> (ek_ra4w1)Renesas RA6E2 Evaluation Kit <ek_ra6e2> (ek_ra6e2)Renesas RA6M1 Evaluation Kit <ek_ra6m1> (ek_ra6m1)Renesas RA6M2 Evaluation Kit <ek_ra6m2> (ek_ra6m2)Renesas RA6M3 Evaluation Kit <ek_ra6m3> (ek_ra6m3)Renesas RA6M4 Evaluation Kit <ek_ra6m4> (ek_ra6m4)Renesas RA6M5 Evaluation Kit <ek_ra6m5> (ek_ra6m5)Renesas RA8D1 Evaluation Kit <ek_ra8d1> (ek_ra8d1)Renesas RA6E1 Fast Prototyping Board <fpb_ra6e1> (fpb_ra6e1)Renesas RA6E2 Fast Prototyping Board <fpb_ra6e2> (fpb_ra6e2)Renesas RA8T1 Motor Control Kit <mck_ra8t1> (mck_ra8t1)Renode Cortex-R8 Virtual <cortex_r8_virtual> (cortex_r8_virtual)Seeed XIAO ESP32-S3 Sense Variant <xiao_esp32s3>: xiao_esp32s3.sensry.io Ganymed Break-Out-Board (BOB) <ganymed_bob> (ganymed_bob)SiLabs SiM3U1xx 32-bit MCU USB Development Kit <sim3u1xx_dk> (sim3u1xx_dk)SparkFun Thing Plus Matter <sparkfun_thing_plus_matter_mgm240p> (sparkfun_thing_plus_matter_mgm240p)ST Nucleo G431KB <nucleo_g431kb> (nucleo_g431kb)ST Nucleo H503RB <nucleo_h503rb> (nucleo_h503rb)ST Nucleo H755ZI-Q <nucleo_h755zi_q> (nucleo_h755zi_q)ST Nucleo U031R8 <nucleo_u031r8> (nucleo_u031r8)ST Nucleo U083RC <nucleo_u083rc> (nucleo_u083rc)ST Nucleo WB05KZ <nucleo_wb05kz> (nucleo_wb05kz)ST Nucleo WB09KE <nucleo_wb09ke> (nucleo_wb09ke)ST STM32U083C-DK <stm32u083c_dk> (stm32u083c_dk)TI CC1352P7 LaunchPad <cc1352p7_lp> (cc1352p7_lp)vcc-gnd YD-STM32H750VB <yd_stm32h750vb> (yd_stm32h750vb)WeAct Studio STM32F405 Core Board V1.0 <weact_stm32f405_core> (weact_stm32f405_core)WeAct Studio USB2CANFDV1 <usb2canfdv1> (usb2canfdv1)Witte Technology Linum Board <linum> (linum)Made these board changes:
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/st/mco sample.
STM32: STM32CubeProgrammer is now the default runner on all STMicroelectronics STM32 boards.
Removed the nrf54l15pdk board, use :zephyr:board:nrf54l15dk instead.
PHYTEC: mimx8mp_phyboard_pollux has been renamed to :zephyr:board:phyboard_pollux<phyboard_pollux>,
with the old name marked as deprecated.
PHYTEC: mimx8mm_phyboard_polis has been renamed to :zephyr:board:phyboard_polis<phyboard_polis>,
with the old name marked as deprecated.
The board qualifier for MPS3/AN547 is changed from:
mps3/an547 to mps3/corstone300/an547 for secure andmps3/an547/ns to mps3/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 uart, flexio pwm, flexio spi, watchdog, flash, rtc, i2c, lpspi, edma, gpio, acmp, adc and lptmr support
to NXP frdm_ke17z and frdm_ke17z512
Enabled support for MCUmgr on NXP boards
Enabled MCUboot, FlexCAN, LPI2C, VREF, LPADC and timers (TPM, LPTMR, counter, watchdog) on NXP frdm_mcxw71
Enabled I2C, PWM on NXP imx95_evk
Enabled FLEXCAN, LPI2C on NXP s32z2xxdc2
Enabled DSPI and EDMA3 on NXP s32z270dc2
Enabled ENET ethernet on NXP imx8mm and imx8mn
Added support for the NXP imx8qm and imx8qxp DSP core to enable the openAMP sample
.. _shields_added_in_zephyr_4_0:
Added support for the following shields:
ADI EVAL-ADXL362-ARDZ <eval_adxl362_ardz>ADI EVAL-ADXL372-ARDZ <eval_adxl372_ardz>Digilent Pmod ACL <pmod_acl>MikroElektronika BLE TINY Click <mikroe_ble_tiny_click_shield>Nordic SemiConductor nRF7002 EB <nrf7002eb>Nordic SemiConductor nRF7002 EK <nrf7002ek>ST X-NUCLEO-WB05KN1: BLE expansion board <x-nucleo-wb05kn1>WeAct Studio MiniSTM32H7xx OV2640 Camera Sensor <weact_ov2640_cam_module>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 to EXTRA_GEN_EDT_ARGS:
--dts--dtc-flags--bindings-dirs--dts-out--edt-pickle-out--vendor-prefixes--edtlib-WerrorSwitched 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.
Added a script parameter to Twister to enable HW specific arguments, such as a system specific timeout
Documentation
interactive board catalog <boards> enabling users to search boards by criteria
such as name, architecture, vendor, or SoC.interactive code sample catalog <samples> for quickly
finding code samples based on name and description.zephyr:board directive and :rst:role:zephyr: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.zephyr:code-sample-category directive to describe and group code samples in the
documentation.Devicetree bindings <devicetree_binding_index> documentation.make html-live and make 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
renesas,ra-adc)adi,max32-adc).nxp,s32-adc-sar)ambiq,adc).CAN
renesas,ra-canfd-global,
:dtcompatible:renesas,ra-canfd)nxp,flexcan, :dtcompatible:nxp,flexcan-fd)nxp,s32-canxl)Clock control
CONFIG_CLOCK_CONTROL is now enabled by default at family level and doesn't need
to be enabled at board level anymore.st,stm32h7-pll-clock)renesas,ra-cgc-pclk,
:dtcompatible:renesas,ra-cgc-pclk-block, :dtcompatible:renesas,ra-cgc-pll,
:dtcompatible:renesas,ra-cgc-external-clock, :dtcompatible:renesas,ra-cgc-subclk,
:dtcompatible:renesas,ra-cgc-pll-out)silabs,series-clock)Codec (Audio)
wolfson,wm8904)Comparator
CONFIG_COMPARATORCONFIG_COMPARATOR_SHELLnordic,nrf-comp)nordic,nrf-lpcomp)nxp,kinetis-acmp)Counter
renesas,ra-agt)adi,max32-counter).nxp,s32-sys-timer)Crypto
DAC
Disk
Display
CONFIG_MCUX_ELCDIF_PXP_FLIP_DIRECTION to set the desired
flip.CONFIG_ST7789V_BGR565.solomon,ssd1327fb).solomon,ssd1322).istech,ist3931).DMA
adi,max32-dma).nxp,pxp)80584) to the NXP EMDA driver (:dtcompatible:nxp,edma)EEPROM
zephyr,sim-eeprom).Entropy
renesas,ra-rsip-e51a-trng)adi,max32-trng).Ethernet
Added a :c:func: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 :c:func:net_eth_get_hw_capabilities, fixing netusb crash.
Added synopsis dwc_xgmac ethernet driver.
Added NXP iMX NETC driver.
Adin2111
ENC28J60
zephyr,random-mac-address property.ENC424j600: Added ability to change mac address at runtime with net management api.
ESP32: Added configuration of interrupts from DT.
Lan865x
LiteX
compatible from litex,eth0 to :dtcompatible:litex,liteeth.Native_posix
NXP ENET_QOS: Fixed check for zephyr,random-mac-address property.
NXP ENET:
NXP S32: Added configs to enable VLAN promiscuous and untagged, and enable SI message interrupt.
STM32
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
no-reset property from Devicetree.KSZ8081
Flash
80383)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 replaces CONFIG_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.CONFIG_SPI_NOR_INIT_PRIORITY to allow selecting the SPI NOR driver initialization priority.flash_copy utility function which allows performing
direct data copies between two Flash API devices.79082).renesas,ra-flash-hp-controller)adi,max32-flash-controller).nxp,iap-msf1 to :dtcompatible:nxp,msf1 for accuracyGPIO
parallel-out12 and
parallel-out34.Haptics
CONFIG_HAPTICSti,drv2605)drv2605)I2C
renesas,ra-iic)I2S
I3C
supports-setaasa property to i3c-devices.yaml.i3c_device_basic_info_get if BCR mxds
bit is set.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 the i3c_device_desc.Input
New feature: :dtcompatible:zephyr,input-double-tap.
New driver: :dtcompatible:ilitek,ili2132a.
Added power management support to all keyboard matrix drivers, added a
no-disconnect property to :dtcompatible:gpio-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.
gt911:
Interrupt
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 :zephyr_file:samples/drivers/led directory.
LED Strip
Mailbox
MDIO
MEMC
MFD
Modem
MIPI-DBI
zephyr,mipi-dbi-bitbang).st,stm32-fmc-mipi-dbi).nxp,lcdic).nxp,lcdic)MIPI-CSI
Pin control
CONFIG_PINCTRL is now selected by drivers requiring it and
shouldn't be enabled at board level anymore.PWM
renesas,ra8-pwm)adi,max32-pwm).Regulators
RTC
RTIO
SAI
SDHC
Sensors
General
jedec,jc-42.4-temp compatible string instead to the microchip,mcp9808
string.avago,apds9253) and APDS9306
(:dtcompatible:avago,apds9306) ambient light sensor drivers.SENSOR_ATTR_GAIN and
:c:enum:SENSOR_ATTR_RESOLUTION).ADI
Bosch
bosch,bmp180).Memsic
memsic,mmc56x3).NXP
nxp,p3t1755).nxp,fxls8974).ST
st,lsm9ds1).TDK
TI
ti,tmp1075).Vishay
WE
we,wsen-hids-2525020210002 humidity sensor driver.Serial
compatible from litex,uart0 to :dtcompatible:litex,uart.CONFIG_UART_n_GPIO_MANAGEMENT Kconfig options (where n is an instance
index) which had no use after pinctrl driver was introduced.SPI
renesas,ra8-spi-b)silabs,gecko-spi-eusart)Steppers
CONFIG_STEPPERCONFIG_STEPPER_SHELLadi,tmc5041)zephyr,gpio-steppers)Timer
silabs,gecko-stimer)USB
Video
line_offsetmulti-heap<memory_management_shared_multi_heap> video buffer allocation with
:kconfig:option:CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAPvideo-interfaces.yaml. Migration to the
new bindings is tracked in :github:80514CONFIG_VIDEO_LOG_LEVELvideo-capture-to-lvgl)galaxycore,gc2145)espressif,esp32-lcd-cam)nxp,smartdma)ovti,ov2640)ovti,ov5640)video_get_ctrl and :c:func:video_set_ctrl APIs.80304)nxp,video-smartdma)W1
adi,max32-w1)Watchdog
adi,max32-watchdog).Wi-Fi
Networking
802.15.4:
ARP:
CoAP:
coap_rst_init to simplify creating RST replies.uint8_t.static keyword in some internal functions.DHCPv4:
DHCPv6:
DNS/mDNS/LLMNR:
zsock_gai_strerror.Ethernet:
gPTP/PTP:
HTTP:
IPv4:
CONFIG_NET_NATIVE_IPV4 dependency for native IPv4 options.send_ipv4_fragment.`IPv6:
net_ipv6_addr_prefix_mask API function.LwM2M:
Misc:
net_hostname_set_postfix_str API function to set hostname
postfix in non-hexadecimal format.network_tracing).wpansub sample.MQTT:
Network contexts:
sendmsg with
:kconfig:option:CONFIG_NET_IPV4_MAPPING_TO_IPV6 option enabled.net_context_bind.Network Interface:
net_if_ipv4_get_gw API function.net_if_send_data operation for offloaded interfaces.-Wtype-limits.OpenThread:
Added support for :kconfig:option:CONFIG_IEEE802154_SELECTIVE_TXCHANNEL
option in OpenThread radio platform.
Added NAT64 send and receive callbacks.
Added new Kconfig options:
CONFIG_OPENTHREAD_NAT64_CIDRCONFIG_OPENTHREAD_STORE_FRAME_COUNTER_AHEADCONFIG_OPENTHREAD_DEFAULT_RX_SENSITIVITYCONFIG_OPENTHREAD_CSL_REQUEST_TIME_AHEADFixed deprecated/preferred IPv6 address state transitions.
Fixed handling of deprecated IPv6 addresses.
Other various minor fixes in Zephyr's OpenThread port.
Shell:
net dhcpv4/6 client commands for DHCPv4/6 client management.net virtual commands for virtual interface management.net ipv4/6 commands are now available even if native IP stack is disabled.net cm commands exposing Connection Manager functionality.bridge command under net command, i. e. net bridge.Sockets:
net_socket_service_handler_t callback function type for
socket services.CONFIG_NET_SOCKETS_POLL_MAX.zsock_poll() and zsock_select implementations into zvfs
library.work_q parameter from socket service macros as it was no longer
used.zsock_connect when
peer goes down silently.msg_controllen not being set correctly in :c:func:zsock_recvmsg.TCP:
Websocket:
MSG_DONTWAIT while building websockets
without POSIX.Wi-Fi:
zperf:
USB
New USB device stack:
Devicetree
DT_ENUM_IDX_BY_IDX.DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY.DT_NODE_HAS_STATUS_OKAY.DT_INST_NUM_IRQS.DT_NODE_FULL_NAME_UNQUOTED, :c:macro:DT_NODE_FULL_NAME_TOKEN,
and :c:macro:DT_NODE_FULL_NAME_UPPER_TOKEN.DT_*_REG_ADDR now returns an explicit unsigned value with C's U suffix.power-domain base property to power-domains,
and introduced power-domain-names property. #power-domain-cells is now required as well.Kconfig
Libraries / Subsystems
Debug
Demand Paging
Added LRU (Least Recently Used) eviction algorithm.
Added on-demand memory mapping support (:kconfig:option:CONFIG_DEMAND_MAPPING).
Made demand paging SMP compatible.
Management
MCUmgr
mcumgr_smp_group_10, which allows for listing information on
supported groups.OS_MGMT_ID_DATETIME_STR by adding
leading zeros.CONFIG_MCUMGR_GRP_OS_BOOTLOADER_INFO_HOOK, the data
structure is :c:struct:os_mgmt_bootloader_info_data.CONFIG_MCUMGR_TRANSPORT_LORAWAN.hawkBit
:c:func: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 :c:func: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 :c:func:hawkbit_autohandler_cancel function to cancel the autohandler.
Use the :c:func: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>.
Power management
Crypto
Mbed TLS was updated to version 3.6.2 (from 3.6.0). The release notes can be found at:
The Kconfig symbol :kconfig:option:CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG_ALLOW_NON_CSPRNG
was added to allow psa_get_random() to make use of non-cryptographically
secure random sources when :kconfig:option:CONFIG_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 :kconfig:option: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.SD
Settings
SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(...) for static_handlers and
settings_register_with_cprio(...) for dynamic_handlers.Shell:
kernel threads and kernel stacks shell command under the
L1 kernel thread shell command as kernel thread list & kernel thread stackskernel thread -h for more info.kernel reboot shell command without any additional arguments will now do a cold reboot
instead of requiring you to type kernel reboot cold.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.
Fixed static analysis error caused by mismatched variable assignment in NVS
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 :kconfig:option: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 :kconfig:option:CONFIG_FS_FATFS_LBA64 to enable support for the 64-bit LBA
and GPT in FAT file system driver.
FAT FS: Added :kconfig:option:CONFIG_FS_FATFS_MULTI_PARTITION that enables support for
devices partitioned with GPT or MBR.
FAT FS: Added :kconfig:option:CONFIG_FS_FATFS_HAS_RTC that enables RTC usage for time-stamping
files on FAT file systems.
FAT FS: Added :kconfig:option: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 :c:func: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).
:ref:ZMS<zms_api>: 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
Tracing
POSIX API
Added support for the following Option Groups:
POSIX_DEVICE_IO <posix_option_group_device_io>POSIX_SIGNALS <posix_option_group_signals>Added support for the following Options:
_POSIX_SYNCHRONIZED_IO <posix_option_synchronized_io>_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>:ref:POSIX_FILE_SYSTEM <posix_option_group_file_system> improvements:
O_TRUNC flag in :c:func:open().rmdir and :c:func:remove.:ref:_POSIX_THREAD_SAFE_FUNCTIONS <posix_option_thread_safe_functions> improvements:
asctime_r, :c:func:ctime_r, and :c:func:localtime_r.:ref:POSIX_THREADS_BASE <posix_option_group_threads_base> improvements:
user mode semaphore API <semaphores_v2> instead of the
:ref:spinlock API <smp_arch> for pool synchronization.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.(:github:79653)
Firmware
Introduced basic support for ARM's System Control and Management Interface, which includes:
HALs
Nordic
STM32
ADI
Espressif
NXP
Silabs
MCUboot
image_index from boot_encrypt.EXTRA_CONF_FILE instead of the deprecated OVERLAY_CONFIG argument.boot_encrypt() to instead be boot_enc_encrypt() and boot_enc_decrypt().boot_enc_valid to take slot instead of image index.boot_enc_load() to take slot number instead of image.boot_is_header_valid() function.CONFIG_MCUBOOT_ENC_BUILTIN_KEY Kconfig option.boot_enc_init() function.boot_serial_enter() being defined but not used warning.main() in sample returning wrong type warning.format and incompatible-pointer-types warnings.find_swap_count.2.1.0+0-dev.frdm_ke17z, frdm_ke17z512,
rddrone_fmuk66, twr_ke18f, frdm_mcxn947/mcxn947/cpu0OSDP
Trusted Firmware-M (TF-M)
Nanopb
LVGL
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 :zephyr:board:native_sim<native_sim> instead.
native_posix as a platform remains tested though.
Extended the tests of counter_basic_api with a testcase for counters without alarms
Added support for testing SDMMC devices to the fatfs API test
Extended net/vlan to add IPv6 prefix config to each vlan-iface
Enhanced the camera fixture test by adding a color bar to enable automation
Added a number crunching (maths such as FFT, echo cancellation) sample using an optimized library for the NXP ADSP board
Tailored the SPI_LOOPBACK test to the limitations of NXP Kinetis MCU's
Enabled the video sample to run video capture (samples/drivers/video)
Added :zephyr:code-sample:smf_calculator sample demonstrating the usage of the State Machine framework
in combination with LVGL to create a simple calculator application.
Consolidated display sample where possible to use a single testcase for all shields
Issue Related Items
71042 stream_flash: stream_flash_init() size parameter allows to ignore partition layout67407 stream_flash: stream_flash_erase_page allows to accidentally erase stream80875 stepper_api: incorrect c-prototype stepper.h and absence of NULL check stepper_shell.c