:orphan:

.. _zephyr_3.0:

Zephyr 3.0.0 (Working draft)
############################

We are pleased to announce the release of Zephyr RTOS version 3.0.0.



The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************

The following CVEs are addressed by this release:

More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html

* CVE-2021-3835: `Zephyr project bug tracker GHSA-fm6v-8625-99jf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fm6v-8625-99jf>`_

* CVE-2021-3861: `Zephyr project bug tracker GHSA-hvfp-w4h8-gxvj
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hvfp-w4h8-gxvj>`_

* CVE-2021-3966: `Zephyr project bug tracker GHSA-hfxq-3w6x-fv2m
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hfxq-3w6x-fv2m>`_

Known issues
************

You can check all currently known issues by listing them using the GitHub
interface and listing all issues with the `bug label
<https://github.com/zephyrproject-rtos/zephyr/issues?q=is%3Aissue+is%3Aopen+label%3Abug>`_.

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

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

* Following functions in UART Asynchronous API are using microseconds to represent
  timeout instead of milliseconds:
  * :c:func:`uart_tx`
  * :c:func:`uart_rx_enable`

* Replaced custom LwM2M :c:struct:`float32_value` type with a native double type.

* Added function for getting status of USB device remote wakeup feature.

* Added ``ranges`` and ``dma-ranges`` as invalid property to be used with DT_PROP_LEN()
  along ``reg`` and ``interrupts``.

* The existing :c:func:`crc16` and :c:func:`crc16_ansi` functions have been
  modified. The former has a new signature. The latter now properly calculates the
  CRC-16-ANSI checksum. A new function, :c:func:`crc16_reflect`, has been
  introduced to calculated reflected CRCs.

* GATT callbacks ``bt_gatt_..._func_t`` would previously be called with argument
  ``conn = NULL`` in the event of a disconnect. This was not documented as part
  of the API. This behavior is changed so the ``conn`` argument is provided as
  normal when a disconnect occurs.

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

* The following Kconfig options related to radio front-end modules (FEMs) were
  removed:

  * ``CONFIG_BT_CTLR_GPIO_PA``
  * ``CONFIG_BT_CTLR_GPIO_PA_PIN``
  * ``CONFIG_BT_CTLR_GPIO_PA_POL_INV``
  * ``CONFIG_BT_CTLR_GPIO_PA_OFFSET``
  * ``CONFIG_BT_CTLR_GPIO_LNA``
  * ``CONFIG_BT_CTLR_GPIO_LNA_PIN``
  * ``CONFIG_BT_CTLR_GPIO_LNA_POL_INV``
  * ``CONFIG_BT_CTLR_GPIO_LNA_OFFSET``
  * ``CONFIG_BT_CTLR_FEM_NRF21540``
  * ``CONFIG_BT_CTLR_GPIO_PDN_PIN``
  * ``CONFIG_BT_CTLR_GPIO_PDN_POL_INV``
  * ``CONFIG_BT_CTLR_GPIO_CSN_PIN``
  * ``CONFIG_BT_CTLR_GPIO_CSN_POL_INV``
  * ``CONFIG_BT_CTLR_GPIO_PDN_CSN_OFFSET``

  This FEM configuration is hardware description, and was therefore moved to
  :ref:`devicetree <dt-guide>`. See the :dtcompatible:`nordic,nrf-radio`
  devicetree binding's ``fem`` property for information on what to do instead
  on the Nordic open source controller.

* Removed Kconfig option ``CONFIG_USB_UART_CONSOLE``.
  Option ``CONFIG_USB_UART_CONSOLE`` was only relevant for console driver
  when CDC ACM UART is used as backend. Since the behavior of the CDC ACM UART
  is changed so that it more closely mimics the real UART controller,
  option is no longer necessary.

* Removed Kconfig option ``CONFIG_OPENOCD_SUPPORT`` in favor of
  ``CONFIG_DEBUG_THREAD_INFO``.

* Removed ``flash_write_protection_set()`` along with the flash write protection
  implementation handler.

* Removed ``CAN_BUS_UNKNOWN`` and changed the signature of
  :c:func:`can_get_state` to return an error code instead.

* Removed ``DT_CHOSEN_ZEPHYR_CANBUS_LABEL`` in favor of utilizing
  :c:macro:`DEVICE_DT_GET`.

* Removed ``CONFIG_LOG_MINIMAL``. Use ``CONFIG_LOG_MODE_MINIMAL`` instead.

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

* Removed ``<power/reboot.h>`` and ``<power/power.h>`` deprecated headers.
  ``<sys/reboot.h>`` and ``<pm/pm.h>`` should be used instead.
* :c:macro:`USBD_CFG_DATA_DEFINE` is deprecated in favor of utilizing
  :c:macro:`USBD_DEFINE_CFG_DATA`
* :c:macro:`SYS_DEVICE_DEFINE` is deprecated in favor of utilizing
  :c:macro:`SYS_INIT`.
* :c:func:`device_usable_check` is deprecated in favor of utilizing
  :c:func:`device_is_ready`.
* Custom CAN return codes (:c:macro:`CAN_TX_OK`, :c:macro:`CAN_TX_ERR`,
  :c:macro:`CAN_TX_ARB_LOST`, :c:macro:`CAN_TX_BUS_OFF`,
  :c:macro:`CAN_TX_UNKNOWN`, :c:macro:`CAN_TX_EINVAL`,
  :c:macro:`CAN_NO_FREE_FILTER`, and :c:macro:`CAN_TIMEOUT`) are deprecated in
  favor of utilizing standard errno error codes.
* :c:func:`can_configure` is deprecated in favor of utilizing
  :c:func:`can_set_bitrate` and :c:func:`can_set_mode`.
* :c:func:`can_attach_workq` is deprecated in favor of utilizing
  :c:func:`can_add_rx_filter_msgq` and :c:func:`k_work_poll_submit`.
* :c:func:`can_attach_isr` is is deprecated and replaced by
  :c:func:`can_add_rx_filter`.
* :c:macro:`CAN_DEFINE_MSGQ` is deprecated and replaced by
  :c:macro:`CAN_MSGQ_DEFINE`.
* :c:func:`can_attach_msgq` is deprecated and replaced by
  :c:func:`can_add_rx_filter_msgq`.
* :c:func:`can_detach` is deprecated and replaced by
  :c:func:`can_remove_rx_filter`.
* :c:func:`can_register_state_change_isr` is deprecated and replaced by
  :c:func:`can_set_state_change_callback`.
* :c:func:`can_write` is deprecated in favor of utilizing :c:func:`can_send`.

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

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

* Serial

  * Added new APIs to support datum wider than 8-bit.

    * :kconfig:`CONFIG_UART_WIDE_DATA` is added to enable this new APIs.

    * Following functions, mirroring similar functions for 8-bit datum,
      are added:

      * :c:func:`uart_tx_u16` to send a given number of datum from buffer.

      * :c:func:`uart_rx_enable_u16` to start receiving data.

      * :c:func:`uart_rx_buf_rsp_u16` to set buffer for receiving data
        in response to ``UART_RX_BUF_REQUEST`` event.

      * :c:func:`uart_poll_in_u16` to poll for input.

      * :c:func:`uart_poll_out_u16` to output datum in polling mode.

      * :c:func:`uart_fifo_fill_u16` to fill FIFO with data.

      * :c:func:`uart_fifo_read_u16` to read data from FIFO.

