:orphan:

.. _zephyr_3.2:

Zephyr 3.2.0
############

We are pleased to announce the release of Zephyr version 3.2.0.

Major enhancements with this release include:

* Introduced :ref:`sysbuild`.
* Added support for :ref:`bin-blobs` (also see :ref:`west-blobs`).
* Added support for Picolibc (see :kconfig:option:`CONFIG_PICOLIBC`).
* Converted all supported boards from ``pinmux`` to :ref:`pinctrl-guide`.
* Initial support for :ref:`i3c_api` controllers.
* Support for :ref:`W1 api<w1_api>`.
* Improved access to Devicetree compatibles from Kconfig (new generated
  ``DTS_HAS_..._ENABLED`` configs).

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-2022-2993: Under embargo until 2022-11-03

* CVE-2022-2741: Under embargo until 2022-10-14

API Changes
***********

Changes in this release
=======================

* Zephyr now requires Python 3.8 or higher

* Changed :c:struct:`spi_cs_control` to remove anonymous struct.
  This causes possible breakage for static initialization of the
  struct.  Updated :c:macro:`SPI_CS_CONTROL_PTR_DT` to reflect
  this change.

* The :kconfig:option:`CONFIG_LEGACY_INCLUDE_PATH` option has been disabled by
  default, all upstream code and modules have been converted to use
  ``<zephyr/...>`` header paths. The option is still available to facilitate
  the migration of external applications, but will be removed with the 3.4
  release.  The :zephyr_file:`scripts/utils/migrate_includes.py` script is
  provided to automate the migration.

* :zephyr_file:`include/zephyr/zephyr.h` no longer defines ``__ZEPHYR__``.
  This definition can be used by third-party code to compile code conditional
  to Zephyr. The definition is already injected by the Zephyr build system.
  Therefore, any third-party code integrated using the Zephyr build system will
  require no changes. External build systems will need to inject the definition
  by themselves, if they did not already.

* :zephyr_file:`include/zephyr/zephyr.h` has been deprecated in favor of
  :zephyr_file:`include/zephyr/kernel.h`, since it only included that header. No
  changes are required by applications other than replacing ``#include
  <zephyr/zephyr.h>`` with ``#include <zephyr/kernel.h>``.

* Bluetooth: Applications where :kconfig:option:`CONFIG_BT_EATT` is enabled
  must set the :c:member:`chan_opt` field on the GATT parameter structs.
  To keep the old behavior use :c:enumerator:`BT_ATT_CHAN_OPT_NONE`.

* CAN

  * The Zephyr SocketCAN definitions have been moved from :zephyr_file:`include/zephyr/drivers/can.h`
    to :zephyr_file:`include/zephyr/net/socketcan.h`, the SocketCAN ``struct can_frame`` has been
    renamed to :c:struct:`socketcan_frame`, and the SocketCAN ``struct can_filter`` has been renamed
    to :c:struct:`socketcan_filter`. The SocketCAN utility functions are now available in
    :zephyr_file:`include/zephyr/net/socketcan_utils.h`.

  * The CAN controller ``struct zcan_frame`` has been renamed to :c:struct:`can_frame`, and ``struct
    zcan_filter`` has been renamed to :c:struct:`can_filter`.

  * The :c:enum:`can_state` enumerations have been renamed to contain the word STATE in order to make
    their context more clear:

    * ``CAN_ERROR_ACTIVE`` renamed to :c:enumerator:`CAN_STATE_ERROR_ACTIVE`.
    * ``CAN_ERROR_WARNING`` renamed to :c:enumerator:`CAN_STATE_ERROR_WARNING`.
    * ``CAN_ERROR_PASSIVE`` renamed to :c:enumerator:`CAN_STATE_ERROR_PASSIVE`.
    * ``CAN_BUS_OFF`` renamed to :c:enumerator:`CAN_STATE_BUS_OFF`.

  * The error code for :c:func:`can_send` when the CAN controller is in bus off state has been
    changed from ``-ENETDOWN`` to ``-ENETUNREACH``. A return value of ``-ENETDOWN`` now indicates
    that the CAN controller is in :c:enumerator:`CAN_STATE_STOPPED`.

  * The list of valid return values for the CAN timing calculation functions have been expanded to
    allow distinguishing between an out of range bitrate/sample point, an unsupported bitrate, and a
    resulting sample point outside the guard limit.

* Memory Management Drivers

  * Added :c:func:`sys_mm_drv_update_page_flags` and
    :c:func:`sys_mm_drv_update_region_flags` to update flags associated
    with memory pages and regions.

Removed APIs in this release
============================

* The following functions, macros, and structures related to the
  deprecated kernel work queue API have been removed:

  * ``k_work_pending()``
  * ``k_work_q_start()``
  * ``k_delayed_work``
  * ``k_delayed_work_init()``
  * ``k_delayed_work_submit_to_queue()``
  * ``k_delayed_work_submit()``
  * ``k_delayed_work_pending()``
  * ``k_delayed_work_cancel()``
  * ``k_delayed_work_remaining_get()``
  * ``k_delayed_work_expires_ticks()``
  * ``k_delayed_work_remaining_ticks()``
  * ``K_DELAYED_WORK_DEFINE``

* Removed support for enabling passthrough mode on MPU9150 to
  AK8975 sensor.

* Removed deprecated SPI :c:struct:`spi_cs_control` fields for GPIO management
  that have been replaced with :c:struct:`gpio_dt_spec`.

* Removed support for configuring the CAN-FD maximum DLC value via Kconfig
  ``CONFIG_CANFD_MAX_DLC``.

* Removed deprecated civetweb module and the associated support code and samples.

Deprecated in this release
==========================

* :c:macro:`DT_SPI_DEV_CS_GPIOS_LABEL` and
  :c:macro:`DT_INST_SPI_DEV_CS_GPIOS_LABEL` are deprecated in favor of
  utilizing :c:macro:`DT_SPI_DEV_CS_GPIOS_CTLR` and variants.

* :c:macro:`DT_GPIO_LABEL`, :c:macro:`DT_INST_GPIO_LABEL`,
  :c:macro:`DT_GPIO_LABEL_BY_IDX`, and :c:macro:`DT_INST_GPIO_LABEL_BY_IDX`,
  are deprecated in favor of utilizing :c:macro:`DT_GPIO_CTLR` and variants.

* :c:macro:`DT_LABEL`, and :c:macro:`DT_INST_LABEL`, are deprecated
  in favor of utilizing :c:macro:`DT_PROP` and variants.

* :c:macro:`DT_BUS_LABEL`, and :c:macro:`DT_INST_BUS_LABEL`, are deprecated
  in favor of utilizing :c:macro:`DT_BUS` and variants.

* STM32 LPTIM domain clock should now be configured using devicetree.
  Related Kconfig :kconfig:option:`CONFIG_STM32_LPTIM_CLOCK` option is now
  deprecated.

* ``label`` property from devicetree as a base property. The property is still
  valid for specific bindings to specify like :dtcompatible:`gpio-leds` and
  :dtcompatible:`fixed-partitions`.

* Bluetooth mesh Configuration Client API prefixed with ``bt_mesh_cfg_``
  is deprecated in favor of a new API with prefix ``bt_mesh_cfg_cli_``.

* Pinmux API is now officially deprecated in favor of the pin control API.
  Its removal is scheduled for the 3.4 release. Refer to :ref:`pinctrl-guide`
  for more details on pin control.

* Flash Map API macros :c:macro:`FLASH_MAP_`, which have been using DTS node label
  property to reference partitions, have been deprecated and replaced with
  :c:macro:`FIXED_PARTITION_` whch use DTS node label instead.
  Replacement list:

  .. table::
     :align: center

     +-----------------------------------+------------------------------------+
     | Deprecated, takes label property  | Replacement, takes DTS node label  |
     +===================================+====================================+
     | :c:macro:`FLASH_AREA_ID`          | :c:macro:`FIXED_PARTITION_ID`      |
     +-----------------------------------+------------------------------------+
     | :c:macro:`FLASH_AREA_OFFSET`      | :c:macro:`FIXED_PARTITION_OFFSET`  |
     +-----------------------------------+------------------------------------+
     | :c:macro:`FLASH_AREA_SIZE`        | :c:macro:`FIXED_PARTITION_SIZE`    |
     +-----------------------------------+------------------------------------+
     | :c:macro:`FLASH_AREA_LABEL_EXISTS`| :c:macro:`FIXED_PARTITION_EXISTS`  |
     +-----------------------------------+------------------------------------+
     | :c:macro:`FLASH_AREA_DEVICE`      | :c:macro:`FIXED_PARTITION_DEVICE`  |
     +-----------------------------------+------------------------------------+

  :c:macro:`FLASH_AREA_LABEL_STR` is deprecated with no replacement as its sole
  purpose was to obtain the DTS node property label.

Stable API changes in this release
==================================

New APIs in this release
========================

* CAN

  * Added :c:func:`can_start` and :c:func:`can_stop` API functions for starting and stopping a CAN
    controller. Applications will need to call :c:func:`can_start` to bring the CAN controller out
    of :c:enumerator:`CAN_STATE_STOPPED` before being able to transmit and receive CAN frames.
  * Added :c:func:`can_get_capabilities` for retrieving a bitmask of the capabilities supported by a
    CAN controller.
  * Added :c:enumerator:`CAN_MODE_ONE_SHOT` for enabling CAN controller one-shot transmission mode.
  * Added :c:enumerator:`CAN_MODE_3_SAMPLES` for enabling CAN controller triple-sampling receive
    mode.

* I3C

  * Added a set of new API for I3C controllers.

* W1

  * Introduced the :ref:`W1 api<w1_api>`, used to interact with 1-Wire masters.

Kernel
******

* Source files using multiple :c:macro:`SYS_INIT` macros with the
  same initialisation function must now use :c:macro:`SYS_INIT_NAMED`
  with unique names per instance.

Architectures
*************

* ARC

  * Added support of non-multithreading mode for all UP ARC targets.
  * Added extra compile-time checks of :kconfig:option:`CONFIG_ISR_STACK_SIZE`
    and :kconfig:option:`CONFIG_ARC_EXCEPTION_STACK_SIZE` value.
  * Added support of generation symbol file for ARC MWDT toolchain variant.
  * Added ARC MWDT toolchain version check.
  * Added support for GCC mcpu option tuning for ARC targets on SoC level.
  * Switched ARCv3 64bit targets for usage of new linker output format value.
  * Added ARCv3 64bit accumulator reg save / restore, cleanup it for ARCv3
    32bit targets.
  * Fixed SMP race in ASM ARC interrupt handling code.

* ARM

  * Improved HardFault handling on Cortex-M.
  * Enabled automatic placement of the IRQ vector table.
  * Enabled S2RAM for Cortex-M, hooking up the provided API functions.
  * Added icache and dcache maintenance functions, and switched to the new
    Kconfig symbols (:kconfig:option:`CONFIG_CPU_HAS_DCACHE` and
    :kconfig:option:`CONFIG_CPU_HAS_ICACHE`).
  * Added data/instr. sync barriers after writing to ``SCTLR`` to disable MPU.
  * Use ``spsr_cxsf`` instead of unpredictable ``spsr_hyp`` on Cortex-R52.
  * Removes ``-Wstringop-overread`` warning with GCC 12.
  * Fixed handling of system off failure.
  * Fixed issue with incorrect ``ssf`` under bad syscall.
  * Fixed region check issue with mmu.

* ARM64

  * :c:func:`arch_mem_map` now supports :c:enumerator:`K_MEM_PERM_USER`.
  * Added :kconfig:option:`CONFIG_WAIT_AT_RESET_VECTOR` to spin at reset vector
    allowing a debugger to be attached.
  * Implemented erratum 822227 "Using unsupported 16K translation granules
    might cause Cortex-A57 to incorrectly trigger a domain fault".
  * Enabled single-threaded support for some platforms.
  * IRQ stack is now initialized when :kconfig:option:`CONFIG_INIT_STACKS` is set.
  * Fixed issue when cache API are used from userspace.
  * Fixed issue about the way IPI are delivered.
  * TF-A (TrustedFirmware-A) is now shipped as module.

* RISC-V

  * Introduced support for RV32E.
  * Reduced callee-saved registers for RV32E.
  * Introduced Zicsr, Zifencei and BitManip as separate extensions.
  * Introduced :kconfig:option:`CONFIG_RISCV_ALWAYS_SWITCH_THROUGH_ECALL` for
    plaforms that require every ``mret`` to be balanced by ``ecall``.
  * IRQ vector table is now used for vectored mode.
  * Disabled :kconfig:option:`CONFIG_IRQ_VECTOR_TABLE_JUMP_BY_CODE` for CLIC.
  * ``STRINGIFY`` macro is now used for CSR helpers.
  * :kconfig:option:`CONFIG_CODE_DATA_RELOCATION` is now supported.
  * PLIC and CLIC are now decoupled.
  * ``jedec,spi-nor`` is no longer required to be ``okay`` by the RISC-V arch
    linker script.
  * Removed usage of ``SOC_ERET``.
  * Removed usage of ``ulong_t``.
  * Added new TLS-based :c:func:`arch_is_user_context` implementation.
  * Fixed PMP for builds with SMP enabled.
  * Fixed the per-thread m-mode/u-mode entry array.
  * :c:func:`semihost_exec` function is now aligned at 16-byte boundary.

* Xtensa

  * Macros ``RSR`` and ``WSR`` have been renamed to :c:macro:`XTENSA_RSR`
    and :c:macro:`XTENSA_WSR` to give them proper namespace.
  * Fixed a rounding error in timing function when converting from cycles
    to nanoseconds.
  * Fixed the calculation of average "cycles to nanoseconds" to actually
    return nanoseconds instead of cycles.

Bluetooth
*********

* Audio

  * Implemented central security establishment when required.
  * Added additional security level options to the connection call.
  * Switched the unicast client and server to bidirectional CIS if available.
  * Added a new RSI advertising callback for CSIS.
  * Added multiple improvements to context handling, including public functions
    to get contexts.
  * Added ordered access procedure for the CSIS client, as well as storing
    active members by rank.
  * Added support for Write Preset Name in HAS.
  * Added support for using PACS for the broadcast sink role.
  * Cleaned up the MICP implementation, including renaming several structures
    and functions.
  * Implemented the CAP Acceptor role.
  * Added ASCS Metadata verification support.
  * Started exposing broadcast sink advertising data to the application.
  * Added support for unicast server start, reconfigure, release, disable and
    metadata.
  * Added support for multi-CIS.
  * Implemented HAS client support for preset switching.
  * Added support for setting vendor-specific non-HCI data paths for audio
    streams.

* Direction Finding

  * Added support for selectable IQ samples conversion to 8-bit.
  * Added support for VS IQ sample reports in ``int16_t`` format.

* Host

  * Added support for LE Secure Connections permission checking.
  * Added support for Multiple Variable Length Read procedure without EATT.
  * Added a new callback :c:func:`rpa_expired` in the struct
    :c:struct:`bt_le_ext_adv_cb` to enable synchronization of the advertising
    payload updates with the Resolvable Private Address (RPA) rotations when
    the :kconfig:option:`CONFIG_BT_PRIVACY` is enabled.
  * Added a new :c:func:`bt_le_set_rpa_timeout()` API call to dynamically change
    the Resolvable Private Address (RPA) timeout when the
    :kconfig:option:`CONFIG_BT_RPA_TIMEOUT_DYNAMIC` is enabled.
  * Added :c:func:`bt_conn_auth_cb_overlay` to overlay authentication callbacks
    for a Bluetooth LE connection.
  * Removed ``CONFIG_BT_HCI_ECC_STACK_SIZE``. A new Bluetooth long workqueue
    (:kconfig:option:`CONFIG_BT_LONG_WQ`) is used for processing ECC commands
    instead of the former dedicated thread.
  * :c:func:`bt_conn_get_security` and :c:func:`bt_conn_enc_key_size` now take
    a ``const struct bt_conn*`` argument.
  * The handling of GATT multiple notifications has been rewritten, and is now
    only to be used as a low-level API.
  * Added support for GATT CCCs in arbitrary locations as a client.
  * Extended the :c:struct:`bt_conn_info` structure with security information.
  * Added a new :kconfig:option:`CONFIG_BT_PRIVACY_RANDOMIZE_IR` that prevents
    the Host from using Controller-provided identity roots.
  * Added support for GATT over EATT.
  * Implemented the Immediate Alert Client.

* Mesh

  * Added support for selectable RPL backends.
  * Changed the way segmented messages are sent, avoiding bulk transmission.
  * Added an async config client API.
  * Added model publish support to the Health Client.
  * Moved relayed messages to a separate buffer pool.
  * Reduced delay of sending segment acknowledge message. Set
    :kconfig:option:`CONFIG_BT_MESH_SEG_ACK_PER_SEGMENT_TIMEOUT` to 100 to get
    the previous timing.
  * Restructured shell commands.

* Controller

  * Made the new LLCP implementation the default one. Enable
    :kconfig:option:`CONFIG_BT_LL_SW_LLCP_LEGACY` to revert back to the legacy
    implementation. :kconfig:option:`CONFIG_BT_LL_SW_LLCP_LEGACY` is marked
    deprecated in favor of the new :kconfig:option:`CONFIG_BT_LL_SW_LLCP`, which
    is the default now.
  * Marked Extended Advertising as stable, no longer experimental.
  * Added deinit() infrastructure in order to properly support disabling
    Bluetooth support, including the controller.
  * Implemented the Peripheral CIS Create procedure.
  * Implemented the CIS Terminate procedure.
  * Added support for Periodic Advertising ADI.
  * Implemented support for Extended Scan Response Data fragment operations.
  * Enable back-to-back PDU chaining for AD data.
  * Added a new :kconfig:option:`CONFIG_BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX`
    for allowing periodic sync event skipping.
  * Added a new :kconfig:option:`CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN` for
    minimal time reservation.
  * Implemented ISO Test Mode HCI commands.
  * Added support for multiple BIS sync selection within a BIG.
  * Implement flushing pending ISO TX PDUs when a BIG event is terminated.
  * Added a new :kconfig:option:`CONFIG_BT_CTLR_ADV_DATA_CHAIN` to enable
    experimental Advertising Data chaining support.

* HCI Driver

  * Added a new Telink B91 HCI driver.

Boards & SoC Support
********************

* Added support for these SoC series:

  * Atmel SAML21, SAMR34, SAMR35
  * GigaDevice GD32E50X
  * GigaDevice GD32F470
  * NXP i.MX8MN, LPC55S36, LPC51U68
  * renesas_smartbond da1469x SoC series

* Made these changes in other SoC series:

  * gigadevice: Enable SEGGER RTT
  * Raspberry Pi Pico: Added ADC support
  * Raspberry Pi Pico: Added PWM support
  * Raspberry Pi Pico: Added SPI support
  * Raspberry Pi Pico: Added watchdog support

* Changes for ARC boards:

  * Added support for qemu_arc_hs5x board (ARCv3, 32bit, UP, HS5x)
  * Simplified multi-runner setup for SMP nSIM ARC platforms
  * Fixed mdb execution folder for mdb-based west runners (mdb-nsim and mdb-hw)

* Added support for these ARM boards:

  * Arduino MKR Zero
  * Atmel atsaml21_xpro
  * Atmel atsamr34_xpro
  * Blues Wireless Swan
  * Digilent Zybo
  * EBYTE E73-TBB
  * GigaDevice GD32E507V-START
  * GigaDevice GD32E507Z-EVAL
  * GigaDevice GD32F407V-START
  * GigaDevice GD32F450V-START
  * GigaDevice GD32F450Z-EVAL
  * GigaDevice GD32F470I-EVAL
  * NXP lpcxpresso51u68, RT1060 EVKB
  * NXP lpcxpresso55s36
  * Olimex LoRa STM32WL DevKit
  * PAN1770 Evaluation Board
  * PAN1780 Evaluation Board
  * PAN1781 Evaluation Board
  * PAN1782 Evaluation Board
  * ST STM32F7508-DK Discovery Kit
  * TDK RoboKit 1
  * WeAct Studio Black Pill V1.2
  * WeAct Studio Black Pill V3.0
  * XIAO BLE
  * da1469x_dk_pro

