1:orphan:
2
3.. _zephyr_3.4:
4
5Zephyr 3.4.0
6############
7
8We are pleased to announce the release of Zephyr version 3.4.0.
9
10Major enhancements with this release include:
11
12* Input subsystem: handles input events from various types of input devices and
13  distributes them to other threads in the application.
14* Barrier API: added architecture agnostic API for data memory barriers.
15* USB Device support:
16
17  * USB device controller API (UDC API) and nRF USBD controller driver.
18  * USB device stack implementation using new UDC API.
19
20* Added Power Delivery Source Support to the USB-C Stack.
21* Bluetooth: Added support for Periodic Advertising with Responses (PAwR).
22* Cache API functions are now fully in-lined by compilers.
23* Added an API for real-time clocks (RTC).
24* Added Retention subsystem.
25* Added initial support for MMU on Xtensa.
26* SMBus (System Management Bus) API.
27* Various improvements to the testing framework and twister:
28
29  - Introduction of 3 new test harnesses into twister supporting pyTest,
30    GoogleTest and Robot Framework.
31  - Transitioning to new Ztest API was completed and legacy Ztest was deprecated.
32
33* Added Snippets: Support common configuration settings that can be used across
34  platforms.
35
36The following sections provide detailed lists of changes by component.
37
38Security Vulnerability Related
39******************************
40
41The following CVEs are addressed by this release:
42
43More detailed information can be found in:
44https://docs.zephyrproject.org/latest/security/vulnerabilities.html
45
46* CVE-2023-1901: Under embargo until 2023-07-04
47
48* CVE-2023-1902: Under embargo until 2023-07-04
49
50API Changes
51***********
52
53Changes in this release
54=======================
55
56* Any applications using the mcuboot image manager
57  (:kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`) will now need to also select
58  :kconfig:option:`CONFIG_FLASH_MAP` and :kconfig:option:`CONFIG_STREAM_FLASH`,
59  this prevents a cmake dependency loop if the image manager Kconfig is enabled
60  manually without also manually enabling the other options.
61
62* Including hawkbit in an application now requires additional Kconfig options
63  to be selected, previously these options would have been selected
64  automatically but have changed from ``select`` options in Kconfig files to
65  ``depends on``:
66
67   +--------------------------------------------------+
68   | :kconfig:option:`CONFIG_NVS`                     |
69   +--------------------------------------------------+
70   | :kconfig:option:`CONFIG_FLASH`                   |
71   +--------------------------------------------------+
72   | :kconfig:option:`CONFIG_FLASH_MAP`               |
73   +--------------------------------------------------+
74   | :kconfig:option:`CONFIG_STREAM_FLASH`            |
75   +--------------------------------------------------+
76   | :kconfig:option:`CONFIG_REBOOT`                  |
77   +--------------------------------------------------+
78   | :kconfig:option:`CONFIG_HWINFO`                  |
79   +--------------------------------------------------+
80   | :kconfig:option:`CONFIG_NET_TCP`                 |
81   +--------------------------------------------------+
82   | :kconfig:option:`CONFIG_NET_SOCKETS`             |
83   +--------------------------------------------------+
84   | :kconfig:option:`CONFIG_IMG_MANAGER`             |
85   +--------------------------------------------------+
86   | :kconfig:option:`CONFIG_NETWORKING`              |
87   +--------------------------------------------------+
88   | :kconfig:option:`CONFIG_HTTP_CLIENT`             |
89   +--------------------------------------------------+
90   | :kconfig:option:`CONFIG_DNS_RESOLVER`            |
91   +--------------------------------------------------+
92   | :kconfig:option:`CONFIG_JSON_LIBRARY`            |
93   +--------------------------------------------------+
94   | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` |
95   +--------------------------------------------------+
96   | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      |
97   +--------------------------------------------------+
98
99* Including updatehub in an application now requires additional Kconfig options
100  to be selected, previously these options would have been selected
101  automatically but have changed from ``select`` options in Kconfig files to
102  ``depends on``:
103
104   +--------------------------------------------------+
105   | :kconfig:option:`CONFIG_FLASH`                   |
106   +--------------------------------------------------+
107   | :kconfig:option:`CONFIG_STREAM_FLASH`            |
108   +--------------------------------------------------+
109   | :kconfig:option:`CONFIG_FLASH_MAP`               |
110   +--------------------------------------------------+
111   | :kconfig:option:`CONFIG_REBOOT`                  |
112   +--------------------------------------------------+
113   | :kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`     |
114   +--------------------------------------------------+
115   | :kconfig:option:`CONFIG_IMG_MANAGER`             |
116   +--------------------------------------------------+
117   | :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK`  |
118   +--------------------------------------------------+
119   | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      |
120   +--------------------------------------------------+
121   | :kconfig:option:`CONFIG_MPU_ALLOW_FLASH_WRITE`   |
122   +--------------------------------------------------+
123   | :kconfig:option:`CONFIG_NETWORKING`              |
124   +--------------------------------------------------+
125   | :kconfig:option:`CONFIG_NET_UDP`                 |
126   +--------------------------------------------------+
127   | :kconfig:option:`CONFIG_NET_SOCKETS`             |
128   +--------------------------------------------------+
129   | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` |
130   +--------------------------------------------------+
131   | :kconfig:option:`CONFIG_COAP`                    |
132   +--------------------------------------------------+
133   | :kconfig:option:`CONFIG_DNS_RESOLVER`            |
134   +--------------------------------------------------+
135   | :kconfig:option:`CONFIG_JSON_LIBRARY`            |
136   +--------------------------------------------------+
137   | :kconfig:option:`CONFIG_HWINFO`                  |
138   +--------------------------------------------------+
139
140* The sensor driver API clarified :c:func:`sensor_trigger_set` to state that
141  the user-allocated sensor trigger will be stored by the driver as a pointer,
142  rather than a copy, and passed back to the handler. This enables the handler
143  to use :c:macro:`CONTAINER_OF` to retrieve a context pointer when the trigger
144  is embedded in a larger struct and requires that the trigger is not allocated
145  on the stack. Applications that allocate a sensor trigger on the stack need
146  to be updated.
147
148* Converted few drivers to the :ref:`input` subsystem.
149
150  * ``gpio_keys``: moved out of ``gpio``, replaced the custom API to use input
151    events instead, the :dtcompatible:`zephyr,gpio-keys` binding is unchanged
152    but now requires ``zephyr,code`` to be set.
153  * ``ft5336``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig
154    options from ``CONFIG_KSCAN_FT5336``, ``CONFIG_KSCAN_FT5336_PERIOD`` and
155    ``KSCAN_FT5336_INTERRUPT`` to :kconfig:option:`CONFIG_INPUT_FT5336`,
156    :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD` and
157    :kconfig:option:`CONFIG_INPUT_FT5336_INTERRUPT`.
158  * ``kscan_sdl``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig
159    option from ``KSCAN_SDL`` to :kconfig:option:`CONFIG_INPUT_SDL_TOUCH` and the
160    compatible from ``zephyr,sdl-kscan`` to
161    :dtcompatible:`zephyr,input-sdl-touch`.
162  * ``nuvoton,npcx-kscan`` moved to :ref:`input`, renamed the Kconfig option
163    names from ``KSCAN_NPCX_...`` to ``INPUT_NPCX_KBD...`` and the compatible
164    from ``nuvoton,npcx-kscan`` to :dtcompatible:`nuvoton,npcx-kbd`.
165  * Touchscreen drivers converted to use the input APIs can use the
166    :dtcompatible:`zephyr,kscan-input` driver to maintain Kscan compatibility.
167
168* The declaration of :c:func:`main` has been changed from ``void
169  main(void)`` to ``int main(void)``. The main function is required to
170  return the value zero. All other return values are reserved. This aligns
171  Zephyr with the C and C++ language specification requirements for
172  "hosted" environments, avoiding compiler warnings and errors. These
173  compiler messages are generated when applications are built in "hosted"
174  mode (which means without the ``-ffreestanding`` compiler flag). As the
175  ``-ffreestanding`` flag is currently enabled unless the application is
176  using picolibc, only applications using picolibc will be affected by this
177  change at this time.
178
179* The following network interface APIs now take additional,
180  ``struct net_if * iface`` parameter:
181
182  * :c:func:`net_if_ipv4_maddr_join`
183  * :c:func:`net_if_ipv4_maddr_leave`
184  * :c:func:`net_if_ipv6_maddr_join`
185  * :c:func:`net_if_ipv6_maddr_leave`
186
187* MCUmgr transports now need to set up the struct before registering it by
188  setting the function pointers to the function handlers, these have been
189  moved to a ``functions`` struct object of type
190  :c:struct:`smp_transport_api_t`. Because of these changes, the legacy
191  transport registration function and object are no longer available. The
192  registration function now returns a value which is 0 for success or a
193  negative error code if an error occurred.
194
195* Added a new flag :c:struct:`dac_channel_cfg` ``buffered`` for DAC channels in
196  :c:struct:`dac_channel_cfg` to allow the configuration of the output buffer.
197  The actual interpretation of this depends on the hardware and is so far only
198  implemented for the STM32 DAC driver. Implicitly for this driver this changes
199  the default from being buffered to unbuffered.
200
201* MCUmgr fs_mgmt group's file access hook is now called for all fs_mgmt group
202  functions (adding support for file status and file hash/checksum). In
203  addition, if the file access state is not lost, it will now only be called
204  once for the file access instead of each time a command is received.
205  Note that the structure for the notification has changed, the ``upload`` bool
206  has been replaced with an enum to indicate what function is used, see
207  :c:struct:`fs_mgmt_file_access` for the new structure definition.
208
209* Iterable sections API is now available at
210  :zephyr_file:`include/zephyr/sys/iterable_sections.h`. LD linker snippets are
211  available at :zephyr_file:`include/zephyr/linker/iterable_sections.h`.
212
213* Cache API functions are now fully inlined by compilers.
214
215* The Bluetooth HCI headers have been reworked, with ``hci.h`` now containing
216  only the function prototypes and the new ``hci_types.h`` defining all
217  HCI-related macros and structs. The previous ``hci_err.h`` has been merged
218  into ``hci_types.h``.
219
220Removed APIs in this release
221============================
222
223* Pinmux API has been removed. Pin control needs to be used as its replacement,
224  refer to :ref:`pinctrl-guide` for more details.
225
226Deprecated in this release
227==========================
228
229* Configuring applications with ``prj_<board>.conf`` files has been deprecated,
230  this should be replaced by using a prj.conf with the common configuration and
231  board-specific configuration in board Kconfig fragments in the ``boards``
232  folder of the application.
233
234* On nRF51 and nRF52-based boards, the behavior of the reset reason being
235  provided to :c:func:`sys_reboot` and being set in the GPREGRET register has
236  been dropped. This function will now just reboot the device without changing
237  the register contents. The new method for setting this register uses the boot
238  mode feature of the retention subsystem, see the
239  :ref:`boot mode API <boot_mode_api>` for details. To restore the deprecated
240  functionality, enable
241  :kconfig:option:`CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET`.
242
243* Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` in favor of the standardized
244  :c:func:`pthread_barrier_init`
245
246* On all STM32 targets except STM32F2 series, Ethernet drivers implementation
247  based on STM32Cube Ethernet API V1 (:kconfig:option:`CONFIG_ETH_STM32_HAL_API_V1`)
248  is now deprecated in favor of implementation based on more reliable and performant
249  STM32Cube Ethernet API V2.
250
251* Legacy Ztest API was deprecated. All new tests shall use the new Ztest API.
252
253Stable API changes in this release
254==================================
255
256* Removed ``bt_set_oob_data_flag`` and replaced it with two new API calls:
257  * :c:func:`bt_le_oob_set_sc_flag` for setting/clearing OOB flag in SC pairing
258  * :c:func:`bt_le_oob_set_legacy_flag` for setting/clearing OOB flag in legacy paring
259
260* :c:macro:`SYS_INIT` callback no longer requires a :c:struct:`device` argument.
261  The new callback signature is ``int f(void)``. A utility script to
262  automatically migrate existing projects can be found in
263  :zephyr_file:`scripts/utils/migrate_sys_init.py`.
264
265* Changed :c:struct:`spi_config` ``cs`` (:c:struct:`spi_cs_control`) from
266  pointer to struct member. This allows using the existing SPI dt-spec macros in
267  C++. SPI controller drivers doing ``NULL`` checks on the ``cs`` field to check
268  if CS is GPIO-based or not, must now use :c:func:`spi_cs_is_gpio` or
269  :c:func:`spi_cs_is_gpio_dt` calls.
270
271New APIs in this release
272========================
273
274* Introduced :c:func:`flash_ex_op` function. This allows to perform extra
275  operations on flash devices, defined by Zephyr Flash API or by vendor specific
276  header files. Support for extra operations is enabled by
277  :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED` which depends on
278  :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` selected by driver.
279
280* Introduced :ref:`rtc_api` API which adds experimental support for real-time clock
281  devices. These devices previously used the :ref:`counter_api` API combined with
282  conversion between unix-time and broken-down time. The new API adds the mandatory
283  functions :c:func:`rtc_set_time` and :c:func:`rtc_get_time`, the optional functions
284  :c:func:`rtc_alarm_get_supported_fields`, :c:func:`rtc_alarm_set_time`,
285  :c:func:`rtc_alarm_get_time`, :c:func:`rtc_alarm_is_pending` and
286  :c:func:`rtc_alarm_set_callback` are enabled with
287  :kconfig:option:`CONFIG_RTC_ALARM`, the optional function
288  :c:func:`rtc_update_set_callback` is enabled with
289  :kconfig:option:`CONFIG_RTC_UPDATE`, and lastly, the optional functions
290  :c:func:`rtc_set_calibration` and :c:func:`rtc_get_calibration` are enabled with
291  :kconfig:option:`CONFIG_RTC_CALIBRATION`.
292
293* Introduced :ref:`auxdisplay_api` for auxiliary (alphanumeric-based) displays.
294
295* Introduced :ref:`barriers_api` for barrier operations.
296
297* Added :c:macro:`CAN_FRAME_ESI` CAN-FD Error State Indicator flag.
298
299Kernel
300******
301
302* Removed absolute symbols :c:macro:`___cpu_t_SIZEOF`,
303  :c:macro:`_STRUCT_KERNEL_SIZE`, :c:macro:`K_THREAD_SIZEOF` and
304  :c:macro:`_DEVICE_STRUCT_SIZEOF`
305
306Architectures
307*************
308
309* ARC
310
311  * Added MPUv8 support
312  * Add support of virtual UART over ARC hostlink channel
313  * Improved ARCv2 HS4x processors handling - added proper Kconfig options, provided default mcpu
314  * Improved ARCMWDT toolchain handling:
315
316    * added rollback to check METAWARE_ROOT if ARCMWDT_TOOLCHAIN_PATH missing
317    * reworked extra warnings options handling in twister so it can be used with ARCMWDT
318    * used 64bit MDB binary by default
319
320  * Fixed excessive ROM memory consumption if MPU is enabled and ROM & RAM are located in different
321    memory regions
322  * Fixed DSP registers handling in case of ARCMWDT
323  * Improved SMP handling:
324
325    * Fixed potential livelock in thread abort due to exception
326    * Fixed IDU mask setup
327
328  * Removed absolute symbols :c:macro:`___callee_saved_t_SIZEOF` and
329    :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`
330
331* ARM
332
333  * Removed absolute symbols :c:macro:`___basic_sf_t_SIZEOF`,
334    :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`, :c:macro:`___cpu_context_t_SIZEOF`
335    and :c:macro:`___thread_stack_info_t_SIZEOF`
336  * Enabled fp16 for Cortex-M55
337  * Fixed a compilation issue with arm-clang and TrustZone
338  * Implemented a new cache-management API
339  * Added support for generating zImage headers
340  * Introduced a new :c:func:`z_arm_on_enter_cpu_idle` hook on CPU idle
341
342* ARM64
343
344  * Removed absolute symbol :c:macro:`___callee_saved_t_SIZEOF`
345  * Enabled FPU and FPU_SHARING for v8r aarch64
346  * Fixed the STACK_INIT logic during the reset
347  * Introduced and enabled safe exception stack
348  * Fixed possible deadlock on SMP with FPU sharing
349  * Added ISBs after SCTLR Modifications
350
351* NIOS2
352
353  * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`
354
355* POSIX:
356
357  * Added :c:macro:`Z_SPIN_DELAY` to allow to conditionally compile a k_busy_wait() for this arch
358    in tests and samples.
359
360* RISC-V
361
362  * Added :kconfig:option:`CONFIG_PMP_NO_TOR`, :kconfig:option:`CONFIG_PMP_NO_NA4`, and
363    :kconfig:option:`CONFIG_PMP_NO_NAPOT` to allow disabling unsupported PMP range modes.
364  * Removed unused symbols: :c:macro:`_thread_offset_to_tp`,
365    :c:macro:`_thread_offset_to_priv_stack_start`, :c:macro:`_thread_offset_to_user_sp`.
366  * Added support for setting PMP granularity with :kconfig:option:`CONFIG_PMP_GRANULARITY`.
367  * Switched from accessing CSRs from inline assembly to using the :c:func:`csr_read` helper
368    function.
369  * Enabled single-threading support.
370
371* SPARC
372
373  * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`
374
375* Xtensa
376
377  * Fixed the cross stack call mechanism during nested interrupts where stack would be
378    corrupted under certain conditions.
379  * Added initial support for MMU on Xtensa.
380  * Now supports building with :kconfig:option:`CONFIG_MULTITHREADING` disabled so
381    target can run in single thread only operations.
382  * Added C structs to represent interrupt frames to help with debugging.
383
384Bluetooth
385*********
386
387* General
388
389  * Moved all logging symbols together in a new ``Kconfig.logging`` file.
390  * Deprecated the ``BT_DEBUG_LOG`` option. Instead ``BT_LOG`` should be used.
391  * Made the ``BT_LOG`` and ``BT_LOG_LEGACY`` options hidden.
392  * Removed ``BT_DEBUG`` entirely.
393
394
395* Audio
396
397  * Implemented the CAP initiator broadcast audio start, stop and metadata
398    update procedures.
399  * Implemented the CAP unicast audio start, stop and metadata update procedures.
400  * Implemented the Telephony and Media Audio Service (TMAS).
401  * Added additional validation for MCC and MCS, including opcodes, values, etc.
402  * Refactored and extended the scan delegator implementation, including
403    integration with broadcast sink.
404  * Added support for creating a broadcast sink from a PA sink.
405  * Added support for optional characteristics in CSIP.
406  * Implemented discovery by UUID instead of reading by UUID for multiple
407    characteristics.
408  * Added support for long reads and writes for multiple profiles.
409  * Added support for long BAP ASE notifications and optimized long notify
410    reads.
411  * Offloaded MCS notifications to the system workqueue.
412  * Added the CAP initiator cancel procedure.
413
414* Direction Finding
415
416* Host
417
418  * Updated the Host to the v5.4 specification.
419  * The GATT DB Hash is now recalculated upon loading settings.
420  * Added experimental support for SMP keypress notifications.
421  * Downgraded the severity of select log messages to avoid log flooding.
422  * Separated the handling of LE SC OOB pairing from the legacy OOB logic.
423  * Implemented the Encrypted Advertising Data feature.
424  * Added support for the new Periodic Advertising with Responses (PAwR), both
425    as an advertiser and as a scanner.
426  * Added support for initiating connections from PAwR, as well as receiving
427    connections while synced.
428  * Clarified the behavior that is enabled by the ``BT_PRIVACY`` Kconfig option.
429  * Introduced a new ``seg_recv`` L2CAP API for an application to receive
430    segments directly and manage credits explicitly.
431
432* Mesh
433
434  * Added experimental support for Mesh Protocol d1.1r18 specification, gated
435    by a new configuration option. This includes:
436
437    * Enhanced Provisioning Authentication support.
438    * Mesh Remote Provisioning support including:
439
440      * Remote Provisioning Server and Client models.
441      * Composition Data Page 128 and Models Metadata Page 128 support.
442
443    * Large Composition Data support including:
444
445      * Large Composition Data Server and Client models.
446      * Models Metadata Page 0 support.
447
448    * New Transport Segmentation and Reassembly (SAR) implementation including:
449
450      * SAR Configuration Server and Client models.
451
452    * Mesh Private Beacons support including:
453
454      * Mesh Private Beacon Server and Client models.
455
456    * Opcodes Aggregator support including:
457
458      * Opcodes Aggregator Server and Client models.
459
460    * Proxy Solicitation support including:
461
462      * Solicitation PDU RPL Configuration Server and Client models.
463      * On-Demand Private Proxy Server and Client models.
464
465    * Composition Data Page 1 support.
466    * Other Mesh Profile Enhancements.
467  * Added experimental support for Mesh Binary Large Object Transfer Model d1.0r04_PRr00 specification.
468  * Added experimental support for Mesh Device Firmware Update Model d1.0r04_PRr00 specification.
469  * Fixed multiple profile errata.
470  * Added experimental support for the PSA crypto APIs.
471  * Added a new work queue to store mesh settings, including a new API for
472    storing user data.
473  * Disabled the models initialization macros for C++ as they use the compound
474    literal feature from C99.
475  * Deprecated Health Client and Configuration Client API have been removed.
476
477* Controller
478
479  * Implemented support for the central with multiple CIS usecase.
480  * Implemented support for multiple peripheral CIS establishment.
481  * Updated the Controller to the v5.4 specification.
482  * Added support for coexistence with other transceivers.
483  * Added support for multiple CIS/CIG setup/connect and teardown procedures in
484    sequence.
485  * Extended the ticker API to return expiration info.
486  * Re-implemented Extended and Periodic Advertising, as well as and Broadcast
487    ISO, using the new ticket expiration info feature.
488  * Modified the ticker implementation to reschedule unreserved tickers that use
489    ``ticks_slot_window``. Implement continuous scanning with it.
490  * Added support for considering the SDU interval, along with the packet
491    sequence number and time stamps, in SDU fragmentation.
492  * Added a new ``BT_CTRL_TX_PWR_DBM`` option to set the TX power directly in
493    dBm.
494  * Optimized the RX path with support for piggy-backing notifications on
495    already-allocated RX nodes.
496
497* HCI Driver
498
499Boards & SoC Support
500********************
501
502* Added support for these SoC series:
503
504  * STM32C0 series are now supported (with introduction of STM32C031 SoC).
505  * STM32H5 series are now supported (with introduction of STM32H503 and STM32H573 SoCs).
506  * Added support for STM32U599 SoC variants
507  * Nordic Semiconductor nRF9161
508
509* Removed support for these SoC series:
510
511* Made these changes in other SoC series:
512
513* Added support for these ARC boards:
514
515  * DesignWare ARC HS4x/HS4xD Development Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 cores
516  * nsim_hs3x_hostlink - simulation (nSIM-based) platform with hostlink UART
517
518* Added support for these ARM boards:
519
520  * Aconno ACN52832
521  * Alientek STM32L475 Pandora
522  * Arduino GIGA R1 Wi-Fi
523  * BeagleConnect Freedom
524  * Infineon PSoC™ 6 BLE Prototyping Kit (CY8CPROTO-063-BLE)
525  * Infineon PSoC™ 6 Wi-Fi BT Prototyping Kit (CY8CPROTO-062-4343W)
526  * Infineon XMC4700 Relax Kit
527  * MXChip AZ3166 IoT DevKit
528  * Nordic Semiconductor nRF9161 DK
529  * NXP MIMXRT1040-EVK
530  * NXP MIMXRT1062 FMURT6
531  * PHYTEC PhyBOARD Polis (NXP i.MX8M Mini)
532  * PHYTEC PhyBOARD Pollux (NXP i.MX8M Plus)
533  * Raspberry Pi Pico W
534  * Raytac MDBT50Q-DB-33
535  * Raytac MDBT50Q-DB-40
536  * Seeed Studio Wio Terminal
537  * Seeed Studio XIAO BLE Sense
538  * Silicon Labs BRD2601B
539  * Silicon Labs BRD4187C
540  * Silicon Labs EFR32 Thunderboard-style boards
541  * ST Nucleo C031C6
542  * ST Nucleo F042K6
543  * ST Nucleo H563ZI
544  * ST STM32H573I-DK Discovery
545  * Xilinx KV260 (Cortex-R5)
546
547* Added support for these ARM64 boards:
548
549  * PHYTEC phyCORE-AM62x A53
550  * NXP i.MX93 EVK A55 (SOF variant)
551
552* Added support for these RISC-V boards:
553
554  * Intel FPGA Nios® V/m
555  * ITE IT82XX2 EV-Board
556
557* Added support for these X86 boards:
558
559* Added support for these Xtensa boards:
560
561  * ESP32S3-DevKitM
562
563* Made these changes for ARC boards:
564
565  * Added ARC MWDT toolchain support for qemu_arc_hs
566  * Improved emsdp platform support:
567
568    * Added DFSS driver support
569    * Added pinctrl support
570
571* Made these changes for ARM boards:
572
573  * ``atsamc21n_xpro``: Enable support to CAN.
574  * ``atsame54_xpro``: Read Ethernet MAC from I2C.
575  * Changed the default board revision to 0.14.0 for the Nordic boards
576    ``nrf9160dk_nrf9160`` and ``nrf9160dk_nrf52840``. To build for an
577    older revision of the nRF9160 DK without external flash, specify that
578    older board revision when building.
579  * ``nrf9160dk_nrf52840``: Enabled external_flash_pins_routing switch by default.
580  * ``nrf9160dk_nrf9160``: Changed the order of buttons and switches on the GPIO
581    expander to match the order when using GPIO directly on the nRF9160 SoC.
582  * ``STM32H747i_disco``: Enabled support for ST B-LCD40-DSI1 display extension
583  * ``qemu_cortex_m0``: Fixed prescaler of the system timer so that its frequency
584    is actually 1 MHz, not 2 MHz.
585
586* Made these changes for ARM64 boards:
587
588  * FVP revc_2xaemv8a / aemv8r: Added ethernet, PHY and MDIO nodes
589
590* Made these changes to POSIX boards:
591
592   * nrf52_bsim now includes support and models for:
593
594     * 802.15.4 in the RADIO.
595     * EGU.
596     * FLASH (NVMC & UICR).
597     * TEMP.
598     * UART connected to a host ptty.
599     * Many more minor CMSIS API and nRF APIs and drivers.
600
601* Made these changes for RISC-V boards:
602
603  * ``gd32vf103``: No longer requires special OpenOCD version.
604
605* Made these changes for X86 boards:
606
607* Made these changes for Xtensa boards:
608
609* Removed support for these ARC boards:
610
611* Removed support for these ARM boards:
612
613* Removed support for these RISC-V boards:
614
615  * BeagleV Starlight JH7100
616
617* Removed support for these X86 boards:
618
619* Removed support for these Xtensa boards:
620
621* Made these changes in other boards:
622
623* Added support for these following shields:
624
625  * Adafruit Data Logger Shield
626  * nPM1300 EK (Power Management Integrated Circuit (PMIC))
627  * Panasonic Grid-EYE Shields
628  * ST B_LCD40_DSI1_MB1166
629
630Build system and infrastructure
631*******************************
632
633* Fixed an issue whereby older versions of the Zephyr SDK toolchain were used
634  instead of the latest compatible version.
635
636* Fixed an issue whereby building an application with sysbuild and specifying
637  mcuboot's verification to be checksum only did not build a bootable image.
638
639* Fixed an issue whereby if no prj.conf file was present then board
640  configuration files would not be included by emitting a fatal error. As a
641  result, prj.conf files are now mandatory in projects.
642
643* Introduced support for extending/replacing the signing mechanism in zephyr,
644  see :ref:`West extending signing <west-extending-signing>` for further
645  details.
646
647* Fixed an issue whereby when using ``*_ROOT`` variables with Sysbuild, these
648  were lost for images.
649
650* Enhanced ``zephyr_get`` CMake helper function to optionally support merging
651  of scoped variables into a list.
652
653* Added a new CMake helper function for setting/updating sysbuild CMake cache
654  variables: ``sysbuild_cache_set``.
655
656* Enhanced ``zephyr_get`` CMake helper function to lookup multiple variables
657  and return the result in a variable of different name.
658
659* Introduced ``EXTRA_CONF_FILE``, ``EXTRA_DTC_OVERLAY_FILE``, and
660  ``EXTRA_ZEPHYR_MODULES`` for better naming consistency and uniform behavior
661  for applying extra build settings in addition to Zephyr automatic build
662  setting lookup.
663  ``EXTRA_CONF_FILE`` replaces ``OVERLAY_CONFIG``.
664  ``EXTRA_ZEPHYR_MODULES`` replaces ``ZEPHYR_EXTRA_MODULES``.
665  ``EXTRA_DTC_OVERLAY_FILE`` is new, see
666  :ref:`Set devicetree overlays <set-devicetree-overlays>` for further details.
667
668* Twister now supports ``gtest`` harness for running tests written in gTest.
669
670* Added an option to validate device initialization priorities at build time.
671  To use it, enable :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES`, see
672  :ref:`check_init_priorities.py` for more details.
673
674* Added a new option to disable tracking of macro expansion when compiling,
675  :kconfig:option:`CONFIG_COMPILER_TRACK_MACRO_EXPANSION`. This option may be
676  disabled to reduce compiler verbosity when errors occur during macro
677  expansions, e.g. in device definition macros.
678
679* Twister now supports loading test configurations from alternative root
680  folder/s by using ``--alt-config-root``. When a test is found, Twister will
681  check if a test configuration file exist in any of the alternative test
682  configuration root folders. For example, given
683  ``$test_root/tests/foo/testcase.yaml``, Twister will use
684  ``$alt_config_root/tests/foo/testcase.yaml`` if it exists.
685
686* Twister now uses native YAML lists for fields that were previously defined
687  using space-separated strings. For example:
688
689  .. code-block:: yaml
690
691     platform_allow: foo bar
692
693  can now be written as:
694
695  .. code-block:: yaml
696
697     platform_allow:
698       - foo
699       - bar
700
701  This applies to the following properties:
702
703    - ``arch_exclude``
704    - ``arch_allow``
705    - ``depends_on``
706    - ``extra_args``
707    - ``extra_sections``
708    - ``platform_exclude``
709    - ``platform_allow``
710    - ``tags``
711    - ``toolchain_exclude``
712    - ``toolchain_allow``
713
714  Note that the old behavior is kept as deprecated. The
715  :zephyr_file:`scripts/utils/twister_to_list.py` script can be used to
716  automatically migrate Twister configuration files.
717
718* When MCUboot image signing is enabled, a warning will now be emitted by cmake
719  if no signing key is set in the project, this warning can be safely ignored
720  if signing is performed manually or outside of zephyr. This warning informs
721  the user that the generated image will not be bootable by MCUboot as-is.
722
723* Babblesim is now included in the west manifest. Users can fetch it by enabling
724  the ``babblesim`` group with west config.
725
726* ``west sign`` now uses DT labels, of "fixed-partition" compatible nodes, to identify
727  application image slots, instead of previously used DT node label properties.
728  If you have been using custom partition layout for MCUboot, you will have to label
729  your MCUboot slot partitions with proper DT node labels; for example partition
730  with "image-0" label property will have to be given slot0_partition DT node label.
731  Label property does not have to be removed from partition node, but will not be used.
732
733  DT node labels used are listed below
734
735  .. table::
736     :align: center
737
738     +---------------------------------+---------------------------+
739     | Partition with label property   | Required DT node label    |
740     +=================================+===========================+
741     | "image-0"                       | slot0_partition           |
742     +---------------------------------+---------------------------+
743     | "image-1"                       | slot1_partition           |
744     +---------------------------------+---------------------------+
745
746* Fixed an issue whereby relative paths supplied for the ``BOARD_ROOT`` value
747  might wrongly emit a warning about a ``boards`` directory not being found.
748
749* Fixed an issue whereby relative paths did not work for sysbuild images.
750
751Drivers and Sensors
752*******************
753
754* Device model
755
756  * Devices that do not require an initialization routine can now pass ``NULL``
757    to the ``DEVICE_*_DEFINE()`` macros.
758
759* Auxiliary display
760
761  * New auxiliary display (auxdisplay) peripheral has been added, this allows
762    for interfacing with simple alphanumeric displays that do not feature
763    graphic capabilities. This peripheral is marked as unstable.
764
765  * HD44780 driver added.
766
767  * Noritake Itron driver added.
768
769  * Grove LCD driver added (ported from existing sample).
770
771* ADC
772
773  * MCUX LPADC driver now uses the channel parameter to select a software channel
774    configuration buffer. Use ``zephyr,input-positive`` and
775    ``zephyr,input-negative`` devicetree properties to select the hardware
776    channel(s) to link a software channel configuration to.
777  * MCUX LPADC driver ``voltage-ref`` and ``power-level`` devicetree properties
778    were shifted to match the hardware as described in reference manual instead
779    of matching the NXP SDK enum identifiers.
780  * Added support for STM32C0 and STM32H5.
781  * Added DMA support for STM32H7.
782  * STM32: Resolutions are now listed in the device tree for each ADC instance
783  * STM32: Sampling times are now listed in the device tree for each ADC instance
784  * Added driver for Atmel SAM family ADC.
785  * Added driver for Gecko Incremental ADC.
786  * Added driver for Infineon CAT1 ADC.
787  * Added driver for TI ADS7052.
788  * Added driver for TI ADS114S0x family.
789  * Added drivers for Renesas SmartBond GPADC and SDADC.
790
791* Battery-backed RAM
792
793  * Added MCP7940N battery-backed RTC SRAM driver.
794
795* CAN
796
797  * The CAN statistics are now reset when calling :c:func:`can_start`.
798
799  * Renamed the NXP FlexCAN devicetree binding compatible from ``nxp,kinetis-flexcan`` to
800    :dtcompatible:`nxp,flexcan`.
801
802  * Added support for the CAN-FD variant of the NXP FlexCAN controller using devicetree binding
803    :dtcompatible:`nxp,flexcan-fd`.
804
805  * Added support for the NXP NXP S32 CANEXCEL controller using devicetree binding
806    :dtcompatible:`nxp,s32-canxl`.
807
808  * Added support for the Atmel SAM0 CAN controller using devicetree binding
809    :dtcompatible:`atmel,sam0-can`.
810
811  * Refactored the Bosch M_CAN controller driver backend to allow for per-instance configuration via
812    devicetree.
813
814  * Now supports STM32H5 series.
815
816* Clock control
817
818  * Atmel SAM/SAM0: Introduced peripheral clock control.
819  * Atmel SAM0: Improved ``samd20``/``samd21``/``samr21`` clocking mechanism.
820  * STM32F4: Added support for PLL I2S
821
822* Console:
823
824  * The native_posix and bsim console drivers have been merged into one generic
825    driver usable by all POSIX arch based boards.
826
827* Counter
828
829  * Added support on timer based counter on STM32H7 and STM32H5
830  * Added support on RTC based counter on STM32C0 and STM32H5
831
832* Crypto
833
834  * Added support for STM32H5 AES
835
836* DAC
837
838  * Added support on STM32H5 series.
839
840* Disk
841
842  * SDMMC STM32L4+: Now compatible with internal DMA
843  * NVME disks are now supported using FATFS, with a single I/O queue enabled
844
845* Display
846
847  * Improved MCUX ELCDIF and SSD16XX display controller drivers
848  * Added support for ILI9342C display controller
849  * Added support for OTM8009A panel
850
851* DMA
852
853  * STM32C0: Added support for DMA
854  * STM32H5: Added support for GPDMA
855  * STM32H7: Added support for BDMA
856  * Added DMA support for the RP2040 SoC
857
858* EEPROM
859
860  * Switched from :dtcompatible:`atmel,at24` to dedicated :dtcompatible:`zephyr,i2c-target-eeprom` for I2C EEPROM target driver.
861
862* Entropy
863
864  * Added support for STM32H5 series.
865
866* Flash
867
868  * Introduced new flash API call :c:func:`flash_ex_op` which calls
869    :c:func:`ec_op` callback provided by a flash driver. This allows to perform
870    extra operations on flash devices, defined by Zephyr Flash API or by vendor
871    specific header files. :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` should be
872    selected by the driver to indicate that extra operations are supported.
873    To enable extra operations user should select
874    :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED`.
875  * STM32F4: Now supports write protection and readout protection through
876    new flash API call :c:func:`flash_ex_op`.
877  * nrf_qspi_nor: Replaced custom API function ``nrf_qspi_nor_base_clock_div_force``
878    with ``nrf_qspi_nor_xip_enable`` which apart from forcing the clock divider
879    prevents the driver from deactivating the QSPI peripheral so that the XIP
880    operation is actually possible.
881  * flash_simulator:
882
883    * A memory region can now be used as the storage area for the
884      flash simulator. Using the memory region allows the flash simulator to keep
885      its contents over a device reboot.
886    * When building in native_posix, command line options have been added to select
887      if the flash should be cleared at boot, the flash content kept in RAM,
888      or the flash content file be deleted on exit.
889
890  * spi_flash_at45: Fixed erase procedure to properly handle chips that have
891    their initial sector split into two parts (usually marked as 0a and 0b).
892  * STM32H5 now supports OSPI
893
894* GPIO
895
896  * Converted the ``gpio_keys`` driver to the input subsystem.
897  * Added single-ended IO support for the RP2040 SoC
898
899  * STM32: Supports newly introduced experimental API to enable/disable interrupts
900    without re-config
901
902* I2C
903
904  * Added support for STM32C0 and STM32H5 series
905
906* I2S
907
908  * STM32: Domain clock should now be configured by device tree.
909
910* Input
911
912  * Introduced the :ref:`input` subsystem.
913
914* KSCAN
915
916  * Added a :dtcompatible:`zephyr,kscan-input` input to kscan compatibility driver.
917  * Converted the ``ft5336`` and ``kscan_sdl`` drivers to the input subsystem.
918
919* MIPI-DSI
920
921  * Added support on STM32H7
922
923* Misc
924
925   * Added PIO support for the RP2040 SoC
926
927* PCIE
928
929  * Enable filtering PCIe devices by class/revision.
930
931* PECI
932
933* Retained memory
934
935  * Retained memory (retained_mem) driver has been added with backends for
936    Nordic nRF GPREGRET, and uninitialised RAM.
937
938* Pin control
939
940  * Added support for Infineon CAT1
941  * Added support for TI K3
942  * Added support for ARC emdsp
943
944* PWM
945
946  * Added support for STM32C0.
947  * STM32: Now supports 6-PWM channels
948  * Added PWM driver for Microchip XEC BBLED.
949
950* Power domain
951
952* Regulators
953
954  * The regulator API can now be built without thread-safe reference counting
955    by using :kconfig:option:`CONFIG_REGULATOR_THREAD_SAFE_REFCNT`. This
956    feature can be useful in applications that do not enable
957    :kconfig:option:`CONFIG_MULTITHREADING`.
958  * Added support for ADP5360 PMIC
959  * Added support for nPM1300 PMIC
960  * Added support for Raspberry Pi Pico core supply regulator
961
962* SDHC
963
964  * Support was added for using CPOL/CPHA SPI clock modes with SD cards, as
965    some cards require the SPI clock switch to low when not active
966
967* Sensor
968
969  * Added generic voltage measurement sample
970  * Removed STM32 Vbat measurement sample (replaced by a generic one)
971  * Added STM32 Vref sensor driver
972  * Added STM32 Vref/Vbat measurement through the new generic voltage measurement sample
973  * Added temperature measurement driver for STM32C0 and STM32F0x0
974  * Removed STM32 temperature measurement sample (replaced by a generic one)
975  * Added STM32 temperature measurement through the generic temperature measurement sample
976
977* Serial
978
979  * Added UART3 and UART4 configuration for ``gd32vf103`` SoCs.
980  * uart_altera: added new driver for Altera Avalon UART.
981  * uart_emul: added new driver for emulated UART.
982  * uart_esp32:
983    * Added support for ESP32S3 SoC.
984    * Added support for RS-485 half duplex mode.
985  * uart_hostlink: added new driver for virtual UART via Synopsys ARC hostlink channels.
986  * uart_ifx_cat1: added new driver for Infineon CAT1 UART.
987  * uart_mcux: added power management support.
988  * uart_mcux_flexcomm: added support for asynchronous operations.
989  * uart_mcux_lpuart: added support for parity.
990  * uart_ns16550: now supports per instance hardware access mode instead of
991    one access mode for all instances.
992  * uart_pl011: fixed interrupt support.
993  * uart_rpi_pico_pio: added new driver to support UART via
994    Programmable Input/Output (PIO) on Raspberry Pi Pico.
995  * uart_xmc4xxx: added support for asynchronous operations.
996  * uart_stm32: Now support driver enable mode
997  * Added hardware flow control support for the RP2040 SoC
998
999* SPI
1000
1001  * Added support on STM32H5 series.
1002
1003* Timer
1004
1005  * Support added for stopping Nordic nRF RTC system timer, which fixes an
1006    issue when booting applications built in prior version of Zephyr.
1007
1008  * STM32: Now supports a prescaler at the input of clock (default not divided).
1009    Prescaler allows to achieve higher LPTIM timeout (up to 256s when lptim clocked by LSE)
1010    and consequently higher core sleep durations but impacts the tick precision.
1011    To be used with caution.
1012
1013* USB
1014
1015   * Added remote wakeup support for the RP2040 SoC
1016   * Added Battery Charging (BC12) API and PI3USB9201 driver implementation.
1017   * Added new USB device controller drivers (using usb_dc API) for ITE IT82xx2
1018     and smartbond platforms.
1019   * Added USB device controller driver skeleton for UDC API.
1020   * Reworked DWC2 driver and added support for STM32F4 SoC family
1021
1022* W1
1023
1024  * Added DS2482-800 1-Wire master driver. See the :dtcompatible:`maxim,ds2482-800`
1025    devicetree binding for more information.
1026  * Added :kconfig:option:`CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING` which can be
1027    enabled force the 1-Wire network layer to use multidrop addressing.
1028
1029* Watchdog
1030
1031  * Added support for STM32C0 and STM32H5 series
1032
1033Networking
1034**********
1035
1036* CoAP:
1037
1038  * Added :c:func:`coap_append_descriptive_block_option` and
1039    :c:func:`coap_get_block1_option` APIs to facilitate block transfer handling.
1040  * Added a :ref:`coap_client_interface` helper library, based on the existing CoAP APIs.
1041  * Fixed missing token length validation in :c:func:`coap_header_get_token`.
1042  * Fixed missing response check in :c:func:`coap_response_received`.
1043
1044* Connection Manager:
1045
1046  * Extended the library with a generic L2 connectivity API.
1047  * Refactored library internals significantly.
1048  * Improved thread safety in the library.
1049  * Reworked how Connection Manager events are notified - they are no longer
1050    raised for each interface individually, but instead:
1051
1052    * ``NET_EVENT_L4_CONNECTED`` is called only once after the first
1053      interface gains connectivity.
1054    * ``NET_EVENT_L4_DISCONNECTED`` is called only after connectivity is
1055      lost on all interfaces.
1056
1057  * Improved Connection Manager test coverage.
1058
1059* DHCPv4:
1060
1061  * Fixed a potential packet leak in DHCPv4 input handler.
1062  * Fixed a potential NULL pointer dereference in ``dhcpv4_create_message()``.
1063  * Added a mechanism to register a callback for handling DHCPv4 options.
1064  * Modified ``dhcpv4_client`` sample to trigger DHCP on all network interfaces
1065    in the system.
1066
1067* DNS:
1068
1069  * Fixed a possible crash on NULL pointer as a query callback.
1070  * Added a check on existing DNS servers before reconfigure.
1071  * Improved debug logging in DNS SD.
1072  * Fixed IPv4/IPv6 address handling in mDNS responder, if both are IPv4 and IPv6 are enabled.
1073  * Removed dead code in DNS SD query parsing.
1074
1075* Ethernet:
1076
1077  * Fixed double packet dereference in case of ARP request transmission errors.
1078  * Fixed a possible slist corruption in case Ethernet interface went up before
1079    LLDP initialization.
1080
1081* HTTP:
1082
1083  * Added HTTP service and resource iterable sections.
1084
1085* ICMPv6:
1086
1087  * Implemented IPv6 RA Recursive DNS Server option handling.
1088
1089* IEEE802154:
1090
1091  * Fixed a corner case with 6LoWPAN IP Header Compression and fragmentation, where
1092    for a short range of packet sizes, fragmentation did not work correctly after IPHC.
1093  * Added new radio API function to start continuous carrier wave transmission.
1094  * Several improvements/fixes in IEEE802154 L2 security.
1095  * Fixed a packet leak when handling beacon/command frames.
1096  * Deprecated :kconfig:option:`CONFIG_IEEE802154_2015` Kconfig option.
1097  * Added simple Babblesim echo test over IEEE802154 L2.
1098  * Improved IEEE802154 L2 test coverage.
1099  * Multiple other minor IEEE802154 L2 and documentation improvements/fixes.
1100
1101* IPv4:
1102
1103  * Implemented a fallback to IPv4 Link Local address if no other address is available.
1104  * Fixed :c:func:`net_ipv4_is_ll_addr` helper function to correctly identify LL address.
1105  * Fixed possible NULL pointer dereference in IPv4 fragmentation.
1106
1107* LwM2M:
1108
1109  * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_UPDATE` event.
1110  * Added missing ``const`` qualifier in the APIs, where applicable.
1111  * Fixed socket error handling on packet transmission.
1112  * Improved LwM2M context cleanup when falling back to regular Registration.
1113  * Added possibility to register a callback function for FW update cancel action.
1114  * Added possibility to register a callback function for LwM2M send operation.
1115  * Added ISPO voltage sensor object support.
1116  * Fixed stopping of the LwM2M client when it's suspended.
1117  * Fixed a minor CoAP RFC incompatibility, where it should not be assumed that
1118    consecutive data blocks in block transfer will carry the same token.
1119  * Added block transfer support on TX.
1120  * Fixed a possible out-of-bounds memory access when creating FW update object.
1121  * Added possibility to override default socket option configuration with a
1122    dedicated callback function (``set_socketoptions``).
1123  * Improved LwM2M test coverage.
1124  * Several other minor improvements and cleanups.
1125
1126* Misc:
1127
1128  * Added generic ``OFFLOADED_NETDEV_L2`` for offloaded devices to allow
1129    offloaded implementations to detect when interface is brought up/down.
1130  * Factored out ``net_buf_simple`` routines to a separate source file.
1131  * Fixed possible NULL pointer dereference in ``net_pkt_cursor_operate()``.
1132  * Reimplemented ``net_mgmt`` to use message queue internally. This also fixed
1133    a possible event loss with the old implementation.
1134  * Fixed error handling in ``net ping`` shell command to avoid shell freeze.
1135  * Improved Ethernet error statistics logging in ``net stats`` shell command.
1136  * Moved SLIP TAP implementation into a separate file, to prevent build warnings
1137    about missing sources for Ethernet drivers.
1138  * Fixed crashes in ``echo_server`` and ``echo_client`` samples, when
1139    userspace is enabled.
1140  * Fixed IPv6 support in ``mqtt_sn_publisher`` sample.
1141  * Fixed build issues with arm-clang in the networking stack.
1142  * Added new ``NET_IF_IPV6_NO_ND`` and ``NET_IF_IPV6_NO_MLD`` interface flags,
1143    which allow to disable ND/MLD respectively on an interface.
1144  * Reworked network interface mutex protection, to use individual mutex for
1145    each interface, instead of a global one.
1146  * Added new :zephyr:code-sample:`aws-iot-mqtt`.
1147  * Added a few missing NULL pointer checks in network interface functions.
1148
1149* OpenThread:
1150
1151  * Implemented the following OpenThread platform APIs:
1152
1153    * ``otPlatRadioSetMacFrameCounterIfLarger()``,
1154    * ``otPlatCryptoEcdsaGenerateAndImportKey()``,
1155    * ``otPlatCryptoEcdsaExportPublicKey()``,
1156    * ``otPlatCryptoEcdsaVerifyUsingKeyRef()``,
1157    * ``otPlatCryptoEcdsaSignUsingKeyRef()``.
1158
1159  * Added :kconfig:option:`CONFIG_OPENTHREAD_CSL_TIMEOUT` option.
1160  * Removed no longer needed ``CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB``.
1161  * Added simple Babblesim echo test over OpenThread.
1162
1163* SNTP:
1164
1165  * Switched to use ``zsock_*`` functions internally.
1166
1167* Sockets:
1168
1169  * Fixed ``SO_RCVBUF`` and ``SO_SNDBUF`` socket options handling, so that they
1170    configure TCP window sizes correctly.
1171  * Fixed ``SO_SNDTIMEO`` socket option handling - the timeout value was ignored
1172    and socket behaved as in non-blocking mode when used.
1173  * Reworked TLS sockets implementation, to allow parallel TX/RX from
1174    different threads.
1175  * Implemented TLS handshake timeout.
1176  * Added support for asynchronous connect for TCP sockets.
1177  * Fixed blocking :c:func:`recv` not being interrupted on socket close.
1178  * Fixed blocking :c:func:`accept` not being interrupted on socket close.
1179  * Improved sockets test coverage.
1180
1181* TCP:
1182
1183  * Fixed incorrect TCP stats by improving packet processing result reporting.
1184  * Added :kconfig:option:`CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT` to allow to configure
1185    packet allocation timeout.
1186  * Improved TCP test coverage.
1187  * Fixed TCP MSS calculation for IPv6.
1188  * Fixed possible double acknowledgment of retransmitted data.
1189  * Fixed local address setting for incoming connections.
1190  * Fixed double TCP context dereferencing in certain corner cases.
1191
1192* TFTP:
1193
1194  * Added ``tftp_put()`` API to support TFTP write request.
1195  * Introduced ``tftp_callback_t`` callback to allow to read large files.
1196  * Reworked ``struct tftpc`` client context structure, to allow for parallel
1197    communication from several contexts.
1198
1199* UDP:
1200
1201  * :kconfig:option:`CONFIG_NET_UDP_MISSING_CHECKSUM` is now enabled by default.
1202
1203* Websockets:
1204
1205  * Implemented proper timeout handling in :c:func:`websocket_recv_msg`.
1206  * Fixed implicit type conversion when parsing length field, which could lead
1207    to data loss.
1208
1209* Wi-Fi:
1210
1211  * Display TWT (Target Wake Time) configuration response status in Wi-Fi shell.
1212  * Added more detailed TWT response parameters printout in Wi-Fi shell.
1213  * Added new ``NET_EVENT_WIFI_TWT_SLEEP_STATE`` event to notify TWT sleep status.
1214  * Fixed an issue where not all security modes were displayed correctly on scan.
1215  * Added connection status and AP capabilities verification before initiating
1216    TWT operation.
1217  * TWT intervals are changed from milliseconds to microseconds, interval
1218    variables are also renamed.
1219  * Extended Power Saving configuration parameters with listening interval and
1220    wake up mode.
1221  * Added :kconfig:option:`CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS` option, which
1222    enables providing of RAW (unprocessed) scan results to the application with
1223    ``NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT`` event.
1224  * Several other minor fixes/cleanups in the Wi-Fi management/shell modules.
1225
1226* zperf
1227
1228  * Added an extra parameter to disable Nagle's algorithm with TCP benchmarks.
1229  * Added support for handling multiple incoming TCP sessions.
1230  * Made zperf thread priority and stack size configurable.
1231  * Several minor cleanups in the module.
1232
1233USB
1234***
1235
1236* USB device support
1237
1238  * Fixed control endpoint handling with MPS of 8 bytes.
1239
1240* New experimental USB support
1241
1242  * Various improvements for new device support, better string descriptor support,
1243    implemented usbd_class_shutdown API.
1244  * Added USB Mass Storage class and CDC ECM class implementations for the new
1245    device support.
1246
1247Libraries / Subsystems
1248**********************
1249
1250* File systems
1251
1252  * Added :kconfig:option:`CONFIG_FS_FATFS_REENTRANT` to enable the FAT FS reentrant option.
1253  * With LittleFS as backend, :c:func:`fs_mount` return code was corrected to ``EFAULT`` when
1254    called with ``FS_MOUNT_FLAG_NO_FORMAT`` and the designated LittleFS area could not be
1255    mounted because it has not yet been mounted or it required reformatting.
1256  * The FAT FS initialization order has been updated to match LittleFS, fixing an issue where
1257    attempting to mount the disk in a global function caused FAT FS to fail due to not being registered beforehand.
1258    FAT FS is now initialized in POST_KERNEL.
1259  * Added :kconfig:option:`CONFIG_FS_LITTLEFS_FMP_DEV` to enable possibility of using LittleFS
1260    for block devices only, e.g. without Flash support. The option is set to 'y' by default in
1261    order to keep previous behaviour.
1262
1263* IPC
1264
1265  * :c:func:`ipc_service_close_instance` now only acts on bounded endpoints.
1266  * ICMSG: removed race condition during bonding.
1267  * ICMSG: removed internal API for clearing shared memory.
1268  * ICMSG: added mutual exclusion access to SHMEM.
1269  * Fixed CONFIG_OPENAMP_WITH_DCACHE.
1270
1271* Management
1272
1273  * Added optional input expiration to shell MCUmgr transport, this allows
1274    returning the shell to normal operation if a complete MCUmgr packet is not
1275    received in a specific duration. Can be enabled with
1276    :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT` and timeout
1277    set with
1278    :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME`.
1279
1280  * MCUmgr fs_mgmt upload and download now caches the file handle to improve
1281    throughput when transferring data, the file is no longer opened and closed
1282    for each part of a transfer. In addition, new functionality has been added
1283    that will allow closing file handles of uploaded/downloaded files if they
1284    are idle for a period of time, the timeout is set with
1285    :kconfig:option:`MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME`. There is a
1286    new command that can be used to close open file handles which can be used
1287    after a file upload is complete to ensure that the file handle is closed
1288    correctly, allowing other transports or other parts of the application
1289    code to use it.
1290
1291  * A new version of the SMP protocol used by MCUmgr has been introduced in the
1292    header, which is used to indicate the version of the protocol being used.
1293    This updated protocol allows returning much more detailed error responses
1294    per group, see the
1295    :ref:`MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>`
1296    for details.
1297
1298  * MCUmgr has now been marked as a stable Zephyr API.
1299
1300  * The MCUmgr UDP transport has been refactored to resolve some concurrency
1301    issues and fixes a potential issue whereby an application might call the
1302    open transport function whilst it is already open, causing an endless log
1303    output loop.
1304
1305  * The MCUmgr fs_mgmt group Kconfig ``Insecure`` text has been replaced with
1306    a CMake warning which triggers if fs_mgmt hooks are not enabled, as these
1307    hooks can be used to ensure security of file access allowed by MCUmgr
1308    clients.
1309
1310  * Fixed an issue with MCUmgr fs_mgmt file download not checking if the
1311    offset parameter was provided.
1312
1313  * Fixed an issue with MCUmgr fs_mgmt file upload notification hook not
1314    setting upload to true.
1315
1316  * Fixed an issue with MCUmgr img_mgmt image upload ``upgrade`` field wrongly
1317    checking if the new image was the same version of the application and
1318    allowing it to be uploaded if it was.
1319
1320  * MCUmgr img_mgmt group will only verify the SHA256 hash provided by the
1321    client against the uploaded image (if support is enabled) if a full SHA256
1322    hash was provided.
1323
1324  * MCUmgr Kconfig options have changed from ``select`` to ``depends on`` which
1325    means that some additional Kconfig options may now need to be selected by
1326    applications. :kconfig:option:`CONFIG_NET_BUF`,
1327    :kconfig:option:`CONFIG_ZCBOR` and :kconfig:option:`CONFIG_CRC` are needed
1328    to enable MCUmgr support, :kconfig:option:`CONFIG_BASE64` is needed to
1329    enable shell/UART/dummy MCUmgr transports,
1330    :kconfig:option:`CONFIG_NET_SOCKETS` is needed to enable the UDP MCUmgr
1331    transport, :kconfig:option:`CONFIG_FLASH` is needed to enable MCUmgr
1332    fs_mgmt, :kconfig:option:`CONFIG_FLASH` and
1333    :kconfig:option:`CONFIG_IMG_MANAGER` are needed to enable MCUmgr img_mgmt.
1334
1335  * MCUmgr img_mgmt group now uses unsigned integer values for image and slot
1336    numbers, these numbers would never have been negative and should have been
1337    unsigned.
1338
1339* POSIX API
1340
1341  * Improved the locking strategy for :c:func:`eventfd_read()` and
1342    :c:func:`eventfd_write()`. This eliminated a deadlock scenario that was
1343    present since the initial contribution and increased performance by a
1344    factor of 10x.
1345
1346  * Reimplemented :ref:`POSIX <posix_support>` threads, mutexes, condition
1347    variables, and barriers using native Zephyr counterparts. POSIX
1348    synchronization primitives in Zephyr were originally implemented
1349    separately and received less maintenance as a result. Unfortunately, this
1350    opened POSIX up to unique bugs and race conditions. Going forward, POSIX
1351    will benefit from all improvements to Zephyr's synchronization and
1352    threading API and race conditions have been mitigated.
1353
1354* Retention
1355
1356  * Retention subsystem has been added which adds enhanced features over
1357    retained memory drivers allowing for partitioning, magic headers and
1358    checksum validation. See :ref:`retention API <retention_api>` for details.
1359    Support for the retention subsystem is experimental.
1360
1361  * Boot mode retention module has been added which allows for setting/checking
1362    the boot mode of an application, initial support has also been added to
1363    MCUboot to allow for applications to use this as an entrance method for
1364    MCUboot serial recovery mode. See :ref:`boot mode API <boot_mode_api>` for
1365    details.
1366
1367* RTIO
1368
1369  * Added policy that every ``sqe`` will generate a ``cqe`` (previously an RTIO_SQE_TRANSACTION
1370    entry would only trigger a ``cqe`` on the last ``sqe`` in the transaction.
1371
1372* Power management
1373
1374  * Added a new policy event API that can be used to register expected events
1375    that will wake the system up in the future. This can be used to influence
1376    the system on which low power states can be used.
1377
1378  * Added a new device tree property ``zephyr,pm-device-runtime-auto`` to
1379    automatically enable device runtime power management on a device after its
1380    initialization.
1381
1382HALs
1383****
1384
1385* Nordic
1386
1387  * Updated nrfx to version 3.0.0.
1388
1389* STM32
1390
1391  * stm32cube: updated STM32F0 to cube version V1.11.4.
1392  * stm32cube: updated STM32F3 to cube version V1.11.4
1393  * stm32cube: updated STM32L0 to cube version V1.12.2
1394  * stm32cube: updated STM32U5 to cube version V1.2.0
1395  * stm32cube: updated STM32WB to cube version V1.16.0
1396
1397* Raspberry Pi Pico
1398
1399  * Updated hal_rpi_pico to version 1.5.0
1400
1401MCUboot
1402*******
1403
1404* Relocated the MCUboot Kconfig options from the main ``Kconfig.zephyr`` file to
1405  a new ``modules/Kconfig.mcuboot`` module-specific file. This means that, for
1406  interactive Kconfig interfaces, the MCUboot options will now be located under
1407  ``Modules`` instead of under ``Boot Options``.
1408
1409* Added ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` that allows to pass arguments to
1410  west sign when invoked from cmake.
1411
1412Storage
1413*******
1414
1415* Added :kconfig:option:`CONFIG_FLASH_MAP_LABELS`, which will enable runtime access to the labels
1416  property of fixed partitions. This option is implied if kconfig:option:`CONFIG_FLASH_MAP_SHELL`
1417  is enabled. These labels will be displayed in a separate column when using the ``flash_map list``
1418  shell command.
1419
1420Trusted Firmware-M
1421******************
1422
1423* Enable routing of PSA Crypto API calls from NS to S, thanks to separating MbedTLS into three
1424  distinct libraries at build time (crypto, TLS, X.509). This also resolves header conflicts with
1425  earlier integrations of TF-M and MbedTLS.
1426* Added psa_crypto sample back.
1427
1428zcbor
1429*****
1430
1431Updated from 0.6.0 to 0.7.0.
1432Among other things, this update brings:
1433
1434* C++ improvements
1435* float16 support
1436* Improved docs
1437* -Wall and -Wconversion compliance
1438
1439Tests and Samples
1440*****************
1441
1442* Two Babblesim based networking (802.15.4) tests have been added, which are run in Zephyr's CI
1443  system. One of them including the OpenThread stack.
1444* For native_posix and the nrf52_bsim: Many tests have been fixed and enabled.
1445* LittleFS sample has been given SPI example configuration for nrf52840dk_nrf52840.
1446* Migrated all tests to new Ztest API and deprecated legacy Ztest.
1447