* Devicetree

  * Added new Devicetree helpers:

    * :c:macro:`DT_INST_ENUM_IDX`
    * :c:macro:`DT_INST_ENUM_IDX_OR`
    * :c:macro:`DT_INST_PARENT`

  * New :ref:`devicetree-ranges-property` APIs

  * Removed: ``DT_CHOSEN_ZEPHYR_CANBUS_LABEL``; use
    ``DEVICE_DT_GET(DT_CHOSEN(zephyr_canbus))`` to get the device instead, and
    read the name from the device structure if needed.

  * Removed deprecated macros:

    * ``DT_CLOCKS_LABEL_BY_IDX``
    * ``DT_CLOCKS_LABEL``
    * ``DT_INST_CLOCKS_LABEL_BY_IDX``
    * ``DT_INST_CLOCKS_LABEL_BY_NAME``
    * ``DT_INST_CLOCKS_LABEL``
    * ``DT_PWMS_LABEL_BY_IDX``
    * ``DT_PWMS_LABEL_BY_NAME``
    * ``DT_PWMS_LABEL``
    * ``DT_INST_PWMS_LABEL_BY_IDX``
    * ``DT_INST_PWMS_LABEL_BY_NAME``
    * ``DT_INST_PWMS_LABEL``
    * ``DT_IO_CHANNELS_LABEL_BY_IDX``
    * ``DT_IO_CHANNELS_LABEL_BY_NAME``
    * ``DT_IO_CHANNELS_LABEL``
    * ``DT_INST_IO_CHANNELS_LABEL_BY_IDX``
    * ``DT_INST_IO_CHANNELS_LABEL_BY_NAME``
    * ``DT_INST_IO_CHANNELS_LABEL``
    * ``DT_DMAS_LABEL_BY_IDX``
    * ``DT_INST_DMAS_LABEL_BY_IDX``
    * ``DT_DMAS_LABEL_BY_NAME``
    * ``DT_INST_DMAS_LABEL_BY_NAME``
    * ``DT_ENUM_TOKEN``
    * ``DT_ENUM_UPPER_TOKEN``


* CAN

  * Added :c:func:`can_get_max_filters` for retrieving the maximum number of RX
    filters support by a CAN controller device.

Kernel
******

  * Added support for event objects.  Threads may wait on an event object such
    that any events posted to that event object may wake a waiting thread if the
    posting satisfies the waiting threads' event conditions.
  * Extended CPU runtime stats to track current, total, peak and average usage
    (as bounded by the scheduling of the idle thread).  This permits a developer
    to obtain more system information if desired to tune the system.
  * Added "thread_usage" API for thread runtime cycle monitoring.
  * Fixed timeout issues when SYSTEM_CLOCK_SLOPPY_IDLE is configured.

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

* ARM

  * AARCH32

    * Converted inline assembler calls to using CMSIS provided functions for
      :c:func:`arm_core_mpu_enable` and :c:func:`arm_core_mpu_disable`.
    * Replaced Kconfig `CONFIG_CPU_CORTEX_R` with `CONFIG_ARMV7_R` to enable
      differentiation between v7 and v8 Cortex-R.
    * Updated the Cortex-R syscall behavior to match that of the Cortex-M.

  * AARCH64

    * Fixed out-of-bounds error when large number of IRQs are enabled and ignore
      special INTDs between 1020 and 1023
    * Added MPU code for ARMv8R
    * Various MMU fixes
    * Added nocache memory segment support
    * Added Xen hypercall interface for ARM64
    * Fixed race condition on SMP scheduling code.

* Xtensa

  * Introduced a mechanism to automatically figure out which scratch registers
    are used for internal code, instead of hard-coding. This is to accommodate
    the configurability of the architecture where some registers may exist in
    one SoC but not on another one.

  * Added coredump support for Xtensa.

  * Added GDB stub support for Xtensa.

Bluetooth
*********

* Updated all experimental features in Bluetooth to use the new ``EXPERIMENTAL``
  selectable Kconfig option
* Bluetooth now uses logging v2 as with the rest of the tree

* Audio

  * Implemented the Content Control ID module (CCID)
  * Added support for the Coordinated Set Identification Service (CSIS)
  * Added a Temporary Object Transfer client implementation
  * Added a Media Control client implementation
  * Added a Media Control Server implementation
  * Implemented the Media Proxy API
  * Implemented CIG reconfiguration and state handling
  * Updated the CSIS API for both server and client
  * Added Basic Audio Profile (BAP) unicast and broadcast server support

* Direction Finding

  * Added support for filtering of Periodic Advertising Sync by CTE type
  * Added additional handling logic for Periodic Advertising Sync Establishemnt
  * Added CTE RX, sampling and IQ report handling in DF connected mode
  * Added support for CTE configuration in connected mode
  * Direction Finding connection mode now uses the newly refactored LLCP
    implementation

* Host

  * The :kconfig:`CONFIG_BT_SETTINGS_CCC_STORE_ON_WRITE` is now enabled by default.
    Storing CCC right after it's written reduces risk of inconsistency of CCC values between
    bonded peers
  * Added support for L2CAP channel reconfiguration.
  * Added support for SMP error code 0xF, where the peer rejects a distributed
    key
  * Added ``bt_gatt_service_is_registered()`` to verify sevice registration
  * Added create an delete procedures to the Object Transfer Service
    implementation
  * Added support for reassembling extended advertising reports
  * Added support for reassembling periodic advertising reports
  * Added support for setting long periodic advertising data
  * Implemented GATT Long Writes reassembly before forwarding them up to the
    application
  * The GATT Server DB hash calculation logic has been corrected
  * Added storing of the CCC data upon paring complete

* Mesh

  * Split out the Proxy services, which can now be compiled out
  * Added an option to call back on every retransmission
  * Added support for multiple Advertising Sets
  * Refactored he Config Client and Health Client API to allow async use

* Controller

  * Added support for a brand new implementation of LL Control Procedures
    (LLCP), currently disabled by default, can be enabled using the
    ``CONFIG_BT_LL_SW_LLCP_IMPL`` Kconfig choice
  * Added initial support for Broadcast Isochronous Groups (BIG)
  * Integrated ISO Sync RX datapath
  * Transitioned FEM configurations (PA/LNA) from Kconfig to Devicetree
  * Updated the supported Bluetooth HCI version to 5.3
  * Added support for Periodic Advertiser List
  * Added support for Periodic Advertising Synchronization Receive Enable
  * Added support for filter access list filtering for exended scanning
  * Added support for Advertising Extensions dynamic TX power control
  * Added handling of direct address type in extended adv reports
  * Implemented auxiliary PDU device address matching
  * Implemented fragmentation of extended advertising reports over HCI
  * Implemented Extended Advertising and Scan report back-to-back chaining
  * Implemented Periodic Advertising ADI support,including duplicate filtering
  * Introduced a new preferred central connection spacing feature


* HCI Driver

  * Added support for a new optional ``setup()`` function for vendor-specific
    setup code required to bring up the controller
  * Fixed DTM mode not being reset correctly with the HCI Reset command
  * Limited the maximum ACL TX buffer size to 251 bytes

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

* Added support for these SoC series:

  * GigaDevice GD32VF103, GD32F3X0, GD32F403 and GD32F450.
  * Raspberry Pi RP2040
  * NXP i.MXRT595, i.MX8MQ, i.MX8MP

* Removed support for these SoC series:


* Made these changes in other SoC series:

  * stm32h7: Added SMPS support
  * stm32u5: Enabled TF-M

* Changes for ARC boards:


* Added support for these ARM boards:

  * GigaDevice GD32F350R-EVAL
  * GigaDevice GD32F403Z-EVAL
  * GigaDevice GD32F450I-EVAL
  * OLIMEX-STM32-H405
  * NXP MIMXRT595-EVK
  * NXP MIMX8MQ-EVK
  * NXP MIMX8MP-EVK
  * Raspberry Pi Pico
  * ST Nucleo G031K8
  * ST Nucleo H7A3ZI Q
  * ST STM32G081B Evaluation

* Added support for these ARM64 boards:

  * Intel SoC FPGA Agilex development kit

* Removed support for these ARM boards:


* Removed support for these X86 boards:

* Added support for these RISC-V boards:

  * GigaDevice GD32VF103V-EVAL
  * Sipeed Longan Nano and Nano Lite

* Made these changes in other boards:

  * sam_e70_xplained: Added support for CAN-FD driver
  * mimxrt11xx: Added SOC level power management
  * mimxrt11xx: Added support for GPT timer as OS timer


* Added support for these following shields:


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

* ADC

  * Added support for stm32u5 series
  * stm32: Added shared IRQ support

