:orphan:

.. _zephyr_3.1:

Zephyr 3.1.0
############

The following sections provide detailed lists of changes by component.

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

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

* All Zephyr public headers have been moved to ``include/zephyr``, meaning they
  need to be prefixed with ``<zephyr/...>`` when included. Because this change
  can potentially break many applications or libraries,
  :kconfig:option:`CONFIG_LEGACY_INCLUDE_PATH` is provided to allow using the
  old include path. This option is now enabled by default to allow a smooth
  transition. In order to facilitate the migration to the new include prefix, a
  script to automate the process is also provided:
  :zephyr_file:`scripts/utils/migrate_includes.py`.

* LoRaWAN: The message type parameter in :c:func:`lorawan_send` was changed
  from ``uint8_t`` to ``enum lorawan_message_type``. If ``0`` was passed for
  unconfirmed message, this has to be changed to ``LORAWAN_MSG_UNCONFIRMED``.
* 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`.

* Disk Subsystem: SPI mode SD cards now use the SD subsystem to communicate
  with SD cards. See :ref:`the disk access api <disk_access_api>` for an
  example of the new devicetree binding format required.

* Kconfig preprocessor function ``dt_nodelabel_has_compat`` was redefined, for
  consistency with the ``dt_nodelabel_has_prop`` function and devicetree macros
  like :c:func:`DT_NODE_HAS_COMPAT`. Now the function does not take into account
  the status of the checked node. Its former functionality is provided by the
  newly introduced ``dt_nodelabel_enabled_with_compat`` function.

* CAN

  * Added ``const struct device`` parameter to the following CAN callback function signatures:

    * ``can_tx_callback_t``
    * ``can_rx_callback_t``
    * ``can_state_change_callback_t``

  * Allow calling the following CAN API functions from userspace:

    * :c:func:`can_set_mode()`
    * :c:func:`can_calc_timing()`
    * :c:func:`can_calc_timing_data()`
    * :c:func:`can_set_bitrate()`
    * :c:func:`can_get_max_filters()`

  * Changed :c:func:`can_set_bitrate()` to use a sample point of 75.0% for bitrates over 800 kbit/s,
    80.0% for bitrates over 500 kbit/s, and 87.5% for all other bitrates.

  * Split CAN classic and CAN-FD APIs:

    * :c:func:`can_set_timing()` split into :c:func:`can_set_timing()` and
      :c:func:`can_set_timing_data()`.
    * :c:func:`can_set_bitrate()` split into :c:func:`can_set_bitrate()` and
      :c:func:`can_set_bitrate_data()`.

  * Converted the ``enum can_mode`` into a ``can_mode_t`` bitfield and renamed the CAN mode
    definitions:

    * ``CAN_NORMAL_MODE`` renamed to :c:macro:`CAN_MODE_NORMAL`.
    * ``CAN_SILENT_MODE`` renamed to :c:macro:`CAN_MODE_LISTENONLY`.
    * ``CAN_LOOPBACK_MODE`` renamed to :c:macro:`CAN_MODE_LOOPBACK`.
    * The previous ``CAN_SILENT_LOOPBACK_MODE`` can be set using the bitmask ``(CAN_MODE_LISTENONLY |
      CAN_MODE_LOOPBACK)``.

  * STM32H7: :kconfig:option:`CONFIG_NOCACHE_MEMORY` is no longer responsible for disabling
    data cache when defined. Use ``CONFIG_DCACHE=n`` instead.

  * Converted the STM32F1 pin nodes configuration names to include remap information (in
    cases other than NO_REMAP/REMAP_0)
    For instance:

    * ``i2c1_scl_pb8`` renamed to ``i2c1_scl_remap1_pb8``

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

* STM32F1 Serial wire JTAG configuration (SWJ CFG) configuration choice
  was moved from Kconfig to :ref:`devicetree <dt-guide>`.
  See the :dtcompatible:`st,stm32f1-pinctrl` devicetree binding for more information.
  As a consequence, the following Kconfig symbols were removed:

  * ``CONFIG_GPIO_STM32_SWJ_ENABLE``
  * ``CONFIG_GPIO_STM32_SWJ_NONJTRST``
  * ``CONFIG_GPIO_STM32_SWJ_NOJTAG``
  * ``CONFIG_GPIO_STM32_SWJ_DISABLE``

* Removed experimental 6LoCAN protocol support.

* Removed the following deprecated CAN APIs:

  * Custom CAN error codes
  * ``can_configure()``
  * ``can_attach_workq()``
  * ``can_attach_isr()``
  * ``can_attach_msgq()``
  * ``can_detach()``
  * ``can_register_state_change_isr()``
  * ``can_write()``

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

* :c:func:`nvs_init` is deprecated in favor of utilizing :c:func:`nvs_mount`.
* :c:func:`lwm2m_engine_set_res_data` is deprecated in favor of :c:func:`lwm2m_engine_set_res_buf`
* :c:func:`lwm2m_engine_get_res_data` is deprecated in favor of :c:func:`lwm2m_engine_get_res_buf`
* The TinyCBOR module has been deprecated in favor of the new zcbor CBOR
  library, included with Zephyr in this release.

* GPIO

  * Deprecated the ``GPIO_INT_DEBOUNCE`` flag and the ``GPIO_DS_*`` and
    ``GPIO_VOLTAGE_*`` groups of flags. Controller/SoC specific flags
    should now be used instead.

* SPI

  * Deprecated the ``gpio_dev``, ``gpio_pin``, and ``gpio_dt_flags`` members in
    struct :c:struct:`spi_cs_control` in favor of a new struct
    :c:struct:`gpio_dt_spec` member named ``gpio``.

* PWM

  * The ``pin`` prefix has been removed from all PWM API calls. So for example,
    ``pwm_pin_set_cycles`` is now ``pwm_set_cycles``. The old API calls are
    still provided, but are now deprecated.
  * PWM periods are now always set in nanoseconds, so ``_nsec`` and ``_usec``
    set functions such as ``pwm_pin_set_nsec()`` and ``pwm_pin_set_usec()``
    have been deprecated. Other units can be specified using, e.g.
    ``PWM_USEC()`` macros, which convert other units to nanoseconds.

* Utilities

  * :c:macro:`UTIL_LISTIFY` has been deprecated. Use :c:macro:`LISTIFY` instead.

* Mesh

  * The following functions related to the Bluetooth Mesh Health Client model:

    * :c:func:`bt_mesh_health_fault_get()` replace with :c:func:`bt_mesh_health_cli_fault_get()`
    * :c:func:`bt_mesh_health_fault_clear()` replace with :c:func:`bt_mesh_health_cli_fault_clear()`
    * :c:func:`bt_mesh_health_fault_clear_unack()` replace with :c:func:`bt_mesh_health_cli_fault_clear_unack()`
    * :c:func:`bt_mesh_health_fault_test()` replace with :c:func:`bt_mesh_health_cli_fault_test()`
    * :c:func:`bt_mesh_health_fault_test_unack()` replace with :c:func:`bt_mesh_health_cli_fault_test_unack()`
    * :c:func:`bt_mesh_health_period_get()` replace with :c:func:`bt_mesh_health_cli_period_get()`
    * :c:func:`bt_mesh_health_period_set()` replace with :c:func:`bt_mesh_health_cli_period_set()`
    * :c:func:`bt_mesh_health_period_set_unack()` replace with :c:func:`bt_mesh_health_cli_period_set_unack()`
    * :c:func:`bt_mesh_health_attention_get()` replace with :c:func:`bt_mesh_health_cli_attention_get()`
    * :c:func:`bt_mesh_health_attention_set()` replace with :c:func:`bt_mesh_health_cli_attention_set()`
    * :c:func:`bt_mesh_health_attention_set_unack()` replace with :c:func:`bt_mesh_health_cli_attention_set_unack()`

  * The following function related to the Bluetooth Mesh Health Server model:

    * :c:func:`bt_mesh_fault_update()` replace with :c:func:`bt_mesh_health_srv_fault_update()`

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

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

* Util

  * Added :c:macro:`IN_RANGE` for checking if a value is in the range of two
    other values.

* SDHC API

  * Added the :ref:`SDHC api <sdhc_api>`, used to interact with SD host controllers.

* MIPI-DSI

  * Added a :ref:`MIPI-DSI api <mipi_dsi_api>`. This is an experimental API,
    some of the features/APIs will be implemented later.

* CAN

  * Added support for getting the minimum/maximum supported CAN timing parameters:

    * :c:func:`can_get_timing_min()`
    * :c:func:`can_get_timing_max()`
    * :c:func:`can_get_timing_data_min()`
    * :c:func:`can_get_timing_data_max()`

  * Added support for enabling/disabling CAN-FD mode at runtime using :c:macro:`CAN_MODE_FD`.

Bluetooth
*********

* Extended and Periodic advertising are no longer experimental
* Direction Finding is no longer experimental
* Added support for disabling Bluetooth, including a new ``bt_disable()`` API
  call

* Audio

  * Changed the implementation of PACS to indicate instead of notifying
  * Added support for the Broadcast Audio Scan Service (BASS)
  * Added support for the Hearing Access Service (HAS)
  * Added support for the Telephone Bearer Service (TBS)

* Direction Finding

  * Added sampling and switching offset configuration

* Mesh

  * Added support for Proxy Client
  * Added support for Provisioners over PB-GATT
  * Added a new heartbeat publication callback option

* Controller

  * Added support for the full ISO TX data path, including ISOAL
  * Added support for ISO Broadcast Channel Map Update
  * Added support for ISO Synchronized Receiver Channel Map Update
  * The new implementation of LL Control Procedures is now the default whenever
    Direction Finding is enabled
  * Added support for all missing v3 and v4 DTM commands
  * Implemented ISO-AL TX unframed fragmentation
  * Added support for back-to-back receiving of PDUs on nRF5x platforms
  * Increased the maximum number of simultaneous connections to 250

* HCI Driver

  * Added support for a new optional :c:member:`bt_hci_driver.close` API which
    closes HCI transport.
  * Implemented :c:member:`bt_hci_driver.close` on stm32wb HCI driver.

* Host

  * The :c:enum:`bt_l2cap_chan_state` values ``BT_L2CAP_CONNECT`` and
    ``BT_L2CAP_DISCONNECT`` have been renamed to ``BT_L2CAP_CONNECTING`` and
    ``BT_L2CAP_DISCONNECTING`` respectively.

  * The callbacks :c:func:`pairing_complete`, :c:func:`pairing_failed`, and
    :c:func:`bond_delete` have been moved from struct :c:struct:`bt_auth_cb` to a
    newly created informational-only callback struct :c:struct:`bt_conn_auth_info_cb`.

  * :c:func:`bt_conn_index` now takes a ``const struct bt_conn*`` argument.

  * The :c:struct:`bt_gatt_subscribe_params` structure's ``write`` callback
    function has been deprecated.  Use the new ``subscribe`` callback
    instead.

  * :c:func:`bt_disable` was added to enable the caller to disable the Bluetooth stack.

  * Added new Kconfig options to select ISO Central and Peripheral role support
    separately

  * Added a new :c:func:`bt_get_appearance()` API call

  * Implemented support for dynamic appearance, including a new
    :c:func:`bt_set_appearance()` API call

  * Implemented support for L2CAP collision mitigation

  * Changed the scheduling of auto-initiated HCI commands so that they execute
    synchronously

  * Added a new :c:func:`bt_is_ready()` API call to find out if Bluetooth is
    currently enabled and initialized

  * Added support for automatic MTU exchange right after a connection is
    established

  * Created a new :c:struct:`bt_conn_auth_info_cb` to group the
    security-related callbacks under a single struct

  * Optimized the memory usage of the Object Transfer Service

  * Added a new :c:func:`bt_hci_le_rand()` API call to obtain a random number
    from the LE Controller

  * Added a new public API to connect EATT channels, :c:func:`bt_eatt_connect()`

  * Optimized L2CAP channels resource usage when not using dynamic channels

  * Added the ability to run the Bluetooth RX context from a workqueue, in order
    to optimize RAM usage. See :kconfig:option:`CONFIG_BT_RECV_CONTEXT`.

  * Added support for TX complete callback on EATT channels

  * Corrected the calling of the MTU callback to happen on any reconfiguration

Kernel
******

* Aborting an essential thread now causes a kernel panic, as the
  documentation has always promised but the kernel has never
  implemented.

* The k_timer handler can now correct itself for lost time due to very
  late-arriving interrupts.

* SMP interprocessor interrupts are deferred so that they are sent only at
  schedule points, and not synchronously when the scheduler state
  changes.  This prevents IPI "storms" with code that does many
  scheduler operations at once (e.g. waking up a bunch of threads).

* The timeslicing API now allows slice times to be controlled
  independently for each thread, and provides a callback to the app
  when a thread timeslice has expired.  The intent is that this will
  allow apps the tools to implement CPU resource control algorithms
  (e.g. fairness or interactivity metrics, budget tracking) that are
  out of scope for Zephyr's deterministic RTOS scheduler.

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

* ARC

  * Added ARCv3 32 bit (HS5x) support - both GNU and MWDT toolchains, both UP and SMP
  * Worked around debug_select interference with MDB debugger
  * Switched to hs6x mcpu usage (GNU toolchain) for HS6x

* ARM

  * AARCH32

    * Added Cortex-R floating point support

  * AARCH64

    * Added support for GICv3 for the ARMv8 Xen Virtual Machine
    * Fixed SMP boot code to take into account multiple cores booting at the same time
    * Added more memory mapping types for device memory
    * Simplified and optimize switching and user mode transition code
    * Added support for CONFIG_IRQ_OFFLOAD_NESTED
    * Fixed booting issue with FVP V8R >= 11.16.16
    * Switched to the IRQ stack during ISR execution

* Xtensa

  * Optimized context switches when KERNEL_COHERENCE is enabled to
    avoid needless stack invalidations for threads that have not
    migrated between CPUs.

  * Fixed a bug that could return directly into a thread context from a
    nested interrupt instead of properly returning to the preempted
    ISR.

* x64_64

  * UEFI devices can now use the firmware-initialized system console
    API as a printk/logging backend, simplifying platform bringup on
    devices without known-working serial port configurations.

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

* Added support for these SoC series:

  * STM32H725/STM32H730/STM32H73B SoC variants

* Made these changes in other SoC series:

  * Added Atmel SAM UPLL clock support
  * Raspberry Pi Pico: Added HWINFO support
  * Raspberry Pi Pico: Added I2C support
  * Raspberry Pi Pico: Added reset controller support
  * Raspberry Pi Pico: Added USB support

* Changes for ARC boards:

  * Added nsim_hs5x and nsim_hs5x_smp boards with ARCv3 32bit HS5x CPU
  * Added MWDT toolchain support for nsim_hs6x and nsim_hs6x_smp
  * Overhauled memory layout for nSIM boards. Added a mechanism to switch between
    ICCM/DCCM memory layout and flat memory layout (i.e DDR).
  * Did required platform setup so nsim_hs5x, nsim_hs5x_smp, nsim_hs6x, nsim_hs6x_smp
    can be run on real HW (HAPS FPGA) with minimum additional configuration
  * Enabled MWDT toolchain support for hsdk_2cores board
  * Adjusted test duration for SMP nSIM boards with timeout_multiplier

* Added support for these ARM boards:

  * b_g474e_dpow1
  * stm32f401_mini

* Added support for these ARM64 boards:

  * NXP i.MX8MP EVK (i.MX8M Plus LPDDR4 EVK board)
  * NXP i.MX8MM EVK (i.MX8M Mini LPDDR4 EVK board)

* Added support for these RISC-V boards:

  * GigaDevice GD32VF103C-EVAL

* Made these changes in other boards:

  * sam4s_xplained: Added support for HWINFO
  * sam_e70_xlained: Added support for HWINFO and CAN-FD
  * sam_v71_xult: Added support for HWINFO and CAN-FD
  * gd32e103v_eval: Added prescaler to timer
  * longan_nano: Added support for TF-Card slot

* Added support for these following shields:

  * Keyestudio CAN-BUS Shield (KS0411)
  * MikroElektronika WIFI and BLE Shield
  * X-NUCLEO-53L0A1 ranging and gesture detection sensor expansion board

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

* ADC

  * Atmel SAM0: Fixed adc voltage reference
  * STM32: Added support for :c:enumerator:`adc_reference.ADC_REF_INTERNAL`.
  * Added the :c:struct:`adc_dt_spec` structure and associated helper macros,
    e.g. :c:macro:`ADC_DT_SPEC_GET`, to facilitate getting configuration of
    ADC channels from devicetree nodes.

* CAN

  * Switched from transmitting CAN frames in FIFO/chronological order to transmitting according to
    CAN-ID priority (NXP FlexCAN, ST STM32 bxCAN, Bosch M_CAN, Microchip MCP2515).
  * Added support for ST STM32U5 to the ST STM32 FDCAN driver.
  * Renamed the base Bosch M_CAN devicetree binding compatible from ``bosch,m-can-base`` to
    :dtcompatible:`bosch,m_can-base`.
  * Added CAN controller statistics support (NXP FlexCAN, Renesas R-Car, ST STM32 bxCAN).
  * Added CAN transceiver support.
  * Added generic SocketCAN network interface and removed driver-specific implementations.

* Clock_control

  * STM32: Driver was cleaned up and overhauled for easier maintenance with a deeper integration
    of device tree inputs. Driver now takes into account individual activation of clock sources
    (High/Medium/Low Internal/external speed clocks, PLLs, ...)
  * STM32: Additionally to above change it is now possible for clock consumers to select an alternate
    source clock (Eg: LSE) by adding it to its 'clocks' property and then configure it using new
    clock_control_configure() API.
    See :dtcompatible:`st,stm32-rcc`, :dtcompatible:`st,stm32h7-rcc` and :dtcompatible:`st,stm32u5-rcc`
    for more information.

* Counter

  * Added driver for NXP QTMR.

* DAC

  * Added support for STM32F1 SoCs to the STM32 DAC driver.

* Disk

  * Added a generic SDMMC disk driver, that uses the SD subsystem to interact with
    disk devices. This disk driver will be used with any disk device declared
    with the ``zephyr,sdmmc-disk`` compatible string.

* Display

  * STM32: Added basic support for LTDC driver. Currently supported on F4, F7, H7, L4+
    and MP1 series.

* DMA

  * Added a scatter gather test for DMAs that support it
  * Cleanly shared Synopsis DW-DMA driver and Intel cAVS GPDMA driver code.
  * Added support for Synposis DW-DMA transfer lists.
  * Added support for Intel HDA for audio device and host streams.
  * Fixes for NXP eDMA to pass scatter gather tests

* Entropy

  * STM32: Prevented the core from entering stop modes during entropy operations.

* Ethernet

  * eth_native_posix: Added support for setting MAC address.
  * eth_stm32_hal: Fixed a bug which caused a segfault in case of a failed RX
    buffer allocation.
  * eth_mcux: Added support for resetting PHY.
  * eth_liteeth: Refactored driver to use LiteX HAL.
  * eth_w5500: Fixed possible deadlock due to incorrect IRQ processing.

* Flash

  * Added STM32 OCTOSPI driver. Initial support is provided for L5 and U5
    series. Interrupt driven mode. Supports 1 and 8 lines in Single or Dual
    Transfer Modes.
  * STM32L5: Added support for Single Bank.
  * STM32 QSPI driver was extended with QER (SFDP, DTS), custom quad write opcode
    and 1-1-4 read mode.
  * Added support for STM32U5 series.

* GPIO

  * Refactored GPIO devicetree flags. The upper 8 bits of ``gpio_dt_flags_t``
    are now reserved for controller/SoC specific flags. Certain
    hardware-specific flags previously defined as common configuration (IO
    voltage level, drive strength, and debounce filter) were replaced with ones
    defined in this controller/SoC specific space.
  * Added Xilinx PS MIO/EMIO GPIO controller driver.
  * Extended the NXP PCA95XX driver to support also PCAL95XX.

* HWINFO

  * Atmel SAM: Added RSTC support
  * Raspberry Pi Pico: Added Unique ID and reset cause driver

* I2C

  * Added arbitrary I2C clock speed support with :c:macro:`I2C_SPEED_DT`
  * NXP flexcomm now supports target (slave) mode
  * Fixed Atmel SAM/SAM0 exclusive bus access
  * Added ITE support

* I2S

  * Ported I2S drivers to pinctrl.
  * Fixed multiple bugs in the NXP I2S (SAI) driver, including problems with
    DMA transmission and FIFO under/overruns.

* MEMC

  * STM32: Extended FMC driver to support NOR/PSRAM. See :dtcompatible:`st,stm32-fmc-nor-psram.yaml`.

* Pin control

  * Platform support was added for:

    * Atmel SAM/SAM0
    * Espressif ESP32
    * ITE IT8XXX2
    * Microchip XEC
    * Nordic nRF (completed support)
    * Nuvoton NPCX Embedded Controller (EC)
    * NXP iMX
    * NXP Kinetis
    * NXP LPC
    * RV32M1
    * SiFive Freedom
    * Telink B91
    * TI CC13XX/CC26XX

  * STM32: It is now possible to configure plain GPIO pins using the pinctrl API.
    See :dtcompatible:`st,stm32-pinctrl` and :dtcompatible:`st,stm32f1-pinctrl` for
    more information.

* PWM

  * Added :c:struct:`pwm_dt_spec` and associated helpers, e.g.
    :c:macro:`PWM_DT_SPEC_GET` or :c:func:`pwm_set_dt`. This addition makes it
    easier to use the PWM API when the PWM channel, period and flags are taken
    from a devicetree PWM cell.
  * STM32: Enabled complementary output for timer channel. A PWM consumer can now use
    :c:macro:`PWM_STM32_COMPLEMENTARY` to specify that PWM output should happen on a
    complementary channel pincfg (eg:``tim1_ch2n_pb14``).
  * STM32: Added counter mode support. See :dtcompatible:`st,stm32-timers`.
  * Aligned nRF PWM drivers (pwm_nrfx and pwm_nrf5_sw) with the updated PWM API.
    In particular, this means that the :c:func:`pwm_set` and
    :c:func:`pwm_set_cycles` functions need to be called with a PWM channel
    as a parameter, not with a pin number like it was for the deprecated
    ``pwm_pin_set_*`` functions. Also, the ``flags`` parameter is now supported
    by the drivers, so either the :c:macro:`PWM_POLARITY_INVERTED` or
    :c:macro:`PWM_POLARITY_NORMAL` flag must be provided in each call.

* Reset

  * Added reset controller driver API.
  * Raspberry Pi Pico: Added reset controller driver

* Sensor

  * Added NCPX ADC comparator driver.
  * Enhanced the BME680 driver to support SPI.
  * Enhanced the LIS2DW12 driver to support additional filtering and interrupt
    modes.
  * Added ICM42670 6-axis accelerometer driver.
  * Enhanced the VL53L0X driver to support reprogramming its I2C address.
  * Enhanced the Microchip XEC TACH driver to support pin control and MEC172x.
  * Added ITE IT8XXX2 voltage comparator driver.
  * Fixed register definitions in the LSM6DSL driver.
  * Fixed argument passing bug in the ICM42605 driver.
  * Removed redundant DEV_NAME helpers in various drivers.
  * Enhanced the LIS2DH driver to support device power management.
  * Fixed overflow issue in sensor_value_from_double().
  * Added MAX31875 temperature sensor driver.

* Serial

  * STM32: Added tx/rx pin swap and rx invert / tx invert capabilities.

* SPI

  * Ported all SPI drivers to pinctrl
  * Added support for SPI on the GD32 family

* Timer

  * Ported timer drivers to use pinctrl
  * LiteX: Ported the timer driver to use the HAL

* USB

  * Added RP2040 (Raspberry Pi Pico) USB device controller driver

Networking
**********

* CoAP:

  * Changed :c:struct:`coap_pending` allocation criteria. This now uses a data
    pointer instead of a timestamp, which does not give a 100% guarantee that
    structure is not in use already.

* Ethernet:

  * Added a
    :kconfig:option:`CONFIG_NET_ETHERNET_FORWARD_UNRECOGNISED_ETHERTYPE`
    option, which allows to forward frames with unrecognised EtherType to the
    network stack.

* HTTP:

  * Removed a limitation where the maximum content length was limited up to
    100000 bytes.
  * Fixed ``http_client_req()`` return value. The function now correctly
    reports the number of bytes sent.
  * Clarified the expected behavior in case of empty response from the server.
  * Made use of ``shutdown`` to tear down HTTP connection instead of
    closing the socket from a system work queue.

* LwM2M:

  * Various improvements towards LwM2M 1.1 support:

    * Added LwM2M 1.1 Discovery support.
    * Added attribute handling for Resource Instances.
    * Added support for Send, Read-composite, Write-composite, Observe-composite
      operations.
    * Added new content formats: SenML JSON, CBOR, SenML CBOR.
    * Added v1.1 implementation of core LwM2M objects.

  * Added support for dynamic Resource Instance allocation.
  * Added support for LwM2M Portfolio object (Object ID 16).
  * Added LwM2M shell module.
  * Added option to utilize DTLS session cache in queue mode.
  * Added :c:func:`lwm2m_engine_path_is_observed` API function.
  * Fixed a bug with hostname verification setting, which prevented DTLS
    connection in certain mbedTLS configurations.
  * Fixed a bug which could cause a socket descriptor leak, in case
    :c:func:`lwm2m_rd_client_start` was called immediately after
    :c:func:`lwm2m_rd_client_stop`.
  * Added error reporting from :c:func:`lwm2m_rd_client_start` and
    :c:func:`lwm2m_rd_client_stop`.

* Misc:

  * Added :c:func:`net_if_set_default` function which allows to set a default
    network interface at runtime.
  * Added :kconfig:option:`CONFIG_NET_DEFAULT_IF_UP` option which allows to make the
    first interface which is up the default choice.
  * Fixed packet leak in network shell TCP receive handler.
  * Added :c:func:`net_pkt_rx_clone` which allows to allocated packet from
    correct packet pool when cloning. This is used at the loopback interface.
  * Added :kconfig:option:`CONFIG_NET_LOOPBACK_SIMULATE_PACKET_DROP` option which
    allows to simulate packet drop at the loopback interface. This is used by
    certain test cases.

* MQTT:

  * Removed custom logging macros from MQTT implementation, in favour of the
    common networking logging.

* OpenThread:

  * Updated OpenThread revision up to commit ``130afd9bb6d02f2a07e86b824fb7a79e9fca5fe0``.
  * Implemented ``otPlatCryptoRand`` platform API for OpenThread.
  * Added support for PSA MAC keys.
  * Multiple minor fixes/improvements to align with upstream OpenThread changes.

* Sockets:

  * Added support for ``shutdown()`` function.
  * Fixed ``sendmsg()`` operation when TCP reported full transmission window.
  * Added support for ``getpeername()`` function.
  * Fixed userspace ``accept()`` argument validation.
  * Added support for :c:macro:`SO_SNDBUF` and :c:macro:`SO_RCVBUF` socket
    options.
  * Implemented ``POLLOUT`` reporting from ``poll()`` for STREAM
    sockets.
  * Implemented socket dispatcher for offloaded sockets. This module allows to
    use multiple offloaded socket implementations at the same time.
  * Introduced a common socket priority for offloaded sockets
    (:kconfig:option:`CONFIG_NET_SOCKETS_OFFLOAD_PRIORITY`).
  * Moved socket offloading out of experimental.

* TCP:

  * Implemented receive window handling.
  * Implemented zero-window probe processing and sending.
  * Improved TCP stack throughput over loopback interface.
  * Fixed possible transmission window overflow in case of TCP retransmissions.
    This could led to TX buffer starvation when TCP entered retransmission mode.
  * Updated ``FIN_TIMEOUT`` delay to correctly reflect time needed for
    all FIN packet retransmissions.
  * Added proper error reporting from TCP to upper layers. This solves the
    problem of connection errors being reported to the application as graceful
    connection shutdown.
  * Added a mechanism which allows upper layers to monitor the TCP transmission
    window availability. This allows to improve throughput greatly in low-buffer
    scenarios.

* TLS:

  * Added :c:macro:`TLS_SESSION_CACHE` and :c:macro:`TLS_SESSION_CACHE_PURGE`
    socket options which allow to control session caching on a socket.
  * Fixed :c:macro:`TLS_CIPHERSUITE_LIST` socket option, which did not set the
    cipher list on a socket correctly.

USB
***

* Moved USB device stack code to own directory in preparation for upcoming
  rework of USB support.

Build System
************

* The build system's internals have been completely overhauled for increased
  modularity. This makes it easier to reuse individual components through the
  Zephyr CMake package mechanism.

  With the improved Zephyr CMake package, the following examples are now possible:

  * ``find_package(Zephyr)``: load a standard build system, as before
  * ``find_package(Zephyr COMPONENTS unittest)``: load a specific unittest
    build component
  * ``find_package(Zephyr COMPONENTS dts)``: only load the dts module and its
    direct dependencies
  * ``find_package(Zephyr COMPONENTS extensions west zephyr_module)``: load
    multiple specific modules and their dependencies

  Some use cases that this work intends to enable are:

  * The sysbuild proposal: `Zephyr sysbuild / multi image #40555
    <https://github.com/zephyrproject-rtos/zephyr/pull/40555>`_
  * Running Zephyr CMake configure stages individually. One example is only
    processing the devicetree steps of the build system, while skipping the
    rest. This is a required feature for extending twister to do test case
    filtering based on the devicetree contents without invoking a complete
    CMake configuration.

  For more details, see :zephyr_file:`cmake/package_helper.cmake`.

