| :orphan: | 
 |  | 
 | .. _zephyr_3.4: | 
 |  | 
 | Zephyr 3.4.0 | 
 | ############ | 
 |  | 
 | We are pleased to announce the release of Zephyr version 3.4.0. | 
 |  | 
 | Major enhancements with this release include: | 
 |  | 
 | * Input subsystem: handles input events from various types of input devices and | 
 |   distributes them to other threads in the application. | 
 | * Barrier API: added architecture agnostic API for data memory barriers. | 
 | * USB Device support: | 
 |  | 
 |   * USB device controller API (UDC API) and nRF USBD controller driver. | 
 |   * USB device stack implementation using new UDC API. | 
 |  | 
 | * Added Power Delivery Source Support to the USB-C Stack. | 
 | * Bluetooth: Added support for Periodic Advertising with Responses (PAwR). | 
 | * Cache API functions are now fully in-lined by compilers. | 
 | * Added an API for real-time clocks (RTC). | 
 | * Added Retention subsystem. | 
 | * Added initial support for MMU on Xtensa. | 
 | * SMBus (System Management Bus) API. | 
 | * Various improvements to the testing framework and twister: | 
 |  | 
 |   - Introduction of 3 new test harnesses into twister supporting pyTest, | 
 |     GoogleTest and Robot Framework. | 
 |   - Transitioning to new Ztest API was completed and legacy Ztest was deprecated. | 
 |  | 
 | * Added Snippets: Support common configuration settings that can be used across | 
 |   platforms. | 
 |  | 
 | The following sections provide detailed lists of changes by component. | 
 |  | 
 | Security Vulnerability Related | 
 | ****************************** | 
 |  | 
 | The following CVEs are addressed by this release: | 
 |  | 
 | More detailed information can be found in: | 
 | https://docs.zephyrproject.org/latest/security/vulnerabilities.html | 
 |  | 
 | * CVE-2023-1901: Under embargo until 2023-07-04 | 
 |  | 
 | * CVE-2023-1902: Under embargo until 2023-07-04 | 
 |  | 
 | API Changes | 
 | *********** | 
 |  | 
 | Changes in this release | 
 | ======================= | 
 |  | 
 | * Any applications using the mcuboot image manager | 
 |   (:kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`) will now need to also select | 
 |   :kconfig:option:`CONFIG_FLASH_MAP` and :kconfig:option:`CONFIG_STREAM_FLASH`, | 
 |   this prevents a cmake dependency loop if the image manager Kconfig is enabled | 
 |   manually without also manually enabling the other options. | 
 |  | 
 | * Including hawkbit in an application now requires additional Kconfig options | 
 |   to be selected, previously these options would have been selected | 
 |   automatically but have changed from ``select`` options in Kconfig files to | 
 |   ``depends on``: | 
 |  | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NVS`                     | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_FLASH`                   | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_FLASH_MAP`               | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_STREAM_FLASH`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_REBOOT`                  | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_HWINFO`                  | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_TCP`                 | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_SOCKETS`             | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_IMG_MANAGER`             | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NETWORKING`              | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_HTTP_CLIENT`             | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_DNS_RESOLVER`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_JSON_LIBRARY`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      | | 
 |    +--------------------------------------------------+ | 
 |  | 
 | * Including updatehub in an application now requires additional Kconfig options | 
 |   to be selected, previously these options would have been selected | 
 |   automatically but have changed from ``select`` options in Kconfig files to | 
 |   ``depends on``: | 
 |  | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_FLASH`                   | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_STREAM_FLASH`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_FLASH_MAP`               | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_REBOOT`                  | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`     | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_IMG_MANAGER`             | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK`  | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_MPU_ALLOW_FLASH_WRITE`   | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NETWORKING`              | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_UDP`                 | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_SOCKETS`             | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_COAP`                    | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_DNS_RESOLVER`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_JSON_LIBRARY`            | | 
 |    +--------------------------------------------------+ | 
 |    | :kconfig:option:`CONFIG_HWINFO`                  | | 
 |    +--------------------------------------------------+ | 
 |  | 
 | * The sensor driver API clarified :c:func:`sensor_trigger_set` to state that | 
 |   the user-allocated sensor trigger will be stored by the driver as a pointer, | 
 |   rather than a copy, and passed back to the handler. This enables the handler | 
 |   to use :c:macro:`CONTAINER_OF` to retrieve a context pointer when the trigger | 
 |   is embedded in a larger struct and requires that the trigger is not allocated | 
 |   on the stack. Applications that allocate a sensor trigger on the stack need | 
 |   to be updated. | 
 |  | 
 | * Converted few drivers to the :ref:`input` subsystem. | 
 |  | 
 |   * ``gpio_keys``: moved out of ``gpio``, replaced the custom API to use input | 
 |     events instead, the :dtcompatible:`zephyr,gpio-keys` binding is unchanged | 
 |     but now requires ``zephyr,code`` to be set. | 
 |   * ``ft5336``: moved from ``kscan_api`` to :ref:`input`, renamed the Kconfig | 
 |     options from ``CONFIG_KSCAN_FT5336``, ``CONFIG_KSCAN_FT5336_PERIOD`` and | 
 |     ``KSCAN_FT5336_INTERRUPT`` to :kconfig:option:`CONFIG_INPUT_FT5336`, | 
 |     :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD` and | 
 |     :kconfig:option:`CONFIG_INPUT_FT5336_INTERRUPT`. | 
 |   * ``kscan_sdl``: moved from ``kscan_api`` to :ref:`input`, renamed the Kconfig | 
 |     option from ``KSCAN_SDL`` to :kconfig:option:`CONFIG_INPUT_SDL_TOUCH` and the | 
 |     compatible from ``zephyr,sdl-kscan`` to | 
 |     :dtcompatible:`zephyr,input-sdl-touch`. | 
 |   * ``nuvoton,npcx-kscan`` moved to :ref:`input`, renamed the Kconfig option | 
 |     names from ``KSCAN_NPCX_...`` to ``INPUT_NPCX_KBD...`` and the compatible | 
 |     from ``nuvoton,npcx-kscan`` to :dtcompatible:`nuvoton,npcx-kbd`. | 
 |   * Touchscreen drivers converted to use the input APIs can use the | 
 |     :dtcompatible:`zephyr,kscan-input` driver to maintain Kscan compatibility. | 
 |  | 
 | * The declaration of :c:func:`main` has been changed from ``void | 
 |   main(void)`` to ``int main(void)``. The main function is required to | 
 |   return the value zero. All other return values are reserved. This aligns | 
 |   Zephyr with the C and C++ language specification requirements for | 
 |   "hosted" environments, avoiding compiler warnings and errors. These | 
 |   compiler messages are generated when applications are built in "hosted" | 
 |   mode (which means without the ``-ffreestanding`` compiler flag). As the | 
 |   ``-ffreestanding`` flag is currently enabled unless the application is | 
 |   using picolibc, only applications using picolibc will be affected by this | 
 |   change at this time. | 
 |  | 
 | * The following network interface APIs now take additional, | 
 |   ``struct net_if * iface`` parameter: | 
 |  | 
 |   * :c:func:`net_if_ipv4_maddr_join` | 
 |   * :c:func:`net_if_ipv4_maddr_leave` | 
 |   * :c:func:`net_if_ipv6_maddr_join` | 
 |   * :c:func:`net_if_ipv6_maddr_leave` | 
 |  | 
 | * MCUmgr transports now need to set up the struct before registering it by | 
 |   setting the function pointers to the function handlers, these have been | 
 |   moved to a ``functions`` struct object of type | 
 |   :c:struct:`smp_transport_api_t`. Because of these changes, the legacy | 
 |   transport registration function and object are no longer available. The | 
 |   registration function now returns a value which is 0 for success or a | 
 |   negative error code if an error occurred. | 
 |  | 
 | * Added a new flag :c:struct:`dac_channel_cfg` ``buffered`` for DAC channels in | 
 |   :c:struct:`dac_channel_cfg` to allow the configuration of the output buffer. | 
 |   The actual interpretation of this depends on the hardware and is so far only | 
 |   implemented for the STM32 DAC driver. Implicitly for this driver this changes | 
 |   the default from being buffered to unbuffered. | 
 |  | 
 | * MCUmgr fs_mgmt group's file access hook is now called for all fs_mgmt group | 
 |   functions (adding support for file status and file hash/checksum). In | 
 |   addition, if the file access state is not lost, it will now only be called | 
 |   once for the file access instead of each time a command is received. | 
 |   Note that the structure for the notification has changed, the ``upload`` bool | 
 |   has been replaced with an enum to indicate what function is used, see | 
 |   :c:struct:`fs_mgmt_file_access` for the new structure definition. | 
 |  | 
 | * Iterable sections API is now available at | 
 |   :zephyr_file:`include/zephyr/sys/iterable_sections.h`. LD linker snippets are | 
 |   available at :zephyr_file:`include/zephyr/linker/iterable_sections.h`. | 
 |  | 
 | * Cache API functions are now fully inlined by compilers. | 
 |  | 
 | * The Bluetooth HCI headers have been reworked, with ``hci.h`` now containing | 
 |   only the function prototypes and the new ``hci_types.h`` defining all | 
 |   HCI-related macros and structs. The previous ``hci_err.h`` has been merged | 
 |   into ``hci_types.h``. | 
 |  | 
 | Removed APIs in this release | 
 | ============================ | 
 |  | 
 | * Pinmux API has been removed. Pin control needs to be used as its replacement, | 
 |   refer to :ref:`pinctrl-guide` for more details. | 
 |  | 
 | Deprecated in this release | 
 | ========================== | 
 |  | 
 | * Configuring applications with ``prj_<board>.conf`` files has been deprecated, | 
 |   this should be replaced by using a prj.conf with the common configuration and | 
 |   board-specific configuration in board Kconfig fragments in the ``boards`` | 
 |   folder of the application. | 
 |  | 
 | * On nRF51 and nRF52-based boards, the behavior of the reset reason being | 
 |   provided to :c:func:`sys_reboot` and being set in the GPREGRET register has | 
 |   been dropped. This function will now just reboot the device without changing | 
 |   the register contents. The new method for setting this register uses the boot | 
 |   mode feature of the retention subsystem, see the | 
 |   :ref:`boot mode API <boot_mode_api>` for details. To restore the deprecated | 
 |   functionality, enable | 
 |   :kconfig:option:`CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET`. | 
 |  | 
 | * Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` in favor of the standardized | 
 |   :c:func:`pthread_barrier_init` | 
 |  | 
 | * On all STM32 targets except STM32F2 series, Ethernet drivers implementation | 
 |   based on STM32Cube Ethernet API V1 (:kconfig:option:`CONFIG_ETH_STM32_HAL_API_V1`) | 
 |   is now deprecated in favor of implementation based on more reliable and performant | 
 |   STM32Cube Ethernet API V2. | 
 |  | 
 | * Legacy Ztest API was deprecated. All new tests shall use the new Ztest API. | 
 |  | 
 | Stable API changes in this release | 
 | ================================== | 
 |  | 
 | * Removed ``bt_set_oob_data_flag`` and replaced it with two new API calls: | 
 |   * :c:func:`bt_le_oob_set_sc_flag` for setting/clearing OOB flag in SC pairing | 
 |   * :c:func:`bt_le_oob_set_legacy_flag` for setting/clearing OOB flag in legacy paring | 
 |  | 
 | * :c:macro:`SYS_INIT` callback no longer requires a :c:struct:`device` argument. | 
 |   The new callback signature is ``int f(void)``. A utility script to | 
 |   automatically migrate existing projects can be found in | 
 |   :zephyr_file:`scripts/utils/migrate_sys_init.py`. | 
 |  | 
 | * Changed :c:struct:`spi_config` ``cs`` (:c:struct:`spi_cs_control`) from | 
 |   pointer to struct member. This allows using the existing SPI dt-spec macros in | 
 |   C++. SPI controller drivers doing ``NULL`` checks on the ``cs`` field to check | 
 |   if CS is GPIO-based or not, must now use :c:func:`spi_cs_is_gpio` or | 
 |   :c:func:`spi_cs_is_gpio_dt` calls. | 
 |  | 
 | New APIs in this release | 
 | ======================== | 
 |  | 
 | * Introduced :c:func:`flash_ex_op` function. This allows to perform extra | 
 |   operations on flash devices, defined by Zephyr Flash API or by vendor specific | 
 |   header files. Support for extra operations is enabled by | 
 |   :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED` which depends on | 
 |   :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` selected by driver. | 
 |  | 
 | * Introduced :ref:`rtc_api` API which adds experimental support for real-time clock | 
 |   devices. These devices previously used the :ref:`counter_api` API combined with | 
 |   conversion between unix-time and broken-down time. The new API adds the mandatory | 
 |   functions :c:func:`rtc_set_time` and :c:func:`rtc_get_time`, the optional functions | 
 |   :c:func:`rtc_alarm_get_supported_fields`, :c:func:`rtc_alarm_set_time`, | 
 |   :c:func:`rtc_alarm_get_time`, :c:func:`rtc_alarm_is_pending` and | 
 |   :c:func:`rtc_alarm_set_callback` are enabled with | 
 |   :kconfig:option:`CONFIG_RTC_ALARM`, the optional function | 
 |   :c:func:`rtc_update_set_callback` is enabled with | 
 |   :kconfig:option:`CONFIG_RTC_UPDATE`, and lastly, the optional functions | 
 |   :c:func:`rtc_set_calibration` and :c:func:`rtc_get_calibration` are enabled with | 
 |   :kconfig:option:`CONFIG_RTC_CALIBRATION`. | 
 |  | 
 | * Introduced :ref:`auxdisplay_api` for auxiliary (alphanumeric-based) displays. | 
 |  | 
 | * Introduced :ref:`barriers_api` for barrier operations. | 
 |  | 
 | * Added :c:macro:`CAN_FRAME_ESI` CAN-FD Error State Indicator flag. | 
 |  | 
 | Kernel | 
 | ****** | 
 |  | 
 | * Removed absolute symbols :c:macro:`___cpu_t_SIZEOF`, | 
 |   :c:macro:`_STRUCT_KERNEL_SIZE`, :c:macro:`K_THREAD_SIZEOF` and | 
 |   :c:macro:`_DEVICE_STRUCT_SIZEOF` | 
 |  | 
 | Architectures | 
 | ************* | 
 |  | 
 | * ARC | 
 |  | 
 |   * Added MPUv8 support | 
 |   * Add support of virtual UART over ARC hostlink channel | 
 |   * Improved ARCv2 HS4x processors handling - added proper Kconfig options, provided default mcpu | 
 |   * Improved ARCMWDT toolchain handling: | 
 |  | 
 |     * added rollback to check METAWARE_ROOT if ARCMWDT_TOOLCHAIN_PATH missing | 
 |     * reworked extra warnings options handling in twister so it can be used with ARCMWDT | 
 |     * used 64bit MDB binary by default | 
 |  | 
 |   * Fixed excessive ROM memory consumption if MPU is enabled and ROM & RAM are located in different | 
 |     memory regions | 
 |   * Fixed DSP registers handling in case of ARCMWDT | 
 |   * Improved SMP handling: | 
 |  | 
 |     * Fixed potential livelock in thread abort due to exception | 
 |     * Fixed IDU mask setup | 
 |  | 
 |   * Removed absolute symbols :c:macro:`___callee_saved_t_SIZEOF` and | 
 |     :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` | 
 |  | 
 | * ARM | 
 |  | 
 |   * Removed absolute symbols :c:macro:`___basic_sf_t_SIZEOF`, | 
 |     :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`, :c:macro:`___cpu_context_t_SIZEOF` | 
 |     and :c:macro:`___thread_stack_info_t_SIZEOF` | 
 |   * Enabled fp16 for Cortex-M55 | 
 |   * Fixed a compilation issue with arm-clang and TrustZone | 
 |   * Implemented a new cache-management API | 
 |   * Added support for generating zImage headers | 
 |   * Introduced a new :c:func:`z_arm_on_enter_cpu_idle` hook on CPU idle | 
 |  | 
 | * ARM64 | 
 |  | 
 |   * Removed absolute symbol :c:macro:`___callee_saved_t_SIZEOF` | 
 |   * Enabled FPU and FPU_SHARING for v8r aarch64 | 
 |   * Fixed the STACK_INIT logic during the reset | 
 |   * Introduced and enabled safe exception stack | 
 |   * Fixed possible deadlock on SMP with FPU sharing | 
 |   * Added ISBs after SCTLR Modifications | 
 |  | 
 | * NIOS2 | 
 |  | 
 |   * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` | 
 |  | 
 | * POSIX: | 
 |  | 
 |   * Added :c:macro:`Z_SPIN_DELAY` to allow to conditionally compile a k_busy_wait() for this arch | 
 |     in tests and samples. | 
 |  | 
 | * RISC-V | 
 |  | 
 |   * Added :kconfig:option:`CONFIG_PMP_NO_TOR`, :kconfig:option:`CONFIG_PMP_NO_NA4`, and | 
 |     :kconfig:option:`CONFIG_PMP_NO_NAPOT` to allow disabling unsupported PMP range modes. | 
 |   * Removed unused symbols: :c:macro:`_thread_offset_to_tp`, | 
 |     :c:macro:`_thread_offset_to_priv_stack_start`, :c:macro:`_thread_offset_to_user_sp`. | 
 |   * Added support for setting PMP granularity with :kconfig:option:`CONFIG_PMP_GRANULARITY`. | 
 |   * Switched from accessing CSRs from inline assembly to using the :c:func:`csr_read` helper | 
 |     function. | 
 |   * Enabled single-threading support. | 
 |  | 
 | * SPARC | 
 |  | 
 |   * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` | 
 |  | 
 | * Xtensa | 
 |  | 
 |   * Fixed the cross stack call mechanism during nested interrupts where stack would be | 
 |     corrupted under certain conditions. | 
 |   * Added initial support for MMU on Xtensa. | 
 |   * Now supports building with :kconfig:option:`CONFIG_MULTITHREADING` disabled so | 
 |     target can run in single thread only operations. | 
 |   * Added C structs to represent interrupt frames to help with debugging. | 
 |  | 
 | Bluetooth | 
 | ********* | 
 |  | 
 | * General | 
 |  | 
 |   * Moved all logging symbols together in a new ``Kconfig.logging`` file. | 
 |   * Deprecated the ``BT_DEBUG_LOG`` option. Instead ``BT_LOG`` should be used. | 
 |   * Made the ``BT_LOG`` and ``BT_LOG_LEGACY`` options hidden. | 
 |   * Removed ``BT_DEBUG`` entirely. | 
 |  | 
 |  | 
 | * Audio | 
 |  | 
 |   * Implemented the CAP initiator broadcast audio start, stop and metadata | 
 |     update procedures. | 
 |   * Implemented the CAP unicast audio start, stop and metadata update procedures. | 
 |   * Implemented the Telephony and Media Audio Service (TMAS). | 
 |   * Added additional validation for MCC and MCS, including opcodes, values, etc. | 
 |   * Refactored and extended the scan delegator implementation, including | 
 |     integration with broadcast sink. | 
 |   * Added support for creating a broadcast sink from a PA sink. | 
 |   * Added support for optional characteristics in CSIP. | 
 |   * Implemented discovery by UUID instead of reading by UUID for multiple | 
 |     characteristics. | 
 |   * Added support for long reads and writes for multiple profiles. | 
 |   * Added support for long BAP ASE notifications and optimized long notify | 
 |     reads. | 
 |   * Offloaded MCS notifications to the system workqueue. | 
 |   * Added the CAP initiator cancel procedure. | 
 |  | 
 | * Direction Finding | 
 |  | 
 | * Host | 
 |  | 
 |   * Updated the Host to the v5.4 specification. | 
 |   * The GATT DB Hash is now recalculated upon loading settings. | 
 |   * Added experimental support for SMP keypress notifications. | 
 |   * Downgraded the severity of select log messages to avoid log flooding. | 
 |   * Separated the handling of LE SC OOB pairing from the legacy OOB logic. | 
 |   * Implemented the Encrypted Advertising Data feature. | 
 |   * Added support for the new Periodic Advertising with Responses (PAwR), both | 
 |     as an advertiser and as a scanner. | 
 |   * Added support for initiating connections from PAwR, as well as receiving | 
 |     connections while synced. | 
 |   * Clarified the behavior that is enabled by the ``BT_PRIVACY`` Kconfig option. | 
 |   * Introduced a new ``seg_recv`` L2CAP API for an application to receive | 
 |     segments directly and manage credits explicitly. | 
 |  | 
 | * Mesh | 
 |  | 
 |   * Added experimental support for Mesh Protocol d1.1r18 specification, gated | 
 |     by a new configuration option. This includes: | 
 |  | 
 |     * Enhanced Provisioning Authentication support. | 
 |     * Mesh Remote Provisioning support including: | 
 |  | 
 |       * Remote Provisioning Server and Client models. | 
 |       * Composition Data Page 128 and Models Metadata Page 128 support. | 
 |  | 
 |     * Large Composition Data support including: | 
 |  | 
 |       * Large Composition Data Server and Client models. | 
 |       * Models Metadata Page 0 support. | 
 |  | 
 |     * New Transport Segmentation and Reassembly (SAR) implementation including: | 
 |  | 
 |       * SAR Configuration Server and Client models. | 
 |  | 
 |     * Mesh Private Beacons support including: | 
 |  | 
 |       * Mesh Private Beacon Server and Client models. | 
 |  | 
 |     * Opcodes Aggregator support including: | 
 |  | 
 |       * Opcodes Aggregator Server and Client models. | 
 |  | 
 |     * Proxy Solicitation support including: | 
 |  | 
 |       * Solicitation PDU RPL Configuration Server and Client models. | 
 |       * On-Demand Private Proxy Server and Client models. | 
 |  | 
 |     * Composition Data Page 1 support. | 
 |     * Other Mesh Profile Enhancements. | 
 |   * Added experimental support for Mesh Binary Large Object Transfer Model d1.0r04_PRr00 specification. | 
 |   * Added experimental support for Mesh Device Firmware Update Model d1.0r04_PRr00 specification. | 
 |   * Fixed multiple profile errata. | 
 |   * Added experimental support for the PSA crypto APIs. | 
 |   * Added a new work queue to store mesh settings, including a new API for | 
 |     storing user data. | 
 |   * Disabled the models initialization macros for C++ as they use the compound | 
 |     literal feature from C99. | 
 |   * Deprecated Health Client and Configuration Client API have been removed. | 
 |  | 
 | * Controller | 
 |  | 
 |   * Implemented support for the central with multiple CIS usecase. | 
 |   * Implemented support for multiple peripheral CIS establishment. | 
 |   * Updated the Controller to the v5.4 specification. | 
 |   * Added support for coexistence with other transceivers. | 
 |   * Added support for multiple CIS/CIG setup/connect and teardown procedures in | 
 |     sequence. | 
 |   * Extended the ticker API to return expiration info. | 
 |   * Re-implemented Extended and Periodic Advertising, as well as and Broadcast | 
 |     ISO, using the new ticket expiration info feature. | 
 |   * Modified the ticker implementation to reschedule unreserved tickers that use | 
 |     ``ticks_slot_window``. Implement continuous scanning with it. | 
 |   * Added support for considering the SDU interval, along with the packet | 
 |     sequence number and time stamps, in SDU fragmentation. | 
 |   * Added a new ``BT_CTRL_TX_PWR_DBM`` option to set the TX power directly in | 
 |     dBm. | 
 |   * Optimized the RX path with support for piggy-backing notifications on | 
 |     already-allocated RX nodes. | 
 |  | 
 | * HCI Driver | 
 |  | 
 | Boards & SoC Support | 
 | ******************** | 
 |  | 
 | * Added support for these SoC series: | 
 |  | 
 |   * STM32C0 series are now supported (with introduction of STM32C031 SoC). | 
 |   * STM32H5 series are now supported (with introduction of STM32H503 and STM32H573 SoCs). | 
 |   * Added support for STM32U599 SoC variants | 
 |   * Nordic Semiconductor nRF9161 | 
 |  | 
 | * Removed support for these SoC series: | 
 |  | 
 | * Made these changes in other SoC series: | 
 |  | 
 | * Added support for these ARC boards: | 
 |  | 
 |   * DesignWare ARC HS4x/HS4xD Development Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 cores | 
 |   * nsim_hs3x_hostlink - simulation (nSIM-based) platform with hostlink UART | 
 |  | 
 | * Added support for these ARM boards: | 
 |  | 
 |   * Aconno ACN52832 | 
 |   * Alientek STM32L475 Pandora | 
 |   * Arduino GIGA R1 Wi-Fi | 
 |   * BeagleConnect Freedom | 
 |   * Infineon PSoCâ„¢ 6 BLE Prototyping Kit (CY8CPROTO-063-BLE) | 
 |   * Infineon PSoCâ„¢ 6 Wi-Fi BT Prototyping Kit (CY8CPROTO-062-4343W) | 
 |   * Infineon XMC4700 Relax Kit | 
 |   * MXChip AZ3166 IoT DevKit | 
 |   * Nordic Semiconductor nRF9161 DK | 
 |   * NXP MIMXRT1040-EVK | 
 |   * NXP MIMXRT1062 FMURT6 | 
 |   * PHYTEC PhyBOARD Polis (NXP i.MX8M Mini) | 
 |   * PHYTEC PhyBOARD Pollux (NXP i.MX8M Plus) | 
 |   * Raspberry Pi Pico W | 
 |   * Raytac MDBT50Q-DB-33 | 
 |   * Raytac MDBT50Q-DB-40 | 
 |   * Seeed Studio Wio Terminal | 
 |   * Seeed Studio XIAO BLE Sense | 
 |   * Silicon Labs BRD2601B | 
 |   * Silicon Labs BRD4187C | 
 |   * Silicon Labs EFR32 Thunderboard-style boards | 
 |   * ST Nucleo C031C6 | 
 |   * ST Nucleo F042K6 | 
 |   * ST Nucleo H563ZI | 
 |   * ST STM32H573I-DK Discovery | 
 |   * Xilinx KV260 (Cortex-R5) | 
 |  | 
 | * Added support for these ARM64 boards: | 
 |  | 
 |   * PHYTEC phyCORE-AM62x A53 | 
 |   * NXP i.MX93 EVK A55 (SOF variant) | 
 |  | 
 | * Added support for these RISC-V boards: | 
 |  | 
 |   * Intel FPGA Nios® V/m | 
 |   * ITE IT82XX2 EV-Board | 
 |  | 
 | * Added support for these X86 boards: | 
 |  | 
 | * Added support for these Xtensa boards: | 
 |  | 
 |   * ESP32S3-DevKitM | 
 |  | 
 | * Made these changes for ARC boards: | 
 |  | 
 |   * Added ARC MWDT toolchain support for qemu_arc_hs | 
 |   * Improved emsdp platform support: | 
 |  | 
 |     * Added DFSS driver support | 
 |     * Added pinctrl support | 
 |  | 
 | * Made these changes for ARM boards: | 
 |  | 
 |   * ``atsamc21n_xpro``: Enable support to CAN. | 
 |   * ``atsame54_xpro``: Read Ethernet MAC from I2C. | 
 |   * Changed the default board revision to 0.14.0 for the Nordic boards | 
 |     ``nrf9160dk_nrf9160`` and ``nrf9160dk_nrf52840``. To build for an | 
 |     older revision of the nRF9160 DK without external flash, specify that | 
 |     older board revision when building. | 
 |   * ``nrf9160dk_nrf52840``: Enabled external_flash_pins_routing switch by default. | 
 |   * ``nrf9160dk_nrf9160``: Changed the order of buttons and switches on the GPIO | 
 |     expander to match the order when using GPIO directly on the nRF9160 SoC. | 
 |   * ``STM32H747i_disco``: Enabled support for ST B-LCD40-DSI1 display extension | 
 |   * ``qemu_cortex_m0``: Fixed prescaler of the system timer so that its frequency | 
 |     is actually 1 MHz, not 2 MHz. | 
 |  | 
 | * Made these changes for ARM64 boards: | 
 |  | 
 |   * FVP revc_2xaemv8a / aemv8r: Added ethernet, PHY and MDIO nodes | 
 |  | 
 | * Made these changes to POSIX boards: | 
 |  | 
 |    * nrf52_bsim now includes support and models for: | 
 |  | 
 |      * 802.15.4 in the RADIO. | 
 |      * EGU. | 
 |      * FLASH (NVMC & UICR). | 
 |      * TEMP. | 
 |      * UART connected to a host ptty. | 
 |      * Many more minor CMSIS API and nRF APIs and drivers. | 
 |  | 
 | * Made these changes for RISC-V boards: | 
 |  | 
 |   * ``gd32vf103``: No longer requires special OpenOCD version. | 
 |  | 
 | * Made these changes for X86 boards: | 
 |  | 
 | * Made these changes for Xtensa boards: | 
 |  | 
 | * Removed support for these ARC boards: | 
 |  | 
 | * Removed support for these ARM boards: | 
 |  | 
 | * Removed support for these RISC-V boards: | 
 |  | 
 |   * BeagleV Starlight JH7100 | 
 |  | 
 | * Removed support for these X86 boards: | 
 |  | 
 | * Removed support for these Xtensa boards: | 
 |  | 
 | * Made these changes in other boards: | 
 |  | 
 | * Added support for these following shields: | 
 |  | 
 |   * Adafruit Data Logger Shield | 
 |   * nPM1300 EK (Power Management Integrated Circuit (PMIC)) | 
 |   * Panasonic Grid-EYE Shields | 
 |   * ST B_LCD40_DSI1_MB1166 | 
 |  | 
 | Build system and infrastructure | 
 | ******************************* | 
 |  | 
 | * Fixed an issue whereby older versions of the Zephyr SDK toolchain were used | 
 |   instead of the latest compatible version. | 
 |  | 
 | * Fixed an issue whereby building an application with sysbuild and specifying | 
 |   mcuboot's verification to be checksum only did not build a bootable image. | 
 |  | 
 | * Fixed an issue whereby if no prj.conf file was present then board | 
 |   configuration files would not be included by emitting a fatal error. As a | 
 |   result, prj.conf files are now mandatory in projects. | 
 |  | 
 | * Introduced support for extending/replacing the signing mechanism in zephyr, | 
 |   see :ref:`West extending signing <west-extending-signing>` for further | 
 |   details. | 
 |  | 
 | * Fixed an issue whereby when using ``*_ROOT`` variables with Sysbuild, these | 
 |   were lost for images. | 
 |  | 
 | * Enhanced ``zephyr_get`` CMake helper function to optionally support merging | 
 |   of scoped variables into a list. | 
 |  | 
 | * Added a new CMake helper function for setting/updating sysbuild CMake cache | 
 |   variables: ``sysbuild_cache_set``. | 
 |  | 
 | * Enhanced ``zephyr_get`` CMake helper function to lookup multiple variables | 
 |   and return the result in a variable of different name. | 
 |  | 
 | * Introduced ``EXTRA_CONF_FILE``, ``EXTRA_DTC_OVERLAY_FILE``, and | 
 |   ``EXTRA_ZEPHYR_MODULES`` for better naming consistency and uniform behavior | 
 |   for applying extra build settings in addition to Zephyr automatic build | 
 |   setting lookup. | 
 |   ``EXTRA_CONF_FILE`` replaces ``OVERLAY_CONFIG``. | 
 |   ``EXTRA_ZEPHYR_MODULES`` replaces ``ZEPHYR_EXTRA_MODULES``. | 
 |   ``EXTRA_DTC_OVERLAY_FILE`` is new, see | 
 |   :ref:`Set devicetree overlays <set-devicetree-overlays>` for further details. | 
 |  | 
 | * Twister now supports ``gtest`` harness for running tests written in gTest. | 
 |  | 
 | * Added an option to validate device initialization priorities at build time. | 
 |   To use it, enable :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES`, see | 
 |   :ref:`check_init_priorities.py` for more details. | 
 |  | 
 | * Added a new option to disable tracking of macro expansion when compiling, | 
 |   :kconfig:option:`CONFIG_COMPILER_TRACK_MACRO_EXPANSION`. This option may be | 
 |   disabled to reduce compiler verbosity when errors occur during macro | 
 |   expansions, e.g. in device definition macros. | 
 |  | 
 | * Twister now supports loading test configurations from alternative root | 
 |   folder/s by using ``--alt-config-root``. When a test is found, Twister will | 
 |   check if a test configuration file exist in any of the alternative test | 
 |   configuration root folders. For example, given | 
 |   ``$test_root/tests/foo/testcase.yaml``, Twister will use | 
 |   ``$alt_config_root/tests/foo/testcase.yaml`` if it exists. | 
 |  | 
 | * Twister now uses native YAML lists for fields that were previously defined | 
 |   using space-separated strings. For example: | 
 |  | 
 |   .. code-block:: yaml | 
 |  | 
 |      platform_allow: foo bar | 
 |  | 
 |   can now be written as: | 
 |  | 
 |   .. code-block:: yaml | 
 |  | 
 |      platform_allow: | 
 |        - foo | 
 |        - bar | 
 |  | 
 |   This applies to the following properties: | 
 |  | 
 |     - ``arch_exclude`` | 
 |     - ``arch_allow`` | 
 |     - ``depends_on`` | 
 |     - ``extra_args`` | 
 |     - ``extra_sections`` | 
 |     - ``platform_exclude`` | 
 |     - ``platform_allow`` | 
 |     - ``tags`` | 
 |     - ``toolchain_exclude`` | 
 |     - ``toolchain_allow`` | 
 |  | 
 |   Note that the old behavior is kept as deprecated. The | 
 |   :zephyr_file:`scripts/utils/twister_to_list.py` script can be used to | 
 |   automatically migrate Twister configuration files. | 
 |  | 
 | * When MCUboot image signing is enabled, a warning will now be emitted by cmake | 
 |   if no signing key is set in the project, this warning can be safely ignored | 
 |   if signing is performed manually or outside of zephyr. This warning informs | 
 |   the user that the generated image will not be bootable by MCUboot as-is. | 
 |  | 
 | * Babblesim is now included in the west manifest. Users can fetch it by enabling | 
 |   the ``babblesim`` group with west config. | 
 |  | 
 | * ``west sign`` now uses DT labels, of "fixed-partition" compatible nodes, to identify | 
 |   application image slots, instead of previously used DT node label properties. | 
 |   If you have been using custom partition layout for MCUboot, you will have to label | 
 |   your MCUboot slot partitions with proper DT node labels; for example partition | 
 |   with "image-0" label property will have to be given slot0_partition DT node label. | 
 |   Label property does not have to be removed from partition node, but will not be used. | 
 |  | 
 |   DT node labels used are listed below | 
 |  | 
 |   .. table:: | 
 |      :align: center | 
 |  | 
 |      +---------------------------------+---------------------------+ | 
 |      | Partition with label property   | Required DT node label    | | 
 |      +=================================+===========================+ | 
 |      | "image-0"                       | slot0_partition           | | 
 |      +---------------------------------+---------------------------+ | 
 |      | "image-1"                       | slot1_partition           | | 
 |      +---------------------------------+---------------------------+ | 
 |  | 
 | * Fixed an issue whereby relative paths supplied for the ``BOARD_ROOT`` value | 
 |   might wrongly emit a warning about a ``boards`` directory not being found. | 
 |  | 
 | * Fixed an issue whereby relative paths did not work for sysbuild images. | 
 |  | 
 | Drivers and Sensors | 
 | ******************* | 
 |  | 
 | * Device model | 
 |  | 
 |   * Devices that do not require an initialization routine can now pass ``NULL`` | 
 |     to the ``DEVICE_*_DEFINE()`` macros. | 
 |  | 
 | * Auxiliary display | 
 |  | 
 |   * New auxiliary display (auxdisplay) peripheral has been added, this allows | 
 |     for interfacing with simple alphanumeric displays that do not feature | 
 |     graphic capabilities. This peripheral is marked as unstable. | 
 |  | 
 |   * HD44780 driver added. | 
 |  | 
 |   * Noritake Itron driver added. | 
 |  | 
 |   * Grove LCD driver added (ported from existing sample). | 
 |  | 
 | * ADC | 
 |  | 
 |   * MCUX LPADC driver now uses the channel parameter to select a software channel | 
 |     configuration buffer. Use ``zephyr,input-positive`` and | 
 |     ``zephyr,input-negative`` devicetree properties to select the hardware | 
 |     channel(s) to link a software channel configuration to. | 
 |   * MCUX LPADC driver ``voltage-ref`` and ``power-level`` devicetree properties | 
 |     were shifted to match the hardware as described in reference manual instead | 
 |     of matching the NXP SDK enum identifiers. | 
 |   * Added support for STM32C0 and STM32H5. | 
 |   * Added DMA support for STM32H7. | 
 |   * STM32: Resolutions are now listed in the device tree for each ADC instance | 
 |   * STM32: Sampling times are now listed in the device tree for each ADC instance | 
 |   * Added driver for Atmel SAM family ADC. | 
 |   * Added driver for Gecko Incremental ADC. | 
 |   * Added driver for Infineon CAT1 ADC. | 
 |   * Added driver for TI ADS7052. | 
 |   * Added driver for TI ADS114S0x family. | 
 |   * Added drivers for Renesas SmartBond GPADC and SDADC. | 
 |  | 
 | * Battery-backed RAM | 
 |  | 
 |   * Added MCP7940N battery-backed RTC SRAM driver. | 
 |  | 
 | * CAN | 
 |  | 
 |   * The CAN statistics are now reset when calling :c:func:`can_start`. | 
 |  | 
 |   * Renamed the NXP FlexCAN devicetree binding compatible from ``nxp,kinetis-flexcan`` to | 
 |     :dtcompatible:`nxp,flexcan`. | 
 |  | 
 |   * Added support for the CAN-FD variant of the NXP FlexCAN controller using devicetree binding | 
 |     :dtcompatible:`nxp,flexcan-fd`. | 
 |  | 
 |   * Added support for the NXP NXP S32 CANEXCEL controller using devicetree binding | 
 |     :dtcompatible:`nxp,s32-canxl`. | 
 |  | 
 |   * Added support for the Atmel SAM0 CAN controller using devicetree binding | 
 |     :dtcompatible:`atmel,sam0-can`. | 
 |  | 
 |   * Refactored the Bosch M_CAN controller driver backend to allow for per-instance configuration via | 
 |     devicetree. | 
 |  | 
 |   * Now supports STM32H5 series. | 
 |  | 
 | * Clock control | 
 |  | 
 |   * Atmel SAM/SAM0: Introduced peripheral clock control. | 
 |   * Atmel SAM0: Improved ``samd20``/``samd21``/``samr21`` clocking mechanism. | 
 |   * STM32F4: Added support for PLL I2S | 
 |  | 
 | * Console: | 
 |  | 
 |   * The native_posix and bsim console drivers have been merged into one generic | 
 |     driver usable by all POSIX arch based boards. | 
 |  | 
 | * Counter | 
 |  | 
 |   * Added support on timer based counter on STM32H7 and STM32H5 | 
 |   * Added support on RTC based counter on STM32C0 and STM32H5 | 
 |  | 
 | * Crypto | 
 |  | 
 |   * Added support for STM32H5 AES | 
 |  | 
 | * DAC | 
 |  | 
 |   * Added support on STM32H5 series. | 
 |  | 
 | * Disk | 
 |  | 
 |   * SDMMC STM32L4+: Now compatible with internal DMA | 
 |   * NVME disks are now supported using FATFS, with a single I/O queue enabled | 
 |  | 
 | * Display | 
 |  | 
 |   * Improved MCUX ELCDIF and SSD16XX display controller drivers | 
 |   * Added support for ILI9342C display controller | 
 |   * Added support for OTM8009A panel | 
 |  | 
 | * DMA | 
 |  | 
 |   * STM32C0: Added support for DMA | 
 |   * STM32H5: Added support for GPDMA | 
 |   * STM32H7: Added support for BDMA | 
 |   * Added DMA support for the RP2040 SoC | 
 |  | 
 | * EEPROM | 
 |  | 
 |   * Switched from :dtcompatible:`atmel,at24` to dedicated :dtcompatible:`zephyr,i2c-target-eeprom` for I2C EEPROM target driver. | 
 |  | 
 | * Entropy | 
 |  | 
 |   * Added support for STM32H5 series. | 
 |  | 
 | * Flash | 
 |  | 
 |   * Introduced new flash API call :c:func:`flash_ex_op` which calls | 
 |     :c:func:`ec_op` callback provided by a flash driver. This allows to perform | 
 |     extra operations on flash devices, defined by Zephyr Flash API or by vendor | 
 |     specific header files. :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` should be | 
 |     selected by the driver to indicate that extra operations are supported. | 
 |     To enable extra operations user should select | 
 |     :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED`. | 
 |   * STM32F4: Now supports write protection and readout protection through | 
 |     new flash API call :c:func:`flash_ex_op`. | 
 |   * nrf_qspi_nor: Replaced custom API function ``nrf_qspi_nor_base_clock_div_force`` | 
 |     with ``nrf_qspi_nor_xip_enable`` which apart from forcing the clock divider | 
 |     prevents the driver from deactivating the QSPI peripheral so that the XIP | 
 |     operation is actually possible. | 
 |   * flash_simulator: | 
 |  | 
 |     * A memory region can now be used as the storage area for the | 
 |       flash simulator. Using the memory region allows the flash simulator to keep | 
 |       its contents over a device reboot. | 
 |     * When building in native_posix, command line options have been added to select | 
 |       if the flash should be cleared at boot, the flash content kept in RAM, | 
 |       or the flash content file be deleted on exit. | 
 |  | 
 |   * spi_flash_at45: Fixed erase procedure to properly handle chips that have | 
 |     their initial sector split into two parts (usually marked as 0a and 0b). | 
 |   * STM32H5 now supports OSPI | 
 |  | 
 | * GPIO | 
 |  | 
 |   * Converted the ``gpio_keys`` driver to the input subsystem. | 
 |   * Added single-ended IO support for the RP2040 SoC | 
 |  | 
 |   * STM32: Supports newly introduced experimental API to enable/disable interrupts | 
 |     without re-config | 
 |  | 
 | * I2C | 
 |  | 
 |   * Added support for STM32C0 and STM32H5 series | 
 |  | 
 | * I2S | 
 |  | 
 |   * STM32: Domain clock should now be configured by device tree. | 
 |  | 
 | * Input | 
 |  | 
 |   * Introduced the :ref:`input` subsystem. | 
 |  | 
 | * KSCAN | 
 |  | 
 |   * Added a :dtcompatible:`zephyr,kscan-input` input to kscan compatibility driver. | 
 |   * Converted the ``ft5336`` and ``kscan_sdl`` drivers to the input subsystem. | 
 |  | 
 | * MIPI-DSI | 
 |  | 
 |   * Added support on STM32H7 | 
 |  | 
 | * Misc | 
 |  | 
 |    * Added PIO support for the RP2040 SoC | 
 |  | 
 | * PCIE | 
 |  | 
 |   * Enable filtering PCIe devices by class/revision. | 
 |  | 
 | * PECI | 
 |  | 
 | * Retained memory | 
 |  | 
 |   * Retained memory (retained_mem) driver has been added with backends for | 
 |     Nordic nRF GPREGRET, and uninitialised RAM. | 
 |  | 
 | * Pin control | 
 |  | 
 |   * Added support for Infineon CAT1 | 
 |   * Added support for TI K3 | 
 |   * Added support for ARC emdsp | 
 |  | 
 | * PWM | 
 |  | 
 |   * Added support for STM32C0. | 
 |   * STM32: Now supports 6-PWM channels | 
 |   * Added PWM driver for Microchip XEC BBLED. | 
 |  | 
 | * Power domain | 
 |  | 
 | * Regulators | 
 |  | 
 |   * The regulator API can now be built without thread-safe reference counting | 
 |     by using :kconfig:option:`CONFIG_REGULATOR_THREAD_SAFE_REFCNT`. This | 
 |     feature can be useful in applications that do not enable | 
 |     :kconfig:option:`CONFIG_MULTITHREADING`. | 
 |   * Added support for ADP5360 PMIC | 
 |   * Added support for nPM1300 PMIC | 
 |   * Added support for Raspberry Pi Pico core supply regulator | 
 |  | 
 | * SDHC | 
 |  | 
 |   * Support was added for using CPOL/CPHA SPI clock modes with SD cards, as | 
 |     some cards require the SPI clock switch to low when not active | 
 |  | 
 | * Sensor | 
 |  | 
 |   * Added generic voltage measurement sample | 
 |   * Removed STM32 Vbat measurement sample (replaced by a generic one) | 
 |   * Added STM32 Vref sensor driver | 
 |   * Added STM32 Vref/Vbat measurement through the new generic voltage measurement sample | 
 |   * Added temperature measurement driver for STM32C0 and STM32F0x0 | 
 |   * Removed STM32 temperature measurement sample (replaced by a generic one) | 
 |   * Added STM32 temperature measurement through the generic temperature measurement sample | 
 |  | 
 | * Serial | 
 |  | 
 |   * Added UART3 and UART4 configuration for ``gd32vf103`` SoCs. | 
 |   * uart_altera: added new driver for Altera Avalon UART. | 
 |   * uart_emul: added new driver for emulated UART. | 
 |   * uart_esp32: | 
 |     * Added support for ESP32S3 SoC. | 
 |     * Added support for RS-485 half duplex mode. | 
 |   * uart_hostlink: added new driver for virtual UART via Synopsys ARC hostlink channels. | 
 |   * uart_ifx_cat1: added new driver for Infineon CAT1 UART. | 
 |   * uart_mcux: added power management support. | 
 |   * uart_mcux_flexcomm: added support for asynchronous operations. | 
 |   * uart_mcux_lpuart: added support for parity. | 
 |   * uart_ns16550: now supports per instance hardware access mode instead of | 
 |     one access mode for all instances. | 
 |   * uart_pl011: fixed interrupt support. | 
 |   * uart_rpi_pico_pio: added new driver to support UART via | 
 |     Programmable Input/Output (PIO) on Raspberry Pi Pico. | 
 |   * uart_xmc4xxx: added support for asynchronous operations. | 
 |   * uart_stm32: Now support driver enable mode | 
 |   * Added hardware flow control support for the RP2040 SoC | 
 |  | 
 | * SPI | 
 |  | 
 |   * Added support on STM32H5 series. | 
 |  | 
 | * Timer | 
 |  | 
 |   * Support added for stopping Nordic nRF RTC system timer, which fixes an | 
 |     issue when booting applications built in prior version of Zephyr. | 
 |  | 
 |   * STM32: Now supports a prescaler at the input of clock (default not divided). | 
 |     Prescaler allows to achieve higher LPTIM timeout (up to 256s when lptim clocked by LSE) | 
 |     and consequently higher core sleep durations but impacts the tick precision. | 
 |     To be used with caution. | 
 |  | 
 | * USB | 
 |  | 
 |    * Added remote wakeup support for the RP2040 SoC | 
 |    * Added Battery Charging (BC12) API and PI3USB9201 driver implementation. | 
 |    * Added new USB device controller drivers (using usb_dc API) for ITE IT82xx2 | 
 |      and smartbond platforms. | 
 |    * Added USB device controller driver skeleton for UDC API. | 
 |    * Reworked DWC2 driver and added support for STM32F4 SoC family | 
 |  | 
 | * W1 | 
 |  | 
 |   * Added DS2482-800 1-Wire master driver. See the :dtcompatible:`maxim,ds2482-800` | 
 |     devicetree binding for more information. | 
 |   * Added :kconfig:option:`CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING` which can be | 
 |     enabled force the 1-Wire network layer to use multidrop addressing. | 
 |  | 
 | * Watchdog | 
 |  | 
 |   * Added support for STM32C0 and STM32H5 series | 
 |  | 
 | Networking | 
 | ********** | 
 |  | 
 | * CoAP: | 
 |  | 
 |   * Added :c:func:`coap_append_descriptive_block_option` and | 
 |     :c:func:`coap_get_block1_option` APIs to facilitate block transfer handling. | 
 |   * Added a :ref:`coap_client_interface` helper library, based on the existing CoAP APIs. | 
 |   * Fixed missing token length validation in :c:func:`coap_header_get_token`. | 
 |   * Fixed missing response check in :c:func:`coap_response_received`. | 
 |  | 
 | * Connection Manager: | 
 |  | 
 |   * Extended the library with a generic L2 connectivity API. | 
 |   * Refactored library internals significantly. | 
 |   * Improved thread safety in the library. | 
 |   * Reworked how Connection Manager events are notified - they are no longer | 
 |     raised for each interface individually, but instead: | 
 |  | 
 |     * ``NET_EVENT_L4_CONNECTED`` is called only once after the first | 
 |       interface gains connectivity. | 
 |     * ``NET_EVENT_L4_DISCONNECTED`` is called only after connectivity is | 
 |       lost on all interfaces. | 
 |  | 
 |   * Improved Connection Manager test coverage. | 
 |  | 
 | * DHCPv4: | 
 |  | 
 |   * Fixed a potential packet leak in DHCPv4 input handler. | 
 |   * Fixed a potential NULL pointer dereference in ``dhcpv4_create_message()``. | 
 |   * Added a mechanism to register a callback for handling DHCPv4 options. | 
 |   * Modified ``dhcpv4_client`` sample to trigger DHCP on all network interfaces | 
 |     in the system. | 
 |  | 
 | * DNS: | 
 |  | 
 |   * Fixed a possible crash on NULL pointer as a query callback. | 
 |   * Added a check on existing DNS servers before reconfigure. | 
 |   * Improved debug logging in DNS SD. | 
 |   * Fixed IPv4/IPv6 address handling in mDNS responder, if both are IPv4 and IPv6 are enabled. | 
 |   * Removed dead code in DNS SD query parsing. | 
 |  | 
 | * Ethernet: | 
 |  | 
 |   * Fixed double packet dereference in case of ARP request transmission errors. | 
 |   * Fixed a possible slist corruption in case Ethernet interface went up before | 
 |     LLDP initialization. | 
 |  | 
 | * HTTP: | 
 |  | 
 |   * Added HTTP service and resource iterable sections. | 
 |  | 
 | * ICMPv6: | 
 |  | 
 |   * Implemented IPv6 RA Recursive DNS Server option handling. | 
 |  | 
 | * IEEE802154: | 
 |  | 
 |   * Fixed a corner case with 6LoWPAN IP Header Compression and fragmentation, where | 
 |     for a short range of packet sizes, fragmentation did not work correctly after IPHC. | 
 |   * Added new radio API function to start continuous carrier wave transmission. | 
 |   * Several improvements/fixes in IEEE802154 L2 security. | 
 |   * Fixed a packet leak when handling beacon/command frames. | 
 |   * Deprecated :kconfig:option:`CONFIG_IEEE802154_2015` Kconfig option. | 
 |   * Added simple Babblesim echo test over IEEE802154 L2. | 
 |   * Improved IEEE802154 L2 test coverage. | 
 |   * Multiple other minor IEEE802154 L2 and documentation improvements/fixes. | 
 |  | 
 | * IPv4: | 
 |  | 
 |   * Implemented a fallback to IPv4 Link Local address if no other address is available. | 
 |   * Fixed :c:func:`net_ipv4_is_ll_addr` helper function to correctly identify LL address. | 
 |   * Fixed possible NULL pointer dereference in IPv4 fragmentation. | 
 |  | 
 | * LwM2M: | 
 |  | 
 |   * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_UPDATE` event. | 
 |   * Added missing ``const`` qualifier in the APIs, where applicable. | 
 |   * Fixed socket error handling on packet transmission. | 
 |   * Improved LwM2M context cleanup when falling back to regular Registration. | 
 |   * Added possibility to register a callback function for FW update cancel action. | 
 |   * Added possibility to register a callback function for LwM2M send operation. | 
 |   * Added ISPO voltage sensor object support. | 
 |   * Fixed stopping of the LwM2M client when it's suspended. | 
 |   * Fixed a minor CoAP RFC incompatibility, where it should not be assumed that | 
 |     consecutive data blocks in block transfer will carry the same token. | 
 |   * Added block transfer support on TX. | 
 |   * Fixed a possible out-of-bounds memory access when creating FW update object. | 
 |   * Added possibility to override default socket option configuration with a | 
 |     dedicated callback function (``set_socketoptions``). | 
 |   * Improved LwM2M test coverage. | 
 |   * Several other minor improvements and cleanups. | 
 |  | 
 | * Misc: | 
 |  | 
 |   * Added generic ``OFFLOADED_NETDEV_L2`` for offloaded devices to allow | 
 |     offloaded implementations to detect when interface is brought up/down. | 
 |   * Factored out ``net_buf_simple`` routines to a separate source file. | 
 |   * Fixed possible NULL pointer dereference in ``net_pkt_cursor_operate()``. | 
 |   * Reimplemented ``net_mgmt`` to use message queue internally. This also fixed | 
 |     a possible event loss with the old implementation. | 
 |   * Fixed error handling in ``net ping`` shell command to avoid shell freeze. | 
 |   * Improved Ethernet error statistics logging in ``net stats`` shell command. | 
 |   * Moved SLIP TAP implementation into a separate file, to prevent build warnings | 
 |     about missing sources for Ethernet drivers. | 
 |   * Fixed crashes in ``echo_server`` and ``echo_client`` samples, when | 
 |     userspace is enabled. | 
 |   * Fixed IPv6 support in ``mqtt_sn_publisher`` sample. | 
 |   * Fixed build issues with arm-clang in the networking stack. | 
 |   * Added new ``NET_IF_IPV6_NO_ND`` and ``NET_IF_IPV6_NO_MLD`` interface flags, | 
 |     which allow to disable ND/MLD respectively on an interface. | 
 |   * Reworked network interface mutex protection, to use individual mutex for | 
 |     each interface, instead of a global one. | 
 |   * Added new :zephyr:code-sample:`aws-iot-mqtt`. | 
 |   * Added a few missing NULL pointer checks in network interface functions. | 
 |  | 
 | * OpenThread: | 
 |  | 
 |   * Implemented the following OpenThread platform APIs: | 
 |  | 
 |     * ``otPlatRadioSetMacFrameCounterIfLarger()``, | 
 |     * ``otPlatCryptoEcdsaGenerateAndImportKey()``, | 
 |     * ``otPlatCryptoEcdsaExportPublicKey()``, | 
 |     * ``otPlatCryptoEcdsaVerifyUsingKeyRef()``, | 
 |     * ``otPlatCryptoEcdsaSignUsingKeyRef()``. | 
 |  | 
 |   * Added :kconfig:option:`CONFIG_OPENTHREAD_CSL_TIMEOUT` option. | 
 |   * Removed no longer needed ``CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB``. | 
 |   * Added simple Babblesim echo test over OpenThread. | 
 |  | 
 | * SNTP: | 
 |  | 
 |   * Switched to use ``zsock_*`` functions internally. | 
 |  | 
 | * Sockets: | 
 |  | 
 |   * Fixed ``SO_RCVBUF`` and ``SO_SNDBUF`` socket options handling, so that they | 
 |     configure TCP window sizes correctly. | 
 |   * Fixed ``SO_SNDTIMEO`` socket option handling - the timeout value was ignored | 
 |     and socket behaved as in non-blocking mode when used. | 
 |   * Reworked TLS sockets implementation, to allow parallel TX/RX from | 
 |     different threads. | 
 |   * Implemented TLS handshake timeout. | 
 |   * Added support for asynchronous connect for TCP sockets. | 
 |   * Fixed blocking :c:func:`recv` not being interrupted on socket close. | 
 |   * Fixed blocking :c:func:`accept` not being interrupted on socket close. | 
 |   * Improved sockets test coverage. | 
 |  | 
 | * TCP: | 
 |  | 
 |   * Fixed incorrect TCP stats by improving packet processing result reporting. | 
 |   * Added :kconfig:option:`CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT` to allow to configure | 
 |     packet allocation timeout. | 
 |   * Improved TCP test coverage. | 
 |   * Fixed TCP MSS calculation for IPv6. | 
 |   * Fixed possible double acknowledgment of retransmitted data. | 
 |   * Fixed local address setting for incoming connections. | 
 |   * Fixed double TCP context dereferencing in certain corner cases. | 
 |  | 
 | * TFTP: | 
 |  | 
 |   * Added ``tftp_put()`` API to support TFTP write request. | 
 |   * Introduced ``tftp_callback_t`` callback to allow to read large files. | 
 |   * Reworked ``struct tftpc`` client context structure, to allow for parallel | 
 |     communication from several contexts. | 
 |  | 
 | * UDP: | 
 |  | 
 |   * :kconfig:option:`CONFIG_NET_UDP_MISSING_CHECKSUM` is now enabled by default. | 
 |  | 
 | * Websockets: | 
 |  | 
 |   * Implemented proper timeout handling in :c:func:`websocket_recv_msg`. | 
 |   * Fixed implicit type conversion when parsing length field, which could lead | 
 |     to data loss. | 
 |  | 
 | * Wi-Fi: | 
 |  | 
 |   * Display TWT (Target Wake Time) configuration response status in Wi-Fi shell. | 
 |   * Added more detailed TWT response parameters printout in Wi-Fi shell. | 
 |   * Added new ``NET_EVENT_WIFI_TWT_SLEEP_STATE`` event to notify TWT sleep status. | 
 |   * Fixed an issue where not all security modes were displayed correctly on scan. | 
 |   * Added connection status and AP capabilities verification before initiating | 
 |     TWT operation. | 
 |   * TWT intervals are changed from milliseconds to microseconds, interval | 
 |     variables are also renamed. | 
 |   * Extended Power Saving configuration parameters with listening interval and | 
 |     wake up mode. | 
 |   * Added :kconfig:option:`CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS` option, which | 
 |     enables providing of RAW (unprocessed) scan results to the application with | 
 |     ``NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT`` event. | 
 |   * Several other minor fixes/cleanups in the Wi-Fi management/shell modules. | 
 |  | 
 | * zperf | 
 |  | 
 |   * Added an extra parameter to disable Nagle's algorithm with TCP benchmarks. | 
 |   * Added support for handling multiple incoming TCP sessions. | 
 |   * Made zperf thread priority and stack size configurable. | 
 |   * Several minor cleanups in the module. | 
 |  | 
 | USB | 
 | *** | 
 |  | 
 | * USB device support | 
 |  | 
 |   * Fixed control endpoint handling with MPS of 8 bytes. | 
 |  | 
 | * New experimental USB support | 
 |  | 
 |   * Various improvements for new device support, better string descriptor support, | 
 |     implemented usbd_class_shutdown API. | 
 |   * Added USB Mass Storage class and CDC ECM class implementations for the new | 
 |     device support. | 
 |  | 
 | Libraries / Subsystems | 
 | ********************** | 
 |  | 
 | * File systems | 
 |  | 
 |   * Added :kconfig:option:`CONFIG_FS_FATFS_REENTRANT` to enable the FAT FS reentrant option. | 
 |   * With LittleFS as backend, :c:func:`fs_mount` return code was corrected to ``EFAULT`` when | 
 |     called with ``FS_MOUNT_FLAG_NO_FORMAT`` and the designated LittleFS area could not be | 
 |     mounted because it has not yet been mounted or it required reformatting. | 
 |   * The FAT FS initialization order has been updated to match LittleFS, fixing an issue where | 
 |     attempting to mount the disk in a global function caused FAT FS to fail due to not being registered beforehand. | 
 |     FAT FS is now initialized in POST_KERNEL. | 
 |   * Added :kconfig:option:`CONFIG_FS_LITTLEFS_FMP_DEV` to enable possibility of using LittleFS | 
 |     for block devices only, e.g. without Flash support. The option is set to 'y' by default in | 
 |     order to keep previous behaviour. | 
 |  | 
 | * IPC | 
 |  | 
 |   * :c:func:`ipc_service_close_instance` now only acts on bounded endpoints. | 
 |   * ICMSG: removed race condition during bonding. | 
 |   * ICMSG: removed internal API for clearing shared memory. | 
 |   * ICMSG: added mutual exclusion access to SHMEM. | 
 |   * Fixed CONFIG_OPENAMP_WITH_DCACHE. | 
 |  | 
 | * Management | 
 |  | 
 |   * Added optional input expiration to shell MCUmgr transport, this allows | 
 |     returning the shell to normal operation if a complete MCUmgr packet is not | 
 |     received in a specific duration. Can be enabled with | 
 |     :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT` and timeout | 
 |     set with | 
 |     :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME`. | 
 |  | 
 |   * MCUmgr fs_mgmt upload and download now caches the file handle to improve | 
 |     throughput when transferring data, the file is no longer opened and closed | 
 |     for each part of a transfer. In addition, new functionality has been added | 
 |     that will allow closing file handles of uploaded/downloaded files if they | 
 |     are idle for a period of time, the timeout is set with | 
 |     :kconfig:option:`MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME`. There is a | 
 |     new command that can be used to close open file handles which can be used | 
 |     after a file upload is complete to ensure that the file handle is closed | 
 |     correctly, allowing other transports or other parts of the application | 
 |     code to use it. | 
 |  | 
 |   * A new version of the SMP protocol used by MCUmgr has been introduced in the | 
 |     header, which is used to indicate the version of the protocol being used. | 
 |     This updated protocol allows returning much more detailed error responses | 
 |     per group, see the | 
 |     :ref:`MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>` | 
 |     for details. | 
 |  | 
 |   * MCUmgr has now been marked as a stable Zephyr API. | 
 |  | 
 |   * The MCUmgr UDP transport has been refactored to resolve some concurrency | 
 |     issues and fixes a potential issue whereby an application might call the | 
 |     open transport function whilst it is already open, causing an endless log | 
 |     output loop. | 
 |  | 
 |   * The MCUmgr fs_mgmt group Kconfig ``Insecure`` text has been replaced with | 
 |     a CMake warning which triggers if fs_mgmt hooks are not enabled, as these | 
 |     hooks can be used to ensure security of file access allowed by MCUmgr | 
 |     clients. | 
 |  | 
 |   * Fixed an issue with MCUmgr fs_mgmt file download not checking if the | 
 |     offset parameter was provided. | 
 |  | 
 |   * Fixed an issue with MCUmgr fs_mgmt file upload notification hook not | 
 |     setting upload to true. | 
 |  | 
 |   * Fixed an issue with MCUmgr img_mgmt image upload ``upgrade`` field wrongly | 
 |     checking if the new image was the same version of the application and | 
 |     allowing it to be uploaded if it was. | 
 |  | 
 |   * MCUmgr img_mgmt group will only verify the SHA256 hash provided by the | 
 |     client against the uploaded image (if support is enabled) if a full SHA256 | 
 |     hash was provided. | 
 |  | 
 |   * MCUmgr Kconfig options have changed from ``select`` to ``depends on`` which | 
 |     means that some additional Kconfig options may now need to be selected by | 
 |     applications. :kconfig:option:`CONFIG_NET_BUF`, | 
 |     :kconfig:option:`CONFIG_ZCBOR` and :kconfig:option:`CONFIG_CRC` are needed | 
 |     to enable MCUmgr support, :kconfig:option:`CONFIG_BASE64` is needed to | 
 |     enable shell/UART/dummy MCUmgr transports, | 
 |     :kconfig:option:`CONFIG_NET_SOCKETS` is needed to enable the UDP MCUmgr | 
 |     transport, :kconfig:option:`CONFIG_FLASH` is needed to enable MCUmgr | 
 |     fs_mgmt, :kconfig:option:`CONFIG_FLASH` and | 
 |     :kconfig:option:`CONFIG_IMG_MANAGER` are needed to enable MCUmgr img_mgmt. | 
 |  | 
 |   * MCUmgr img_mgmt group now uses unsigned integer values for image and slot | 
 |     numbers, these numbers would never have been negative and should have been | 
 |     unsigned. | 
 |  | 
 | * POSIX API | 
 |  | 
 |   * Improved the locking strategy for :c:func:`eventfd_read()` and | 
 |     :c:func:`eventfd_write()`. This eliminated a deadlock scenario that was | 
 |     present since the initial contribution and increased performance by a | 
 |     factor of 10x. | 
 |  | 
 |   * Reimplemented :ref:`POSIX <posix_support>` threads, mutexes, condition | 
 |     variables, and barriers using native Zephyr counterparts. POSIX | 
 |     synchronization primitives in Zephyr were originally implemented | 
 |     separately and received less maintenance as a result. Unfortunately, this | 
 |     opened POSIX up to unique bugs and race conditions. Going forward, POSIX | 
 |     will benefit from all improvements to Zephyr's synchronization and | 
 |     threading API and race conditions have been mitigated. | 
 |  | 
 | * Retention | 
 |  | 
 |   * Retention subsystem has been added which adds enhanced features over | 
 |     retained memory drivers allowing for partitioning, magic headers and | 
 |     checksum validation. See :ref:`retention API <retention_api>` for details. | 
 |     Support for the retention subsystem is experimental. | 
 |  | 
 |   * Boot mode retention module has been added which allows for setting/checking | 
 |     the boot mode of an application, initial support has also been added to | 
 |     MCUboot to allow for applications to use this as an entrance method for | 
 |     MCUboot serial recovery mode. See :ref:`boot mode API <boot_mode_api>` for | 
 |     details. | 
 |  | 
 | * RTIO | 
 |  | 
 |   * Added policy that every ``sqe`` will generate a ``cqe`` (previously an RTIO_SQE_TRANSACTION | 
 |     entry would only trigger a ``cqe`` on the last ``sqe`` in the transaction. | 
 |  | 
 | * Power management | 
 |  | 
 |   * Added a new policy event API that can be used to register expected events | 
 |     that will wake the system up in the future. This can be used to influence | 
 |     the system on which low power states can be used. | 
 |  | 
 |   * Added a new device tree property ``zephyr,pm-device-runtime-auto`` to | 
 |     automatically enable device runtime power management on a device after its | 
 |     initialization. | 
 |  | 
 | HALs | 
 | **** | 
 |  | 
 | * Nordic | 
 |  | 
 |   * Updated nrfx to version 3.0.0. | 
 |  | 
 | * STM32 | 
 |  | 
 |   * stm32cube: updated STM32F0 to cube version V1.11.4. | 
 |   * stm32cube: updated STM32F3 to cube version V1.11.4 | 
 |   * stm32cube: updated STM32L0 to cube version V1.12.2 | 
 |   * stm32cube: updated STM32U5 to cube version V1.2.0 | 
 |   * stm32cube: updated STM32WB to cube version V1.16.0 | 
 |  | 
 | * Raspberry Pi Pico | 
 |  | 
 |   * Updated hal_rpi_pico to version 1.5.0 | 
 |  | 
 | MCUboot | 
 | ******* | 
 |  | 
 | * Relocated the MCUboot Kconfig options from the main ``Kconfig.zephyr`` file to | 
 |   a new ``modules/Kconfig.mcuboot`` module-specific file. This means that, for | 
 |   interactive Kconfig interfaces, the MCUboot options will now be located under | 
 |   ``Modules`` instead of under ``Boot Options``. | 
 |  | 
 | * Added ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` that allows to pass arguments to | 
 |   west sign when invoked from cmake. | 
 |  | 
 | Storage | 
 | ******* | 
 |  | 
 | * Added :kconfig:option:`CONFIG_FLASH_MAP_LABELS`, which will enable runtime access to the labels | 
 |   property of fixed partitions. This option is implied if kconfig:option:`CONFIG_FLASH_MAP_SHELL` | 
 |   is enabled. These labels will be displayed in a separate column when using the ``flash_map list`` | 
 |   shell command. | 
 |  | 
 | Trusted Firmware-M | 
 | ****************** | 
 |  | 
 | * Enable routing of PSA Crypto API calls from NS to S, thanks to separating MbedTLS into three | 
 |   distinct libraries at build time (crypto, TLS, X.509). This also resolves header conflicts with | 
 |   earlier integrations of TF-M and MbedTLS. | 
 | * Added psa_crypto sample back. | 
 |  | 
 | zcbor | 
 | ***** | 
 |  | 
 | Updated from 0.6.0 to 0.7.0. | 
 | Among other things, this update brings: | 
 |  | 
 | * C++ improvements | 
 | * float16 support | 
 | * Improved docs | 
 | * -Wall and -Wconversion compliance | 
 |  | 
 | Tests and Samples | 
 | ***************** | 
 |  | 
 | * Two Babblesim based networking (802.15.4) tests have been added, which are run in Zephyr's CI | 
 |   system. One of them including the OpenThread stack. | 
 | * For native_posix and the nrf52_bsim: Many tests have been fixed and enabled. | 
 | * LittleFS sample has been given SPI example configuration for nrf52840dk_nrf52840. | 
 | * Migrated all tests to new Ztest API and deprecated legacy Ztest. |