* Added support for these ARM64 boards:

  * i.MX8M Nano LPDDR4 EVK board series

* Added support for these RISC-V boards:

  * ICE-V Wireless
  * RISCV32E Emulation (QEMU)

* Added support for these Xtensa boards:

  * ESP32-NET
  * intel_adsp_ace15_mtpm

* Removed support for these Xtensa boards:

  * Intel S1000

* Made these changes in other boards:

  * sam_e70_xplained: Uses EEPROM devicetree bindings for Ethernet MAC
  * sam_v71_xult: Uses EEPROM devicetree bindings for Ethernet MAC
  * rpi_pico: Added west runner configurations for Picoprobe, Jlink and Blackmagicprobe

* Added support for these following shields:

  * ARCELI W5500 ETH
  * MAX7219 LED display driver shield
  * Panasonic Grid-EYE (AMG88xx)

Build system and infrastructure
*******************************

* Introduced sysbuild, a new higher-level build system layer that enables
  combining multiple build systems together. It can be used to generate multiple
  images from a single build system invocation while maintaining a link between
  those different applications/images via a shared Kconfig layer.
* Introduced support for binary blobs in west, via a new ``west blobs`` command
  that allows users to list, fetch and delete binary blobs from their
  filesystem. Vendors can thus now integrate binary blobs, be it images or
  libraries, with upstream Zephyr.
* Removed deprecated ``GCCARMEMB_TOOLCHAIN_PATH`` setting.

Drivers and Sensors
*******************

* ADC

  * STM32: Now supports Vbat monitoring channel and STM32U5 series.
  * Added driver for GigaDevice GD32 SoCs.
  * Raspberry Pi Pico: Added ADC support for the Pico series.
  * Added :c:struct:`adc_dt_spec` related helpers for sequence initialization,
    setting up channels, and converting raw values to millivolts.
  * Fixed :c:macro:`ADC_DT_SPEC_GET` and related macros to properly handle
    channel identifiers >= 10.

* CAN

  * A driver for bridging from :ref:`native_posix` to Linux SocketCAN has been added.
  * A driver for the Espressif ESP32 TWAI has been added. See the
    :dtcompatible:`espressif,esp32-twai` devicetree binding for more information.
  * The STM32 CAN-FD CAN driver clock configuration has been moved from Kconfig to :ref:`devicetree
    <dt-guide>`. See the :dtcompatible:`st,stm32-fdcan` devicetree binding for more information.
  * The filter handling of STM32 bxCAN driver has been simplified and made more reliable.
  * The STM32 bxCAN driver now supports dual intances.
  * The CAN loopback driver now supports CAN-FD.
  * The CAN shell module has been rewritten to properly support the additions and changes to the CAN
    controller API.
  * The Zephyr network CAN bus driver, which provides raw L2 access to the CAN bus via a CAN
    controller driver, has been moved to :zephyr_file:`drivers/net/canbus.c` and can now be enabled
    using :kconfig:option:`CONFIG_NET_CANBUS`.
  * Added CAN support for NXP LPC55S36.

* Clock control

  * STM32: PLL_P, PLL_Q, PLL_R outputs can now be used as domain clock.
  * Added driver for GigaDevice GD32 SoCs (peripheral clocks configuration only).
  * Documented behavior when clock is not on.

* Counter

  * Added :c:func:`counter_get_value_64` function.
  * STM32: RTC : Now supports STM32U5 and STM32F1 series.
  * STM32: Timer : Now supports STM32L4 series.
  * Added counter support using CTimer for NXP MIMXRT595.
  * ESP32: Added support to Pulse Counter Mode (PCNT) and RTC.

* Crypto

  * Added Intel ADSP sha driver.
  * stm32: Check if clock device is ready before accessing clock control
    devices.
  * ataes132a: Convert to devicetree.

* DFU

  * Fixed fetch of the flash write block size from incorect device by
    ``flash_img``.
  * Fixed possible build failure in the image manager for mcuboot on
    redefinitions of :c:macro:`BOOT_MAX_ALIGN` and :c:macro:`BOOT_MAGIC_SZ`.

* Display

  * Renamed EPD controller driver GD7965 to UC81xx.
  * Improved support for different controllers in ssd16xx and uc81xx drivers.
  * Added basic read support for ssd16xx compatible EPD controllers.
  * Revised intel_multibootfb driver.
  * Added MAX7219 display controller driver.

* Disk

  * Added support for DMA transfers when using STM32 SD host controller.
  * Added support for SD host controller present on STM32L5X family.

* DMA

  * STM32: Now supports stm32u5 series.
  * cAVS drivers renamed with the broader Intel ADSP naming.
  * Kconfig depends on improvements with device tree statuses.
  * Added driver for GigaDevice GD32 SoCs.
  * Added DMA support for NXP MIMXRT595.

* EEPROM

  * Added Microchip XEC (MEC172x) on-chip EEPROM driver. See the
    :dtcompatible:`microchip,xec-eeprom` devicetree binding for more information.

* Entropy

  * Update drivers to use devicetree Kconfig symbol.
  * gecko: Add driver using Secure Element module of EFR3.
  * Added entropy driver for MCUX CAAM.
  * stm32: Check if clock device is ready before accessing.

* ESPI

  * eSPI emulator initialization improvements.
  * Nuvoton: Enabled platform specific Virtual Wire GPIO.
  * Microchip: Added XEC (MEC152x) overcurrent platform-specific virtual wires.
  * Nuvoton: Added driver flash channel operations support.

* Ethernet

  * Atmel gmac: Add EEPROM devicetree bindings for MAC address.
  * Performance improvements on the NXP MCUX Ethernet Driver.

* Flash

  * Atmel eefc: Fix support for Cortex-M4 variants.
  * Added flash driver for Renesas Smartbond platform
  * Added support for STM32H7 and STM32U5 in the STM32 OSPI driver.
  * Added DMA transfer support in the STM32 OSPI driver.
  * Added driver for GigaDevice GD32 SoCs
  * Added Flash support for NXP LPCXpresso55S36.
  * Added Flash support for NXP MIMXRT595 EVK.
  * Added on-chip flash driver for TI CC13xx/CC26xx.
  * Fixed flash to flash write for Telink B91.
  * Fixed DMA priority configuration in the stm32 QSPI driver.
  * Drivers are enabled by default based on their devicetree hardware declarations.
  * Fixed write from unaligned source for STM32G0x.
  * Added Flash support for Renesas Smartbond platform.
  * Added Flash support for Cadence QSPI NOR FLASH.
  * Fixed usage fault on nRF driver (along with BLE) due to possible incorrect handling of the ticker stop operation.

* GPIO

  * Added GPIO driver for Renesas Smartbond platform.

* I2C

  * Terminology updated to latest i2c specification removing master/slave
    terminology and replacing with controller/target terminology.
  * Asynchronous APIs added for requesting i2c transactions without
    waiting for the completion of them.
  * Added NXP LPI2C driver asynchronous i2c implementation with sample
    showing usage with a FRDM-K64F board.
  * STM32: support for second target address was added.
  * Kconfig depends on improvements with device tree statuses.
  * Improved ITE I2C support with FIFO and command queue mode.
  * Improve gd32 driver stability (remove repeated START, use STOP + START conditions instead).
  * Fixed gd32 driver incorrect Fast-mode config.
  * Add bus recovery support to the NXP MCUX LPI2C driver.
  * Enable I2C support on NXP MIMXRT595 EVK.

* I2S

  * Removed the Intel S1000 I2S driver.

* I3C

  * Added a driver to support the NXP MCUX I3C hardware acting as the primary controller
    on the bus (tested using RT685).

* IEEE 802.15.4

  * All IEEE 802.15.4 drivers have been converted to Devicetree-based drivers.
  * Atmel AT86RF2xx: Add Power Table on devicetree.
  * Atmel AT86RF2xx: Add support to RF212/212B Sub-Giga devices.

* Interrupt Controller

  * Added support for ACE V1X.
  * Fixed an addressing issue on GICv3 controllers.
  * Removed support for ``intel_s1000_crb``.

* IPM

  * Kconfig is split into smaller, vendor oriented files.
  * Support for Intel S1000 in cAVS IDC driver has been removed as the board
    ``intel_s1000_crb`` has been removed.

* KSCAN

  * Enabled the touch panel on the NXP MIMXRT1170 EVK.

* LED

  * Added support for using multiple instances of LP5562 LED module.
  * Devicetree usage cleanups.
  * i2c_dt_spec migration.
  * Updated LED PWM support for ESP32 boards.

* LoRa

  * Added support for setting the sync-word and iq-inverted modes in LoRa modems.
  * Removed ``REQUIRES_FULL_LIBC`` library dependency from LoRa drivers. This
    results in considerable flash memory savings.
  * Devicetree usage cleanups.

* MEMC

  * Added support for Atmel SAM SMC/EBI.

* PCIE

  * Added a ``dump`` subcommand to the ``pcie`` shell command to print out
    the first 16 configuration space registers.
  * Added a ``ls`` subcommand to the ``pcie`` shell command to list
    devices.

* PECI

  * Added PECI driver for Nuvoton NPCX family.
  * Devicetree binding for ITE it8xxx2 PECI driver has changed from
    ``ite,peci-it8xxx2`` to :dtcompatible:`ite,it8xxx2-peci` so that this aligns
    with other ITE devices.

* Pin control

  * Added driver for Infineon XMC4XXX.
  * Added driver for Renesas Smartbond platform.
  * Added driver for Xilinx Zynq-7000.
  * Added support for PSL pads in NPCX driver.
  * MEC15XX driver now supports both MEC15XX and MEC17XX.
  * nRF driver now supports disconnecting a pin by using ``NRF_PSEL_DISCONNECT``.
  * nRF driver will use S0D1 drive mode for TWI/TWIM pins by default.

* PWM

  * Added PWM driver for Renesas R-Car platform.
  * Added PWM driver for Raspberry Pi Pico series.
  * Added PWM support for NXP LPC55S36.
  * Added MCPWM support for ESP32 boards.
  * Fixed the nRF PWM driver to properly handle cases where PWM generation is
    used for some channels while some others are set to a constant level (active
    or inactive), e.g. when the LED driver API is used to turn off a PWM driven
    LED while another one (within the same PWM instance) is blinking.

* Power Domain

  * Enabled access to the PMIC on NXP MXRT595 EVK.
  * Added soft off mode to the RT10xx Power Management.
  * Added support for power gating for Intel ADSP devices.

* Reset

  * Added driver for GigaDevice GD32 SoCs.

* SDHC

  * Added SDHC driver for NXP LPCXpresso platform.
  * Added support for card busy signal in SDHC SPI driver, to support
    the :ref:`File System API <file_system_api>`.

* Sensor

  * Converted drivers to use Kconfig 'select' instead of 'depends on' for I2C,
    SPI, and GPIO dependencies.
  * Converted drivers to use I2C, SPI, and GPIO dt_spec helpers.
  * Added multi-instance support to various drivers.
  * Added DS18B20 1-wire temperature sensor driver.
  * Added Würth Elektronik WSEN-HIDS driver.
  * Fixed unit conversion in the ADXL345 driver.
  * Fixed TTE and TTF time units in the MAX17055 driver.
  * Removed MPU9150 passthrough support from the AK8975 driver.
  * Changed the FXOS8700 driver default mode from accel-only to hybrid.
  * Enhanced the ADXL345 driver to support SPI.
  * Enhanced the BQ274XX driver to support the data ready interrupt trigger.
  * Enhanced the INA237 driver to support triggered mode.
  * Enhanced the LPS22HH driver to support being on an I3C bus.
  * Enhanced the MAX17055 driver to support VFOCV.

* Serial

  * Added serial driver for Renesas Smartbond platform.
  * The STM32 driver now allows to use serial device as stop mode wake up source.
  * Added check for clock control device readiness during configuration
    for various drivers.
  * Various fixes on ``lpuart``.
  * Added a workaround on bytes dropping on ``nrfx_uarte``.
  * Fixed compilation error on ``uart_pl011`` when interrupt is diabled.
  * Added power management support on ``stm32``.
  * ``xlnx_ps`` has moved to using ``DEVICE_MMIO`` API.
  * ``gd32`` now supports using reset API to reset hardware and clock
    control API to enable UART clock.

* SPI

  * Add interrupt-driven mode support for gd32 driver.
  * Enable SPI support on NXP MIMXRT595 EVK.
  * PL022: Added SPI driver for the PL022 peripheral.

* Timer

  * STM32 LPTIM based timer should now be configured using device tree.

* USB

  * Restructured the NXP MCUX USB driver.
  * Added USB support for NXP MXRT595.
  * Fixed detach behavior in nRF USBD and Atmel SAM drivers.

* W1

  * Added Zephyr-Serial 1-Wire master driver.
  * Added DS2484 1-Wire master driver. See the :dtcompatible:`maxim,ds2484`
    devicetree binding for more information.
  * Added DS2485 1-Wire master driver. See the :dtcompatible:`maxim,ds2485`
    devicetree binding for more information.
  * Introduced a shell module for 1-Wire.

* Watchdog

  * Added support for Raspberry Pi Pico watchdog.
  * Added watchdog support on NXP MIMXRT595 EVK.

* WiFi

  * Added ESP32 WiFi integration to Wi-Fi API management.

Networking
**********

* CoAP:

  * Replaced constant CoAP retransmission count and acknowledgment random factor
    with configurable :kconfig:option:`CONFIG_COAP_ACK_RANDOM_PERCENT` and
    :kconfig:option:`CONFIG_COAP_MAX_RETRANSMIT`.
  * Updated :c:func:`coap_packet_parse` and :c:func:`coap_handle_request` to
    return different error code based on the reason of parsing error.

* Ethernet:

  * Added EAPoL and IEEE802154 Ethernet protocol types.

* HTTP:

  * Improved API documentation.

* LwM2M:

  * Moved LwM2M 1.1 support out of experimental.
  * Refactored SenML-JSON and JSON encoder/decoder to use Zephyr's JSON library
    internally.
  * Extended LwM2M shell module with the following commands: ``exec``, ``read``,
    ``write``, ``start``, ``stop``, ``update``, ``pause``, ``resume``.
  * Refactored LwM2M engine module into smaller sub-modules: LwM2M registry,
    LwM2M observation, LwM2M message handling.
  * Added an implementation of the LwM2M Access Control object (object ID 2).
  * Added support for LwM2M engine pause/resume.
  * Improved API documentation of the LwM2M engine.
  * Improved thread safety of the LwM2M library.
  * Added :c:func:`lwm2m_registry_lock` and :c:func:`lwm2m_registry_unlock`
    functions, which allow to update multiple resources w/o sending a
    notification for every update.
  * Multiple minor fixes/improvements.

* Misc:

  * ``CONFIG_NET_CONFIG_IEEE802154_DEV_NAME`` has been removed in favor of
    using a Devicetree choice given by ``zephyr,ieee802154``.
  * Fixed net_pkt leak with shallow clone.
  * Fixed websocket build with :kconfig:option:`CONFIG_POSIX_API`.
  * Extracted zperf shell commands into a library.
  * Added support for building and using IEEE 802.15.4 L2 without IP support.
  * General clean up of inbound packet handling.
  * Added support for restarting DHCP w/o randomized delay.
  * Fixed a bug, where only one packet could be queued on a pending ARP
    request.

* OpenThread:

  * Moved OpenThread glue code into ``modules`` directory.
  * Fixed OpenThread build with :kconfig:option:`CONFIG_NET_MGMT_EVENT_INFO`
    disabled.
  * Fixed mbed TLS configuration for Service Registration Protocol (SRP)
    OpenThread feature.
  * Added Kconfig option to enable Thread 1.3 support
    (:kconfig:option:`CONFIG_OPENTHREAD_THREAD_VERSION_1_3`).
  * Updated :c:func:`otPlatSettingsSet` according to new API documentation.
  * Added new Kconfig options:

    * :kconfig:option:`CONFIG_OPENTHREAD_MESSAGE_BUFFER_SIZE`
    * :kconfig:option:`CONFIG_OPENTHREAD_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS`

* Sockets:

  * Fixed filling of the address structure provided in :c:func:`recvfrom` for
    packet socket.
  * Fixed a potential deadlock in TCP :c:func:`send` call.
  * Added support for raw 802.15.4 packet socket.

* TCP:

  * Added support for Nagle's algorithm.
  * Added "Silly Window Syndrome" avoidance.
  * Fixed MSS calculation.
  * Avoid unnecessary packet cloning on the RX path.
  * Implemented randomized retransmission timeouts and exponential backoff.
  * Fixed out-of-order data processing.
  * Implemented fast retransmit algorithm.
  * Multiple minor fixes/improvements.

* Wi-Fi

  * Added support for using offloaded wifi_mgmt API with native network stack.
  * Extended Wi-Fi headers with additional Wi-Fi parameters (security, bands,
    modes).
  * Added new Wi-Fi management APIs for retrieving status and statistics.

USB
***

  * Minor bug fixes and improvements in class implementations CDC ACM, DFU, and MSC.
    Otherwise no significant changes.

Devicetree
**********

* Use of the devicetree *label property* has been deprecated, and the property
  has been made optional in almost all bindings throughout the tree.

  In previous versions of zephyr, label properties like this commonly appeared
  in devicetree files:

  .. code-block:: dts

     foo {
             label = "FOO";
             /* ... */
     };

  You could then use something like the following to retrieve a device
  structure for use in the :ref:`device_model_api`:

  .. code-block:: c

     const struct device *my_dev = device_get_binding("FOO");
     if (my_dev == NULL) {
             /* either device initialization failed, or no such device */
     } else {
             /* device is ready for use */
     }

  This approach has multiple problems.

  First, it incurs a runtime string comparison over all devices in the system
  to look up each device, which is inefficient since devices are statically
  allocated and known at build time. Second, missing devices due to
  misconfigured device drivers could not easily be distinguished from device
  initialization failures, since both produced ``NULL`` return values from
  ``device_get_binding()``. This led to frequent confusion. Third, the
  distinction between the label property and devicetree *node labels* -- which
  are different despite the similar terms -- was a frequent source of user
  confusion, especially since either one can be used to retrieve device
  structures.

  Instead of using label properties, you should now generally be using node
  labels to retrieve devices instead. Node labels look like the ``lbl`` token
  in the following devicetree:

  .. code-block:: dts

     lbl: foo {
             /* ... */
     };

  and you can retrieve the device structure pointer like this:

  .. code-block:: c

     /* If the next line causes a build error, then there
      * is no such device. Either fix your devicetree or make sure your
      * device driver is allocating a device. */
     const struct device *my_dev = DEVICE_DT_GET(DT_NODELABEL(lbl));

     if (!device_is_ready(my_dev)) {
             /* device exists, but it failed to initialize */
     } else {
             /* device is ready for use */
     }

  As shown in the above snippet, :c:macro:`DEVICE_DT_GET` should generally be
  used instead of ``device_get_binding()`` when getting device structures from
  devicetree nodes. Note that you can pass ``DEVICE_DT_GET`` any devicetree
  :ref:`node identifier <dt-node-identifiers>` -- you don't have to use
  :c:macro:`DT_NODELABEL`, though it is usually convenient to do so.

* Support for devicetree "fixups" was removed. For more details, see `commit
  b2520b09a7
  <https://github.com/zephyrproject-rtos/zephyr/commit/b2520b09a78b86b982a659805e0c65b34e3112a5>`_