* A new Zephyr SDK has been created which now supports macOS and Windows in
  addition to Linux platforms.

  For more information, see: https://github.com/zephyrproject-rtos/sdk-ng

Devicetree
**********

* API

  * New macros for creating tokens in C from strings in the devicetree:
    :c:macro:`DT_STRING_UPPER_TOKEN_OR`, :c:macro:`DT_INST_STRING_TOKEN`,
    :c:macro:`DT_INST_STRING_UPPER_TOKEN`,
    :c:macro:`DT_INST_STRING_UPPER_TOKEN_OR`

  * :ref:`devicetree-can-api`: new

* Bindings

  * Several new bindings were created to support :ref:`Pin Control
    <pinctrl-guide>` driver API implementations. This also affected many
    peripheral bindings, which now support ``pinctrl-0``, ``pinctrl-1``, ...,
    and ``pinctrl-names`` properties used to configure peripheral pin
    assignments in different system states, such as active and low-power
    states.

    In some cases, this resulted in the removal of old bindings, or other
    backwards incompatible changes affecting users of the old bindings. These
    changes include:

    * :dtcompatible:`atmel,sam-pinctrl` and :dtcompatible:`atmel,sam0-pinctrl`
      have been adapted to the new pinctrl bindings interface
    * :dtcompatible:`espressif,esp32-pinctrl` has replaced ``espressif,esp32-pinmux``
    * :dtcompatible:`ite,it8xxx2-pinctrl` and
      :dtcompatible:`ite,it8xxx2-pinctrl-func` have replaced
      ``ite,it8xxx2-pinmux`` and ``ite,it8xxx2-pinctrl-conf``
    * :dtcompatible:`microchip,xec-pinctrl`: new
    * :dtcompatible:`nuvoton,npcx-pinctrl`: new
    * :dtcompatible:`nxp,kinetis-pinctrl` has replaced the ``nxp,kinetis-port-pins`` property found in the ``nxp,kinetis-pinmux`` binding.
    * :dtcompatible:`nxp,mcux-rt-pinctrl`,
      :dtcompatible:`nxp,mcux-rt11xx-pinctrl`,
      :dtcompatible:`nxp,lpc-iocon-pinctrl`, :dtcompatible:`nxp,rt-iocon-pinctrl`,
      :dtcompatible:`nxp,lpc11u6x-pinctrl`, :dtcompatible:`nxp,imx7d-pinctrl`,
      :dtcompatible:`nxp,imx8m-pinctrl`, :dtcompatible:`nxp,imx8mp-pinctrl` and
      :dtcompatible:`nxp,imx-iomuxc`: new
    * :dtcompatible:`openisa,rv32m1-pinctrl`: new
    * :dtcompatible:`sifive,pinctrl` has replaced ``sifive,iof``
    * :dtcompatible:`telink,b91-pinctrl` has replaced ``telink,b91-pinmux``
    * :dtcompatible:`ti,cc13xx-cc26xx-pinctrl` has replaced ``ti,cc13xx-cc26xx-pinmux``

  * PWM bindings now generally have ``#pwm-cells`` set to 3, not 2 as it was in
    previous releases. This was done to follow the Linux convention that each
    PWM specifier should contain a channel, period, and flags cell, in that
    order. See pull request `#44523
    <https://github.com/zephyrproject-rtos/zephyr/pull/44523>`_ for more
    details on this change and its purpose.

  * Some bindings had their :ref:`compatible properties <dt-important-props>`
    renamed:

    * :dtcompatible:`nxp,imx-elcdif` has replaced ``fsl,imx6sx-lcdif``
    * :dtcompatible:`nxp,imx-gpr` has replaced ``nxp,imx-pinmux``
    * :dtcompatible:`nordic,nrf-wdt` has replaced ``nordic,nrf-watchdog``
    * :dtcompatible:`bosch,m_can-base` has replaced ``bosch,m-can-base``
    * :dtcompatible:`nxp,imx-usdhc` has replaced ``nxp,imx-sdhc``

  * Bindings with ``resets`` (and optionally ``reset-names``) properties were
    added to support the :ref:`reset_api` API. See the list of new bindings
    below for some examples.

  * The ``zephyr,memory-region-mpu`` property can be set to generate MPU
    regions from devicetree nodes. See commit `b91d21d32c
    <https://github.com/zephyrproject-rtos/zephyr/commit/b91d21d32ccc312558babe2cc363afbe44ea2de2>`_

  * The generic :zephyr_file:`dts/bindings/can/can-controller.yaml` include
    file used for defining CAN controller bindings no longer contains a ``bus:
    yaml`` statement. This was unused in upstream Zephyr; out of tree bindings
    relying on this will need updates.

  * Bindings for ADC controller nodes can now use a child binding to specify
    the initial configuration of individual channels in devicetree. See pull
    request `43030 <https://github.com/zephyrproject-rtos/zephyr/pull/43030>`_
    for details.

  * New bindings for the following compatible properties were added:

    * :dtcompatible:`arduino-nano-header-r3`
    * :dtcompatible:`arm,cortex-r52`
    * :dtcompatible:`atmel,sam-rstc`
    * :dtcompatible:`can-transceiver-gpio` (see also :ref:`devicetree-can-api`)
    * :dtcompatible:`gd,gd32-spi`
    * :dtcompatible:`hynitron,cst816s`
    * :dtcompatible:`intel,cavs-gpdma`
    * :dtcompatible:`intel,cavs-hda-host-in` and :dtcompatible:`intel,cavs-hda-host-out`
    * :dtcompatible:`intel,cavs-hda-link-in` and :dtcompatible:`intel,cavs-hda-link-out`
    * :dtcompatible:`intel,ssp-dai`
    * :dtcompatible:`intel,ssp-sspbase`
    * :dtcompatible:`invensense,icm42670`
    * :dtcompatible:`ite,enhance-i2c`
    * :dtcompatible:`ite,it8xxx2-vcmp`
    * :dtcompatible:`ite,it8xxx2-wuc` and :dtcompatible:`ite,it8xxx2-wuc-map`
    * :dtcompatible:`ite,peci-it8xxx2`
    * :dtcompatible:`maxim,max31875`
    * :dtcompatible:`microchip,cap1203`
    * :dtcompatible:`microchip,mcp4728`
    * :dtcompatible:`microchip,mpfs-qspi`
    * :dtcompatible:`microchip,xec-bbram`
    * :dtcompatible:`motorola,mc146818`
    * :dtcompatible:`nordic,nrf-acl`
    * :dtcompatible:`nordic,nrf-bprot`
    * :dtcompatible:`nordic,nrf-ccm`
    * :dtcompatible:`nordic,nrf-comp`
    * :dtcompatible:`nordic,nrf-ctrlapperi`
    * :dtcompatible:`nordic,nrf-dcnf`
    * :dtcompatible:`nordic,nrf-gpio-forwarder`
    * :dtcompatible:`nordic,nrf-lpcomp`
    * :dtcompatible:`nordic,nrf-mpu`
    * :dtcompatible:`nordic,nrf-mutex`
    * :dtcompatible:`nordic,nrf-mwu`
    * :dtcompatible:`nordic,nrf-nfct`
    * :dtcompatible:`nordic,nrf-oscillators`
    * :dtcompatible:`nordic,nrf-ppi`
    * :dtcompatible:`nordic,nrf-reset`
    * :dtcompatible:`nordic,nrf-swi`
    * :dtcompatible:`nordic,nrf-usbreg`
    * :dtcompatible:`nuvoton,adc-cmp`
    * :dtcompatible:`nxp,imx-mipi-dsi`
    * :dtcompatible:`nxp,imx-qtmr`
    * :dtcompatible:`nxp,imx-tmr`
    * :dtcompatible:`raspberrypi,pico-reset`
    * :dtcompatible:`raspberrypi,pico-usbd`
    * :dtcompatible:`raydium,rm68200`
    * :dtcompatible:`riscv,sifive-e31`, :dtcompatible:`riscv,sifive-e51`,
      and :dtcompatible:`riscv,sifive-s7` CPU bindings
    * :dtcompatible:`seeed,grove-lcd-rgb`
    * :dtcompatible:`st,lsm6dso32`
    * :dtcompatible:`st,stm32-clock-mux`
    * :dtcompatible:`st,stm32-fmc-nor-psram`
    * :dtcompatible:`st,stm32-lse-clock`
    * :dtcompatible:`st,stm32-ltdc`
    * :dtcompatible:`st,stm32-ospi` and :dtcompatible:`st,stm32-ospi-nor`
    * :dtcompatible:`st,stm32h7-fmc`
    * TI ADS ADCs: :dtcompatible:`ti,ads1013`, :dtcompatible:`ti,ads1015`,
      :dtcompatible:`ti,ads1113`, :dtcompatible:`ti,ads1114`,
      :dtcompatible:`ti,ads1115`, :dtcompatible:`ti,ads1014`
    * :dtcompatible:`ti,tlc5971`
    * :dtcompatible:`xlnx,fpga`
    * :dtcompatible:`xlnx,ps-gpio` and :dtcompatible:`xlnx,ps-gpio-bank`
    * :dtcompatible:`zephyr,bt-hci-entropy`
    * :dtcompatible:`zephyr,ipc-icmsg`
    * :dtcompatible:`zephyr,memory-region`
    * :dtcompatible:`zephyr,sdhc-spi-slot`

  * Bindings for the following compatible properties were removed:

    * ``bosch,m-can``
    * ``nxp,imx-usdhc``
    * ``shared-multi-heap``
    * ``snps,creg-gpio-mux-hsdk``
    * ``snps,designware-pwm``
    * ``zephyr,mmc-spi-slot``

  * Numerous other additional properties were added to bindings throughout the tree.

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