* CAN

  * Renamed ``zephyr,can-primary`` chosen property to ``zephyr,canbus``.
  * Added :c:macro:`CAN_ERROR_WARNING` CAN controller state.
  * Added Atmel SAM Bosch M_CAN CAN-FD driver.
  * Added NXP LPCXpresso Bosch M_CAN CAN-FD driver.
  * Added ST STM32H7 Bosch M_CAN CAN-FD driver.
  * Rework transmission error handling the NXP FlexCAN driver to automatically
    retry transmission in case or arbitration lost or missing acknowledge and
    to fail early in :c:func:`can_send` if in :c:macro:`CAN_BUS_OFF` state.
  * Added support for disabling automatic retransmissions ("one-shot" mode") to
    the ST STM32 bxCAN driver.
  * Converted the emulated CAN loopback driver to be configured through
    devicetree instead of Kconfig.

* Counter

  * stm32: Added timer based counter driver (stm32f4 only for now).

* DAC

  * Added support for GigaDevice GD32 SoCs
  * Added support for stm32u5 series

* Disk

  * stm32 sdmmc: Converted from polling to IT driven mode and added Hardware
    Flow Control option

* DMA

  * Added support for suspending and resuming transfers
  * Added support for SoCs with DMA between application and embedded
    processors, allows for transfer directions to be identified as such.
  * mimxrt11xx: Added support for DMA

* EEPROM

  * Added support for the EEPROM present in the TMP116 digital temperature
    sensor.

* Entropy

  * Added support for stm32u5 series

* Ethernet

  * Added support for Synopsys DesignWare MAC driver with implementation
    on stm32h7 series.
  * stm32 (hal based): Added promiscuous mode support
  * stm32 (hal based): Added PTP L2 timestamping support
  * mimxrt11xx: Added support for 10/100M ENET

* Flash

  * stm32g0: Added Dual Bank support
  * stm32_qspi: General enhancement (Generation of the reset pulse for SPI-NOR memory,
    Usage of 4IO for read / write (4READ/4PP), Support for different QSPI banks,
    Support for 4B addressing on spi-nor)

  * ite_i8xxx2: The driver has been reworked so the write/erase protection
    management has been moved to implementations of the flash_write()
    and the flash_erase() calls. The driver was keeping the write protection API
    which was designed to be removed since 2.6 release.


* GPIO

  * Added driver for GigaDevice GD32 SoCs

* I2C

  * Added driver for GigaDevice GD32 SoCs
  * Added stats functionality to all drivers
  * Added I2C driver for Renesas R-Car platform
  * Added support for TCA9548A I2C switch

* I2S

  * mimxrt10xx: Added support for I2S
  * mimxrt11xx: Added support for I2S

* Interrupt Controller

  * Added ECLIC driver for GigaDevice RISC-V GD32 SoCs
  * Added EXTI driver for GigaDevice GD32 SoCs

* MBOX

  * Added MBOX NRFX IPC driver

* MEMC

  *  Added support for stm32f7 series

* Pin control

  * Introduced a new state-based pin control (``pinctrl``) API inspired by the
    Linux design principles. The ``pinctrl`` API will replace the existing
    pinmux API, so all platforms using pinmux are encouraged to migrate. A
    detailed guide with design principles and implementation guidelines can be
    found in :ref:`pinctrl-guide`.
  * Platforms already supporting the ``pinctrl`` API:

    * GigaDevice GD32
    * Nordic (preliminary support)
    * Renesas R-Car
    * STM32

* PWM

  * stm32: DT bindings: `st,prescaler` property was moved from pwm
    to parent timer node.
  * stm32: Implemented PWM capture API
  * Added driver for GigaDevice GD32 SoCs. Only PWM output is supported.
  * mimxrt1021: Added support for PWM

* Sensor

  * Added Invensense MPU9250 9-axis IMU driver.
  * Added ITE IT8XX2 tachometer driver.
  * Added STM L5 die temperature driver.
  * Added STM I3G4250D gyroscope driver.
  * Added TI TMP108 driver.
  * Added Winsen MH-Z19B CO2 driver.
  * Constified device config access in sbs_gauge and LM75 drivers.
  * Dropped DEV_DATA/DEV_CFG usage from various drivers.
  * Moved ODR and range properties from Kconfig to devicetree in various STM
    drivers.
  * Refactored INA230 driver to add support for INA237 variant.
  * Refactored various drivers to use I2C/SPI/GPIO DT APIs.
  * Enabled level triggered interrupts in LIS2DH driver.
  * Fixed TMP112 driver to avoid I2C burst write portability issues.
  * Fixed SENSOR_DEG2RAD_DOUBLE macro in LSM6DS0 driver.
  * Fixed gain factor in LSM303DLHC magnetometer driver.

* Serial

  * stm32: Implemented half-duplex option.
  * Added driver for GigaDevice GD32 SoCs. Polling and interrupt driven modes
    are supported.

* SPI

  * stm32: Implemented Frame format option (TI vs Motorola).
  * mimxrt11xx: Added support for Flexspi

* Timer

  * stm32 lptim: Added support for stm32h7

* USB

  * Added support for stm32u5 series (OTG full speed)

* Watchdog

  * Added support for stm32u5 series (Independent and Window)
  * mimxrt1170: Added support for watchdog on CM7


Networking
**********

* Misc:

  * gptp: clock sync ratio as double, not float

USB
***


Build and Infrastructure
************************

* Build system

  * New CMake extension functions:

    * ``dt_alias()``
    * ``target_sources_if_dt_node()``

  * The following CMake extension functions now handle devicetree aliases:

    * ``dt_node_exists()``
    * ``dt_node_has_status()``
    * ``dt_prop()``
    * ``dt_num_regs()``
    * ``dt_reg_addr()``
    * ``dt_reg_size()``

* Devicetree

  * Support for the devicetree compatible ``ti,ina23x`` has been removed.
    Instead, use :dtcompatible:`ti,ina230` or :dtcompatible:`ti,ina237`.

* West (extensions)

  * Added support for gd32isp runner


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

* Management

  * Fixed the mcumgr SMP protocol over serial not adding the length of the CRC16 to packet length.
  * Kconfig option OS_MGMT_TASKSTAT is now disabled by default.

* Power management

  * Power management resources are now manually allocated by devices using
    :c:macro:`PM_DEVICE_DEFINE`, :c:macro:`PM_DEVICE_DT_DEFINE` or
    :c:macro:`PM_DEVICE_DT_INST_DEFINE`. Device instantiation macros take now
    a reference to the allocated resources. The reference can be obtained using
    :c:macro:`PM_DEVICE_GET`, :c:macro:`PM_DEVICE_DT_GET` or
    :c:macro:`PM_DEVICE_DT_INST_GET`. Thanks to this change, devices not
    implementing support for device power management will not use unnecessary
    memory.
  * Device runtime power management API error handling has been simplified.
  * :c:func:`pm_device_runtime_enable` suspends the target device if not already
    suspended. This change makes sure device state is always kept in a
    consistent state.
  * Improved PM states Devicetree macros naming
  * Added a new API call :c:func:`pm_state_cpu_get_all` to obtain information
    about CPU power states.
  * ``pm/device.h`` is no longer included by ``device.h``, since the device API
    no longer depends on the PM API.
  * Added support for power domains. Power domains are implemented as
    simple devices and use the existent PM API for resume and suspend, devices
    under a power domain are notified when it becomes active or suspended.
  * Added a new action :c:enum:`PM_DEVICE_ACTION_TURN_ON`. This action
    is used by power domains to notify devices when it becomes active.
  * Added new API (:c:func:`pm_device_state_lock`,
    :c:func:`pm_device_state_unlock` and
    :c:func:`pm_device_state_is_locked`) to lock a device pm
    state. When the device has its state locked, the kernel will no
    longer suspend and resume devices when the system goes to sleep
    and device runtime power management operations will fail.
  * :c:func:`pm_device_state_set` is deprecated in favor of utilizing
    :c:func:`pm_device_action_run`.
  * Proper multicore support. Devices are suspended only when the last
    active CPU. A cpu parameter was added to Policy and SoC interfaces.

* Tracing

  * Support all syscalls being traced using the python syscall generator to
    introduce a tracing hook call.

* IPC

  * Added IPC service support and RPMsg with static VRINGs backend

HALs
****

* STM32

  * stm32cube/stm32wb and its lib: Upgraded to version V1.12.1
  * stm32cube/stm32mp1: Upgraded to version V1.5.0
  * stm32cube/stm32u5: Upgraded to version V1.0.2

* Added `GigaDevice HAL module
  <https://github.com/zephyrproject-rtos/hal_gigadevice>`_

MCUboot
*******

* Fixed serial recovery skipping on nrf5340.
* Fixed issue which caused that progressive's erase feature was off although was
  selected by Kconfig (introduced by #42c985cead).
* Added check of reset address in incoming image validation phase, see
  ``CONFIG_MCUBOOT_VERIFY_IMG_ADDRESS``.
* Allow image header bigger than 1 KB for encrypted images.
* Support Mbed TLS 3.0.
* stm32: watchdog support.
* many documentation improvements.
* Fixed deadlock on cryptolib selectors in Kconfig.
* Fixed support for single application slot with serial recovery.
* Added various hooks to be able to change how image data is accessed, see
  ``CONFIG_BOOT_IMAGE_ACCESS_HOOKS``.
* Added custom commands support in serila recovery (PERUSER_MGMT_GROUP): storage
  erase ``CONFIG_BOOT_MGMT_CUSTOM_STORAGE_ERASE``, custo image status
  ``CONFIG_BOOT_MGMT_CUSTOM_IMG_LIST``.
* Added support for direct image upload, see
  ``CONFIG_MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD`` in serial recovery.

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

* Updated TF-M to 1.5.0 release, with a handful of additional cherry-picked
  commits.

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

* A new theme is used by the Doxygen HTML pages. It is based on
  `doxygen-awesome-css <https://github.com/jothepro/doxygen-awesome-css>`_
  theme.

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

* Drivers: clock_control: Added test suite for stm32 (u5, h7).

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

These GitHub issues were addressed since the previous 2.7.0 tagged
release:

* :github:`42973` - Zephyr-sdkConfig.cmake file not found
* :github:`42961` - Bluetooth: periodic_sync sample never executes .recv callback
* :github:`42942` - sizeof(struct sockaddr_storage) is smaller than sizeof(struct sockaddr_in6)
* :github:`42862` - Bluetooth: L2CAP: Security check on l2cap request is wrong
* :github:`42816` - samples: Bluetooth: df: DF samples build fail
* :github:`42794` - samples: Bluetooth: df: Wrong periodic sync termination handling in direction_finding_connectionless_rx sample
* :github:`42793` - net_socket: mimxrt1170_evk_cm7: build failure
* :github:`42778` - bluetooth: autopts: can't start on the board
* :github:`42759` - armv8 qemu_cortex_a53 bug(gdb) on official sample
* :github:`42756` - mec15xxevb_assy6853: ringbuffer testsuite failing once due to a timeout randomly when run multiple times.
* :github:`42746` - echo_server and echo_client sample code builds fail for native_posix_64
* :github:`42735` - Bluetooth: Host: df: Uninitialized variable used to assign length of antenna identifiers
* :github:`42693` - Bluetooth: DF connectionless TX sample fails to build if CONFIG_BT_CTLR_DF_SCAN_CTE_RX  is disabled
* :github:`42690` - sample.bootloader.mcuboot.serial_recovery fails to compile
* :github:`42687` - [v 1.13 ] HID is not connecting to intel 7265 Bluetooth Module
* :github:`42665` - tests: kernel.common.context: test failure on imxrt series platform
* :github:`42648` - Setting long advertising data does not work
* :github:`42627` - Hardfault regression on 90 tests on CM0+ STM32 boards introduced by #39963 Cortex-R mpu fix  on 90 tests
* :github:`42615` - [v2.7.2] Bluetooth: Controller: Missing ticks slot offset calculation in Periodic Advertising event scheduling
* :github:`42608` - bsim_test_mesh: pb_adv_reprovision.sh fails after commit to prevent multiple arguments in logging
* :github:`42604` - doc: broken CONFIG_GPIO link in https://docs.zephyrproject.org/latest/reference/peripherals/gpio.html
* :github:`42602` - I2C scan writes 0 bytes
* :github:`42588` - lsm6dso
* :github:`42586` - Net buffer macros rely on GCC extension
* :github:`42585' - 3.0.0-rc1: warning: LOG_STRDUP_MAX_STRING was assigned the value '100` but got the value ''
* :github:`42581` - include: drivers: clock_control: stm32 incorrect DT_PROP is used for 'xtpre'
* :github:`42573` - docs: sphinx-build issue, zephyr conf.py issue or something else?
* :github:`42556` - frdm_k64f: samples/subsys/modbus are failing with a timeout.
* :github:`42555` - mimxrt1050_evk: samples/subsys/task_wdt is failing with control thread getting stuck
* :github:`42502` - Unable to add a specific syscon driver out-of-tree
* :github:`42499` - mec15xxevb_assy6853: boards.mec15xxevb_assy6853.i2c.i2c_pca95xx test failed.
* :github:`42477` - Linker scripts not working properly on xtensa
* :github:`42462` - logging: syst/v2: hang or crash if log contains string arguments
* :github:`42435` - NXP RT1170/1160 base address error for SAI4 in devicetree
* :github:`42417` - tests drivers flash on stm32 qspi controller
* :github:`42414` - twister: testcases skipped by ztest_test_skip() have reason "Unknown" in report
* :github:`42411` - CLion CMake error while opening nRF-Connect-SDK project
* :github:`42403` - 'crc16_ansi()' isn't CRC-16-ANSI
* :github:`42397` - Direction finding nrf5340: uninitialized memory is passed to the callback
* :github:`42396` - ztest: weak test_main() is promoted over given testsuite's test_main() if the testsuite uses own library
* :github:`42392` - Openocd Thread awareness broken on 3.0
* :github:`42385` - STM32: Entropy : health test config & magic never used
* :github:`42380` - USDHC driver encounters usage fault during frequency setting
* :github:`42373` - add k_spin_lock() to doxygen prior to v3.0 release
* :github:`42367` - stm32wb: BLE connections not working
* :github:`42361` - OpenOCD flashing not working on cc1352r1_launchxl/cc26x2r1_launchxl
* :github:`42358` - net: lwm2m: client context accessed after being invalidated in lwm2m_rd_client_stop()
* :github:`42353` - LwM2M not pass official LightweightM2M-1.1-int-256 and stack enter dead lock
* :github:`42323` - lwm2m_engine: Error when enabling debug log because of uninitialized variable 'from_addr'
* :github:`42308` - pm: Force shutdown has no effect
* :github:`42299` - spi: nRF HAL driver asserts when PM is used
* :github:`42292` - Compilation failed: Driver MPU6050
* :github:`42279` - The pthreads are not working on user space. ARM64 cortex_a53 but generic requirement.
* :github:`42278` - USB CDC-ACM non-functional after host reboot
* :github:`42272` - doc: "Building on Linux without the Zephyr SDK" does not describe how to actually do it
* :github:`42269` - impossible to run west flash. NoneType error
* :github:`42228` - hal_stm32: Wrong symbol definition
* :github:`42227` - Teensy41 support SDHC - Storage init Error
* :github:`42218` - stm32wl: Issue when disabling gpio interrupt
* :github:`42214` - drivers: uart_nrfx_uarte: Cannot start another reception after reception is complete
* :github:`42208` - tests/subsys/logging/log_api/ fails qemu_leon3 if ptr_in_rodata() is enabled for SPARC
* :github:`42205` - drivers: i2s_sam_ssc: data received via I2S bus are partially corrupted
* :github:`42199` - drivers: qdec_sam: position measurement unstable if adc_sam_afec driver is enabled
* :github:`42187` - Settings tests are not correctly run
* :github:`42184` - Incremental build with config changes can produce an invalid binary when userspace is enabled
* :github:`42179` - driver: i2s: i2s_mcux_sai build failure on mixmrt1170_evk_cm7
* :github:`42177` - PM_STATE_INFO_DT_ITEMS_LIST macro does not fill the pm_min_residency array
* :github:`42176` - mec15xxevb_assy6853: can not be flashed due to "chip not identified"
* :github:`42171` - v3.0.0-rc1: mimxrt685_evk_cm33: undefined reference to 'SystemCoreClock' for latency_measure benchmark
* :github:`42170` - v3.0.0-rc1: mimxrt685_evk_cm33: dma driver build failure
* :github:`42168` - v3.0.0-rc1: mimxrt685_evk_cm33: i2s driver build failure
* :github:`42164` - tests/bluetooth/tester broken after switch to logging v2
* :github:`42163` - BIT_MASK(32) generate warning on 32 bits processor
* :github:`42161` - samples/compression/l4z: Expected RAM size for correct execution is too low
* :github:`42159` - samples: lora: Miss twister harness
* :github:`42157` - tests/lib/ringbuffer/libraries.ring_buffer: Miss a timeout
* :github:`42151` - eth_sam_gmac: unable to change MAC address
* :github:`42149` - DT_SPI_DEV_CS_GPIOS_DT_SPEC_GET is a layering violation that shouldn't exist
* :github:`42147` - hts221 driver fails to build
* :github:`42125` - Bluetooth: controller: llcp: lll_scan_aux does not compile with new LLCP
* :github:`42120` - HTS221 missed header hts221_reg.h
* :github:`42118` - mimxrt685_evk_cm33: Build failed on tests/drivers/spi/spi_loopback/drivers.spi.loopback
* :github:`42117` - efr32mg_sltb004a: Build issue on 'tests/drivers/spi/spi_loopback/drivers.spi.loopback'
* :github:`42112` - OTS: L2CAP: Unable to find channel of LE Credits packet
* :github:`42106` - AARCH64 stack initialisation fails with newlib for qemu_cortex_a53
* :github:`42098` - intel_adsp_cavs25: west sign command output some unrecognized ASCII char.
* :github:`42092` - stm32l0: Voltage regulator is not restored after leaving STOP mode
* :github:`42070` - west: spdx: Missing field for certain build results
* :github:`42065` - Bluetooth Controller: scan aux setup not checking extended header length of received packet
* :github:`42061` - obj_tracking hangs system on intel_adsp_cavs25
* :github:`42031` - Ringbuffer used in CDC_ACM seems to corrupt data if completely filled during transfer
* :github:`42024` - unrecognized argument in option '-mabi=lp64'
* :github:`42010` - intel_adsp_cavs18: Test cases failed on SMP related test cases (when CONFIG_MP_NUM_CPUS > 1)
* :github:`41996` - LWM2M writing too long strings trigger post_write_cb with previously written value
* :github:`41993` - Intel_adsp_cavs18: test cases can not get complete log
* :github:`41992` - Intel_adsp_cavs18: tests/kernel/smp_boot_delay: failed to run case
* :github:`41991` - Intel_adsp_cavs18: some test cases can not get any log
* :github:`41989` - tests: kernel: tickless: ADSP stalls after firmware downloaded on Up Xtreme
* :github:`41982` - twister: Test not aborted after board was timed out
* :github:`41976` - Extra closing bracket in function lsm6dso_handle_interrupt
* :github:`41963` - Kernel usage fault when using semaphore with multi-threading
* :github:`41953` - drivers: counter: mcux_ctimer: config used as non-const
* :github:`41952` - Log timestamp overflows when using LOGv2
* :github:`41951` - drivers: regulator: pmic: config used as non-const
* :github:`41945` - nxp_hal module: Seconds GPIO interrupt does never fire
* :github:`41943` - Intel_adsp_cavs15:   all the test cases run failed when running them by twister
* :github:`41942` - k_delayable_work being used as k_work in work's handler
* :github:`41938` - esp_wrover_kit: hello_world build failure
* :github:`41933` - updatehub  metadata size 0
* :github:`41915` - regression: Build fails after switching logging to V2
* :github:`41911` - pm_power_state_force returns false after first call
* :github:`41894` - ISOAL sink handle value checked incorrectly
* :github:`41887` - Documentation setup page missing packages for arch linux
* :github:`41879` - new ztest api fails when user space is enabled
* :github:`41877` - tests: kernel: fatal: ADSP stalls after firmware downloaded on Up Xtreme
* :github:`41873` - STM32H735 Power Supply Config incorrect
* :github:`41862` - tests: kernel: fail to download firmware to ADSP on Up Xtreme
* :github:`41861` - tests: kernel: There are no log output after flashing image to intel_adsp_cavs25
* :github:`41860` -  tests: kernel: queue: test case kernel.queue failed on ADSP of Up Xtreme
* :github:`41839` - BLE causes system sleep before main
* :github:`41835` - UP squared and acrn_ehl_crb:  test cases which have config SMP config failed
* :github:`41826` - MQTT connection failed
* :github:`41821` - ESP32 mcuboot bootloader failed
* :github:`41818` - In uart.h uart_irq_rx_ready() function not working properly for STM32F429 controller
* :github:`41816` - nrf_802154 radio driver takes random numbers directly from entropy source
* :github:`41806` - tests: driver: clock: nrf: Several failures on nrf52dk_nrf52832
* :github:`41794` - Bluetooth: ATT calls GATT callbacks with NULL conn pointer during disconnect
* :github:`41792` - CPU load halfed after PR #40784
* :github:`41745` - Power Management blinky example does not work on STM32H735G-DK
* :github:`41736` - Xtensa xt-xc++ Failed to build C++ code
* :github:`41734` - Can't enable pull-up resistors in ESP32 gpio 25,26,27
* :github:`41722` - mcuboot image not confirmed on nrf5340dk
* :github:`41707` - esp32 newlib
* :github:`41698` - What does one have to do to activate BT_DBG?
* :github:`41694` - undefined reference to '_open'
* :github:`41691` - Tickless Kernel on STM32H7 fails with Exception
* :github:`41686` - SPI CS signal not used in SSD1306 driver
* :github:`41683` - http_client: Unreliable rsp->body_start pointer
* :github:`41682` - ESP32 mcuboot
* :github:`41653` - Bluetooth: Controller: Extended Advertising Scan: Implement Scan Data length maximum
* :github:`41637` - Modbus Gateway: Transaction ID Error!
* :github:`41635` - Samples: iso_broadcast can not work properly unless some extra configuration flags
* :github:`41627` - PPP_L2 does not properly terminate the modem state machine when going down.
* :github:`41624` - ESP32 Uart uart_esp32_irq_tx_ready
* :github:`41623` - esp32: fail to build sample/hello_world with west
* :github:`41608` - LwM2M: Cannot set pmin/pmax on observable object
* :github:`41582` - stm32h7: CSI as PLL source is broken
* :github:`41581` - STM32 subghzspi fails pinctrl setup
* :github:`41557` - ESP32 Uart 2-bit Stop Register Setting
* :github:`41526` - ESP32 UART driver tx_complete fires before last byte sent
* :github:`41525` - tests: drivers: : ethernet: fails to link for sam_v71_xult and sam_v71b_xult
* :github:`41524` - drivers: dma: dma_mcux_edma: unused variables cause daily build failures
* :github:`41523` - drivers: i2c: i2c_mcux: unused variables cause daily build failures
* :github:`41509` - OpenThread's timer processing enters infinite loop in 49th day of system uptime
* :github:`41503` - including <net/socket.h> fails with redefinition of 'struct zsock_timeval' (sometimes :-) )
* :github:`41499` - drivers: iwdg: stm32: 'WDT_OPT_PAUSE_HALTED_BY_DBG' might not work
* :github:`41488` - Stall logging on nrf52840
* :github:`41486` - Zephyr project installation
* :github:`41482` - kernel: Dummy thread should not have an uninitialized resource pool
* :github:`41471` - qemu_cortex_r5: failed to enable debug
* :github:`41465` - Periodic advertising sync failure, when "DONT_SYNC_AOA" or "DONT_SYNC_AOD" options is used
* :github:`41442` - power_init for STM32L4 and STM32G0 in POST_KERNEL
* :github:`41440` - twister: skip marked as pass
* :github:`41426` - ARMCLANG build fail
* :github:`41422` - The option CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE blocks k_sleep when CONFIG_PM is enabled
* :github:`41418` - tests/lib/devicetree/devices fails to build for thingy52_nrf52832
* :github:`41413` - NRF52832 - PWM not working after zephyr update
* :github:`41404` - if zsock_connect() fails, tls_context does not get released automatically
* :github:`41399` - samples: userspace: syscall_perf test cannot be run
* :github:`41395` - littlefs(external spi flash) + mcuboot can't get right mount area
* :github:`41392` - arm ：arm-none-eabi  Unable to complete compilation, an error occurred during linking
* :github:`41385` - SHT3xD example does not work on ESP32
* :github:`41359` - Bluetooth: connection times out when trying to connect from certain centrals
* :github:`41352` - uart_esp32_poll_in returns incorrect value
* :github:`41347` - tests: kernel: RT1170 fails test_kernel_cpu_idle
* :github:`41339` - stm32, Unable to read UART while checking from Framing error.
* :github:`41331` - tests: drivers: disk: fail to handle no SD card situation
* :github:`41317` - ADSP: Many kernel test cases which have CONFIG_MP_NUM_CPUS=1 failed in daily testing
* :github:`41299` - IS25LP016D SPI NOR FLASH PROBLEM
* :github:`41291` - LVGL touch event "LV_EVENT_LONG_PRESSED" can not be generated if I press the screen without lift up my finger
* :github:`41289` - shell: infinite error loop upon LOG_ERR in ISR context
* :github:`41284` - pthread_cond_wait return value incorrect
* :github:`41272` - ci: twister: mcuboot: MCUboot tests are no longer executed in the CI
* :github:`41268` - 'bt_gatt_cancel' type mismatch
* :github:`41256` - Zero Latency Interrupts conflicts
* :github:`41255` - drivers/can/can_mcan.c: address-of-packed-member warnings
* :github:`41251` - RT1170 EVK Can does not send data
* :github:`41244` - subsys: pm: Low power mode transition broken
* :github:`41240` - logging can get messed up when messages are dropped
* :github:`41237` - [v2.7] drivers: ieee802154_dw1000: use dedicated workqueue
* :github:`41222` - tests: remove not existing platforms from platform allow or integration_platform
* :github:`41153` - rt i2s build fail
* :github:`41127` - OpenAMP Sample does not work on LPCXpresso55S69
* :github:`41117` - Incorrect setting of gyro sensitivity in LSM6DSO driver
* :github:`41111` - uint64 overflow in z_tmcvt() function
* :github:`41100` - Non-standard RISC-V assembly is used
* :github:`41097` - west init issue
* :github:`41095` - libc: newlib: 'gettimeofday' causes stack overflow on non-POSIX builds
* :github:`41093` - Kconfig.defconfig:11: error: couldn't parse 'default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)'
* :github:`41077` - console: gsm_mux: could not send more than 128 bytes of data on dlci
* :github:`41074` - can_mcan_send sends corrupted CAN frames with a byte-by-byte memcpy implementation
* :github:`41066` - twister --generate-map is broken
* :github:`41062` - kernel: userspace: Potential misaligned access
* :github:`41058` - stm32h723 : application gets hung during spi_transceive() operation
* :github:`41052` - tests-ci : portability: posix: fs.tls.newlib test Build failure
* :github:`41050` - MCUMgr Sample Fails to build
* :github:`41043` - Sporadic Bus Fault when using I2C on a nrf52840
* :github:`41026` - LoRa: sx126x: DIO1 interrupt left enabled in sleep mode
* :github:`41024` - SPI Loopback test fails to build on iMX RT EVKs
* :github:`41017` - USB string descriptors can be re-ordered causing corruption and out-of-bounds-write
* :github:`41016` - i2c_sam0.c i2c_sam0_transfer operations do not execute a STOP
* :github:`41012` - irq_enable() doesn’t support enabling NVIC IRQ number more than 127
* :github:`40999` - Unable to boot smp_svr sample image as documentation suggests, or sign
* :github:`40974` - Xtensa High priority interrupts cannot be masked during initialization
* :github:`40965` - Halt on receipt of Google Cloud IoT Core MQTT message sized 648+ bytes
* :github:`40946` - Xtensa Interrupt nesting issue
* :github:`40942` - Xtensa debug bug
* :github:`40936` - STM32 ADC gets stuck in Calibration
* :github:`40925` - mesh_badge not working reel_board_v2
* :github:`40917` - twister --export-tests export all cases even this case can not run on given platform
* :github:`40916` - Assertion in nordic's BLE controller lll.c:352
* :github:`40903` - documentation generation fails on function typedefs
* :github:`40889` - samples: samples/kernel/metairq_dispatch failed on acrn_ehl_crb
* :github:`40888` - samples:    samples/subsys/portability/cmsis_rtos_v1/philosophers failed on ehl crb
* :github:`40887` - tests: debug:  test case subsys/debug/coredump failed on acrn_ehl_crb
* :github:`40883` - Limitation on logging module
* :github:`40881` - Bluetooth: shell: fatal error because ctx_shell is NULL
* :github:`40873` - qemu_cortex_r5: fail to handle user_string_alloc_copy() with null parameter
* :github:`40870` - tests: syscall: failed to build on fvp_baser_aemv8r_smp
* :github:`40866` - Undefined behavior in lib/os/cbprintf_packaged.c: subtraction involving definitely null pointer
* :github:`40838` - Nordic UART driver (UARTE) fail to transfer buffers from read only memory
* :github:`40827` - Tensorflow example not working in zephyr v2.6
* :github:`40825` - STM32WB55RGV6: No output after west flash
* :github:`40820` - coap: blockwise: context current does not match total size after transfer is completed
* :github:`40808` - Invalid CMake warning related to rimage
* :github:`40795` - Timer signal thread execution loop break SMP on ARM64
* :github:`40783` - samples/subsys/usb/dfu  should filter on FLASH driver
* :github:`40776` - HCI_USB with nRF52840 dongle disconnect after 30 s
* :github:`40775` - stm32: multi-threading broken after #40173
* :github:`40770` - tests/subsys/cpp/libcxx/cpp.libcxx.newlib fails on m2gl025_miv and qemu_cortex_m0
* :github:`40761` - Bluetooth: host: Wait for the response callback before clearing Service Changed data
* :github:`40759` - Bluetooth: host: Improper restore of CCC values and handling Service Change indication when bonded peer reconnects
* :github:`40758` - Bluetooth: host: CCC values are not immediately stored on GATT Server by default (risk of inconsistency)
* :github:`40744` - RT600 LittleFS Sample produces build warning in default configuration
* :github:`40740` - tests: logging: test case log_msg2.logging.log_msg2_64b_timestamp failed on qemu_cortex_a9
* :github:`40724` - tests: logging: logging test cases failed in multiple boards
* :github:`40717` - twister: failure in parsing code coverage file
* :github:`40714` - west flash, Invalid DFU suffix signature
* :github:`40688` - in "pinmux_stm32.c"  function "stm32_dt_pinctrl_remap" not work
* :github:`40672` - EDTT: buffer overflow in edtt_hci_app
* :github:`40668` - Issue with twister code coverage tests not working with minimal C library (nRF52840)
* :github:`40663` - WWDG not supported on STM32H7 family
* :github:`40658` - shtcx not reporting correct humidity value
* :github:`40646` - Can't read more than one OUTPUT|INPUT gpio pin in gpio_emul
* :github:`40643` - intel_adsp_cavs15:  the zephyr_pre0.elf  is quite large (530MB) on ADSP for some test cases
* :github:`40640` - drivers: usb_dc_native_posix: segfault when using composite USB device
* :github:`40638` - drivers: usb_dc_mcux: processing endpoint callbacks in ISR context causes assertion
* :github:`40633` - CI documentation build hangs when there is a broken reference
* :github:`40624` - twister: coverage: Using --coverage flag for on-target test make tests last until time limit
* :github:`40622` - Dark mode readability problem in Unit Test Documentation
* :github:`40621` - npcx uart driver uses device PM callback to block suspension
* :github:`40614` - poll: the code judgment condition is always true
* :github:`40590` - gen_app_partitions scans object files unrelated to current image
* :github:`40586` - tests: logging: Logging.add.user scenario fails on all nrf boards
* :github:`40578` - MODBUS RS-485 transceiver support broken on several platforms due to DE race condition
* :github:`40569` - bisected: kernel.common.stack_protection_arm_fpu_sharing fails on mps3_an547
* :github:`40546` - Bluetooh:host: GATT notify multiple feature not working properly
* :github:`40538` - mcuboot build fails with nrf52 internal RC oscillator
* :github:`40517` - msgq: NULL handler assertion with data cache enabled
* :github:`40483` - ESP32: display sample over i2c not working
* :github:`40464` - Dereferencing NULL with getsockname() on TI Simplelink Platform
* :github:`40456` - Bluetooth: L2CAP tester application is missing preprocessor flags for ECFC function call
* :github:`40453` - LittleFS fails when block count is greater than block size
* :github:`40450` - Twister map file shows baud in quotes but should not be in quotes
* :github:`40449` - Twister tests fail when running on actual hardware due to deprecated command warning
* :github:`40439` - Undefined escape sequence: ill-formed for the C standard
* :github:`40438` - Ill-formed sources due to external linkage inline functions calling static functions
* :github:`40433` - RTT fails to work in program with large global variable
* :github:`40420` - Lower-case characters in Kconfig symbol names cause obscure errors
* :github:`40411` - Xtensa xcc compile build fails with SOF application on latest Zephyr main
* :github:`40376` - HiFIve1 failed to run tests/kernel/workq/work/
* :github:`40374` - up_squared: isr_dynamic test is failing
* :github:`40369` - tests/subsys/logging/log_core/ and tests/subsys/shell/shell/ hang on qemu_cortex_a53 and qemu_riscv64
* :github:`40367` - sample: cycle_64 is failing out due to a timeout on 64-bit versions of qemu_x86 and ehl_crb
* :github:`40348` - STM32L496 Uart rx interrupt callback fails to work with LVGL
* :github:`40329` - nucleo_g0b1re: FDCAN message RAM write fails on byte-oriented write
* :github:`40317` - Crash in ull.c when stressing periodic advertising sync (scanner side)
* :github:`40316` - Error undefined reference to '__aeabi_uldivmod' when build with Zephyr 2.7.0 for STM32
* :github:`40298` - Bluetooth assertions in lll_conn.c
* :github:`40290` - CAN_STM32: Build error with CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=n
* :github:`40256` - websocket: the size of a websocket payload is limited
* :github:`40254` - TF-M: BL2 signing is broken due to incompatible MCUboot version
* :github:`40244` - [v2.7-branch] hci_spi sample cannot be built for nrf51dk_nrf51422 and 96b_carbon_nrf51
* :github:`40236` - Unsigned int can't be used in condition compare with int
* :github:`40215` - RSSI in periodic adv. callbacks always -127 (sync_recv and cte_report_cb)
* :github:`40209` - Bluetooth: First AUX_SYNC_IND never received, missing event send to host
* :github:`40202` - Bluetooth: Periodic advertising synchronization not re-established after advertiser reset without scan disable
* :github:`40198` - Shell module doesn't work on main branch for esp32 board
* :github:`40189` - k_poll infrastructure can miss "signals" in a heavily contended SMP system
* :github:`40169` - drivers: can: net: compilation broken and no test cases in CI
* :github:`40159` - Bluetooth Mesh branch incorrect return value
* :github:`40153` - mimxrt1050_evk: failed to run samples/subsys/task_wdt
* :github:`40152` - task_wdt  can get stuck in a loop where hardware reset is never fired
* :github:`40133` - mimxrt1060-evk flash shell command causes shell deadlock
* :github:`40129` - 'tests/net/socket/tls/net.socket.tls.preempt' fails with 'qemu_cortex_a9'
* :github:`40124` - Build fails with 'CONFIG_SHELL_VT100_COMMANDS=n'
* :github:`40119` - OBJECT_TRACING for kernel objects
* :github:`40115` - logging: int-uint comparsion causes false assert & epic hang
* :github:`40107` - lwm2m: if network drops during firmware update, lock occurs
* :github:`40077` - driver: wdt: twrke18f: test_wdt fails
* :github:`40076` - Driver led pca9633 does only use first device in devicetree
* :github:`40074` - sara-r4: socket call fails due to regression
* :github:`40070` - canbus: isotp: Violations of k_fifo and net_buf API usage
* :github:`40069` - Bluetooth CCM encryption bug in MIC generation
* :github:`40068` - Test suite subsys.pm.device_runtime_api fail on qemu_x86_64
* :github:`40030` - STM32 SD hardware flow control gets disabled if disk_access_init is used
* :github:`40021` - mimxrt1060_evk_hyperflash board definition is broken
* :github:`40020` - tests: kernel: mem_slab: mslab_api: undefined reference to z_impl_k_sem_give and z_impl_k_sem_take
* :github:`40007` - twister: cannot build samples/tests on Windows
* :github:`40003` - Bluetooth: host: zephyr writes to disconnected device and triggers a bus fault
* :github:`40000` - k_timer timeout handler is called with interrupts locked
* :github:`39989` - Zephyr does not persist CCC data written before bonding when bonding has completed which leads to loss of subscriptions on device reset
* :github:`39985` - Telnet shell breaks upon sending Ctrl+C character
* :github:`39978` - logging.log2_api_deferred and logging.msg2 tests fail on qemu_cortex_a9
* :github:`39973` - Bluetooth: hci_usb example returning "Unknown HCI Command" after reset.
* :github:`39969` - USB not automatically enabled when USB_UART_CONSOLE is set
* :github:`39968` - samples: tfm_integration: tfm_psa_test broken on OS X (Windows?)
* :github:`39947` - open-amp problem with dcache
* :github:`39942` - usdhc disk_usdhc_access_write busy fail
* :github:`39923` - qspi_sfdp_read fails errata work around
* :github:`39919` - CONFIG_ISM330DHCX cannot compile due to missing file
* :github:`39904` - bl654_usb does not work with hci_usb sample application
* :github:`39900` - usb bug :USB device descriptor could not be obtained   on windows10
* :github:`39893` - Bluetooth: hci usb: scan duplicate filter not working
* :github:`39883` - BLE stack overlow due to the default option value when compiling with no optimization
* :github:`39874` - [Coverity CID: 240214] Dereference before null check in drivers/dma/dma_mcux_edma.c
* :github:`39872` - [Coverity CID: 240218] Dereference after null check in subsys/bluetooth/controller/ll_sw/ull_scan_aux.c
* :github:`39870` - [Coverity CID: 240220] Argument cannot be negative in tests/net/socket/af_packet_ipproto_raw/src/main.c
* :github:`39869` - [Coverity CID: 240221] Unchecked return value from library in drivers/usb/device/usb_dc_native_posix.c
* :github:`39868` - [Coverity CID: 240222] Dereference before null check in drivers/dma/dma_mcux_edma.c
* :github:`39857` - [Coverity CID: 240234] Uninitialized scalar variable in subsys/bluetooth/shell/iso.c
* :github:`39856` - [Coverity CID: 240235] Explicit null dereferenced in subsys/bluetooth/controller/ll_sw/ull_scan_aux.c
* :github:`39852` - [Coverity CID: 240241] Out-of-bounds access in subsys/bluetooth/host/adv.c
* :github:`39851` - [Coverity CID: 240242] Dereference after null check in tests/bluetooth/tester/src/l2cap.c
* :github:`39849` - [Coverity CID: 240244] Untrusted value as argument in drivers/usb/device/usb_dc_native_posix.c
* :github:`39844` - [Coverity CID: 240658] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`39843` - [Coverity CID: 240659] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`39841` - [Coverity CID: 240661] Unchecked return value in tests/net/net_pkt/src/main.c
* :github:`39840` - [Coverity CID: 240662] Improper use of negative value in subsys/mgmt/osdp/src/osdp.c
* :github:`39839` - [Coverity CID: 240663] Out-of-bounds access in tests/benchmarks/mbedtls/src/benchmark.c
* :github:`39835` - [Coverity CID: 240667] Improper use of negative value in samples/subsys/usb/cdc_acm_composite/src/main.c
* :github:`39833` - [Coverity CID: 240670] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`39832` - [Coverity CID: 240671] Out-of-bounds access in drivers/flash/flash_mcux_flexspi_hyperflash.c
* :github:`39830` - [Coverity CID: 240673] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`39827` - [Coverity CID: 240676] Out-of-bounds access in drivers/ieee802154/ieee802154_dw1000.c
* :github:`39825` - [Coverity CID: 240678] Unchecked return value in drivers/ieee802154/ieee802154_cc1200.c
* :github:`39824` - [Coverity CID: 240679] Out-of-bounds access in samples/subsys/usb/cdc_acm_composite/src/main.c
* :github:`39823` - [Coverity CID: 240681] Improper use of negative value in drivers/bluetooth/hci/h4.c
* :github:`39817` - drivers: pwm: nxp: (potentially) Incorrect return value on API function
* :github:`39815` - [Coverity CID: 240688] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`39813` - [Coverity CID: 240691] Out-of-bounds access in tests/benchmarks/mbedtls/src/benchmark.c
* :github:`39812` - [Coverity CID: 240692] Unintended sign extension in subsys/stats/stats.c
* :github:`39810` - [Coverity CID: 240696] Operands don't affect result in subsys/net/lib/lwm2m/lwm2m_util.c
* :github:`39809` - [Coverity CID: 240697] Out-of-bounds access in samples/subsys/usb/cdc_acm/src/main.c
* :github:`39807` - [Coverity CID: 240699] Out-of-bounds access in tests/bluetooth/tester/src/l2cap.c
* :github:`39806` - [Coverity CID: 240700] Unchecked return value in drivers/ieee802154/ieee802154_cc2520.c
* :github:`39805` - [Coverity CID: 240703] Improper use of negative value in drivers/bluetooth/hci/h4.c
* :github:`39797` - STM32 G4 series compile error when both ADC1 and ADC2 are opened
* :github:`39780` - On ESP32S2 platform zsock_getaddrinfo() call causes RTOS to crash
* :github:`39774` - modem: uart mux reading optimization never used
* :github:`39758` - Build is broken if LWM2M_CANCEL_OBSERVE_BY_PATH config is set
* :github:`39756` - kconfig: choice default is not set if hidden under invisible menu
* :github:`39726` - How to use PWM LED driver for ESP32?
* :github:`39721` - bq274xx sensor - Fails to compile when CONFIG_PM_DEVICE enabled
* :github:`39720` -  XCC BUILD FAIL :K_MEM_SLAB_DEFINE && K_HEAP_DEFINE
* :github:`39718` - STM32L496G_DISCO uart testing fails on single buffer read
* :github:`39712` - bq274xx sensor - Fails to compile when CONFIG_PM_DEVICE enabled
* :github:`39707` - Can't enable CONFIG_SHELL_LOG_BACKEND Log Shell Menus with pure Telnet Shell Backend
* :github:`39705` - Canot use POSIX_API and NET_SOCKETS together
* :github:`39704` - Using OpenThread makes the system unresponsive after 49.7 days
* :github:`39703` - stm32 uart testing fails on test_read_abort
* :github:`39687` - sensor: qdec_nrfx: PM callback has incorrect signature
* :github:`39675` - list_boards.py script doesn't properly traverse external board roots
* :github:`39672` - net_config_init count calculation appears incorrect.
* :github:`39660` - poll() not notified when a TLS/TCP connection is closed without TLS close_notify
* :github:`39655` - Linker error with CONFIG_NET_TCP=y
* :github:`39645` - STM32L496 Zephyr using LVGL disp_drv.flush_cb can not work
* :github:`39629` - Small Compiler warning in subsys/fs/shell.c:381:23 in latest release, need argument change only
* :github:`39627` - samples: http_get: cannot run on QEMU
* :github:`39624` - Bluetooth: Submitting more GATT writes than available buffers blocks for 30s and then errors out
* :github:`39619` - twister: integration_platforms getting unnoticeably skipped when --subset is used
* :github:`39609` - spi: slave: division by zero in timeout calculation
* :github:`39601` - On ESP32S2 platform GPIO interrupt causes RTOS to hang when configured to GPIO_INT_EDGE_BOTH
* :github:`39594` - Possible bug or undocumented behaviour of spi_write
* :github:`39588` - drivers: i2c: nrf: i2c error with burst write
* :github:`39575` - k_mutex_lock and k_sem_take with K_FOREVER return -EAGAIN value
* :github:`39569` - [ESP32] crash when trying to set a low cpu clock frequency
* :github:`39549` - Bluetooth: Incomplete Delayed Initialization of acl_mtu Allows Controller to Crash Host Layer
* :github:`39546` - mcumgr over serial does not add CRC to length of packet len
* :github:`39541` - can: mcux_flexcan: wrong timing calculation
* :github:`39538` - logging: rtt: Compilation fails when CONFIG_LOG_BACKEND_RTT_MODE_OVERWRITE=y and CONFIG_MULTITHREADING=n
* :github:`39523` - task watchdog crash/asset on NRF52840 - need to reorder task_wdt_feed() in task_wdt_add()
* :github:`39516` - function net_eth_vlan_enable does not properly validate vlan tag value
* :github:`39506` - Bluetooth: crash in att.c when repeatedly scanning/connecting/disconnecting
* :github:`39505` - question: ethernet: carrier_on_off
* :github:`39503` - Zephyr boot banner not updated on rebuild with opdated SHA
* :github:`39497` - doc: kernel: event object static initialization mismatch
* :github:`39487` - esp32 IRQ01 stack utilisation is 100%
* :github:`39483` - LSM6DS0 Gyroscope rad/s Calculation Error
* :github:`39463` - ESP32 GPIO intterupt
* :github:`39461` - Bluetooth: hci acl flow control: bugs of bluetooth hci ACL flow control
* :github:`39457` - mec15xxevb_assy6853: metairq_dispatch sample is failing due to timeout while monitoring serial output
* :github:`39438` - Scanning for devices sending periodic advertisements stops working after a while, but keeps reporting none periodic.
* :github:`39423` - mcuboot not upgrade  for stm32l1 series
* :github:`39418` - test: run testcase failed on platform mps2_an521_ns
* :github:`39416` - west debug throws error
* :github:`39405` - CTE report callback have the wrong pointer to bt_le_per_adv_sync
* :github:`39400` - stm32f103 example servo_motor don't work
* :github:`39399` - linker: Missing align __itcm_load_start / __dtcm_data_load_start linker symbols
* :github:`39392` - ARC nsim_sem fail on tests/crypto/tinycrypt_hmac_prng test when use ARCMWDT toolchain
* :github:`39340` - Shell FS sample halts with a usage fault error
* :github:`39311` - SPDX --init fails on windows systems
* :github:`39300` - Library globals in .sdata/.sbss sections doesn't put into memory partition in userspace
* :github:`39293` - Can not run normally on MIMXRT1061CVL5A SOC
* :github:`39269` - Fail to initialize BLE stack with optimization level zero
* :github:`39253` - modem: hl7800: IPv6 socket not created properly
* :github:`39242` - net: sockets: Zephyr Fatal in dns_resolve_cb if dns request was attempted in offline state
* :github:`39221` - Errors when debuging application in Eclipse using STM32L496G-DISCO
* :github:`39216` - Twister: Broken on NRF52840 with pyocd option timeout error
* :github:`39179` - twister: --generate-hardware-map ends up in RuntimeError
* :github:`39144` - gsm_ppp: stop & starting not working as expected with nullpointer dereference & no full modem init
* :github:`39136` - SD disk access runs into TXUNDERRUN and RXOVERRUN of SDMMC driver
* :github:`39131` - GATT DB hash calculation is wrong on characteristic declarations using 128-bit UUIDs.
* :github:`39096` - DNS responders assume interfaces are up at initialization
* :github:`39024` - drivers: sensors: FXOS8700: Interrupt pin routing configuration must be changed in standby power mode
* :github:`38988` - MCP2515 driver CS gpio active high support issue
* :github:`38987` - Unable to build ESP32 example code using west tool - zephyr
* :github:`38954` - Can't get FlexPWM working for imxrt1060
* :github:`38631` - printk to console fails for freescale kinetis 8.2.0 (Zephyr 2.6.0) on FRDM-K64F
* :github:`38624` - mcuboot gets the wrong value of DT_FIXED_PARTITION_ID
* :github:`38606` - drivers: adc: stm32h7: Oversampling Ratio set incorrectly
* :github:`38598` - net_context_put will not properly close TCP connection (might lead to tcp connection leak)
* :github:`38576` - net shell: self-connecting to TCP might lead to a crash
* :github:`38502` - Update mcumgr library to fix wrong callback state
* :github:`38446` - intel_adsp_cavs15: Fail to get testcases output on ADSP
* :github:`38376` - Raw Socket Failure when using 2 Raw Sockets and zsock_select() statement - improper mapping from sock to handlers
* :github:`38303` - The current BabbleSim tests build system based on bash scripts hides warnings
* :github:`38128` - [Coverity CID: 239574] Out-of-bounds access in subsys/storage/flash_map/flash_map.c
* :github:`38047` - twister: The --board-root parameter doesn't appear to work
* :github:`37893` - mcumgr_serial_tx_pkt with len==91 fails to transmit CRC
* :github:`37389` - nucleo_g0b1re: Swapping image in mcuboot results in hard fault and softbricks the device
* :github:`36986` - LittleFS mount fails (error -22)
* :github:`36962` - littlefs: Too small heap for file cache (again).
* :github:`36852` - acrn_ehl_crb:  the test of tests/subsys/cpp/libcxx/ failed
* :github:`36808` - xtensa xcc build  Fail ,   CONFIG_NO_OPTIMIZATIONS=y
* :github:`36766` - tests-ci :kernel.tickless.concept.tickless_slice : test failed
* :github:`34732` - stm32h747i_disco: Wrong Power supply setting LDO
* :github:`34375` - drivers: can: CAN configure fails when  CONFIG_CAN_FD_MODE is enabled
* :github:`31748` - boards:lpcxpresso55s69: Manual toggling of CS required with ETH Click shield
* :github:`23052` - nrf52840_pca10056: Spurious RTS pulse and incorrect line level with hardware flow control disabled
* :github:`16587` - build failures with gcc 9.x
* :github:`8924` - Get rid of -fno-strict-overflow