* :ref:`devicetree_api`

  * All devicetree macros now recursively expand their arguments. This means
    that in the following example, ``INDEX`` is always replaced with the number
    ``3`` for any hypothetical devicetree macro ``DT_FOO()``:

    .. code-block:: c

       #define INDEX 3
       int foo = DT_FOO(..., INDEX)

    Previously, devicetree macro arguments were expanded or not on a
    case-by-case basis. The current behavior ensures you can always rely on
    macro expansion when using devicetree APIs.

  * New API macros:

     * :c:macro:`DT_FIXED_PARTITION_EXISTS`
     * :c:macro:`DT_FOREACH_CHILD_SEP_VARGS`
     * :c:macro:`DT_FOREACH_CHILD_SEP`
     * :c:macro:`DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS`
     * :c:macro:`DT_FOREACH_CHILD_STATUS_OKAY_SEP`
     * :c:macro:`DT_FOREACH_NODE`
     * :c:macro:`DT_FOREACH_STATUS_OKAY_NODE`
     * :c:macro:`DT_INST_CHILD`
     * :c:macro:`DT_INST_FOREACH_CHILD_SEP_VARGS`
     * :c:macro:`DT_INST_FOREACH_CHILD_SEP`
     * :c:macro:`DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS`
     * :c:macro:`DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP`
     * :c:macro:`DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS`
     * :c:macro:`DT_INST_FOREACH_CHILD_STATUS_OKAY`
     * :c:macro:`DT_INST_STRING_TOKEN_BY_IDX`
     * :c:macro:`DT_INST_STRING_TOKEN`
     * :c:macro:`DT_INST_STRING_UPPER_TOKEN_BY_IDX`
     * :c:macro:`DT_INST_STRING_UPPER_TOKEN_OR`
     * :c:macro:`DT_INST_STRING_UPPER_TOKEN`
     * :c:macro:`DT_NODE_VENDOR_BY_IDX_OR`
     * :c:macro:`DT_NODE_VENDOR_BY_IDX`
     * :c:macro:`DT_NODE_VENDOR_HAS_IDX`
     * :c:macro:`DT_NODE_VENDOR_OR`
     * :c:macro:`DT_STRING_TOKEN_BY_IDX`
     * :c:macro:`DT_STRING_UPPER_TOKEN_BY_IDX`
     * :c:macro:`DT_STRING_UPPER_TOKEN_OR`

  * Deprecated macros:

     * ``DT_LABEL(node_id)``: use ``DT_PROP(node_id, label)`` instead. This is
       part of the general deprecation of the label property described at the
       top of this section.
     * ``DT_INST_LABEL(inst)``: use ``DT_INST_PROP(inst, label)`` instead.
     * ``DT_BUS_LABEL(node_id)``: use ``DT_PROP(DT_BUS(node_id), label))`` instead.
     * ``DT_INST_BUS_LABEL(node_id)``: use ```DT_PROP(DT_INST_BUS(inst),
       label)`` instead. Similar advice applies for the rest of the following
       deprecated macros: if you need to access a devicetree node's label
       property, do so explicitly using another property access API macro.
     * ``DT_GPIO_LABEL_BY_IDX()``
     * ``DT_GPIO_LABEL()``
     * ``DT_INST_GPIO_LABEL_BY_IDX()``
     * ``DT_INST_GPIO_LABEL()``
     * ``DT_SPI_DEV_CS_GPIOS_LABEL()``
     * ``DT_INST_SPI_DEV_CS_GPIOS_LABEL()``
     * ``DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL``

* Bindings

  * The :ref:`bus <dt-bindings-bus>` key in a bindings file can now be a list
    of strings as well as a string. This allows a single node to declare that
    it represents hardware which can communicate over multiple bus protocols.
    The primary use case is simultaneous support for I3C and I2C buses in the
    same nodes, with the base bus definition provided in
    :zephyr_file:`dts/bindings/i3c/i3c-controller.yaml`.

  * New:

    * :dtcompatible:`adi,adxl345`
    * :dtcompatible:`altr,nios2-qspi-nor`
    * :dtcompatible:`altr,nios2-qspi`
    * :dtcompatible:`andestech,atciic100`
    * :dtcompatible:`andestech,atcpit100`
    * :dtcompatible:`andestech,machine-timer`
    * :dtcompatible:`andestech,atcspi200`
    * :dtcompatible:`arduino-mkr-header`
    * :dtcompatible:`arm,armv6m-systick`
    * :dtcompatible:`arm,armv7m-itm`
    * :dtcompatible:`arm,armv7m-systick`
    * :dtcompatible:`arm,armv8.1m-systick`
    * :dtcompatible:`arm,armv8m-itm`
    * :dtcompatible:`arm,armv8m-systick`
    * :dtcompatible:`arm,beetle-syscon`
    * :dtcompatible:`arm,pl022`
    * :dtcompatible:`aspeed,ast10x0-clock`
    * :dtcompatible:`atmel,at24mac402`
    * :dtcompatible:`atmel,ataes132a`
    * :dtcompatible:`atmel,sam-smc`
    * :dtcompatible:`atmel,sam4l-flashcalw-controller`
    * :dtcompatible:`atmel,saml2x-gclk`
    * :dtcompatible:`atmel,saml2x-mclk`
    * :dtcompatible:`cdns,qspi-nor`
    * :dtcompatible:`espressif,esp32-ipm`
    * :dtcompatible:`espressif,esp32-mcpwm`
    * :dtcompatible:`espressif,esp32-pcnt`
    * :dtcompatible:`espressif,esp32-rtc-timer`
    * :dtcompatible:`espressif,esp32-timer`
    * :dtcompatible:`espressif,esp32-twai`
    * :dtcompatible:`espressif,esp32-usb-serial`
    * :dtcompatible:`espressif,esp32-wifi`
    * :dtcompatible:`gd,gd32-adc`
    * :dtcompatible:`gd,gd32-cctl`
    * :dtcompatible:`gd,gd32-dma`
    * :dtcompatible:`gd,gd32-flash-controller`
    * :dtcompatible:`gd,gd32-rcu`
    * :dtcompatible:`goodix,gt911`
    * :dtcompatible:`infineon,xmc4xxx-gpio`
    * :dtcompatible:`infineon,xmc4xxx-pinctrl`
    * :dtcompatible:`intel,ace-art-counter`
    * :dtcompatible:`intel,ace-intc`
    * :dtcompatible:`intel,ace-rtc-counter`
    * :dtcompatible:`intel,ace-timestamp`
    * :dtcompatible:`intel,adsp-gpdma` (formerly ``intel,cavs-gpdma``)
    * :dtcompatible:`intel,adsp-hda-host-in` (formerly ``intel,cavs-hda-host-in``)
    * :dtcompatible:`intel,adsp-hda-host-out` (formerly ``intel,cavs-hda-host-out``)
    * :dtcompatible:`intel,adsp-hda-link-in` (formerly ``intel,cavs-hda-link-in``)
    * :dtcompatible:`intel,adsp-hda-link-out` (formerly ``intel,cavs-hda-link-out``)
    * :dtcompatible:`intel,adsp-host-ipc`
    * :dtcompatible:`intel,adsp-idc` (formerly ``intel,cavs-idc``)
    * :dtcompatible:`intel,adsp-imr`
    * :dtcompatible:`intel,adsp-lps`
    * :dtcompatible:`intel,adsp-mtl-tlb`
    * :dtcompatible:`intel,adsp-power-domain`
    * :dtcompatible:`intel,adsp-shim-clkctl`
    * :dtcompatible:`intel,agilex-clock`
    * :dtcompatible:`intel,alh-dai`
    * :dtcompatible:`intel,multiboot-framebuffer`
    * :dtcompatible:`ite,it8xxx2-peci` (formerly ``ite,peci-it8xxx2``)
    * :dtcompatible:`maxim,ds18b20`
    * :dtcompatible:`maxim,ds2484`
    * :dtcompatible:`maxim,ds2485`
    * :dtcompatible:`maxim,max7219`
    * :dtcompatible:`microchip,mpfs-gpio`
    * :dtcompatible:`microchip,xec-eeprom`
    * :dtcompatible:`microchip,xec-espi`
    * :dtcompatible:`microchip,xec-i2c`
    * :dtcompatible:`microchip,xec-qmspi`
    * :dtcompatible:`neorv32-machine-timer`
    * :dtcompatible:`nordic,nrf-ieee802154`
    * :dtcompatible:`nuclei,systimer`
    * :dtcompatible:`nuvoton,npcx-leakage-io`
    * :dtcompatible:`nuvoton,npcx-peci`
    * :dtcompatible:`nuvoton,npcx-power-psl`
    * :dtcompatible:`nxp,gpt-hw-timer`
    * :dtcompatible:`nxp,iap-fmc11`
    * :dtcompatible:`nxp,imx-caam`
    * :dtcompatible:`nxp,kw41z-ieee802154`
    * :dtcompatible:`nxp,lpc-rtc`
    * :dtcompatible:`nxp,lpc-sdif`
    * :dtcompatible:`nxp,mcux-i3c`
    * :dtcompatible:`nxp,os-timer`
    * :dtcompatible:`panasonic,reduced-arduino-header`
    * :dtcompatible:`raspberrypi,pico-adc`
    * :dtcompatible:`raspberrypi,pico-pwm`
    * :dtcompatible:`raspberrypi,pico-spi`
    * :dtcompatible:`raspberrypi,pico-watchdog`
    * :dtcompatible:`renesas,pwm-rcar`
    * :dtcompatible:`renesas,r8a7795-cpg-mssr` (formerly ``renesas,rcar-cpg-mssr``)
    * :dtcompatible:`renesas,smartbond-flash-controller`
    * :dtcompatible:`renesas,smartbond-gpio`
    * :dtcompatible:`renesas,smartbond-pinctrl`
    * :dtcompatible:`renesas,smartbond-uart`
    * :dtcompatible:`sifive,clint0`
    * :dtcompatible:`sifive,e24` (formerly ``riscv,sifive-e24``)
    * :dtcompatible:`sifive,e31` (formerly ``riscv,sifive-e31``)
    * :dtcompatible:`sifive,e51` (formerly ``riscv,sifive-e51``)
    * :dtcompatible:`sifive,s7` (formerly ``riscv,sifive-s7``)
    * :dtcompatible:`silabs,gecko-semailbox`
    * :dtcompatible:`snps,arc-iot-sysconf`
    * :dtcompatible:`snps,arc-timer`
    * :dtcompatible:`snps,archs-ici`
    * :dtcompatible:`st,stm32-vbat`
    * :dtcompatible:`st,stm32g0-hsi-clock`
    * :dtcompatible:`st,stm32h7-spi`
    * :dtcompatible:`st,stm32u5-dma`
    * :dtcompatible:`starfive,jh7100-clint`
    * :dtcompatible:`telink,b91-adc`
    * :dtcompatible:`telink,machine-timer`
    * :dtcompatible:`ti,ads1119`
    * :dtcompatible:`ti,cc13xx-cc26xx-flash-controller`
    * :dtcompatible:`ti,cc13xx-cc26xx-ieee802154-subghz`
    * :dtcompatible:`ti,cc13xx-cc26xx-ieee802154`
    * :dtcompatible:`ti,sn74hc595`
    * :dtcompatible:`ultrachip,uc8176`
    * :dtcompatible:`ultrachip,uc8179`
    * :dtcompatible:`xen,hvc-uart`
    * :dtcompatible:`xen,xen-4.15`
    * :dtcompatible:`xlnx,pinctrl-zynq`
    * :dtcompatible:`zephyr,coredump`
    * :dtcompatible:`zephyr,ieee802154-uart-pipe`
    * :dtcompatible:`zephyr,native-posix-counter`
    * :dtcompatible:`zephyr,native-posix-linux-can`
    * :dtcompatible:`zephyr,sdl-kscan`
    * :dtcompatible:`zephyr,sdmmc-disk`
    * :dtcompatible:`zephyr,w1-serial`

  * :ref:`pinctrl-guide` support added via new ``pinctrl-0``, etc. properties:

    * :dtcompatible:`microchip,xec-qmspi`
    * :dtcompatible:`infineon,xmc4xxx-uart`
    * :dtcompatible:`nxp,lpc-mcan`
    * :dtcompatible:`xlnx,xuartps`

  * Other changes:

    * Analog Devices parts:

      * :dtcompatible:`adi,adxl372`: new properties as part of a general conversion
        of the associated upstream driver to support multiple instances.
      * :dtcompatible:`adi,adxl362`: new ``wakeup-mode``, ``autosleep`` properties.

    * Atmel SoCs:

      * :dtcompatible:`atmel,rf2xx`: new ``channel-page``, ``tx-pwr-table``,
        ``tx-pwr-min``, ``tx-pwr-max`` properties.
      * GMAC: new ``mac-eeprom`` property.

    * Espressif SoCs:

      * :dtcompatible:`espressif,esp32-i2c`: the ``sda-pin`` and ``scl-pin``
        properties are now ``scl-gpios`` and ``sda-gpios``.
      * :dtcompatible:`espressif,esp32-ledc`: device configuration moved to
        devicetree via a new child binding.
      * :dtcompatible:`espressif,esp32-pinctrl`: this now uses pin groups.
      * :dtcompatible:`espressif,esp32-spi`: new ``use-iomux`` property.
      * :dtcompatible:`espressif,esp32-usb-serial`: removed ``peripheral``
        property.

    * GigaDevice SoCs:

      * Various peripheral bindings have had their SoC-specific
        ``rcu-periph-clock`` properties replaced with the standard ``clocks``
        property as part of driver changes associated with the new
        :dtcompatible:`gd,gd32-cctl` clock controller binding:

        * :dtcompatible:`gd,gd32-afio`
        * :dtcompatible:`gd,gd32-dac`
        * :dtcompatible:`gd,gd32-gpio`
        * :dtcompatible:`gd,gd32-i2c`
        * :dtcompatible:`gd,gd32-pwm`
        * :dtcompatible:`gd,gd32-spi`
        * :dtcompatible:`gd,gd32-syscfg`
        * :dtcompatible:`gd,gd32-timer`
        * :dtcompatible:`gd,gd32-usart`

      * Similarly, various GigaDevice peripherals now support the standard
        ``resets`` property as part of related driver changes to support
        resetting the peripheral state before initialization via the
        :dtcompatible:`gd,gd32-rcu` binding:

        * :dtcompatible:`gd,gd32-dac`
        * :dtcompatible:`gd,gd32-gpio`
        * :dtcompatible:`gd,gd32-i2c`
        * :dtcompatible:`gd,gd32-pwm`
        * :dtcompatible:`gd,gd32-spi`
        * :dtcompatible:`gd,gd32-usart`

    * Intel SoCs:

      * :dtcompatible:`intel,adsp-tlb`:
        new ``paddr-size``, ``exec-bit-idx``, ``write-bit-idx`` properties.
      * :dtcompatible:`intel,adsp-shim-clkctl`: new ``wovcro-supported`` property.
      * Removed ``intel,dmic`` binding.
      * Removed ``intel,s1000-pinmux`` binding.

    * Nordic SoCs:

      * :dtcompatible:`nordic,nrf-pinctrl`: ``NRF_PSEL_DISCONNECTED`` can be used
        to disconnect a pin.
      * :dtcompatible:`nordic,nrf-spim`: new ``rx-delay-supported``,
        ``rx-delay`` properties.
      * :dtcompatible:`nordic,nrf-spim`, :dtcompatible:`nordic,nrf-spi`: new
         ``overrun-character``, ``max-frequency``, ``memory-region``,
         ``memory-region-names`` properties.
      * :dtcompatible:`nordic,nrf-uarte`: new ``memory-region``,
        ``memory-region-names`` properties.
      * Various bindings have had ``foo-pin`` properties deprecated. For
        example, :dtcompatible:`nordic,nrf-qspi` has a deprecated ``sck-pin``
        property. Uses of such properties should be replaced with pinctrl
        equivalents; see :dtcompatible:`nordic,nrfpinctrl`.

    * Nuvoton SoCs:

      * :dtcompatible:`nuvoton,npcx-leakage-io`: new ``lvol-maps`` property.
      * :dtcompatible:`nuvoton,npcx-scfg`: removed ``io_port``, ``io_bit``
        cells in ``lvol_cells`` specifiers.
      * Removed: ``nuvoton,npcx-lvolctrl-def``, ``nuvoton,npcx-psl-out``,
        ``nuvoton,npcx-pslctrl-conf``, ``nuvoton,npcx-pslctrl-def``.
      * Added pinctrl support for PSL (Power Switch Logic) pads.

    * NXP SoCs:

      * :dtcompatible:`nxp,imx-pwm`: new ``run-in-wait``, ``run-in-debug`` properties.
      * :dtcompatible:`nxp,lpc-spi`: new ``def-char`` property.
      * :dtcompatible:`nxp,lpc-iocon-pinctrl`: new ``nxp,analog-alt-mode`` property.
      * removed deprecated ``nxp,lpc-iap`` binding.
      * :dtcompatible:`nxp,imx-csi`: new ``sensor`` property replacing the
        ``sensor-label`` property.
      * :dtcompatible:`nxp,imx-lpi2c`: new ``scl-gpios``, ``sda-gpios`` properties.

    * STM32 SoCs:

      * :dtcompatible:`st,stm32-adc`: new ``has-vbat-channel`` property.
      * :dtcompatible:`st,stm32-can`: removed ``one-shot`` property.
      * :dtcompatible:`st,stm32-fdcan`: new ``clocks``, ``clk-divider`` properties.
      * :dtcompatible:`st,stm32-ospi`: new ``dmas``, ``dma-names`` properties.
      * :dtcompatible:`st,stm32-ospi-nor`: new ``four-byte-opcodes``,
        ``writeoc`` properties; new enum values ``2`` and ``4`` in
        ``spi-bus-width`` property.
      * :dtcompatible:`st,stm32-pwm`: removed deprecated ``st,prescaler`` property.
      * :dtcompatible:`st,stm32-rng`: new ``nist-config`` property.
      * :dtcompatible:`st,stm32-sdmmc`: new ``dmas``, ``dma-names``,
        ``bus-width`` properties.
      * :dtcompatible:`st,stm32-temp-cal`: new ``ts-cal-resolution`` property;
        removed ``ts-cal-offset`` property.
      * :dtcompatible:`st,stm32u5-pll-clock`: new ``div-p`` property.
      * temperature sensor bindings no longer have a ``ts-voltage-mv`` property.
      * UART bindings: new ``wakeup-line`` properties.

    * Texas Instruments parts:

      * :dtcompatible:`ti,ina237`: new ``alert-config``, ``irq-gpios`` properties.
      * :dtcompatible:`ti,bq274xx`: new ``zephyr,lazy-load`` property.

    * Ultrachip UC81xx displays:

      * The ``gooddisplay,gd7965`` binding was removed in favor of new
        UltraChip device-specific bindings (see list of new ``ultrachip,...``
        bindings above). Various required properties in the removed binding are
        now optional in the new bindings.

      * New ``pll``, ``vdcs``, ``lutc``, ``lutww``, ``lutkw``, ``lutwk``,
        ``lutkk``, ``lutbd``, ``softstart`` properties. Full and partial
        refresh profile support. The ``pwr`` property is now part of the child
        binding.

    * Zephyr-specific bindings:

      * :dtcompatible:`zephyr,bt-hci-spi`: new ``reset-assert-duration-ms`` property.
      * removed ``zephyr,ipm-console`` binding.
      * :dtcompatible:`zephyr,ipc-openamp-static-vrings`: new
        ``zephyr,buffer-size`` property.
      * :dtcompatible:`zephyr,memory-region`: new ``PPB`` and ``IO`` region support.

    * :dtcompatible:`infineon,xmc4xxx-uart`: new ``input-src`` property.
    * WSEN-HIDS sensors: new ``drdy-gpios``, ``odr`` properties.
    * :dtcompatible:`sitronix,st7789v`: ``cmd-data-gpios`` is now optional.
    * :dtcompatible:`solomon,ssd16xxfb`: new ``dummy-line``,
      ``gate-line-width`` properties. The ``gdv``, ``sdv``, ``vcom``, and
      ``border-waveform`` properties are now optional.
    * ``riscv,clint0`` removed; all in-tree users were converted to
      ``sifive,clint0`` or derived bindings.
    * :dtcompatible:`worldsemi,ws2812-spi`: SPI bindings have new ``spi-cpol``,
      ``spi-cpha`` properties.
    * :dtcompatible:`ns16550`: ``reg-shift`` is now required.
    * Removed ``reserved-memory`` binding.

* Implementation details

  * The generated devicetree header file placed in the build directory was
    renamed from ``devicetree_unfixed.h`` to ``devicetree_generated.h``.

  * The generated ``device_extern.h`` has been replaced using
    ``DT_FOREACH_STATUS_OKAY_NODE``. See `commit
    0224f2c508df154ffc9c1ecffaf0b06608d6b623
    <https://github.com/zephyrproject-rtos/zephyr/commit/0224f2c508df154ffc9c1ecffaf0b06608d6b623>`_