* C Library

  * Minimal libc

    * Added ``[U]INT_{FAST,LEAST}N_{MIN,MAX}`` minimum and maximum value
      macros in ``stdint.h``.
    * Added ``PRIx{FAST,LEAST}N`` and ``PRIxMAX`` format specifier macros in
      ``inttypes.h``.
    * Fixed ``gmtime()`` access fault when userspace is enabled and
      ``gmtime()`` is called from a user mode thread. This function can be
      safely called from both kernel and user mode threads.

  * Newlib

    * Fixed access fault when calling the newlib math functions from a user
      mode thread. All ``libm.a`` globals are now placed into the
      ``z_libc_partition`` when userspace is enabled.

* C++ Subsystem

  * Renamed all C++ source and header files to use the ``cpp`` and ``hpp``
    extensions, respectively. All Zephyr upstream C++ source and header files
    are now required to use these extensions.

* Management

  * MCUMGR has been migrated from using TinyCBOR, for CBOR encoding, to zcbor.
  * MCUMGR :kconfig:option:`CONFIG_FS_MGMT_UL_CHUNK_SIZE` and
    :kconfig:option:`CONFIG_IMG_MGMT_UL_CHUNK_SIZE` have been deprecated as,
    with the introduction of zcbor, it is no longer needed to use an intermediate
    buffer to copy data out of CBOR encoded buffer. The file/image chunk size
    is now limited by :kconfig:option:`CONFIG_MCUMGR_BUF_SIZE` minus all the
    other command required variables.
  * Added support for MCUMGR Parameters command, which can be used to obtain
    MCUMGR parameters; :kconfig:option:`CONFIG_OS_MGMT_MCUMGR_PARAMS` enables
    the command.
  * Added mcumgr fs handler for getting file status which returns file size;
    controlled with :kconfig:option:`CONFIG_FS_MGMT_FILE_STATUS`
  * Added mcumgr fs handler for getting file hash/checksum, with support for
    IEEE CRC32 and SHA256, the following Kconfig options have been added to
    control the addition:

    * :kconfig:option:`CONFIG_FS_MGMT_CHECKSUM_HASH` to enable the command;
    * :kconfig:option:`CONFIG_FS_MGMT_CHECKSUM_HASH_CHUNK_SIZE` that sets size
      of buffer (stack memory) used for calculation:

      * :kconfig:option:`CONFIG_FS_MGMT_CHECKSUM_IEEE_CRC32` enables support for
        IEEE CRC32.
      * :kconfig:option:`CONFIG_FS_MGMT_HASH_SHA256` enables SHA256 hash support.
      * When hash/checksum query to mcumgr does not specify a type, then the order
        of preference (most priority) is CRC32 followed by SHA256.

  * Added mcumgr os hook to allow an application to accept or decline a reset
    request; :kconfig:option:`CONFIG_OS_MGMT_RESET_HOOK` enables the callback.
  * Added mcumgr fs hook to allow an application to accept or decline a file
    read/write request; :kconfig:option:`CONFIG_FS_MGMT_FILE_ACCESS_HOOK`
    enables the feature which then needs to be registered by the application.
  * Added supplied image header to mcumgr img upload callback parameter list
    which allows the application to inspect it to determine if it should be
    allowed or declined.
  * Made the ``img_mgmt_vercmp()`` function public to allow application-
    level comparison of image versions.
  * mcumgr will now only return ``MGMT_ERR_ENOMEM`` when it fails to allocate
    a memory buffer for request processing, when previously it would wrongly
    report this error when the SMP response failed to fit into a buffer;
    now when encoding of response fails ``MGMT_ERR_EMSGSIZE`` will be
    reported. This addresses issue :github:`44535`.
  * Added :kconfig:option:`CONFIG_IMG_MGMT_USE_HEAP_FOR_FLASH_IMG_CONTEXT` that
    allows user to select whether the heap will be used for flash image context,
    when heap pool is configured. Previously usage of heap has been implicit,
    with no control from a developer, causing issues reported by :github:`44214`.
    The default, implicit, behaviour has not been kept and the above
    Kconfig option needs to be selected to keep previous behaviour.


* SD Subsystem

  * Added the SD subsystem, which is used by the
    :ref:`disk access api <disk_access_api>` to interact with connected SD cards.
    This subsystem uses the :ref:`SDHC api <sdhc_api>` to interact with the SD
    host controller the SD device is connected to.

