1:orphan:
2
3.. _zephyr_3.6:
4
5Zephyr 3.6.0
6############
7
8We are pleased to announce the release of Zephyr version 3.6.0.
9
10Major enhancements with this release include:
11
12* New :ref:`GNSS subsystem <gnss_api>` added, enabling geo-awareness in Zephyr applications.
13* New API and drivers introduced for interfacing with :ref:`keyboard matrices <gpio-kbd>`.
14* New socket and CoAP service libraries streamlining the implementation of socket and CoAP servers
15  respectively, while also optimizing the use of resources.
16* Integrated Trusted Firmware-M (TF-M) 2.0, including an update to Mbed TLS 3.5.2.
17* Improved LLEXT tooling, simplifying module creation in the Zephyr build system.
18* Userspace support extended to Xtensa architecture.
19* Build system now supports Link Time Optimization (LTO), reducing the size of the final image.
20* Bluetooth Mesh protocol 1.1 now supported by default.
21* Major updates to the documentation of the :ref:`native simulator <native_sim>`, clarifying
22  supported peripherals and how to use them.
23* Over 30 new supported boards, spanning all Zephyr-supported architectures.
24
25An overview of the changes required or recommended when migrating your application from Zephyr
26v3.5.0 to Zephyr v3.6.0 can be found in the separate :ref:`migration guide<migration_3.6>`.
27
28The following sections provide detailed lists of changes by component.
29
30Security Vulnerability Related
31******************************
32The following CVEs are addressed by this release:
33
34More detailed information can be found in:
35https://docs.zephyrproject.org/latest/security/vulnerabilities.html
36
37* CVE-2023-5779 `Zephyr project bug tracker GHSA-7cmj-963q-jj47
38  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7cmj-963q-jj47>`_
39
40* CVE-2023-6249 `Zephyr project bug tracker GHSA-32f5-3p9h-2rqc
41  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-32f5-3p9h-2rqc>`_
42
43* CVE-2023-6749 `Zephyr project bug tracker GHSA-757h-rw37-66hw
44  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-757h-rw37-66hw>`_
45
46* CVE-2023-6881 `Zephyr project bug tracker GHSA-mh67-4h3q-p437
47  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mh67-4h3q-p437>`_
48
49* CVE-2023-7060: Under embargo until 2024-03-14
50
51* CVE-2024-1638 `Zephyr project bug tracker GHSA-p6f3-f63q-5mc2
52  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p6f3-f63q-5mc2>`_
53
54Architectures
55*************
56
57* ARC
58
59  * Enabled hardware prefetcher and shared cluster cache (SCM - Shared Cluster
60    Memory) for ARCv3 processors (HS5x & HS6x).
61  * Disabled Thread-local Storage support for platforms with two or more register banks.
62  * Fixed unstable work of application built with MetaWare toolchain for hardware
63    platforms (garbage in .device_states section).
64
65* ARM
66
67  * MPU regions are now always cleared before initialization.
68  * Standardized on :c:func:`arch_secondary_cpu_init` to provide consistency
69    across all architectures.
70  * Renamed :c:func:`z_arm_prep_c` as :c:func:`z_prep_c` to provide
71    consistency across all architectures.
72  * Renamed the exception header to be consistent across all architectures.
73  * GDB stubs added (currently only supports Zynq-7000).
74  * Added support for custom interrupt controllers using
75    :kconfig:option:`CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER`.
76  * MMU and MPU initialization moved to :c:func:`z_prep_c` for Cortex-A and
77    Cortex-R to enable initialization by individual cores.
78  * Common Cortex-M MPU code moved to ``arch/arm/core/mpu``.
79
80* Xtensa
81
82  * Removed the unused Kconfig option ``CONFIG_XTENSA_NO_IPC``.
83
84  * Added userspace support via MMU.
85
86Bluetooth
87*********
88
89* Audio
90
91  * Changed ``bt_bap_scan_delegator_subgroup`` to :c:struct:`bt_bap_bass_subgroup` and
92    made it independent of :kconfig:option:`CONFIG_BT_BAP_SCAN_DELEGATOR`.
93  * Modified :c:func:`bt_bap_stream_send` to no longer take a timestamp as parameter,
94    and added :c:func:`bt_bap_stream_send_ts` that does.
95  * Modified :c:func:`bt_cap_stream_send` to no longer take a timestamp as parameter,
96    and added :c:func:`bt_cap_stream_send_ts` that does.
97  * Assigned number values have been moved from :file:`include/zephyr/bluetooth/audio/lc3.h` to
98    :file:`include/zephyr/bluetooth/audio/audio.h` and the ``LC3`` infix have been removed.
99  * The CAP initiator APIs have been streamlined and follow the same parameter pattern.
100  * Added Kconfig options to make MCC functionality optional to reduce memory usage for simple
101    clients.
102  * Added CAP Commander change volume and change volume offset.
103  * Added proper support for doing decoding in the application instead of in the controller by
104    modifying how the ISO data path is configured.
105  * Added :c:func:`bt_csip_set_member_unregister` to unregister a CSIS instance.
106  * Added helper functions to get and set assigned number values in codec configuration and
107    codec capabilities.
108  * Added support for the new mono audio location.
109  * Added ISO state callbacks for streams so the user knows the state of the CIS.
110  * Added :c:func:`bt_pacs_set_available_contexts_for_conn` to set available context per connection.
111  * Refactored the :c:struct:`bt_bap_base` to be an abstract struct with new helper functions,
112    so that Zephyr supports all BASEs regardless of the size.
113
114* Host
115
116  * Added ``recycled()`` callback to :c:struct:`bt_conn_cb`, which notifies listeners when a
117    connection object has been freed, so it can be utilized for different purposes. No guarantees
118    are made to what listener will be granted the object, as only the first claim is served.
119  * Modified :c:func:`bt_iso_chan_send` to no longer take a timestamp as parameter,
120    and added :c:func:`bt_iso_chan_send_ts` that does.
121
122* Mesh
123
124  * Added the delayable messages functionality to apply random delays for
125    the transmitted responses on the Access layer.
126    The functionality is enabled by the :kconfig:option:`CONFIG_BT_MESH_ACCESS_DELAYABLE_MSG`
127    Kconfig option.
128  * The Bluetooth Mesh protocol 1.1 is now supported by default.
129
130* Controller
131
132  * Added deinit implementation for ESP32 controller.
133
134* HCI Driver
135
136  * Split ST HCI SPI Bluetooth driver from the Zephyr one to provide more features
137    based on ST SPI protocols V1 and V2. As a result, :dtcompatible:`st,hci-spi-v1` and
138    :dtcompatible:`st,hci-spi-v2` were introduced.
139
140Boards & SoC Support
141********************
142
143* Added support for these SoC series:
144
145  * Added support for Renesas R-Car Gen4 series.
146  * Added support for STM32F303xB SoC variants.
147  * Added support for STM32H7B0xx SoC variants.
148  * Added support for STM32L010xx SoC variants.
149  * Added support for STM32L081xx SoC variants.
150  * Added support for STM32U5A9xx SoC variants.
151  * Added support for NXP S32K1 devices.
152  * Added support for NXP IMX8ULP SoC.
153  * Added support for NXP MIMXRT595 DSP core.
154
155* Made these changes in other SoC series:
156
157  * Nordic SoCs now imply :kconfig:option:`CONFIG_XIP` instead of selecting it. This allows for
158    creating RAM-based applications by disabling it.
159  * BLE is now supported on STM32WBA series.
160  * xtensa: imx8: Split the generic i.MX8 SoC into i.MX8QXP and i.MX8QM.
161  * LPC55xxx: Fixed the system hardware clock cycle rate.
162
163* Added support for these ARM boards:
164
165  * Added support for Adafruit QTPy RP2040 board: ``adafruit_qt_py_rp2040``.
166  * Added support for FANKE FK7B0M1-VBT6 board: ``fk7b0m1_vbt6``.
167  * Added support for Renesas R-Car Spider board CR52: ``rcar_spider_cr52``.
168  * Added support for ST Nucleo F722ZE board: ``nucleo_f722ze``.
169  * Added support for ST STM32H750B Discovery Kit: ``stm32h750b_dk``.
170  * Added support for ST STM32L4R9I Discovery board: ``stm32l4r9i_disco``.
171  * Added support for ST STM32U5A9J-DK discovery kit: ``stm32u5a9j_dk``.
172  * Added support for ST Nucleo WBA55CG board: ``nucleo_wba55cg``.
173  * Added support for ST STM32WB5MM-DK Discovery board: ``stm32wb5mm_dk``.
174  * Added support for Wiznet W5500 Evaluation Pico board: ``w5500_evb_pico``.
175  * Added support for ADI boards: ``adi_sdp_k1``, ``adi_eval_adin1110ebz``,
176    ``adi_eval_adin2111ebz``.
177  * Added support for NXP UCANS32K1SIC board: ``ucans32k1sic``.
178
179* Added support for this RISC-V board:
180
181  * Added Lilygo TTGO T8-C3 board: ``ttgo_t8c3``.
182
183* Added support for these Xtensa boards:
184
185  * Added support for NXP iMX8ULP board: ``nxp_adsp_imx8ulp``.
186  * Added Heltec Wireless Stick Lite (V3) board: ``heltec_wireless_stick_lite_v3``.
187  * Added KINCONY-KC868-A32 board: ``kincony_kc868_a32``.
188  * Added Lolin ESP32-S2 Mini board: ``esp32s2_lolin_mini``.
189  * Added Lilygo TTGO LoRa32 board: ``ttgo_lora32``.
190  * Added M5Stack AtomS3 board: ``m5stack_atoms3``.
191  * Added M5Stack AtomS3-Lite board: ``m5stack_atoms3_lite``.
192  * Added M5Stack StampS3 board: ``m5stack_stamps3``.
193
194* Made these changes for ARM boards:
195
196  * Added support for low power on G1120B0MIPI using RT595.
197  * Added support for lpspi, lpi2c on NXP board: ``mimx93_evk_a55``.
198  * Fixed partition naming on ``lpcxpresso55s69`` to use the standard slot
199    naming used by TFM-enabled Zephyr platforms.
200  * Enabled support for linkserver debugger on ``frdm_kl25z``, ``mimxrt1015_evk``,
201    ``mimxrt1020_evk``, ``mimxrt1050_evk``, ``mimxrt685_evk``, ``frdm_k64f``.
202  * Switched MCUBoot FW Update mode on NXP boards from Swap & Scratch to Swap & Move.
203
204* Made these changes for RISC-V boards:
205
206  * Enabled ADC support on ``longan_nano``.
207
208* Made these changes for native/POSIX boards:
209
210  * The :ref:`simulated nrf5340 targets<nrf5340bsim>` now include the IPC and MUTEX peripherals,
211    and support OpenAMP to communicate between the cores.
212    It is now possible to run the BLE controller or 802.15.4 driver in the net core, and application
213    and BT host in the app core.
214
215  * The nrf*_bsim simulated targets now include models of the UART peripheral. It is now possible
216    to connect a :ref:`nrf52_bsim<nrf52_bsim>` UART to another, or a UART in loopback, utilizing
217    both the new and legacy nRFx UART drivers, in any mode.
218
219  * For the native simulator based targets it is now possible to set via Kconfig command line
220    options which will be handled by the executable as if they were provided from the invoking
221    shell.
222
223  * For all native boards, the native logger backend will now also be
224    used even if the UART is enabled.
225
226  * Several bugfixes and other minor additions to the nRF5x HW models.
227
228  * Multiple documentation updates and fixes for all native boards.
229
230* Added support for these following shields:
231
232  * Added support for M5Stack-Core2 base: ``m5stack_core2_ext``.
233  * Added support for MikroElektronika ACCEL 13 Click: ``mikroe_accel13_click``.
234  * Added support for Waveshare Pico UPS-B: ``waveshare_pico_ups_b``.
235  * Added support for X-NUCLEO-BNRG2A1: BLE expansion board: ``x_nucleo_bnrg2a1``.
236  * Added support for X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi
237    sensor: ``x_nucleo_iks4a1``.
238
239Build system and infrastructure
240*******************************
241
242* Added functionality for Link Time Optimization.
243  This change includes interrupt script generator rebuilding and adds the
244  following Kconfig options:
245
246  - :kconfig:option:`CONFIG_ISR_TABLES_LOCAL_DECLARATION`:
247    LTO compatible interrupt tables parser
248  - :kconfig:option:`CONFIG_LTO`: Enable Link Time Optimization
249
250  Currently the LTO compatible interrupt tables parser is only supported by ARM architectures and
251  GCC compiler/linker.
252  See pull request :github:`66392` for details.
253
254* Dropped the ``COMPAT_INCLUDES`` option. It was unused since Zephyr v3.0.
255
256* Fixed an issue whereby board revision ``0`` did not include overlay files for that revision.
257
258* Added ``PRE_IMAGE_CMAKE`` and ``POST_IMAGE_CMAKE`` hooks to sysbuild modules, which allows for
259  modules to run code after and before each image's cmake invocation.
260
261* Added :kconfig:option:`CONFIG_ROM_END_OFFSET` option which allows reducing the size of an image.
262  This is intended for use with firmware signing scripts which add additional data to the end of
263  images outside of the build itself.
264
265* Added MCUboot image size reduction to sysbuild images which include MCUboot. This prevents
266  issues with building firmware images that are too large for MCUboot to swap.
267
268* Deprecated :kconfig:option:`CONFIG_BOOTLOADER_SRAM_SIZE`. Users of this should transition to
269  having RAM set up properly in their board devicetree files.
270
271* Fixed an issue whereby shields were processed in order of the root they resided in rather than
272  the order they were supplied to cmake in.
273
274* Fixed an issue whereby using some shields with sysbuild would cause a cmake Kconfig error.
275
276* Fixed an issue where the macros ``_POSIX_C_SOURCE`` and ``_XOPEN_SOURCE`` would be defined
277  globally when building with Picolibc or for the native (``ARCH_POSIX``) targets.
278  After this change users may need to define them for their own applications or libraries.
279
280* Added support for sysbuild setting a signing script (``SIGNING_SCRIPT``). See
281  :ref:`west-extending-signing` for details.
282
283* Added support for ``FILE_SUFFIX`` in the build system which allows for adding suffixes to
284  application Kconfig fragment file names and devicetree overlay file names. See
285  :ref:`application-file-suffixes` and :ref:`sysbuild_file_suffixes` for details.
286
287* Deprecated ``CONF_FILE`` ``prj_<build>.conf`` build type.
288
289* Added `-Wdouble-promotion` as a default warning when compiling to warn developers with
290  single-precision floats easily being promoted to double-precision.
291
292Drivers and Sensors
293*******************
294
295* ADC
296
297  * Power Management for ADC is now supported on STM32 devices.
298  * STM32 ADC driver now supports mixing shared and separate IRQs (for instance on STM32G473
299    which has 5 ADCs, ADC1 and ADC2 share one IRQ while ADC3, ADC4 and ADC5 each have unique IRQs).
300    Enabling all instances in the same application is not possible on such devices as of now.
301
302* Auxiliary Display
303
304  * Added Sparkfun SerLCD driver.
305
306* Audio
307
308  * Added a driver :file:`drivers/audio/dmic_mcux.c` for NXP DMIC peripheral. This peripheral is
309    present on the ``iMX RT5xx`` and ``iMX RT6xx`` parts, as well as some LPC SOCs.
310
311* Battery backed up RAM
312
313  * STM32WL devices now support BBRAM.
314
315* CAN
316
317  * Added system call :c:func:`can_get_mode()` for getting the current operation mode of a CAN
318    controller.
319
320  * Add system call :c:func:`can_get_transceiver()` for getting the CAN transceiver associated with
321    a CAN controller.
322
323  * Added accessor functions for the CAN statistics.
324
325  * Added common bit error counter to the CAN statistics.
326
327  * Added CAN statistics support to the following drivers:
328
329    * :dtcompatible:`microchip,mcp2515`
330    * :dtcompatible:`espressif,esp32-twai`
331    * :dtcompatible:`kvaser,pcican`
332
333  * Added CAN controller driver for the Nuvoton NuMaker series
334    (:dtcompatible:`nuvoton,numaker-canfd`).
335
336  * Added CAN controller driver for the Infineon XMC4xxx family
337    (:dtcompatible:`infineon,xmc4xxx-can` and :dtcompatible:`infineon,xmc4xxx-can-node`).
338
339  * Added support for the NXP S32K1xx family to the :dtcompatible:`nxp,flexcan` driver.
340
341  * All Bosch M_CAN-based front-end drivers now use named IRQs, "int0" and "int1".
342
343  * The :dtcompatible:`zephyr,native-linux-can` driver now supports being built with embedded C
344    libraries.
345
346  * Added support for setting "raw" timing values from the :ref:`CAN shell <can_shell>`.
347
348* Clock control
349
350  * Renesas R-Car clock control driver now supports Gen4 SoCs.
351  * Renamed ``CONFIG_CLOCK_CONTROL_RA`` to :kconfig:option:`CONFIG_CLOCK_CONTROL_RENESAS_RA`.
352  * On STM32 devices, :dtcompatible:`st,stm32-hse-clock` now allows setting a ``css-enabled``
353    property which enables HSE clock security system (CSS).
354
355* Counter
356
357  * The nRFx counter driver now works with simulated nrf*_bsim targets.
358  * Added support for top value configuration and fixed a bug in the native posix driver.
359  * Added support for the MRT counter for NXP RT6xx, RT5xx and LPC55xxx.
360
361* Crypto
362
363  * STM32WB devices now support crypto API through AES block.
364
365* Display
366
367  * Introduced frame buffer config to STM32 LTDC driver.
368
369* DMA
370
371  * STM32WBA Devices now support GPDMA.
372  * Introduced a new DMA driver :file:`drivers/dma/dma_nxp_edma.c` for NXP's eDMA IP.
373
374* Entropy
375
376  * The "native_posix" entropy driver now accepts a new command line option ``seed-random``.
377    When used, the random generator will be seeded from ``/dev/urandom``
378  * On STM32devices, RNG block is now suspended when pool is full to save power.
379
380* Ethernet
381
382  * The "native_posix" ethernet driver now supports being built with embedded C libraries.
383  * Enabled HW checksum offloading for STM32H7.
384  * Added implementation of Open Alliance's TC6 T1S driver.
385  * Added xmc4xxx driver.
386  * Added NXP enet driver with PTP support.
387  * Added KSZ8081 PHY driver.
388  * Added proper IPv4 multicast support to NXP mcux driver.
389  * Added LAN8651 T1S support.
390  * Added DSA support to STM32.
391  * Added tja1103 PHY support.
392  * Added Nuvoton numaker support.
393  * Fixed lan865x driver. Transmission speed improvements, IRQ handling fixes.
394  * Fixed s32_gmac driver. Link up/down handling fixes.
395  * Fixed phy_mii driver. The invalid phy id was incorrectly checked.
396  * Fixed sam_gmac driver. PTP clock adjustment was wrong for negative values.
397  * Fixed adin2111 driver. Initialization was done incorrectly when working with adin2110.
398  * Fixed ksz8081 driver. Logging changes, RMII clock fixes, GPIO pin fixes.
399  * Added a driver :file:`drivers/ethernet/eth_nxp_enet.c` for NXP ENET which is a rework of
400    the old driver :file:`drivers/ethernet/eth_mcux.c`. The old driver became
401    unmaintainable due to fundamental problems with the lack of PHY abstraction. The new driver
402    is still experimental and requires maturation. Eventually the old driver will be deprecated
403    and this new driver will be supported instead.
404
405* Flash
406
407  * Redesigned the Atmel SAM controller to fully utilize flash page layout.
408  * ``spi_nor`` driver now sleeps between polls in ``spi_nor_wait_until_ready``. If this is not
409    desired (For example due to ROM constraints in a bootloader),
410    :kconfig:option:`CONFIG_SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY` can be disabled.
411  * Flash readout protection configuration was added on STM32G4 and STM32L4 series.
412
413  * ``nordic_qspi_nor`` driver now supports user-configurable QSPI timeout with
414    :kconfig:option:`CONFIG_NORDIC_QSPI_NOR_TIMEOUT_MS`.
415
416* GNSS
417
418  * Added GNSS device driver API and subsystem for parsing and publishing location,
419    datetime, and satellite information, enabled by
420    :kconfig:option:`CONFIG_GNSS` and :kconfig:option:`CONFIG_GNSS_SATELLITES`.
421    The GNSS subsystem and device drivers are based on the :ref:`modem` subsystem,
422    using the ``modem_pipe`` module, modem backends, and ``modem_chat`` module to
423    communicate with the modems. For systems which already contain a cellular modem,
424    adding a GNSS modem is very efficient due to the reuse of subsystems.
425
426  * Added GNSS-specific, safe, string-to-integer parsing utilities, enabled by
427    :kconfig:option:`CONFIG_GNSS_PARSE`.
428
429  * Added NMEA0183 parsing utilities, enabled by
430    :kconfig:option:`CONFIG_GNSS_NMEA0183`.
431
432  * Added extensive GNSS data logging, enabled by
433    :kconfig:option:`CONFIG_GNSS_DUMP_TO_LOG`.
434
435  * Added generic NMEA0183 over UART based modem device driver, matching the
436    devicetree compatible :dtcompatible:`gnss-nmea-generic`.
437
438  * Added fully featured device driver for the Quectel LCX6G series GNSS modems,
439    matching the devicetree compatibles :dtcompatible:`quectel,lc26g`,
440    :dtcompatible:`quectel,lc76g` and :dtcompatible:`quectel,lc86g`.
441
442* GPIO
443
444  * Renesas R-Car GPIO driver now supports Gen4 SoCs.
445  * Renamed ``CONFIG_GPIO_RA`` to :kconfig:option:`CONFIG_GPIO_RENESAS_RA`.
446  * Added a new GPIO driver (:file:`drivers/gpio/gpio_mcux_rgpio.c`). This
447    driver is used for i.MX93 and i.MX8ULP.
448
449* I2C
450
451  * :c:func:`i2c_get_config` is now supported on the STM32 driver.
452
453* I2S
454
455  * STM32H7 devices now support I2S.
456
457* I3C
458
459  * The Legacy Virtual Register defines have been renamed from ``I3C_DCR_I2C_*``
460    to ``I3C_LVR_I2C_*``.
461
462  * Added the ability to specify a start address when searching for a free I3C
463    address to be reserved. This requires a new function argument to
464    :c:func:`i3c_addr_slots_next_free_find`.
465
466  * Added a field named ``num_xfer`` in :c:struct:`i3c_msg` and
467    :c:struct:`i3c_ccc_taget_payload` as an output to indicate the actual
468    number of bytes transferred.
469
470  * Cadence I3C driver (:file:`drivers/i3c/i3c_cdns.c`):
471
472    * Added support to handle controller abort where the target does not emit
473      end of data for register read but continues sending data.
474
475    * Updated the timeout calculation to be coupled with CPU speed instead of
476      a fixed number of retries.
477
478  * NXP MCUX I3C driver (:file:`drivers/i3c/i3c_mcux.c`):
479
480    * Fixed ``mcux_i3c_config_get()`` not returning the configuration to the caller.
481
482    * Improved the FIFO read routine to support higher transfer rates.
483
484    * Removed the infinite wait for MCTRLDONE in auto IBI.
485
486    * Added ``disable-open-drain-high-pp`` property to
487      :dtcompatible:`nxp,mcux-i3c`, which allows alternative high time for
488      open-drain clock.
489
490* IEEE 802.15.4
491
492  * Removed :kconfig:option:`CONFIG_IEEE802154_SELECTIVE_TXPOWER` Kconfig option.
493
494* Input
495
496  * The ``short-codes`` property of :dtcompatible:`zephyr,input-longpress` is
497    now optional. The node can be used by specifying only input and long codes.
498  * Added support for keyboard matrix drivers, including a new
499    :dtcompatible:`gpio-kbd-matrix` and :dtcompatible:`input-keymap` drivers.
500    See :ref:`gpio-kbd` for more details.
501  * Added a pair of input codes to HID codes translation functions. See
502    :c:func:`input_to_hid_code` and :c:func:`input_to_hid_modifier`.
503  * Added power management support to :dtcompatible:`gpio-keys`
504    :dtcompatible:`focaltech,ft5336`.
505  * Added a :dtcompatible:`zephyr,native-linux-evdev` device node for getting
506    input events from a Linux evdev device node.
507  * Added support for optical encoders and power management to :dtcompatible:`gpio-qdec`.
508  * New driver :dtcompatible:`analog-axis`.
509  * Added ESP32 touch sensor driver including a :dtcompatible:`espressif,esp32-touch`.
510
511* MDIO
512
513  * Fixed initialization priorities of NXP s32 NETC drivers.
514  * Fixed SAM GMAC transfer timeout errors caused by MDIO clock not being initialized.
515  * Fixed ESP32 MDIO driver being enabled when node was not status okay.
516  * Added support for C22 and C45 APIs on S32 GMAC.
517  * Added MDIO driver for NXP ENET peripheral.
518  * Added xmc4xxx MDIO drivers.
519  * Fixed build errors caused by mdio.h driver header not including errno.h
520
521* MFD
522
523  * Added support for :dtcompatible:`maxim,max20335`.
524  * Added support for :dtcompatible:`adi,ad5592`.
525  * Added separate initialization priorities for :dtcompatible:`nordic,npm1300` and
526    :dtcompatible:`nordic,npm6001`.
527
528* PCIE
529
530  * Fixed MMIO size calculation by disabling IO/memory decoding beforehand.
531
532  * Modified to use PNP ID for PRT retrieval.
533
534* MEMC
535
536  * Added a new driver for NXP FlexRAM.
537
538* MIPI-DBI
539
540  * Introduced a new :ref:`MIPI DBI driver class <mipi_dbi_api>`.
541
542* Pin control
543
544  * Renesas R-Car pinctrl driver now supports Gen4 SoCs.
545  * Renamed ``CONFIG_PINCTRL_RA`` to :kconfig:option:`CONFIG_PINCTRL_RENESAS_RA`.
546  * Renesas R-Car pinctrl driver now supports voltage control for R8A77951 and
547    R8A77961 SoCs.
548  * Added driver for ZynqMP / Mercury XU.
549  * Added driver for i.MX8QM/QXP.
550  * Added driver for Renesas RZ/T2M.
551  * On STM32 devices, pins assigned to JTAG/SW port can now be put to analog state when
552    :kconfig:option:`CONFIG_PM` enabled and :kconfig:option:`CONFIG_DEBUG` disabled.
553
554* PWM
555
556  * Fixed ESP32S3 low frequency PWM issue.
557
558* Regulators
559
560  * Added new API functions
561
562    * :c:func:`regulator_set_active_discharge`
563    * :c:func:`regulator_get_active_discharge`
564    * :c:func:`regulator_list_current_limit`
565
566  * ``startup-delay-us`` and ``off-on-delay-us`` are now supported for all regulators.
567  * Added non-multithreading support.
568  * Added support for :dtcompatible:`maxim,max20335-regulator`.
569  * Added ASYS UVLO configuration for :dtcompatible:`nxp,pca9420`.
570  * Added LDO/DCDC support for :dtcompatible:`renesas,smartbond-regulator`.
571  * Added LDO soft start configuration for :dtcompatible:`nordic,npm1300-regulator`.
572  * Fixed init priority for :dtcompatible:`x-powers,axp192-regulator`.
573  * Fixed LDO GPIO control for :dtcompatible:`nordic,npm1300-regulator`.
574
575* Retained memory
576
577  * Retained memory driver backend for registers was added.
578
579  * Retained memory API status was changed from experimental to unstable.
580
581* RTC
582
583  * Added Atmel SAM driver.
584
585* SMBUS:
586
587  * SMBUS is now supported on STM32 devices.
588
589* SDHC
590
591  * Added SDHC driver for Cadence SDHC IP.
592  * Added SDHC driver for Infineon CAT1 IP.
593  * Added support for SDIO commands to iMX USDHC SDHC driver.
594
595* Sensor
596
597  * Fixed arithmetic overflow in the LTRF216A driver.
598  * Fixed negative temperature calculation in MAX31865 driver.
599  * Added TI TMAG5273 3D Hall sensor driver.
600  * Added Vishay VCNL36825T proximity sensor driver.
601  * Added BMA4xx accelerometer sensor emulator.
602  * Added white channel support to the VEML7700 ambient light sensor driver.
603  * Added ST LIS2DE12 accelerometer sensor driver.
604  * Added Bosch BMP581 pressure sensor driver.
605  * Added support for triggering multiple sensor devices in the sensor shell.
606  * Added Aosong AGS10 TVOC air quality gas sensor driver.
607  * Extended MAX31865 temperature sensor driver to support changing three-wire
608    mode at runtime.
609  * Fixed Bosch BMI160 gyro range calculation and added support for getting
610    attributes.
611  * Optimized Bosch BMA4xx accelerometer sample calculation, improving
612    accuracy.
613  * Removed floating point arithmetic from the TI BQ274xx gauge driver.
614  * Fixed ST drivers Kconfig dependency to the HAL_ST module.
615  * Added Bosch BMA4xx accelerometer sensor driver.
616  * Added ST LIS2DU12 accelerometer sensor driver.
617  * Extended NTC thermistor driver to support TDK NTCG103JF103FT1.
618  * Added NXP S32 quadrature decoder driver.
619  * Fixed LSM6DSV16x gyro range table.
620  * Fixed missing return value checks in ADLTC2990, TSL2540, MAX17055 drivers.
621  * Added ST LPS28DFW pressure sensor driver.
622  * Fixed interrupt in BMI323 driver.
623  * Added devicetree properties macros to various ST sensor drivers.
624  * Added Renesas HS300x temperature/humidity sensor driver.
625  * Added Gas Sensing Solutions' ExplorIR-M CO2 sensor driver.
626  * Fixed self test delay in ADXL367 accelerometer sensor driver.
627  * Added ST LPS22DF pressure sensor driver.
628  * Added new streaming APIs and implemented in the ICM42688 driver.
629  * Added trigger support to the ADXL367 accelerometer sensor driver.
630  * Added PM suspend and resume support to the LSM6DSL accelerometer sensor
631    driver.
632  * Added AMS TSL2561 light sensor driver.
633  * Extended BQ274xx driver to support configuring and confirming the chemistry
634    profile.
635  * Extended LIS2DH and LSM6DSV16x drivers to support configuring INT1/INT2 in
636    devicetree.
637  * Added die temperature measurement support to NPM1300 charger driver.
638  * Added ADLTC2990 sensor emulator.
639  * Extended MPU6050 driver to support MPU6886 variant.
640  * Added ADXL367 accelerometer sensor driver.
641  * Added LiteOn LTR-F216A illuminance sensor driver.
642  * Added Memsic MC3419 accelerometer sensor driver.
643  * Added AMD SB temperature sensor driver.
644  * Added ESP32S3 internal temperature sensor driver.
645  * Added new self-documenting macros for setting ST sensor devicetree
646    properties (e.g., LSM6DSV16X_DT_ODR_AT_60Hz).  (:github:`65410`)
647
648* Serial
649
650  * Added drivers to support UART on Renesas RA and RZ/T2M.
651  * Added support for higher baud rate for ITE IT8xxx2.
652  * Added driver to support Intel Lightweight UART.
653  * Added UART asynchronous RX helper.
654  * Added support for async API on NS16550 driver.
655  * Updated ``uart_esp32`` to use serial port configuration from devicetree.
656  * Added an adaptation API to provide interrupt driven API for drivers
657    which have only implemented async API.
658
659  * Emulated UART driver (:file:`drivers/serial/uart_emul.c`):
660
661    * Added emulated interrupt based TX.
662    * Added emulated error for testing.
663    * Modified to use local work queue for data transfer.
664    * Modified FIFO size and its handling to be more aligned with real hardware.
665
666  * On STM32 devices, it is now possible to enable FIFO by setting a ``fifo-enable``
667    property in targeted serial node, with the following benefits:
668    In TX, FIFO allows to work in burst mode, easing scheduling of loaded applications.
669    It also allows more reliable communication with UART devices sensitive to variation of inter-frames delays.
670    In RX, FIFO reduces overrun occurrences.
671
672* SPI
673
674  * On STM32H7 devices, ``fifo-enable`` property allows using SPI block FIFO. This
675    feature is still experimental and requires maturation.
676  * On STM32 devices impacted by BSY bit erratum, a workaround was implemented.
677
678* USB
679
680  * On STM2G0 devices, property ``crs-usb-sof`` in ``clk_hsi48`` node enables support
681    for Clock Recovery System, allowing a more stable HSI48 clock and hence resilient USB
682    connection.
683  * On compatible STM32 devices, isochronous endpoints are now functional thanks to the
684    use of double buffering.
685  * Added new UDC driver for DWC2 controller.
686  * Added support for Nuvoton NuMaker series USBD controllers.
687
688* W1
689
690  * Added 1-Wire GPIO master driver. See the :dtcompatible:`zephyr,w1-gpio`
691    devicetree binding for more information.
692
693* Wi-Fi
694
695  * Added Infineon airoc driver.
696  * Fixed esp32 driver. Decreased minimum heap size, disabled automatic reconnection on leaving.
697  * Fixed esp_at driver. Allow building without IPv4 support. Passive Receive mode fixes. Depend on UART runtime configuration.
698  * Fixed winc1500 driver. Disconnect result event was not returned when disconnecting.
699
700Networking
701**********
702
703* CoAP:
704
705  * Added support for Echo and Request-Tag CoAP options (RFC 9175).
706  * Changed :c:func:`coap_remove_observer` API function return type to bool.
707  * Introduced CoAP service library, which simplifies implementation of CoAP
708    server functionality.
709  * Updated CoAP server example to use CoAP service library.
710  * Added shell module for CoAP server.
711  * Fixed NULL pointer dereference in :c:func:`coap_packet_remove_option`.
712  * Added CoAP observer/service network events using the Network Event subsystem.
713  * Changed :c:func:`coap_pending_init` API function to take
714    :c:struct:`coap_transmission_parameters` instead of retry count.
715  * Added new API functions:
716
717    * :c:func:`coap_get_transmission_parameters`
718    * :c:func:`coap_set_transmission_parameters`
719    * :c:func:`coap_handle_request_len`
720    * :c:func:`coap_well_known_core_get_len`
721    * :c:func:`coap_uri_path_match`
722    * :c:func:`coap_packet_is_request`
723    * :c:func:`coap_find_observer`
724    * :c:func:`coap_find_observer_by_token`
725    * :c:func:`coap_pendings_count`
726    * :c:func:`coap_header_set_code`
727
728* Connection Manager:
729
730  * Added a generic Wi-Fi connectivity backend.
731
732* DHCP:
733
734  * Added missing DHCPv6 state structure initialization when initializing
735    network interface.
736  * DHCP-assigned IPv4 address is now removed when interface goes down.
737  * Added DHCPv4 server implementation.
738  * Rearranged DHCPv4 file structure. All DHCPv4 related files are now grouped
739    within ``subsys/net/lib/dhcpv4``.
740  * Moved DHCPv6 files to ``subsys/net/lib/dhcpv6`` to align with DHCPv4.
741
742* DNS:
743
744  * Added support for enabling mDNS listener on all network interfaces.
745  * Added VLAN support to the ``mdns_responder`` sample.
746  * Fixed TTL/hop limit set on DNS packets.
747  * Added :kconfig:option:`CONFIG_DNS_RESOLVER_AUTO_INIT` which allows to disable
748    automatic initialization of the default DNS context on boot.
749
750* Ethernet:
751
752  * Manual registration of ARP entries is now supported.
753  * Added PHY mode selection to device tree.
754  * Added TX-Injection mode support.
755
756* gPTP:
757
758  * The local port identity is now used when forwarding sync messages.
759  * Fixed double converted byte order of BMCA info.
760  * GM PRIO root system id is now always used for announce messages.
761  * Created gPTP handler thread stack size Kconfig option.
762  * Inverted the priority of outgoing packets.
763
764* ICMP:
765
766  * Fixed an error being emitted when unhandled ICMP message was received.
767  * Fixed a bug where ICMP Echo Reply could be sent without proper source IP
768    address set.
769  * Fixed a packet leak in ICMP Echo Request handlers in case priority check
770    failed.
771  * Improved thread safety of the module handling Neighbor Discovery.
772  * Added support for IPv6 Neighbor reachability hints, allowing to reduce
773    ICMPv6 traffic for active connections.
774
775* IP:
776
777  * Fixed L3/L4 checksum calculation/validation for IP-fragmented packets on
778    interfaces that support checksum offload.
779  * Fixed net_context not being set on IP fragmented packets, preventing send
780    callback from being called.
781  * It is now possible to have separate IPv4 TTL value and IPv6 hop limit value for
782    unicast and multicast packets. This can be controlled in each socket via
783    :c:func:`setsockopt` API.
784  * Improved source IP address verification in the IP stack. Addresses received
785    to/from loopback address on non-loopback interfaces are dropped.
786  * Added new functions to verify if IPv6 address is site local or global.
787  * Added support for setting peer IP address in :c:struct:`net_pkt` structure
788    for offloaded interfaces. This allows for :c:func:`recvfrom` to return a
789    valid address in offloaded case.
790
791* LwM2M:
792
793  * Added :kconfig:option:`CONFIG_LWM2M_UPDATE_PERIOD` which configures the LwM2M
794    Update period regardless of the lifetime value.
795  * Fixed composite read/write access rights check.
796  * Added shell command to delete object and resource instances.
797  * Fixed a bug in block-wise transfer where block-wise ACKs were sent with
798    wrong response code.
799  * Fixed object version reporting for LwM2M version 1.1.
800  * Added support for DTLS Connection Identifier in the LwM2M engine.
801  * Added support for LwM2M Server Disable executable resource.
802  * Implemented fallback mechanism for LwM2M server selection during registration
803    phase. The engine will now try to choose a different server if the current one
804    becomes unavailable or disabled.
805  * Added support for storing LwM2M error list in settings.
806  * Fixed pmin observer attribute handling in tickless mode.
807  * Added support for notifying the application about ongoing CoAP transmissions
808    with ``set_socket_state()`` callback.
809  * Deprecated unsigned 64-bit integer value type, as it's not represented in the spec.
810    Use signed 64-bit integer instead.
811  * Added a callback for LwM2M Gateway object, which allows to handle LwM2M messages
812    with prefixed path.
813  * Added LwM2M-specific macros for object initialization during boot.
814  * Several other minor bugfixes ans improvements.
815
816* Misc:
817
818  * Added support for compile time network event handlers using the macro
819    :c:macro:`NET_MGMT_REGISTER_EVENT_HANDLER`.
820  * Added the :kconfig:option:`CONFIG_NET_MGMT_EVENT_WORKER` choice to
821    allow emitting network events using the system work queue or synchronously.
822  * Removed redundant Network Connectivity API documentation page.
823  * Improved thread safety of the network connections subsystem.
824  * Removed ``eth_native_posix`` sample.
825  * Removed redundant ``arb`` and ``fv2015`` fields  from
826    ``struct net_pkt_cb_ieee802154``.
827  * Introduced a separate mutex for TX at the network interface level to prevent
828    concurrent access on TX to drivers that are not re-entrant.
829  * Fixed netmask not being registered for loopback address.
830  * Added support for binding to a specific network interface at the net_context
831    level.
832  * Added IGMPv3 support.
833  * Added a new network event, ``NET_EVENT_HOSTNAME_CHANGED``, triggered upon
834    hostname change.
835  * Refactored net_context option getters/setters to reduce code duplication.
836  * Fixed a possible packet leak at the ARP level, in case of errors during ARP
837    packet creation.
838  * Added support for analyzing SNTP time uncertainty.
839  * Fixed network interface being brought up even when underlying device is not
840    ready.
841  * Added start/stop functions for dummy interfaces.
842  * Added a detailed :ref:`network configuration <network_configuration_guide>`
843    guide to the documentation.
844  * Added :kconfig:option:`CONFIG_NET_HOSTNAME_DYNAMIC` option, which allows to
845    enable setting hostname at runtime.
846
847* MQTT-SN:
848
849  * Added :c:func:`mqtt_sn_get_topic_name` API function.
850  * Fixed handling of incoming Register messages when wildcard subscription is used.
851
852* OpenThread:
853
854  * Implemented the following OpenThread platform APIs:
855
856    * ``otPlatRadioSetRxOnWhenIdle()``
857    * ``otPlatResetToBootloader()``
858    * ``otPlatCryptoPbkdf2GenerateKey()``
859
860  * Updated OpenThread platform UART driver so that it no longer waits for
861    communication with a host to start during boot.
862  * Added BLE TCAT implementation in OpenThread platform.
863  * Updated Crypto PSA backend for OpenThread with additional algorithms.
864  * Fixed ``otPlatAssertFail()`` so that it prints the location of the actual
865    assert instead of the function itself.
866
867* PPP:
868
869  * Fixed PPP connection termination when interface goes down.
870
871* Shell:
872
873  * Refactored networking shell module so that instead of large single file, it
874    is split into submodules, on a per command basis.
875  * Fixed unexpected timeout message when executing loopback ping.
876  * Added ``net sockets`` command to print information about open sockets and
877    socket services.
878  * Join IPv4/IPv6 multicast groups, if needed, when adding IPv4/IPv6 multicast
879    addresses via shell.
880  * Fixed ``tcp connect`` command operation (TCP context released prematurely).
881  * Added support for Echo option in telnet shell backend.
882  * Fixed unnecessary connection close in telnet shell backend in case of
883    non-fatal EAGAIN or ENOBUFS errors.
884  * Fixed double packet dereference in ping reply handler.
885  * Fixed possible deadlock when executing ``net arp`` command.
886  * Added more detailed Ethernet statistics printout for ``net stats`` command.
887  * Added ``net dhcpv4 server`` commands for DHCPv4 server management.
888  * Added shell module to manage TLS credentials.
889
890* Sockets:
891
892  * Added support for v4-mapping-to-v6, which allows IPv4 and IPv6 to share the
893    same port space.
894  * Added support for :c:macro:`IPV6_V6ONLY` socket option.
895  * Added support for :c:macro:`SO_ERROR` socket option.
896  * Fixed :c:func:`select` not setting ``writefds`` in case of errors.
897  * Added support for object core, which allows to track networks sockets and
898    their statistics.
899  * Added support for :c:func:`recvmsg`.
900  * Added support for :c:macro:`IP_PKTINFO` and :c:macro:`IPV6_RECVPKTINFO`
901    socket options.
902  * Added support for :c:macro:`IP_TTL` socket option.
903  * Added support for IPv4 multicast :c:macro:`IP_ADD_MEMBERSHIP` and
904    :c:macro:`IP_DROP_MEMBERSHIP` socket options.
905  * Added support for IPv6 multicast :c:macro:`IPV6_ADD_MEMBERSHIP` and
906    :c:macro:`IPV6_DROP_MEMBERSHIP` socket options.
907  * Improved doxygen documentation of BSD socket API.
908  * Fixed POLLERR error reporting in TLS sockets.
909  * Fixed DTLS handshake processing during :c:func:`poll`.
910  * Aligned DTLS socket :c:func:`connect` behavior with regular TLS (handshake
911    during connect call).
912  * Added Socket Service library, which allows registering multiple socket-based
913    network services and processing them within a single thread.
914  * Added a new ``echo_service`` sample for Socket Service.
915  * Added support for :c:macro:`SO_DOMAIN` socket option.
916  * Fixed DTLS connection timeout when monitoring socket with :c:func:`poll`.
917  * Fixed NULL link layer address pointer dereference on packet socket, in case
918    of packet loopback.
919  * Several other minor bugfixes and improvements.
920
921* TCP:
922
923  * TCP stack now replies with RST packet in response to connection attempt on
924    a closed port.
925  * Fixed remote address passed in :c:func:`accept` call.
926  * Fixed reference counting during active handshake to prevent TCP context
927    being released prematurely.
928  * Fixed compilation with :kconfig:option:`CONFIG_NET_TCP_CONGESTION_AVOIDANCE`
929    disabled.
930  * Reworked TCP data queueing API to prevent TCP stack from overflowing TX window.
931  * Fixed possible race condition between TCP workqueue and other threads when
932    releasing TCP context.
933  * Fixed possible race condition between input thread and TCP workqueue.
934  * Added support for TCP Keep-Alive feature.
935  * Fixed a bug where TCP state machine could get stuck in LAST_ACK state
936    during passive connection close.
937  * Fixed a bug where TCP state machine could get stuck in FIN_WAIT_1 state
938    in case peer did not respond.
939  * Several other minor bugfixes ans improvements.
940
941* TFTP:
942
943  * Fixed potential buffer overflow when copying TFTP error message.
944  * Improved logging in case of errors.
945
946* Wi-Fi:
947
948  * Added Wi-Fi driver version information to Wi-Fi shell.
949  * Added AP (Access Point) mode support to Wi-Fi shell.
950  * Added Regulatory channel information.
951  * Added Wi-Fi bindings to connection manager.
952  * Fixed Wi-Fi shell. SSID print fixes. Help text fixes. Channel validation fixes.
953  * Fixed TWT functionality. Teardown status was not updated. Powersave fixes.
954
955* zperf:
956
957  * Improved IP address binding. Zperf will now bind to any address by default and
958    allow to override this with Kconfig/API provided address.
959  * Fixed TCP packet counting when transmitting.
960  * Refactored UDP/TCP received to use Socket Service to save memory.
961  * Fixed zperf session leak on interrupted downloads.
962  * Fixed the calculation ratio between Mbps, Kbps and bps.
963  * The zperf sample now supports relocating network code to RAM.
964
965USB
966***
967
968* Device support:
969
970  * Introduced new USB Audio 2 implementation that uses devicetree for
971    instantiation, hiding descriptor complexity from the application. The initial
972    implementation is limited to full speed only and provides the absolute
973    minimum set of features required for basic implicit and explicit feedback.
974    Interrupt notification is not supported.
975  * Added support for SetFeature(TEST_MODE).
976
977Devicetree
978**********
979
980Bindings
981========
982
983  * Introduced new SPI properties ``spi-cpol``, ``spi-cpha``, and ``spi-hold-cs`` to be used by
984    the macro :c:macro:`SPI_CONFIG_DT` in order to set SPI mode in a Devicetree file.
985
986Libraries / Subsystems
987**********************
988
989* Management
990
991  * Fixed an issue in MCUmgr image management whereby erasing an already erased slot would return
992    an unknown error. It now returns success.
993
994  * Fixed MCUmgr UDP transport structs being statically initialised. This results in about a
995    ~5KiB flash saving.
996
997  * Fixed an issue in MCUmgr which would cause a user data buffer overflow if the UDP transport was
998    enabled on IPv4 only but IPv6 support was enabled in the kernel.
999
1000  * Implemented datetime functionality in MCUmgr OS management group. This makes use of the RTC
1001    driver API.
1002
1003  * Fixed an issue in MCUmgr console UART input whereby the FIFO would be read outside of an ISR,
1004    which is not supported in the next USB stack.
1005
1006  * Fixed an issue whereby the ``mcuboot erase`` DFU shell command could be used to erase the
1007    MCUboot or currently running application slot.
1008
1009  * Fixed an issue whereby messages that were too large to be sent over the UDP transport would
1010    wrongly return :c:enumerator:`MGMT_ERR_EINVAL` instead of :c:enumerator:`MGMT_ERR_EMSGSIZE`.
1011
1012  * Fixed an issue where confirming an image in Direct XIP mode would always confirm the image in
1013    the primary slot even when executing from the secondary slot. Now the currently active image is
1014    always confirmed.
1015
1016  * Added support for retrieving registered command groups, to support registering and deregistering
1017    default command groups at runtime, allowing an application to support multiple implementations
1018    for the same command group.
1019
1020  * Fixed an issue in MCUmgr FS management whereby the semaphore lock would not be given if an
1021    error was returned, leading to a possible deadlock.
1022
1023  * Added support for custom payload MCUmgr handlers. This can be enabled with
1024    :kconfig:option:`CONFIG_MCUMGR_MGMT_CUSTOM_PAYLOAD`.
1025
1026  * Fixed an issue in MCUmgr image management whereby an error would be returned if a command was
1027    sent to erase the slot which was already erased.
1028
1029  * Added support for image slot size checking to ensure an update can be utilised by MCUboot.
1030    This can be performed by using sysbuild when building both application and MCUboot by enabling
1031    :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_SYSBUILD` or by use of bootloader information
1032    sharing from MCUboot by enabling
1033    :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_BOOTLOADER_INFO`.
1034
1035* Logging
1036
1037  * Added an option to remove string literals from the binary when dictionary-based logging is used.
1038
1039  * Optimized the most common logging messages (strings with up to 2 numeric arguments). Optimization
1040    is done for code size (significant gain seen on riscv32) and performance.
1041
1042  * Extended logging frontend API to optionally implement dedicated functions for optimized messages.
1043    Optional API is enabled by :kconfig:option:`CONFIG_LOG_FRONTEND_OPT_API`.
1044
1045  * Added support for runtime message filtering for the logging frontend.
1046
1047  * Added option to support multiple instances of the UART logging backend.
1048
1049  * Fixed userspace issue for :c:func:`printk` when :kconfig:option:`CONFIG_LOG_PRINTK` is enabled.
1050
1051  * Added compile time detection of logging messages that use character pointers for ``%p``.
1052    It must be avoided when dictionary-based logging is used and strings are stripped from the
1053    binary. When an erroneous case is detected, the user message is replaced with an error message
1054    that suggests pointer casting must be added.
1055
1056  * Removed remaining references to v2 logging. Renamed :c:func:`log2_generic` to :c:func:`log_generic`.
1057
1058* Modem modules
1059
1060  * Added ``TRANSMIT_IDLE`` event to the ``modem_pipe`` module which notifies the user of the pipe
1061    that the backend has transmitted all bytes placed in its buffer using
1062    :c:func:`modem_pipe_transmit()`.
1063    The event greatly increases the efficiency of transmitting large quantities of data if used to
1064    dynamically manage the delay between calls to :c:func:`modem_pipe_transmit()`.
1065
1066  * Implemented ``TRANSMIT_IDLE`` event in all modem backends.
1067
1068  * Extended all modem modules to utilize the ``TRANSMIT_IDLE`` event to dynamically manage the delay
1069    between calls to :c:func:`modem_pipe_transmit()`. This addition reduced the utilization of the
1070    system workqueue while transmitting large, continuous quantities of data, by 86%, while only
1071    reducing the throughput by 12%. This optimization additionally allows lower priority threads,
1072    like the deferred logging thread, to run during the transmission (it was blocked by the
1073    relentless, continuous calls to :c:func:`modem_pipe_transmit()`).
1074
1075  * Improved ``modem_pipe`` event dispatching. The ``modem_pipe`` module now invokes the
1076    ``RECEIVE_READY`` event every time the pipe is attached using :c:func:`modem_pipe_attach()`
1077    if it has data ready to be read, and always invokes ``TRANSMIT_IDLE`` when the pipe is
1078    either opened or attached. This ensures event driven users of the modem pipe module can
1079    rely solely on the events to start read/transmit work. A test suite has been added to
1080    complement the improvements.
1081
1082  * Extended ``modem_cmux`` module to support acting both as DTE (user application) and DCE (modem).
1083    With this addition, two Zephyr applications can communicate with each other through their
1084    respective ``modem_cmux`` instances.
1085
1086* Picolibc
1087
1088  * Updated to version 1.8.6. This removes the :c:macro:`_POSIX_C_SOURCE` definition from the build
1089    system, so applications will need to add this if they use APIs outside of the Zephyr
1090    requirements.
1091
1092  * Added new :c:func:`printf` modes, :kconfig:option:`CONFIG_PICOLIBC_IO_LONG_LONG` and
1093    :kconfig:option:`CONFIG_PICOLIBC_IO_MINIMAL`. These provide applications with finer grained
1094    control over the level of support provided by the library to control text space usage. By
1095    default, the correct level of support is selected based upon other configuration parameters.
1096
1097  * Added :kconfig:option:`CONFIG_PICOLIBC_ASSERT_VERBOSE`. This option, which is false by default,
1098    controls whether the :c:func:`assert` function displays verbose information, including the file
1099    name, line number, function name and failing expression text, when the assertion fails. Leaving
1100    this disabled saves text space.
1101
1102  * :kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE` can now be disabled while using Picolibc. This is
1103    very helpful in diagnosing issues when using Picolibc as those are often caused by enabling TLS
1104    and not caused by using the library itself.
1105
1106  * Numerous improvements in the library including code-size reductions in areas like printf and
1107    ctype and various fixes in the math library.
1108
1109* Power management
1110
1111  * Introduced Atmel SAM SUPC functions to allow wakeup sources and poweroff.
1112  * STM32F4 devices now support stop mode thanks to the use of a RTC based idle timer which
1113    keeps track of tick evolution while cortex systick is off.
1114
1115  * :c:func:`pm_device_runtime_put_async()` got a parameter to specify a minimum delay to
1116    the operation. This is useful to avoid multiple states transitions when a device is used.
1117
1118  * Devices that don't need to block when suspending or resuming can now be defined as ISR
1119    safe (``PM_DEVICE_ISR_SAFE``). For those devices, Zephyr is able to reduce RAM consumption
1120    and runtime device power management can be safely used from interrupts.
1121
1122  * Optimizations in device runtime power management. :c:func:`pm_device_runtime_get` and
1123    :c:func:`pm_device_runtime_put` no longer wait for a pending operation to be concluded if it is still
1124    in the work queue. In this case, the pending work is just canceled and the device state updated.
1125
1126  * The Kconfig options below were added to customize the initialization priority of different
1127    power domains.
1128
1129    * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY`
1130    * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_MONITOR_INIT_PRIORITY`
1131    * :kconfig:option:`CONFIG_POWER_DOMAIN_INTEL_ADSP_INIT_PRIORITY`
1132
1133* Crypto
1134
1135  * Mbed TLS updated to 3.5.2. Full release notes can be found in:
1136    https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.5.2
1137
1138* Retention
1139
1140  * Fixed issue whereby :kconfig:option:`CONFIG_RETENTION_BUFFER_SIZE` values over 256 would cause
1141    an infinite loop due to use of 8-bit variables.
1142
1143* SD
1144
1145  * Added support for SDIO devices.
1146
1147* Storage
1148
1149  * File systems: LittleFS module has been updated to version 2.8.1.
1150
1151  * Following Flash Map API macros, marked in 3.2 as deprecated, have been removed:
1152    ``FLASH_AREA_ID``, ``FLASH_AREA_OFFSET``, ``FLASH_AREA_SIZE``,
1153    ``FLASH_AREA_LABEL_EXISTS`` and ``FLASH_AREA_DEVICE``.
1154
1155* POSIX API
1156
1157  * Completed support for ``POSIX_THREADS_EXT``, ``XSI_THREADS_EXT``,
1158    ``POSIX_CLOCK_SELECTION``, and ``POSIX_SEMAPHORES`` Option Groups.
1159
1160  * Completed support for ``_POSIX_MESSAGE_PASSING`` and
1161    ``_POSIX_PRIORITY_SCHEDULING`` Options.
1162
1163  * Fixed Coverity-CID 211585, 334906, 334909, and 340851.
1164
1165  * Improved structure and accuracy of POSIX documentation.
1166
1167  * Improved navigation and organization of POSIX Kconfig options.
1168
1169  * Added support to allocate and free stacks up to 8 MB with pthread_attr_t.
1170
1171  * Added support for deferred and asynchronous thread cancellation.
1172
1173  * Added dining philosophers sample application.
1174
1175  * Added support for named semaphores.
1176
1177  * Added a top-level ``posix`` command in the Zephyr shell. Zephyr shell utilities for
1178    the POSIX API can be added as subcommands (e.g. ``posix uname -a``)
1179
1180  * Added support for async thread cancellation and ``SIGEV_THREAD``, ``CLOCK_REALTIME``.
1181
1182  * Added compile-time-constant sysconf() implementation.
1183
1184* LoRa/LoRaWAN
1185
1186 * Added LoRaWAN remote multicast support with :kconfig:option:`CONFIG_LORAWAN_REMOTE_MULTICAST`
1187   in preparation for OTA firmware upgrade support.
1188
1189* ZBus
1190
1191  * Replaced mutexes with semaphores to lock channels and implement the Highest Locker Protocol (HLP)
1192    priority boost for the zbus operations. This feature avoids priority inversions and preemptions,
1193    making the VDED delivery process faster and more consistent. (:github:`63183`)
1194
1195  * Fixed documentation for :c:func:`zbus_chan_add` and :c:func:`zbus_chan_rm` adding the timeout
1196    argument. (:github:`65544`)
1197
1198  * Fixed warning when mixing C and C++ files using zbus. (:github:`65222`)
1199
1200  * :c:macro:`ZBUS_CHANNEL_DEFINE` macro is now compatible with C++. (:github:`65196`)
1201
1202  * Fixed parameter order of net buf pool fixed definition. (:github:`65039`)
1203
1204  * Refactored the benchmark sample, adding message subscribers. (:github:`64524`)
1205
1206  * Renamed ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC`` and
1207    ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC`` to
1208    :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC` and
1209    :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC`. (:github:`65632`)
1210
1211HALs
1212****
1213
1214* STM32
1215
1216  * Updated STM32F1 to cube version V1.8.5.
1217  * Updated STM32F7 to cube version V1.17.1.
1218  * Updated STM32H7 to cube version V1.11.1.
1219  * Updated STM32L4 to cube version V1.18.0.
1220  * Updated STM32U5 to cube version V1.4.0.
1221  * Updated STM32WBA to cube version V1.2.0.
1222  * Updated STM32WB to cube version V1.18.0.
1223
1224MCUboot
1225*******
1226
1227  * Fixed compatible sector checking in bootutil.
1228
1229  * Fixed Kconfig issue with saving encrypted TLVs not depending on encryption being enabled.
1230
1231  * Fixed issue with missing condition check for applications in sysflash include file.
1232
1233  * Fixed issue with single slot encrypted image listing support in boot_serial.
1234
1235  * Fixed issue with allowing MBEDTLS Kconfig selection when tinycrypt is used.
1236
1237  * Fixed missing response if echo command was disabled in boot_serial.
1238
1239  * Fixed issue with USB configurations not generating usable images.
1240
1241  * Added debug logging for boot status write in bootutil.
1242
1243  * Added estimated image overhead size to cache in sysbuild.
1244
1245  * Added firmware loader operating mode which allows for a dedicated secondary slot image that
1246    is used to update the primary image.
1247
1248  * Added error if main thread is not pre-emptible when USB CDC serial recovery is enabled.
1249
1250  * Added error if USB CDC and console are both enabled and set to the same device.
1251
1252  * Removed the deprecated ``CONFIG_ZEPHYR_TRY_MASS_ERASE`` Kconfig option.
1253
1254  * Updated zcbor to version 0.8.1 and re-generated boot_serial files.
1255
1256  * Moved IO functions out of main to separate file.
1257
1258  * Made ``align`` parameter of imgtool optional.
1259
1260  * Added MCUBoot support for ``mimxrt1010_evk``, ``mimxrt1015_evk``,
1261    ``mimxrt1040_evk``, ``lpcxpresso55s06``, ``lpcxpresso55s16``,
1262    ``lpcxpresso55s28``, ``lpcxpresso55s36``, ``lpcxpresso55s69_cpu0``.
1263
1264  * Added :kconfig:option:`CONFIG_MCUBOOT_IMGTOOL_OVERWRITE_ONLY` which passes the --overwrite-only option
1265    to imgtool to avoid adding the swap status area size when calculating overflow.
1266    It is used by non-swap update modes.
1267
1268  * The MCUboot version in this release is version ``2.1.0+0-dev``.
1269
1270zcbor
1271*****
1272
1273zcbor has been updated from 0.7.0 to 0.8.1.
1274Full release notes can be found at:
1275https://github.com/zephyrproject-rtos/zcbor/blob/0.8.0/RELEASE_NOTES.md and
1276https://github.com/zephyrproject-rtos/zcbor/blob/0.8.1/RELEASE_NOTES.md
1277
1278Highlights:
1279
1280* Addded support for unordered maps.
1281* Performance improvements.
1282* Naming improvements for generated code.
1283* Bugfixes.
1284
1285LVGL
1286****
1287
1288LVGL has been updated from 8.3.7 to 8.3.11.
1289Detailed release notes can be found at:
1290https://github.com/zephyrproject-rtos/lvgl/blob/zephyr/docs/CHANGELOG.md
1291
1292Additionally, the following changes in Zephyr were done:
1293
1294  * Added the :dtcompatible:`zephyr,lvgl-keypad-input` compatible for keypad input.
1295
1296  * Fixed issue with the Zephyr log levels not mapping properly to LVGL log levels.
1297
1298  * Fixed issue where setting :kconfig:option:`CONFIG_LV_Z_FULL_REFRESH` did not
1299    set :kconfig:option:`CONFIG_LV_Z_VDB_SIZE` to 100 percent.
1300
1301Tests and Samples
1302*****************
1303
1304* :ref:`native_sim<native_sim>` has replaced :ref:`native_posix<native_posix>` as the default
1305  test platform.
1306  :ref:`native_posix<native_posix>` remains supported and used in testing but will be deprecated
1307  in a future release.
1308
1309* Bluetooth split stacks tests, where the BT host and controller are run in separate MCUs, are
1310  now run in CI based on the :ref:`nrf5340_bsim<nrf5340bsim>` targets.
1311  Several other runtime AMP tests based on these targets have been added to CI, including tests
1312  of OpenAMP, the mbox and IPC drivers/subsystem, and the logger multidomain functionality.
1313
1314* Runtime UART tests have been added to CI based on the :ref:`nrf52_bsim<nrf52_bsim>` target.
1315  These include tests of the nRFx UART driver and networked BT stack tests with the host and
1316  controller in separate devices communicating over the HCI UART driver.
1317
1318* Fixed an issue in :zephyr:code-sample:`smp-svr` sample whereby if USB was already initialised,
1319  application would fail to boot properly.
1320
1321* Added an LVGL sample :zephyr:code-sample:`lvgl-accelerometer-chart` showcasing displaying of live
1322  sensor data in a chart widget.
1323
1324* Added ESP32-S3 IPM support in :zephyr:code-sample:`ipm-esp32`.
1325
1326* Added ESP32 memory-mapped flash access sample in :zephyr:code-sample:`esp32-flash-memory-mapped`.
1327
1328* Added ESP32 PWM loopback test case.
1329
1330* Added support in the mbox sample for NXP boards ``MIMXRT1160-EVK``, ``MIMXRT1170-EVK``,
1331  ``MIMXRT1170-EVKB``, ``LPCXpresso55S69``.
1332
1333* Added a sample ``flexram-magic-addr`` for ``mimxrt11xx_cm7`` to show how to use flexram magic
1334  address functionality when using memc flexram driver.
1335