Libraries / Subsystems
**********************

* C Library

  * Added Picolibc as a Zephyr module. Picolibc module is a footprint-optimized
    full C standard library implementation that is configurable at the build
    time.
  * C library heap initialization call has been moved from the ``APPLICATION``
    phase to the ``POST_KERNEL`` phase to allow calling the libc dynamic memory
    management functions (e.g. ``malloc()``) during the application
    initialization phase.
  * Added ``strerror()`` and ``strerror_r()`` functions to the minimal libc.
  * Removed architecture-specific ``off_t`` type definition in the minimal
    libc. ``off_t`` is now defined as ``intptr_t`` regardless of the selected
    architecture.

* C++ Subsystem

  * Added ``std::ptrdiff_t``, ``std::size_t``, ``std::max_align_t`` and
    ``std::nullptr_t`` type definitions to the C++ subsystem ``cstddef``
    header.
  * Renamed global constructor list symbols to prevent the native POSIX host
    runtime from executing the constructors before Zephyr loads.

* Cbprintf

  * Updated cbprintf static packaging to interpret ``unsigned char *`` as a pointer
    to a string. See :ref:`cbprintf_packaging_limitations` for more details about
    how to efficienty use strings. Change mainly applies to the ``logging`` subsystem
    since it uses this feature.

* Emul

  * Added :c:macro:`EMUL_DT_DEFINE` and :c:macro:`EMUL_DT_INST_DEFINE` to mirror
    :c:macro:`DEVICE_DT_DEFINE` and :c:macro:`DEVICE_DT_INST_DEFINE` respectively.
  * Added :c:macro:`EMUL_DT_GET` to mirror :c:macro:`DEVICE_DT_GET`.
  * Removed the need to manually register emulators in their init function (automatically done).

* Filesystem

  * Added cash used to reduce the NVS data lookup time, see
    :kconfig:option:`CONFIG_NVS_LOOKUP_CACHE` option.
  * Changing mkfs options to create FAT32 on larger storage when FAT16 fails.
  * Added :kconfig:option:`CONFIG_FS_FATFS_MIN_SS` that allows to set
    minimal expected sector size to be supported.

* Management

  * MCUMGR race condition when using the task status function whereby if a
    thread state changed it could give a falsely short process list has been
    fixed.
  * MCUMGR shell (group 9) CBOR structure has changed, the ``rc``
    response is now only used for mcumgr errors, shell command
    execution result codes are instead returned in the ``ret``
    variable instead, see :ref:`mcumgr_smp_group_9` for updated
    information. Legacy bahaviour can be restored by enabling
    :kconfig:option:`CONFIG_MCUMGR_CMD_SHELL_MGMT_LEGACY_RC_RETURN_CODE`.
  * MCUMGR img_mgmt erase command now accepts an optional slot number
    to select which image will be erased, using the ``slot`` input
    (will default to slot 1 if not provided).
  * MCUMGR :kconfig:option:`CONFIG_OS_MGMT_TASKSTAT_SIGNED_PRIORITY` is now
    enabled by default, this makes thread priorities in the taskstat command
    signed, which matches the signed priority of tasks in Zephyr, to revert
    to previous behaviour of using unsigned values, disable this Kconfig.
  * MCUMGR taskstat runtime field support has been added, if
    :kconfig:option:`CONFIG_OS_MGMT_TASKSTAT` is enabled, which will report the
    number of CPU cycles have been spent executing the thread.
  * MCUMGR transport API drops ``zst`` parameter, of :c:struct:`zephyr_smp_transport`
    type, from :c:func:`zephyr_smp_transport_out_fn` type callback as it has
    not been used, and the ``nb`` parameter, of :c:struct:`net_buf` type,
    can carry additional transport information when needed.
  * A dummy SMP transport has been added which allows for testing MCUMGR
    functionality and commands/responses.
  * An issue with the UART/shell transports whereby large packets would wrongly
    be split up with multiple start-of-frame headers instead of only one has been
    fixed.
  * SMP now runs in its own dedicated work queue which prevents issues running in
    the system workqueue with some transports, e.g. Bluetooth, which previously
    caused a deadlock if buffers could not be allocated.
  * Bluetooth transport will now reduce the size of packets that are sent if they
    are too large for the remote device instead of failing to send them, if the
    remote device cannot accept a notification of 20 bytes then the attempt is
    aborted.
  * Unaligned memory access problems for CPUs that do not support it in MCUMGR
    headers has been fixed.
  * Groups in MCUMGR now use kernel slist entries rather than the custom MCUMGR
    structs for storage.
  * Levels of function redirection which were previously used to support multiple
    OS's have been reduced to simplify code and reduce output size.
  * Bluetooth SMP debug output format specifier has been fixed to avoid a build
    warning on native_posix platforms.
  * Issue with :c:func:`img_mgmt_dfu_stopped` being wrongly called on success
    has been fixed.
  * Issue with MCUMGR img_mgmt image erase wrongly returning success during an
    error condition has been fixed.
  * Unused MCUMGR header files such as mcumgr_util.h have been removed.
  * Verbose error response reporting has been fixed and is now present when
    enabled.
  * Internal SMP functions have been removed from the public smp.h header file
    and moved to smp_internal.h
  * Kconfig files have been split up and moved to directories containing the
    systems they influence.
  * MCUMGR img_mgmt image upload over-riding/hiding of result codes has been
    fixed.

* Logging

  * Removed legacy (v1) implementation and removed any references to the logging
    v2.
  * Added :c:macro:`LOG_RAW` for logging strings without additional formatting.
    It is similar to :c:macro:`LOG_PRINTK` but do not append ``<cr>`` when new line is found.
  * Improvements in the ADSP backend.
  * File system backend: Only delete old files if necessary.

* IPC

  * Introduced a 'zephyr,buffer-size' DT property to set the sizes for TX and
    RX buffers per created instance.
  * Set WQ priority back to ``PRIO_PREEMPT`` to fix an issue that was starving
    the scheduler.
  * ``icmsg_buf`` library was renamed to ``spsc_pbuf``.
  * Added cache handling support to ``spsc_pbuf``.
  * Fixed an issue where the TX virtqueue was misaligned by 2 bytes due to the
    way the virtqueue start address is calculated
  * Added :c:func:`ipc_service_deregister_endpoint` function to deregister endpoints.

* LoRaWAN

  * Added Class-C support.
  * Upgraded the loramac-node repository to v4.6.0.
  * Moved the ``REQUIRES_FULL_LIBC`` library dependency from LoRa to LoRaWAN.
  * Fixed the async reception in SX127x modems.

* Modbus

  * Added user data entry for ADU callback.

* Power management

  * Allow multiple subscribers to latency changes in the policy manager.
  * Added new API to implement suspend-to-RAM (S2RAM). Select
    :kconfig:option:`CONFIG_PM_S2RAM` to enable this feature.
  * Added :c:func:`pm_device_is_powered` to query a device power state.

* POSIX

  * Made ``tz`` non-const in ``gettimeofday()`` for conformance to spec.
  * Fixed pthread descriptor resource leak. Previously only pthreads with state
    ``PTHREAD_TERMINATED`` could be reused. However, ``pthread_join()`` sets
    the state to ``PTHREAD_EXITED``. Consider both states as candidates in
    ``pthread_create()``.
  * Added ``perror()`` implementation.
  * Used consistent timebase in ``sem_timedwait()``.

* RTIO

  * Initial version of an asynchronous task and executor API for I/O similar inspired
    by Linux's very successful io_uring.
  * Provided a simple linear and limited concurrency executor, simple task queuing,
    and the ability to poll for task completions.

* SD Subsystem

  * SDMMC STM32: Now compatible with STM32L5 series. Added DMA support for DMA-V1
    compatible devices.
  * Added support for handling the :c:macro:`DISK_IOCTL_CTRL_SYNC` ioctl call.
    this enables the filesystem api :c:func:`fs_sync`.

* Settings

  * Added API function :c:func:`settings_storage_get` which allows to get
    the storage instance used by the settings backed to store its records.

* Shell

  * Added new API function checking shell readiness: :c:func:`shell_ready`.
  * Added option to control formatting of the logging timestamp.
  * Added missing asserts to the shell api functions.
  * MQTT backend: bug fix to handle negative return value of the wait function.
  * A new ``backends`` command that lists the name and number of active shell backends.
  * Fixed handling mandatory args with optional raw arg.

* Storage

  * :c:func:`flash_area_open` returns error if area's flash device is unreachable.
  * ``flash_area`` components were reworked so build-time reference to the flash
    device is used instead of its name with runtime driver buinding.
  * Added ``FIXED_PARTITION_`` macros that move flash_map to use DTS node labels.

* Testsuite

  * Added Kconfig support to ``unit_testing`` platform.
  * Migrated tests to use :kconfig:option:`CONFIG_ZTEST_NEW_API`.
  * Added ztest options for shuffling tests/suites via:

    * :kconfig:option:`CONFIG_ZTEST_SHUFFLE`
    * :kconfig:option:`CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNT`
    * :kconfig:option:`CONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT`

  * Added ztest native_posix command line arguments for running specific tests/suites using
    ``--test suite_name:*`` or ``--test suite_name::test_name`` command line arguments.

* Storage

  * Flash Map API deprecates usage of :c:macro:`FLASH_AREA_` macros and replaces
    them with :c:macro:`FIXED_PARTITION_` macros. This follows removal of ``label``
    property from DTS nodes.

HALs
****

* Atmel

  * sam: Fixed incorrect CIDR values for revision b silicon of SAMV71 devices.

* Espressif

  * Updated Espressif HAL with esp-idf 4.4.1 updates.
  * Added support to binary blobs implementation.
  * Fixed ESP32-C3 wifi issues.

* GigaDevice

  * Added support for gd32e50x.
  * gd32e10x: upgraded to v1.3.0.
  * gd32f4xx: upgraded to v3.0.0.

* NXP

  * Updated the NXP MCUX SDK to version 2.12.
  * Updated the USB middleware to version 2.12.
  * Removed all binary Blobs for power management libraries.
  * Removed all binary archive files.

* Nordic

  * Updated nrfx to version 2.9.0.

* RPi Pico

  * Renamed ``adc_read`` to ``pico_adc_read``, to avoid name collision with Zephyr's API.

* STM32

  * stm32cube: update stm32f7 to cube version V1.17.0.
  * stm32cube: update stm32g0 to cube version V1.6.1.
  * stm32cube: update stm32g4 to cube version V1.5.1.
  * stm32cube: update stm32l4 to cube version V1.17.2.
  * stm32cube: update stm32u5 to cube version V1.1.1.
  * stm32cube: update stm32wb to cube version V1.14.0.
  * pinctrl: some pin definitions did not contain the "_c" suffix, used by pins
    with analog switch on certain H7 devices.

* TI

  * simplelink: cc13x2_cc26x2: include ADC driverlib sources.
  * simplelink: cc13x2_cc26x2: include flash driverlib sources.
  * cc13x2: kconfig conditions for P variant support & custom RF hwattrs.
  * cc13x2_cc26x2: update to TI SimpleLink SDK 4.40.04.04.

MCUboot
*******

* Added initial support for leveraging the RAM-LOAD mode with the zephyr-rtos port.
* Added the MCUboot status callback support.
  See :kconfig:option:`CONFIG_MCUBOOT_ACTION_HOOKS`.
* Edited includes to have the ``zephyr/`` prefix.
* Edited the DFU detection's GPIO-pin configuration to be done through DTS using the ``mcuboot-button0`` pin alias.
* Edited the LED usage to prefer DTS' ``mcuboot-led0`` alias over the ``bootloader-led0`` alias.
* Removed :c:func:`device_get_binding()` usage in favor of :c:func:`DEVICE_DT_GET()`.
* Added support for generic `watchdog0` alias.
* Enabled watchdog feed by default.
* Dropped the :kconfig:option:`CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE` option.
  The inclusion of the Hooks implementation file is now up to the project's customization.
* Switched zephyr port from using ``FLASH_AREA_`` macros to ``FIXED_PARTITION_`` macros.
* Made flash_map_backend.h compatible with a C++ compiler.
* Allowed to get the flash write alignment based on the ``zephyr,flash`` DT chosen node property.

* boot_serial:

  * Upgraded from cddl-gen v0.1.0 to zcbor v0.4.0.
  * Refactored and optimized the code, mainly in what affects the progressive erase implementation.
  * Fixed a compilation issue with the echo command code.

* imgtool:

  * Added support for providing a signature through a third party.

Trusted Firmware-M
******************

* Allowed enabling FPU in the application when TF-M is enabled.
* Added option to exclude non-secure TF-M application from build.
* Relocated ``mergehex.py`` to ``scripts/build``.
* Added option for custom reset handlers.

Documentation
*************

Tests and Samples
*****************

* A large number of tests have been reworked to use the new ztest API, see
  :ref:`test-framework` for more details. This should be used for newly
  introduce tests as well.
* smp_svr Bluetooth overlay (overlay-bt) has been reworked to increase
  throughput and enable packet reassembly.
* Added test for the new shell API function: :c:func:`shell_ready`.

Issue Related Items
*******************

Known Issues
============

- :github:`22049` - Bluetooth: IRK handling issue when using multiple local identities
- :github:`25917` - Bluetooth: Deadlock with TX of ACL data and HCI commands (command blocked by data)
- :github:`30348` - XIP can't be enabled with ARC MWDT toolchain
- :github:`31298` - tests/kernel/gen_isr_table failed on hsdk and nsim_hs_smp sometimes
- :github:`33747` - gptp does not work well on NXP rt series platform
- :github:`34269` - LOG_MODE_MINIMAL BUILD error
- :github:`37193` - mcumgr: Probably incorrect error handling with udp backend
- :github:`37731` - Bluetooth: hci samples: Unable to allocate command buffer
- :github:`38041` - Logging-related tests fails on qemu_arc_hs6x
- :github:`38880` - ARC: ARCv2: qemu_arc_em / qemu_arc_hs don't work with XIP disabled
- :github:`38947` - Issue with SMP commands sent over the UART
- :github:`39598` - use of __noinit with ecc memory hangs system
- :github:`40023` - Build fails for ``native_posix`` board when using C++ <atomic> header
- :github:`41606` - stm32u5: Re-implement VCO input and EPOD configuration
- :github:`41622` - Infinite mutual recursion when SMP and ATOMIC_OPERATIONS_C are set
- :github:`41822` - BLE IPSP sample cannot handle large ICMPv6 Echo Request
- :github:`41823` - Bluetooth: Controller: llcp: Remote request are dropped due to lack of free proc_ctx
- :github:`42030` - can: "bosch,m-can-base": Warning "missing or empty reg/ranges property"
- :github:`43099` - CMake: ARCH roots issue
- :github:`43249` - MBEDTLS_ECP_C not build when MBEDTLS_USE_PSA_CRYPTO
- :github:`43308` - driver: serial: stm32: uart will lost data when use dma mode[async mode]
- :github:`43555` - Variables not properly initialized when using data relocation with SDRAM
- :github:`43562` - Setting and/or documentation of Timer and counter use/requirements for Nordic Bluetooth driver
- :github:`43836` - stm32: g0b1: RTT doesn't work properly after stop mode
- :github:`44339` - Bluetooth:controller: Implement support for Advanced Scheduling in refactored LLCP
- :github:`44377` - ISO Broadcast/Receive sample not working with coded PHY
- :github:`44410` - drivers: modem: shell: ``modem send`` doesn't honor line ending in modem cmd handler
- :github:`44948` - cmsis_dsp: transofrm: error during building cf64.fpu and rf64.fpu for mps2_an521_remote
- :github:`45218` - rddrone_fmuk66: I2C configuration incorrect
- :github:`45241` - (Probably) unnecessary branches in several modules
- :github:`45323` - Bluetooth: controller: llcp: Implement handling of delayed notifications in refactored LLCP
- :github:`45427` - Bluetooth: Controller: LLCP: Data structure for communication between the ISR and the thread
- :github:`45814` - Armclang build fails due to missing source file
- :github:`46073` - IPSP (IPv6 over BLE) example stop working after a short time
- :github:`46121` - Bluetooth: Controller: hci: Wrong periodic advertising report data status
- :github:`46126` - pm_device causes assertion error in sched.c with lis2dh
- :github:`46401` - ARM64: Relax 4K MMU mapping alignment
- :github:`46596` - STM32F74X RMII interface does not work
- :github:`46598` - Logging with RTT backend on STM32WB strange behavier
- :github:`46844` - Timer drivers likely have off-by-one in rapidly-presented timeouts
- :github:`46846` - lib: libc: newlib: strerror_r non-functional
- :github:`46986` - Logging (deferred v2) with a lot of output causes MPU fault
- :github:`47014` - can: iso-tp: implementation test failed with twister on nucleo_g474re
- :github:`47092` - driver: nrf: uarte: new dirver breaks our implementation for uart.
- :github:`47120` - shell uart: busy wait for DTR in ISR
- :github:`47477` - qemu_leon3: tests/kernel/fpu_sharing/generic/ failed when migrating to new ztest API
- :github:`47500` - twister: cmake: Failure of "--build-only -M" combined with "--test-only" for --device-testing
- :github:`47607` - Settings with FCB backend does not pass test on stm32h743
- :github:`47732` - Flash map does not fare well with MCU who do bank swaps
- :github:`47817` - samples/modules/nanopb/sample.modules.nanopb fails with protobuf > 3.19.0
- :github:`47908` - tests/kernel/mem_protect/stack_random works unreliably and sporadically fails
- :github:`47988` - JSON parser not consistent on extra data
- :github:`48018` - ztest: static threads are not re-launched for repeated test suite execution.
- :github:`48037` - Grove LCD Sample Not Working
- :github:`48094` - pre-commit scripts fail when there is a space in zephyr_base
- :github:`48102` - JSON parses uses recursion (breaks rule 17.2)
- :github:`48147` - ztest: before/after functions may run on different threads, which may cause potential issues.
- :github:`48287` - malloc_prepare ASSERT happens when enabling newlib libc with demand paging
- :github:`48299` - SHT3XD_CMD_WRITE_TH_LOW_SET should be SHT3XD_CMD_WRITE_TH_LOW_CLEAR
- :github:`48304` - bt_disable() does not work properly on nRF52
- :github:`48390` - [Intel Cavs] Boot failures on low optimization levels
- :github:`48394` - vsnprintfcb writes to ``*str`` if it is NULL
- :github:`48468` - GSM Mux does not transmit all queued data when uart_fifo_fill is called
- :github:`48473` - Setting CONFIG_GSM_MUX_INITIATOR=n results in a compile error
- :github:`48505` - BLE stack can get stuck in connected state despite connection failure
- :github:`48520` - clang-format: #include reorder due to default: SortIncludesOptions != SI_Never
- :github:`48603` - LoRa driver asynchronous receive callback clears data before the callback.
- :github:`48608` - boards: mps2_an385: Unstable system timer
- :github:`48625` - GSM_PPP api keeps sending commands to muxed AT channel
- :github:`48726` - net: tests/net/ieee802154/l2/net.ieee802154.l2 failed on reel board
- :github:`48841` - Bluetooth: df: Assert in lower link layer when requesting CTE from peer periodically with 7.5ms connection interval
- :github:`48850` - Bluetooth: LLCP: possible access to released control procedure context
- :github:`48857` - samples: Bluetooth: Buffer size mismatch in samples/bluetooth/hci_usb for nRF5340
- :github:`48953` - 'intel,sha' is missing binding and usage
- :github:`48954` - several NXP devicetree bindings are missing
- :github:`48992` - qemu_leon3: tests/posix/common/portability.posix.common fails
- :github:`49021` - uart async api does not provide all received data
- :github:`49032` - espi saf testing disabled
- :github:`49069` - log: cdc_acm: hard fault message does not output
- :github:`49148` - Asynchronous UART API triggers Zephyr assertion on STM32WB55
- :github:`49210` - BL5340 board cannot build bluetooth applications
- :github:`49213` - logging.add.log_user test fails when compiled with GCC 12
- :github:`49266` - Bluetooth: Host doesn't seem to handle INCOMPLETE per adv reports
- :github:`49313` - nRF51822 sometimes hard fault on connect
- :github:`49338` - Antenna switching for Bluetooth direction finding with the nRF5340
- :github:`49373` - BLE scanning - BT RX thread hangs on.
- :github:`49390` - shell_rtt thread can starve other threads of the same priority
- :github:`49484` - CONFIG_BOOTLOADER_SRAM_SIZE should not be defined by default
- :github:`49492` - kernel.poll test fails on qemu_arc_hs6x when compiled with GCC 12
- :github:`49494` - testing.ztest.ztress test fails on qemu_cortex_r5 when compiled with GCC 12
- :github:`49584` - STM32WB55 Failed read remote feature, remote version and LE set PHY
- :github:`49588` - Json parser is incorrect with undefined parameter
- :github:`49611` - ehl_crb: Failed to run timer testcases
- :github:`49614` - acrn_ehl_crb: The testcase tests/kernel/sched/schedule_api failed to run.
- :github:`49656` - acrn_ehl_crb: testcases tests/kernel/smp failed to run on v2.7-branch
- :github:`49746` - twister: extra test results
- :github:`49811` - DHCP cannot obtain IP, when CONFIG_NET_VLAN is enabled
- :github:`49816` - ISOTP receive fails for multiple binds with same CAN ID but different extended ID
- :github:`49889` - ctf trace: unknown event id when parsing samples/tracing result on reel board
- :github:`49917` - http_client_req() sometimes hangs when peer disconnects
- :github:`49963` - Random crash on the L475 due to work->handler set to NULL
- :github:`49996` - tests: drivers: clock_control: nrf_lf_clock_start and nrf_onoff_and_bt fails
- :github:`50028` - flash_stm32_ospi Write enable failed when building with TF-M
- :github:`50084` - drivers: nrf_802154: nrf_802154_trx.c - assertion fault when enabling Segger SystemView tracing
- :github:`50095` - ARC revision Kconfigs wrongly mixed with board name
- :github:`50149` - tests: drivers: flash fails on nucleo_l152re because of wrong erase flash size
- :github:`50196` - LSM6DSO interrupt handler not being called
- :github:`50256` - I2C on SAMC21 sends out stop condition incorrectly
- :github:`50306` - Not able to flash stm32h735g_disco - TARGET: stm32h7x.cpu0 - Not halted
- :github:`50345` - Network traffic occurs before Bluetooth NET L2 (IPSP) link setup complete
- :github:`50354` - ztest_new: _zassert_base : return without post processing
- :github:`50404` - Intel CAVS: tests/subsys/logging/log_immediate failed.
- :github:`50427` - Bluetooth: host: central connection context leak
- :github:`50446` - MCUX CAAM is disabled temporarily
- :github:`50452` - mec172xevb_assy6906: The testcase tests/lib/cmsis_dsp/matrix failed to run.
- :github:`50501` - STM32 SPI does not work properly with async + interrupts
- :github:`50506` - nxp,mcux-usbd devicetree binding issues
- :github:`50515` - Non-existing test cases reported as "Skipped" with reason  “No results captured, testsuite misconfiguration?” in test report
- :github:`50546` - drivers: can: rcar: likely inconsistent behavior when calling can_stop() with pending transmissions
- :github:`50554` - Test uart async failed on Nucleo F429ZI
- :github:`50565` - Fatal error after ``west flash`` for nucleo_l053r8
- :github:`50567` - Passed test cases are reported as "Skipped" because of incomplete test log
- :github:`50570` - samples/drivers/can/counter fails in twister for native_posix
- :github:`50587` - Regression in Link Layer Control Procedure (LLCP)
- :github:`50590` - openocd: Can't flash on various STM32 boards
- :github:`50598` - UDP over IPSP not working on nRF52840
- :github:`50614` - Zephyr if got the ip is "10.xxx.xxx.xxx" when join in the switchboard, then the device may can not visit the outer net, also unable to Ping.
- :github:`50620` - fifo test fails with CONFIG_CMAKE_LINKER_GENERATOR enabled on qemu_cortex_a9
- :github:`50652` - RAM Loading on i.MXRT1160_evk
- :github:`50655` - STM32WB55 Bus Fault when connecting then disconnecting then connecting then disconnecting then connecting
- :github:`50658` - BLE stack notifications blocks host side for too long
- :github:`50709` - tests: arch: arm: arm_thread_swap fails on stm32g0 or stm32l0
- :github:`50732` - net: tests/net/ieee802154/l2/net.ieee802154.l2 failed on reel_board due to build failure
- :github:`50735` - Intel CAVS18: tests/boards/intel_adsp/hda_log/boards.intel_adsp.hda_log.printk failed
- :github:`50746` - Stale kernel memory pool API references
- :github:`50766` - Zephyr build system doesn't setup CMake host environment correctly
- :github:`50776` - CAN Drivers allow sending FD frames without device being set to FD mode
- :github:`50777` - LE Audio: Receiver start ready command shall only be sent by the receiver
- :github:`50778` - LE Audio: Audio shell: Unicast server cannot execute commands for the default_stream
- :github:`50780` - LE Audio: Bidirectional handling of 2 audio streams as the unicast server when streams are configured separately not working as intended
- :github:`50781` - LE Audio: mpl init causes warnings when adding objects
- :github:`50783` - LE Audio: Reject ISO data if the stream is not in the streaming state
- :github:`50789` - west: runners: blackmagicprobe: Doesn't work on windows due to wrong path separator
- :github:`50801` - JSON parser fails on multidimensional arrays
- :github:`50812` - MCUmgr udp sample fails with shell - BUS FAULT
- :github:`50841` - high SRAM usage with picolibc on nRF platforms