* Power management

  * Added :kconfig:option:`CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC`.
    This option enables support for dynamically bind devices to a Power Domain. The
    memory required to dynamically bind devices is pre-allocated at build time and
    is based on the number of devices set in
    :kconfig:option:`CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC_NUM`. The API introduced
    to use this feature are:

    * :c:func:`pm_device_power_domain_add()`
    * :c:func:`pm_device_power_domain_remove()`

  * The default policy was renamed from ``PM_POLICY_RESIDENCY`` to
    ``PM_POLICY_DEFAULT``, and ``PM_POLICY_APP`` was renamed to
    ``PM_POLICY_CUSTOM``.

  * The following functions were renamed:

    * :c:func:`pm_power_state_next_get()` is now :c:func:`pm_state_next_get()`
    * :c:func:`pm_power_state_force()` is now :c:func:`pm_state_force()`

  * Removed the deprecated function :c:func:`pm_device_state_set()`.

  * The state constraint APIs were moved (and renamed) to the policy
    API and accounts substates.

    * :c:func:`pm_constraint_get()` is now :c:func:`pm_policy_state_lock_is_active()`
    * :c:func:`pm_constraint_set()` is now :c:func:`pm_policy_state_lock_get()`
    * :c:func:`pm_constraint_release()` is now :c:func:`pm_policy_state_lock_put()`

  * Added a new API to set maximum latency requirements. The ``DEFAULT`` policy
    will account for latency when computing the next state.

    * :c:func:`pm_policy_latency_request_add()`
    * :c:func:`pm_policy_latency_request_update()`
    * :c:func:`pm_policy_latency_request_remove()`

  * The API to set a device initial state was changed to be usable independently of
    :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME`.

    * :c:func:`pm_device_runtime_init_suspended()` is now :c:func:`pm_device_init_suspended()`
    * :c:func:`pm_device_runtime_init_off()` is now :c:func:`pm_device_init_off()`

* IPC

  * static_vrings: Fixed work queue (WQ) initialization
  * static_vrings: Introduced atomic helpers when accessing atomic_t variables
  * static_vrings: Moved to one WQ per instance
  * static_vrings: Added "zephyr,priority" property in the DT to set the WQ priority of the instance
  * static_vrings: Added configuration parameter to initialize shared memory to zero
  * Extended API with NOCOPY functions
  * static_vrings: Added support for NOCOPY operations
  * Introduced inter core messaging backend (icmsg) that relies on simple inter core messaging buffer

* Logging

  * Added UART frontend which supports binary dictionary logging.
  * Added support for MIPI SyS-T catalog messages.
  * Added cAVS HDA backend.

* Shell

  * Added API for creating subcommands from multiple files using memory section approach:

    * :c:macro:`SHELL_SUBCMD_SET_CREATE` for creating a subcommand set.
    * :c:macro:`SHELL_SUBCMD_COND_ADD` and :c:macro:`SHELL_SUBCMD_ADD` for adding subcommands
      to the set.

HALs
****

* Atmel

  * Added devicetree bindings, documentation, and scripts to support
    state-based pin control (``pinctrl``) API.
  * Imported new SoC header files for:

    * SAML21
    * SAMR34
    * SAMR35

* GigaDevice

  * Fixed GD32_REMAP_MSK macro
  * Fixed gd32f403z pc3 missing pincodes

* STM32:

  * Updated stm32f4 to new STM32cube version V1.27.0
  * Updated stm32f7 to new STM32cube version V1.16.2
  * Updated stm32g4 to new STM32cube version V1.5.0
  * Updated stm32h7 to new STM32cube version V1.10.0
  * Updated stm32l4 to new STM32cube version V1.17.1
  * Updated stm32u5 to new STM32cube version V1.1.0
  * Updated stm32wb to new STM32cube version V1.13.2 (including hci lib)

MCUboot
*******

- Added initial support for devices with a write alignment larger than 8B.
- Added an option for entering serial recovery mode with a timeout. See ``CONFIG_BOOT_SERIAL_WAIT_FOR_DFU``.
- Used a smaller sha256 implementation.
- Added support for the echo command in serial recovery. See ``CONFIG_BOOT_MGMT_ECHO``.
- Fixed image decryption for SoC flash with page sizes larger than 1024 B in single loader mode.
- Fixed a possible output buffer overflow in serial recovery.
- Added a GitHub workflow for verifying integration with Zephyr.
- Removed deprecated ``DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL``.
- Fixed usage of ``CONFIG_LOG_IMMEDIATE``.

Trusted Firmware-m
******************

* Updated to TF-M 1.6.0

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

* Reorganised and consolidated documentation for improved readability and
  user experience.
* Replaced the existing statically rendered Kconfig documentation with the new
  Kconfig documentation engine that dynamically renders the Kconfig contents
  for improved search performance.
* Added a 'Language Support' sub-category under the 'Developing with Zephyr'
  category that provides details regarding C and C++ language and standard
  library support status.
* Added a 'Toolchain' sub-category under the 'Developing with Zephyr' category
  that lists all supported toolchains along with instructions for how to configure
  and use them.

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

  * A dedicated framework was added to test the STM32 clock_control driver.

Issue summary
*************

This section lists security vulnerabilities, other known bugs, and all issues
addressed during the v3.1.0 development period.

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-1841: Under embargo until 2022-08-18
* CVE-2022-1042: Under embargo until 2022-06-19
* CVE-2022-1041: Under embargo until 2022-06-19

Known bugs
==========

- :github:`23302` - Poor TCP performance
- :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:`34226` - Compile error when building civetweb samples for posix_native
- :github:`34600` - Bluetooth: L2CAP: Deadlock when there are no free buffers while transmitting on multiple channels
- :github:`36358` - Potential issue with CMAKE_OBJECT_PATH_MAX
- :github:`37193` - mcumgr: Probably incorrect error handling with udp backend
- :github:`37704` - hello world doesn't work on qemu_arc_em when CONFIG_ISR_STACK_SIZE=1048510
- :github:`37731` - Bluetooth: hci samples: Unable to allocate command buffer
- :github:`38041` - Logging-related tests fails on qemu_arc_hs6x
- :github:`38544` - drivers: wifi: esWIFI: Regression due to 35815
- :github:`38654` - drivers: modem: bg9x: Has no means to update size of received packet.
- :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:`39347` - Static object constructors do not execute on the NATIVE_POSIX_64 target
- :github:`39888` - STM32L4: usb-hid: regression in hal 1.17.0
- :github:`40023` - Build fails for ``native_posix`` board when using C++ <atomic> header
- :github:`41281` - Style Requirements Seem to Be Inconsistent with Uncrustify Configuration
- :github:`41286` - Bluetooth SDP: When the SDP attribute length is greater than SDP_MTU, the attribute is discarded
- :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:`42030` - can: "bosch,m-can-base": Warning "missing or empty reg/ranges property"
- :github:`42134` - TLS handshake error using DTLS on updatehub
- :github:`42574` - i2c: No support for bus recovery imx.rt and or timeout on bus busy
- :github:`42629` - stm32g0: Device hang/hard fault with AT45 + ``CONFIG_PM_DEVICE``
- :github:`42842` - BBRAM API is missing a documentation reference page
- :github:`43115` - Data corruption in STM32 SPI driver in Slave Mode
- :github:`43246` - Bluetooth: Host: Deadlock with Mesh and Ext Adv on native_posix
- :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:`43390` - gPTP broken in Zephyr 3.0
- :github:`43515` - reel_board: failed to run tests/kernel/workq/work randomly
- :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:`43646` - mgmt/mcumgr/lib: OS taskstat may give shorter list than expected
- :github:`43655` - esp32c3: Connection fail loop
- :github:`43811` - ble: gatt: db_hash_work runs for too long and makes serial communication fail
- :github:`43828` - Intel CAVS: multiple tests under tests/boards/intel_adsp/smoke are failing
- :github:`43836` - stm32: g0b1: RTT doesn't work properly after stop mode
- :github:`43887` - SystemView tracing with STM32L0x fails to compile
- :github:`43910` - civetweb/http_server - DEBUG_OPTIMIZATIONS enabled
- :github:`43928` - pm: going to PM_STATE_SOFT_OFF in pm_policy_next_state causes assert in some cases
- :github:`43933` - llvm: twister: multiple errors with set but unused variables
- :github:`44062` - Need a way to deal with stack size needed when running coverage report.
- :github:`44214` - mgmt/mcumgr/lib: Parasitic use of CONFIG_HEAP_MEM_POOL_SIZE in image management
- :github:`44219` - mgmt/mcumgr/lib: Incorrect processing of img_mgmt_impl_write_image_data leaves mcumgr in broken state in case of error
- :github:`44228` - drivers: modem: bg9x: bug on cmd AT+QICSGP
- :github:`44324` - Compile error in byteorder.h
- :github:`44377` - ISO Broadcast/Receive sample not working with coded PHY
- :github:`44403` - MPU fault and ``CONFIG_CMAKE_LINKER_GENERATOR``
- :github:`44410` - drivers: modem: shell: ``modem send`` doesn't honor line ending in modem cmd handler
- :github:`44579` - MCC: Discovery cannot complete with success
- :github:`44622` - Microbit v2 board dts file for lsm303agr int line
- :github:`44725` - drivers: can: stm32: can_add_rx_filter() does not respect CONFIG_CAN_MAX_FILTER
- :github:`44898` - mgmt/mcumgr: Fragmentation of responses may cause mcumgr to drop successfully processed response
- :github:`44925` - intel_adsp_cavs25: multiple tests failed after running tests/boards/intel_adsp
- :github:`44948` - cmsis_dsp: transofrm: error during building cf64.fpu and rf64.fpu for mps2_an521_remote
- :github:`44996` - logging: transient strings are no longer duplicated correctly
- :github:`44998` - SMP shell exec command causes BLE stack breakdown if buffer size is too small to hold response
- :github:`45105` - ACRN: failed to run testcase tests/kernel/fifo/fifo_timeout/
- :github:`45117` - drivers: clock_control: clock_control_nrf
- :github:`45157` - cmake: Use of -ffreestanding disables many useful optimizations and compiler warnings
- :github:`45168` - rcar_h3ulcb: failed to run test case tests/drivers/can/timing
- :github:`45169` - rcar_h3ulcb: failed to run test case tests/drivers/can/api
- :github:`45218` - rddrone_fmuk66: I2C configuration incorrect
- :github:`45222` - drivers: peci: user space handlers not building correctly
- :github:`45241` - (Probably) unnecessary branches in several modules
- :github:`45270` - CMake - TEST_BIG_ENDIAN
- :github:`45304` - drivers: can: CAN interfaces are brought up with default bitrate at boot, causing error frames if bus bitrate differs
- :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:`45349` - ESP32: fails to chain-load sample/board/esp32/wifi_station from MCUboot
- :github:`45374` - Creating the unicast group before both ISO connections have been configured might cause issue
- :github:`45441` - SPI NOR driver assume all SPI controller HW is implemnted in an identical way
- :github:`45509` - ipc: ipc_icmsg: Can silently drop buffer if message is too big
- :github:`45532` - uart_msp432p4xx_poll_in() seems to be a blocking function
- :github:`45564` - Zephyr does not boot with CONFIG_PM=y
- :github:`45581` - samples: usb: mass: Sample.usb.mass_flash_fatfs fails on non-secure nrf5340dk
- :github:`45596` - samples: Code relocation nocopy sample has some unusual failure on nrf5340dk
- :github:`45647` - test: drivers: counter: Test passes even when no instances are found
- :github:`45666` - Building samples about BLE audio with nrf5340dk does not work
- :github:`45675` - testing.ztest.customized_output: mismatch twister results in json/xml file
- :github:`45678` - Lorawan: Devnonce has already been used
- :github:`45760` - Running twister on new board files
- :github:`45774` - drivers: gpio: pca9555: Driver is writing to output port despite all pins having been configured as input
- :github:`45802` - Some tests reported as PASSED (device) but they were only build
- :github:`45807` - CivetWeb doesn't build for CC3232SF
- :github:`45814` - Armclang build fails due to missing source file
- :github:`45842` - drivers: modem: uart_mux errors after second call to gsm_ppp_start
- :github:`45844` - Not all bytes are downloaded with HTTP request
- :github:`45845` - tests: The failure test case number increase significantly in CMSIS DSP tests on ARM boards.
- :github:`45848` - tests: console harness: inaccuracy testcases report
- :github:`45866` - drivers/entropy: stm32: non-compliant RNG configuration on some MCUs
- :github:`45914` - test: tests/kernel/usage/thread_runtime_stats/ test fail
- :github:`45929` - up_squared：failed to run test case tests/posix/common
- :github:`45951` - modem: ublox-sara-r4: outgoing datagrams are truncated if they do not fit MTU
- :github:`45953` - modem: simcom-sim7080: sendmsg() should result in single outgoing datagram
- :github:`46008` - stm32h7: gptp sample does not work at all
- :github:`46049` - Usage faults on semaphore usage in driver (stm32l1)
- :github:`46066` - TF-M: Unable to trigger NMI interrupt from non-secure
- :github:`46072` - [ESP32] Debug log error in hawkbit example "CONFIG_LOG_STRDUP_MAX_STRING"
- :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:`46124` - stm32g071 ADC drivers apply errata during sampling config
- :github:`46126` - pm_device causes assertion error in sched.c with lis2dh
- :github:`46157` - ACRN: some cases still failed because of the log missing
- :github:`46158` - frdm_k64f：failed to run test case tests/subsys/modbus/modbus.rtu/server_setup_low_none
- :github:`46167` - esp32: Unable to select GPIO for PWM LED driver channel
- :github:`46170` - ipc_service: open-amp backend may never leave
- :github:`46173` - nRF UART callback is not passed correct index via evt->data.rx.offset sometimes
- :github:`46186` - ISO Broadcaster fails silently on unsupported RTN/SDU_Interval combination
- :github:`46199` - LIS2DW12 I2C driver uses invalid write command
- :github:`46206` - it8xxx2_evb: tests/kernel/fatal/exception/ assertion failed -- "thread was not aborted"
- :github:`46208` - it8xxx2_evb: tests/kernel/sleep failed, elapsed_ms = 2125
- :github:`46234` - samples: lsm6dso: prints incorrect anglular velocity units
- :github:`46235` - subsystem: Bluetooth LLL: ASSERTION FAIL [!link->next]
- :github:`46255` - imxrt1010 wrong device tree addresses
- :github:`46263` - Regulator Control

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

* :github:`46241` - Bluetooth: Controller: ISO: Setting CONFIG_BT_CTLR_ISO_TX_BUFFERS=4 breaks non-ISO data
* :github:`46140` - Custom driver offload socket creation failing
* :github:`46138` - Problem with building zephyr/samples/subsys/mgmt/mcumgr/smp_svr  using atsame70
* :github:`46137` - RFC: Integrate u8g2 monochrome graphcial library as module to Zephyr OS (https://github.com/olikraus/u8g2)
* :github:`46129` - net: lwm2m: Object Update Callbacks
* :github:`46102` - samples: net: W5500 implementation
* :github:`46097` - b_l072z_lrwan1 usart dma doesn't work
* :github:`46093` - get a run error "Fatal exception (28): LoadProhibited" while enable CONFIG_NEWLIB_LIBC=y
* :github:`46091` - samples: net: cloud: tagoio: Drop pinmux dependency
* :github:`46059` - LwM2M: Software management URI resource not updated properly
* :github:`46056` - ``unexpected eof`` with twister running ``tests/subsys/logging/log_api/logging.log2_api_immediate_printk_cpp`` on ``qemu_leon3``
* :github:`46037` - ESP32 :  fails to build the mcuboot, zephyr v3.1.0 rc2,  sdk 0.14.2
* :github:`46034` - subsys settings: should check the return value of function cs->cs_itf->csi_load(cs, &arg).
* :github:`46033` - twister: incorrect display of test results
* :github:`46027` - tests: rpi_pico tests fails on twister with: No rule to make target 'bootloader/boot_stage2.S
* :github:`46026` - Bluetooth: Controller: llcp: Wrong effective time calculation if PHY changed
* :github:`46023` - drivers: reset: Use of reserved identifier ``assert``
* :github:`46020` - module/mcuboot: doesn't build with either RSA or ECISE-X25519 image encryption
* :github:`46017` - Apply for contributor
* :github:`46002` - NMP timeout when i am using  any mcumgr command
* :github:`45996` - stm32F7: DCache configuration is not correctly implemented
* :github:`45948` - net: socket: dtls: sendmsg() should result in single outgoing datagram
* :github:`45946` - net: context: outgoing datagrams are truncated if not enough memory was allocated
* :github:`45942` - tests: twister: harness: Test harness report pass when there is no console output
* :github:`45933` - webusb sample code linking error for esp32 board
* :github:`45932` - tests: subsys/logging/log_syst : failed to build on rpi_pico
* :github:`45916` - USART on STM32: Using same name for different remapping configurations
* :github:`45911` - LVGL sample cannot be built with CONFIG_LEGACY_INCLUDE_PATH=n
* :github:`45904` - All tests require full timeout period to pass after twister overhaul when executed on HW platform
* :github:`45894` - up_squared：the test shows pass in the twister.log it but does not seem to finish
* :github:`45893` - MCUboot authentication failure with RSA-3072 key on i.MX RT 1160 EVK
* :github:`45886` - ESP32: PWM parameter renaming broke compilation
* :github:`45883` - Bluetooth: Controller: CCM reads data before Radio stores them when DF enabled on PHY 1M
* :github:`45882` - Zephyr minimal C library contains files licensed with BSD-4-Clause-UC
* :github:`45878` - doc: release: Update release notes with CVE
* :github:`45876` - boards: h747/h745: Update dual core flash and debug instructions
* :github:`45875` - bluetooth: hci_raw: avoid possible memory overflow in bt_buf_get_tx()
* :github:`45873` - soc: esp32: use PYTHON_EXECUTABLE from build system
* :github:`45872` - ci: make git credentials non-persistent
* :github:`45871` - ci: split Bluetooth workflow
* :github:`45870` - drivers: virt_ivshmem: Allow multiple instances of ivShMem devices
* :github:`45869` - doc: update requirements
* :github:`45865` - CODEOWNERS has errors
* :github:`45862` - USB ECM/RNDIS Can't receive broadcast messages
* :github:`45856` - blinky built with asserts on arduino nano
* :github:`45855` - Runtime fault when running with CONFIG_NO_OPTIMIZATIONS=y
* :github:`45854` - Bluetooth: Controller: llcp: Assert if LL_REJECT_IND PDU received while local and remote control procedure is pending
* :github:`45851` - For native_posix programs, k_yield doesn't yield to k_msleep threads
* :github:`45839` - Bluetooth: Controller: df: Possible memory overwrite if requested number of CTE is greater than allowed by configuration
* :github:`45836` - samples: Bluetooth: unicast_audio_server invalid check for ISO flags
* :github:`45834` - SMP Server Sample needs ``-DDTC_OVERLAY_FILE=usb.overlay`` for CDC_ACM
* :github:`45828` - mcumgr: img_mgmt_dfu_stopped is called on a successful erase
* :github:`45827` - bluetooth: bluetooth host: Adding the same device to resolving list
* :github:`45826` - Bluetooth: controller: Assert in lll.c when executing LL/CON/INI/BV-28-C
* :github:`45821` - STM32U5: clock_control: Issue to get rate of alt clock source
* :github:`45820` - bluetooth: host: Failed to set security right after reconnection with bonded Central
* :github:`45800` - Clock control settings for MCUX Audio Clock are Incorrect
* :github:`45799` - LED strip driver flips colors on stm32h7
* :github:`45795` - driver: pinctrl: npcx: get build error when apply pinctrl mechanism to a DT node without reg prop.
* :github:`45791` - drivers/usb: stm32: Superfluous/misleading Kconfig option
* :github:`45790` - drivers: can: stm32h7: wrong minimum timing values
* :github:`45784` - nominate me as zephyr contributor
* :github:`45783` - drivers/serial: ns16550: message is garbled
* :github:`45779` - Implementing ARCH_EXCEPT on Xtensa unmasks nested interrupt handling bug
* :github:`45778` - Unable to use thread aware debugging with STM32H743ZI
* :github:`45761` - MCUBoot with multi-image support on Zephyr project for i.MX RT1165 EVK
* :github:`45755` - ESP32 --defsym:1: undefined symbol \`printf' referenced in expression - using CONFIG_NEWLIB_LIBC
* :github:`45750` - tests-ci : kernel: timer: tickless test_sleep_abs Failed
* :github:`45751` - tests-ci : drivers: counter: basic_api test_multiple_alarms  Failed
* :github:`45739` - stm32h7: DCache configuration is not correctly implemented
* :github:`45735` - Ethernet W5500 Driver via SPI is deadlocking
* :github:`45725` - Bluetooth: Controller: df: CTE request not disabled if run in single shot mode
* :github:`45714` - Unable to get TCA9548A to work
* :github:`45713` - twister: map generation fails
* :github:`45708` - Bluetooth: Controller: llcp: CTE request control procedure has missing support for LL_UNKNOWN_RSP
* :github:`45706` - tests: error_hook: mismatch testcases in testplan.json
* :github:`45702` - Reboot instead of halting the system
* :github:`45697` - RING_BUF_DECLARE broken for C++
* :github:`45691` - missing testcase tests/drivers/watchdog on nucleo stm32 boards
* :github:`45686` - missing testcase samples/drivers/led_pwm on nucleo stm32 boards
* :github:`45672` - Bluetooth: Controller: can't cancel periodic advertising sync create betwee ll_sync_create and reception of AUX__ADV_IND with SyncInfo
* :github:`45670` - Intel CAVS: log missing of tests/lib/p4workq/
* :github:`45664` - mqtt_publisher does not work in atsame54_xpro board
* :github:`45648` - pm: device_runtime: API functions fault when PM not supported
* :github:`45632` - ESP32   get error "undefined reference to \`sprintf' "  while CONFIG_NEWLIB_LIBC=y
* :github:`45630` - ipc_service: Align return codes for available backends.
* :github:`45611` - GD32 build failure: CAN_MODE_NORMAL is redefined
* :github:`45593` - tests: newlib:  test_malloc_thread_safety fails on nrf9160dk_nrf9160_ns
* :github:`45583` - Typo in definition of lsm6ds0.h
* :github:`45580` - ESP32-C3: CONFIG_ESP32_PHY_MAX_TX_POWER undeclared error when building with CONFIG_BT=y
* :github:`45578` - cmake: gcc --print-multi-directory doesn't print full path and checks fails
* :github:`45577` - STM32L4: USB MSC doesn't work with SD card
* :github:`45568` - STM32H7xx: Driver for internal flash memory partially uses a fixed flash program word size, which doesn't fit for all STM32H7xx SOCs (e.g. STM32H7A3, STM32H7B0, STM32H7B3) leading to potential flash data corruption
* :github:`45557` - doc: Some generic yaml bindings don't show up in dts/api/bindings.html#dt-no-vendor
* :github:`45549` - bt_gatt_write_without_response_cb doesn't use callback
* :github:`45545` - K_ESSENTIAL option doesn't have any effect on k_create_thread
* :github:`45543` - Build samples/bluetooth/broadcast_audio_sink raises an error
* :github:`45542` - Implementing firmware image decompression in img_mgmt_upload()
* :github:`45533` - uart_imx_poll_in() seems to be a blocking function
* :github:`45529` - GdbStub get_mem_region bug
* :github:`45518` - LPCXpresso55S69 incorrect device name for JLink runner
* :github:`45514` - UDP Packet socket doesn't do L2 header processing
* :github:`45505` - NXP MIMXRT1050-EVKB: MCUBoot Serial Recover: mcumgr hangs when trying to upload image
* :github:`45488` - Build warnings when no GPIO ports enabled
* :github:`45486` - MCUBootloader can't building for imxrt1160_evk_cm7 core
* :github:`45482` - Adding, building and linking Lua in a project
* :github:`45468` - Is uart_poll_in() blocking or not?
* :github:`45463` - null function pointer called when using shell logger backend under heavy load
* :github:`45458` - it8xxx2_evb: tests/drivers/pwm/pwm_api assertion fail
* :github:`45443` - SAMD21: Wrong voltage reference set by enum adc_reference
* :github:`45440` - Intel CAVS: intel_adsp_hda testsuite is failing due to time out on intel_adsp_cavs15
* :github:`45431` - Bluetooth: Controller: df: Wrong antenna identifier inserted after switch pattern exhausted
* :github:`45426` - Data buffer allocation: TCP stops working
* :github:`45421` - Zephyr build image(sample blinky application) not getting flash through NXP Secure Provisioning Tool V4.0 for i.MX RT 1166EVK
* :github:`45407` - Support for flashing the Zephyr based application on i.MX RT 1160 EVK through SDP Mode(USB-HID/ UART) & PyOCD runner
* :github:`45405` - up_squared: most of the test case timeout
* :github:`45404` - Bluetooth: Controller: Periodic advertising scheduling is broken, TIFS/TMAFS maintenance corrupted
* :github:`45401` - test-ci: adc: lpcxpresso55s28: adc pinctl init error
* :github:`45394` - Bug when sending a BLE proxy mesh msg of length exactly 2x the MTU size
* :github:`45390` - MinGW-w64: Cannot build Zephyr project
* :github:`45395` - Programming NXP i.MX RT OTP fuse with west
* :github:`45372` - PWM not working
* :github:`45371` - frdm_k64f: failed to run test case tests/net/socket/offload_dispatcher
* :github:`45367` - net: tcp: Scheduling dependent throughput
* :github:`45365` - Zephyr IP Stack Leaks in Promiscuous Mode
* :github:`45362` - sample/net/sockets/dumb_http_server not working with enc28j60
* :github:`45361` - samples/bluetooth/hci_usb doesn't build for nucleo_wb55rg
* :github:`45359` - USB DFU sample does not work on RT series boards
* :github:`45355` - Twister fails when west is not present
* :github:`45345` - Make FCB work with sectors larger than 16K
* :github:`45337` - timing: missing extern "C" in timing.h
* :github:`45336` - newlib: PRIx8 inttype incorrectly resolves to ``hh`` with newlib-nano
* :github:`45324` - NET_TCP_BACKLOG_SIZE is unused, it has to be either implemented or deleted
* :github:`45322` - tests: drivers: pwm_api fails with stm32 devices
* :github:`45316` - drivers: timer: nrf_rtc_timer: SYS_CLOCK_TICKS_PER_SEC too high for when CONFIG_KERNEL_TICKLESS=n
* :github:`45314` - subsystem: Bluetooth LLL: ASSERTION FAIL [!link->next] @ ZEPHYR_BASE/subsys/bluetooth/controller/ll_sw/ull_conn.c:1952
* :github:`45303` - drivers: can: CAN classic and CAN-FD APIs are mixed together and CAN-FD is a compile-time option
* :github:`45302` - Bus Fault with Xilinx UART Lite
* :github:`45280` - GPIO Configuration Issue
* :github:`45278` - twister: Run_id check feature breaks workflows with splitted building and testing.
* :github:`45276` - Add support for multiple zero-latency irq priorities
* :github:`45268` - Error newlibc ESP32
* :github:`45267` - kernel: Recursive spinlock in k_msgq_get() in the context of a k_work_poll handler
* :github:`45266` - teensy41: pwm sample unable to build
* :github:`45261` - mcumgr: conversion of version to string fails (snprintf format issue)
* :github:`45248` - Avoid redefining 32-bit integer types like __UINT32_TYPE__
* :github:`45237` - RFC: API Change: Bluetooth - replace callback in bt_gatt_subscribe_param
* :github:`45229` - sample: spi: bitbang: spi_bitbang sample has improper definition of its test
* :github:`45226` - samples/drivers/led_pwm: Build failure
* :github:`45219` - drivers: can: transceivers are initialized after controllers
* :github:`45209` - Minimal LIBC missing macros
* :github:`45189` - sam_e70b_xplained: failed to run test case tests/benchmarks/cmsis_dsp/basicmath
* :github:`45186` - Building Zephyr on Ubuntu fails when ZEPHYR_TOOLCHAIN_VARIANT is set to llvm
* :github:`45185` - Intel CAVS: tests under tests/ztest/register/ are failing
* :github:`45182` - MCUBoot Usage Fault on RT1060 EVK
* :github:`45172` - Bluetooth: attr->user_data is NULL when doing discovery with BT_GATT_DISCOVER_ATTRIBUTE
* :github:`45155` - STM32 serial port asynchronous initialization TX DMA channel error
* :github:`45152` - ``tests/subsys/logging/log_stack`` times out on ``qemu_arc_hs6x`` with twister
* :github:`45129` - mimxrt1050_evk: GPIO button pushed only once
* :github:`45123` - driver: can_stm32fd: STM32U5 series support
* :github:`45118` - Error claiming older doc is the latest
* :github:`45112` - Cannot install watchdog timeout on STM32WB
* :github:`45111` - fvp_base_revc_2xaemv8a: multiple test failures
* :github:`45110` - fvp_baser_aemv8r_smp: multiple test failures
* :github:`45108` - fvp_baser_aemv8r: multiple test failures
* :github:`45089` - stm32: usart: rx pin inversion missing
* :github:`45073` - nucleo_h743zi  failing twister builds due to NOCACHE_MEMORY warning
* :github:`45072` - [Coverity CID: 248346] Copy into fixed size buffer in /subsys/bluetooth/shell/bt.c
* :github:`45045` - mec172xevb_assy6906: tests/arch/arm/arm_irq_vector_table failed to run
* :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:`45006` - Bluetooth HCI SPI fault
* :github:`44997` - zcbor build error when ZCBOR_VERBOSE is set
* :github:`44985` - tests: drivers: can: timing: failure to set bitrate of 800kbit/s on nucleo_g474re
* :github:`44977` - samples: modules: canopennode: failure to initialize settings subsystem on nucleo_g474re
* :github:`44966` - build fails for nucleo wb55 rg board.
* :github:`44956` - Deprecate the old spi_cs_control fields
* :github:`44947` - cmsis_dsp: matrix: error during building libraries.cmsis_dsp.matrix.unary_f64 for qemu_cortex_m3
* :github:`44940` - rom_report creates two identical identifier but for different path in rom.json
* :github:`44938` - Pin assignments SPIS nrf52
* :github:`44931` - Bluetooth: Samples: broadcast_audio_source stack overflow
* :github:`44927` - Problems in using STM32 Hal Library
* :github:`44926` - intel_adsp_cavs25: can not build multiple tests under tests/posix/ and tests/lib/newlib/
* :github:`44921` - Can't run hello_world using mps_an521_remote
* :github:`44913` - Enabling BT_CENTRAL breaks MESH advertising
* :github:`44910` - Issue when installing Python additional dependencies
* :github:`44904` - PR#42879 causes a hang in the shell history
* :github:`44902` - x86: FPU registers are not initialised for userspace (eager FPU sharing)
* :github:`44887` - it8xxx2_evb: tests/kernel/sched/schedule_api/ assertion fail
* :github:`44886` - Unable to boot Zephyr on FVP_BaseR_AEMv8R
* :github:`44882` - doc: Section/chapter "Supported Boards" missing from pdf documentation
* :github:`44874` - error log for locking a mutex in an ISR
* :github:`44872` - k_timer callback timing incorrect with multiple lightly loaded cores
* :github:`44871` - mcumgr endless loop in mgmt_find_handler
* :github:`44864` - tcp server tls error：server has no certificate
* :github:`44856` - Various kernel timing-related tests fail on hifive1 board
* :github:`44837` - drivers: can: mcp2515: can_set_timing() performs a soft-reset of the MCP2515, discarding configured mode
* :github:`44834` - Add support for gpio expandeux NXP PCAL95xx
* :github:`44831` - west flash for nucleo_u575zi_q is failing
* :github:`44830` - Unable to set compiler warnings on app exclusively
* :github:`44822` - STM32F103 Custom Board Clock Config Error
* :github:`44811` - STRINGIFY does not work with mcumgr
* :github:`44798` - promote Michael to the Triage permission level
* :github:`44797` - x86: Interrupt handling not working for cores <> core0 - VMs not having core 0 assigned cannot handle IRQ events.
* :github:`44778` - stdint types not recognized in soc_common.h
* :github:`44777` - disco_l475_iot1 default CONFIG_BOOT_MAX_IMG_SECTORS should be 512 not 256
* :github:`44758` - intel_adsp: kernel.common tests are failing
* :github:`44752` - Nominate @brgl as contributor
* :github:`44750` - Using STM32 internal ADC with interrupt:
* :github:`44737` - Configurable LSE driving capability on H735
* :github:`44734` - regression in GATT/SR/GAS/BV-06-C qualification test case
* :github:`44731` - mec172xevb_assy6906: test/drivers/adc/adc_api test case build fail
* :github:`44730` - zcbor ARRAY_SIZE conflict with zephyr include
* :github:`44728` - Fresh Build and Flash of Bluetooth Peripheral Sample Produces Error on P-Nucleo-64 Board (STM32WBRG)
* :github:`44724` - can: drivers: mcux: flexcan: correctly handle errata 5461 and 5829
* :github:`44722` - lib: posix: support for pthread_attr_setstacksize
* :github:`44721` - drivers: can: mcan: can_mcan_add_rx_filter() unconditionally adds offset for extended CAN-ID filters
* :github:`44706` - drivers: can: mcp2515: mcp2515_set_mode() silently ignores unsupported modes
* :github:`44705` - Windows getting started references wget usage without step for installing wget
* :github:`44704` - Bootloader linking error while building for RPI_PICO
* :github:`44701` - advertising with multiple advertising sets fails with BT_HCI_ERR_MEM_CAPACITY_EXCEEDED
* :github:`44691` - west sign fails to find header size or padding
* :github:`44690` - ST kit b_u585i_iot02a and OCTOSPI flash support
* :github:`44687` - drivers: can: missing syscall verifier for can_get_max_filters()
* :github:`44680` - drivers: can: mcux: flexcan: can_set_mode() resets IP, discarding installed RX filters
* :github:`44678` - mcumgr: lib: cmd: img_mgmt: Warning about struct visibility emitted with certain Kconfig options
* :github:`44676` - mimxrt1050_evk_qspi crash or freeze when accessing flash
* :github:`44670` - tests-ci : kernel: tickless: concept test Timeout
* :github:`44671` - tests-ci : kernel: scheduler: deadline test failed
* :github:`44672` - tests-ci : drivers: counter: basic_api test failed
* :github:`44659` - Enhancement to k_thread_state_str()
* :github:`44621` - ASCS: Sink ASE stuck in Releasing state
* :github:`44600` - NMI testcase fails on tests/arch/arm/arm_interrupt with twister
* :github:`44586` - nrf5340: Random crashes when a lot of interrupts is triggered
* :github:`44584` - SWO log output does not compile for STM32WB55
* :github:`44573` - Do we have complete RNDIS stack available for STM32 controller in zephyr ?
* :github:`44558` - Possible problem with timers
* :github:`44557` - tests: canbus: isotp: implementation: fails on mimxrt1024_evk
* :github:`44553` - General Question: Compilation Time >15 Minutes?
* :github:`44546` - Bluetooth: ISO: Provide stream established information
* :github:`44544` - shell_module/sample.shell.shell_module.usb fails for thingy53_nrf5340_cpuapp_ns
* :github:`44539` - twister fails on several stm32 boards with tests/arch/arm testcases
* :github:`44535` - mgmt/mcumgr/lib: Incorrect use of MGMT_ERR_ENOMEM, in most cases where it is used
* :github:`44531` - bl654_usb without mcuboot maximum image size is not limited
* :github:`44530` - xtensa xcc build usb stack fail (newlib)
* :github:`44519` - Choosing CONFIG_CHIP Kconfig breaks LwM2M client client example build
* :github:`44507` - net: tcp: No retries of a TCP FIN message
* :github:`44504` - net: tcp: Context still open after timeout on connect
* :github:`44497` - Add guide for disabling MSD on JLink OB devices and link to from smp_svr page
* :github:`44495` - sys_slist_append_list and sys_slist_merge_slist corrupt target slist if appended or merged list is empty
* :github:`44489` - Docs: missing documentation related to MCUBOOT serial recovery feature
* :github:`44488` - Self sensor library from private git repository
* :github:`44486` - nucleo_f429zi: multiple networking tests failing
* :github:`44484` - drivers: can: mcp2515: The MCP2515 driver uses wrong timing limits
* :github:`44483` - drivers: can: mcan: data phase prescaler bounds checking uses wrong value
* :github:`44482` - drivers: can: mcan: CAN_SJW_NO_CHANGE not accepted with CONFIG_ASSERT=y
* :github:`44480` - bt_le_adv_stop null pointer exception
* :github:`44478` - Zephyr on Litex/Vexriscv not booting
* :github:`44473` - net: tcp: Connection does not properly terminate when connection is lost
* :github:`44453` - Linker warnings in watchdog samples and tests built for twr_ke18f
* :github:`44449` - qemu_riscv32 DHCP fault
* :github:`44439` - Bluetooth: Controller: Extended and Periodic Advertising HCI Component Conformance Test Coverage
* :github:`44427` - SYS_CLOCK_HW_CYCLES_PER_SEC not correct for hifive1_revb / FE310
* :github:`44404` - Porting stm32h745 for zephyr
* :github:`44397` - twister: test case error number discrepancy in the result
* :github:`44391` - tests-ci : peripheral: gpio: 1pin test Timeout
* :github:`44438` - tests-ci : arch: interrupt: arm.nmi test Unknown
* :github:`44386` - Zephyr SDK 0.14.0 does not contain a sysroots directory
* :github:`44374` - Twister: Non-intact handler.log files when running tests and samples folders
* :github:`44361` - drivers: can: missing syscall verifier for can_set_mode()
* :github:`44349` - Nordic BLE fails assertion when logging is enabled
* :github:`44348` - drivers: can: z_vrfy_can_recover() does not compile
* :github:`44347` - ACRN: multiple tests failed due to incomplete log
* :github:`44345` - drivers: can: M_CAN bus recovery function has the wrong signature
* :github:`44344` - drivers: can: mcp2515 introduces a hard dependency on CONFIG_CAN_AUTO_BUS_OFF_RECOVERY
* :github:`44338` - intel_adsp_cavs18: multiple tests failed due to non-intact log
* :github:`44314` - rddrone_fmuk66: fatal error upon running basic samples
* :github:`44307` - LE Audio: unicast stream/ep or ACL disconnect reset should not terminate the CIG
* :github:`44296` - Bluetooth: Controller: DF: IQ sample of CTE signals are not valid if PHY is 1M
* :github:`44295` - Proposal for subsystem for media
* :github:`44284` - LE Audio: Missing recv_info for BAP recv
* :github:`44283` - Bluetooth: ISO: Add TS flag for ISO receive
* :github:`44274` - direction_finding_connectionless_rx/tx U-Blox Nora B106 EVK
* :github:`44271` - mgmt/mcumgr: BT transport: Possible buffer overflow (and crash) when reciving SMP when CONFIG_MCUMGR_BUF_SIZE < transport MTU
* :github:`44262` - mimxrt1050_evk: build time too long for this platform
* :github:`44261` - twister: some changes make test cases work abnormally.
* :github:`44259` - intel_adsp_cavs18: tests/lib/icmsg failed
* :github:`44255` - kernel: While thread is running [thread_state] is in _THREAD_QUEUED
* :github:`44251` - ``CONFIG_USB_DEVICE_REMOTE_WAKEUP`` gets default value `y` if not set
* :github:`44250` - Can't build WiFi support on esp32, esp32s2, esp32c3
* :github:`44247` - west build -b nrf52dk_nrf52832 samples/boards/nrf/clock_skew failed
* :github:`44244` - Bluetooth: Controller: ISO BIS payload counter rollover
* :github:`44240` - tests: drivers: pwm_api: PWM driver test doesn't compile for mec172xevb_assy6906
* :github:`44239` - boards: arm: mec152x/mec172x CONFIG_PWM=y doesn't compile PWM driver
* :github:`44231` - Problems trying to configure the environment
* :github:`44218` - libc: minimal: qsort_r not working as expected
* :github:`44216` - tests: drivers: counter_basic_api: Build failing on LPCxpresso55s69_cpu
* :github:`44215` - tests: subsys: cpp: over half of tests failing on macOS but do not fail on Linux
* :github:`44213` - xtensa arch_cpu_idle not correct on cavs18+ platforms
* :github:`44199` - (U)INT{32,64}_C macro constants do not match the Zephyr stdint types
* :github:`44192` - esp32 flash custom partition table
* :github:`44186` - Possible race condition in TCP connection establishment
* :github:`44145` - Zephyr Panic dump garbled on Intel cAVS platforms
* :github:`44134` - nRF52833 current consumption too high
* :github:`44128` - Deprecate DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL
* :github:`44125` - drivers/ethernet/eth_stm32_hal.c: eth_stm32_hal_set_config() always returns -ENOTSUP (-134)
* :github:`44110` - Bluetooth: synced callback may have wrong addr type
* :github:`44109` - Device tree error while porting zephyr for a custom board
* :github:`44108` - ``CONFIG_ZTEST_NEW_API=y`` broken with ``CONFIG_TEST_USERSPACE=y``
* :github:`44107` - The SMP nsim boards are started incorrectly when launching on real HW
* :github:`44106` - test of dma drivers fails on dma_m2m_loop_test
* :github:`44101` - a build error when CONFIG_MULTITHREADING=n
* :github:`44092` - rand32_ctr_drbg fails to call the respective initialization routing
* :github:`44089` - logging: shell backend: null-deref when logs are dropped
* :github:`44072` - mcumgr smp source is checking variable without it being set and causing automated test failures
* :github:`44070` - west spdx TypeError: 'NoneType' object is not iterable
* :github:`44043` - Usage fault when running flash shell sample on RT1064 EVK
* :github:`44029` - Unexpected behavior of CONFIG_LOG_OVERRIDE_LEVEL
* :github:`44018` - net: tcp: Running out of buffers by packet loss
* :github:`44012` - net: tcp: Cooperative scheduling transfer size limited
* :github:`44010` - frdm_k64f: failed to run testcase samples/kernel/metairq_dispatch/
* :github:`44006` - intel_adsp_cavs25: tests/drivers/dma/loop_transfer failed
* :github:`44004` - Bluetooth: ascs: Invalid ASE state transition: Releasing -> QoS Configured
* :github:`43993` - doc: Fix minor display issue for west spdx extension command
* :github:`43990` - How to make civetweb run on a specified network card
* :github:`43988` - Extracting the index of a child node referenced using alias
* :github:`43980` - No PWM signal on Nucleo F103RB using TIM1 CH2 PA9
* :github:`43976` - [lwm2m_engine / sockets] Possibility to decrease timeout on connect()
* :github:`43975` - tests: kernel: scheduler: Test from kernel.scheduler.slice_perthread fails on some nrf platforms
* :github:`43972` - UART: uart_poll_in() not working in Shell application
* :github:`43964` - k_timer callback timing gets unreliable with more cores active
* :github:`43950` - code_relocation: Add NOCOPY feature breaks windows builds
* :github:`43949` - drivers: espi: mec172x: ESPI flash write and erase operations not working
* :github:`43948` - drivers: espi: xec: MEC172x: Driver enables all bus interrupts but doesn't handle them causing starvation
* :github:`43946` - Bluetooth: Automatic ATT MTU negotiation
* :github:`43940` - Support for CH32V307 devices
* :github:`43930` - nRF52833 High Power Consumption with 32.768kHz RC Oscillator
* :github:`43924` - ipc_service: Extend API with zero-copy send
* :github:`43899` - can: stm32: Build issue on g4 target
* :github:`43898` - Twister:  test case number discrepancy in the result xml.
* :github:`43891` - networking: detect initialisation failures of backing drivers
* :github:`43888` - adc: stm32: compilation broken on G4 targets
* :github:`43874` - mec172xevb_assy6906: tests/drivers/spi/spi_loopback  test case UART output wrong.
* :github:`43873` - tests:ci:lpcxpresso55s06: portability.posix.common.newlib meet hard fault
* :github:`43872` - tests:ci:lpcxpresso55s06:libraries.cmsis_dsp.matrix.unary_f32 test fails
* :github:`43870` - test:ci:lpcxpresso55s06: hwinfo test meet hardfault
* :github:`43867` - mec172xevb_assy6906: tests/drivers/pwm/pwm_api  test case build fail.
* :github:`43865` - Add APDS-9250 I2C Driver
* :github:`43864` - mec172xevb_assy6906: tests/drivers/pwm/pwm_loopback  test case failed to build
* :github:`43858` - mcumgr seems to lock up when it receives command for group that does not exist
* :github:`43856` - mec172xevb_assy6906: tests/drivers/i2c/i2c_api  i2c_test failed
* :github:`43851` - LE Audio: Make PACS location optional
* :github:`43838` - mec172xevb_assy6906: tests/drivers/adc/adc_dma  test case build fail
* :github:`43842` - tests-ci : libraries: encoding: jwt test Timeout
* :github:`43841` - tests-ci : net: socket: tls.preempt test Timeout
* :github:`43835` - ``zephyr_library_compile_options()`` fails to apply if the same setting is set for multiple libraries in a single project
* :github:`43834` - DHCP not work in ``Intel@PSE`` on ``Intel@EHL``
* :github:`43830` - LPC55S69 Not flashing to second core.
* :github:`43829` - http_client: http_client_req() returns incorrect number of bytes sent
* :github:`43818` - lib: os: ring_buffer: recent changes cause UART shell to fail on qemu_cortex_a9
* :github:`43816` - tests: cmsis_dsp: rf16 and cf16 tests are not executed on Native POSIX
* :github:`43807` - Test "cpp.libcxx.newlib.exception" failed on platforms which use zephyr.bin to run tests.
* :github:`43794` - BMI160 Driver: Waiting time between SPI activation and reading CHIP IP is too low
* :github:`43793` - Alllow callbacks to CDC_ACM events
* :github:`43792` - mimxrt1050_evk: failed to run tests/net/socket/tls and tests/subsys/jwt
* :github:`43786` - [Logging] log context redefined with XCC when use zephyr logging api with SOF
* :github:`43757` - it8xxx2_evb: k_busy_wait is not working accurately for ITE RISC-V
* :github:`43756` - drivers: gpio: pca95xx does not compile with CONFIG_GPIO_PCA95XX_INTERRUPT
* :github:`43750` - ADC Driver build is broken for STM32L412
* :github:`43745` - Xtensa XCC Build spi_nor.c fail
* :github:`43742` - BT510 lis2dh sensor does not disconnect SAO pull-up resistor
* :github:`43739` - tests: dma: random failure on dma loopback suspend and resume case on twr_ke18f
* :github:`43732` - esp32: MQTT publisher sample stuck for both TLS and non-TLS sample.
* :github:`43728` - esp32 build error while applicaton in T2 topology
* :github:`43718` - Bluetooth: bt_conn: Unable to allocate buffer within timeout
* :github:`43715` - ESP32 UART devicetree binding design issue
* :github:`43713` - intel_adsp_cavs: tests are not running with twister
* :github:`43711` - samples: tfm: psa Some TFM/psa samples fail on nrf platforms
* :github:`43702` - samples/arch/smp/pktqueue not working on ESP32
* :github:`43700` - mgmt/mcumgr: Strange Kconfig names for MCUMGR_GRP_ZEPHYR_BASIC log levels
* :github:`43699` - Bluetooth Mesh working with legacy and extended advertising simultaneously
* :github:`43693` - LE Audio: Rename enum bt_audio_pac_type
* :github:`43669` - LSM6DSL IMU driver - incorrect register definitions
* :github:`43663` - stm32f091 test   tests/kernel/context/ test_kernel_cpu_idle  fails
* :github:`43661` - Newlib math library not working with user mode threads
* :github:`43656` - samples:bluetoooth:direction_finding_connectionless_rx antenna switching not working with nRF5340
* :github:`43654` - Nominate Mehmet Alperen Sener as Bluetooth Mesh Collaborator
* :github:`43649` - Best practice for "external libraries" and cmake
* :github:`43647` - Bluetooth: LE multirole: connection as central is not totally unreferenced on disconnection
* :github:`43640` - stm32f1: Convert ``choice GPIO_STM32_SWJ`` to dt
* :github:`43636` - Documentation incorrectly states that C++ new and delete operators are unsupported
* :github:`43630` - Zperf tcp download stalls with window size becoming 0 on Zephyr side
* :github:`43618` - Invalid thread indexes out of userspace generation
* :github:`43600` - tests: mec15xxevb_assy6853: most of the test cases failed
* :github:`43587` - arm: trustzone: Interrupts using FPU causes usage fault when ARM_NONSECURE_PREEMPTIBLE_SECURE_CALLS is disabled
* :github:`43580` - hl7800: tcp stack freezes on slow response from modem
* :github:`43573` - return const struct device \* for device_get_binding(const char \*name)
* :github:`43568` - ITE eSPI driver expecting OOB header also along with OOB data from app code - espi_it8xxx2_send_oob() & espi_it8xxx2_receive_oob
* :github:`43567` - Bluetooth: Controller: ISO data packet dropped on payload array wraparound
* :github:`43553` - Request to configure SPBTLE-1S of STEVAL-MKSBOX1V1
* :github:`43552` - samples: bluetooth: direction_finding: Sample fails on nrf5340
* :github:`43543` - RFC: API Change: Bluetooth: struct bt_auth_cb field removal
* :github:`43525` - Default network interface selection by up-state
* :github:`43518` - 'DT_N_S_soc_S_timers_40012c00_S_pwm' undeclared
* :github:`43513` - it8xxx2_evb: tests/kernel/sleep failed
* :github:`43512` - wifi: esp_at: sockets not cleaned up on close
* :github:`43511` - lvgl: upgrade to 8.2 build problem
* :github:`43505` - ``py`` command not found when using nanopb on windows
* :github:`43503` - Build Version detection not working when Zephyr Kernel is a Git Submodule
* :github:`43490` - net: sockets: userspace accept() crashes with NULL addr/addrlen pointer
* :github:`43487` - LE Audio: Broadcast audio sample
* :github:`43476` - tests: nrf: Output of nrf5340dk_nrf5340_cpuapp_ns not available
* :github:`43470` - wifi: esp_at: race condition on mutex's leading to deadlock
* :github:`43469` - USBD_CLASS_DESCR_DEFINE section name bug
* :github:`43465` - 'Malformed data' on bt_data_parse() for every ble adv packet on bbc_microbit
* :github:`43456` - winc1500 wifi driver fails to build
* :github:`43452` - Missing SPI SCK on STM32F103vctx
* :github:`43448` - Deadlock detection in ``bt_att_req_alloc`` ineffective when ``CONFIG_BT_RECV_IS_RX_THREAD=n``
* :github:`43440` - Bluetooth: L2CAP send le data lack calling net_buf_unref() function
* :github:`43430` - Is there any plan to develop zephyr to mircrokenrel architecture?
* :github:`43425` - zephyr+Linux+hypervisor on Raspberry Pi 4
* :github:`43419` - Pull request not updated after force push the original branch
* :github:`43411` - STM32 SPI DMA issue
* :github:`43409` - frdm_k64f: USB connection gets lost after continuous testing
* :github:`43400` - nrf board system_off sample application does not work on P1 buttons
* :github:`43392` - Bluetooth: ISO: unallocated memory written during mem_init
* :github:`43389` - LoRaWAN on Nordic and SX1276 & SX1262 Shield
* :github:`43382` - mgmt/mcumgr/lib: Echo OS command echoes back empty string witn no error when string is too long to handle
* :github:`43378` - TLS availability misdetection when ZEPHYR_TOOLCHAIN_VARIANT is not set
* :github:`43372` - pm: lptim: stm32h7: pending irq stops STANDBY
* :github:`43369` - Use Zephyr crc implementation for LittleFS
* :github:`43359` - Bluetooth: ASCS QoS config should not fail for preferred settings
* :github:`43348` - twister:skipped case num issue when use --only-failed.
* :github:`43345` - Bluetooth: Controller: Extended and Periodic Advertising Link Layer Component Test Coverage
* :github:`43344` - intel_adsp_cavs25: samples/subsys/logging/syst is failing with a timeout when the sample is enabled to run on intel_adsp_cavs25
* :github:`43333` - RFC: Bring zcbor as CBOR decoder/encoder in replacement for TinyCBOR
* :github:`43326` - Unstable SD Card performance on Teensy 4.1
* :github:`43319` - Hardware reset cause api sets reset pin bit every time the api is called
* :github:`43316` - stm32wl55 cannot enable PLL source as MSI
* :github:`43314` - LE Audio: BAP ``sent`` callback missing
* :github:`43310` - disco_l475_iot1: BLE not working
* :github:`43306` - sam_e70b_xplained: the platform will be not normal after running test case tests/subsys/usb/desc_sections/
* :github:`43305` - wifi: esp_at: shell command "wifi scan" not working well
* :github:`43295` - mimxrt685_evk_cm33: Hard fault with ``CONFIG_FLASH=y``
* :github:`43292` - NXP RT11xx devicetree missing GPIO7, GPIO8, GPIO12
* :github:`43285` - nRF5x System Off demo fails to put the nRF52840DK into system off
* :github:`43284` - samples: drivers: watchdog failed in mec15xxevb_assy6853
* :github:`43277` - usb/dfu: upgrade request is not called while used from mcuboot, update doesn't happen
* :github:`43276` - tests: up_squared:  testsuite tests/kernel/sched/deadline/ failed
* :github:`43271` - tests: acrn_ehl_crb:  tests/arch/x86/info failed
* :github:`43268` - LE Audio: Add stream ops callbacks for unicast server
* :github:`43258` - HCI core data buffer overflow with ESP32-C3 in Peripheral HR sample
* :github:`43248` - Bluetooth: Mesh: Unable used with ext adv on native_posix
* :github:`43235` - STM32 platform does not handle large i2c_write() correctly
* :github:`43230` - Deprecate DT_CHOSEN_ZEPHYR_ENTROPY_LABEL
* :github:`43229` - nvs: change nvs_init to accept a device reference
* :github:`43218` - nucleo_wb55rg: Partition update required to use 0.13.0 BLE firmware
* :github:`43205` - UART console broken since 099850e916ad86e99b3af6821b8c9eb73ba91abf
* :github:`43203` - BLE: With BT_SETTINGS and BT_SMP, second connection blocks the system in connection event notification
* :github:`43192` - lvgl: upgrade LVGL to 8.1 build error
* :github:`43190` - Bluetooth: audio: HCI command timeout on LE Setup Isochronous Data Path
* :github:`43186` - Bluetooth: import nrf ble_db_discovery library to zephyr
* :github:`43172` - CONFIG_BT_MESH_ADV_EXT doesn't build without CONFIG_BT_MESH_RELAY
* :github:`43163` - Applications not pulling LVGL cannot be configured or compiled
* :github:`43159` - hal: stm32: ltdc pins should be very-high-speed
* :github:`43142` - Ethernet and PPP communication conflicts
* :github:`43136` - STM32 Uart log never take effect
* :github:`43132` - Thingy:52 i2c_nrfx_twim: Error 0x0BAE0001 occurred for message
* :github:`43131` - LPCXPresso55S69-evk dtsi file incorrect
* :github:`43130` - STM32WL ADC idles / doesn't work
* :github:`43117` - Not possible to create more than one shield.
* :github:`43109` - drivers:peci:xec: PECI Command 'Ping' does not work properly
* :github:`43099` - CMake: ARCH roots issue
* :github:`43095` - Inconsistent logging config result resulted from menuconfig.
* :github:`43094` - CMake stack overflow after changing the build/zephyr/.config, even just timestamp.
* :github:`43090` - mimxrt685_evk_cm33: USB examples not working on Zephyr v3.0.0
* :github:`43087` - XCC build failures for all intel_adsp tests/platforms
* :github:`43081` - [Slack] Slack invite works only on very few mail addresses - this should be changed!
* :github:`43066` - stm32wl55 true RNG  falls in seed error
* :github:`43058` - PACS: Fix PAC capabilities to be exposed in PAC Sink/Source characteristic
* :github:`43057` - twister: error while executing twister script on windows machine for sample example code
* :github:`43046` - Wifi sample not working with disco_l475_iot1
* :github:`43034` - Documentation for ``console_putchar`` function is incorrect
* :github:`43024` - samples: tests task wdt fails on some stm32 nucleo target boards
* :github:`43020` - samples/subsys/fs/littlefs does not work with native_posix board on WSL2
* :github:`43016` - Self inc/dec works incorrectly with logging API.
* :github:`42997` - Bluetooth: Controller: Receiving Periodic Advertising Reports with larger AD Data post v3.0.0-rc2
* :github:`42988` - Specify and standardize undefined behavior on empty response from server for http_client
* :github:`42960` - Bluetooth: Audio: Codec config parsing and documentation
* :github:`42953` - it8xxx2_evb: Test in tests/kernel/timer/timer_api fail.
* :github:`42940` - Please add zsock_getpeername
* :github:`42928` - CSIS: Invalid usage of bt_conn_auth_cb callbacks
* :github:`42888` - Bluetooth: Controller: Extended Advertising - Advertising Privacy Support
* :github:`42881` - Arduino due missing 'arduino_i2c' alias.
* :github:`42877` -  k_cycle_get_32 returns 0 on start-up on native_posix
* :github:`42874` - ehl_crb: samples/kernel/metairq_dispatch fails when it is run multiple times
* :github:`42870` - Build error due to minimal libc qsort callback cast
* :github:`42865` - openocd configurations missing for stm32mp157c_dk2 board
* :github:`42857` - sam_e70b_xplained: failed to run test cases tests/net/npf and tests/net/bridge
* :github:`42856` - Bluetooth: BAP: Unicast client sample cannot connect
* :github:`42854` - k_busy_wait() never returns when called - litex vexriscv soc and cpu on xilinx ac701 board
* :github:`42851` - it8xxx2_evb: Mutlitple tests in tests/kernel/contex fail.
* :github:`42850` - CONFIG items disappeared in zephyr-3.0-rc3
* :github:`42848` - it8xxx2_evb: Test in /tests/subsys/cpp/libcxx fail.
* :github:`42847` - it8xxx2_evb: Multiple tests in tests/subsys/portability/cmsis_rtos_v2 fail.
* :github:`42831` - Do the atomic* functions require protection from optimization?
* :github:`42829` - GATT: bt_gatt_is_subscribed does not work as expected when called from bt_conn_cb->connected
* :github:`42825` - MQTT client disconnection (EAGAIN) on publish with big payload
* :github:`42817` - ADC on ST Nucleo H743ZI board with DMA
* :github:`42800` - gptp_mi neighbor_prop_delay is not included in sync_receipt_time calculation due cast from double to uint64_t
* :github:`42799` - gptp correction field in sync follow up message does not have correct endianness
* :github:`42774` - pinctrl-0 issue in device tree building
* :github:`42723` - tests: kernel.condvar: child thread is not running
* :github:`42702` - upsquared: drivers.counter.cmos.seconds_rate is failing with busted maximum bound when run multiple times
* :github:`42685` - Socket echo server sample code not working in Litex Vexriscv cpu (Xilinx AC701 board)
* :github:`42680` - Missing bt_conn_(un)ref for LE Audio and tests
* :github:`42599` - tests: kernel: mem_protect: mem_protect fails after reset on stm32wb55 nucleo
* :github:`42588` - lsm6dso
* :github:`42587` - LE Audio: BAP Unicast API use array of pointers instead of array of streams
* :github:`42559` - 6LoCAN samples fail due to null pointer dereference
* :github:`42548` - acrn_ehl_crb:  twister failed to run tests/subsys/logging due to UnicodeEncodeError after switching to log v2
* :github:`42544` - Bluetooth: controller: llcp: handling of remote procedures with and without instant
* :github:`42534` - BLE Testing functions do not work properly
* :github:`42530` - Possibility to define pinmux item for Pin Control as a plain input/output
* :github:`42524` - Wrong implementation of SPI driver
* :github:`42520` - bt_ots Doxygen documentation does not seem to be included in the Zephyr project documentation.
* :github:`42518` - Bluetooth Ext Adv:Sync: While simultaneous advertiser are working, and skip is non-zero, sync terminates repeatedly
* :github:`42508` - TWIHS hangs
* :github:`42496` - ARM M4 MPU backed userspace livelocks on stack overflow when FPU enabled
* :github:`42478` - Unable to build mcuboot for b_u585i_iot02a
* :github:`42453` - Unable to update Firmware using MCUBoot on STM32G0 series
* :github:`42436` - NXP eDMA overrun errors on SAI RX
* :github:`42434` - NXP I2S (SAI) driver bugs
* :github:`42432` - i2c: unable to configure SAMD51 i2c clock frequency for standard (100 KHz) speeds
* :github:`42425` - i2c: sam0 driver does not prevent simultaneous transactions
* :github:`42351` - stm32H743 nucleo board cannot flash after tests/drivers/flash
* :github:`42343` - LE Audio: PACS: Server change location
* :github:`42342` - LE Audio: PACS notify changes to locations
* :github:`42333` - Cannot write to qspi flash in adafruit feather nrf52840, device tree is wrong
* :github:`42310` - Support for TCA6408A gpio expander, which existing driver as a base?
* :github:`42306` - Bluetooth: Host: More than ``CONFIG_BT_EATT_MAX`` EATT channels may be created
* :github:`42290` - ESP32 - Heltec Wifi - Possibly invalid CONFIG_ESP32_XTAL_FREQ setting (40MHz). Detected 26 MHz
* :github:`42235` - SocketCAN not supported for NUCLEO H743ZI
* :github:`42227` - Teensy41 support SDHC - Storage init Error
* :github:`42189` - Sub 1GHz Support for CC1352
* :github:`42181` - Ethernet PHY imxrt1060 Teensy not working, sample with DHCPv4_client fails
* :github:`42113` - Modbus RTU allow non-compliant client configuration
* :github:`42108` - upsquared: isr_dynamic & isr_regular test is failing
* :github:`42102` - doc: searches for sys_reboot() are inconsistent
* :github:`42096` - LE Audio: Media: Pass structs by reference and not value
* :github:`42090` - Bluetooth: Audio: MCS BSIM notification length warning
* :github:`42083` - Bluetooth: ISO: Packet Sequence Number should be incremented for each channel
* :github:`42081` - Direction finding code support for nrf52811?
* :github:`42072` - west: spdx: Blank FileChecksum field for missing build file
* :github:`42050` - printk bug: A function called from printk is invoked three times given certain configuration variables
* :github:`42015` - LED api can't be called from devicetree phandle
* :github:`42011` - Establish guidelines for TSC working groups
* :github:`42000` - BQ274xx driver not working correctly
* :github:`41995` - tracing: riscv: Missing invoking the sys_trace_isr_exit()
* :github:`41947` - lpcxpresso55s16 SPI hardware chip select not working
* :github:`41946` - Bluetooth: ISO: Sending on RX-only CIS doesn't report error
* :github:`41944` - Assertion triggered when system is going to PM_STATE_SOFT_OFF
* :github:`41931` - drivers: audio: tlv320dac310x: device config used as non-const
* :github:`41924` - drivers: dma/i2c: nios2: config used as non-const
* :github:`41921` - Fast USB DFU workflow
* :github:`41899` - ESP32 Wifi mDNS
* :github:`41874` - Recursive spinlock error on ARM in specific circumstances
* :github:`41864` - ESP32 Wifi AP Mode DHCP Service
* :github:`41823` - Bluetooth: Controller: llcp: Remote request are dropped due to lack of free proc_ctx
* :github:`41788` - Bluetooth: Controller: llcp: Refectored PHY Update procedure asserts while waiting for free buffers to send notifications
* :github:`41787` - Alignment issue on Cortex M7
* :github:`41777` - periodic_adv periodic_sync lost data
* :github:`41773` - LoRaWAN: Unable to correctly join networks of any version on LTS
* :github:`41742` - stm32g0: stm32_temp: not working
* :github:`41710` - tests: ztest: ztress: Test randomly fails on qemu_cortex_a9
* :github:`41677` - undefined reference to \`__device_dts_ord_xx'
* :github:`41667` - doc: arm: mec172x:  MEC172x EVB documentation points to some inexistent jumpers
* :github:`41652` - Bluetooth: Controller: BIG: Channel map update BIG: Generation of BIG_CHANNEL_MAP_IND (sent 6 times)
* :github:`41651` - Bluetooth: Controller: BIG Sync: Channel map update of BIG
* :github:`41650` - STM32H7 SPI123 incorrect clock source used for prescaler calculation
* :github:`41642` - Deploy generated docs from PRs
* :github:`41628` - Move LVGL glue code to zephyr/modules/
* :github:`41613` - Process: Review and update Milestone Definitions
* :github:`41597` - Unable to build mcuboot for BL654_DVK
* :github:`41596` - Split connected ISO client and server by Kconfig
* :github:`41594` - LE Audio: Upstream CCP/TBS
* :github:`41593` - LE Audio: Upstream BASS
* :github:`41592` - Object Transfer Service Client made "official"
* :github:`41590` - LE Audio: CAP API - Acceptor
* :github:`41517` - Hard fault if ``CONFIG_LOG2_MODE_DEFERRED`` is enabled
* :github:`41472` - Unable to mount fat file system on nucleo_f429zi
* :github:`41449` - PWM capture with STM32
* :github:`41408` - Low power states for STM32 H7
* :github:`41388` - tests: coverage: test code coverage report failed on mps2_an385
* :github:`41382` - nordic nrf52/nrf53 and missing cpu-power-states (dts) for automatic device PM control
* :github:`41375` - hal_nordic: update 15.4 driver to newest version
* :github:`41297` - QSPI flash need read, write via 4 lines not 1 line
* :github:`41285` - pthread_once has incorrect behavior
* :github:`41230` - LE Audio: API Architecture and documentation for GAF
* :github:`41228` - LE Audio: Add a codec to Zephyr
* :github:`41220` - STM32H7: Check for VOSRDY instead of ACTVOSRDY
* :github:`41201` - LE Audio: Improved media_proxy internal data structure
* :github:`41200` - LE Audio: Other postponed MCS cleanups
* :github:`41196` - LE Audio: Reconfigure Unicast Group after creation
* :github:`41194` - LE Audio: Remove support for bidirectional audio streams
* :github:`41192` - LE Audio: Change PACS from indicate to notify
* :github:`41191` - LE Audio: Update pac_indicate to actually send data
* :github:`41188` - LE Audio: Remove stream (dis)connected callback from stream ops
* :github:`41186` - LE Audio: CAP API - Initiator
* :github:`41169` - twister: program get stuck when serial in hardware map is empty string
* :github:`41151` - RFC: Provide k_realloc()
* :github:`41093` - Kconfig.defconfig:11: error: couldn't parse 'default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)'
* :github:`40970` - Upgrade qemu to fix breakage in mps3-an547
* :github:`40920` - Bluetooth audio: client/server naming scheme
* :github:`40901` - RFC: API Change: update LVGL from v7 to v8
* :github:`40874` - mps2_an521_ns: fail to handle user_string_alloc_copy() with null parameter
* :github:`40856` - PPP: gsm_modem: LCP never gets past REQUEST_SENT phase
* :github:`40775` - stm32: multi-threading broken after #40173
* :github:`40679` - libc/minimal: static variable of gmtime() does not located to z_libc_partition at usermode.
* :github:`40657` - Cannot enable secondary pwm out channels on stm32f3
* :github:`40635` - gen_app_partitions.py may not include all object files produced by build system
* :github:`40620` - zephyr with cadence xtensa core dsp LX7 ，helloworld program  cannot be entered after the program is executed
* :github:`40593` - tests: lib: cmsis_dsp: Overflows in libraries.cmsis_dsp.matrix
* :github:`40591` - RFC: Replace TinyCBOR with ZCBOR within Zephyr
* :github:`40588` - mgmg/mcumg/lib: Replace TinyCBOR with zcbor
* :github:`40559` - Move LittlefFS configuration header and CMakeLists.txt from module to zephyr/modules
* :github:`40371` - modem: uart interface does not disable TX interrupt in ISR
* :github:`40360` - Error messages with the sample: Asynchronous Socket Echo Server Using select()
* :github:`40306` - ESP32 BLE transmit error
* :github:`40298` - Bluetooth assertions in lll_conn.c
* :github:`40204` - Bluetooth: ll_sync_create_cancel fails with BT_HCI_ERR_CMD_DISALLOWED before BT_HCI_EVT_LE_PER_ADV_SYNC_ESTABLISHED is generated
* :github:`40195` - CONFIG_BOARD default value using cmake -DBOARD define value
* :github:`39948` - kernel.common.stack_sentinel fails on qemu_cortex_a9
* :github:`39922` - Instruction fetch fault happens on RISC-V with XIP and userspace enabled
* :github:`39834` - [Coverity CID: 240669] Unrecoverable parse warning in subsys/jwt/jwt.c
* :github:`39738` - twister: tests: samples: Skips on integration_platforms in CI
* :github:`39520` - Add support for the BlueNRG-LP SoC
* :github:`39432` - Periodic adv. syncing takes longer and bt_le_per_adv_sync_delete returns error after commit ecf761b4e9
* :github:`39314` - Invalid CONTROLLER_ID in usb_dc_mcux.c for LPC54114
* :github:`39194` - Process: investigate GitHub code review replacements
* :github:`39184` - HawkBit hash mismatch
* :github:`39176` - overflow in sensor_value_from_double
* :github:`39132` - subsys/net/ip/tcp2: Missing feature to decrease Receive Window size sent in the ACK messge
* :github:`38978` - Esp32 compilation error after enabling CONFIG_NEWLIB_LIBC
* :github:`38966` - Please add STM32F412VX
* :github:`38747` - data/json: encoding issues with array in object_array
* :github:`38632` - Multiple potential dead-locks modem_socket_wait_data
* :github:`38570` - Process: binary blobs in Zephyr
* :github:`38567` - Process: legitimate signed-off-by lines
* :github:`38548` - stm32: QSPI flash driver concurrent access issue
* :github:`38305` - Update to LVGL v8
* :github:`38279` - Bluetooth: Controller: assert LL_ASSERT(!radio_is_ready()) in lll_conn.c
* :github:`38268` - Multiple defects in "Multi Producer Single Consumer Packet Buffer" library
* :github:`38179` - twister: only report failures in merged junit output
* :github:`37798` - Change nRF5340DK board files to handle CPUNET pin configuration with DTS nodes
* :github:`37730` - http_client_req: Timeout likely not working as expected
* :github:`37710` - Bluetooth advert packet size is size of maximum packet not size of actual data
* :github:`37683` - STM32 Eth Tx DMA always uses first descriptor instead of going through circular buffer
* :github:`37324` - subsys/mgmt/hawkbit: Unable to finish download if CPU blocking function (i.e. ``flash_img_buffered_write``) is used
* :github:`37294` - RTT logs not found with default west debug invocation on jlink runner
* :github:`37191` - nrf5340: Support +3dBm TX power
* :github:`37186` - entropy: Bluetooth derived entropy device
* :github:`36905` - Improve (k\_)malloc and heap documentation
* :github:`36882` - MCUMGR: fs upload fail for first time file upload
* :github:`36645` - minimal libc: add strtoll and strtoull functions
* :github:`36571` - LoRa support for random DevNonce and NVS stack state storage
* :github:`36266` - kernel timeout_list NULL pointer access
* :github:`35316` - log_panic() hangs kernel
* :github:`34737` - Can't compile CIVETWEB with CONFIG_NO_OPTIMIZATIONS or CONFIG_DEBUG
* :github:`34590` - Functions getopt_long and getopt_long_only from the FreeBSD project
* :github:`34256` - Add support for FVP in CI / SDK
* :github:`34218` - Civetweb server crashing when trying to access invalid resource
* :github:`34204` - nvs_write: Bad documented return value.
* :github:`33876` - Lora sender sample build error for esp32
* :github:`32885` - Zephyr C++ support documentation conflicts to the code
* :github:`31613` - Undefined reference errors when using External Library with k_msgq_* calls
* :github:`30724` - CAN J1939 Support
* :github:`30152` - Settings nvs subsystem uses a hardcoded flash area label
* :github:`29981` - Improve clock initialization on LPC & MXRT600
* :github:`29941` - Unable to connect Leshan LwM2M server using x86 based LwM2M client
* :github:`29199` - github integration: ensure maintainers are added to PRs that affect them
* :github:`29107` - Bluetooth: hci-usb uses non-standard interfaces
* :github:`28009` - Add connection status to the connection info
* :github:`27841` - samples: disk: unable to access sd card
* :github:`27177` - Unable to build samples/bluetooth/st_ble_sensor for steval_fcu001v1 board
* :github:`26731` - Single channel selection - Bluetooth - Zephyr
* :github:`26038` - build zephyr with llvm fail
* :github:`25362` - better support for posix api read write in socketpair tests
* :github:`24733` - Misconfigured environment
* :github:`23347` - net: ieee802154_radio: API improvements
* :github:`22870` - Add Cortex-M4 testing platform
* :github:`22455` - How to assign USB endpoint address manually in stm32f4_disco for CDC ACM class driver
* :github:`22247` - Discussion: Supporting the Arduino ecosystem
* :github:`22161` - add shell command for the settings subsystem
* :github:`21994` - Bluetooth: controller: split: Fix procedure complete event generation
* :github:`21409` - sanitycheck: cmd.exe colorized output
* :github:`20269` - Add support for opamps in MCUs
* :github:`19979` - Implement Cortex-R floating-point support
* :github:`19244` - BLE throughput of DFU by Mcumgr is too slow
* :github:`17893` - dynamic threads don't work on x86 in some configurations
* :github:`17743` - cross compiling for RISCV32 fails as compiler flags are not supplied by board but must be in target.cmake
* :github:`17005` - Upstreamability of SiLabs RAIL support
* :github:`16406` - west: runners: Add --id and --chiperase options
* :github:`16205` - Add support to west to flash w/o a build, but given a binary
* :github:`15820` - mcumgr: taskstat show name & used size
* :github:`14649` - CI testing must be retry-free
* :github:`14591` - Infineon Tricore architecture support
* :github:`13318` - k_thread_foreach api breaks real time semantics
* :github:`9578` - Windows installation of SDK needs 'just works' installer
* :github:`8536` - imxrt1050: Replace systick with gpt or other system timer
* :github:`8481` - Remove the Kconfig helper options for nRF ICs once DT can replace them
* :github:`8139` - Driver for BMA400 accelerometer
* :github:`6654` - efm32wg_stk3800 bluetooth sample do not compile (add support)
* :github:`6162` - LwM2M: Support Queue Mode Operation
* :github:`1495` - esp32: newlibc errors
* :github:`1392` - No module named 'elftools'
* :github:`3192` - Shutting down BLE support
* :github:`3150` - Si1153 Ambient Light Sensor, Proximity, and Gesture detector support
