1:orphan:
2
3.. _zephyr_3.7:
4
5Zephyr 3.7.0
6############
7
8We are pleased to announce the release of Zephyr version 3.7.0.
9
10This release is the last non-maintenance 3.x release and, as such, will be the next
11:ref:`Long Term Support (LTS) release <release_process_lts>`.
12
13Major enhancements with this release include:
14
15* A new, completely :ref:`overhauled hardware model <hw_model_v2>` has been introduced.
16  It changes the way both SoCs and boards are named, defined and constructed in Zephyr.
17  Additional information can be found in the :ref:`board_porting_guide`.
18* A long-awaited :ref:`HTTP Server <http_server_interface>` library, and associated service API,
19  allow to easily implement HTTP/1.1 and HTTP/2 servers in Zephyr. Resources can be registered
20  statically or dynamically, and WebSocket support is included.
21* :ref:`POSIX support <posix_support>` has been extended, with most Options of the IEEE 1003-2017
22  :ref:`System Interfaces <posix_system_interfaces_required>` receiving support, as well as most
23  Options and Option groups required for :ref:`PSE51 <posix_aep_pse51>`,
24  :ref:`PSE52 <posix_aep_pse52>`, and :ref:`PSE53 <posix_aep_pse53>`.
25* Bluetooth Host has been extended with support for the Nordic UART Service (NUS), Hands-free Audio
26  Gateway (AG), Advanced Audio Distribution Profile (A2DP), and Audio/Video Distribution Transport
27  Protocol (AVDTP).
28* Sensor abstraction model has been overhauled to adopt a
29  :ref:`read-then-decode approach <sensor-read-and-decode>` that enables more types of sensors and
30  data flows than the previous fetch/get APIs.
31* A new :ref:`LLEXT Extension Developer Kit (EDK) <llext_build_edk>` makes it easier to develop and
32  integrate custom extensions into Zephyr, including outside of the Zephyr tree.
33* :ref:`Native simulator <native_sim>` now supports leveraging the native host networking stack
34  without having to rely on a complex setup of the host environment.
35* Trusted Firmware-M (TF-M) 2.1.0 and Mbed TLS 3.6.0 have been integrated into Zephyr.
36  Both of these versions are LTS releases. What's more, :ref:`psa_crypto` has been adopted as a replacement
37  for TinyCrypt and provides enhanced security and performance.
38* A new experimental implementation of the :ref:`Precision Time Protocol <ptp_interface>` (PTP, IEEE
39  1588) allows to synchronize time across devices with sub-microsecond accuracy.
40* New documentation pages have been introduced to help developers setup their local development
41  environment for :ref:`vscode_ide` and :ref:`clion_ide`.
42
43An overview of the changes required or recommended when migrating your application from Zephyr
44v3.6.0 to Zephyr v3.7.0 can be found in the separate :ref:`migration guide<migration_3.7>`.
45
46While you may refer to release notes from previous 3.x releases for a full change log, other major
47enhancements and changes since previous LTS release, Zephyr 2.7.0, include:
48
49* Added support for Picolibc as the new default C library.
50* Added support for the following types of hardware peripherals:
51
52  * 1-Wire
53  * Battery Charger
54  * Cellular Modem
55  * Fuel Gauge
56  * GNSS
57  * Hardware Spinlock
58  * I3C
59  * RTC (Real Time Clock)
60  * SMBus
61
62* Added support for snippets. Snippets are common configuration settings that can be used across
63  platforms.
64* Added support for Linkable Loadable Extensions (LLEXT).
65* Summary of breaking changes (refer to release notes and migration guides from previous release
66  notes for more details):
67
68  * All Zephyr public headers have been moved to :file:`include/zephyr`, meaning they need to be
69    prefixed with ``<zephyr/...>`` when included.
70  * Pinmux API has been removed. Pin control needs to be used as its replacement, refer to
71    :ref:`pinctrl-guide` for more details.
72
73  * The following deprecated or experimental features have been removed:
74
75    * 6LoCAN
76    * civetweb module. See Zephyr 3.7's new :ref:`http_server_interface` as a replacement.
77    * tinycbor module. You may use zcbor as a replacement.
78
79The following sections provide detailed lists of changes by component.
80
81Security Vulnerability Related
82******************************
83The following CVEs are addressed by this release:
84
85More detailed information can be found in:
86https://docs.zephyrproject.org/latest/security/vulnerabilities.html
87
88* CVE-2024-3077 `Zephyr project bug tracker GHSA-gmfv-4vfh-2mh8
89  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gmfv-4vfh-2mh8>`_
90
91* CVE-2024-3332  `Zephyr project bug tracker GHSA-jmr9-xw2v-5vf4
92  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jmr9-xw2v-5vf4>`_
93
94* CVE-2024-4785: Under embargo until 2024-08-07
95
96* CVE-2024-5754: Under embargo until 2024-09-04
97
98* CVE-2024-5931: Under embargo until 2024-09-10
99
100* CVE-2024-6135: Under embargo until 2024-09-11
101
102* CVE-2024-6137: Under embargo until 2024-09-11
103
104* CVE-2024-6258: Under embargo until 2024-09-05
105
106* CVE-2024-6259: Under embargo until 2024-09-12
107
108* CVE-2024-6442: Under embargo until 2024-09-22
109
110* CVE-2024-6443: Under embargo until 2024-09-22
111
112* CVE-2024-6444: Under embargo until 2024-09-22
113
114API Changes
115***********
116
117Removed APIs in this release
118============================
119
120 * The Bluetooth subsystem specific debug symbols are removed. They have been replaced with the
121   Zephyr logging ones.
122
123 * Removed deprecated ``pcie_probe`` and ``pcie_bdf_lookup`` functions from the PCIe APIs.
124
125 * Removed deprecated ``CONFIG_EMUL_EEPROM_AT2X`` Kconfig option.
126
127 * Removed ``pm_device_state_lock``, ``pm_device_state_is_locked`` and ``pm_device_state_unlock``
128   functions from the Device PM APIs.
129
130 * Removed deprecated MCUmgr transport API functions: ``zephyr_smp_rx_req``,
131   ``zephyr_smp_alloc_rsp`` and ``zephyr_smp_free_buf``.
132
133Deprecated in this release
134==========================
135
136 * Bluetooth advertiser options :code:`BT_LE_ADV_OPT_USE_NAME` and
137   :code:`BT_LE_ADV_OPT_FORCE_NAME_IN_AD` are now deprecated. That means the following macro are
138   deprecated:
139
140    * :c:macro:`BT_LE_ADV_CONN_NAME`
141    * :c:macro:`BT_LE_ADV_CONN_NAME_AD`
142    * :c:macro:`BT_LE_ADV_NCONN_NAME`
143    * :c:macro:`BT_LE_EXT_ADV_CONN_NAME`
144    * :c:macro:`BT_LE_EXT_ADV_SCAN_NAME`
145    * :c:macro:`BT_LE_EXT_ADV_NCONN_NAME`
146    * :c:macro:`BT_LE_EXT_ADV_CODED_NCONN_NAME`
147
148   Application developers will now need to set the advertised name themselves by updating the
149   advertising data or the scan response data.
150
151* CAN
152
153  * Deprecated the :c:func:`can_calc_prescaler` API function, as it allows for bitrate
154    errors. Bitrate errors between nodes on the same network leads to them drifting apart after the
155    start-of-frame (SOF) synchronization has taken place, leading to bus errors.
156  * Deprecated the :c:func:`can_get_min_bitrate` and :c:func:`can_get_max_bitrate` API functions in
157    favor of :c:func:`can_get_bitrate_min` and :c:func:`can_get_bitrate_max`.
158  * Deprecated the :c:macro:`CAN_MAX_STD_ID` and :c:macro:`CAN_MAX_EXT_ID` macros in favor of
159    :c:macro:`CAN_STD_ID_MASK` and :c:macro:`CAN_EXT_ID_MASK`.
160
161* PM
162
163  * Deprecated :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE`. Similar behavior can be achieved
164    using :kconfig:option:`CONFIG_PM_DEVICE_SYSTEM_MANAGED`.
165
166.. _zephyr_3.7_posix_api_deprecations:
167
168* POSIX API
169
170  * Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` has been removed.
171  * Deprecated :c:macro:`EFD_IN_USE` and :c:macro:`EFD_FLAGS_SET` have been removed.
172
173  * In efforts to use Kconfig options that map directly to the Options and Option Groups in
174    IEEE 1003.1-2017, the following Kconfig options have been deprecated (replaced by):
175
176    * :kconfig:option:`CONFIG_EVENTFD_MAX` (:kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX`)
177    * :kconfig:option:`CONFIG_FNMATCH` (:kconfig:option:`CONFIG_POSIX_C_LIB_EXT`)
178    * :kconfig:option:`CONFIG_GETOPT` (:kconfig:option:`CONFIG_POSIX_C_LIB_EXT`)
179    * :kconfig:option:`CONFIG_MAX_PTHREAD_COUNT` (:kconfig:option:`CONFIG_POSIX_THREAD_THREADS_MAX`)
180    * :kconfig:option:`CONFIG_MAX_PTHREAD_KEY_COUNT` (:kconfig:option:`CONFIG_POSIX_THREAD_KEYS_MAX`)
181    * :kconfig:option:`CONFIG_MAX_TIMER_COUNT` (:kconfig:option:`CONFIG_POSIX_TIMER_MAX`)
182    * :kconfig:option:`CONFIG_POSIX_LIMITS_RTSIG_MAX` (:kconfig:option:`CONFIG_POSIX_RTSIG_MAX`)
183    * :kconfig:option:`CONFIG_POSIX_CLOCK` (:kconfig:option:`CONFIG_POSIX_CLOCK_SELECTION`,
184      :kconfig:option:`CONFIG_POSIX_CPUTIME`, :kconfig:option:`CONFIG_POSIX_MONOTONIC_CLOCK`,
185      :kconfig:option:`CONFIG_POSIX_TIMERS`, and :kconfig:option:`CONFIG_POSIX_TIMEOUTS`)
186    * :kconfig:option:`CONFIG_POSIX_FS` (:kconfig:option:`CONFIG_POSIX_FILE_SYSTEM`)
187    * :kconfig:option:`CONFIG_POSIX_MAX_FDS` (:kconfig:option:`CONFIG_POSIX_OPEN_MAX` and
188      :kconfig:option:`CONFIG_ZVFS_OPEN_MAX`)
189    * :kconfig:option:`CONFIG_POSIX_MAX_OPEN_FILES` (:kconfig:option:`CONFIG_POSIX_OPEN_MAX` and
190      :kconfig:option:`CONFIG_ZVFS_OPEN_MAX`)
191    * :kconfig:option:`CONFIG_POSIX_MQUEUE` (:kconfig:option:`CONFIG_POSIX_MESSAGE_PASSING`)
192    * :kconfig:option:`CONFIG_POSIX_PUTMSG` (:kconfig:option:`CONFIG_XOPEN_STREAMS`)
193    * :kconfig:option:`CONFIG_POSIX_SIGNAL` (:kconfig:option:`CONFIG_POSIX_SIGNALS`)
194    * :kconfig:option:`CONFIG_POSIX_SYSCONF` (:kconfig:option:`CONFIG_POSIX_SINGLE_PROCESS`)
195    * :kconfig:option:`CONFIG_POSIX_UNAME` (:kconfig:option:`CONFIG_POSIX_SINGLE_PROCESS`)
196    * :kconfig:option:`CONFIG_PTHREAD` (:kconfig:option:`CONFIG_POSIX_THREADS`)
197    * :kconfig:option:`CONFIG_PTHREAD_BARRIER` (:kconfig:option:`CONFIG_POSIX_BARRIERS`)
198    * :kconfig:option:`CONFIG_PTHREAD_COND` (:kconfig:option:`CONFIG_POSIX_THREADS`)
199    * :kconfig:option:`CONFIG_PTHREAD_IPC` (:kconfig:option:`CONFIG_POSIX_THREADS`)
200    * :kconfig:option:`CONFIG_PTHREAD_KEY` (:kconfig:option:`CONFIG_POSIX_THREADS`)
201    * :kconfig:option:`CONFIG_PTHREAD_MUTEX` (:kconfig:option:`CONFIG_POSIX_THREADS`)
202    * :kconfig:option:`CONFIG_PTHREAD_RWLOCK` (:kconfig:option:`CONFIG_POSIX_READER_WRITER_LOCKS`)
203    * :kconfig:option:`CONFIG_PTHREAD_SPINLOCK` (:kconfig:option:`CONFIG_POSIX_SPIN_LOCKS`)
204    * :kconfig:option:`CONFIG_SEM_NAMELEN_MAX` (:kconfig:option:`CONFIG_POSIX_SEM_NAMELEN_MAX`)
205    * :kconfig:option:`CONFIG_SEM_VALUE_MAX` (:kconfig:option:`CONFIG_POSIX_SEM_VALUE_MAX`)
206    * :kconfig:option:`CONFIG_TIMER` (:kconfig:option:`CONFIG_POSIX_TIMERS`)
207    * :kconfig:option:`CONFIG_TIMER_DELAYTIMER_MAX` (:kconfig:option:`CONFIG_POSIX_DELAYTIMER_MAX`)
208
209    Please see the :ref:`POSIX API migration guide <zephyr_3.7_posix_api_migration>`.
210
211 * SPI
212
213  * Deprecated :c:func:`spi_is_ready` API function has been removed.
214  * Deprecated :c:func:`spi_transceive_async` API function has been removed.
215  * Deprecated :c:func:`spi_read_async` API function has been removed.
216  * Deprecated :c:func:`spi_write_async` API function has been removed.
217
218Architectures
219*************
220
221* ARC
222
223  * Added ARC MWDT toolchain support for ARC-V targets
224  * Added HW memory barrier API support for multicore targets
225  * Enabled TLS by default if C++ is used in case of ARC MWDT toolchain
226  * Fixed the issue when mbedtls failed to build with ARC MWDT toolchain & minimal LibC due to
227    incorrect define which mark support of bounds-checking interfaces C library extension
228  * Fixed device deferred initialization in case of ARC MWDT toolchain
229
230* ARM
231
232  * Added initial support for Cortex-M85 Core
233
234* ARM64
235
236  * Implemented symbol names in the backtraces, enable by selecting :kconfig:option:`CONFIG_SYMTAB`
237
238  * Add compiler tuning for Cortex-R82
239
240* RISC-V
241
242  * The fatal error message triggered from a fault now contains the callee-saved-registers states.
243
244  * Implemented stack unwinding
245
246    * Frame-pointer can be selected to enable precise stack traces at the expense of slightly
247      increased size and decreased speed.
248
249    * Symbol names can be enabled by selecting :kconfig:option:`CONFIG_EXCEPTION_STACK_TRACE_SYMTAB`
250
251* Xtensa
252
253  * Added support to save/restore HiFi AudioEngine registers.
254
255  * Added support to utilize MPU.
256
257  * Added support to automatically generate interrupt handlers.
258
259  * Added support to generate vector table at build time to be included in the linker script.
260
261  * Added kconfig :kconfig:option:`CONFIG_XTENSA_BREAK_ON_UNRECOVERABLE_EXCEPTIONS` to guard
262    using break instruction for unrecoverable exceptions. Enabling the break instruction via
263    this kconfig may result in an infinite interrupt storm which may hinder debugging efforts.
264
265  * Fixed an issue where passing the 7th argument via syscall was handled incorrectly.
266
267  * Fixed an issue where :c:func:`arch_user_string_nlen` accessing unmapped memory resulted
268    in an unrecoverable exception.
269
270Kernel
271******
272
273  * Added :c:func:`k_uptime_seconds` function to simplify ``k_uptime_get() / 1000`` usage.
274
275  * Added :c:func:`k_realloc`, that uses kernel heap to implement traditional :c:func:`realloc`
276    semantics.
277
278  * Devices can now store devicetree metadata such as nodelabels by turning on
279    :kconfig:option:`CONFIG_DEVICE_DT_METADATA`. This option may be useful in
280    e.g. shells as devices can be obtained using human-friendly names thanks to
281    APIs like :c:func:`device_get_by_dt_nodelabel`.
282
283  * Any device initialization can be deferred if its associated devicetree node
284    has the special ``zephyr,deferred-init`` property set. The device can be
285    initialized later in time by using :c:func:`device_init`.
286
287  * The declaration of statically allocated thread stacks has been updated to utilize
288    :c:macro:`K_THREAD_STACK_LEN` for both single thread stack declaration and array thread
289    stack declarations. This ensures correct alignment for all thread stacks. For user
290    threads, this may increase the size of the statically allocated stack objects depending
291    on architecture alignment requirements.
292
293  * Fix an edge case deadlock in :c:func:`k_thread_abort` (and join)
294    where racing ISRs on SMP systems could become stuck spinning to
295    signal each other's interrupted threads.
296
297  * Fix a bug where :kconfig:option:`CONFIG_SCHED_SCALABLE` and
298    :kconfig:option:`CONFIG_SCHED_DEADLINE` would corrupt the
299    scheduling queue when used together.
300
301Bluetooth
302*********
303
304* Audio
305
306  * Removed ``err`` from :c:struct:`bt_bap_broadcast_assistant_cb.recv_state_removed` as it was
307    redundant.
308
309  * The broadcast_audio_assistant sample has been renamed to bap_broadcast_assistant.
310    The broadcast_audio_sink sample has been renamed to bap_broadcast_sink.
311    The broadcast_audio_source sample has been renamed to bap_broadcast_source.
312    The unicast_audio_client sample has been renamed to bap_unicast_client.
313    The unicast_audio_server sample has been renamed to bap_unicast_server.
314    The public_broadcast_sink sample has been renamed to pbp_public_broadcast_sink.
315    The public_broadcast_source sample has been renamed to pbp_public_broadcast_source.
316
317  * The CAP Commander and CAP Initiator now no longer require CAS to be discovered for
318    :code:`BT_CAP_SET_TYPE_AD_HOC` sets. This allows applications to use these APIs on e.g.
319    BAP Unicast Servers that do not implement the CAP Acceptor role.
320
321* Host
322
323  * Added Nordic UART Service (NUS), enabled by the :kconfig:option:`CONFIG_BT_ZEPHYR_NUS`.
324    This Service exposes the ability to declare multiple instances of the GATT service,
325    allowing multiple serial endpoints to be used for different purposes.
326
327  * Implemented Hands-free Audio Gateway (AG), enabled by the :kconfig:option:`CONFIG_BT_HFP_AG`.
328    It works as a device that is the gateway of the audio. The typical device acting as Audio
329    Gateway is a cellular phone. It controls the device (Hands-free Unit), that is the remote
330    audio input and output mechanism.
331
332  * Implemented Advanced Audio Distribution Profile (A2DP) and Audio/Video Distribution Transport
333    Protocol (AVDTP), A2DP is enabled by :kconfig:option:`CONFIG_BT_A2DP`, AVDTP is enabled
334    by :kconfig:option:`CONFIG_BT_AVDTP`. They implement the protocols and procedures that
335    realize distribution of audio content of high quality in mono, stereo, or multi-channel modes.
336    A typical use case is the streaming of music content from a stereo music player to headphones
337    or speakers. The audio data is compressed in a proper format for efficient use of the limited
338    bandwidth.
339
340  * Reworked the transmission path for data and commands. The "BT TX" thread has been removed, along
341    with the buffer pools for HCI fragments and L2CAP segments. All communication with the
342    Controller is now exclusively done in the system workqueue context.
343
344  * :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER` and
345    :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER` now depend on
346    :kconfig:option:`CONFIG_BT_CONN` as they do not work without connections.
347
348  * Improve :c:func:`bt_foreach_bond` to support Bluetooth Classic key traversal.
349
350* HCI Drivers
351
352  * Completely redesigned HCI driver interface. See the Bluetooth HCI section in
353    :ref:`migration_3.7` for more information.
354  * Added support for Ambiq Apollo3 Blue series.
355  * Added support for NXP RW61x.
356  * Added support for Infineon CYW208XX.
357  * Added support for Renesas SmartBond DA1469x.
358  * Removed unmaintained B91 driver.
359  * Added support for NXP IW612 on boards mimxrt1170_evkb and mimxrt1040_evk.
360    It can be enabled by :kconfig:option:`CONFIG_BT_NXP_NW612`.
361
362Boards & SoC Support
363********************
364
365* Added support for these SoC series:
366
367  * Added support for Ambiq Apollo3 Blue and Apollo3 Blue Plus SoC series.
368  * Added support for Synopsys ARC-V RMX1xx simulation platform.
369  * Added support for STM32H7R/S SoC series.
370  * Added support for NXP mke15z7, mke17z7, mke17z9, MCXNx4x, RW61x
371  * Added support for Analog Devices MAX32 SoC series.
372  * Added support for Infineon Technologies AIROC |trade| CYW20829 Bluetooth LE SoC series.
373  * Added support for MediaTek MT8195 Audio DSPs
374  * Added support for Nuvoton Numaker M2L31X SoC series.
375  * Added support for the Microchip PolarFire ICICLE Kit SMP variant.
376  * Added support for Renesas RA8 series SoC.
377
378* Made these changes in other SoC series:
379
380  * Intel ACE Audio DSP: Use dedicated registers to report boot status instead of arbitrary memory.
381  * ITE: Rename the Kconfig symbol for all ITE SoC variants.
382  * STM32: Enabled ART Accelerator, I-cache, D-cache and prefetch on compatible series.
383  * STM32H5: Added support for Stop mode and :kconfig:option:`CONFIG_PM`.
384  * STM32WL: Decreased Sub-GHz SPI frequency from 12 to 8MHz.
385  * STM32C0: Added support for :kconfig:option:`CONFIG_POWEROFF`.
386  * STM32U5: Added support for Stop3 mode.
387  * Synopsys:
388
389    * nsim: split nsim platform for arc_classic (ARCv2 and ARCv3 ISA based) and arc_v (RISC-V ISA based)
390    * nsim/nsim_hs5x/smp: align sys clock frequency with other SMP nSIM configs
391
392  * NXP IMX8M: added resource domain controller support
393  * NXP s32k146: set RTC clock source to internal oscillator
394  * GD32F4XX: Fixed an incorrect uart4 irq number.
395  * Nordic nRF54L: Added support for the FLPR (fast lightweight processor) RISC-V CPU.
396  * Espressif: Removed idf-bootloader dependency from all ESP32 SoC variants.
397  * Espressif: Added Simple boot support for ESP32 SoC variants, which allows loading application
398    using a single binary image without a 2nd stage bootloader.
399  * Espressif: Re-worked and optimized all SoCs memory map.
400  * LiteX:
401
402    * Added support for :c:func:`sys_arch_reboot()`.
403    * :kconfig:option:`CONFIG_RISCV_ISA_EXT_A` is no longer erroneously y-selected.
404  * rp2040: The proprietary UART driver has been discontinued and replaced with PL011.
405
406  * Renesas RZ/T2M: Added default values for System Clock Control register.
407
408* Added support for these boards:
409
410  * Added support for :zephyr:board:`Ambiq Apollo3 Blue board <apollo3_evb>`: ``apollo3_evb``.
411  * Added support for :zephyr:board:`Ambiq Apollo3 Blue Plus board <apollo3p_evb>`: ``apollo3p_evb``.
412  * Added support for :zephyr:board:`Raspberry Pi 5 board <rpi_5>`: ``rpi_5``.
413  * Added support for :zephyr:board:`Seeed Studio XIAO RP2040 board <xiao_rp2040>`: ``xiao_rp2040``.
414  * Added support for :zephyr:board:`Mikroe RA4M1 Clicker board <mikroe_clicker_ra4m1>`: ``mikroe_clicker_ra4m1``.
415  * Added support for :ref:`Arduino UNO R4 WiFi board <arduino_uno_r4>`: ``arduino_uno_r4_wifi``.
416  * Added support for :ref:`Renesas EK-RA8M1 board <ek_ra8m1>`: ``ek_ra8m1``.
417  * Added support for :zephyr:board:`ST Nucleo H533RE <nucleo_h533re>`: ``nucleo_h533re``.
418  * Added support for :zephyr:board:`ST STM32C0116-DK Discovery Kit <stm32c0116_dk>`: ``stm32c0116_dk``.
419  * Added support for :zephyr:board:`ST STM32H745I Discovery <stm32h745i_disco>`: ``stm32h745i_disco``.
420  * Added support for :zephyr:board:`ST STM32H7S78-DK Discovery <stm32h7s78_dk>`: ``stm32h7s78_dk``.
421  * Added support for :zephyr:board:`ST STM32L152CDISCOVERY board <stm32l1_disco>`: ``stm32l152c_disco``.
422  * Added support for :zephyr:board:`ST STEVAL STWINBX1 Development kit <steval_stwinbx1>`: ``steval_stwinbx1``.
423  * Added support for NXP boards: ``frdm_mcxn947``, ``ke17z512``, ``rd_rw612_bga``, ``frdm_rw612``, ``frdm_ke15z``, ``frdm_ke17z``
424  * Added support for :zephyr:board:`Synopsys ARC-V RMX1xx nSIM-based simulation platform <nsim_arc_v>`: ``nsim_arc_v/rmx100``.
425  * Added support for :zephyr:board:`Analog Devices MAX32690EVKIT <max32690evkit>`: ``max32690evkit``.
426  * Added support for :zephyr:board:`Analog Devices MAX32680EVKIT <max32680evkit>`: ``max32680evkit``.
427  * Added support for :zephyr:board:`Analog Devices MAX32672EVKIT <max32672evkit>`: ``max32672evkit``.
428  * Added support for :zephyr:board:`Analog Devices MAX32672FTHR <max32672fthr>`: ``max32672fthr``.
429  * Added support for :zephyr:board:`Analog Devices MAX32670EVKIT <max32670evkit>`: ``max32670evkit``.
430  * Added support for :zephyr:board:`Analog Devices MAX32655EVKIT <max32655evkit>`: ``max32655evkit``.
431  * Added support for :zephyr:board:`Analog Devices MAX32655FTHR <max32655fthr>`: ``max32655fthr``.
432  * Added support for :zephyr:board:`Analog Devices AD-APARD32690-SL <apard32690>`: ``ad_apard32690_sl``.
433  * Added support for :zephyr:board:`Infineon Technologies CYW920829M2EVK-02 <cyw920829m2evk_02>`: ``cyw920829m2evk_02``.
434  * Added support for :zephyr:board:`Nuvoton Numaker M2L31KI board <numaker_m2l31ki>`: ``numaker_m2l31ki``.
435  * Added support for :zephyr:board:`Espressif ESP32-S2 DevKit-C <esp32s2_devkitc>`: ``esp32s2_devkitc``.
436  * Added support for :zephyr:board:`Espressif ESP32-S3 DevKit-C <esp32s3_devkitc>`: ``esp32s3_devkitc``.
437  * Added support for :zephyr:board:`Espressif ESP32-C6 DevKit-C <esp32c6_devkitc>`: ``esp32c6_devkitc``.
438  * Added support for :zephyr:board:`Waveshare ESP32-S3-Touch-LCD-1.28 <esp32s3_touch_lcd_1_28>`: ``esp32s3_touch_lcd_1_28``.
439  * Added support for :zephyr:board:`M5Stack ATOM Lite <m5stack_atom_lite>`: ``m5stack_atom_lite``.
440  * Added support for :zephyr:board:`CTHINGS.CO Connectivity Card nRF52840 <ctcc>`: ``ctcc``.
441
442* Made these board changes:
443
444  * On :zephyr:board:`ST STM32H7B3I Discovery Kit <stm32h7b3i_dk>`: ``stm32h7b3i_dk``,
445    enabled full cache management, Chrom-ART, double frame buffer and full refresh for
446    optimal LVGL performance.
447  * On ST STM32 boards, stm32cubeprogrammer runner can now be used to program external
448    flash using ``--extload`` option.
449  * Add HEX file support for Linkserver to all NXP boards
450  * Updated the Linkserver west runner to reflect changes to the CLI of LinkServer v1.5.xx
451  * Add LinkServer support to NXP ``mimxrt1010_evk``, ``mimxrt1160_evk``, ``frdm_rw612``, ``rd_rw612_bga``, ``frdm_mcxn947``
452  * Introduced the simulated :ref:`nrf54l15bsim<nrf54l15bsim>` target.
453  * The nrf5x bsim targets now support BT LE Coded PHY.
454  * LLVM fuzzing support has been refactored while adding support for it in native_sim.
455  * nRF54H20 PDK (pre-release) converted to :ref:`nrf54h20dk_nrf54h20`
456  * PPR core target in :ref:`nrf54h20dk_nrf54h20` runs from RAM by default. A
457    new ``xip`` variant has been introduced which runs from MRAM (XIP).
458  * Refactored :zephyr:board:`beagleconnect_freedom` external antenna switch handling.
459  * Added Arduino dts node labels for the nRF5340 Audio DK.
460  * Changed the default revision of the nRF54L15 PDK from 0.2.1 to 0.3.0.
461  * In boards based on the nRF5340 SoC, replaced direct accesses to the register
462    that controls the network core Force-OFF signal with a module that uses an
463    on-off manager to keep track of the network core use and exposes its API
464    in ``<nrf53_cpunet_mgmt.h>``.
465  * Laird Connectivity boards are rebranded to Ezurio.
466
467* Added support for the following shields:
468
469  * :ref:`adafruit_2_8_tft_touch_v2` (``adafruit_2_8_tft_touch_v2``)
470  * :ref:`adafruit_neopixel_grid_bff` (``adafruit_neopixel_grid_bff``)
471  * :ref:`arduino_uno_click` (``arduino_uno_click``)
472  * :ref:`dvp_fpc24_mt9m114` (``dvp_fpc24_mt9m114``)
473  * :ref:`lcd_par_s035` (``lcd_par_s035``)
474  * :ref:`mikroe_weather_click` (``mikroe_weather_click``)
475  * :ref:`nxp_btb44_ov5640` (``nxp_btb44_ov5640``)
476  * :ref:`reyax_lora` (``reyax_lora``)
477  * :ref:`rk043fn02h_ct` (``rk043fn02h_ct``)
478  * :ref:`rk043fn66hs_ctg` (``rk043fn66hs_ctg``)
479  * :ref:`rpi_pico_uno_flexypin` (``rpi_pico_uno_flexypin``)
480  * :ref:`seeed_xiao_expansion_board` (``seeed_xiao_expansion_board``)
481  * :ref:`seeed_xiao_round_display` (``seeed_xiao_round_display``)
482  * :ref:`sparkfun_carrier_asset_tracker` (``sparkfun_carrier_asset_tracker``)
483  * :ref:`st_b_lcd40_dsi1_mb1166` (``st_b_lcd40_dsi1_mb1166``)
484  * :ref:`waveshare_epaper` (``waveshare_epaper``)
485  * :ref:`x_nucleo_bnrg2a1` (``x_nucleo_bnrg2a1``)
486
487Build system and Infrastructure
488*******************************
489
490  * CI-enabled blackbox tests were added to verify the correctness of most Twister flags.
491
492  * A ``socs`` folder for applications has been introduced that allows for Kconfig fragments and
493    devicetree overlays that should apply to any board target using a particular SoC and board
494    qualifier (:github:`70418`). Support has also been added to sysbuild (:github:`71320`).
495
496  * :ref:`Board/SoC flashing configuration<flashing-soc-board-config>` settings have been added
497    (:github:`69748`).
498
499  * Deprecated the global CSTD cmake property in favor of the :kconfig:option:`CONFIG_STD_C`
500    choice to select the C Standard version. Additionally, subsystems can select a minimum
501    required C Standard version, with, for example, :kconfig:option:`CONFIG_REQUIRES_STD_C11`.
502
503  * Fixed issue with passing UTF-8 configs to applications using sysbuild (:github:`74152`).
504
505  * Fixed issue whereby domain file in sysbuild projects would be loaded and used with outdated
506    information if sysbuild configuration was changed, and ``west flash`` was ran directly after
507    (:github:`73864`).
508
509  * Fixed issue with Zephyr modules not being listed in sysbuild if they did not have a Kconfig
510    file set (:github:`72070`).
511
512  * Added sysbuild ``SB_CONFIG_COMPILER_WARNINGS_AS_ERRORS`` Kconfig option to turn on
513    "warning as error" toolchain flags for all images, if set (:github:`70217`).
514
515  * Fixed issue whereby files used in a project (e.g. devicetree overlays or Kconfig fragments)
516    were not correctly watched and CMake would not reconfigure if they were changed
517    (:github:`74655`).
518
519  * Added flash support for Intel Hex files for the LinkServer runner.
520
521  * Added sysbuild ``sysbuild/CMakeLists.txt`` entry point and added support for
522    ``APPLICATION_CONFIG_DIR`` which allows for adjusting how sysbuild functions (:github:`72923`).
523
524  * Fixed issue with armfvp find path if it contained a colon-separated list (:github:`74868`).
525
526  * Fixed issue with version.cmake field sizes not being enforced (:github:`74357`).
527
528  * Fixed issue with sysbuild not clearing ``EXTRA_CONF_FILE`` before processing images which
529    prevented this option being passed on to the image (:github:`74082`).
530
531  * Added sysbuild root support which works similarly to the existing root module, adjusting paths
532    relative to ``APP_DIR`` (:github:`73390`).
533
534  * Added warning/error message for blobs that are missing (:github:`73051`).
535
536  * Fixed issue with correct python executable detection on some systems (:github:`72232`).
537
538  * Added support for enabling LTO for whole application (:github:`69519`).
539
540  * Fixed ``FILE_SUFFIX`` issues relating to double application of suffixes, non-application in
541    sysbuild and variable name clashes in CMake functions (:github:`70124`, :github:`71280`).
542
543  * Added support for new aggressive size optimisation flag (for GCC and Clang) using
544    :kconfig:option:`CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE` (:github:`70511`).
545
546  * Fixed issue with printing out ``BUILD_VERSION`` if it was empty (:github:`70970`).
547
548  * Fixed sysbuild issue of ``sysbuild_cache_set()`` cmake function wrongly detecting partial
549    matches for de-duplication (:github:`71381`).
550
551  * Fixed issue with detecting wrong ``VERSION`` file (:github:`71385`).
552
553  * Added support for disabling output disassembly having the source code in using
554    :kconfig:option:`CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE` (:github:`71535`).
555
556  * Twister now supports ``--flash-before`` parameter that allows flashing DUT before
557    opening serial port (:github:`47037`).
558
559Drivers and Sensors
560*******************
561
562* ADC
563
564  * Added ``ADC_DT_SPEC_*BY_NAME()`` macros to get ADC IO-channel information from DT by name.
565  * Added support for voltage biasing:
566
567    * Added a :kconfig:option:`CONFIG_ADC_CONFIGURABLE_VBIAS_PIN` selected by drivers that support
568      voltage biasing.
569    * Added a ``zephyr,vbias-pins`` property to the adc-controller base binding to describe voltage
570      bias pins.
571    * Implemented for the TI ADC114s08 ADC driver.
572  * Sample changes
573
574    * Renamed existing ADC sample to adc_dt.
575    * Added a new sample called adc_sequence that shows more of the runtime
576      :c:struct:`adc_sequence` features.
577  * New ADC Drivers
578
579    * Added driver for the ENE KB1200.
580    * Added driver for the NXP GAU ADC.
581  * ADI AD559x changes
582
583    * Added support for ADI's ad5593.
584    * Added I2C bus support for ADI ad559x.
585    * Added configuration of internal reference voltage value to ad559x to support
586      calls of :c:func:`adc_raw_to_millivolts()`.
587    * Fixed issue with driver initialization causing improper operation in the ad559x driver
588      regarding the availability of :kconfig:option:`CONFIG_THREAD_NAME`.
589    * Improved the ADC read efficiency and validation in ad559x driver.
590  * ESP32 changes
591
592    * Updated ESP32 ADC driver to work with version 5.1 of hal_espressif.
593    * Added support for DMA mode operation for ESP32S3 and ESP32C3.
594  * nRF changes
595
596    * Added support for nRF54L15 and nRF54H20 in the nrfx_saadc driver.
597    * Improved the nRF SAADC driver by disabling burst mode on unused channels, avoiding freezes.
598    * Fixed issue which allowed negative ADC readings in single-ended mode using the
599      ``adc_nrfx_saadc.c`` device driver.
600      Note that this fix prevents the nRF54H and nRF54L series from performing
601      8-bit resolution single-ended readings due to hardware limitations.
602  * NXP LPADC changes
603
604    * Enabled acquisition time feature in the NXP LPADC driver.
605    * Added support for regulator output as reference to NXP LPADC.
606    * Changed phandle type DT property ``nxp,reference-supply`` to phandle-array type DT property
607      ``nxp,references`` in ``nxp,lpc-lpadc`` binding. The NXP LPADC driver now supports passing
608      the reference voltage value by using ``nxp,references``.
609  * Smartbond changes
610
611    * Added support for power management to the Smartbond SDADC and GPADC drivers.
612    * Fixed support for :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME` in the Smartbond ADC driver.
613  * STM32 changes
614
615    * Fixed various issues with DMA support in the STM32 ADC driver.
616    * Added support for STM32H7R/S series.
617  * Other driver changes
618
619    * Added support for Nuvoton m2l31x in the numaker ADC driver.
620    * Fixed issue with configuration register access in the ads1119 driver.
621    * Fixed uninitialized value in kb1200 driver found in static analysis.
622    * Fixed issue with :c:func:`adc_raw_to_millivolts` returning half the actual voltage with
623      the tla2021 driver by correcting the reference voltage value.
624
625
626  * Added support for Nuvoton Numaker M2L31X series.
627
628* Battery
629
630  * Added ``re-charge-voltage-microvolt`` property to the ``battery`` binding. This allows to set
631    limit to automatically start charging again.
632
633* Battery backed up RAM
634
635  * Added support for STM32G0 and STM32H5 series.
636
637* CAN
638
639  * Extended support for automatic sample point location to also cover :c:func:`can_calc_timing` and
640    :c:func:`can_calc_timing_data`.
641  * Added optional ``min-bitrate`` devicetree property for CAN transceivers.
642  * Added devicetree macros :c:macro:`DT_CAN_TRANSCEIVER_MIN_BITRATE` and
643    :c:macro:`DT_INST_CAN_TRANSCEIVER_MIN_BITRATE` for getting the minimum supported bitrate of a CAN
644    transceiver.
645  * Added support for specifying the minimum bitrate supported by a CAN controller in the internal
646    ``CAN_DT_DRIVER_CONFIG_GET`` and ``CAN_DT_DRIVER_CONFIG_INST_GET`` macros.
647  * Added :c:func:`can_get_bitrate_min` and :c:func:`can_get_bitrate_max` for retrieving the minimum
648    and maximum supported bitrate for a given CAN controller/CAN transceiver combination, reflecting
649    that retrieving the bitrate limits can no longer fail. Deprecated the existing
650    :c:func:`can_get_max_bitrate` API function.
651  * Updated the CAN timing functions to take the minimum supported bitrate into consideration when
652    validating the bitrate.
653  * Made the ``sample-point`` and ``sample-point-data`` devicetree properties optional.
654  * Renamed the ``bus_speed`` and ``bus_speed_data`` fields of :c:struct:`can_driver_config` to
655    ``bitrate`` and ``bitrate_data``.
656  * Added driver for :dtcompatible:`nordic,nrf-can`.
657  * Added driver support for Numaker M2L31X to the :dtcompatible:`nuvoton,numaker-canfd` driver.
658  * Added host communication test suite.
659
660* Charger
661
662  * Added ``chgin-to-sys-current-limit-microamp`` property to ``maxim,max20335-charger``.
663  * Added ``system-voltage-min-threshold-microvolt`` property to ``maxim,max20335-charger``.
664  * Added ``re-charge-threshold-microvolt`` property to ``maxim,max20335-charger``.
665  * Added ``thermistor-monitoring-mode`` property to ``maxim,max20335-charger``.
666
667* Clock control
668
669  * Added support for Microcontroller Clock Output (MCO) on STM32H5 series.
670  * Added support for MSI clock on STM32WL series.
671  * Added driver for Analog Devices MAX32 SoC series.
672  * Added support for Nuvoton Numaker M2L31X series.
673  * Refactored ESP32 clock control driver to support ESP32-C6.
674  * In LiteX (:file:`drivers/clock_control/clock_control_litex.c`) added return code checking for
675    :c:func:`litex_clk_get_duty_cycle()` and :c:func:`litex_clk_get_clkout_divider`.
676
677* Counter
678
679  * Added support for Ambiq Apollo3 series.
680  * Added support for STM32H7R/S series.
681  * Added driver for LPTMR to NXP MCXN947
682  * Added the ``resolution`` property in ``nxp,lptmr`` binding to represent the maximum width
683    in bits the LPTMR peripheral uses for its counter.
684
685* DAC
686
687  * Added support for NXP RW SOC series DAC (:dtcompatible:`nxp,gau-dac`).
688  * Added support for Analog Devices AD5691 / AD5692 / AD5693 DACs
689    (:dtcompatible:`adi,ad5691`, :dtcompatible:`adi,ad5692` and :dtcompatible:`adi,ad5693`).
690  * Added support for Texas Instruments DACx0501 series DACs (:dtcompatible:`ti,dacx0501`).
691
692* Disk
693
694  * Support for eMMC devices was added to the STM32 SD driver. This can
695    be enabled with :kconfig:option:`CONFIG_SDMMC_STM32_EMMC`.
696  * Added a loopback disk driver, to expose a disk device backed by a file.
697    A file can be registered with the loopback disk driver using
698    :c:func:`loopback_disk_access_register`
699  * Added support for :c:macro:`DISK_IOCTL_CTRL_INIT` and
700    :c:macro:`DISK_IOCTL_CTRL_DEINIT` macros, which allow for initializing
701    and de-initializing a disk at runtime. This allows hotpluggable
702    disk devices (like SD cards) to be removed and reinserted at runtime.
703  * Added SDMMC support for STM32H5 series.
704
705* Display
706
707  * All in tree displays capable of supporting the :ref:`mipi_dbi_api` have
708    been converted to use it. GC9X01X, UC81XX, SSD16XX, ST7789V, ST7735R based
709    displays have been converted to this API. Boards using these displays will
710    need their devicetree updated, see the display section of
711    :ref:`migration_3.7` for examples of this process.
712  * Added driver for ST7796S display controller (:dtcompatible:`sitronix,st7796s`)
713  * Added support for :c:func:`display_read` API to ILI9XXX display driver,
714    which can be enabled with :kconfig:option:`CONFIG_ILI9XXX_READ`
715  * Added support for :c:func:`display_set_orientation` API to SSD16XXX
716    display driver
717  * Added driver for NT35510 MIPI-DSI display controller
718    (:dtcompatible:`frida,nt35510`)
719  * Added driver to abstract LED strip devices as displays
720    (:dtcompatible:`led-strip-matrix`)
721  * Added support for :c:func:`display_set_pixel_format` API to NXP eLCDIF
722    driver. ARGB8888, RGB888, and BGR565 formats are supported.
723  * Added support for inverting color at runtime to the SSD1306 driver, via
724    the :c:func:`display_set_pixel_format` API.
725  * Inversion mode can now be disabled in the ST7789V driver
726    (:dtcompatible:`sitronix,st7789v`) using the ``inversion-off`` property.
727  * Added support for NXP MCXNx4x
728
729* DMA
730
731  * Error callback configuration renamed to better signal enable/disable status
732  * Add support to NXP MCXN947
733
734* DMIC
735
736  * Added support for NXP ``rd_rw612_bga``
737
738* Entropy
739
740  * Added support for STM32H7R/S series.
741
742* EEPROM
743
744  * Added property for specifying ``address-width`` to :dtcompatible:`zephyr,i2c-target-eeprom`.
745
746* eSPI
747
748  * Renamed eSPI virtual wire direction macros, enum values and Kconfig to match the new
749    terminology in eSPI 1.5 specification.
750
751* Ethernet
752
753  * Introduced :kconfig:option:`CONFIG_ETH_DRIVER_RAW_MODE`. This option allows building
754    ethernet drivers without the zephyr L2 ethernet layer.
755  * Removed the ethernet-fixed-link DT binding.
756  * Removed VLAN handling from ethernet drivers since it is now handled by the
757    generic ethernet L2 code.
758  * Implemented/reworked HW MAC Address filtering in the eth_mcux, eth_nxp_enet,
759    and eth_nxp_s32_gmac, eth_stm32, and eth_nxp_s32_netc drivers.
760  * New Drivers
761
762    * Added new eth_nxp_enet_qos driver for the ethernet controller present on NXP MCXN SOCs.
763    * Added support for adin1100 phy.
764    * Added support for the Realtek RTL8211F phy.
765  * NXP ENET driver changes
766
767    * eth_nxp_enet driver is no longer experimental.
768    * Deprecated eth_mcux driver.
769    * All boards and SOCs with :dtcompatible:`nxp,kinetis-ethernet` compatible nodes
770      reworked to use the new :dtcompatible:`nxp,enet` binding.
771    * Added support for network device power management with nxp_enet driver on Kinetis platforms.
772    * Converted eth_nxp_enet driver to use a dedicated workqueue for RX
773      managed by the kernel rather than a manual infinite loop.
774    * Disabled hardware checksum acceleration when IPV6 is enabled with eth_nxp_enet, since
775      the hardware does not support accelerating ICMPv6 checksums.
776    * Added support for :dtcompatible:`nxp,enet1g`.
777    * Added support to use a fused MAC address for nxp_enet MAC on some platforms.
778    * Fixed issue with LAA bit not being set and a confusing description of the nxp,unique-mac
779      property used with the nxp_enet driver.
780    * Fixed cache maintain being enabled when using a noncache DMA buffer in nxp_enet driver.
781    * Added MMIO mappings to nxp_enet driver.
782    * Clarified DSA supported with eth_nxp_enet.
783  * NXP S32 ethernet changes
784
785    * The eth_nxp_s32_gmac driver now implies :kconfig:option:`CONFIG_MDIO`.
786    * eth_nxp_s32_netc driver updated to use new MBOX API.
787  * Adin2111 driver changes
788
789    * Corrected the bitfield position of IAMSK1 TX_READY_MASK in adin2111 driver.
790    * Changed adin2111 driver to always append crc32 to the end of the frame.
791    * Adjusted eth_adin2111 driver to have the appropriate multicaster filter mask.
792    * Fixed the "generic SPI without crc8" mode of adin2111 driver.
793    * Added Open Alliance SPI protocol support to the adin2111 driver.
794    * Added custom driver extension APIs for adin2111 driver.
795    * Enabled support for promiscuous mode in the adin2111 driver.
796    * Moved OA buffers out of device data of the adin2111 driver to save ~32KB of space
797      when using the generic SPI protocol.
798    * Fixed a build warning in eth_adin2111 driver on 64-bit platforms.
799    * Various small changes to adin2111 driver.
800  * STM32 ethernet driver changes
801
802    * Added support for PTP on compatible STM32 series (STM32F7, STM32H5 and STM32H7).
803    * Changed eth_stm32 to use phy APIs to access the phy to avoid collisions when multitasking.
804    * Removed legacy STM32Cube HAL API support for STM32 F4, F7, and H7 series.
805    * Added support for RX/TX timestamping to eth_stm32_hal driver.
806  * ESP32 ethernet driver changes
807
808    * Added support to esp32 ethernet driver to set the MAC address during runtime.
809    * Updated esp32 ethernet driver to work with version 5.1 of hal_espressif.
810    * Fixed build of esp32 ethernet driver when :kconfig:option:`CONFIG_NET_STATISTICS` is enabled.
811    * Fixed ESP32 ethernet driver not clocking external PHY correctly over GPIO.
812  * Other ethernet driver changes
813
814    * Added link status detection to the w5500 ethernet driver, configurable via Kconfig.
815    * Added ability to set MAC address at runtime with eth_liteeth driver.
816    * Fixed issue in the eth_stellaris driver where it was previously not taken into account
817      that the number of interrupts received by the driver may be less than the number of
818      data packets received by the ethernet controller.
819    * Added a devicetree property for the enc28j60 to set the RX filter.
820    * Fixed ESTAT TXABRT bit not being cleared on error in the enc28j60 driver.
821    * Added conditions to enable ptp_clock driver implementation for the native_posix
822      ethernet driver when PTP subsystem is enabled.
823    * Fixed DSA driver for KSZ8xxx to correctly initialize LAN devices.
824    * Fixed the wrong register address being used for tail tag enable in ksz8863.
825  * Phy driver changes
826
827    * Fixed various control issues with the KSZ8081 phy driver regarding
828      resets, autonegotiation, link detection, and missing/spamming logging messages.
829    * Changed property names of the reset and interrupt gpios in the KSZ8081 DT binding.
830    * Fixed bus fault in phy_mii driver when using fixed-link mode.
831
832* Flash
833
834  * Added support for Ambiq Apollo3 series.
835  * Added support for multiple instances of the SPI NOR driver (spi_nor.c).
836  * Added preliminary support for non-erase devices with introduction of
837    device capabilities to :c:struct:`flash_parameters` and the utility function
838    :c:func:`flash_params_get_erase_cap` that allows to obtain the erase type
839    provided by a device; added :c:macro:`FLASH_ERASE_C_EXPLICIT`, which is
840    currently the only supported erase type and is set by all flash devices.
841  * Added the :c:func:`flash_flatten` function that can be used on devices,
842    with or without erase requirement, when erase has been used not for preparing
843    a device for a random data write, but rather to remove/scramble data from
844    that device.
845  * Added the :c:func:`flash_fill` utility function which allows to write
846    a single value across a provided range in a selected device.
847  * Added support for RRAM on nrf54l15 devices.
848  * Added support of non busy wait polling in STM32 OSPI driver.
849  * Added support for STM32 XSPI external NOR flash driver (:dtcompatible:`st,stm32-xspi-nor`).
850  * Added support for XIP on external NOR flash in STM32 OSPI, QSPI and XSPI driver.
851  * STM32 OSPI driver: clk, dqs, ncs ports can now be configured by device tree
852    configurable (see :dtcompatible:`st,stm32-ospi`).
853  * Added FlexSPI support to NXP MCXN947
854  * Added support for Nuvoton Numaker M2L31X series.
855
856* Fuel Gauge
857
858  * max17048: Corrected voltage units from mV to uV.
859
860* GNSS
861
862  * Added GNSS device driver API test suite.
863  * Added support for the u-blox UBX protocol.
864  * Added device driver for the u-blox M8 GNSS modem (:dtcompatible:`u-blox,m8`).
865  * Added device driver for the Luatos Air530z GNSS modem (:dtcompatible:`luatos,air530z`).
866
867* GPIO
868
869  * Added support for Ambiq Apollo3 series.
870  * Added Broadcom Set-top box(brcmstb) SoC GPIO driver.
871  * Added :c:macro:`STM32_GPIO_WKUP` flag which allows to configure specific pins as wakeup source
872    from Power Off state on STM32 L4, U5, WB, & WL SoC series.
873  * Added driver for Analog Devices MAX32 SoC series.
874  * Added support for Nuvoton Numaker M2L31X series.
875  * Added interrupt support to the Renesas RZ/T2M GPIO driver (:dtcompatible:`renesas,rzt2m-gpio`).
876
877* Hardware info
878
879  * Added device EUI64 ID support and implementation for STM32WB, STM32WBA and STM32WL series.
880
881* I2C
882
883  * Added support for Ambiq Apollo3 series.
884  * In STM32 V2 driver, added support for a new :kconfig:option:`CONFIG_I2C_STM32_V2_TIMING`
885    which automatically computes bus timings which should be used to configure the hardware
886    block depending on the clock configuration in use. To avoid embedding this heavy algorithm
887    in a production application, a dedicated sample :zephyr:code-sample:`stm32_i2c_v2_timings` is provided
888    to get the output of the algorithm. Once bus timings configuration is available,
889    :kconfig:option:`CONFIG_I2C_STM32_V2_TIMING` could be disabled, bus timings configured
890    using device tree.
891  * Added support for STM32H5 series.
892  * Added support to NXP MCXN947
893  * Added driver for Analog Devices MAX32 SoC series.
894  * Added support for Nuvoton Numaker M2L31X series.
895  * LiteX I2C driver (:file:`drivers/i2c/i2c_litex.c`):
896
897    * Added support for bitrate setting from the devicetree.
898    * Added :c:func:`i2c_litex_recover_bus()` and :c:func:`i2c_litex_get_config()` API
899      implementations.
900
901* I2S
902
903  * Added support for STM32H5 series.
904  * Extended the MCUX Flexcomm driver to support additional channels and formats.
905  * Added support for Nordic nRF54L Series.
906  * Fixed divider calculations in the nRF I2S driver.
907
908* I3C
909
910  * Added shell support for querying bus and CCC commands.
911
912  * Added driver to support the I3C controller on NPCX.
913
914  * Improvements and bug fixes on :dtcompatible:`nxp,mcux-i3c`, including handling the bus
915    being busy more gracefully instead of simply returning errors.
916
917* Input
918
919  * New drivers: :dtcompatible:`adc-keys`, :dtcompatible:`chipsemi,chsc6x`,
920    :dtcompatible:`cirque,pinnacle`, :dtcompatible:`futaba,sbus`,
921    :dtcompatible:`pixart,pat912x`, :dtcompatible:`pixart,paw32xx`,
922    :dtcompatible:`pixart,pmw3610` and :dtcompatible:`sitronix,cf1133`.
923  * Migrated :dtcompatible:`holtek,ht16k33` and
924    :dtcompatible:`microchip,xec-kbd` from kscan to input subsystem.
925
926* LED
927
928  * Added device completion to LED shell commands and made the ``get_info`` command display
929    colors as strings.
930
931  * Added driver for Lumissil Microsystems (a division of ISSI) IS31FL3194 controller
932    (:dtcompatible:`issi,is31fl3194`).
933
934* LED Strip
935
936  * The ``chain-length`` and ``color-mapping`` properties have been added to all LED strip
937    bindings.
938
939  * The length of a strip is now checked before updating it, an error is returned if the provided
940    data is too long.
941
942  * A length function has been added which returns the length of the LED strip
943    (:c:func:`led_strip_length`).
944
945  * The update channels function is now optional and can be left unimplemented.
946
947  * The ``in-gpios`` and ``output-pin`` properties of the respective
948    :dtcompatible:`worldsemi,ws2812-gpio` and :dtcompatible:`worldsemi,ws2812-rpi_pico-pio`
949    devicetree bindings have been renamed to ``gpios``.
950
951  * Removed ``CONFIG_WS2812_STRIP`` and ``CONFIG_WS2812_STRIP_DRIVER`` Kconfig options. They became
952    useless after refactoring.
953
954  * Added driver for Texas Instruments TLC59731 RGB controller.
955
956* LoRa
957
958  * Added driver for Reyax LoRa module
959
960* Mailbox
961
962  * Added support for HSEM based STM32 driver.
963
964* MDIO
965
966  * Made the ``bus_enable`` and ``bus_disable`` functions optional for drivers to
967    implement, and removed empty implementation from many drivers.
968  * Added NXP ENET QOS MDIO controller driver.
969  * Fixed but with NXP ENET MDIO driver blocking the system workqueue.
970  * :kconfig:option:`CONFIG_MDIO_NXP_ENET_TIMEOUT` units change to microseconds.
971  * Added support for STM32 MDIO controller driver.
972
973* MFD
974
975  * New driver :dtcompatible:`nxp,lp-flexcomm`.
976  * New driver :dtcompatible:`rohm,bd8lb600fs`.
977  * New driver :dtcompatible:`maxim,max31790`.
978  * New driver :dtcompatible:`infineon,tle9104`
979  * New driver :dtcompatible:`adi,ad559x`
980  * Added option to disable N_VBUSEN for :dtcompatible:`x-powers,axp192`.
981  * Added GPIO input edge events for :dtcompatible:`nordic,npm1300`.
982  * Added long press reset configuration for :dtcompatible:`nordic,npm1300`.
983  * Fixed initialisation of hysteretic mode for :dtcompatible:`nordic,npm6001`.
984
985* Modem
986
987  * Removed deprecated ``GSM_PPP`` driver along with its dts compatible ``zephyr,gsm-ppp``.
988
989  * Removed deprecated ``UART_MUX`` and ``GSM_MUX`` previously used by ``GSM_PPP``.
990
991  * Removed support for dts compatible ``zephyr,gsm-ppp`` from ``MODEM_CELLULAR`` driver.
992
993  * Removed integration with ``UART_MUX`` from ``MODEM_IFACE_UART_INTERRUPT`` module.
994
995  * Removed integration with ``UART_MUX`` from ``MODEM_SHELL`` module.
996
997  * Implemented modem pipelinks in ``MODEM_CELLULAR`` driver for additional DLCI channels
998    available by the different modems. This includes generic AT mode DLCI channels, named
999    ``user_pipe_<index>`` and DLCI channels reserved for GNSS tunneling named
1000    ``gnss_pipe``.
1001
1002  * Added new set of shell commands for sending AT commands directly to a modem using the
1003    newly implemented modem pipelinks. The implementation of the new shell commands is
1004    both functional and together with the ``MODEM_CELLULAR`` driver will provide an
1005    example of how to implement and use the modem pipelink module.
1006
1007* PCIE
1008
1009  * ``pcie_bdf_lookup`` and ``pcie_probe`` have been removed since they have been
1010    deprecated since v3.3.0.
1011
1012* MIPI-DBI
1013
1014  * Added release API
1015  * Added support for mode selection via the device tree
1016
1017* MSPI
1018
1019  * Add the new experimental :ref:`MSPI(Multi-bit SPI) <mspi_api>` API, enabling support for
1020    advanced SPI controllers and peripherals that typically require command, address and data
1021    phases as well as variable latency for a transfer. The API now supports from single wire
1022    SDR up to hex wires DDR communication in sync/async ways.
1023  * Added MSPI bus emulator under bus emulators to showcase the implementation of the MSPI API.
1024  * Added MSPI flash device emulator to showcase the use of the MSPI API and interfacing with
1025    MSPI bus controllers.
1026  * Added APS6404L QPI pSRAM device driver.
1027  * Added ATXP032 OPI NOR flash device driver.
1028  * Added Ambiq Apollo3p MSPI controller driver.
1029  * Added :zephyr:code-sample:`mspi-async` and :zephyr:code-sample:`mspi-flash` samples to
1030    showcase the use of MSPI device drivers.
1031  * Added mspi/api and mspi/flash testcase for developers to check their implementations.
1032
1033* Pin control
1034
1035  * Added driver for Renesas RA8 series
1036  * Added driver for Infineon PSoC6 (legacy)
1037  * Added driver for Analog Devices MAX32 SoC series.
1038  * Added driver for Ambiq Apollo3
1039  * Added driver for ENE KB1200
1040  * Added driver for NXP RW
1041  * Espressif driver now supports ESP32C6
1042  * STM32 driver now supports remap functionality for STM32C0
1043  * Added support for Nuvoton Numaker M2L31X series.
1044
1045* PWM
1046
1047  * Added support for STM32H7R/S series.
1048  * Added a Add QTMR PWM driver for NXP imxrt11xx
1049  * Made the NXP MCUX PWM driver thread safe
1050  * Fix :zephyr:code-sample:`pwm-blinky` code sample to demonstrate PWM support for
1051    :zephyr:board:`beagleconnect_freedom`.
1052  * Added driver for ENE KB1200.
1053  * Added support for Nordic nRF54H and nRF54L Series SoCs.
1054  * Added support for Nuvoton Numaker M2L31X series.
1055
1056* Regulators
1057
1058  * New driver :dtcompatible:`cirrus,cp9314`.
1059  * Added ``regulator-boot-off`` property to common regulator driver.
1060    Updated :dtcompatible:`adi,adp5360-regulator`, :dtcompatible:`nordic,npm1300-regulator`,
1061    :dtcompatible:`nordic,npm6001-regulator` and :dtcompatible:`x-powers,axp192-regulator`
1062    to use this new property.
1063  * Added power management for :dtcompatible:`renesas,smartbond-regulator`.
1064  * Added ``is_enabled`` shell command.
1065  * Removed use of busy wait for single threaded systems.
1066  * Fixed control of DCDC2 output for :dtcompatible:`x-powers,axp192-regulator`.
1067  * Fixed current and voltage get functions for :dtcompatible:`renesas,smartbond-regulator`.
1068  * Fixed NXP VREF Kconfig leakage.
1069  * Fixed display of micro values in shell.
1070  * Fixed strcmp usage bug in ``adset`` shell command.
1071
1072* Reset
1073
1074  * Added driver for reset controller on Nuvoton NPCX chips.
1075  * Added reset controller driver for NXP SYSCON.
1076  * Added reset controller driver for NXP RSTCTL.
1077  * Added support for Nuvoton Numaker M2L31X series.
1078
1079* RTC
1080
1081  * Added Raspberry Pi Pico RTC driver.
1082  * Added support for :kconfig:option:`CONFIG_RTC_ALARM` on all STM32 MCU series (except STM32F1).
1083  * Added support for Nuvoton Numaker M2L31X series.
1084
1085* RTIO
1086
1087  * Move lock-free queues out of RTIO into lib, dropping the ``rtio_`` prefix to SPSC and MPSC queues.
1088  * Added tests and fixed bugs related to chained callback requests.
1089  * Wrapper around p4wq (rtio workq) created to go from blocking to non-blocking behavior in cases
1090    where native asynchronous RTIO functionality is unavailable.
1091
1092* SDHC
1093
1094  * Added ESP32 SDHC driver (:dtcompatible:`espressif,esp32-sdhc`).
1095  * Added SDHC driver for Renesas MMC controller (:dtcompatible:`renesas,rcar-mmc`).
1096
1097* Sensors
1098
1099  * General
1100
1101    * Added a channel specifier to the new read/decoder API.
1102    * Added a blocking sensor read call :c:func:`sensor_read`.
1103    * Decoupled RTIO requests using RTIO workqueues service to turn
1104      :c:func:`sensor_submit_callback` into an asynchronous request.
1105    * Moved most drivers to vendor subdirectories.
1106
1107  * AMS
1108
1109    * Added TSL2591 light sensor driver (:dtcompatible:`ams,tsl2591`).
1110
1111  * Aosong
1112
1113    * Added DHT20 digital-output humidity and temperature sensor driver
1114      (:dtcompatible:`aosong,dht20`).
1115
1116    * Added :kconfig:option:`CONFIG_DHT_LOCK_IRQS` for the dht11 driver which allows for locking
1117      interrupts during sensor reading to prevent issues with reading the sensor.
1118
1119  * Bosch
1120
1121    * Updated BME280 to the new async API.
1122
1123  * Infineon
1124
1125    * Added TLE9104 power train switch diagnostics sensor driver
1126      (:dtcompatible:`infineon,tle9104-diagnostics`).
1127
1128  * Maxim
1129
1130    * Added DS18S20 1-Wire temperature sensor driver (:dtcompatible:`maxim,ds18s20`).
1131    * Added MAX31790 fan speed and fan fault sensor
1132      (:dtcompatible:`maxim,max31790-fan-fault` and :dtcompatible:`maxim,max31790-fan-speed`).
1133
1134  * NXP
1135
1136    * Added low power comparator driver (:dtcompatible:`nxp,lpcmp`).
1137
1138  * Rohm
1139
1140    * Added BD8LB600FS diagnostics sensor driver (:dtcompatible:`rohm,bd8lb600fs-diagnostics`).
1141
1142  * Silabs
1143
1144    * Made various fixes and enhancements to the SI7006 humidity/temperature sensor driver.
1145
1146  * ST
1147
1148    * QDEC driver now supports encoder mode configuration (see :dtcompatible:`st,stm32-qdec`).
1149    * Added support for STM32 Digital Temperature Sensor (:dtcompatible:`st,stm32-digi-temp`).
1150    * Added IIS328DQ I2C/SPI accelerometer sensor driver (:dtcompatible:`st,iis328dq`).
1151
1152  * TDK
1153
1154    * Added support for the MPU6500 3-axis accelerometer and 3-axis gyroscope sensor to the
1155      MPU6050 driver.
1156
1157  * TI
1158
1159    * Added TMP114 driver (:dtcompatible:`ti,tmp114`).
1160    * Added INA226 bidirectional current and power monitor driver (:dtcompatible:`ti,ina226`).
1161    * Added LM95234 quad remote diode and local temperature sensor driver
1162      (:dtcompatible:`national,lm95234`).
1163
1164  * Other vendors
1165
1166    * Added Angst+Pfister FCX-MLDX5 O2 sensor driver (:dtcompatible:`ap,fcx-mldx5`).
1167    * Added ENE KB1200 tachometer sensor driver (:dtcompatible:`ene,kb1200-tach`).
1168    * Added Festo VEAA-X-3 series proportional pressure regulator driver
1169      (:dtcompatible:`festo,veaa-x-3`).
1170    * Added Innovative Sensor Technology TSic xx6 temperature sensor driver
1171      (:dtcompatible:`ist,tsic-xx6`).
1172    * Added ON Semiconductor NCT75 temperature sensor driver (:dtcompatible:`onnn,nct75`).
1173    * Added ScioSense ENS160 digital metal oxide multi-gas sensor driver
1174      (:dtcompatible:`sciosense,ens160`).
1175    * Made various fixes and enhancements to the GROW_R502A fingerprint sensor driver.
1176
1177* Serial
1178
1179  * Added driver to support UART over Bluetooth LE using NUS (Nordic UART Service). This driver
1180    enables using Bluetooth as a transport to all the subsystems that are currently supported by
1181    UART (e.g: Console, Shell, Logging).
1182  * Added :kconfig:option:`CONFIG_NOCACHE_MEMORY` support in async DMA mode in STM32 driver.
1183    It is now possible to use UART in DMA mode with :kconfig:option:`CONFIG_DCACHE` enabled
1184    on STM32 F7 & H7 SoC series, as long as DMA buffers are placed in an uncached memory section.
1185  * Added support for STM32H7R/S series.
1186
1187  * Added support for HSCIF (High Speed Serial Communication Interface with FIFO) in the UART
1188    driver for Renesas RCar platforms.
1189
1190  * Added driver for ENE KB1200 UART.
1191
1192  * Added driver for UART on Analog Devices MAX32 series microcontrollers.
1193
1194  * Added driver for UART on Renesas RA8 devices.
1195
1196  * ``uart_emul`` (:dtcompatible:`zephyr,uart-emul`):
1197
1198    * Added support for asynchronous API for the emulated UART driver.
1199
1200  * ``uart_esp32`` (:dtcompatible:`espressif,esp32-uart`):
1201
1202    * Added support to invert TX and RX pin signals.
1203
1204    * Added support for ESP32C6 SoC.
1205
1206  * ``uart_native_tty`` (:dtcompatible:`zephyr,native-tty-uart`):
1207
1208    * Added support to emulate interrupt driven UART.
1209
1210  * ``uart_mcux_lpuart`` (:dtcompatible:`nxp,kinetis-lpuart`):
1211
1212    * Added support for single wire half-duplex communication.
1213
1214    * Added support to invert TX and RX pin signals.
1215
1216  * ``uart_npcx`` (:dtcompatible:`nuvoton,npcx-uart`):
1217
1218    * Added support for asynchronous API.
1219
1220    * Added support for baud rate of 3MHz.
1221
1222  * ``uart_nrfx_uarte`` (:dtcompatible:`nordic,nrf-uarte`):
1223
1224    * Added support to put TX and RX pins into low power mode when UART is not active.
1225
1226  * ``uart_nrfx_uarte2`` (:dtcompatible:`nordic,nrf-uarte`):
1227
1228    * Prevents UART from transmitting when device is suspended.
1229
1230    * Fixed some events not being triggered.
1231
1232  * ``uart_pl011`` (:dtcompatible:`arm,pl011`):
1233
1234    * Added support for runtime configuration.
1235
1236    * Added support for reset device.
1237
1238    * Added support to use clock control to determine frequency.
1239
1240    * Added support for hardware flow control.
1241
1242    * Added support for UART on Ambiq Apollo3 SoC.
1243
1244  * ``uart_smartbond`` (:dtcompatible:`renesas,smartbond-uart`):
1245
1246    * Added support for power management.
1247
1248    * Added support to wake up via DTR and RX lines.
1249
1250  * ``uart_stm32`` (:dtcompatible:`st,stm32-uart`):
1251
1252    * Added support to identify if DMA buffers are in data cache or non-cacheable memory.
1253
1254  * Added support for Nuvoton Numaker M2L31X series.
1255
1256* SPI
1257
1258  * Added support to NXP MCXN947
1259  * Added support for Ambiq Apollo3 series general IOM based SPI.
1260  * Added support for Ambiq Apollo3 BLEIF based SPI, which is specific for internal HCI.
1261  * Added support for :kconfig:option:`CONFIG_PM` and :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME` on STM32 SPI driver.
1262  * Added support for :kconfig:option:`CONFIG_NOCACHE_MEMORY` in DMA SPI mode for STM32F7x SoC series.
1263  * Added support for STM32H7R/S series.
1264  * Added driver for Analog Devices MAX32 SoC series.
1265  * Fixed an incorrect register assignment in gd32 spi.
1266
1267* USB
1268
1269  * Added UDC shim driver for NXP EHCI and IP3511 USB controller.
1270  * Various fixes and improvements in IT82xx2, DWC2, STM32, RP2040, Smartbond
1271    USB controller drivers.
1272
1273* Video
1274
1275  * Added support for STM32 Digital camera interface (DCMI) driver (:dtcompatible:`st,stm32-dcmi`).
1276  * Enabled NXP USB Device controllers
1277  * Added support for the ov7670 camera
1278  * Added support for the ov5640 camera
1279  * Added CSI-2 MIPI driver for NXP MCUX
1280  * Added support for DVP FPC 24-pins mt9m114 camera module shield
1281
1282* Watchdog
1283
1284  * Added :kconfig:option:`CONFIG_WDT_NPCX_WARNING_LEADING_TIME_MS` to set the leading warning time
1285    in milliseconds. Removed no longer used :kconfig:option:`CONFIG_WDT_NPCX_DELAY_CYCLES`.
1286  * Added support for Ambiq Apollo3 series.
1287  * Added support for STM32H7R/S series.
1288  * Added support for Nuvoton Numaker M2L31X series.
1289  * Added watchdog for external 32kHz crystal in ESP32 SoC variants.
1290
1291* Wi-Fi
1292
1293  * Fixed message parsing for esp-at.
1294  * Fixed esp-at connect failures.
1295  * Implement :c:func:`bind` and :c:func:`recvfrom` for UDP sockets for esp-at.
1296  * Added option for setting maximum data size for eswifi.
1297  * Fixed ESP32 Wi-Fi driver memory leak.
1298
1299Networking
1300**********
1301
1302* ARP:
1303
1304  * Added support for gratuitous ARP transmission.
1305  * Fixed a possible deadlock between TX and RX threads within ARP module.
1306  * Fixed a possible ARP entry leak.
1307  * Improved ARP debug logs.
1308
1309* CoAP:
1310
1311  * Fixed CoAP observe age overflows.
1312  * Increased upper limit for CoAP retransmissions (:kconfig:option:`CONFIG_COAP_MAX_RETRANSMIT`).
1313  * Fixed CoAP observations in CoAP client library.
1314  * Added new CoAP client :c:func:`coap_client_cancel_requests` API which allows
1315    to cancel active observations.
1316  * Fixed CoAP ID generation for responses in CoAP Server sample.
1317
1318* Connection manager:
1319
1320  * Added support for new net_mgmt events, which allow to track IPv4 and IPv6
1321    connectivity independently:
1322
1323    * :c:macro:`NET_EVENT_L4_IPV4_CONNECTED`
1324    * :c:macro:`NET_EVENT_L4_IPV4_DISCONNECTED`
1325    * :c:macro:`NET_EVENT_L4_IPV6_CONNECTED`
1326    * :c:macro:`NET_EVENT_L4_IPV6_DISCONNECTED`
1327
1328* DHCPv4:
1329
1330  * Added support for encapsulated vendor specific options. By enabling
1331    :kconfig:option:`CONFIG_NET_DHCPV4_OPTION_CALLBACKS_VENDOR_SPECIFIC` callbacks can be
1332    registered with :c:func:`net_dhcpv4_add_option_vendor_callback` to handle these options after
1333    being initialised with :c:func:`net_dhcpv4_init_option_vendor_callback`.
1334  * Added support for the "Vendor class identifier" option. Use the
1335    :kconfig:option:`CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER` to enable it and
1336    :kconfig:option:`CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER_STRING` to set it.
1337  * The NTP server from the DHCPv4 option can now be used to set the system time. This is done by
1338    default, if :kconfig:option:`CONFIG_NET_CONFIG_CLOCK_SNTP_INIT` is enabled.
1339  * The syslog server address can now be set with DHCPv4 option. This is done by
1340    default, if :kconfig:option:`CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION` is enabled.
1341  * Fixed a bug, where options with registered callbacks were not requested from
1342    the server.
1343  * Fixed a bug, where netmask received from the server was not applied correctly.
1344  * Reimplemented DHCPv4 client RENEW/REBIND logic to be compliant with RFC2131.
1345  * Improved declined addresses management in DHCPv4 server, which now can be
1346    reused after configured time.
1347  * Fixed including the client ID option in the DHCPv4 server response, according to RFC6842.
1348  * Added :kconfig:option:`CONFIG_NET_DHCPV4_SERVER_NAK_UNRECOGNIZED_REQUESTS` which
1349    allows to override RFC-defined behavior, and NAK requests from unrecognized
1350    clients.
1351  * Fixed client ID generation in DHCPv4 server.
1352  * Other minor fixes in DHCPv4 client and server implementations.
1353
1354* DHCPv6:
1355
1356  * Fixed incorrect DHCPv6 events code base for net_mgmt events.
1357  * Added :kconfig:option:`CONFIG_NET_DHCPV6_DUID_MAX_LEN` which allows to configure
1358    maximum supported DUID length.
1359  * Added documentation page for DHCPv6.
1360
1361* DNS/mDNS/LLMNR:
1362
1363  * Fixed an issue where the mDNS Responder did not work when the mDNS Resolver was also enabled.
1364    The mDNS Resolver and mDNS Responder can now be used simultaneously.
1365  * Reworked LLMNR and mDNS responders, and DNS resolver to use sockets and socket services API.
1366  * Added ANY query resource type.
1367  * Added support for mDNS to provide records in runtime.
1368  * Added support for caching DNS records.
1369  * Fixed error codes returned when socket creation fails, and when all results have been returned.
1370  * Fixed DNS retransmission timeout calculation.
1371
1372* gPTP/PTP:
1373
1374  * Added support for IEEE 1588-2019 PTP.
1375  * Added support for SO_TIMESTAMPING socket option to get timestamping information in socket
1376    ancillary data.
1377  * Fixed race condition on timestamp callback.
1378  * Fixed clock master sync send SM if we are not the GM clock.
1379
1380* HTTP:
1381
1382  * Added HTTP/2 server library and sample application with support for static,
1383    dynamic and Websocket resource types.
1384  * Added HTTP shell component.
1385  * Improved HTTP client error reporting.
1386  * Moved HTTP client library out of experimental.
1387  * Added POLLOUT monitoring when sending response in HTTP client.
1388
1389* IPSP:
1390
1391  * Removed IPSP support. ``CONFIG_NET_L2_BT`` does not exist anymore.
1392
1393* IPv4:
1394
1395  * Implemented IPv4 Address Conflict Detection, according to RFC 5227.
1396  * Added :c:func:`net_ipv4_is_private_addr` API function.
1397  * IPv4 netmask is now set individually for each address instead of being set
1398    for the whole interface.
1399  * Other minor fixes and improvements.
1400
1401* IPv6:
1402
1403  * Implemented IPv6 Privacy Extensions according to RFC 8981.
1404  * Added :c:func:`net_ipv6_is_private_addr` API function.
1405  * Implemented reachability hint for IPv6. Upper layers can use
1406    :c:func:`net_if_nbr_reachability_hint` to report Neighbor reachability and
1407    avoid unnecessary Neighbor Discovery solicitations.
1408  * Added :kconfig:option:`CONFIG_NET_IPV6_MTU` allowing to set custom IPv6 MTU.
1409  * Added :kconfig:option:`CONFIG_NET_MCAST_ROUTE_MAX_IFACES` which allows to set
1410    multiple interfaces for multicast forwarding entries.
1411  * Added :kconfig:option:`CONFIG_NET_MCAST_ROUTE_MLD_REPORTS` which allows to
1412    report multicast routes in MLDv2 reports.
1413  * Fixed IPv6 hop limit handling for multicast packets.
1414  * Improved IPv6 Neighbor Discovery test coverage.
1415  * Fixed a bug, where Neighbor Advertisement packets reporting Duplicate address
1416    detection conflicts were dropped.
1417  * Other minor fixes and improvements.
1418
1419* LwM2M:
1420
1421  * Added new API functions:
1422
1423    * :c:func:`lwm2m_set_bulk`
1424    * :c:func:`lwm2m_rd_client_set_ctx`
1425
1426  * Added new ``offset`` parameter to :c:type:`lwm2m_engine_set_data_cb_t` callback type.
1427    This affects post write and validate callbacks as well as some firmware callbacks.
1428  * Fixed block context not being reset upon receiving block number 0 in block transfer.
1429  * Fixed block size negotiation with the server in block transfer.
1430  * Added :kconfig:option:`CONFIG_LWM2M_ENGINE_ALWAYS_REPORT_OBJ_VERSION` which
1431    allows to force the client to always report object version.
1432  * Block transfer is now possible with resource w/o registered callback.
1433  * Fixed a bug, where an empty ACK sent from the registered callback would not
1434    be sent immediately.
1435  * Removed deprecated API functions and definitions.
1436  * Other minor fixes and improvements.
1437
1438* Misc:
1439
1440  * Improved overall networking API Doxygen documentation.
1441  * Converted TFTP library to use ``zsock_*`` API.
1442  * Added SNTP :c:func:`sntp_simple_addr` API function to perform SNTP query
1443    when the server IP address is already known.
1444  * Added :kconfig:option:`CONFIG_NET_TC_THREAD_PRIO_CUSTOM` allowing to override
1445    default traffic class threads priority.
1446  * Fixed the IPv6 event handler initialization order in net config library.
1447  * Reworked telnet shell backend to use sockets and socket services API.
1448  * Fixed double dereference of IGMP packets.
1449  * Moved from ``native_posix`` to ``native_sim`` support in various tests and
1450    samples.
1451  * Added support for copying user data in network buffers.
1452  * Fixed cloning of zero sized network buffers.
1453  * Added net_buf APIs to handle 40 bit data format.
1454  * Added receive callback for dummy L2, applicable in certain use cases
1455    (for example, packet capture).
1456  * Implemented pseudo interface, a.k.a "any" interface for packet capture use
1457    case.
1458  * Added cooked mode capture support. This allows non-IP based network data capture.
1459  * Generate network events when starting or stopping packet capture.
1460  * Removed obsolete and unused ``tcp_first_msg`` :c:struct:`net_pkt` flag.
1461  * Added new :zephyr:code-sample:`secure-mqtt-sensor-actuator` sample.
1462  * Added support for partial L3 and L4 checksum offloading.
1463  * Updated :zephyr:code-sample:`mqtt-azure` with new CA certificates, the current
1464    on expires soon.
1465  * Added new driver for Native Simulator offloaded sockets.
1466  * Overhauled VLAN support to use Virtual network interfaces.
1467  * Added statistics collection for Virtual network interfaces.
1468  * Fixed system workqueue block in :c:func:`mgmt_event_work_handler`
1469    when :kconfig:option:`CONFIG_NET_MGMT_EVENT_SYSTEM_WORKQUEUE` is enabled.
1470
1471* MQTT:
1472
1473  * Added ALPN support for MQTT TLS backend.
1474  * Added user data field in :c:struct:`mqtt_client` context structure.
1475  * Fixed a potential socket leak in MQTT Websockets transport.
1476
1477* Network Interface:
1478
1479  * Added new API functions:
1480
1481    * :c:func:`net_if_ipv4_maddr_foreach`
1482    * :c:func:`net_if_ipv6_maddr_foreach`
1483
1484  * Improved debug logging in the network interface code.
1485  * Added reference counter to the :c:struct:`net_if_addr` structure.
1486  * Fixed IPv6 DAD and MLDv2 operation when interface goes up.
1487  * Added unique default name for OpenThread interfaces.
1488  * Other minor fixes.
1489
1490* OpenThread
1491
1492  * Removed deprecated ``openthread_set_state_changed_cb()`` function.
1493  * Added implementation of BLE TCAT advertisement API.
1494
1495* PPP
1496
1497  * Removed deprecated ``gsm_modem`` driver and sample.
1498  * Optimized memory allocation in PPP driver.
1499  * Misc improvements in the :zephyr:code-sample:`cellular-modem` sample
1500  * Added PPP low level packet capture support.
1501
1502* Shell:
1503
1504  * Added ``net ipv4 gateway`` command to set IPv4 gateway address.
1505  * Added argument validation in network shell macros.
1506  * Fixed net_mgmt sockets information printout.
1507  * Reworked VLAN information printout.
1508  * Added option to set random MAC address with ``net iface set_mac`` command.
1509  * Added multicast join status when printing multicast address information.
1510
1511* Sockets:
1512
1513  * Implemented new networking POSIX APIs:
1514
1515    * :c:func:`if_nameindex`
1516    * :c:func:`inet_ntoa`
1517    * :c:func:`inet_addr`
1518
1519  * Added support for tracing socket API calls.
1520  * TLS sockets are no longer experimental API.
1521  * Fixed the protocol field endianness for ``AF_PACKET`` type sockets.
1522  * Fixed :c:func:`getsockname` for TCP.
1523  * Improve :c:func:`sendmsg` support when using DTLS sockets.
1524  * Fixed :c:func:`net_socket_service_register` function stall in case socket
1525    services thread stopped.
1526  * Fixed potential socket services thread stoppage when deregistering service.
1527  * Removed support for asynchronous timeouts in socket services library.
1528  * Fixed potential busy looping when using :c:func:`zsock_accept` in case of
1529    file descriptors shortage.
1530
1531* Syslog:
1532
1533  * Added new API functions:
1534
1535    * :c:func:`log_backend_net_set_ip` to initialize syslog net backend with IP
1536      address directly.
1537    * :c:func:`log_backend_net_start` to facilitate syslog net backend activation.
1538
1539  * Added structured logging support to syslog net backend.
1540  * Added TCP support to syslog net backend.
1541
1542* TCP:
1543
1544  * Fixed possible deadlock when accepting new TCP connection.
1545  * Fixed ACK number verification during connection teardown.
1546  * Fixed a bug, where data bytes included in FIN packet were ignored.
1547  * Fixed a possible TCP context leak in case initial SYN packet transmission failed.
1548  * Deprecated :kconfig:option:`CONFIG_NET_TCP_ACK_TIMEOUT` as it was redundant with other configs.
1549  * Improved debug logs, so that they're easier to follow under heavy load.
1550  * ISN generation now uses SHA-256 instead of MD5. Moreover, it now relies on PSA APIs
1551    instead of legacy Mbed TLS functions for hash computation.
1552  * Improved ACK reply logic in case no PSH flag is present to reduce redundant ACKs.
1553
1554* Websocket:
1555
1556  * Added new Websocket APIs:
1557
1558    * :c:func:`websocket_register`
1559    * :c:func:`websocket_unregister`
1560
1561  * Converted Websocket library to use ``zsock_*`` API.
1562  * Added Object Core support to Websocket sockets.
1563  * Added POLLOUT monitoring when sending.
1564
1565* Wi-Fi:
1566
1567  * Reduce memory usage of 5 GHz channel list.
1568  * Added channel validity check in AP mode.
1569  * Added support for BSSID configuration in connect call.
1570  * Wifi shell help text fixes. Option parsing fixes.
1571  * Support WPA auto personal security mode.
1572  * Collect unicast received/sent network packet statistics.
1573  * Added support for configuring RTS threshold. With this, users can set the RTS threshold
1574    value or disable the RTS mechanism.
1575  * Added support for configuring AP parameters. With this, users can set AP parameters at
1576    build and run time.
1577  * Added support to configure ``max_inactivity`` BSS parameter. Users can set this both
1578    build and runtime duration to control the maximum time duration after which AP may
1579    disconnect a STA due to inactivity from STA.
1580  * Added support to configure ``inactivity_poll`` BSS parameter. Users can set build
1581    only AP parameter to control whether AP may poll the STA before throwing away STA
1582    due to inactivity.
1583  * Added support to configure ``max_num_sta`` BSS parameter. Users can set this both
1584    build and run time parameter to control the maximum number of STA entries.
1585
1586* zperf:
1587
1588  * Fixed ``IP_TOS`` and ``IPV6_TCLASS`` options handling in zperf.
1589  * Fixed throughput calculation during long zperf sessions.
1590  * Fixed error on TCP upload session end in case multicast IP address was used.
1591  * Fixed a bug, where IPv6 socket was bound with IPv4 address, giving error.
1592  * Added an option to specify the network interface to use during zperf sessions.
1593  * Added a new ``ZPERF_SESSION_PERIODIC_RESULT`` event for periodic updates
1594    during TCP upload sessions.
1595  * Fixed possible socket leak in case of errors during zperf session.
1596  * Improved performance in the default configuration for the zperf sample.
1597
1598USB
1599***
1600
1601* New USB device stack:
1602
1603  * Added support for HID devices
1604  * Introduced speed-specific configurations and made high-speed support
1605    compliant with the USB2.0 specification
1606  * Added notification support and initial BOS support
1607
1608Devicetree
1609**********
1610
1611* Added :c:macro:`DT_INST_NODE_HAS_COMPAT` to check if a node has a compatible.
1612  This is useful for nodes that have multiple compatibles.
1613* Added :c:macro:`DT_CHILD_NUM` and variants to count the number of children of a node.
1614* Added :c:macro:`DT_FOREACH_NODELABEL` and variants, which can be used to iterate over the
1615  node labels of a devicetree node.
1616* Added :c:macro:`DT_NODELABEL_STRING_ARRAY` and :c:macro:`DT_NUM_NODELABELS` and their variants.
1617* Added :c:macro:`DT_REG_HAS_NAME` and variants.
1618* Reworked :c:macro:`DT_ANY_INST_HAS_PROP_STATUS_OKAY` so that the result can
1619  be used with macros like :c:macro:`IS_ENABLED`, IF_ENABLED, or COND_CODE_x.
1620* Reworked :c:macro:`DT_NODE_HAS_COMPAT_STATUS` so that it can be evaluated at preprocessor time.
1621* Updated PyYaml version used in dts scripts to 6.0 to remove supply chain vulnerabilities.
1622
1623Kconfig
1624*******
1625
1626* Added a ``substring`` Kconfig preprocessor function.
1627* Added a ``dt_node_ph_prop_path`` Kconfig preprocessor function.
1628* Added a ``dt_compat_any_has_prop`` Kconfig preprocessor function.
1629
1630Libraries / Subsystems
1631**********************
1632
1633* Debug
1634
1635  * symtab
1636
1637   * By enabling :kconfig:option:`CONFIG_SYMTAB`, the symbol table will be
1638     generated with Zephyr link stage executable on supported architectures.
1639
1640* Demand Paging
1641
1642  * NRU (Not Recently Used) eviction algorithm has updated its selection logic to avoid
1643    picking the same page to evict constantly. The updated login now searches for a new
1644    candidate linearly after the last evicted page.
1645
1646  * Added LRU (Least Recently Used) eviction algorithm.
1647
1648* Formatted output
1649
1650  * Fix warning when compiling cbprintf with ARCMWDT.
1651
1652* Management
1653
1654  * hawkBit
1655
1656    * The hawkBit subsystem has been reworked to use the settings subsystem to store the hawkBit
1657      configuration.
1658
1659    * By enabling :kconfig:option:`CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME`, the hawkBit settings can
1660      be configured at runtime. Use the :c:func:`hawkbit_set_config` function to set the hawkBit
1661      configuration. It can also be set via the hawkBit shell, by using the ``hawkbit set``
1662      command.
1663
1664    * When using the hawkBit autohandler and an update is installed, the device will now
1665      automatically reboot after the installation is complete.
1666
1667    * By enabling :kconfig:option:`CONFIG_HAWKBIT_CUSTOM_DEVICE_ID`, a callback function can be
1668      registered to set the device ID. Use the :c:func:`hawkbit_set_device_identity_cb` function to
1669      register the callback.
1670
1671    * By enabling :kconfig:option:`CONFIG_HAWKBIT_CUSTOM_ATTRIBUTES`, a callback function can be
1672      registered to set the device attributes that are sent to the hawkBit server. Use the
1673      :c:func:`hawkbit_set_custom_data_cb` function to register the callback.
1674
1675  * MCUmgr
1676
1677    * Instructions for the deprecated mcumgr go tool have been removed, a list of alternative,
1678      supported clients can be found on :ref:`mcumgr_tools_libraries`.
1679
1680    * Fixed an issue with the SMP structure not being packed which would cause a fault on devices
1681      that do not support unaligned memory accesses.
1682
1683    * Added :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_DYNAMIC_SVC_REGISTRATION` that allows users
1684      to select whether MCUmgr BT service is statically registered at compile time or
1685      dynamically at run time.
1686
1687    * In FS group, TinyCrypt has been replaced with PSA calls for SHA calculation.
1688
1689* Logging
1690
1691  * By enabling :kconfig:option:`CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION`, the IP address of the
1692    syslog server for the networking backend is set by the DHCPv4 Log Server Option (7).
1693
1694  * Use real time clock as timestamp on POSIX.
1695
1696  * Add support for syslog (POSIX).
1697
1698  * Add :c:macro:`LOG_WRN_ONCE` for logging warning message where only the first occurrence is
1699    logged.
1700
1701  * Add :c:func:`log_thread_trigger` for triggering processing of the log messages.
1702
1703  * Fix case when deferred logging not compiling when :kconfig:option:`CONFIG_MULTITHREADING` was
1704    disabled.
1705
1706  * Fix case when logging strings could be stripped from the binary when dictionary based logging
1707    was mixed with non-dictionary.
1708
1709  * Fix dictionary database not being generated in certain situations.
1710
1711  * Fix dictionary logging parser not handling long long arguments correctly.
1712
1713  * Fix support for :kconfig:option:`CONFIG_LOG_MSG_APPEND_RO_STRING_LOC`.
1714
1715* Modem modules
1716
1717  * Added modem pipelink module which shares modem pipes globally, allowing device drivers to
1718    create and set up pipes for the application to use.
1719
1720  * Simplified the modem pipe module's synchronization mechanism to only protect the callback
1721    and user data. This matches the actual in-tree usage of the modem pipes.
1722
1723  * Added ``modem_stats`` module which tracks the usage of buffers throughout the modem
1724    subsystem.
1725
1726* Power management
1727
1728  * Devices can now declare which system power states cause power loss.
1729    This information can be used to set and release power state
1730    constraints when it is needed by the device. This feature is enabled with
1731    :kconfig:option:`CONFIG_PM_POLICY_DEVICE_CONSTRAINTS`. Use functions
1732    :c:func:`pm_policy_device_power_lock_get` and :c:func:`pm_policy_device_power_lock_put`
1733    to lock and unlock all power states that cause power loss in a device.
1734
1735  * Added shell support for device power management.
1736
1737  * Device power management was de-coupled from system power management. The new
1738    :kconfig:option:`CONFIG_PM_DEVICE_SYSTEM_MANAGED` option is used to enable
1739    whether devices must be suspended when the system sleeps.
1740
1741  * Make it possible to disable system device power management individually per
1742    power state using ``zephyr,pm-device-disabled``. This allows targets tuning which
1743    states should (and which should not) trigger device power management.
1744
1745* Crypto
1746
1747  * TinyCrypt remains available but is now being phased out in favor
1748    of PSA Crypto for enhanced security and performance.
1749  * Mbed TLS was updated to 3.6.0. Release notes can be found at:
1750    https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.0
1751  * When any PSA crypto provider is available in the system
1752    (:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is enabled), desired PSA features
1753    must now be explicitly selected through ``CONFIG_PSA_WANT_xxx`` symbols.
1754  * Choice symbols :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_LEGACY_RNG` and
1755    :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG` were added in order
1756    to allow the user to specify how Mbed TLS PSA crypto core should generate random numbers.
1757    The former option, which is the default, relies on legacy entropy and CTR_DRBG/HMAC_DRBG
1758    modules, while the latter relies on CSPRNG drivers.
1759  * :kconfig:option:`CONFIG_MBEDTLS_PSA_P256M_DRIVER_ENABLED` enables support
1760    for the Mbed TLS's p256-m driver PSA crypto library. This is a Cortex-M SW
1761    optimized implementation of secp256r1 curve.
1762
1763* CMSIS-NN
1764
1765  * CMSIS-NN was updated to v6.0.0 from v4.1.0:
1766    https://arm-software.github.io/CMSIS-NN/latest/rev_hist.html
1767
1768* FPGA
1769
1770  * Improve handling of drivers missing ``reset``, ``load``, ``get_status``, and ``get_info``
1771    methods.
1772  * Add support for Agilex and Agilex 5.
1773
1774* Random
1775
1776  * Besides the existing :c:func:`sys_rand32_get` function, :c:func:`sys_rand8_get`,
1777    :c:func:`sys_rand16_get` and :c:func:`sys_rand64_get` are now also available.
1778    These functions are all implemented on top of :c:func:`sys_rand_get`.
1779
1780* SD
1781
1782  * SDMMC and SDIO frequency and timing selection logic have been reworked,
1783    to resolve an issue where a timing mode would not be selected if the
1784    SDHC device in use did not report support for the maximum frequency
1785    possible in that mode. Now, if the host controller and card both report
1786    support for a given timing mode but not the highest frequency that
1787    mode supports, the timing mode will be selected and configured at
1788    the reduced frequency (:github:`72705`).
1789
1790* State Machine Framework
1791
1792  * The :c:macro:`SMF_CREATE_STATE` macro now always takes 5 arguments.
1793  * Transition sources that are parents of the state that was run now choose the correct Least
1794    Common Ancestor for executing Exit and Entry Actions.
1795  * Passing ``NULL`` to :c:func:`smf_set_state` is now not allowed.
1796
1797* Storage
1798
1799  * FAT FS: It is now possible to expose file system formatting functionality for FAT without also
1800    enabling automatic formatting on mount failure by setting the
1801    :kconfig:option:`CONFIG_FS_FATFS_MKFS` Kconfig option. This option is enabled by default if
1802    :kconfig:option:`CONFIG_FILE_SYSTEM_MKFS` is set.
1803
1804  * FS: It is now possible to truncate a file while opening using :c:func:`fs_open`
1805    and by passing ``FS_O_TRUNC`` flag.
1806
1807  * Flash Map: TinyCrypt has been replaced with PSA Crypto in Flash Area integrity check.
1808
1809  * Flash Map: :c:func:`flash_area_flatten` has been added to be used where an erase
1810    operation has been previously used for removing/scrambling data rather than
1811    to prepare a device for a random data write.
1812
1813  * Flash Map: :c:macro:`FIXED_PARTITION_NODE_OFFSET`, :c:macro:`FIXED_PARTITION_NODE_SIZE`
1814    and :c:macro:`FIXED_PARTITION_NODE_DEVICE` have been added to allow obtaining
1815    fixed partition information from a devicetree node rather than a label.
1816
1817  * Added :kconfig:option:`CONFIG_NVS_DATA_CRC`, to add CRC protection for data.
1818    Note that enabling this option makes NVS incompatible with existing storage
1819    that have not been previously using CRC on data.
1820
1821  * Fixed NVS issue where :c:func:`nvs_calc_free_space` would return larger
1822    size than available, because space for reserved ate was not subtracted.
1823
1824  * Fixed ext2 incorrectly calculating free space when attempting to format
1825    partition.
1826
1827  * Fixed FAT driver leaving disk in initialized state after unmount.
1828
1829* Task Watchdog
1830
1831  * Added shell (mainly for testing purposes during development).
1832
1833* POSIX API
1834
1835  * Improved Kconfig options to reflect standard POSIX Options and Option Groups.
1836
1837  * Added support for the following Option Groups
1838
1839    * :ref:`POSIX_MAPPED_FILES <posix_option_group_mapped_files>`
1840    * :ref:`POSIX_MEMORY_PROTECTION <posix_option_group_memory_protection>`
1841    * :ref:`POSIX_NETWORKING <posix_option_group_networking>`
1842    * :ref:`POSIX_SINGLE_PROCESS <posix_option_group_single_process>`
1843    * :ref:`POSIX_TIMERS <posix_option_group_timers>`
1844    * :ref:`XSI_SYSTEM_LOGGING <posix_option_group_xsi_system_logging>`
1845
1846  * Added support for the following Options
1847
1848    * :ref:`_POSIX_ASYNCHRONOUS_IO <posix_option_asynchronous_io>`
1849    * :ref:`_POSIX_CPUTIME <posix_option_cputime>`
1850    * :ref:`_POSIX_FSYNC <posix_option_fsync>`
1851    * :ref:`_POSIX_MEMLOCK <posix_option_memlock>`
1852    * :ref:`_POSIX_MEMLOCK_RANGE <posix_option_memlock_range>`
1853    * :ref:`_POSIX_READER_WRITER_LOCKS <posix_option_reader_writer_locks>`
1854    * :ref:`_POSIX_SHARED_MEMORY_OBJECTS <posix_shared_memory_objects>`
1855    * :ref:`_POSIX_THREAD_CPUTIME <posix_option_thread_cputime>`
1856    * :ref:`_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>`
1857    * :ref:`_POSIX_THREAD_PRIORITY_SCHEDULING <posix_option_thread_priority_scheduling>`
1858    * :ref:`_XOPEN_STREAMS <posix_option_xopen_streams>`
1859
1860  * Fixed eventfd ``F_SETFL`` handling to avoid overwriting internal flags.
1861  * Fixed thread stack address printed in debug message.
1862  * Fixed macro parameter usage in signal code.
1863
1864* LoRa/LoRaWAN
1865
1866  * Added the Fragmented Data Block Transport service, which can be enabled via
1867    :kconfig:option:`CONFIG_LORAWAN_FRAG_TRANSPORT`. In addition to the default fragment decoder
1868    implementation from Semtech, an in-tree implementation with reduced memory footprint is
1869    available.
1870
1871  * Added a sample to demonstrate LoRaWAN firmware-upgrade over the air (FUOTA).
1872
1873* ZBus
1874
1875  * Improved the VDED process by optimizing the channel reference copying for the clones delivered
1876    during the message subscriber delivery notification.
1877
1878  * Improved the initialization phase by statically initiating the semaphores and runtime observer
1879    list. That decreased the duration of the zbus initialization.
1880
1881  * Added a way of isolating a channel message subscribers pool. Some channels can now share an
1882    isolated pool to avoid delivery failures and shorten communication latency. It is only necessary
1883    to enable the :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION` and use the
1884    function :c:func:`zbus_chan_set_msg_sub_pool` to change the msg pool used by the channel.
1885    Channels can share the same message pool.
1886
1887HALs
1888****
1889
1890* Nordic
1891
1892  * Updated nrfx to version 3.5.0.
1893  * Added nRF Services (nrfs) library.
1894
1895* STM32
1896
1897  * Updated STM32F0 to cube version V1.11.5.
1898  * Updated STM32F3 to cube version V1.11.5.
1899  * Updated STM32F4 to cube version V1.28.0.
1900  * Updated STM32F7 to cube version V1.17.2.
1901  * Updated STM32G0 to cube version V1.6.2.
1902  * Updated STM32G4 to cube version V1.5.2.
1903  * Updated STM32H5 to cube version V1.2.0.
1904  * Updated STM32H7 to cube version V1.11.2.
1905  * Updated STM32L5 to cube version V1.5.1.
1906  * Updated STM32U5 to cube version V1.5.0.
1907  * Updated STM32WB to cube version V1.19.1.
1908  * Updated STM32WBA to cube version V1.3.1.
1909  * Added STM32H7R/S with cube version V1.0.0.
1910
1911* ADI
1912
1913  * Introduced the ``hal_adi`` module, which is a subset of the Maxim Software
1914    Development Kit (MSDK) that contains device header files and bare metal
1915    peripheral drivers (:github:`72391`).
1916
1917* Espressif
1918
1919  * Updated HAL to version v5.1, which has new SoCs low-level files.
1920
1921MCUboot
1922*******
1923
1924  * Fixed memory leak in bootutil HKDF implementation
1925
1926  * Fixed enforcing TLV entries to be protected
1927
1928  * Fixed disabling instruction/data caches
1929
1930  * Fixed estimated image overhead size calculation
1931
1932  * Fixed issue with swap-move algorithm failing to validate multiple-images
1933
1934  * Fixed align script error in imgtool
1935
1936  * Fixed img verify for hex file format in imgtool
1937
1938  * Fixed issue with reading the flash image reset vector
1939
1940  * Fixed too-early ``check_config.h`` include in mbedtls
1941
1942  * Refactored image dependency functions to reduce code size
1943
1944  * Added MCUboot support for ``ESP32-C6``
1945
1946  * Added optional MCUboot boot banner
1947
1948  * Added TLV querying for protected region
1949
1950  * Added using builtin keys for verification in bootutil
1951
1952  * Added builtin ECDSA key support for PSA Crypto backend
1953
1954  * Added ``OVERWRITE_ONLY_KEEP_BACKUP`` option for secondary images
1955
1956  * Added defines for ``SOC_FLASH_0_ID`` and ``SPI_FLASH_0_ID``
1957
1958  * Fixed ASN.1 support for mbedtls version >= 3.1
1959
1960  * Fixed bootutil signed/unsigned comparison in ``boot_read_enc_key``
1961
1962  * Updated imgtool version.py to take command line arguments
1963
1964  * Added imgtool improvements to dumpinfo
1965
1966  * Fixed various imgtool dumpinfo issues
1967
1968  * Fixed imgtool verify command for edcsa-p384 signed images
1969
1970  * Added support for NXP MCXN947
1971
1972  * The MCUboot version in this release is version ``2.1.0+0-dev``.
1973
1974OSDP
1975****
1976
1977* Fixed issue in CP secure channel handshake where R-MAC can be reverted to an
1978  old one by a rogue PD sending an out-of-order secure channel response resulting
1979  in a replay attack.
1980
1981Trusted Firmware-M
1982******************
1983
1984* TF-M was updated to 2.1.0. Release notes can be found at:
1985  https://tf-m-user-guide.trustedfirmware.org/releases/2.1.0.html
1986
1987* Support for MCUboot signature types other than RSA-3072 has been added.
1988  The type can be chosen with the :kconfig:option:`CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE` Kconfig option.
1989  Using EC-P256, the new default, reduces flash usage by several KBs compared to RSA.
1990
1991LVGL
1992****
1993
1994LVGL was updated to 8.4.0. Release notes can be found at:
1995https://docs.lvgl.io/8.4/CHANGELOG.html#v8-4-0-19-march-2024
1996
1997Additionally, the following changes in Zephyr were done:
1998
1999  * Added support to place memory pool buffers in ``.lvgl_heap`` section by enabling
2000    :kconfig:option:`CONFIG_LV_Z_MEMORY_POOL_CUSTOM_SECTION`
2001
2002  * Removed kscan-based pointer input wrapper code.
2003
2004  * Corrected encoder button behavior to emit ``LV_KEY_ENTER`` events correctly.
2005
2006  * Improved handling for :samp:`invert-{x,y}` and ``swap-xy`` configurations.
2007
2008  * Added ``LV_MEM_CUSTOM_FREE`` call on file closure.
2009
2010  * Added missing Kconfig stubs for DMA2D symbols.
2011
2012  * Integrated support for LVGL rounder callback function.
2013
2014Tests and Samples
2015*****************
2016
2017  * Added snippet for easily enabling UART over Bluetooth LE by passing ``-S nus-console`` during
2018    ``west build``. This snippet sets the :kconfig:option:`CONFIG_BT_ZEPHYR_NUS_AUTO_START_BLUETOOTH`
2019    which allows non-Bluetooth samples that use the UART APIs to run without modifications
2020    (e.g.: Console and Logging examples).
2021
2022  * Removed ``GSM_PPP`` specific configuration overlays from samples ``net/cloud/tagoio`` and
2023    ``net/mgmt/updatehub``. The ``GSM_PPP`` device driver has been deprecated and removed. The new
2024    ``MODEM_CELLULAR`` device driver which replaces it uses the native networking stack and ``PM``
2025    subsystem, which like ethernet, requires no application specific actions to set up networking.
2026
2027  * Removed ``net/gsm_modem`` sample as the ``GSM_PPP`` device driver it depended on has been
2028    deprecated and removed. The sample has been replaced by the sample ``net/cellular_modem``
2029    based on the ``MODEM_CELLULAR`` device driver.
2030
2031  * BT LE Coded PHY is now runtime tested in CI with the nrf5x bsim targets.
2032
2033  * External ethernet network interfaces have been disabled in the ``tests/net`` tests, since these
2034    tests are meant to use simulated network interfaces.
2035
2036Issue Related Items
2037*******************
2038
2039Known Issues
2040============
2041
2042- :github:`74345` - Bluetooth: Non functional on nRF51 with fault
2043