Addressed issues
================

* :github:`50861` - Intel ADSP HDA and GPDMA Bugs
* :github:`50843` - tests: kernel: timer: timer_behavior: kernel.timer.timer - SRAM overflow on nrf5340dk_nrf5340_cpunet and nrf52dk_nrf52832
* :github:`50841` - high SRAM usage with picolibc on some userspace platforms
* :github:`50774` - ESP32 GPIO34 IRQ not working
* :github:`50771` - mcan driver has tx and rx error counts swapped
* :github:`50754` - MCUboot update breaks compilation for boards without CONFIG_WATCHDOG=y
* :github:`50737` - tfm_ram_report does not work with sdk-ng 0.15.0
* :github:`50728` - missing SMP fixes for RISC-V
* :github:`50691` - Bluetooth: Host: CONFIG_BT_LOG_SNIFFER_INFO doesn't work as intended without bonding
* :github:`50689` - Suspected unaligned access in Bluetooth controller connection handling
* :github:`50681` - gpio: ite: gpio_ite_configure() neither supporting nor throwing error when gpio is configured with GPIO_DISCONNECTED flag
* :github:`50656` - Wrong definition of bank size for intel memory management driver.
* :github:`50654` - Some files are being ALWAYS built, without them being used
* :github:`50635` - hal: stm32: valid pins were removed in the last version
* :github:`50631` - Please Add __heapstats() to stdlib.h
* :github:`50621` - The history of the multi API / MFD discussions 2022 July - Sep
* :github:`50619` - tests/kernel/timer/starve fails to run on devices
* :github:`50618` - STM32 Ethernet
* :github:`50615` - ESP32 GPIO driver
* :github:`50611` - k_heap_aligned_alloc does not handle a timeout of K_FOREVER correctly
* :github:`50603` - Upgrade to loramac-node 4.7.0 when it is released to fix async LoRa reception on SX1276
* :github:`50579` - arch: arm: Using ISR_DIRECT_PM with zero-latency-interrupt violation
* :github:`50549` - USB: samhs: Device does not work after detach-attach sequence
* :github:`50545` - drivers: can: inconsistent behavior when calling can_stop() with pending transmissions
* :github:`50538` - lpcxpresso55s69_cpu0 samples/subsys/usb/dfu/sample.usb.dfu build failure
* :github:`50525` - Passed test cases reported as "Skipped" because test log lost
* :github:`50522` - mgmt: mcumgr: img_mgmt: Failure of erase returns nothing
* :github:`50520` - Bluetooth: bsim eatt_notif test fails with assertion in some environments
* :github:`50502` - iMX 7D GPIO Pinmux Array Has Incorrect Ordering
* :github:`50482` - mcumgr: img_mgmt: zephyr_img_mgmt_flash_area_id has wrong slot3 ID
* :github:`50468` - Incorrect Z_THREAD_STACK_BUFFER in arch_start_cpu for Xtensa
* :github:`50467` - Possible memory corruption on ARC when userspace is enabled
* :github:`50465` - Possible memory corruption on RISCV when userspace is enabled
* :github:`50464` - Boot banner can cut through output of shell prompt
* :github:`50455` - Intel CAVS15/25: tests/subsys/shell/shell failed with no console output
* :github:`50438` - Bluetooth: Conn: Bluetooth stack becomes unusable when communicating with both centrals and peripherals
* :github:`50432` - Bluetooth: Controller: Restarting BLE scanning not always working and sometimes crashes together with periodic. adv.
* :github:`50421` - Sysbuild-configured project using ``west flash --recover`` will wrongly recover (and reset) the MCU each time it flashes an image
* :github:`50414` - smp_dummy.h file is outside of zephyr include folder
* :github:`50394` - RT685 flash chip size is incorrect
* :github:`50386` - Twister "FLASH overflow" does not account for imgtool trailer.
* :github:`50374` - CI failure in v3.1.0-rc2 full run
* :github:`50368` - esp32: counter driver not working with absolute value
* :github:`50344` - bl5340_dvk_cpuapp: undefined reference to ``__device_dts_ord_14``
* :github:`50343` - uninitialized variable in kernel.workqueue test
* :github:`50342` - mcuboot: BOOT_MAX_ALIGN is redefined
* :github:`50341` - undefined reference to ``log_output_flush`` in sample.logger.syst.catalog
* :github:`50331` - net mem shell output indents TX DATA line
* :github:`50330` - Fail to find GICv3 Redistributor base address for Cortex-R52 running in a cluster different than 0
* :github:`50327` - JLink needs flashloader for MIMXRT1060-EVK
* :github:`50317` - boards/arm/thingy53_nrf5340: lack of mcuboot's gpio aliases
* :github:`50306` - Not able to flash stm32h735g_disco - TARGET: stm32h7x.cpu0 - Not halted
* :github:`50299` - CI fails building stm32u5  tests/subsys/pm/device_runtime_api
* :github:`50297` - mcumgr: fs_mgmt: hash/checksum: Build warnings on native_posix_64
* :github:`50294` - test-ci: timer_behavior: mimxrt1170_evk_cm7/1160: test failure
* :github:`50284` - Generated linker scripts break when ZEPHYR_BASE and ZEPHYR_MODULES share structure that contains symlinks
* :github:`50282` - samples: drivers: can: babbling: can controller not started.
* :github:`50266` - drivers: can: native_posix_linux: should not receive frames while stopped
* :github:`50263` - drivers: can: mcan: transceiver is enabled at driver initialization
* :github:`50257` - twister: --coverage option does not work for qemu_x86_64 and other boards
* :github:`50255` - Test process crash when run twister with --coverage
* :github:`50244` - GPIO manipulation from a “counter” (ie HW timer) when Bluetooth (BLE) is enabled.
* :github:`50238` - ESP32: rtcio_ll_pullup_disable crash regression
* :github:`50235` - UDP: Memory leak when allocated packet is smaller than requested
* :github:`50232` - gpio_shell: Not functional anymore following DT label cleanup and deprecation
* :github:`50226` - MPU FAULT: Stacking error with lvgl on lv_timer_handler()
* :github:`50224` - tests/kernel/tickless/tickless_concept: Failed on STM32
* :github:`50219` - Kernel tests failing on qemu_riscv32_smp
* :github:`50218` - rcar_h3ulcb: can: failed to run RTR test cases
* :github:`50214` - Missing human readable names in names file od deive structure
* :github:`50202` - Configuring ``GPIO25`` crashes ESP32
* :github:`50192` - nrf_qspi_nor driver might crash if power management is enabled
* :github:`50191` - nrf_qspi_nor-driver leaves CS pin to undefined state when pinctrl is enabled
* :github:`50172` - QSPI NAND Flash driver question
* :github:`50165` - boards: riscv: ite: No flash and RAM stats are shown whenever building ITE board
* :github:`50158` - Drivers: gpio: stm32u5 portG not working
* :github:`50152` - SMT32: incorrect internal temperature value
* :github:`50150` - tests: drivers: flash: building error with b_u585i_iot02a_ns board
* :github:`50146` - tests: kernel: mem_protect fails on ARMv6-M and ARMv8-M Baseline
* :github:`50142` - NXP i.MX RT1024 CPU GPIO access bug.
* :github:`50140` - ARP handling causes dropped packets when multiple outgoing packets are queued
* :github:`50135` - cannot boot up on custom board
* :github:`50119` - non-IPI path of SMP is broken
* :github:`50118` - Twister: ``--coverage-formats`` Does not work despite ``--coverage`` added
* :github:`50108` - drivers: console: rtt_console: undefined reference to ``__printk_hook_install``
* :github:`50107` - subsys: pm: device_runtime.c: compile error
* :github:`50106` - ram_report stopped working with zephyr-sdk 0.15
* :github:`50099` - boards: pinnacle_100_dvk should enable QSPI and modem by default
* :github:`50096` - tests: drivers:  the gpio_basic_api test cannot be build successfully on bl5340_dvk_cpuapp board
* :github:`50073` - mcumgr: Bluetooth backend does not restart advertising after disconnect
* :github:`50070` - LoRa: Support on RFM95 LoRa module combined with a nRF52 board
* :github:`50066` - tests: tests/drivers/can/shell failed in daily test on many platforms
* :github:`50065` - tests: tests/subsys/shell/shell test case fail in daily test on many platforms
* :github:`50061` - Bluetooth: Samples: bluetooth_audio_source does not send multiple streams
* :github:`50044` - reel_board: pyocd.yaml causes flashing error on reel board
* :github:`50033` - tests: subsys: fs: littlefs: filesystem.littlefs.custom fails to build
* :github:`50032` - tests: subsys: shell: shell.core and drivers.can.shell fails at shell_setup
* :github:`50029` - Unable to use functions from gsm_ppp driver
* :github:`50023` - tests: some driver tests of frdm_k64f build failed in twister (shows devicetree error)
* :github:`50016` - jlinkarm.so files renamed in latest J-Link drivers
* :github:`49988` - boards: pinnacle_100_dvk: UART1 flow control is not turned on
* :github:`49987` - Unable to compile on windows
* :github:`49985` - STM32:NUCLEO_WL55JC No serial RX in STOP mode
* :github:`49982` - SD: f_sync will always fail using the sdhc_spi driver
* :github:`49970` - strange behavior in the spi_flash example
* :github:`49960` - LoRaWAN Code won't linking when config with CN470 region
* :github:`49956` - ``NRF_DRIVE_S0D1`` option is not always overridden in the ``nordic,nrf-twi`` and ``nordic,nrf-twim`` nodes
* :github:`49953` - stm32 gpio_basic_api test fail with CONFIG_ZTEST_NEW_API
* :github:`49939` - stm32 adc driver_api test fails on stm32wb55 and stm32l5
* :github:`49938` - drivers/modem/gsm_ppp.c:  unnecessary modem_cmd_handler_tx_lock when CONFIG_GSM_MUX disabled
* :github:`49924` - tests: drivers: pwm_api and pwm_loopback tests failed on frdm_k64f boards
* :github:`49923` - ASSERTION FAIL [!arch_is_in_isr()] @ WEST_TOPDIR/zephyr/kernel/sched.c:1449
* :github:`49916` - renesas smartbond family Kconfig visible to non-renesas devices
* :github:`49915` - Bluetooth: Controller: Syncing with devices with per. adv. int. < ~10ms eventually causes events from BT controller stop arriving
* :github:`49903` - riscv: Enabling IRQ vector table makes Zephyr unbootable
* :github:`49897` - STM32: NUCLEO_WL55JC internal (die) temperature incorrect
* :github:`49890` - drivers/can: stm32_fd: CONFIG_CAN_STM32FD_CLOCK_DIVISOR not applied in driver setup
* :github:`49876` - drivers: can: twai: driver fails initialization
* :github:`49874` - STM32G0 HW_STACK_PROTECTION Warning
* :github:`49852` - uart: extra XOFF byte in the read buffer
* :github:`49851` - Bluetooth Controller with Extended Advertising
* :github:`49846` - mimxrt1160_evk network samples stopped working
* :github:`49825` - net: ip: tcp: use zu format specifier for size_t
* :github:`49823` - Example Application: Use of undocumented zephyr/module.yml in application folder
* :github:`49814` - Cortex-A9 fails to build cmsis due to missing core_ca.h
* :github:`49805` - stm32f1: can2 & eth pin remap not working
* :github:`49803` - I/O APIC Driver in Zephyr makes incorrect register access.
* :github:`49792` - test-ci:  adc-dma :  frdm-k64f: dma dest addess assert
* :github:`49790` - Intel CAVS25: Failure in tests/boards/intel_adsp/smoke sporadically
* :github:`49789` - it8xxx2_evb: tests/crypto/tinycrypt/ test takes longer on sdk 0.15.0
* :github:`49786` - nsim_em: tests: fail to run tests/kernel/timer/timer_behavior
* :github:`49769` - STM32F1 CAN2 does not enable master can gating clock
* :github:`49766` - Document downstream module configuration recommendations
* :github:`49763` - nucleo_f767zi: sample.net.gptp build fails
* :github:`49762` - esp32: testing.ztest.error_hook.no_userspace build fails due to array-bounds warnings
* :github:`49760` - frdm_kl25z: sample.usb.dfu Kconfig issue causing build failure
* :github:`49747` - CAN2 interface on STM32F105 not working
* :github:`49738` - Bluetooth: Controller: Restarting periodic advertising causes crash when ADV_SYNC_PDU_BACK2BACK=y
* :github:`49733` - Error log "Could not lookup stream by iso 0xXXXXXXXX" from unicast server if client release the stream
* :github:`49717` - mcumgr: Bluetooth transport fix prevents passing GATT notify status back to SMP
* :github:`49716` - Intel CAVS15/18: Failure in tests/arch/common/timing
* :github:`49715` - The function ospi_read_sfdp in drivers/flash/flash_stm32_ospi.c can corrupt the stack
* :github:`49714` - tests:  tests/drivers/gpio/gpio_api_1pin failed on mec172xevb_assy6906 in daily test
* :github:`49713` - frdm_k64f: tests: failed to run tests/drivers/adc/adc_dma/drivers.adc-dma
* :github:`49711` - tests/arch/common/timing/arch.common.timing.smp fails for CAVS15, 18
* :github:`49703` - eSPI: Add platform specific Slave to Master Virtual Wires
* :github:`49696` - twister: testplan: toolchain_exclude filter is overridden by integration_platforms
* :github:`49687` - West: Allow having .west folder and west.yml in the same folder
* :github:`49678` - Zephyr 3.2 module updates overview
* :github:`49677` - STM32U5 consumes more current using power management
* :github:`49663` - Bluetooth seems to not work randomly on target device
* :github:`49662` - hello world+ mcuboot is not working
* :github:`49661` - mcumgr: bt transport runs in system workqueue thread and can cause resource deadlock
* :github:`49659` - logging: LOG_* appends 0x0D to 0x0A
* :github:`49648` - tests/subsys/logging/log_switch_format, log_syst build failures on CAVS
* :github:`49637` - CMSIS-DSP tests broken with SDK 0.15.0
* :github:`49631` - arch: arm: FP stack warning with GCC 12 and ``CONFIG_FPU=y``
* :github:`49629` - Bluetooth: ISO Broadcast sample fails to send data on nRF5340
* :github:`49628` - Compilation fails when ASAN is used with gcc
* :github:`49618` - &usart2_rx_pd6 no more available for STM32L073RZ
* :github:`49616` - acrn_ehl_crb: The testcase tests/kernel/common failed to run.
* :github:`49609` - sdk: failed to run tests/subsys/logging/log_core_additional
* :github:`49607` - ADC reading on E73-2G4M04S1B and nrf52dk
* :github:`49606` - BeagleBone Black / AM335x Support
* :github:`49605` - it8xxx2_evb: tests/kernel/timer/timer_api test failed after commit cb041d06
* :github:`49602` - Bluetooth: Audio: Build error when enable  CONFIG_LIBLC3
* :github:`49601` - mec15xxevb_assy6853: tests/drivers/adc/adc_api asynchronous test failed
* :github:`49599` - Bluetooth: Host: Unable to pair zephyr bluetooth peripheral with Secure connection and static passkey
* :github:`49590` - devicetree parsing does not error out on duplicate node names
* :github:`49587` - cross-compile toolchain variant doesn't working properly with multilib toolchain
* :github:`49586` - Json parser is incorrect with undefined parameter
* :github:`49578` - [RFC] Deprecate <zephyr/zephyr.h>
* :github:`49576` - tests: kernel: timer: timer_behavior: kernel.timer.timer fails
* :github:`49572` - Reproducable builds with MCUboot signing
* :github:`49542` - sdk: it8xxx2_evb cannot build the hello_world sample after zephyr SDK upgrade to 0.15.0
* :github:`49540` - Bluetooth: Host: sync termination callback parameters not populated correctly when using per. adv. list feature.
* :github:`49531` - LE Audio: Broadcast Sink not supporting general and specific BIS codec configurations in the BASE
* :github:`49523` - k_sleep in native_posix always sleeps one tick too much
* :github:`49498` - net: lib: coap: update method_from_code() to report success/failure
* :github:`49493` - Bluetooth: ISO: samples/bluetooth/broadcast_audio_source error -122
* :github:`49491` - arch.interrupt test fails on ARM64 QEMU targets when compiled with GCC 12
* :github:`49482` - stm32g0 interrupts for usart3,4,5,6 all set to 29
* :github:`49471` - stm32: dietemp node generates warning
* :github:`49465` - Bluetooth: Controller: Periodic adv. sync. degraded performance on latest main branch
* :github:`49463` - STM32G0B0 errors out on stm32g0_disable_dead_battery function in soc.c
* :github:`49462` - tests: tests/kernel/fatal/exception/ test case fail
* :github:`49444` - mcumgr: Outgoing packets that are larger than the transport MTU are wrongly split into different individual messages
* :github:`49442` - Intel CAVS25: Failure in tests/kernel/smp
* :github:`49440` - test-ci: mimxrt11xx: testing.ztest.base.verbose_x and crypto.tinycryp : run failure no console output
* :github:`49439` - test-ci: lpcxpresso54114_m4: libraries.devicetree.devices.requires test failure
* :github:`49410` - Bluetooth: Scan responses with info about periodic adv. sometimes stops being reported
* :github:`49406` - flash_stm32_ospi: OSPI wr in OPI/STR mode is for 32bit address only
* :github:`49360` - west boards doesn't print boards from modules
* :github:`49359` - nrf5*: crash when Bluetooth advertisements and flash write/erase are used simultaneously
* :github:`49350` - RFC: Add arch aligned memory Kconfig option
* :github:`49342` - Zephyr hci_usb sample cannot use LE coded phy
* :github:`49331` - device if got the ip is "10.4.239.xxx" when join in the switchboard, then the device can not visit the outer net.
* :github:`49329` - twister: frdm_k64f: test string mismatch
* :github:`49315` - loopback socket send from shell hangs
* :github:`49305` - Can't read and write to the Nor Flash at address 0x402a8000 on RT1060
* :github:`49268` - tests: samples/boards/stm32/power_mgmt/serial_wakeup failed on mec15xxevb_assy6853 (and several stm32 boards)
* :github:`49263` - ztest: tracing backend works incorrectly when new ZTEST enabled.
* :github:`49258` - MCUboot not loading properly due to missing ALIGN
* :github:`49251` - STM32 HW TIMER + DMA + DAC
* :github:`49203` - Intel CAVS15: Failure in tests/boards/intel_adsp/hda,hda_log
* :github:`49200` - Intel CAVS: Failure in tests/kernel/interrupt
* :github:`49195` - Integrate Zephyr SDK 0.15.0 to the Zephyr main CI
* :github:`49184` - DHCP client is not ``carrier`` aware
* :github:`49183` - Missing handling of UNKNOWN_RSP in peripheral PHY UPDATE procedure
* :github:`49178` - subsys: pm:  stats:  typo causes build failure
* :github:`49177` - usb: sam0: device driver is leaking memory when interface is reset
* :github:`49173` - Bluetooth: empty notification received by peer after unsubscribe
* :github:`49169` - v2m_musca_s1_ns fails to build several tfm related samples
* :github:`49166` - samples/drivers/flash_shell/sample.drivers.flash.shell fails to build on a few nxp platforms
* :github:`49164` - samples/arch/smp/pi/sample.smp.pi fails on a number esp32 platforms
* :github:`49162` - Calling cache maintenance APIs from user mode threads result in a bad syscall error.
* :github:`49154` - SDMMC driver with STM32 U575
* :github:`49145` - tests: kernel: fifo: fifo_timeout: kernel.fifo.timeout fails on nrf5340dk_nrf5340_cpuapp
* :github:`49142` - Bluetooth: Audio: MCC subscribe failure
* :github:`49136` - L2CAP ecred test cases failed.
* :github:`49134` - STM32G070RBT6 can not build with zephyr 3.1.99
* :github:`49119` - ARC: west: mdb runner: fix folder where MDB is run
* :github:`49116` - cmake cached BOARD_DIR variable does not get overwritten
* :github:`49106` - Add cherryusb as a module
* :github:`49105` - hda_host and hda_link registers block size are not equal
* :github:`49102` - hawkbit - dns name randomly not resolved
* :github:`49100` - STM b_u585i_iot02a  NOR flash and OSPI_SPI_MODE, erase failed
* :github:`49086` - twister: frdm_k64f: twister process blocks after the flash error occurs
* :github:`49074` - GD32: Use clocks instead rcu-periph-clock property
* :github:`49073` - SOC_FLASH_LPC vs SOC_FLASH_MCUX
* :github:`49066` - Mcumgr img_mgmt_impl_upload_inspect() can cause unaligned memory access hard fault.
* :github:`49057` - USB Mass Storage Sample crashes due to overflow of Mass Storage Stack
* :github:`49056` - STM b_u585i_iot02a MCUboot crash
* :github:`49054` - STM32H7 apps are broken in C++ mode due to HAL include craziness
* :github:`49051` - Nrf52832 ADC SAMPLE cannot compile
* :github:`49047` - LORAWAN Devicetree sx1262 setup on rak4631_nrf52840 board
* :github:`49046` - Cannot use devices behind I2C mux (TCA9548A)
* :github:`49044` - doc: boards: litex_vexrisc: update with common environment variables and arty-a7-100t support
* :github:`49036` - soc: telink_b91: ROM region section overlap
* :github:`49027` - Regulator support for gpio-leds
* :github:`49019` - Fix multiple issues with adxl372 driver
* :github:`49016` - intel_adsp smoke test fails with CONFIG_LOG_MIPI_SYST_USE_CATALOG=y
* :github:`49014` - Advertising address not updated after RPA Timeout with Extended Advertising enabled
* :github:`49012` - pm breaks intel dai ssp in cavs25
* :github:`49008` - ESP32:  net_buf_get() FAILED
* :github:`49006` - tests: subsys: portability: cmsis_rtos_v2: portability.cmsis_rtos_v2 -   test_timer - does not end within 60 sec
* :github:`49005` - samples: tfm_integration: tfm_regression_test: sample.tfm.regression_ipc_lvl2 no console output within 210 sec - timeout
* :github:`49004` - unexpected eof in qemu_cortex and mps2
* :github:`49002` - tests: subsys: settings: functional: fcb: system.settings.functional.fcb fails
* :github:`49000` - tests: arch: arm: arm_thread_swap: arch.arm.swap.common.no_optimizations USAGE FAULT
* :github:`48999` - tests: arch: arm: arm_interrupt: arch.interrupt.no_optimizations Wrong crash type got 2 expected 0
* :github:`48997` - tests: kernel: workq: work_queue: kernel.workqueue fails
* :github:`48991` - Receiving message from pc over PCAN-USB FD
* :github:`48977` - kernel: mem_protect: mimxrt11xx series build failure
* :github:`48967` - modem: hl7800 runtime log control API is broken
* :github:`48960` - coap_packet_parse() should return different values based on error type
* :github:`48951` - stm32wb55 BLE unable to connect / pair
* :github:`48950` - cmake: string quotes are removed from extra_kconfig_options.conf
* :github:`48937` - Compilation error when adding lwm2m client on CHIP/matter sample
* :github:`48921` - build system/west: Add a warning if any project repo does not match the manifest
* :github:`48918` - ztest: tests: add CONFIG_ZTEST_SHUFFLE=y to tests/subsys/logging/log_benchmark/prj.conf cause build failure
* :github:`48913` - net: Add pointer member to net_mgmt_event_callback struct to pass user data to the event handler.
* :github:`48912` - sample.drivers.flash.shell: Failed on NXP targets
* :github:`48911` - sample.drivers.flash.shell: Failed on atmel targets
* :github:`48907` - Does esp32 support BLE Mesh
* :github:`48897` - twister --sub-test never works
* :github:`48880` - BLE notifications on custom service not working anymore: <wrn> bt_gatt: Device is not subscribed to characteristic
* :github:`48877` - tests: kernel: mem_slab: mslab: kernel.memory_slabs fails
* :github:`48875` - tests: kernel: context: kernel.context fails at test_busy_wait and Kernel panic at test_k_sleep
* :github:`48863` - hawkbit subsystem - prints garbage if debug enabled and no update pending
* :github:`48829` - cbprintf is broken on multiple platforms with GCC 12
* :github:`48828` - Clicking a link leads to "Sorry, Page Not Found", where they ask to notify this GitHub
* :github:`48823` - Bluetooth: controller: llcp: limited nr. of simultaneous connections
* :github:`48813` - Bluetooth: bt_conn_disconnect randomly gives error "bt_conn: not connected!"
* :github:`48812` - Bluetooth controller extended advertisement crashes in lll layer
* :github:`48808` - Pinctl api breaks NXP imx6sx
* :github:`48806` - Bluetooth: controller: conformance test instability
* :github:`48804` - LE Audio: Add HAP sample to Zephyr footprint tracking
* :github:`48801` - test: driver: wdt: wdt cases fails in LPC platform randonly
* :github:`48799` - Why is the command input incomplete?
* :github:`48780` - boards: bus devices label names should include address on bus
* :github:`48779` - net.socket.select: failed (qemu/mps2_an385)
* :github:`48757` - Windows10 Installation: Failed to run ``west update``
* :github:`48742` - Linking fails during build when referencing functions in ``zephyr/bluetooth/crypto.h``
* :github:`48739` - net: tcp: Implicit MSS value is not correct
* :github:`48738` - dts: label: label defined in soc does not take effects in final zephyr.dts
* :github:`48731` - gen_handles script fails with pwmleds handle
* :github:`48725` - arm_thread_swap:  tests/arch/arm/arm_thread_swap/ failed on reel_board
* :github:`48724` - mpu9250 driver init function register setup using the same config parameter twice.
* :github:`48722` - flash_map: pointer dereferencing causes build to fail
* :github:`48718` - Completely disabling IP support leads to a build error when enabling IEEE 802.15.4 L2 support
* :github:`48715` - Enabling NET_L2_IEEE802154 and IEEE802154_RAW_MODE together breaks the build
* :github:`48699` - Is there a way to port the Bluetooth host stack to linux?
* :github:`48682` - ADC Support for STM32U575
* :github:`48671` - SAM V71B Initial USB Transfer Drops Data Bytes
* :github:`48665` - tests/usb/device: Add zassert to match zassume usage.
* :github:`48642` - nucleo_l011k4 does not build
* :github:`48630` - Process: maintainer involvement in triaging issues
* :github:`48626` - jlink flasher not working with recent versions of pylink dependency
* :github:`48620` - LC3 External Source Code
* :github:`48591` - Can't run zephyr application from SDRAM on RT1060-EVKB
* :github:`48585` - net: l2: ieee802154: decouple l2/l3 layers
* :github:`48584` - Remove netifaces Python package dependency
* :github:`48578` - NRF GPIO Toggle introduces race condition when multithreaded
* :github:`48567` - MIMXRT1060 custom board support for NXP HAL modules
* :github:`48547` - ztest: Incorrect display of test duration value.
* :github:`48541` - subsys/net/l2/ppp/fsm.c: BUS FAULT
* :github:`48537` - Can gpio output configuration flags be expressed in the devicetree?
* :github:`48534` - SMF missing events
* :github:`48531` - RFC: Changing the sys_clock interface to fix race conditions.
* :github:`48523` - Mathematical operations in Kconfig
* :github:`48518` - ``samples/sensor/*``: Build issue when board expose sensors defined on both I2C and SPI buses
* :github:`48516` - flash: sam: Build error for sam4s_xplained
* :github:`48514` - bsim mesh establish_multi.sh doesn't send data for one of devices
* :github:`48512` - frdm_k64f : failed to run tests/drivers/dma/scatter_gather
* :github:`48507` - error on console usb app.overlay
* :github:`48501` - Usage Fault :  Illegal use of EPSR , NRFSDK 2.0.0 and BLE DFU NRF52840 DK
* :github:`48492` - gdbstub for arc core
* :github:`48480` - ZTEST: duplicate symbol linker error
* :github:`48471` - net: tcp: Persistent timer for window probing does not implement exponential backoff
* :github:`48470` - Inconsistent return value of uart_mux_fifo_fill when called inside/outside of an ISR
* :github:`48469` - [bisected] 5a850a5d06e1 is breaking some tests on ARM64
* :github:`48465` - net: tcp: SYN flag received after connection is established should result in connection reset
* :github:`48463` - Grant Triage permission level to @aurel32
* :github:`48460` - Provide duration of each testsuite and testcase in ztest test summary.
* :github:`48459` - bluetooth: host: Dangling pointer in le_adv_recv
* :github:`48447` - ``hwinfo devid`` does not work correctly for NXP devices using ``nxp,lpc-uid`` device binding
* :github:`48444` - Problem upgrading ncs 1.5.1 upgrade to ncs 1.9.1 failed
* :github:`48424` - ZTEST Framework fails when ztest_run_all is called multiple times
* :github:`48416` - samples: samples/subsys/tracing is broken for UART tracing
* :github:`48392` - Compiling failure watchdog sample with nucleo_u575zi_q
* :github:`48386` - twister cannot take ``board@revision`` as platform filter
* :github:`48385` - Compilation failures on Cavs 18/20/25 GCC
* :github:`48380` - shell: Mixing mandatory arguments w/ SHELL_OPT_ARG_RAW causes crash
* :github:`48367` - Wrong clock assigned
* :github:`48343` - NVS nvs_recover_last_ate() does not align data length
* :github:`48328` - Add API to get the nvs_fs struct from the settings backend
* :github:`48321` - twister: bug in platform names verification
* :github:`48306` - Lwm2m_client sample broken on native_posix target
* :github:`48302` - West search for "compatible" device tree property does not expand C preprocessor macros
* :github:`48290` - ESP32 ble no work while enable CONFIG_SETTINGS
* :github:`48282` - BT_H4 overriding BT_SPI=y causing build to fail - HCI Host only build SPI bus
* :github:`48281` - Fix github permissions for user "alevkoy"
* :github:`48267` - No model in devicetree_unfixed.h :
* :github:`48253` - Only the first failing test is aborted and marked failed
* :github:`48223` - base64.c encode returns wrong count of output bytes
* :github:`48220` - adxl345: sensor value calculation should be wrong
* :github:`48216` - Running gPTP sample application on SAMe54 Xplained pro(Supports IEEE 802.1 AS gPTP clock) , PDelay Response Receipt Timeout
* :github:`48215` - docs: build the documentation failed due to "Could NOT find LATEX"
* :github:`48198` - NPCX Tachometer driver compiled despite status = "disabled"
* :github:`48194` - Support J-Link debugger for RaspberryPi Pico
* :github:`48185` - LV_Z_DISPLAY_DEV_NAME symbol has not got "parent" symbol with a type
* :github:`48175` - stm32 octospi flash driver
* :github:`48149` - Sensor Subsystem: client facing API: finding sensors
* :github:`48115` - tests: subsys: dfu: mcuboot_multi: dfu.mcuboot.multiimage hangs at first test case - test_request_upgrade_multi
* :github:`48113` - Zephyr support for STM32U5 series MCU
* :github:`48111` - LVGL: License agreement not found for the font arial.ttf
* :github:`48104` - [v 1.13 ] HID is not connecting to Linux based Master device
* :github:`48098` - Build error for samples/bluetooth/unicast_audio_server of nrf52dk-nrf52832 board
* :github:`48089` - AF_PACKET sockets not filling L2 header details in ``sockaddr_ll``
* :github:`48081` - tests/drivers/clock_control/stm32_clock_configuration/stm32u5_core not working with msis 48
* :github:`48071` - mec15xxevb_assy6853: test_i2c_pca95xx failed
* :github:`48060` - Have modbus RTU Client and modbus TCP Master on the same microcontroller
* :github:`48058` - Reading out a GPIO pin configured as output returns invalid value.
* :github:`48056` - Possible null pointer dereference after k_mutex_lock times out
* :github:`48055` - samples: subsys: usb: audio: headphones_microphone and headset - Can not get USB Device
* :github:`48051` - samples: logger: samples/subsys/logging/logger/sample.logger.basic failed on acrn_ehl_crb board
* :github:`48047` - Reference to obsolete files in cmake package docs
* :github:`48007` - tests: gpio driver fails in pin_get_config
* :github:`47991` - BLE functionality for STM32WB55 is limited with full version of BLE stack
* :github:`47987` - test: samples/boards/mec15xxevb_assy6853/power_management failed after commit 5f60164a0fc
* :github:`47986` - Rework of STM32 bxCAN driver filter handling required
* :github:`47985` - ARC wrong .debug_frame
* :github:`47970` - Flash: SFDP parameter address is not correct
* :github:`47966` - TCP: Zero window probe packet incorrect
* :github:`47948` - _kernel.threads' always points to NULL(0x0000'0000)
* :github:`47942` - Mutex priority inheritance when thread holds multiple mutexes
* :github:`47933` - tests: subsys: logging: log_switch_format: logging.log_switch_format - test_log_switch_format_success_case - Assertion failed
* :github:`47930` - tests: arch: arm: arm_interrupt: arch.interrupt.no_optimizations - Data Access Violation - MPU Fault
* :github:`47929` - tests: arch: arm: arm_thread_swap: arch.arm.swap.common.no_optimizations - Data Access Violation - MPU Fault
* :github:`47925` - Asynchronous UART API (DMA) not working like expected on nrf52840
* :github:`47921` - tests: pin_get_config failed on it8xxx2_evb
* :github:`47904` - drivers: can: loopback driver only compares loopback frames against CAN IDs in installed filters
* :github:`47902` - drivers: can: mcux: flexcan: failure to handle RTR frames correctly
* :github:`47895` - samples: smp_svr missing CONFIG_MULTITHREADING=y dependency
* :github:`47860` - Bluetooth: shell: bt init sync enables Bluetooth asynchronously
* :github:`47857` - Zephyr USB-RNDIS
* :github:`47855` - tests: arch: arm: fpu: arch.arm.swap.common.fpu_sharing.no_optimizations - Data Access Violation - MPU Fault
* :github:`47854` - Multiple blinking LED's cannot be turned off
* :github:`47852` - samples: boards: nrf: s2ram No valid output on console
* :github:`47847` - How to PM change pm_state
* :github:`47833` - Intel CAVS: cavstool.py fails to extract complete log from winstream buffer when logging is frequent
* :github:`47830` - Intel CAVS: Build failure due to #47713 PR
* :github:`47825` - qemu_cortex_a53_smp: tests/kernel/profiling/profiling_api failed
* :github:`47822` - Stack Overflow when calling spi at an interrupt on STM32l4
* :github:`47783` - warning: attempt to assign the value 'y' to the undefined symbol UART_0_NRF_FLOW_CONTROL
* :github:`47781` - MCUbootloader with b_u585i_iot02a (stm32u585) boot error
* :github:`47780` - WS2812 driver not work on nRF52833DK
* :github:`47762` - Some github users in the MAINTAINERS file are missing permissions
* :github:`47751` - soc/arm/common/cortex_m doesn't work for out-of-tree socs
* :github:`47742` - NXP LPC MCAN driver front-end lacks pinctrl support
* :github:`47734` - tests/posix/eventfd/ : failed on both nucleo_f103rb and nucleo_l073rz with 20K RAM only
* :github:`47731` - JESD216 fails to read SFDP on STM32 targets
* :github:`47725` - qemu_arc: tests/kernel/context/ failed when migrating to new ztest API
* :github:`47719` - Configure-time library dependency problem
* :github:`47714` - test: tests/lib/sprintf/ build fail
* :github:`47702` - twister: regression : Failures are counted as errors
* :github:`47696` - tests: arch: arm: arm_thread_swap: regression since use of new ztest API
* :github:`47682` - bt_gatt_unsubscribe creates write request to CCC and then cancels it
* :github:`47676` - bt_data_parse is destructive without warning
* :github:`47652` - The client-server based cavstool.py might be stuck when the ROM is not start
* :github:`47649` - ATT Notification buffer not released after reconnection
* :github:`47641` - Poor Ethernet Performance using NXP Enet MCUX Driver
* :github:`47640` - Zephyr and caches: a difficult love story.
* :github:`47613` - Samples / Tests without a testcase.yaml or sample.yaml
* :github:`47683` - TCP Connected Change the window size to 1/3/ff fail
* :github:`47609` - posix: pthread: descriptor leak with pthread_join
* :github:`47606` - nvs_read return value is not correct
* :github:`47592` - test: tests/drivers/gpio/gpio_basic_api failed after commit 2a8e3fe
* :github:`47588` - tests: sprintf: zero-length gnu_printf format string
* :github:`47580` - https connect failing with all the samples (qemu_x86 & mbedtls)
* :github:`47576` - undefined reference to ``__device_dts_ord_20`` When building with board hifive_unmatched on flash_shell samples
* :github:`47568` - uart_mcux_lpuart driver activates the noise error interrupt but does not clear the noise error flag
* :github:`47556` - sample: logging: Builds failing for samples/subsys/logging/syst
* :github:`47551` - Enabling CONFIG_OPENTHREAD_SRP_CLIENT on NRF52840 dongle board leads to MBED compilation errors.
* :github:`47546` - Revert https://github.com/zephyrproject-rtos/zephyr/pull/47511
* :github:`47520` - Support for sub-ghz channels in at86rf2xx radio driver
* :github:`47512` - up_squared: issues of EFI console feature
* :github:`47508` - tests: arch: the xtensa_asm2 test is broken
* :github:`47483` - PPP + GSM MUX doesn't work with Thales PLS83-W modem
* :github:`47476` - SX127x LoRaWAN - Failing on Boot - Missing Read/Write functions?
* :github:`47461` - Unable to build the flash_shell samples with board cc1352r1_launchxl
* :github:`47458` - BQ274XX Sensors Driver - Fails with CONFIG_BQ274XX_LAZY_CONFIGURE
* :github:`47445` - USB OTG FS controller support on STM32F413 broken
* :github:`47428` - SRAM increase in Bluetooth  [samples: bbc_microbit: pong fails to build]
* :github:`47426` - ZTEST_USER tests being skipped on systems without userspace support
* :github:`47420` - Tests: unittest with new ZTEST API
* :github:`47409` - LE Audio: Read PACS available contexts as unicast client
* :github:`47407` - stm32l5: tfm: Build error on tests/arch/arm/arm_thread_swap_tz
* :github:`47379` - Crypto sample fail to build with cryp node in .dts for STM32u5 (error: unknown type name 'CRYP_HandleTypeDef' etc.)
* :github:`47356` - cpp: global static object initialisation may fail for MMU and MPU platforms
* :github:`47330` - ARM Cortex-R52 doesn't have SPSR_hyp
* :github:`47326` - drivers: WINC1500: issues with buffer allocation when using sockets
* :github:`47323` - STM32WL LoRa SoC stuck at initialization due to SPI transmit buffer not emptying
* :github:`47307` - tests: kernel: fatal: exception: build failure on multiple platforms
* :github:`47301` - Module request: Lua
* :github:`47300` - Intel CAVS: Failure in tests/lib/spsc_pbuf
* :github:`47292` - it8xxx2_evb: many test cases failed probably due to the west update
* :github:`47288` - tests: posix: increase coverage for picolibc
* :github:`47275` - builds are broken with gnuarmemb toolchain, due to picolibc tests/configuration
* :github:`47273` - linker script: Vector table regression due to change in definition of _vector_end
* :github:`47272` - nrf51_ble400: onboard chip should be updated to nRF51822_QFAC in dts
* :github:`47248` - LE Audio: Crash on originating call.
* :github:`47240` - net: tcp: Correctly handle overlapped TCP retransmits
* :github:`47238` - SD Card init issue when CONFIG_SPEED_OPTIMIZATIONS=y
* :github:`47232` - Please add STM32F412RX
* :github:`47222` - zephyr doc: Unable to open pdf document version 3.1.0
* :github:`47220` - Twister: Skipping ``*.cpp`` files
* :github:`47204` - CAN filter with RTR mask causes infinite loop in MCAN driver on filtered message arrival
* :github:`47197` - BLE latency decreasing and increasing over time (possibly GPIO issue)
* :github:`47146` - STM32F103:  USB clock prescaler isn't set during USB initialisation
* :github:`47127` - twister : frdm_k64f ：Non-existent tests appear and fail on tests/lib/cmsis_dsp/transform
* :github:`47126` - New ztest API: build failure on qemu_cortex_m3 when CONFIG_CMAKE_LINKER_GENERATOR=y
* :github:`47119` - ADC_DT_SPEC_GET not working for channels >= 10
* :github:`47114` - ``check_compliance.py`` crash on Ubuntu 22.04
* :github:`47105` - drivers: clock_control: stm32 common: wrong PLLCLK rate returned
* :github:`47104` - Bluetooth: Controller: Errors in implementation of tx buffer queue mechanism
* :github:`47101` - drivers: clock_control: stm32 common: PLL_Q divider not converted to reg val
* :github:`47095` - ppp network interface -  MQTT/TCP communication
* :github:`47082` - drivers: modem: AT commands sent before OK from previous is received
* :github:`47081` - on x86, k_is_in_isr() returns false in execption context
* :github:`47077` - Intel CAVS: tests/subsys/logging/log_switch_format/ are skipped as no result captured
* :github:`47072` - ZTEST Docs Page
* :github:`47062` - dt-bindings: clock: STM32G4 device clk sources selection helper macros don't match the SOCs CCIPR register
* :github:`47061` - pipes: Usage between task and ISR results in corrupted pipe state
* :github:`47054` - it8xxx2_evb: flash fail in daily test
* :github:`47051` - drivers: usb: stm32: usb_write size on bulk transfer problematic
* :github:`47046` - samples/net/sockets/packet: Bus fault
* :github:`47030` - drivers: gpio: nrfx: return -ENOTSUP rather than -EIO for misconfigurations
* :github:`47025` - mimxrt1050_evk: reset cause
* :github:`47021` - Integrate Würth Elektronik Sensors SDK code for use in sensor drivers
* :github:`47010` - ACRN: failed to run the test case tests/drivers/coredump/coredump_api
* :github:`46988` - samples: net: openthread: coprocessor: RCP is missing required capabilities: tx-security tx-timing
* :github:`46985` - uOSCORE/uEDHOC integration as a Zephyr module
* :github:`46962` - Regression in apds9960 driver
* :github:`46954` - Binaries found in hal_nxp without conspicuous license information
* :github:`46935` - Not printk/log output working
* :github:`46931` - flash_stm32_ospi.c: Unable to erase flash partition using flash_map API
* :github:`46928` - drivers: modem: gsm_ppp: support hardware flow control
* :github:`46925` - Intel CAVS: tests/lib/mem_block/ failed, caused by too frequent log output.
* :github:`46917` - frdm_k64f : failed to run tests/drivers/gpio/gpio_get_direction
* :github:`46901` - RFC: I3C I2C API
* :github:`46887` - Automatically organize BLE EIR/AD data into a struct instead of providing it in a simple_network_buffer.
* :github:`46865` - Intel CAVS: Support for different ports for client / server
* :github:`46864` - Intel CAVS: cavstool_client.py sporadically fails
* :github:`46847` - STOP2 Mode on Nucleo-WL55JC1 not accessed
* :github:`46829` - LE Audio: Avoid multiple calls to ``bt_iso_chan_connect`` in parallel
* :github:`46822` - L2CAP disconnected packet timing in ecred reconf function
* :github:`46807` - lib: posix: semaphore: use consistent timebase in sem_timedwait
* :github:`46801` - Revisit modules and inclusion in the default manifest
* :github:`46799` - IRQ vector table: how to support different formats
* :github:`46798` - Zephyr does not store a new IRK when another device re-bonds with a Zephyr device
* :github:`46797` - UART Asynchronous API continuous data receiving weird behaviour
* :github:`46796` - IRQ vector table
* :github:`46793` - tests: posix: use new ztest api
* :github:`46765` - test-ci: kernel.timer: test_timer_remaining asserts
* :github:`46763` - LE Audio: Unicast Audio read PAC location
* :github:`46761` - logging: tagged arguments feature does not work with char arrays in C++
* :github:`46757` - Bluetooth: Controller: Missing validation of unsupported PHY when performing PHY update
* :github:`46749` - mbox: wrong syscall check
* :github:`46743` - samples: net: civetweb: websocket_server
* :github:`46740` - stm32 flash ospi fails on stm32l5 and stm32u5 disco
* :github:`46734` - drivers/disk: sdmmc: Doesn't compile for STM32F4
* :github:`46733` - ipc_rpmsg_static_vrings creates unaligned TX virtqueues
* :github:`46728` - mcumgr: rt1060: upload an image over the shell does not work
* :github:`46725` - stm32: QSPI flash driver have a broken priority configuration
* :github:`46721` - HAL module request: hal_renesas
* :github:`46706` - add missing checks for segment number
* :github:`46705` - Check buffer size in rx
* :github:`46698` - sm351 driver faults when using global thread
* :github:`46697` - Missed interrupts in NXP RT685 GPIO driver
* :github:`46694` - Bluetooth: controller: LLCP: missing release of tx nodes on disconnect when tx data paused
* :github:`46692` - Bluetooth: controller: LLCP: reduced throughput
* :github:`46689` - Missing handling of DISK_IOCTL_CTRL_SYNC in sdmmc_ioctl
* :github:`46684` - ethernet: w5500: driver will be stack overflowed when reading the invalid(corrupt) packet length
* :github:`46656` - Scheduling timing issue
* :github:`46650` - qemu_x86: shell does not work with tip of main
* :github:`46645` - NRFX samples use deprecated API
* :github:`46641` - tests : kernel: context test_kernel_cpu_idle fails on nucleo_f091 board
* :github:`46635` - tests: subsys: modbus: testcase hang up when running by twister
* :github:`46632` - Intel CAVS: Assertion failures in tests/boards/intel_adsp/hda
* :github:`46626` - USB CDC ACM Sample Application build fail with stm32_mini_dev_blue board
* :github:`46623` - Promote user "tari" to traige permission level
* :github:`46621` - drivers: i2c: Infinite recursion in driver unregister function
* :github:`46602` - BLE paring/connection issue on Windows (Zephyr 3.1.0)
* :github:`46594` - openthread net_mgmt_event_callback expects event info.
* :github:`46582` - LE Audio: PACS notify warns about failure when not connected
* :github:`46580` - Suggestion for additional configuration of ``twister --coverage`` gcovr formats
* :github:`46573` - raspberry pi pico always in mass storage mode
* :github:`46570` - Compiler warning when enabling userspace, sockets and speed optimization
* :github:`46558` - Bluetooth: Controller: Crash on bt_le_adv_start() when using CONFIG_BT_CTLR_ADVANCED_FEATURES
* :github:`46556` - Kconfig search webpage no longer shows all flags
* :github:`46555` - test: samples/drivers/adc twister result wrong
* :github:`46541` - Duplicate IDs used for different Systemview trace events
* :github:`46525` - PWM of it8xxx2
* :github:`46521` - '__device_dts_ord___BUS_ORD' undeclared here (not in a function); did you mean '__device_dts_ord_94'?
* :github:`46519` - STM32F4 CAN2 peripheral not working
* :github:`46510` - bluetooth: controller: llcp: set refactored LLCP as default
* :github:`46500` - Removal of logging v1
* :github:`46497` - Modbus: Add support for FC03 without floating-point extension as client
* :github:`46493` - Ethernet W5500 driver fails initialization with latest change - revert needed
* :github:`46483` - Update RISC-V ISA configs
* :github:`46478` - mimxrt1050_evk_qspi freeze when erasing flash
* :github:`46474` - LE Audio: Add seq_num and TS to bt_audio_send
* :github:`46470` - twister : retry failed parameter is not valid
* :github:`46464` - frdm_k64f : sudden failure to flash program
* :github:`46459` - Test framework incorrectly uses c++ keyword ``this``
* :github:`46453` - nRF52840 PWM with pinctrl - Unable to build samples/basic/blinky_pwm
* :github:`46446` - lvgl: Using sw_rotate with SSD1306 shield causes memory fault
* :github:`46444` - Proposal to integrate Cadence QSPI driver from Trusted Firmware-A
* :github:`46434` - ESP32-C3 UART1 broken since introduction of pinctrl
* :github:`46426` - Intel CAVS: Assertion failures on tests/boards/intel_adsp/smoke
* :github:`46422` - SDK version 14.2 increases image size significantly
* :github:`46414` - mcuboot: rt1060: confirmed image causes usage fault
* :github:`46413` - No multicast reception on IMX1064
* :github:`46410` - Add devicetree binding for ``zephyr,sdmmc-disk``
* :github:`46400` - STM32WB BLE HCI interface problem.
* :github:`46398` - ``mem_protect/mem_map`` is failing on ``qemu_x86_tiny`` when userspace is enabled
* :github:`46383` - fatal error: sys/cbprintf_enums.h: No such file or directory
* :github:`46382` - twister -x / --extra-args escaping quotes issue with CONFIG_COMPILER_OPTIONS
* :github:`46378` - CONFIG_SYS_CLOCK_TICKS_PER_SEC affects app code speed with tickless kernel
* :github:`46372` - Intel-ADSP: sporadic core boot
* :github:`46369` - LE Audio: Bidirectional stream is not created
* :github:`46368` - twister  : frdm_k64f ：the test case tests/subsys/logging/log_switch_format/logger.syst.v2.immediate/ blocks
* :github:`46366` - test_thread_stats_usage fail on arm64 fvp
* :github:`46363` - Initial Setup: Ubuntu 20.04: ensurepip is not available
* :github:`46355` - Sample wifi_station not building for esp32: No SOURCES given to Zephyr library: drivers__ethernet
* :github:`46350` - net: tcp: When the first FIN message is lost, the connection does not properly close
* :github:`46347` - MCUMGR_SMP_BT: system workqueue blocked during execution of shell commands
* :github:`46346` - LE Audio: Fatal crash when sending Audio data
* :github:`46345` - get_maintainer.py incorrectly invoked by Github?
* :github:`46341` - Zephyr scheduler lock: add selective locking up to a given priority ceiling
* :github:`46335` - For ESP32, initialization of static object during declaration with derived class type doesn't work.
* :github:`46326` - Async UART for STM32 U5 support
* :github:`46325` - ESP32 strcmp error while enable MCUBOOT and NEWLIB_LIBC
* :github:`46324` - it8xxx2_evb: tests/kernel/sched/schedule_api fail due to k_sleep(K_MSEC(100)) not correct
* :github:`46322` - Time units in shtcx sensor
* :github:`46312` - sample: bluetooth: ipsp - TCP not running over IPSP
* :github:`46286` - python-devicetree tox run fails
* :github:`46285` - nrf_qspi_nor: Inconsistent state of HOLD and WP for QSPI command execution causes hang on startup for some flash chips
* :github:`46284` - ring buffer in item mode crashes
* :github:`46277` - IMX8MM: Running fail a zephyr sample in the imx8mm
* :github:`46269` - docs: include/zephyr/net/socket.h is not documented anywhere
* :github:`46267` - docs: include/zephyr/net/http_client.h is not documented anywhere
* :github:`46266` - zephyr,sdmmc-disk compatible lacks a binding
* :github:`46263` - Regulator Control
* :github:`46255` - imxrt1010 wrong device tree addresses
* :github:`46235` - subsystem: Bluetooth LLL: ASSERTION FAIL [!link->next]
* :github:`46234` - samples: lsm6dso: prints incorrect anglular velocity units
* :github:`46208` - it8xxx2_evb: tests/kernel/sleep failed, elapsed_ms = 2125
* :github:`46206` - it8xxx2_evb: tests/kernel/fatal/exception/ assertion failed -- "thread was not aborted"
* :github:`46199` - LIS2DW12 I2C driver uses invalid write command
* :github:`46186` - ISO Broadcaster fails silently on unsupported RTN/SDU_Interval combination
* :github:`46183` - LE Audio: Broadcast sink stop sending syncable once synced
* :github:`46180` - Add GitHub app for Googler notifications
* :github:`46173` - nRF UART callback is not passed correct index via evt->data.rx.offset sometimes
* :github:`46170` - ipc_service: open-amp backend may never leave
* :github:`46167` - esp32: Unable to select GPIO for PWM LED driver channel
* :github:`46164` - scripts: release: ci checks for issues associated with backport prs
* :github:`46158` - frdm_k64f：failed to run test case tests/subsys/modbus/modbus.rtu/server_setup_low_none
* :github:`46157` - ACRN: some cases still failed because of the log missing
* :github:`46124` - stm32g071 ADC drivers apply errata during sampling config
* :github:`46117` - Kernel events can’t be manipulated without race conditions
* :github:`46100` - lib: posix: support for perror()
* :github:`46099` - libc: minimal: add strerror() function
* :github:`46075` - BT HCI Raw on STM32WB55RG
* :github:`46072` - subsys/hawkBit: Debug log error in hawkbit example "CONFIG_LOG_STRDUP_MAX_STRING"
* :github:`46066` - TF-M: Unable to trigger NMI interrupt from non-secure
* :github:`46065` - Bluetooth: controller: llcp: verify that refactored LLCP is used in EDTT
* :github:`46049` - Usage faults on semaphore usage in driver (stm32l1)
* :github:`46048` - Use dts memory-region property to retrieve memory region used by driver
* :github:`46008` - stm32h7: gptp sample does not work at all
* :github:`45993` - Matter(CHIP) support
* :github:`45955` - stm32h7 i2s support
* :github:`45953` - modem: simcom-sim7080: sendmsg() should result in single outgoing datagram
* :github:`45951` - modem: ublox-sara-r4: outgoing datagrams are truncated if they do not fit MTU
* :github:`45938` - Unable to combine USB CDC-ACM and Modbus Serial due to dependecy on uart_configure().
* :github:`45934` - ipc_service: nocopy tx buffer allocation works unexpectedly with RPMSG backend
* :github:`45933` - webusb sample code linking error for esp32 board
* :github:`45929` - up_squared：failed to run test case tests/posix/common
* :github:`45914` - test: tests/kernel/usage/thread_runtime_stats/ test fail
* :github:`45866` - drivers/entropy: stm32: non-compliant RNG configuration on some MCUs
* :github:`45848` - tests: console harness: inaccuracy testcases report
* :github:`45846` - New ZTEST API for noisily skipping a test based dependency failures
* :github:`45845` - tests: The failure test case number increase significantly in CMSIS DSP tests on ARM boards.
* :github:`45844` - Not all bytes are downloaded with HTTP request
* :github:`45842` - drivers: modem: uart_mux errors after second call to gsm_ppp_start
* :github:`45827` - bluetooth: bluetooth host: Adding the same device to resolving list
* :github:`45807` - CivetWeb doesn't build for CC3232SF
* :github:`45802` - Some tests reported as PASSED (device) but they were only build
* :github:`45774` - drivers: gpio: pca9555: Driver is writing to output port despite all pins been configured as input
* :github:`45760` - Running twister on new board files
* :github:`45741` - LE Audio: Allow unique ``bt_codec_qos`` for each unicast stream
* :github:`45678` - Lorawan: Devnonce has already been used
* :github:`45675` - testing.ztest.customized_output: mismatch twister results in json/xml file
* :github:`45666` - Building samples about BLE audio with nrf5340dk does not work
* :github:`45658` - Build failure: civetweb/http_server with target blackpill_f411ce and CONFIG_DEBUG=y
* :github:`45647` - test: drivers: counter: Test passes even when no instances are found
* :github:`45613` - LE Audio: Setting ISO chan path and CC from BAP
* :github:`45611` - GD32 build failure: CAN_MODE_NORMAL is redefined
* :github:`45596` - samples: Code relocation nocopy sample has some unusual failure on nrf5340dk
* :github:`45581` - samples: usb: mass: Sample.usb.mass_flash_fatfs fails on non-secure nrf5340dk
* :github:`45564` - Zephyr does not boot with CONFIG_PM=y
* :github:`45558` - LE Audio: Update MICP API with new naming scheme
* :github:`45532` - uart_msp432p4xx_poll_in() seems to be a blocking function
* :github:`45509` - ipc: ipc_icmsg: Can silently drop buffer if message is too big
* :github:`45441` - SPI NOR driver assume all SPI controller HW is implemnted in an identical way
* :github:`45374` - Creating the unicast group before both ISO connections have been configured might cause issue
* :github:`45349` - ESP32: fails to chain-load sample/board/esp32/wifi_station from MCUboot
* :github:`45315` - drivers: timer: nrf_rtc_timer: NRF boards take a long time to boot application in CONFIG_TICKLESS_KERNEL=n mode after OTA update
* :github:`45304` - drivers: can: CAN interfaces are brought up with default bitrate at boot, causing error frames if bus bitrate differs
* :github:`45270` - CMake - TEST_BIG_ENDIAN
* :github:`45234` - stm32: Allow multiple GPIOs to trigger an interrupt
* :github:`45222` - drivers: peci: user space handlers not building correctly
* :github:`45169` - rcar_h3ulcb: failed to run test case tests/drivers/can/api
* :github:`45168` - rcar_h3ulcb: failed to run test case tests/drivers/can/timing
* :github:`45157` - cmake: Use of -ffreestanding disables many useful optimizations and compiler warnings
* :github:`45130` - LE Audio: Allow CSIS set sizes of 1
* :github:`45117` - drivers: clock_control: clock_control_nrf
* :github:`45114` - Sample net/sockets/echo not working with disco_l475_iot1
* :github:`45105` - ACRN: failed to run testcase tests/kernel/fifo/fifo_timeout/
* :github:`45039` - Bluetooth: Controller: Broadcast multiple BIS (broadcast ISO streams)
* :github:`45021` - Configurable SDMMC bus width for STM32
* :github:`45012` - sam_e70b_xplained: failed to run test case tests/drivers/can/timing/drivers.can.timing
* :github:`45009` - twister: many tests failed with "mismatch error" after met a SerialException.
* :github:`45008` - esp32: i2c_read() error was returned successfully at the bus nack
* :github:`44998` - SMP shell exec command causes BLE stack breakdown if buffer size is too small to hold response
* :github:`44996` - logging: transient strings are no longer duplicated correctly
* :github:`44980` - ws2812_spi allow setting CPHA in overlay
* :github:`44944` - LE Audio: Add ISO part to broadcast audio bsim tests
* :github:`44925` - intel_adsp_cavs25: multiple tests failed after running tests/boards/intel_adsp
* :github:`44898` - mgmt/mcumgr: Fragmentation of responses may cause mcumgr to drop successfully processed response
* :github:`44861` - WiFi support for STM32 boards
* :github:`44830` - Unable to set compiler warnings on app exclusively
* :github:`44824` - mgmt/mcumgr/lib: Use slist in group registration to unify with Zephyr code
* :github:`44725` - drivers: can: stm32: can_add_rx_filter() does not respect CONFIG_CAN_MAX_FILTER
* :github:`44622` - Microbit v2 board dts file for lsm303agr int line
* :github:`44579` - MCC: Discovery cannot complete with success
* :github:`44573` - Do we have complete RNDIS stack available for STM32 controller in zephyr ?
* :github:`44466` - Zephyr misses strict aliasing disabling
* :github:`44455` - LE Audio: Remove ``struct bt_codec *codec`` parameter from ``bt_audio_broadcast_sink_sync``
* :github:`44403` - MPU fault and ``CONFIG_CMAKE_LINKER_GENERATOR``
* :github:`44400` - LE Audio: Unicast server stream control
* :github:`44340` - Bluetooth: controller: Handle parallel (across connections) CU/CPRs in refactored LLCP
* :github:`44338` - Intel CAVS: tests/subsys/logging/log_immediate/ failed due to non-intact log
* :github:`44324` - Compile error in byteorder.h
* :github:`44228` - drivers: modem: bg9x: bug on cmd AT+QICSGP
* :github:`44219` - mgmt/mcumgr/lib: Incorrect processing of img_mgmt_impl_write_image_data leaves mcumgr in broken state in case of error
* :github:`44214` - mgmt/mcumgr/lib: Parasitic use of CONFIG_HEAP_MEM_POOL_SIZE in image management
* :github:`44143` - Adding picolibc as a module
* :github:`44071` - LE Audio: Upstream remaining parts of topic branch
* :github:`44070` - west spdx TypeError: 'NoneType' object is not iterable
* :github:`44059` - Hearing Aid Role
* :github:`44058` - Hearing Access Service API
* :github:`44005` - add strtoll and strtoull to libc minimal
* :github:`43940` - Support for CH32V307 devices
* :github:`43933` - llvm: twister: multiple errors with set but unused variables
* :github:`43928` - pm: going to PM_STATE_SOFT_OFF in pm_policy_next_state causes assert in some cases
* :github:`43913` - LE Audio: Callbacks as singletons or lists?
* :github:`43910` - civetweb/http_server - DEBUG_OPTIMIZATIONS enabled
* :github:`43887` - SystemView tracing with STM32L0x fails to compile
* :github:`43859` - Bluetooth: ISO: Add sequence number and timestamp to bt_iso_chan_send
* :github:`43828` - Intel CAVS: multiple tests under tests/boards/intel_adsp/smoke are failing
* :github:`43811` - ble: gatt: db_hash_work runs for too long and makes serial communication fail
* :github:`43788` - LE Audio: Broadcast Sink shall instantiate PACS
* :github:`43767` - LE Audio: Broadcast sink/source use list of streams instead of array
* :github:`43718` - Bluetooth: bt_conn: Unable to allocate buffer within timeout
* :github:`43655` - esp32c3: Connection fail loop
* :github:`43646` - mgmt/mcumgr/lib: OS taskstat may give shorter list than expected
* :github:`43515` - reel_board: failed to run tests/kernel/workq/work randomly
* :github:`43450` - twister: platform names from quarantine file are not verified
* :github:`43435` - Bluetooth: controller: llcp: failing EBQ and Harmony tests
* :github:`43335` - Automatic Automated Backports?
* :github:`43246` - Bluetooth: Host: Deadlock with Mesh and Ext Adv on native_posix
* :github:`43245` - GitHub settings: Update topics
* :github:`43202` - LE Audio: Avoid hardcoding context type for LC3 macros
* :github:`43135` - stm32: uart: Support for wakeup from stop
* :github:`43130` - STM32WL ADC idles / doesn't work
* :github:`43124` - twister: Create pytest-based PoC for twister v2
* :github:`43115` - Data corruption in STM32 SPI driver in Slave Mode
* :github:`43103` - LwM2M library should use JSON library for parsing
* :github:`42890` - Bluetooth: Controller: Periodic Advertising: AD data fragmentation
* :github:`42889` - Bluetooth: Controller: Extended Advertising: AD data fragmentation
* :github:`42885` - Bluetooth: Controller: Group auxiliary PDU transmissions
* :github:`42842` - BBRAM API is missing a documentation reference page
* :github:`42700` - Support module.yml in zephyr repo
* :github:`42684` - New LLCP handling of Preferred PHY (default tx/rx phy) needs a review
* :github:`42649` - bt_ots_client_unregister()
* :github:`42629` - stm32g0: Device hang/hard fault with AT45 + ``CONFIG_PM_DEVICE``
* :github:`42574` - i2c: No support for bus recovery imx.rt and or timeout on bus busy
* :github:`42522` - LE Audio: Immediate alert service
* :github:`42472` - ztest: add support for assumptions
* :github:`42450` - cmake: dts.cmake: Add Board overlays before shields
* :github:`42420` - mgmt/mcumgr/lib: Async image erase command with status check
* :github:`42356` - Repo size - board documentation - large PNGs
* :github:`42341` - LE Audio: CSIS Ordered Access procedure use rank
* :github:`42324` - mgmt/mcumgr/lib: Move to direct use of net_buf
* :github:`42277` - Zephyr Docs on West need to be updated to include SBOM generation
* :github:`42208` - tests/subsys/logging/log_api/ fails qemu_leon3 if ptr_in_rodata() is enabled for SPARC
* :github:`42197` - Bluetooth: Controller: llcp: No disconnect if remote does not response for initiated control procedure
* :github:`42134` - TLS handshake error using DTLS on updatehub
* :github:`42102` - doc: searches for sys_reboot() are inconsistent
* :github:`41954` - Bluetooth: Controller: BIS: Event timing calculations
* :github:`41922` - Bluetooth: Controller: ISOAL: TX: Implement SDU Fragmentation into Unframed PDUs
* :github:`41880` - Strict test ordering in new ztest API
* :github:`41776` - LLVM: support -fuse-ld=lld linker on qemu_x86.
* :github:`41772` - stm32: G0: adc: Add support for VBAT internal channel
* :github:`41711` - LE Audio: CAP Acceptor Implementation
* :github:`41355` - Bluetooth: API to determine if notification over EATT is possible
* :github:`41286` - Bluetooth SDP: When the SDP attribute length is greater than SDP_MTU, the attribute is discarded
* :github:`41281` - Style Requirements Seem to Be Inconsistent with Uncrustify Configuration
* :github:`41224` - LE Audio: Telephony and Media Audio Profile (TMAP)
* :github:`41217` - LE Audio: Support for a minimum CCP client
* :github:`41214` - LE Audio: Add public API to CCP/TBS
* :github:`41211` - LE Audio: BASS support for multiple connection
* :github:`41208` - LE Audio: BASS use multi-characteristic macro for receive states
* :github:`41205` - OTS: Debug metadata output
* :github:`41204` - LE Audio: BASS read long
* :github:`41203` - LE Audio: BASS write long
* :github:`41199` - LE Audio: Media API with one call per command, rather than sending opcodes
* :github:`41197` - LE Audio: Use BT_MEDIA_PROXY values instead of BT_MCS
* :github:`41193` - LE Audio: Couple IN audio stream with an OUT audio stream
* :github:`40933` - mgmt/mcumgr/lib: Divide the lib Kconfig into sub-Kconfigs dedicated to specific mgmt cmd group
* :github:`40893` - mgmt/mcumg/lib: Encode shell command execution result in additional field of response
* :github:`40855` - mgmt/mcumgr/lib: Add optional image/slot parameter to "image erase" mcumgr request command
* :github:`40854` - mgmt/mcumgr/lib: Extend taskstat response with "runtime" statistics
* :github:`40827` - Tensorflow example not working in zephyr v2.6
* :github:`40664` - Bluetooth: GATT: EATT:  Multiple notify feature not utilize new PDU fully
* :github:`40444` - Late C++ constructor initialization on native posix boards
* :github:`40389` - Inconsistent use of CMake / environment variables
* :github:`40309` - Multi-image support for MCUboot
* :github:`40146` - On the status of DT-defined regions and MPU
* :github:`39888` - STM32L4: usb-hid: regression in hal 1.17.0
* :github:`39491` - Add a hal module for Nuclei RISC-V core (NMSIS)
* :github:`39486` - Improve emulator APIs for testing
* :github:`39347` - Static object constructors do not execute on the NATIVE_POSIX_64 target
* :github:`39153` - Improve ztest test suites (setup/teardown/before/after + OOD)
* :github:`39037` - CivetWeb samples fail to build with CONFIG_NEWLIB_LIBC
* :github:`38727` - [RFC] Add hal_gigadevice to support GigaDevice SoC Vendor
* :github:`38654` - drivers: modem: bg9x: Has no means to update size of received packet.
* :github:`38613` - BLE connection parameters updated with inconsistent values
* :github:`38544` - drivers: wifi: esWIFI: Regression due to 35815
* :github:`38494` - Flooded logs when using CDC_ACM as back-end
* :github:`38336` - Bluetooth: Host: separate authentication callbacks for each identity
* :github:`37883` - Mesh Bluetooth Sample not working with P-NUCLEO-WB55RG
* :github:`37704` - hello world doesn't work on qemu_arc_em when CONFIG_ISR_STACK_SIZE=1048510
* :github:`37212` - improve docs with diagram for boot flow of ACRN on x86 ehl_crb
* :github:`36819` - qemu_leon3 samples/subsys/portability/cmsis_rtos_v2 samples failing
* :github:`36644` - Toolchain C++ headers can be included when libstdc++ is not selected
* :github:`36476` - Add intel HAL support
* :github:`36084` - Arduino Nano 33 BLE: USB gets disconnected after flashing
* :github:`36026` - wolfssl / wolfcrypt
* :github:`35931` - Bluetooth: controller: Assertion in ull_master.c
* :github:`35816` - timer: STM32: using hw timer for counting and interrupt callback
* :github:`35778` - pwm : STM32: Timer handling interrupt callback handling
* :github:`35762` - SAMPLES: shell_module gives no console output on qemu_leon3
* :github:`35719` - WiFi Management expects networking to be offloaded
* :github:`35512` - OpenThread can't find TRNG driver on nRF5340
* :github:`34927` - Add error check to twister if set of platforms between platform_allow and integration_platforms is empty
* :github:`34600` - Bluetooth: L2CAP: Deadlock when there are no free buffers while transmitting on multiple channels
* :github:`34571` - Twister mark successfully passed tests as failed
* :github:`34438` - CivetWeb sample only supports HTTP, Zephyr lacks TLS support
* :github:`34413` - Improve __used attribute to actually keep requested function/variable
* :github:`34227` - Use compile time resolved device bindings in flash map, when possible
* :github:`34226` - Compile error when building civetweb samples for posix_native
* :github:`34190` - Newbie: Simple C++ List App Builds for QEMU but not Native Posix Emulation
* :github:`33876` - Lora sender sample build error for esp32
* :github:`33865` - Bluetooth: iso_server security is not applied
* :github:`33725` - Modularisation and Restructuring of Documentation
* :github:`33627` - Provide alternative nvs_init that will take const struct ``*device`` instead of device name
* :github:`33520` - Update module civetweb (bug fixes and increased stack size requirement)
* :github:`33339` - API/functions to get remaining free heap size
* :github:`33185` - TCP traffic with IPSP sample not working on 96Boards Nitrogen
* :github:`33015` - spi_nor driver: SPI_NOR_IDLE_IN_DPD breaks SPI_NOR_SFDP_RUNTIME
* :github:`32665` - Bluetooth: controller: inclusion of vendor data type and function overrides provided by vendor LLL
* :github:`32608` - Revert practice of removing devicetree labels
* :github:`32516` - RFC: 1-Wire driver
* :github:`32197` - arch_switch() on SPARC isn't quite right
* :github:`31290` - dts: arm: st: standardize pwm default property st,prescaler to 0
* :github:`31208` - Bluetooth Mesh CCM Hardware Acceleration
* :github:`31175` - STM32F1 RTC
* :github:`30694` - Some boards enable non-minimal peripherals by default
* :github:`30505` - Rework pipe_api test for coverage
* :github:`30365` - TCP2 does not implement Nagle algorithm
* :github:`29866` - Drivers/PCIE: read/write 8/16/32 bit word to an endpoint's configuration space
* :github:`28145` - nRF52840 Dongle cannot scan LE Coded PHY devices
* :github:`27997` - Errors in copy paste lengthy script into Shell Console
* :github:`27975` - [Thingy52_nrf52832 board] - Working with other led than led0
* :github:`27735` - Enable DT-based sanity-check test filtering
* :github:`27585` - investigate using the interrupt stack for the idle thread
* :github:`27511` - coverage: qemu platforms: sanitycheck generates many ``unexpected eof`` failures when enable coverage
* :github:`27033` - Update terminology related to I2C
* :github:`26938` - gpio: api to query pin configuration
* :github:`26179` - devicetree: Missing support of unquoted strings
* :github:`25442` - Does Zephyr support USB host mode ?
* :github:`25382` - devicetree: Add ranges property support for PCIe node
* :github:`24457` - Common Trace Format - Failed to produce correct trace output
* :github:`24373` - NULL-pointer dereferencing in GATT when master connection fails
* :github:`23893` - server to client ble coms: two characteristics with notifications failing to notify the right characteristics at the client
* :github:`23302` - Poor TCP performance
* :github:`23165` - macOS setup fails to build for lack of "elftools" Python package
* :github:`23111` - drivers:usb:device:sam0:  Descriptor tables are filled with zeros in attach()
* :github:`23032` - Need help to enable Sub-GHz for ieee802154_cc13xx_cc26xx
* :github:`22208` - gpio: clean up debounce configuration
* :github:`22079` - Add reception channel information to advertise_report
* :github:`21980` - Doesn't Install on Raspberry Pi
* :github:`21234` - drivers: usb_dc_sam0: usb detach and reattach does not work
* :github:`19979` - Implement Cortex-R floating-point support
* :github:`19244` - BLE throughput of DFU by Mcumgr is too slow
* :github:`18551` - address-of-temporary idiom not allowed in C++
* :github:`16683` - [RFC] Missing parts of libc required for CivetWeb
* :github:`16674` - Checkpatch generates incorrect warning for __DEPRECATED_MACRO
* :github:`15591` - Add STM32 LCD-TFT Display Controller (LTDC) Driver
* :github:`15429` - shields: improve cmake to define/extract pinmux and defconfig info
* :github:`15256` - Link Layer Control Procedure overhaul
* :github:`15214` - Enforce correct compilers in boilerplate.cmake
* :github:`14527` - [wip] Generic support for out-of-tree drivers
* :github:`14068` - Allow better control on SPI pin settings
* :github:`13662` - samples/subsys/usb/cdc_acm: Stuck at "Wait for DTR"
* :github:`13639` - Use dirsync for doxygen directory syncing
* :github:`13519` - BLE Split Link Layer Improvements
* :github:`13196` - LwM2M: support Access Control objects (object id 2)
* :github:`12272` - SD/MMC interface support
* :github:`12191` - Nested interrupt test has very poor coverage
* :github:`11975` - Logging subsystem doesn't work with prink char_out functions
* :github:`11918` - Runtime pin configuration
* :github:`11636` - Generic GPIO reset driver
* :github:`10938` - Standardize labels (string device names) used for device binding
* :github:`10516` - Migrate drivers to Devicetree
* :github:`10512` - Console, logger, shell architecure
* :github:`8945` - Explore baselibc as a replacement for minimal libc
* :github:`8497` - Need a "monitor" spin-for-ISR API
* :github:`8496` - Need a "lock" wrapper around k_sem
* :github:`8139` - Driver for BMA400 accelerometer
* :github:`7876` - net: tcp: Zero Window Probes are not supported/handled properly
* :github:`7516` - Support binary blobs / libraries and glue code in vanilla upstream Zephyr
* :github:`6498` - Kernel high-resolution timer support
* :github:`5408` - Improve docs & samples on device tree overlay
* :github:`1392` - No module named 'elftools'
* :github:`2170` - I2C fail to read GY2561 sensor when GY2561 & GY271 sensor are attached to I2C bus.
