# Technical Documentation: zephyrproject-rtos/zephyr

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/zephyrproject-rtos/zephyr)

### Doc 404 (`doc/404.rst`)

:orphan:

.. _page-not-found:

Sorry, Page Not Found
#####################

.. image:: images/Zephyr-Kite-in-tree.png
   :align: right

.. raw:: html

   <noscript>
   Sorry, the page you requested was not found on this site.
   </noscript>
   <script type="text/javaScript">
   
   </script>

Please check the url for misspellings.

It's also possible we've removed or renamed the page you're looking for.

Please try using the navigation links on the left of this page to navigate
the major sections of our site, or use the search box.

If you got this error by following a link, please let us know by creating an
issue on `GitHub`_.

.. _GitHub: https://github.com/zephyrproject-rtos/zephyr/issues

.. raw:: html

   <div style='clear:both'></div>

---

### Doc CMakeLists (`doc/CMakeLists.txt`)

# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.28.0)
project(Zephyr-Kernel-Doc LANGUAGES)

set(MIN_WEST_VERSION 1.0.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE} .. COMPONENTS doc)

file(TO_CMAKE_PATH "${ZEPHYR_BASE}" ZEPHYR_BASE)
message(STATUS "Zephyr base: ${ZEPHYR_BASE}")

#-------------------------------------------------------------------------------
# Options

set(SPHINXOPTS "-j auto -W --keep-going -T" CACHE STRING "Default Sphinx Options")
set(SPHINXOPTS_EXTRA "" CACHE STRING "Extra Sphinx Options (added to defaults)")
set(LATEXMKOPTS "-halt-on-error -no-shell-escape" CACHE STRING "Default latexmk options")
set(DT_TURBO_MODE OFF CACHE BOOL "Enable DT turbo mode")
set(HW_FEATURES_TURBO_MODE OFF CACHE BOOL "Enable HW features turbo mode")
set(HW_FEATURES_VENDOR_FILTER "" CACHE STRING "Vendor filter for HW features")
set(NO_EXTERNAL_DEPS OFF CACHE BOOL "Enable serving external CSS/JS libraries locally instead of fetching from the Internet.")
set(DOC_TAG "development" CACHE STRING "Documentation tag")
set(DTS_ROOTS "${ZEPHYR_BASE}" CACHE STRING "DT bindings root folders")
set(DOXYGEN_FORCE_SINGLE_THREAD OFF CACHE BOOL "Enable Doxygen single thread mode")

separate_arguments(SPHINXOPTS)
separate_arguments(SPHINXOPTS_EXTRA)
separate_arguments(LATEXMKOPTS)

#-------------------------------------------------------------------------------
# Dependencies

find_package(Doxygen REQUIRED dot)

find_program(SPHINXBUILD sphinx-build)
if(NOT SPHINXBUILD)
  message(WARNING "The 'sphinx-build' command was not found; Sphinx-based targets will not be available.")
endif()
find_program(SPHINXAUTOBUILD sphinx-autobuild)

find_package(LATEX COMPONENTS PDFLATEX)
find_program(LATEXMK latexmk)
if(NOT LATEX_PDFLATEX_FOUND OR NOT LATEXMK)
  message(WARNING "LaTeX components not found. PDF build will not be available.")
endif()

#-------------------------------------------------------------------------------
# Environment & Paths

set(SPHINX_ENV
  DOXYGEN_EXECUTABLE=${DOXYGEN_EXECUTABLE}
  DOT_EXECUTABLE=${DOXYGEN_DOT_EXECUTABLE}
  DOCS_HTML_DIR=${CMAKE_CURRENT_BINARY_DIR}/html
  DOXY_REQ_INPUT=${CMAKE_CURRENT_BINARY_DIR}/requirements/dox
)

set(DOXYGEN_CUSTOM_LINES)

if(DEFINED ENV{ZEPHYR_DOXYGEN_OVERLAY})
  if(EXISTS $ENV{ZEPHYR_DOXYGEN_OVERLAY})
    list(APPEND DOXYGEN_CUSTOM_LINES "@INCLUDE = $ENV{ZEPHYR_DOXYGEN_OVERLAY}")
  else()
    message(FATAL_ERROR "Zephyr Doxygen overlay $ENV{ZEPHYR_DOXYGEN_OVERLAY} does not exist!")
  endif()
endif()

if(DOXYGEN_FORCE_SINGLE_THREAD)
  list(APPEND DOXYGEN_CUSTOM_LINES "NUM_PROC_THREADS = 1")
endif()

list(JOIN DOXYGEN_CUSTOM_LINES "\n" INCLUDE_CUSTOM_FILE)

set(DOCS_CFG_DIR ${CMAKE_CURRENT_LIST_DIR})
set(DOCS_DOCTREE_DIR ${CMAKE_CURRENT_BINARY_DIR}/doctrees)
set(DOCS_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(DOCS_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/src)
set(DOCS_HTML_DIR ${CMAKE_CURRENT_BINARY_DIR}/html)
set(DOCS_LINKCHECK_DIR ${CMAKE_CURRENT_BINARY_DIR}/linkcheck)
set(DOCS_LATEX_DIR ${CMAKE_CURRENT_BINARY_DIR}/latex)

if(WIN32)
  set(SEP $<SEMICOLON>)
else()
  set(SEP :)
endif()

#-------------------------------------------------------------------------------
# Requirements (reqmgmt module)
#
# When the 'reqmgmt' module (the StrictDoc requirements repository) is present
# in the workspace, its requirements are exported to JSON and converted into
# reStructuredText (for Sphinx) and Doxygen (for the API docs) by the
# 'requirements' target. When the module is absent, only a placeholder is
# generated so that the strict Sphinx and Doxygen builds still succeed.

set(GEN_REQUIREMENTS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/_scripts/gen_requirements.py)
set(REQ_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/requirements)
set(REQ_DOX_DIR ${REQ_BUILD_DIR}/dox)
set(REQ_RST_DIR ${DOCS_SRC_DIR}/build/requirements)

# Requirements .dox directory consumed by the Doxygen INPUT (see
# zephyr.doxyfile.in). Always points at REQ_DOX_DIR; the directory is populated
# (possibly empty) by the 'requirements' target before Doxygen runs.
set(DOXY_REQ_INPUT ${REQ_DOX_DIR})

set(REQMGMT_FOUND FALSE)
if(DEFINED ZEPHYR_REQMGMT_MODULE_DIR AND
   EXISTS ${ZEPHYR_REQMGMT_MODULE_DIR}/strictdoc_config.py)
  find_program(STRICTDOC strictdoc)
  if(STRICTDOC)
    set(REQMGMT_FOUND TRUE)
    message(STATUS "Requirements management module: ${ZEPHYR_REQMGMT_MODULE_DIR}")
  else()
    message(WARNING "reqmgmt module found but 'strictdoc' is not installed; "
                    "requirements will not be included in the documentation.")
  endif()
else()
  message(STATUS "Requirements management module not found; "
                 "requirements will not be included in the documentation.")
endif()

if(REQMGMT_FOUND)
  add_custom_target(
    requirements
    COMMAND ${STRICTDOC} export ${ZEPHYR_REQMGMT_MODULE_DIR}
      --formats json
      --output-dir ${REQ_BUILD_DIR}
    COMMAND ${PYTHON_EXECUTABLE} ${GEN_REQUIREMENTS_SCRIPT}
      --json ${REQ_BUILD_DIR}/json/index.json
      --rst-out ${REQ_RST_DIR}
      --dox-out ${REQ_DOX_DIR}
      --module-present 1
    COMMENT "Exporting and converting requirements from reqmgmt..."
  )
else()
  add_custom_target(
    requirements
    COMMAND ${PYTHON_EXECUTABLE} ${GEN_REQUIREMENTS_SCRIPT}
      --rst-out ${REQ_RST_DIR}
      --dox-out ${REQ_DOX_DIR}
      --module-present 0
    COMMENT "reqmgmt module not present; generating placeholder requirements..."
  )
endif()

set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${GEN_REQUIREMENTS_SCRIPT})

#-------------------------------------------------------------------------------
# Functions

# Create a custom doc target.
#
# This function has the same signature as `add_custom_target()`
#
# The function will create two targets for the doc build system.
# - Target 1 named: `<name>`
# - Target 2 named: `<name>-nodeps`
#
# Both targets will produce same result, but target 2 must have no dependencies.
# This is useful to, e.g. re-run the Sphinx build without dependencies such as
# devicetree generator.
#
function(add_doc_target name)
  add_custom_target(${name} ${ARGN})
  add_custom_target(${name}-nodeps ${ARGN})
endfunction()

#-------------------------------------------------------------------------------
# Doxygen (standalone)

set(DOXY_OUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
set(DOXYFILE_IN ${CMAKE_CURRENT_LIST_DIR}/zephyr.doxyfile.in)
set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/zephyr.doxyfile)
set(ZEPHYR_VERSION "${Zephyr_VERSION}")

configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)

add_custom_target(
  doxygen
  COMMAND
    ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
  COMMENT "Running Doxygen..."
)

add_dependencies(doxygen requirements)

set_target_properties(
  doxygen
  PROPERTIES
    ADDITIONAL_CLEAN_FILES "${DOXY_OUT}"
)

#-------------------------------------------------------------------------------
# Doxygen (XML only)
#
# Same configuration as 'doxygen' -- overlays included, since the generated
# Doxyfile is pulled in with @INCLUDE -- with the HTML and the tag file turned
# off. Writes to its own directory so that it cannot race with 'doxygen'.

set(DOXY_XML_OUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen-xml)
set(DOXYFILE_XML_OUT ${CMAKE_CURRENT_BINARY_DIR}/zephyr-xml.doxyfile)

file(WRITE ${DOXYFILE_XML_OUT}
"@INCLUDE = ${DOXYFILE_OUT}
OUTPUT_DIRECTORY = ${DOXY_XML_OUT}
GENERATE_HTML = NO
GENERATE_TAGFILE =
")

add_custom_target(
  doxygen-xml
  COMMAND
    ${DOXYGEN_EXECUTABLE} ${DOXYFILE_XML_OUT}
  COMMENT "Running Doxygen (XML only)..."
)

add_dependencies(doxygen-xml requirements)

set_target_properties(
  doxygen-xml
  PROPERTIES
    ADDITIONAL_CLEAN_FILES "${DOXY_XML_OUT}"
)

#-------------------------------------------------------------------------------
# Doxygen Coverage

add_custom_target(
  doxygen-coverage
  COMMAND ${PYTHON_EXECUTABLE} -m coverxygen
    --xml-dir ${DOXY_XML_OUT}/xml/
    --src-dir ${ZEPHYR_BASE}/include/
    --output ${CMAKE_CURRENT_BINARY_DIR}/doc-coverage.info
  COMMAND lcov
    --remove ${CMAKE_CURRENT_BINARY_DIR}/doc-coverage.info "*/deprecated"
    > ${CMAKE_CURRENT_BINARY_DIR}/new.info
  COMMAND genhtml
    --no-function-coverage
    --no-branch-coverage
    ${CMAKE_CURRENT_BINARY_DIR}/new.info
    -o ${CMAKE_CURRENT_BINARY_DIR}/coverage-report
  DEPENDS doxygen-xml
  COMMENT "Generating Doxygen coverage info and HTML report..."
)

add_custom_target(
  doxygen-coverage-json
  COMMAND ${PYTHON_EXECUTABLE} -m coverxygen
    --xml-dir ${DOXY_XML_OUT}/xml/
    --src-dir ${ZEPHYR_BASE}/include/
    --format json-v3
    --output ${CMAKE_CURRENT_BINARY_DIR}/doc-coverage.json
  DEPENDS doxygen-xml
  COMMENT "Generating Doxygen coverage info in JSON format..."
)

#-------------------------------------------------------------------------------
# devicetree

set(GEN_DEVICETREE_REST_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/_scripts/gen_devicetree_rest.py)

set(DTS_ARGS)
foreach(root ${DTS_ROOTS})
  list(APPEND DTS_ARGS --dts-root ${root})
endforeach()

if(DT_TURBO_MODE)
  list(APPEND DTS_ARGS --turbo-mode)
endif()

add_custom_target(
  devicetree
  COMMAND ${CMAKE_COMMAND} -E env
  PYTHONPATH=${ZEPHYR_BASE}/scripts/dts/python-devicetree/src${SEP}$ENV{PYTHONPATH}
  ZEPHYR_BASE=${ZEPHYR_BASE}
  ${PYTHON_EXECUTABLE} ${GEN_DEVICETREE_REST_SCRIPT}
    --vendor-prefixes ${ZEPHYR_BASE}/dts/bindings/vendor-prefixes.txt
    ${DTS_ARGS}
    ${DOCS_SRC_DIR}/build/dts/api
  VERBATIM
  USES_TERMINAL
  COMMENT "Generating Devicetree bindings documentation..."
)

set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${GEN_DEVICETREE_REST_SCRIPT})

#-------------------------------------------------------------------------------
# html

set(SPHINX_TAGS "${DOC_TAG}")
if(HW_FEATURES_TURBO_MODE)
  list(APPEND SPHINX_TAGS "hw_features_turbo")
endif()

if(NO_EXTERNAL_DEPS)
  list(APPEND SPHINX_TAGS "no-external-deps")
endif()

if(REQMGMT_FOUND)
  list(APPEND SPHINX_TAGS "reqmgmt")
endif()

set(SPHINX_TAGS_ARGS "")
foreach(tag ${SPHINX_TAGS})
  list(APPEND SPHINX_TAGS_ARGS "-t" "${tag}")
endforeach()

if(HW_FEATURES_VENDOR_FILTER)
  list(JOIN HW_FEATURES_VENDOR_FILTER "," vendor_filter)
  list(APPEND SPHINXOPTS "-D" "zephyr_hw_features_vendor_filter=${vendor_filter}")
endif()

if(SPHINXBUILD)
  add_doc_target(
    html
    COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
    ${SPHINXBUILD}
      -b html
      -c ${DOCS_CFG_DIR}
      -d ${DOCS_DOCTREE_DIR}
      -w ${DOCS_BUILD_DIR}/html.log
      ${SPHINX_TAGS_ARGS}
      ${SPHINXOPTS}
      ${SPHINXOPTS_EXTRA}
      ${DOCS_SRC_DIR}
      ${DOCS_HTML_DIR}
    USES_TERMINAL
    COMMENT "Running Sphinx HTML build..."
  )

  set_target_properties(
    html html-nodeps
    PROPERTIES
      ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
  )

  add_dependencies(html devicetree requirements)
endif()

#-------------------------------------------------------------------------------
# html-live

if(SPHINXBUILD)
  add_doc_target(
    html-live
    COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
    ${SPHINXAUTOBUILD}
      --watch ${DOCS_CFG_DIR}
      --ignore ${DOCS_BUILD_DIR}
      -b html
      -c ${DOCS_CFG_DIR}
      -d ${DOCS_DOCTREE_DIR}
      -w ${DOCS_BUILD_DIR}/html.log
      ${SPHINX_TAGS_ARGS}
      ${SPHINXOPTS}
      ${SPHINXOPTS_EXTRA}
      ${DOCS_SRC_DIR}
      ${DOCS_HTML_DIR}
    USES_TERMINAL
    COMMENT "Running Sphinx HTML autobuild..."
  )

  set_target_properties(
    html-live html-live-nodeps
    PROPERTIES
      ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
  )

  add_dependencies(html-live devicetree requirements)
endif()
#-------------------------------------------------------------------------------
# pdf

if(SPHINXBUILD)
  add_doc_target(
    latex
    COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LATEX_DIR}
    ${SPHINXBUILD}
      -b latex
      -c ${DOCS_CFG_DIR}
      -d ${DOCS_DOCTREE_DIR}
      -w ${DOCS_BUILD_DIR}/latex.log
      ${SPHINX_TAGS_ARGS}
      -t convertimages
      ${SPHINXOPTS}
      ${SPHINXOPTS_EXTRA}
      ${DOCS_SRC_DIR}
      ${DOCS_LATEX_DIR}
    USES_TERMINAL
    COMMENT "Running Sphinx LaTeX build..."
  )

  set_target_properties(
    latex latex-nodeps
    PROPERTIES
      ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LATEX_DIR};${DOCS_DOCTREE_DIR}"
  )

  add_dependencies(latex devicetree requirements)
endif()

if(SPHINXBUILD AND LATEX_PDFLATEX_FOUND AND LATEXMK)
  if(WIN32)
    set(PDF_BUILD_COMMAND "make.bat")
  else()
    find_program(MAKE make)
    if(NOT MAKE)
      message(FATAL_ERROR "The 'make' command was not found")
    endif()
    set(PDF_BUILD_COMMAND ${MAKE})
  endif()

  add_custom_target(
    pdf
    COMMAND ${CMAKE_COMMAND} -E env LATEXMKOPTS="${LATEXMKOPTS}"
    ${PDF_BUILD_COMMAND}
    WORKING_DIRECTORY ${DOCS_LATEX_DIR}
    COMMENT "Building PDF file..."
    USES_TERMINAL
  )

  add_dependencies(pdf latex)
endif()

#-------------------------------------------------------------------------------
# linkcheck

if(SPHINXBUILD)
  add_doc_target(
    linkcheck
    COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LINKCHECK_DIR}
    ${SPHINXBUILD}
      -b linkcheck
      -c ${DOCS_CFG_DIR}
      -d ${DOCS_DOCTREE_DIR}
      -w ${DOCS_BUILD_DIR}/linkcheck.log
      ${SPHINX_TAGS_ARGS}
      ${SPHINXOPTS}
      ${SPHINXOPTS_EXTRA}
      ${DOCS_SRC_DIR}
      ${DOCS_LINKCHECK_DIR}
    USES_TERMINAL
    COMMENT "Running Sphinx link check..."
  )

  set_target_properties(
    linkcheck linkcheck-nodeps
    PROPERTIES
      ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LINKCHECK_DIR};${DOCS_DOCTREE_DIR}"
  )

  add_dependencies(linkcheck devicetree requirements)
endif()

#-------------------------------------------------------------------------------
# others

add_custom_target(
  pristine
  COMMAND ${CMAKE_COMMAND} -P ${ZEPHYR_BASE}/cmake/pristine.cmake
)

---

### Doc LICENSING (`doc/LICENSING.rst`)

:orphan:

.. _zephyr_licensing:

Licensing of Zephyr Project components
######################################

Zephyr as a whole is licensed under the `Apache 2.0 License`_. It does, however,
import or reuse a small number of packages, scripts and other files that are
covered by other licenses. In some cases there is no way to add a license header
to those files, so their licensing is declared centrally, in a machine-readable
form, in the :zephyr_file:`REUSE.toml` file at the root of the repository
(following the `REUSE specification`_).

The sections below are **generated automatically** from that metadata, so they
always reflect the actual state of the tree. To add, update or remove an entry,
edit the corresponding ``[[annotations]]`` block in :zephyr_file:`REUSE.toml`
rather than this page (see :ref:`external-contributions`).

.. note::

   This page lists licensing *exceptions* only. It does **not** define the
   license of the Zephyr project itself, which is Apache 2.0 as specified in the
   :zephyr_file:`LICENSE` file at the root of the repository.

.. contents:: Documented components
   :local:
   :depth: 1

.. zephyr-licensing-exceptions::

.. _Apache 2.0 License:
   https://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE

.. _REUSE specification:
   https://reuse.software/spec/

---

### Doc Glossary (`doc/glossary.rst`)

:orphan:

.. _glossary:

Glossary of Terms
#################

.. glossary::
   :sorted:

   API
      (Application Program Interface) A defined set of routines and protocols for
      building application software.

   application
      The set of user-supplied files that the Zephyr build system uses
      to build an application image for a specified board configuration.
      It can contain application-specific code, kernel configuration settings,
      and at least one CMakeLists.txt file.
      The application's kernel configuration settings direct the build system
      to create a custom kernel that makes efficient use of the board's
      resources.
      An application can sometimes be built for more than one type of board
      configuration (including boards with different CPU architectures),
      if it does not require any board-specific capabilities.

   application image
      A binary file that is loaded and executed by the board for which
      it was built.
      Each application image contains both the application's code and the
      Zephyr kernel code needed to support it. They are compiled as a single,
      fully-linked binary.
      Once an application image is loaded onto a board, the image takes control
      of the system, initializes it, and runs as the system's sole application.
      Both application code and kernel code execute as privileged code
      within a single shared address space.

   architecture
      An instruction set architecture (ISA) along with a programming model.

   board
      A target system with a defined set of devices and capabilities,
      which can load and execute an application image. It may be an actual
      hardware system or a simulated system running under QEMU. A board can
      contain one or more :term:`SoCs <SoC>`.
      The Zephyr kernel supports a :ref:`variety of boards <boards>`.

   board configuration
      A set of kernel configuration options that specify how the devices
      present on a board are used by the kernel.
      The Zephyr build system defines one or more board configurations
      for each board it supports. The kernel configuration settings that are
      specified by the build system can be over-ridden by the application,
      if desired.

   board name
      The human-readable name of a :term:`board`. Uniquely and descriptively
      identifies a particular system, but does not include additional
      information that may be required to actually build a Zephyr image for it.
      See :ref:`board_terminology` for additional details.

   board qualifiers
      The set of additional tokens, separated by a forward slash (``/``) that
      follow the :term:`board name` (and optionally :term:`board revision`) to
      form the :term:`board target`. The currently accepted qualifiers are
      :term:`SoC`, :term:`CPU cluster` and :term:`variant`.
      See :ref:`board_terminology` for additional details.

   board revision
      An optional version string that identifies a particular revision of a
      hardware system. This is useful to avoid duplication of board files
      whenever small changes are introduced to a hardware system.
      See :ref:`porting_board_revisions` and :ref:`application_board_version`
      for more information.

   board target
     The full string that can be provided to any of the Zephyr build tools to
     compile and link an image for a particular hardware system. This string
     uniquely identifies the combination of :term:`board name`, :term:`board
     revision` and :term:`board qualifiers`.
     See :ref:`board_terminology` for additional details.

   CPU cluster
     A group of one or more :term:`CPU cores <CPU core>`, all executing the same image
     within the same address space and in a symmetrical (SMP) configuration.
     Only :term:`CPU cores <CPU core>` of the same :term:`architecture` can be in a single
     cluster. Multiple CPU clusters (each of one or more cores) can coexist in
     the same :term:`SoC`.

   CPU core
     A single processing unit, with its own Program Counter, executing program
     instructions sequentially. CPU cores are part of a :term:`CPU cluster`,
     which can contain one or more cores.

   device runtime power management
      Device Runtime Power Management (PM) refers the capability of devices to
      save energy independently of the system power state. Devices will keep
      reference of their usage and will automatically be suspended or resumed.
      This feature is enabled via the :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME`
      Kconfig option.

   idle thread
      A system thread that runs when there are no other threads ready to run.

   IDT
      (Interrupt Descriptor Table) a data structure used by the x86
      architecture to implement an interrupt vector table. The IDT is used
      to determine the correct response to interrupts and exceptions.

   internal API
      Any internal function, structure or macro defined anywhere in the Zephyr
      source tree. Internal APIs are intended to "extend" Zephyr, and are to be
      used only between certain :term:`software components <software
      component>`, usually in-tree but in some cases out-of-tree (e.g. adding an
      out-of-tree architecture or driver). Applications must not invoke
      internal APIs outside their own scope. The context where the API is
      called or implemented is well defined. For example, functions prefixed
      with ``arch_`` are intended for use by the Zephyr kernel to invoke
      architecture-specific code. Internal APIs are mostly kept stable, but with
      fewer guarantees than :term:`public APIs <public API>`.

   ISR
      (Interrupt Service Routine) Also known as an interrupt handler, an ISR
      is a callback function whose execution is triggered by a hardware
      interrupt (or software interrupt instructions) and is used to handle
      high-priority conditions that require interrupting the current code
      executing on the processor.

   kernel
      The set of Zephyr-supplied files that implement the Zephyr kernel,
      including its core services, device drivers, network stack, and so on.

   power domain
      A power domain is a collection of devices for which power is
      applied and removed collectively in a single action. Power
      domains are represented by :c:struct:`device`.

   power gating
      Power gating reduces power consumption by shutting off areas of an
      integrated circuit that are not in use.

   private API
      Any function, structure or macro defined anywhere in the Zephyr source
      tree which are only intended for consumption inside the
      :term:`software component` where they are defined. Private APIs may change
      at any time and must not be used by code outside the corresponding
      software component.

   public API
      Any function, structure or macro defined inside the ``include/zephyr``
      folder that is not explicitly marked as private. Public APIs are intended
      for consumption by any and all in-tree or out-of-tree :term:`software
      components <software component>`. Public APIs cannot be modified without
      following the provisions described in the :ref:`API lifecycle
      <api_lifecycle>` section, which means they provide guarantees that they
      will remain stable over time.

   SoC
      A `System on a chip`_, that is, an integrated circuit that contains at
      least one :term:`CPU cluster` (in turn with at least one :term:`CPU core`),
      as well as peripherals and memory.

   SoC family
      One or more :term:`SoCs <SoC>` or :term:`SoC series` that share enough
      in common to consider them related and under a single family denomination.

   SoC series
      A number of different :term:`SoCs <SoC>` that share similar characteristics and
      features, and that the vendor typically names and markets together.

   software component
      A software component is a self-contained, modular, and replaceable part of
      the Zephyr source code. A driver, a subsystem or an applications are all
      examples of software components present in Zephyr.

   subsystem
       A subsystem refers to a logically distinct part of the operating system
       that handles specific functionality or provides certain services.

   system power state
      System power states describe the power consumption of the system as a
      whole. System power states are represented by :c:enum:`pm_state`.

   variant
      In the context of :term:`board qualifiers`, a variant designates a
      particular type or configuration of a build for a combination of :term:`SoC`
      and :term:`CPU cluster`. Common uses of the variant concept include
      introducing both secure and non-secure builds for platforms with Trusted
      Execution Environment support, or selecting the type of RAM used in a
      build.

   west
      A multi-repo meta-tool developed for the Zephyr project. See :ref:`west`.

   west installation
      An obsolete term for a :term:`west workspace` used prior to west 0.7.

   west manifest
      A YAML file, usually named :file:`west.yml`, which describes projects, or
      the Git repositories which make up a :term:`west workspace`, along with
      additional metadata. See :ref:`west-basics` for general information
      and :ref:`west-manifests` for details.

   west manifest repository
      The Git repository in a :term:`west workspace` which contains the
      :term:`west manifest`. Its location is given by the :ref:`manifest.path
      configuration option <west-config-index>`. See :ref:`west-basics`.

   west project
      Each of the entries in a :term:`west manifest`, which describe a Git
      repository that will be cloned and managed by west when working with the
      corresponding :term:`west manifest repository`. Note that a west project
      is different from a :term:`zephyr module`, although many projects are also
      modules. See :ref:`west-manifests-projects` for additional information.

   west workspace
      A folder on your system with a :file:`.west` subdirectory and a
      :term:`west manifest repository` in it. You clone the Zephyr source code,
      as well as that of its :term:`west projects <west project>` onto your
      system by creating a west workspace using the ``west init`` command. See
      :ref:`west-basics`.

   XIP
      (eXecute In Place) a method of executing programs directly from long
      term storage rather than copying it into RAM, saving writable memory for
      dynamic data and not the static program code.

   zephyr module
      A Git repository containing a :file:`zephyr/module.yml` file, used by the
      Zephyr build system to integrate the source code and configuration files
      of the module into a regular Zephyr build. Zephyr modules may be west
      projects, but they do not have to. See :ref:`modules` for additional
      details.

.. _System on a chip: https://en.wikipedia.org/wiki/System_on_a_chip

---

### Doc Index Tex (`doc/index-tex.rst`)

:orphan:

..
    Zephyr Project documentation main file

.. _zephyr-home-tex:

Zephyr Project Documentation
############################


.. toctree::
   :maxdepth: 1
   :caption: Contents

   introduction/index.rst
   develop/index.rst
   kernel/index.rst
   services/index.rst
   build/index.rst
   connectivity/index.rst
   hardware/index.rst
   contribute/index.rst
   project/index.rst
   security/index.rst
   safety/index.rst
   glossary.rst

---

### Doc Index (`doc/index.rst`)

..
    Zephyr Project documentation main file

.. _zephyr-home:

Zephyr Project Documentation
############################

.. raw:: html

   <script>
     function openVersionSelector() {
       // Open the mobile menu if visible
       var mobileMenu = document.querySelector('[data-toggle="wy-nav-top"]');
       if (mobileMenu && mobileMenu.offsetParent !== null) {
         mobileMenu.click();
       }
       // Open the version selector
       var versionSelector = document.querySelector('[data-toggle="rst-current-version"]');
       if (versionSelector) {
         versionSelector.click();
       }
     }
   </script>

.. only:: release

   .. admonition:: Welcome to Zephyr Project Documentation for version |version|.
      :class: welcome

      .. raw:: html

         <p>
           Use the <a href="#" onclick="openVersionSelector(); return false;">version selector</a>
           for the documentation of other Zephyr versions.
         </p>

.. only:: development

   .. admonition:: Welcome to Zephyr Project Documentation for the ``main`` tree (|version|).
      :class: welcome

      .. raw:: html

         <p>
           Use the <a href="#" onclick="openVersionSelector(); return false;">version selector</a>
           for the documentation of previously released versions.
         </p>

.. raw:: html
   :file: index.html

.. toctree::
   :maxdepth: 1
   :hidden:

   introduction/index.rst
   develop/index.rst
   kernel/index.rst
   services/index.rst
   build/index.rst
   hardware/index.rst
   contribute/index.rst
   project/index.rst
   security/index.rst
   safety/index.rst
   samples/index.rst
   boards/index.rst
   releases/index.rst

---

### Doc Kconfig (`doc/kconfig.rst`)

:orphan:

.. _kconfig-search:

Kconfig Search
==============

.. kconfig:search::

---

### Doc Requirements (`doc/requirements.txt`)

# This file was autogenerated by uv via the following command:
#    uv pip compile --universal --python-version 3.12 --generate-hashes requirements.in --output-file requirements.txt
alabaster==1.0.0 \
    --hash=sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e \
    --hash=sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b
    # via sphinx
annotated-doc==0.0.5 \
    --hash=sha256:117bac03a25ede5df5440e855b32d556049ca169ead221505badf432fed4b101 \
    --hash=sha256:c7e58ce09192557605d8bbd92836d7e1d520ac9580096042c0bfd197efacf1bb
    # via fastapi
annotated-types==0.8.0 \
    --hash=sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7 \
    --hash=sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0
    # via pydantic
anyio==4.15.1 \
    --hash=sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101 \
    --hash=sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94
    # via
    #   starlette
    #   watchfiles
anytree==2.13.0 \
    --hash=sha256:4cbcf10df36b1f1cba131b7e487ff3edafc9d6e932a3c70071b5b768bab901ff \
    --hash=sha256:c9d3aa6825fdd06af7ebb05b4ef291d2db63e62bb1f9b7d9b71354be9d362714
    # via -r requirements.in
arpeggio==2.0.3 \
    --hash=sha256:9374d9c531b62018b787635f37fd81c9a6ee69ef2d28c5db3cd18791b1f7db2f \
    --hash=sha256:9e85ad35cfc6c938676817c7ae9a1000a7c72a34c71db0c687136c460d12b85e
    # via textx
attrs==26.1.0 \
    --hash=sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 \
    --hash=sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32
    # via
    #   outcome
    #   reuse
    #   trio
babel==2.18.0 \
    --hash=sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d \
    --hash=sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35
    # via sphinx
beartype==0.22.9 \
    --hash=sha256:8f82b54aa723a2848a56008d18875f91c1db02c32ef6a62319a002e3e25a975f \
    --hash=sha256:d16c9bbc61ea14637596c5f6fbff2ee99cbe3573e46a716401734ef50c3060c2
    # via spdx-tools
beautifulsoup4==4.15.0 \
    --hash=sha256:288e3ca7d54b06f2ac191970bc275c1939cb46d450b255bf6718b04aa37ab4f7 \
    --hash=sha256:d6f88de62e1d4e38ecb1077eb9724cd0eff29d2a08ca16a401e9b9e93f117cf9
    # via strictdoc
boolean-py==5.0 \
    --hash=sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95 \
    --hash=sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9
    # via license-expression
certifi==2026.7.22 \
    --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \
    --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55
    # via
    #   requests
    #   selenium
cffi==2.1.1 ; implementation_name != 'pypy' and os_name == 'nt' \
    --hash=sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e \
    --hash=sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66 \
    --hash=sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2 \
    --hash=sha256:154852545011f779917b11c78db2358d095da62a9a172b78ad0a583ee5adc0d0 \
    --hash=sha256:194cffa889098ced9976c3fc6340305e43f6303657d298da55366907c05c22d6 \
    --hash=sha256:19ee6127ee34de7d83ce3d371ebc5ed91addbdcc39f9ab15ce4eb35a4e534971 \
    --hash=sha256:1a18a57b58cfb21fc28d72e876acf10eaed67a1ed96226f92af4df681d571c4c \
    --hash=sha256:1aa5645c30469b09530c4ebca77ebf8f17618293c58f8549cb1a543a50236e7d \
    --hash=sha256:1dea0e4d7d4f11f619fe8c1d76caf49e24405b4b5743c0e3be16a500ecd930c9 \
    --hash=sha256:208f941bb9d18e768138677f0a6d2ce01f590df56043dda1df1535ac57c88517 \
    --hash=sha256:210019b6c7cf07f081b4c54635c8cf744377001350e29cc0f81c4377b4797735 \
    --hash=sha256:246fa40ce8645a614ff682e0b70f37134e460eaf93a775e0cbe3cca585a67a80 \
    --hash=sha256:25792eac27877609e7bb06d42ff88278a6624fff2ba9bbb523c09616b117e80f \
    --hash=sha256:27350daa11d4f10c540e6e89dada4c54feb7256ad03e9a4dc075ebad7ba360d1 \
    --hash=sha256:28907ab9bfb6aa13184cfc17c6b8e1023c5ab6fd7076d8c20a35e59fe04f8f29 \
    --hash=sha256:2ae64be792b8966f2c69538199728b290e34726562896df1e5dc8ffd8d8188e8 \
    --hash=sha256:31348097ff5bbe827ccc41795d4dd099d9f0625e7def00ee653c137a490c2a6c \
    --hash=sha256:3143d81e29e1e20a9ce10901ec369012947876596f75a222235965f2b7ae832e \
    --hash=sha256:3222ba5d678f80a030e6afbcc33dc1ae5cb45facabb61cee2c7016b8432fde48 \
    --hash=sha256:3311ed60d36f83378794e1009ac6258bafbf81f7888b4caa7b35a521e3f95813 \
    --hash=sha256:334644fbac4eff73d985a17a91226df55d0f394160c4cfb880e084c8f7161cac \
    --hash=sha256:34e261f78cb6ceaaa36f42f2613f4380d94d9c759a9c73c769ee6e0247364632 \
    --hash=sha256:363e05fa78e15116c3c32c210ee36884fd6b9afa6d440e47112c3bd511d64cb6 \
    --hash=sha256:398aff33cee2767e3e781d2554c54bd0dff386bb437581e0d8011fde1a942ec1 \
    --hash=sha256:3d22a20b1fb1632cc72c22f95f7b0d2961c3e1c235f245ba4c606c4771035659 \
    --hash=sha256:42a494cee34437f05546455144f2b5d9ac09b1face62bcfce597d2e521066688 \
    --hash=sha256:42e2f76b9455f5a9a844f770bf3e200ed3da0e15f5df3db9c31fe80b04b3d004 \
    --hash=sha256:42f6930c31dc7f50732c9ae793c2786c7b6b044195967bbdde40bb9be81c4cc0 \
    --hash=sha256:456a61fa52d579ebf9df2e9552ead5129855dbaff6c1e5a9b1bc408809bdc062 \
    --hash=sha256:471cee653ae88de62096552e6d24ccb4a5adb8c8c9f10b5054d0122c15bf2779 \
    --hash=sha256:49cbc70e6542d4ccccb936558d1064a8012541e78f821f955cff24e357776c94 \
    --hash=sha256:4a7c934f7360e8cd64fe9efadcbd10c7c6364f531e432b9a4bf5ccbc9e0e8b50 \
    --hash=sha256:4be96343e422f2dfcd12ab5c9f5aebe03f82f737c6bffeca6830b3875cb44aab \
    --hash=sha256:4f42141fc14250de6dde5ee7ea4432be017252d91f19c5ad043c084cea629cac \
    --hash=sha256:507a24c282e0f42f8ed737cf048572cbf580468da5555764a8331735e9c736b6 \
    --hash=sha256:51b31d1c98274844cfd7838ce00bfc27c7423a4dc00fc0772fc3331c2cc90676 \
    --hash=sha256:58acb8ab8e295e6c5ea12f888cbb13cf21511ef2a3303a23f4325c29d17fe5c1 \
    --hash=sha256:5a59cc1c4442bc3d5c703bf720b51138d0bfc173618807c9ee2490a7541dd3d9 \
    --hash=sha256:5bb4e7ea95dcd6a014a6fef62e62467d67d8e582326443f3d68e71d6320a9fcf \
    --hash=sha256:5c58fe613dc5e5336357eff555824a314d8e43282600435c8d1cb6a7a2fedd13 \
    --hash=sha256:5e7cecbaadb83884793e05828cee59b210b24583b9c7425d0ba6a754fe22eb4e \
    --hash=sha256:616f097f2fe415bc92a247f02e11f634e1f9e9a83d327e3c915c15089c87869e \
    --hash=sha256:63bbfd5ded17c4840ac07cd8f1c21ba9d9708141f840b324f422f41b207e3973 \
    --hash=sha256:64faea20f4e2613363a1a9b9c7dd73058f3ecd00133a511e72ad7c511658f527 \
    --hash=sha256:661c298b4821edebead0c91edd2b00374d67ad7c5a1f7a91d4442633b79d6a72 \
    --hash=sha256:68e62fe11f30d5ca8289242866f0a5291402d8529ca2178ab8afc5c9694ae890 \
    --hash=sha256:6a8dddef476fab96d066d578fc88526767b836ab5ab21754e1d5bf3879c31c7c \
    --hash=sha256:6e192623c49c94421616a5778fba35cf0d5a8d000650c1967ef4448ee5cdd990 \
    --hash=sha256:7225e4514edb64eb6740324353e0da0711954fd8d7da4576755b1c6e09b697cd \
    --hash=sha256:75f80557d1389eddbd0de2681f6a390a0c5338c31ddaa821381c203fc3fd50d9 \
    --hash=sha256:770de9db11e84213beec501cfcaa013b019820ca881e03344dea5844f7876d94 \
    --hash=sha256:7750c6449dff7864bb9bb27ddfb0267756189201a3afc911d82b3caacd70dfc3 \
    --hash=sha256:7bde5e4cc5c10140859842b9d383af292b22639a4dffb725314baf45968cef80 \
    --hash=sha256:7ce713ace7c0e4520535b42b77eaa742c16dab813978064913e5a3cf82973b41 \
    --hash=sha256:7da0c5eff80f0197f3b3d1232ec5a682a9325f4ae9016a78f5f5ca35f9ced1f5 \
    --hash=sha256:7dbb61fe3a7699468030f71bbe5f8a0e326a151daa91beb11a6fc1f980c55e1c \
    --hash=sha256:811bd1e21d32de12efca32393a0ab3f5133b54fce9bd44b8bd77ab07da14bf6a \
    --hash=sha256:8ef53b2de9bcb9197d31854256575d59dbac0cba72ac627bb291ef5eceb74be4 \
    --hash=sha256:937c0052c05a31ca1daf18de3158eed4dbfcb9cc107adbea227728d647be701e \
    --hash=sha256:9d2055050ea716bd38b7f7f1579c275386646b4894c155a3e2f3cd62ed41b7c6 \
    --hash=sha256:9f8d177621de5cb38ee3e731eda45d421db093ec0739f46a5594babda7987a98 \
    --hash=sha256:a2d7755bef5a12ed488f4ef1f1b69ee9191d7396083b755a5d2295f6edb4768b \
    --hash=sha256:a48d62ab9d6f4f98c983223a547af44be6ca3691074c31cecced6facd3ba2dc1 \
    --hash=sha256:a4f00aa42f75d6e4595e8866e748cc1705adc0cddfeb2ca86d0d03993d63ba03 \
    --hash=sha256:a6e721d4b0e45d5b65e87534470e67b18dcd092c83f68fba09f152b9cbc061af \
    --hash=sha256:a730a083190634c65cca36ba5f489531576ebd79bcd5c8e172130f6453127231 \
    --hash=sha256:a931079504ecc49efed7744c476a5c343a92fabf66dec2db95edb1b2fdc770e2 \
    --hash=sha256:aa9511c62d14da7aacc9b4bf51f3f697a621e83b2d6919008243c3aad168eea3 \
    --hash=sha256:ab36d55f9ed2d067327667c2fea18dda018eb628dd6347aa01dda6cf1f5d3836 \
    --hash=sha256:ad2c86c495b899d862ea0f4b42891b8713a3bd45dd4105c7fd51c2a72f39f3a5 \
    --hash=sha256:aeae0e330c9f6acd681f647d46cefd30c29f93e3392882e792e82080c9691399 \
    --hash=sha256:b0431303acaea1089ad4b3e9ce4e6518193def1118d4073ca848635ee4ea2e96 \
    --hash=sha256:b5bdfd1c873d4e093aabc0ca84c4ca6dbc4f752afb5c86f146d9742580c9da2e \
    --hash=sha256:baed1e86cc735622097354b9d1281406caf42ff42a886d29faa8e8d1630333be \
    --hash=sha256:c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf \
    --hash=sha256:c26608d2222fb1e94487e4a387d85f13eb55d5ed725cb25a0c589ac4ee60e7bc \
    --hash=sha256:c7659f22557c5a0bc4855cd635f55edec690cc008a40768527762cb9fb263455 \
    --hash=sha256:c8c69575568085ba0b1b10c0249d779a214aea6f6522e949a0fc9fb0fcb449d0 \
    --hash=sha256:c8d2c9fd1f2d16f780d15127abb050d13d1a76c03a4bd87d7e4980e45e511e12 \
    --hash=sha256:ca82be1a1d406ecfe1d25dc16cb33488e5a16bf4438c9fb590484ea29d92478b \
    --hash=sha256:cc572dace3f60ef98d7b12ff411d20f5362feb31a0439eab0085bbfd349982d7 \
    --hash=sha256:d18e5ac0f2f03f4f518d3e23db0f0cad7faa1da8620e9c09461d443bbf6e6692 \
    --hash=sha256:d28630f5854ab07ab1fd4aba756de52326c82e6be15d414b12793f1975048b54 \
    --hash=sha256:d9c275eaacd24aa73f94ffd6de08fc3f932424d8b6c376f4bed7cde376fe7bc3 \
    --hash=sha256:da0e573f9f97159390c89d9f1a9e41908b66d408cc5b58d08cf3847d844c531b \
    --hash=sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be \
    --hash=sha256:dddad92b554513a31f272570678ba307fb9f618f05e3d4a5eacafff9eae03e1d \
    --hash=sha256:df423d40ee8654634421812bc3b196da3f9bd7d32929da813f8394c4348a5358 \
    --hash=sha256:df913725b79db7bcf03448f36b7bf8815363417d5b58deecf9305e3e30f0f21a \
    --hash=sha256:e0bcb7e0f677f543555d2adff3bf19c05f66cdb4796e5ff602442ab2fe3c4ef7 \
    --hash=sha256:e2d65b31f36619cda3999b78b2aa9632e76b78448e7a56fc4240824200e7c4fc \
    --hash=sha256:e6e8cff14d6fb0be70a09c0bdc58096f501952d04624ebf867e0e56da2df8960 \
    --hash=sha256:f16c709686a78c727bbbf059f92b0bf41c6fc60deec706d2dc19f529175a6125 \
    --hash=sha256:f24fb43132a4c6b4cb4eb029492919b2db645be6808d738f244fd146c03c32cb \
    --hash=sha256:f53e442b08449d42821fa4a4fba000095af9f62742a500f978a9f557ec44339a \
    --hash=sha256:f5cfbc5fe74540d335175b656c725d74d90e3730c626d92575eea35029d9afaa \
    --hash=sha256:f81b3b8f3d4e343550fa4baa0e479bba9f2d29ce9c2e9b51d1ce1718d7442fcf \
    --hash=sha256:f8ec5e643a9a937f64e1999eb9f75d072263751912dc5cd06d3c85f8f44be7c3 \
    --hash=sha256:fb92203a88b3d3053034db775110081c49d28be6551923805e039924093761e4 \
    --hash=sha256:fcd22650c908d7b7da162bbfaab594a1227a15d1643a98c68b122ac642fa2264
    # via trio
charset-normalizer==3.5.2 \
    --hash=sha256:01077390b03f7988f11d700a2194e69b119741a86b1a638b1db88891e3eced8e \
    --hash=sha256:01b0c0d2262a9e28e8484a278c7e1b5d650e3ac8cf2683d2967e25899f208bdf \
    --hash=sha256:04851f73ae72b8413dddadb16a49dfee95263553741fd42d546f7d66907e6be5 \
    --hash=sha256:0521c5665880b33d603717defa76c094048900010897909952397feb3039da56 \
    --hash=sha256:0774bf9bf620249fee3e0b8b9fd3065de213be30f3aa94ce2494b3b638949e26 \
    --hash=sha256:0891b9d3903c5571c03771ca669a4b0ec5618ca722a5c957d3d29cd4e5062848 \
    --hash=sha256:0c951d5e6dd9c2ff60609476752bee49da4206adde960ebc247766937f72e718 \
    --hash=sha256:0fed1d06615f022ee3b13caf5e8b180cfea32bb2c5aded8a9d44277afc040f93 \
    --hash=sha256:114e4d0c92d618409ed82a99e22b5c5e768fe995f2973f78265f4524f49d4640 \
    --hash=sha256:11912e4bb14baae7c5d8791aa55ba0a3a03ec6729073307b0f57270abaa713d3 \
    --hash=sha256:11a4d68a6ecda3292cb1e50239e111543ba5d709bb62a6b4ea1afcfa729d8875 \
    --hash=sha256:124fbf1a8ff966d87ae05bb8bd45a71f966055ed8bba320d0c7cf450bc5f4d0e \
    --hash=sha256:1461ac396c4fdb983a675f20aa555624f0ee18ac83d832b9244ffff3d8055275 \
    --hash=sha256:1503bccbeb36d5527790c3930327704c39af22de3112f1b1666a9f3ce15ee204 \
    --hash=sha256:15bb4005af6320d259dc7593ca84a38d7fe06a421dbcf7b910ae23979101e787 \
    --hash=sha256:15c44f7edfd477b06f517a5cc317fc1707edb9de2c865f43d4b6513907473234 \
    --hash=sha256:16fa0eccf81304b79c5cd87f9271c3b85dd9dd99245e4422ae9c0dd45e0f99d3 \
    --hash=sha256:183b88127acdb4fabe59d951ab424faf1af7b63cdbb5f776186c1ea2ffcaed98 \
    --hash=sha256:195c26fb65950f8fce54e26349852b7bdd7c5f120aeefbcc440b8a20faaed4a3 \
    --hash=sha256:1afb975bd5d68d5ce9f6b6d44fdf2f7e34b895a35e95708a7a91b20a3b51d187 \
    --hash=sha256:1b4cbc7c3491ccb4aa17fcd8165649d01cf39f76de1696da8631b5f71b85401d \
    --hash=sha256:1bc0baf5ef96b6ede57d47f4b8fe4d9d84019c3bfcbeb20a41edc6a6ee341f1f \
    --hash=sha256:1c50fe28bbc2ced33386f298650d91218076c05420e6cbd790b913adc41659e7 \
    --hash=sha256:1db38f4c5496827c1a501846d64d14c3b80c7e6714e406cd7dc36a9899fa1011 \
    --hash=sha256:211d5a3eb6af8f513b8d4ca19a8c1b7accab1b5f0d3175f9826b03c1a920dc1f \
    --hash=sha256:23851fb4e1b85ed3f6c2a27b777cdfe2e19fb5b38429a8faf38c7542b7665869 \
    --hash=sha256:254eb48b9fa5ee9898a3c445825a1f340fe53712a098904b39b0bddba8ea3cb1 \
    --hash=sha256:2625388c6c754520c37abaf3b41eb34d1cc4a373f457898f08606c8e362b891d \
    --hash=sha256:281cb91036248400f4cc957495cccd44c275c2e0c5854f7e45ac5cf7dc193847 \
    --hash=sha256:28a15fdad492a99b6eccfaaed66ef3f74050680545ea61ec8b2f4c538f1f1320 \
    --hash=sha256:28b4f0d66fb834ff90f28209ac7bce77868c45d8c93e26f906709d9b7c2e1af9 \
    --hash=sha256:2a925889534b3748302dae5dead07cc13480de1dac3aea80a941b729b471ef93 \
    --hash=sha256:2b7b3bbfb4fe8ef40600792d762fbaa9057559f9d3fad209525b7a22b99e91fd \
    --hash=sha256:2c9ad19a6cfcd5ea5c0d41161d22f9df1dcc277e9bef2751391334546a314c00 \
    --hash=sha256:2cc961b171b3f3440f410489ab3573e86aea8736134ebbb40ea1338b7f0831bc \
    --hash=sha256:2ce45c6627b22c47e390bc91a41c3d13032192e699fa0bea96e9671b373d69b0 \
    --hash=sha256:2e06a3a98f916dd41d27f3105e02e7a40181c98c94b9158733d03a6f80506c09 \
    --hash=sha256:304d5463e65a35d7bb0850550e0780395395f6fcf452f04db7d5ca7cecc425ac \
    --hash=sha256:304d8e4d493af723536393eee0c689eb7813f4a474c8b479dee63f1fdd98f621 \
    --hash=sha256:30fcd120b732aa79317f08dee04d7de0847822e4cf7ee0e9f445bb958832252c \
    --hash=sha256:31f3930700408d211f13378ccbe1c40845d8da54bd0681fac3a9b5aae81c7aa8 \
    --hash=sha256:34276fd796040bf0993ab33a369aa572e6979c7aab225a88893667ad8eac8f7a \
    --hash=sha256:355ad8011081dec5412240c087a9a0c9d4d5039f3ed11a3f13e18c2b29b56c51 \
    --hash=sha256:38a873987f3be698494da8b2e3085e29da02da7b633dce73e79c699a113d7bf0 \
    --hash=sha256:39de2a259fc954455c57274dc94c79d5842774e1247a016aff30bc0efed0f4ef \
    --hash=sha256:3d14b50de6bf4d0edf857a9386836846f982b8f524e188e2e68b96d702bcf4aa \
    --hash=sha256:3d21b8b13c7592db2ac5e544a6d83187b995257472b0c9e8351b6d507ae37ed6 \
    --hash=sha256:3d31298449090ab8d47b7b1b2a555ff73cac7ed438a08b7ac160980c7ebed649 \
    --hash=sha256:3ddacd27458c45bdacd6bd6db644bfb730efbf9e830310186e3045c9c5be8fb2 \
    --hash=sha256:3df041de8887954562c9b261cba85ca0e9ded74048daf125f45edcfaa4832229 \
    --hash=sha256:40ab6bffa02ae10a0581e6c198be7d2d8ca5c2a0c64e4ed3465d766df457573e \
    --hash=sha256:4275811936e2f06feff5e598fb42a1b7ae852da8e39605211892b56b81a34efd \
    --hash=sha256:443eae2bf318abeaf6f15d785138f71fd6de770e99a92158b8b814265e079115 \
    --hash=sha256:447441e76ec720b15e64418d32e092297340387053047c7c694f579efb0ee1d9 \
    --hash=sha256:4495c5002a7b28557e7e222e77e0b661183e432b7d6d2e788101e3f240e05b8c \
    --hash=sha256:44bd4fbb29dfbeba60e7d2bd000c59e4b21ddb3cc53912b14048d37092706d7c \
    --hash=sha256:4685902cf26edf013ed7a3da0f426ebba7a00ebb9541386d835afbf002c11cab \
    --hash=sha256:498dc3188ca05a68231ac3fdbfc7f57eb67e1343c30e0fea17f8218c1599b253 \
    --hash=sha256:4c2b5031f63e331e3839b40aed2dd6f191e9c07edbde303e7876846ea1946995 \
    --hash=sha256:4d48f2d08b9de5864e2c8744d4461b862fb149a18274abc8b698c45975573438 \
    --hash=sha256:4f87960d57feabfb618e4e0af6e7371645fa26a277860739d6e5d6e0012c92f0 \
    --hash=sha256:50e3adfb96fc189eb27b1cf62d3b598b89b4bb0420d93a3d3e42e137409011be \
    --hash=sha256:51cf45226a9b588d0d2b4880c62d686934b63ab0bd79ca23ab0e9762eb27441b \
    --hash=sha256:52aa6992700996af31f375de0c6bacd402b0097fe40b53c426b9f51a90ebabc7 \
    --hash=sha256:55ea99acb17b9325618de155a0cd6a2e8f5d10be008113e1d433bbb58db543b2 \
    --hash=sha256:56bc200a365efb37383b7852e4cc5898d3b2da5987289b543956cf8cad71018a \
    --hash=sha256:588461c2e8384d309bd63e5826019b6977bc66d629b99ac8737bb795d7b2cb5a \
    --hash=sha256:58ca3755ee7ff7f59b57789ec9833c9de9ea275405cdd240eda1f193112e398a \
    --hash=sha256:58f361dcbab699cf8f42db3f47c8e7fd1036f138c23a5d08de9fde5f425a730c \
    --hash=sha256:598a11a2c7ebaa5334bf698bf29568c9c390abac6a154d8170fedecd1cea38c5 \
    --hash=sha256:59f63901b0031c3136cf64704dcb21de0bbae62ce2c9529bc39d27665463de37 \
    --hash=sha256:5cde776b7cc66e4f6c99612cea4aa7269aa65863f7a15841b2c264f103822f4e \
    --hash=sha256:5e2b6b57e9733d39f0c9fd3185efa6b8e29652c4cd8fe94180272cf6ed9a78c4 \
    --hash=sha256:5fb29fb8cd1a46c27a1bf9613ad5ec2599310d46b4025d9556404a6b6a292800 \
    --hash=sha256:6045373d5a89a5ec71afde535db987ca28e76dfa276c2d4c818265b375d4b055 \
    --hash=sha256:619799369eeef6366ed3e8755a5670f4f2f0fb6b30a0fd7264dc0fdc2357058e \
    --hash=sha256:62588a277bfb59def052abd940703fa35107152bf479781a878617d60faf8fb5 \
    --hash=sha256:62603db9a7caa0802eaa28c1c46fecd7b3a263a774069c24c3c28c302448721c \
    --hash=sha256:65cd72beeeca9d3aaea1201e5923859f308f952f9c71de93f06063c79f0f7a3b \
    --hash=sha256:68eb192d85ab8e5f6ec69c2bc6ac0179fbf04a5ac1569d12fbef74883fe102d0 \
    --hash=sha256:6bd128f206a7752ae1f2ab6c61bf8a24ba28913a10df8b14c2637b973ff97a80 \
    --hash=sha256:6be488a102b8cf28d0391d8c4ba7748938ae28b78ad901f8585520fca33ead1a \
    --hash=sha256:7218e8f32b0956cfcd048fd42d9d5779809745ca1d86113ca56f66e7ae1549c4 \
    --hash=sha256:7441d755b7ab94f8d4eb3e43ec05482d760842fd263d003a99102d742cd835e2 \
    --hash=sha256:749e97e1b32313717a565abbe321bc2190bc8b35f1a67e4cdbc7c56c8d8ffe58 \
    --hash=sha256:75a3ceed0724d625d64b86ca20aba182e4df462e04c2414fc941c0f523f06aac \
    --hash=sha256:780fbe7cab297b81dad9fb8dc5eb003c0468ffb0d9e5f65068c53a34661a96bc \
    --hash=sha256:78456a747de8dc58360ffa581f30a002baf5aa28cb262536545e91f113ed7639 \
    --hash=sha256:7967d08cf06dee78443b874f98c98036f624f3a4e73e11f9f64f5be4d25393cf \
    --hash=sha256:7a881931aa470808df94a8c380eed2bbbc76cd9dc622310f99665658c821eb6d \
    --hash=sha256:7dcd882da75ef9adf94903b1e3b9419e8aa8fb4c7396822b834b9ef7fb96954f \
    --hash=sha256:7e841fb9010836c992c9f12fcbd43a831de93a5f726fc1ccd8ca1d0268c5014c \
    --hash=sha256:7fdde2c9fd9e3eca40631e024664cf2584272cc8f96308cbe5fdfc930f51d8bc \
    --hash=sha256:8024d00c3faf3fc0c16e07a69f4405e8eac7cc0ab15f65fe6cf43827c4cf72b4 \
    --hash=sha256:80d02b6f04e92601a081dd97b23d3128033098bff5d35d392ddcc0476ea11253 \
    --hash=sha256:838dcc90063569a0448120554591a1d6c4a4ffe11babf048908793154ab86ade \
    --hash=sha256:849df64e889b2e17230d58410a03dba311a65b163508fd33679b2b737d4b7858 \
    --hash=sha256:87475fabc8d9996fd9c27debb395e642e8c838d78a00b6e932227a0e06b81e26 \
    --hash=sha256:87e50a3e7cb90af586b6c5faf23e302a970415ac73bd7bd90a515a04b427ef96 \
    --hash=sha256:89b53f3cda69831909888e0494f4fa0bcd3537e3e138dabeb620bd6ad946bae8 \
    --hash=sha256:8a893cc101149f80a653f82062ebc95b34525a2614382e1da5458fe7c6997249 \
    --hash=sha256:8b2bfab86aa71ae13aa41a6a26aab338e0db2b8bc75434b05aea89e011ff35a4 \
    --hash=sha256:8d86d6fc60743dc916eb79e2eb1ec4818e21e427731543af40a3021851174a13 \
    --hash=sha256:915563965d418f986e7e145accc592eae9e1a1be3566ff98a05d7a9ec42a76e1 \
    --hash=sha256:92888bb3187c5ba50500b00b3b310c9f2c651709d28036077680cb5255450a03 \
    --hash=sha256:93223adc95033dd47133a46ccfc316a0139176fd79085762e27202ec56018f03 \
    --hash=sha256:9373ad13ef0d2c0fb761e04e55bfdee5a08b52cef2c882c8fbe9935b1517152e \
    --hash=sha256:9409a8bf35cf78353942504b24a57de3d75b708997a1e4bd8db71ac8633ce364 \
    --hash=sha256:9b7f416ff0978e2f2249330527f0ad6fa02f4932e6199692d3b52da2048c19e4 \
    --hash=sha256:9bde855991b7e362c146535e3136a50bfaffc0487d38b33ca7e5edefc6e23849 \
    --hash=sha256:9cae88599c7219005d879f98e5ed53341e9a122af585e1091200358a3003d2a0 \
    --hash=sha256:9cf9b1a857e25c4baceeb3624e92a56df3668f398c4acba74e174d81fb4d1d3a \
    --hash=sha256:9f56f72050826f63dcee7a7f55b0a77168cb3bfc553fd405e7f8f9ece75a4036 \
    --hash=sha256:a090bb2c68df85450502e3e20d665e3a5af9c65a84d6508ed477badd49166fd3 \
    --hash=sha256:a192e2c40070d92c3ccf777e3a5c4ff515573cd2bb7ed0c537fdadbbec5bbf21 \
    --hash=sha256:a19a731138fc27d5682277d3b9df22855cea1239bce7fcec5f78f42ef2d1f3c3 \
    --hash=sha256:a66c3bc5ab1f0ff2164fc9965ddd611ff0802173f4b9d24554c563f6ab7e1d6e \
    --hash=sha256:a815775b6c38d4e0ff7bcffbeba67feded90202bb6a226b8dd35f1c855217413 \
    --hash=sha256:a89012d6d5476ee112d20d998570ed58df2260a852afb1758809cd6900411d21 \
    --hash=sha256:ae4f5fea5b8b8ccff88238cc8569303e5ee95efae67fa62922a311397a71f346 \
    --hash=sha256:b6856554c4f44d79fc2307d5768854310a8f0096e501c75637542c82292b0429 \
    --hash=sha256:b6b751274acb69d77b3323d6b7dbaa3c7fdfc1eb829b7eb61d262f32e1af9685 \
    --hash=sha256:b736353c0a625bbd5fcec108576e2385db3496f4f771f785ff32e108d3c3bc45 \
    --hash=sha256:b7fd005a73d9e657273b7a10dc71a9e03c8fb9ee6999798d6918ce095b81ac7f \
    --hash=sha256:b91363207bd9dc966a691e959bb47f64b30f7ac4b072be9968b366982f7db77c \
    --hash=sha256:ba0b1d2620edf869789c3879223f52bf2afc5d31b3cb47cc57b3a12c05e2aa9d \
    --hash=sha256:bbbfc8e28816f19d7c0f1816664980c0a9875d01b27cdf8eedddb639d9e108ad \
    --hash=sha256:bd16aabe4a02a297c23417aa17ac6299dbd8c49f673bcd645b4929b11f5a4400 \
    --hash=sha256:c0afc6800ba57ccc350374c5bd6150419915d95ce93cdbab2d783d75eaf30ecb \
    --hash=sha256:c6708715abcf3c73b99508253e961a9967f02fe536532834149574eda6de0d1c \
    --hash=sha256:c7c9ab723cde841fefb34efbad91e87f00a674b1fe1cd0784fde742bf2c154dc \
    --hash=sha256:c8f3d67aeaf55f017982b73683f0e7342ba2f6635a78f69ce89ebb26aa411e5c \
    --hash=sha256:c9790464842f85f437dbbb54417eda1e0e6bfc52dd8d22d6fd1c994b73b2dc74 \
    --hash=sha256:ca403d7e4798f525fdfc78e258820419cbbd0f0ecbab9de7840e3c017cf6b8cf \
    --hash=sha256:d008d90a7f2471519aef0c90dfbe73b3e6e4d5e66ac48e19154c17e89e98b604 \
    --hash=sha256:d19fbd981a488e22cd04883659ca6b08f50b5974f9fd7c95655ef6a043e5893f \
    --hash=sha256:d1befeed746d247c81127bb14de9dc3d30edb6e5976d34f83f86ed262b1d9105 \
    --hash=sha256:d2374b62878abb00cd8309b32af6c0b715cd02dec0ca74ef12e5069bdc64144a \
    --hash=sha256:d376bbd28b3a8999db1a103b3b388aee6f1ddeb3e51bc2172993efdcd86e064d \
    --hash=sha256:d4a7319f304a774bed22115bc891618e45f85065ab44ea6acd07d274e750519a \
    --hash=sha256:d6734d2ef8a50fbf8445c139477da401f50d62a0606bf00e20ec6d87773fefb1 \
    --hash=sha256:d760fe2a4d7c3b226cb9026d6a842868d52a7901bd98420e1baf14e80da85cf5 \
    --hash=sha256:d913de495d90407cd859d263bee2e5d1a4ed3eb6573c04e70d9ec619a7cbed7f \
    --hash=sha256:db19d07e2e0129e974a0e65d0064fc222a446cd5122c2fd4184d2af9fc734a9e \
    --hash=sha256:dca9ab98072a5a54ebacebdc45f53e645336b320c667410b061be1ca588ae709 \
    --hash=sha256:ddc7dacc8ece3a182e7f15cb862d1fd616b46d076cb1ae9dd232b2c38b655874 \
    --hash=sha256:ddf19c062bea7a0cc80f519243d2c01dd091be0cf952a0750d4ad576709559f5 \
    --hash=sha256:def79fa35ef0cef8d2accec024f4fdc7ead3012ff02f5215c783f39f03ef8cfc \
    --hash=sha256:df29a0a7107f7011e77f4eebdddec4c7331e24d787a0b21a46d63bdf7445da95 \
    --hash=sha256:e09a3942ecbdee5cce73ea9d42da82b81b72ac1bf031ce069b93b5adf4eac8cd \
    --hash=sha256:e242bb1c5e76e97dfa9e7f209a71e93a01d7f19ffdd5cfbb2e2d55b4f08f8ab0 \
    --hash=sha256:e243bd13217235fc7290c621941c3f5cc8b66e4872495be821d7436ba2fb838d \
    --hash=sha256:e2af3aad578aa6bd1384bcf4750fc285e5a9de53f40b7d41e5a0bf748edeb2b3 \
    --hash=sha256:e4e81e09c1578b8df602e3db08b0b3ea0a6947ad612f52bf8dc5ea8d47691f0c \
    --hash=sha256:e54da4baf05720032d527874d40b65fa4d7e5c6c6a43d0c3adbeffcaf275a2b3 \
    --hash=sha256:e80e6c2f55656b4824d72065abb4ddd6a525c74bd78a0aab5d9fc2cf4fb5af50 \
    --hash=sha256:ed2a239c0ea213acc1908150a3037257083c7c083128f1a4cec2ec4b97dca491 \
    --hash=sha256:ed905975ab14056a2e5eb1c376cb2e1ebc5396baf84163939c518556fccde9f5 \
    --hash=sha256:ee21e28f0430bd6dc9086c6e525d5e818a44a5ad19720c8a0ef766792f3eb5e5 \
    --hash=sha256:ee43c17b173d46a3212baa6ead3ae258eeabdae48c263a01ccf0218c366dd655 \
    --hash=sha256:ef4fcbf3327382cd4c9f540babd61248208af7b93eec4de397b4d5f58a09e288 \
    --hash=sha256:eff0ac9dbe711a4aee69bf04a83896aa9b85f19641264053a9f6d48573abb7dd \
    --hash=sha256:f0aa869112ef88429ae17820d99c3dd9504c9e9c671d3c246f3d7442cb051084 \
    --hash=sha256:f3c96f633825733f735c5a9cf21d21a257d8e1edf0b1cee0a064b9c424ca0f7d \
    --hash=sha256:f5833ad231be5eb6553de524a70f48d71b2c8563101750531e0b80184e175cd4 \
    --hash=sha256:f5ec61164adcec446f8969a3358ec3f9b26bbda3b9213e5586d219afa8df2915 \
    --hash=sha256:f7d486c83842422badd511868fd8a9a20e9407ace71564b6af47ce7e60a336c1 \
    --hash=sha256:fb9e68df06293761f9fe66ade60a9bc6d0f5e42b8acf2939a9158af86ab0e5bd \
    --hash=sha256:fc14a032f813bf5fe624d991960ea83e9715adc27e4c1830a2361eb1d02ac341 \
    --hash=sha256:fcff63213e8e6e47770541a4607175404f47cbb3ebea7b6058cc82d524a0e424 \
    --hash=sha256:fd1fbe0f116b6e55da77aca2c6ddcddcfac2186cbf78bdebf40fc156efca389d \
    --hash=sha256:fe9753dfee015c570d73df76f899f18444d41388bffcde097deba51c4fadbb9f
    # via requests
click==8.5.0 \
    --hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \
    --hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34
    # via
    #   reuse
    #   spdx-tools
    #   uvicorn
colorama==0.4.6 \
    --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
    --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
    # via
    #   pytest
    #   sphinx
    #   sphinx-autobuild
coverxygen==1.8.1 \
    --hash=sha256:d1c2f6569e8df8823ae313b1f7876e88ff20b4372c6d02f04c51fb5dc424576f
    # via -r requirements.in
docopt==0.6.2 \
    --hash=sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491
    # via pykwalify
docutils==0.22.4 \
    --hash=sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968 \
    --hash=sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de
    # via
    #   sphinx
    #   sphinx-rtd-theme
    #   sphinx-tabs
    #   sphinx-togglebutton
    #   sphinxcontrib-programoutput
    #   strictdoc
doxmlparser==1.18.0 \
    --hash=sha256:ade561ed7153a53b6f4f7c20d4d66d774e40a3a14170b4d3b700b191e5248865
    # via -r requirements.in
elementpath==5.1.4 \
    --hash=sha256:3c912a9c41311ac5244c038867670d7c0b0fec0e444813608e5b846dbb3428ac \
    --hash=sha256:5ec8d7bb44b16c98414a6a95e20cb150f3cbfc3cac65edc14773288c7a937376
    # via xmlschema
et-xmlfile==2.0.0 \
    --hash=sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa \
    --hash=sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54
    # via openpyxl
fastapi==0.142.2 \
    --hash=sha256:06366626f2e70576367714d9ab2fe8472e6c8456dba69b399f9f797ab5e92570 \
    --hash=sha256:bd5f4d81f1e93a88bcd77caf4dfe3c2dbffc3805407a0007e9a114c18b3a670b
    # via strictdoc
h11==0.16.0 \
    --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \
    --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86
    # via
    #   uvicorn
    #   wsproto
html2pdf4doc==0.0.35 \
    --hash=sha256:747cbc228295049405288801416b46558a7bed50664b12d9fd1635221864c56c \
    --hash=sha256:8b35b58da83b300bc6ab1eb556ef5ec703e27bc79ec2c1ffeebccbd56683544b
    # via strictdoc
html5lib==1.1 \
    --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \
    --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f
    # via strictdoc
httptools==0.8.0 \
    --hash=sha256:0770728beb05094c809b98e814edff5fef69d26ad7d21185f2f6d5884a0ba683 \
    --hash=sha256:0ea897f0c729581ebf72131a438a7932d9b14efef72d75ada966700cac3caaeb \
    --hash=sha256:159e9ab5f701ccd42e555a12f1ad8ff69702910fc1c996cf2bb66e5fcb7a231b \
    --hash=sha256:19d1ee275bb59ba2643ba9a3a1e51cc0c788caf2b8df506368e03f56fdd08527 \
    --hash=sha256:20b4aac66ff65f7db06a375808b78f42a94970aa22e826b3cb2b43eb09174124 \
    --hash=sha256:2a021c3a8e65cc125390d72f59b968afca3bdcaff25bd67965e0a055a14946ca \
    --hash=sha256:2c032fa028f46871ec7e1fc59fc15e8023eab3e6bbe6ece786a1611719a5d081 \
    --hash=sha256:2d689918c15a013c65ef52d9fd495d766893ab831a2c8d89f2ac5940a5df847c \
    --hash=sha256:384c17174464c8e873398b7af24f0b1f44d992c820328413951a625323155d77 \
    --hash=sha256:425f83884fd6343828d8c565f046cb72b6d19063f6924093e11bcd8e1548cd09 \
    --hash=sha256:48774d39cbb70e2b1f71f88852a3087ae1d3a1eb80482bb48c13067ab080c14f \
    --hash=sha256:52dd695b865fe96d9d2b16b64a895f3f57bf3cb064e8383cd3b5713a069e8085 \
    --hash=sha256:57278e6fa0424c42a8a3e454828ab4f0aff27b40cddf9679579b98c6dce6a376 \
    --hash=sha256:5931891fb7b441b8a3853cf1b85c82c903defce084dd5f6771ca46e31bf862c5 \
    --hash=sha256:5d7fa4ba7292c1139c0526f0b5aad507c6263c948206ea1b1cbca015c8af1b62 \
    --hash=sha256:5eb911c515b96ee44bbd861e42cbefc488681d450545b1d02127f6136e3a86f5 \
    --hash=sha256:614ceea8ea606848bece2338ac03b3ce5324bcb4be8dc7d377ed708012fa4db8 \
    --hash=sha256:6a43c9dd399758ccc0531acb0a3c4a6c299ee893ee9400e9c893b7bdcfae0681 \
    --hash=sha256:6b2a32f18d97e16e90827d7a819ffa8dbd8cc245fc4e1fa9d1095b54ef4bd999 \
    --hash=sha256:7685df791fad561384bfb139e77fde27a1ffd93134e016f95a0db424ffbf77b1 \
    --hash=sha256:7b71e7d7031928c650e1006e6c03e911bf967f7c69c011d37d541c3e7bf55005 \
    --hash=sha256:880490234c10f70a9830743097e8958d6e4b9f5a0ffc24515023afeef984054d \
    --hash=sha256:88bdd940f2b5d487b4d032c6afa5489a7dc4694410d43de3c38c4fb3af0dc45d \
    --hash=sha256:88eead8ec8680a9f146c655bc88445a325bd7921cfd8194c7337e9467282427d \
    --hash=sha256:9518c406d7b310f05adb1a37f80acabac40504a575d7c0da6d3e365c695ac20d \
    --hash=sha256:9878eb2785ba5eb70631ad269b37976f73d647955e26c91d490eb8a4edfda4ba \
    --hash=sha256:9fc1644f415372cec4f8a5be3a64183737398f10dbb1263602a036427fe75247 \
    --hash=sha256:a1afd7c9fbff0d9f5d489c4ce2768bd09c84a46ddefc7161e6aa82ae35c85745 \
    --hash=sha256:a1b4c8e7a489a0d750d91894e9a8cdc295838f1924c0ca903ae993456fddec07 \
    --hash=sha256:a3b7387147361c3fd47a0bde763c5c91b5b4cd4dc9989b8ece84ff436c99843b \
    --hash=sha256:a6f21e2a3b0067bbe7f67e34cfd16276af556e5e52f4c7503be0cb5f90e905e4 \
    --hash=sha256:b15fc622b0f869d19207c4089a501d9bcc63ca5e071ffdd2f03f922df882dcb2 \
    --hash=sha256:b205e5f5523fa039679da0dfe5a10132b2a4abeae6a86fdd1ddc035f7f836557 \
    --hash=sha256:bbb8caadb2b742d293169d2b458b5c001ef70e3158704aa3d3ef9597624c5d1d \
    --hash=sha256:bf3b6f807c8541503cecfbb8a8dffb385640d0d96102f3d112aa8740f9b7c826 \
    --hash=sha256:c08ffe3e79756e0963cbc8fe410139f38a5884874b6f2e17761bef6563fdcd9b \
    --hash=sha256:c0d726cc107fceb7d45f978483b4b70dd8caa836f5914d3434bb18628eb73813 \
    --hash=sha256:c4a9f1707e4823d54dfec6c33fa3697d302aed536ed352a7ebb5a061ddb869d0 \
    --hash=sha256:cd96f29b4bab1d42fa6e3d008711c75e0f79e94e06827330160e3a304227f150 \
    --hash=sha256:d76ad7b951387e3632c8716a9bb03ac5b45c5f16119aa409db0459520887944e \
    --hash=sha256:da684f2e1aa2ee9bdcb083f3f3a68c5956750b375bc5df864d3a5f0c42a40b77 \
    --hash=sha256:de1ed58a974e75d56560acc7e7fed01a454994429456f65209789992e41f2568 \
    --hash=sha256:de242a49b5d18e0a8776e654e9f6bf6d89f3875a5c35b425a0e7ce940feb3fd6 \
    --hash=sha256:df31ef5494f406ab6cf827b7e64a22841c6e2d654100e6a116ea15b46d02d5e8 \
    --hash=sha256:e93c227b595c6926c1acee96891dd9da4be338cfbe82e5cd3bb9d8dd7dc4ac0b \
    --hash=sha256:eb3028cca2fc0a6d720e52ef61d8ebb62fcbfeb1de56874546d858d3f25a26b7 \
    --hash=sha256:ed377e64805bdba4943c82717333f8f8603a13b09aff9cead2717c6c817fb168 \
    --hash=sha256:ef7c3c97f4311c7be57e2986629df89d49cb434dbff78eafcd48c2bff986b15a \
    --hash=sha256:f256d6ce930c52ca1cb2a960b7da03548c454e7d28b06059ad41bfe789036ce0 \
    --hash=sha256:fe2a4c95aeba2209434e7b31172da572846cae8ca0bf1e7013e61b99fbbf5e72
    # via uvicorn
idna==3.20 \
    --hash=sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44 \
    --hash=sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c
    # via
    #   anyio
    #   requests
    #   trio
imagesize==2.0.1 \
    --hash=sha256:b2ba6a4dea487a7ebcd53248d3476aca449d30db12a2dde5e0c5ca9624fd77e5 \
    --hash=sha256:ea0c9a0384df69ed86a943a15cde37d0360b82491b3910dc2215e202e62b5b02
    # via sphinx
iniconfig==2.3.0 \
    --hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \
    --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12
    # via pytest
jinja2==3.1.6 \
    --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
    --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
    # via
    #   reqif
    #   reuse
    #   sphinx
    #   sphinxcontrib-mermaid
    #   strictdoc
lark==1.3.1 \
    --hash=sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905 \
    --hash=sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12
    # via strictdoc
license-expression==30.4.4 \
    --hash=sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4 \
    --hash=sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd
    # via
    #   reuse
    #   spdx-tools
lxml==6.1.3 \
    --hash=sha256:032a0a97eed428bd143c75a11118238546424ceb2fa311cca5f073aa44658dc4 \
    --hash=sha256:05f5bce9af14fd1506997594bd81cee6d9c6b58ea80a39c058327aa6371ed9e9 \
    --hash=sha256:0794e04ba343852c6d78e996c58ef4b8e579b4ecc72f8df0d4058bf843b4c96e \
    --hash=sha256:0ab2467e405e748d93495fb5568e74044802b8d3ff2b2a1607c3f78c6e982de5 \
    --hash=sha256:0bf5a3e397df2ec4258eb5eea4c1ac6cf013ca1abd04a176903bff20a70021fe \
    --hash=sha256:0c0710ac085a157b593c38fbcacd950f15c4afa8e2057527185875ab302752bc \
    --hash=sha256:0dee106e9aa97fb00541b1ed7827070564d0549c3d3fba8920e6b20fd980f748 \
    --hash=sha256:0f17d83c48ee9dfd96abae3ac3e2108c76d2fc86ce96355e37b8da9f7f4ecc08 \
    --hash=sha256:0feebef8d0521188d0157f758356072e840173aa61ca45b8b3f87959ac283dd5 \
    --hash=sha256:13a620a3fcc20023f9e6ed5c383e00e826f1c2d5db554df2f67240760f9118e8 \
    --hash=sha256:13d22c0d57355366b393936acf6b98a5e0edeadddd3fccbc6a846c50a76b8741 \
    --hash=sha256:160fcf381f76c3aeac28a756bec44f48942a8f7245a87aa28e3a523b4d90cd87 \
    --hash=sha256:16148acd77ed1d8836a56db883af2f5eed720f9723088110b16a0d08582130a6 \
    --hash=sha256:170773d8a3cdc76259065523ddd978c44f9806e28605f08812e8f86783e44ac6 \
    --hash=sha256:18293f8a8d8b6a8e71ef37706b659e3846a4261232158167b1ddf35f6994f633 \
    --hash=sha256:18a4db52b5a7b53a3540b0b0f4123319334621ee8083d496de314d0bf06ff59a \
    --hash=sha256:1a635e837b50a1819bebfedaac5916498ea024120969da8790500148fb0a894d \
    --hash=sha256:1aeca87830c4fe649dcf93fe2b059525b71c72587f21be4ae4af7103082a79fa \
    --hash=sha256:1b7c37339d7e75cab9a123a04248e243cefefb302ad6db566ea0c77cbcde421e \
    --hash=sha256:1beb0f9909b26cee938df9ba56b15252a84429b1fc30ce6fca161390b9789a70 \
    --hash=sha256:20384c2bbcbf87180c8c61eb60869699c1ec0cd09b62cfd13804022d860b0867 \
    --hash=sha256:20428910dae17a1a93152a3ff2c0441d2f4932992c0797d65651dd0561f1792f \
    --hash=sha256:207dfc3d47cf0e575e643bbc140dacc8863b39abaa1e5307cd64c7f2365b8a12 \
    --hash=sha256:209c3ccbfe35a04ac6d24f0611f9d1cbf8025d49991b14acd935236234d6c156 \
    --hash=sha256:2123e5aa075ac20d23c7af489255efd129cbfe190dbe88fd42598cc9df3199b6 \
    --hash=sha256:21402998e4b78e7cce237d2788841aaa21ac9a4d1574d04dc2d12ee41ae807b5 \
    --hash=sha256:2221e88679d1351e9a40aaee54bc65679b9795bbd0160bc3d5e36b163344eb75 \
    --hash=sha256:22eec57e26c418cde02c051ce9914a365e52a7f135a565c6f0480242aeebab48 \
    --hash=sha256:23c366231259cd75ad06495174701afb3fcb36a92917fa47de2d1f1bd9d95739 \
    --hash=sha256:25f4118c438f96bb466e83108506d03d5c31b1bd2387e83e5b070bda6ded9c37 \
    --hash=sha256:28a23fefdb345b2d4d0ff2860571b5ff9a89a28b6a120f720e8fb0324d346626 \
    --hash=sha256:290f66b97ede0e552e1cb44a0fd8a74f9753ee635b50830a0b122fb72788d015 \
    --hash=sha256:2b9b1325ca1c2a9a2dbb6eb913ae563313f2082ae60b03210f7e83ee80712274 \
    --hash=sha256:2bec13085dc8ef48a3fe62f7dfcacfeda2c785cdf19cc8eeda2bb9ed081da165 \
    --hash=sha256:2cae5d5c90a62d9139c512a0cb1aad1d182b022b5740daea2617eb5bf7fc658e \
    --hash=sha256:2e01125896585139453cab8cb235893644d8815d7509520da95ae3ee8d1c1f79 \
    --hash=sha256:2e62c569ec7531b679b184cbfe335c501c1d13c4b363560013019962eb630e6d \
    --hash=sha256:2f5b2a2b9811b853b39bfa41367c6d78747b8e3e80e07fc5a24aae295c1a4d7d \
    --hash=sha256:302f72413251c03f671e063c9414bed5dc8c927069e5abb69245521e51a4e81b \
    --hash=sha256:32a409be3190b088f960ac92bfedfbef2f86c49ff940765e1548177592d20026 \
    --hash=sha256:33cadd956b667997e4de1635fce9541f2e8ede2038fcde8cf55aa14d571d1bad \
    --hash=sha256:379f8a75cf6eb7eef0af074b55f49ab73b868388a98de14646abcdfa4564bb11 \
    --hash=sha256:3847e71a78cbbc1aff955dbbbaf2fff12153f611d3162c5beaa3395636cbc2f9 \
    --hash=sha256:38fc4e4e4e084e0bd491949482527d406788045c546d4f8789e93fc527b91385 \
    --hash=sha256:3a27ac6c780c8b8a1cd231b58407634cafc1c4cc28cd6c7141362df0f36351e7 \
    --hash=sha256:3a48093cdb058a93af842ede9703520e810b05dcd0fc6d7190a06376c3bfb6bd \
    --hash=sha256:3e42265103fb385d8642a78672edf376c6f7e1d3598a7a4f9cb1278f2f6b5f6f \
    --hash=sha256:3e9a00d1c2c30936f7add097c41afc5da6556c580909104aafd382cac92a855c \
    --hash=sha256:40983eabefd13da003e68170928c7acc011f0d095eefce5871a3c71c9385fb9a \
    --hash=sha256:40bcbd9f94166ffe925811e730607385cec959f42fb1bb7dad83748680465221 \
    --hash=sha256:41096ec0740a58dad03d3ae0c7486d306d20becefb13ceb1649835ab3eb64167 \
    --hash=sha256:415e3a115c0d510e329020012834d1c0aa1c581ee53a218603e38abbc1dea70a \
    --hash=sha256:41e2d428110b408e963b6fb18f9bbf1f5c027b56bd4b498d54556476c0aeb1c3 \
    --hash=sha256:424aa5657141d306ba9ad1baab4b2c0a0719040075ee6c66aee9bb2dea2b5054 \
    --hash=sha256:42632b4024ab24a6b488f559ac851312509888b6b80ae2aa11cf29a646a0d245 \
    --hash=sha256:45222d94ddd511536f3b2f7d9deae3b2339b4ce0f075f1ca25703b07cad9dd21 \
    --hash=sha256:4736e6c87e603146d8949d8501da621ad20c31015060d3fcf95ace2859f3e3e6 \
    --hash=sha256:48542c9acba9ff9450bd18d871d2c2c8787fdb283572b623d206f1b927cd7d9e \
    --hash=sha256:49fbc2682a9306135b7ec49e93f97f9c26689b9b7f96ed2742d8d6497e994d13 \
    --hash=sha256:4a579dfb9c835f8ab47f4b8ed33440cbc75b806b73297208e6ec2a33e903740b \
    --hash=sha256:4b061064b4a2fe8598a466d723d43dbcd5a610a5d5cfe02fb6226f5c17349f75 \
    --hash=sha256:4e11e885e0704be185867fcf71b904d8f65d7d6877bc121f69870b0d0479ba7b \
    --hash=sha256:4f4db7c7e954d289d71878938348b3d91b904a3e8210a11939359fb758a58e7d \
    --hash=sha256:527195c188d7d0af748cd48d220ab8cdc5cb99be3d49ac4d9be7324d8abf9bc0 \
    --hash=sha256:53258656846f5c48996b882fb4b135885e088a3ad3d96b4bc0530f95124d1f69 \
    --hash=sha256:545ccc14fb05485f48b4439ec35beb16d5b5280eb6c81c658bd4707a2a119414 \
    --hash=sha256:5609efdb0d3c95499c00046bc53648b3482ec2175b5503d6e611b3f0555dc71d \
    --hash=sha256:5929d9df5e7e3379183be0e21f7d559618a5b61cb63280df6164019242e337ed \
    --hash=sha256:5a143e6207579de8baeded4eaac9134413200359f1969d636f0bfb98ee8c3c8f \
    --hash=sha256:5a721a98c649855963811b59b55755b30566e7f7fc40bdc9803d66dee9f811cf \
    --hash=sha256:5cffe18571ccc51d742cd08cbb3f8b756de9311d18c7ea98f5d92f37b8fb60c2 \
    --hash=sha256:5d12669a2c419b0e8dc423d23dea24bb82f6f9cb829f32e04674b0ba40322a7c \
    --hash=sha256:5d582042c69857c364e8153de6e18e0da9b7b515a6a8113caf69a6ec8e0520f2 \
    --hash=sha256:61116cec57ed69aebc70f37a545eec095339bb829efbdabcfb97c51e9536e158 \
    --hash=sha256:611a51e61c92f62345a50b0035df6fc0d678f9299f33728826d831598862f59d \
    --hash=sha256:623c8799c17128753c65699f1c3aa32402657393a9ad6db09ed8b98ddf76611d \
    --hash=sha256:6374e9e382e5a98c9c5e66d41b357b470da1c54bce30f17f9dc4bcc58436cc1c \
    --hash=sha256:66299564c046bc7e0cc5de5106601eae907e9fa5904cd68a323380a8502f7861 \
    --hash=sha256:69cafd61aea04ebb3502c93c2aaa568b12931ca0802231e0b5de76bf8b6e74bd \
    --hash=sha256:6a406d0b3cb207b0fa460ed4dc93e866f44f105da0169361cb18ff998a44c7f0 \
    --hash=sha256:6ba4fe5bfbef6811a8e49b3719cde373ad399006c0c1ac184b7297116ecbba5d \
    --hash=sha256:6cd11e7550d89e551a87dcec30f04b1fca32e86b68708aa01a4daa455d8605e5 \
    --hash=sha256:6e1eb8a4cbffd5553680ad96be6680e364710656eced73d1dc90ec489df599a3 \
    --hash=sha256:6ea2f13dce778ca072ccee598bca46a092ce192e8fd907b6c1f0e52c800529a0 \
    --hash=sha256:71532ebf30be0048a45559b4fab15333fbaaf9042f658e878d918ecd0cf09805 \
    --hash=sha256:73fc05988ed20809450474ba760a87c8ad4e455fc09783c02195e56ec634b41a \
    --hash=sha256:75cc6569e86be5785b6188ef1642670c6adbc984e81ec35e224842ecd9eefcc8 \
    --hash=sha256:773062aec2f2e56b2b22d37054123f0de8a22a4688a0c3376c3fe42685f975cf \
    --hash=sha256:7ae4949f212a53b007dbc355884fda122545c5764a54256c9217e419a62a6559 \
    --hash=sha256:7b2bb7d703bed7ac893bf7f40d97b5d9279d35d2ce460624ca28929eab0d5a3d \
    --hash=sha256:7d0f5976aa2701996f759b30172925829867547bb073af0ae67d1307a0f0262c \
    --hash=sha256:7d5a748d12dd9b535e0a130f60dae9ddf0adafbabe61e7864f55c7436c84547a \
    --hash=sha256:7dd624c1eaa629ad44b59a1a0145fdf2d67895592dce94c9358b938b3d075e65 \
    --hash=sha256:7f75b9b9fec2a9c6b18095c81865580e795b1441c429e42d22fcc82a77f40039 \
    --hash=sha256:83e3a51e7933db700a0da0db31849db3a24022d9970da9bb73001e1d0326fd92 \
    --hash=sha256:8499d464de86fab0f102313cce32a9bed9ab1f06ec813cf025cb790964fbb765 \
    --hash=sha256:869dfcd4d381cb0ea87085cc4f011b9171b494ef21e76ad8665f6d5e2d1dc8a1 \
    --hash=sha256:8753b8d51dbc86fd335ee31fcf7f3658e9f5c016d4edfb23f76ad295f4b8c9d0 \
    --hash=sha256:887c021d9a977cff89cb273047c1352997b772a8908a25c21836861f69b92be1 \
    --hash=sha256:88e719b9437f148f7e1465df845c758dd1598618cbea3a2fd1e61a715542f2b2 \
    --hash=sha256:8a330c0ee5fa318c7b5cbbaad882baeca3f570357e7eb25ab34bf31008150758 \
    --hash=sha256:8db38ff3fb7aee7d6a82ae4da2eef1178656fe1216841fbd24870062a9d60473 \
    --hash=sha256:8e49a646acfab83c68974f4aa1d0a2acca9e88d7d627ae0fc13201b14b76d310 \
    --hash=sha256:909f4e927bb051f7740d6367285fc60cdcfdaf0258c2dba4ff5ba7eadadc250c \
    --hash=sha256:90f709b9accab6b2e4d14f5c8718203877a0486bcb3afd74d8b539ecd1e961d4 \
    --hash=sha256:92d96586376fb79a33474797186bf993250152ee5c32650b67db78d54b92e6f3 \
    --hash=sha256:93476b6514b373fc6ca67d26c442784f7807c86f00635bfe79f935c3eab2af17 \
    --hash=sha256:97acecb11cbc411473f15b8d780df06d7a9f3a2aad9aca78364f56640c8fb70e \
    --hash=sha256:97ce49699d87ebf8aad631b55d65b33219a4f1bfefbbf5bff19dc9af160aeaf9 \
    --hash=sha256:9bde9ae026a55b9a192078dfa6e27dd0ca4a050171ab6272e92f97b757dfdf48 \
    --hash=sha256:9e67324961ac9bbe616cce5100514d2e34d88665aeb07071e8b16eac55d06d94 \
    --hash=sha256:9efe56a68179f3adc4de41861c9358931db03837c48dd5e1c78077b84dd07f3a \
    --hash=sha256:a1932d7ce78a561367512c594fe66eac2b2ec9b9264cfd9b5f950622f4a116e2 \
    --hash=sha256:a1cec0f99b9b914d39176347a93b7610dc09324491aee1cbc57cd291a41a1d55 \
    --hash=sha256:a2e3f70673a1d5b82f38255f777d26cd855bf2092b1436c4867464a7892f9238 \
    --hash=sha256:a43b3bdf11e477dc7770609d3477316f974354dfc8425d596f64f471cc8daf6e \
    --hash=sha256:a5c18810318303ce9afb3f95e2ddb54834f96fa699a8600433fd5a93dcf44c56 \
    --hash=sha256:a7eb78ba28b187e1e9203a55c60fcf70df2d22cb205fe6d51b9383d6097419f0 \
    --hash=sha256:aa633613ff907ea91b9b0489a1f0da1b8725d8c6ccec6b77e8a1c9c235044bb0 \
    --hash=sha256:aa9fd1ee2a5dacfc41039ed49ffeeacfa75bafbd255b69f3b578e11897a0e623 \
    --hash=sha256:ace1d2c83b2bd24db5940600541140e87a325e119cb32d5fa9ad720d7e76648e \
    --hash=sha256:b1cc980905221a5d8b3c476330730b3adb40ff80add71ffbdb6215ba055656f1 \
    --hash=sha256:b37772102d44bb6628186accca3a121b1fa3a6b3d97518a8c29a5229ca4c0d0a \
    --hash=sha256:b3ff39654f0ce6ebd4db154211136dbe7e8157bcc3bed2344c87f32c7c6ecb6c \
    --hash=sha256:b477912f42c5c33405a10c759d22f80cf5af043ae02d95b9d8e5e5bc555739ed \
    --hash=sha256:b49638355ea3bebba70da783ccbc630fd72afa16bc46c54474bfa1f9a915bbc6 \
    --hash=sha256:b4fc6b03b9d9d90557274f571ab30e7fbbfc527955536935d96f98b6817a86e4 \
    --hash=sha256:b50343241eb69fd85f7791cf8bcc7b1c4729826b7d59ba2f6b27db29638fa745 \
    --hash=sha256:bc8dd3d9c93e70c3df974a201ac2958b6d77b465d813c51d1f15fa8e645763ae \
    --hash=sha256:be5346653c0b0e34be96869ff9dbeba23860156f89a2896a64c64fb419260cb6 \
    --hash=sha256:c00e26288784460885fe76e4d4b293573e0f791f52e6d60e27b42edf005922eb \
    --hash=sha256:c1b50797ac246bb2942a04b6c0f69af0667aba7cf7535f39bbb1b3208fd5d128 \
    --hash=sha256:c34ca1dc41bd86d9ff830d5bdf4e4a752bba6c54f7d2707027ce0eabd36084c9 \
    --hash=sha256:c55e71a9b1db1f107efb60da49c093689b74c5c31a708e5379e2fd9439d4fbb5 \
    --hash=sha256:c581b1d68b3845fb86c6b2983e755b29bf001461c59fa411d2c26a911b6559a9 \
    --hash=sha256:c59e4265608da6a041f54646ecc0c9ecdbb19aaf14c4c684bb6c2114998cc415 \
    --hash=sha256:c5e7ce578aa8a80910a72a8ca0bbea3baae10100827249001999726a788456d8 \
    --hash=sha256:c66f858b82497173f73366795fc6ee8171620e75a338506d6b2e7bc16f5fca11 \
    --hash=sha256:c6c0c13128a32eb04a51357e56a094e13aa8e6d3d1884de2e9ae923f6915e1a8 \
    --hash=sha256:c9389b3784b56c58d933b5e0aecdf28f901b073ff385358d8a7d40907f6e14b2 \
    --hash=sha256:ca0ec532ad2f5ba1e5ec120ac157769c57f01855b3d8bf37213f5d88abd9ba0a \
    --hash=sha256:cad7617727a96d189bd6f979d0fadf765198c7934e85f4edaba9bf3ad919a300 \
    --hash=sha256:cae82b5ca24b0c2beedb269f6e2a96f466acd926879ab00ae19f1a65cbf9ffb0 \
    --hash=sha256:cc669256d28736f7f3a149df5c380c50ace2692ba3e62203d10656fade4a2145 \
    --hash=sha256:ce1f220114959941170e22b8ad44279f6dee2dcef7591814d01ae805dc058889 \
    --hash=sha256:cfb398886a7eb4c719161c3efcff2a1248febc53a4d8e5072d2d8a87fed84ac9 \
    --hash=sha256:d077f21f4b16f0471353883748f126f62038760397c107bb9fad2ca94dc0dfb7 \
    --hash=sha256:d0c5c362bc94f1929dc7e96e715bbe7bd17037f802e6d8f0d1545df9133c0559 \
    --hash=sha256:d2765c18ce303149ee804b1f3dad11232726dd0a702d73a15cf19179ac8cc962 \
    --hash=sha256:d44442effeb8781f392340c5dc8c6716fba41dbeacb82fd4c0f09026fb5ff682 \
    --hash=sha256:d85dfab42dd672f87a7f76e9de7172962aee69fa12044f0d6e1a23cbd53fb80e \
    --hash=sha256:d97c5227621af74b111882a290b10f371780a38eef9d9e730408fba2259b52fb \
    --hash=sha256:d9a0d12846d6ce434fb3857918eef4315ec9b4769deb020c75828798614bfcfd \
    --hash=sha256:d9b3e7d71bf6acff341233417abbdface29c647e3113892d9aaedc02eb4aa2bc \
    --hash=sha256:da707f14ea3c35ee463d50acd596d6488e4b2b4ae7cf77a5bf93f55c023d63e8 \
    --hash=sha256:da85db328e507da922d586c3c7416ec360ec22e9cd9e0700691afacde0c81f53 \
    --hash=sha256:dc205732d593118cf701d986f40e9de7801bb2e371cb189ddbda9b7348f4d97e \
    --hash=sha256:dc3a44689eea43eab836e5c98a8ab015dc2419987d1ea6eafc7c590cdff86bed \
    --hash=sha256:dd5e90f34cffcfed97f36cf066325773d2b6021c60c29942e53a18b028501b1d \
    --hash=sha256:ddcf547bea2aee967d6a77779376a45e77e610e8465147a1f3d7e20d539d6e32 \
    --hash=sha256:e477aca0bc0d19f3b4ae9e4f2a1cfd687c31bf772d78734910658186b40b2477 \
    --hash=sha256:e8b17e23df3e827a69d25af70990ca2420e92668aaffaeeb3cd2351d7916a023 \
    --hash=sha256:e99e09ab7741f1281e2677f4c0058c7f5267d182530b09c87e4f6aa26adf3887 \
    --hash=sha256:ea2c01cdb16dc12156e455007c406dfaaece0c89aa4ba0e3b47586779f951d41 \
    --hash=sha256:ea6b1e9105b4b24a34c722432d9fb578f9ed83af21fa1abda639011e0f22bbb6 \
    --hash=sha256:ebd054ad1737a68fb7c5c073d405cef2b88bb824e294de3b4a4e995b47f0e376 \
    --hash=sha256:ec295280f4b37769256da025acf5890370355ac589c27e89caae0b5e9eedc702 \
    --hash=sha256:f6449672f9c93316deb5e2839e18931f468670e44d5bd9b1301a5a9655d45c07 \
    --hash=sha256:f683dc6300317700025e41d89a43e0276692ded16113a3c43eab704d605c58e5 \
    --hash=sha256:f6b9d2aad499c769ee8287609ab0e6de99d8bcea99c6e6c2e64945259fd52fb2 \
    --hash=sha256:f8b9c8ceebae6387d0dc77f7f4dbbfbfc962dba2efbfe6877486075a480726b4 \
    --hash=sha256:fad67b12ffe0f71e02b4932b04883cbc76a9072bbd30731409d3523cf058b011 \
    --hash=sha256:fbfb70ba01355251faf6b293171df49f73a88a1b6494db109ffea85442574458 \
    --hash=sha256:fe91993149523aa59941b9e3c90e2eb45f57ad014697aef6c8b13339a59c019e \
    --hash=sha256:febd35ef45f603c2d74b74655efdbf45e14f55fc0aef4ac82b663ca829b283e0 \
    --hash=sha256:ff88a92cafde90888511242d1c54afcc1a8adbb6dc0a88fa7f87e29e92400d4a
    # via
    #   doxmlparser
    #   reqif
markdown-it-py==4.2.0 \
    --hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
    --hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
    # via strictdoc
markupsafe==3.0.3 \
    --hash=sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f \
    --hash=sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a \
    --hash=sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf \
    --hash=sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19 \
    --hash=sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf \
    --hash=sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c \
    --hash=sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175 \
    --hash=sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219 \
    --hash=sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb \
    --hash=sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6 \
    --hash=sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab \
    --hash=sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26 \
    --hash=sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1 \
    --hash=sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce \
    --hash=sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218 \
    --hash=sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634 \
    --hash=sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695 \
    --hash=sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad \
    --hash=sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73 \
    --hash=sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c \
    --hash=sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe \
    --hash=sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa \
    --hash=sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559 \
    --hash=sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa \
    --hash=sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37 \
    --hash=sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758 \
    --hash=sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f \
    --hash=sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8 \
    --hash=sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d \
    --hash=sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c \
    --hash=sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 \
    --hash=sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a \
    --hash=sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19 \
    --hash=sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9 \
    --hash=sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9 \
    --hash=sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc \
    --hash=sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2 \
    --hash=sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4 \
    --hash=sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354 \
    --hash=sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50 \
    --hash=sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698 \
    --hash=sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9 \
    --hash=sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b \
    --hash=sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc \
    --hash=sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115 \
    --hash=sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e \
    --hash=sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485 \
    --hash=sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f \
    --hash=sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12 \
    --hash=sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025 \
    --hash=sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009 \
    --hash=sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d \
    --hash=sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b \
    --hash=sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a \
    --hash=sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5 \
    --hash=sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f \
    --hash=sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d \
    --hash=sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1 \
    --hash=sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287 \
    --hash=sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6 \
    --hash=sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f \
    --hash=sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581 \
    --hash=sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed \
    --hash=sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b \
    --hash=sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c \
    --hash=sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 \
    --hash=sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8 \
    --hash=sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676 \
    --hash=sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6 \
    --hash=sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e \
    --hash=sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d \
    --hash=sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d \
    --hash=sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01 \
    --hash=sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7 \
    --hash=sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419 \
    --hash=sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795 \
    --hash=sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1 \
    --hash=sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5 \
    --hash=sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d \
    --hash=sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42 \
    --hash=sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe \
    --hash=sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda \
    --hash=sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e \
    --hash=sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737 \
    --hash=sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523 \
    --hash=sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591 \
    --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \
    --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \
    --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50
    # via jinja2
mdurl==0.1.2 \
    --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
    --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
    # via markdown-it-py
narwhals==2.26.0 \
    --hash=sha256:29326d74f107c347fd1009bd58e38d9f7c7c5b51e6de97bc93dbc325d9038b54 \
    --hash=sha256:6b9cadca82f375c7e4cf584fdc86ca25da54827307a9c58f94547ee6104b82dd
    # via plotly
numpy==2.5.3 \
    --hash=sha256:012e66aca395d795496446e52aeeb5866312a5d4d3f27da270e5a0b43f70dc5c \
    --hash=sha256:09d5a423c71ad5feb5625844ad58050e35df43871004b52ac9c0ad44a56775be \
    --hash=sha256:09ffa5d903faeaa5c4dd05009cf81c8bab9f2cb37c548b8d39b65b4cfa7c97f7 \
    --hash=sha256:0a59a421a32580a009e8a1751345bf829631b990dc1794b80514ab722b435def \
    --hash=sha256:116f96cadd935c6122e9228d676fe7ede19e741f5c8bb1c3cddbe0c51ccebea2 \
    --hash=sha256:1302b90c0e52281681b2975adfe8a860cb7b12216a27b4b0b4207c44bf7bccf0 \
    --hash=sha256:15aa985ac73a8db02db7663381aa109510449d3819d37206caed27b33a65a8a6 \
    --hash=sha256:1aad64d99730d013cfc6debafed22783b4fc5a7f4b8bc744d2d8cf7dcc880551 \
    --hash=sha256:1c80eabb4035ecf4ca9cd49cde8a9fdd69a729e63e6474887d1523ade7aa277f \
    --hash=sha256:1f3ed25271581281f2fccb1adcedfcde4c07362eec69189b50baf6f90e3ae159 \
    --hash=sha256:1fb6f8fb9ff0b3a69f52c66ce397b0246583e9f28616231b0e32ca49259a5fa6 \
    --hash=sha256:214045a5bf00113a146ab9ee9730c44501af6723cdf1f6830932f7b5ef2e7af0 \
    --hash=sha256:26e15e4aecd8617dfbaecb37d223e365d7b39411fba20454be2670a96aa74cb5 \
    --hash=sha256:2c25dfa72943e4336ddb6b0ee4277b47a0c85bede0807530ec68103bf58e2c10 \
    --hash=sha256:2d8240cb4c16fd831074aa2b2cf9fc54664d826341d61c372245b96a74a49a9a \
    --hash=sha256:350ba9783ce969cf9f7ce6e6a9a58e1a6e2a19ca025b7ee448c4db727706212a \
    --hash=sha256:4c8a6d2ebce6305fd82fbefca827775437147052a976ee7c94b36a0c1b52ac6c \
    --hash=sha256:4f8929ee6c96bfbd7b4ed2032e0c03af86fe1826740ab61ddabf9072d06e57ff \
    --hash=sha256:536f963710a4e63934d80ac0dc4f478804a83e9a84b6828018f25d09953ada33 \
    --hash=sha256:54a115e5a73b8fc44f0cebef486365a1894b5c9760685d4558b72b7c3eb846e0 \
    --hash=sha256:595d020938c84e320bcf40ad71089e108eac0d377cd018e14a8c094f39e98d85 \
    --hash=sha256:66a78fe4556c60aceda5916f9eacd638b18e9e681016ec302dcb4682d6d4d034 \
    --hash=sha256:6b05c171afb3aa07adbd20abc00aea86fe375beb0fdb9ef780ec5b7f63bab1c0 \
    --hash=sha256:6cef4bb1706dfec49243c05d921eefb4e190d41e2528b30d8035ea1f36b4c24a \
    --hash=sha256:6f24021b9f22bc6301c37b196974a92c1c18dccedb6fef3dd252e95f2d6adbe4 \
    --hash=sha256:71b39d9f935b6ec0f8753e3e2afb51e3efba6f2e05b68b32a40754d24bcd4a3c \
    --hash=sha256:71cad2b2a7451ab79d8f5e71b453485b6775963d5cf794179144a7463fe6e8ec \
    --hash=sha256:76c2c1e6bfa5c84adc6434dfbf013aa92096a7985221762c8f11fedfd20fff58 \
    --hash=sha256:8617bbfae4486cf99c9f899966699428d19da931d06ca94ad3da986c76e15997 \
    --hash=sha256:86bff898a431c0fb71f7610b75726e75a54d47b37edc9d537f48de63bb3c0b90 \
    --hash=sha256:8e4dd766076855b5ff7ea52fa5f07ce26286726e0f8bff446b7739d02e6ea204 \
    --hash=sha256:92f30e89b8ee0ecf363033576c422b2f58fed6a80bed0aa48dff6d14c654663e \
    --hash=sha256:93e1f5447e2b1e479d7bd74701e84746b86450cff1fc368b132d195e2b8f8211 \
    --hash=sha256:9a37475425b431b4d060f23b4f52cd2f3aef6bc7c654bd760adf0040eec9d435 \
    --hash=sha256:9deb49575e5b0b94ed72c8a64ec4d033381adc27e9060ae842971f697ba96104 \
    --hash=sha256:a5fa86b80fd24bcd1aff83ad23be44ea323de3f787be8f8b15d4a65621e25321 \
    --hash=sha256:a6391fafaba97500887132cd582abc6e19452b1ac775a47caa7b24490e152058 \
    --hash=sha256:a72f874bc9e10e4b8f80426fb49716d5141f64442a0c8418065093ec8017fbb0 \
    --hash=sha256:ac7bb1c52d445bd4f8f7f97fefe6abc3a084dc4d63df50d79b17fa2b78e89297 \
    --hash=sha256:adc1ada2662f8a5f960b8a10d9986897e7499ef07e06d4cfe7197f8cce923c07 \
    --hash=sha256:b00eefbcf0f292945c4b4dec2ae845389ef5bcdcd596e6e4328051db5b5ba694 \
    --hash=sha256:b0521d0f4aebb6e06189451025fa17a913287b13c03d5fe05c017333b654ea5b \
    --hash=sha256:b5d93cf48f687479941d12b69c873ad2cc76bbd487f0091c2200636497f34034 \
    --hash=sha256:b7e18c623bb5c95acb3b3328861272816ba199fb531921c5d6d0b675f1fde9e3 \
    --hash=sha256:bd4cb9ad3c7889b9b3fe0a9a9fb5d2ed26f9879bff2608d9f01aed147a20d231 \
    --hash=sha256:be5a8381859b6da607c84f4f7d6847725f1cf1853ef8a2c9e115b7d58bef47dc \
    --hash=sha256:befa1ae5bd6030b3f512b43ff3fa5290bbed6b84411a44244b14adf835f5b89d \
    --hash=sha256:bf63afbe037eb5d2fe87fbcc7778e61da53ebaf21d938a4515aa73b62532a5d4 \
    --hash=sha256:c00abe94c1a69d75d827dcf1c025b25c8a45d230b3bcd77a9020883a1b047653 \
    --hash=sha256:c2381f82999704f818e2c987a865050e285ec3621262c66d40f5a96c8f899f8e \
    --hash=sha256:c76d5dde9f445058f83d0c02af00557a4db91de9a9a57c0df87d1535001d654b \
    --hash=sha256:cb189f09db39283b26bfd061ec16189e14f71c6755207f72a0f7540867afe5b9 \
    --hash=sha256:ccb32e0525d29e8b0572eb84c9a57af0e7a4e615726927506f55063c62414034 \
    --hash=sha256:ccbc4665079665c3cf3bab4db9f6b095370cd6437d66be549b6c2a1fd19e1958 \
    --hash=sha256:d1c89973648c85069c5046ad460f7b8a00218b29a2e42359ac8cc63e9ab94832 \
    --hash=sha256:df2d5874ff183595a4ba404edd04f6bd9b5505c1d7708573f6a6c17489a67563 \
    --hash=sha256:e01c918ac3d48e18a927cf7b14a26a3e29ff2bdf2eacb976da0aecd6a43ed034 \
    --hash=sha256:e6ab667ba76450084eb64013762c438ea76d9d29cc676dcd6c2e9892ba37f841 \
    --hash=sha256:e931e4f499e0dc7ef29d269a8e5b35dd722e5d14be07df6240166ea7c6532fae \
    --hash=sha256:f54660b0eb6b0b9f36e7fe1cdfdff472028dd0d14acd9b9b65098efbad059469 \
    --hash=sha256:f59a878c33d6b88122d80d239bb3b845d58708750b0cb06a09aebb9b18ec696c \
    --hash=sha256:f7fabeb6cea87d65f3b926de33d03fb016cfdc29314c90974383b5582ae72891 \
    --hash=sha256:f9579f383d1bf9df80081e72760e84960a7fd4f88cf0c9e535a8597c9bb646f5 \
    --hash=sha256:f9a2353b37a1a9e78fd82b27ad7e2a32a2d036604d18f02b05e3136c62ca3b09 \
    --hash=sha256:fc36dc566135b5eceec4cf89758fcb719266a019ef07dae1754ae7c9f617ef3e \
    --hash=sha256:ffdc76bfcae6b255dff75202c5e7feaf95b40246bc0a17944facc1fecf9f79ab
    # via pandas
openpyxl==3.1.5 \
    --hash=sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2 \
    --hash=sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050
    # via
    #   reqif
    #   strictdoc
opentelemetry-api==1.45.0 \
    --hash=sha256:711ede81773c8025c2c03dac0450bc89f3d30aea6eabcc815c570d4e35a963f7 \
    --hash=sha256:80e068aba7cd56c8b58512d6a36f8d25cb1dfaa0c0a4cc1c938ccf9f362d9cb3
    # via fastapi
orjson==3.12.0 \
    --hash=sha256:010811c1b69773450a01cef97727a67b223242f350b77d4ca000e59a9ef2155a \
    --hash=sha256:01efac2074fffb4cb1ea3fab7861e9d0f2a26913854a972f5ac760525dbdaf6e \
    --hash=sha256:03091c8a64db4be38746597ceea68f33c238e27acd9bfe99fb59420224ae7a55 \
    --hash=sha256:08231552159be266a7269555bd9f7c016aee7d9ad6dab06eb58796c5ccb7101c \
    --hash=sha256:0b1ac5bf6609b2716c7954011c5fef6254922df029f45d032ee4ebf5d363cbed \
    --hash=sha256:103b5db66aa53c1f9e88c2524be4f383e831ba7dfd5f9f5af6336a177c622f11 \
    --hash=sha256:1192a7021b6d071aaf909864f6e924d6a2675ca360485b972b8401749311750b \
    --hash=sha256:11edb4660a6680abee9788a3a9072208a2c96538cc1322bd79542065229d8e54 \
    --hash=sha256:18a87929f31d94a77f7dc93cf527e91f39ce7fe7813d588a4de2507efd32a387 \
    --hash=sha256:1c680706fc8396d95e7c4c1f9482563f552137aef91b57237a3ad5aaf64629df \
    --hash=sha256:2b7bcefb9f40fa242fa6b06377232c048e655747790829609168c01162f60578 \
    --hash=sha256:2bb3ce43203936072dd8b4917b01d3aecfc02329bfb42510cb7cfb24708adc9c \
    --hash=sha256:2d3a9da945a4d96ae758fdaaca56742e6b73b6fd554c5d8876f252a6dad70b83 \
    --hash=sha256:2eb5c56e534127b2b8fa38d2363c8b1b8190367ee0d1d16c041517d880843b94 \
    --hash=sha256:31ed278a36304390adc3eec5d7f6fd593a7c3e99e5a06cd07866396c4b1b4710 \
    --hash=sha256:33efefcf5d88eaf400b47e2eba02f91f319bb9951be61ca500b7d536d3f2079d \
    --hash=sha256:3bb17a06f9bd15237b3216c044209fe92597379124018cfc196fbb846cde64df \
    --hash=sha256:3dbce9b6b3074b31a5d5dd322a9c4e5b16f206091ece4194c2e36952847a105e \
    --hash=sha256:40f92192227505acca4e2533ce565f8e6b9535f7d0d09b0968452f18b7376b38 \
    --hash=sha256:477ecaf6b9f88f873341b91fcc736119ca81b5e002a9f7f308ff5b4f2ce2a70e \
    --hash=sha256:50fae885cb073eac7556353ff3df93312b0d5137b0a5056b2bb63f97ed9a93c7 \
    --hash=sha256:532ff8cd4bd59a327a953a7dcde922c7fc25b85e29721bb8633265430d3a3873 \
    --hash=sha256:53c0c474a9d9aff9aebfc0c88de1f28f843d940e6e3a80729abdf6a20274356f \
    --hash=sha256:58c58e1de0006ffb580368d6793c36c7b0b021db066479cf281bf5061e732328 \
    --hash=sha256:5a0fdbc216388f653d3752ff310e710f59253bd4ed6a2bfb3f4f06b84714bbd8 \
    --hash=sha256:61318b6de893c7a9d9f3e5ecbadccbfc26a7eb417ccc7bbf0771de3b4d72f868 \
    --hash=sha256:644d005bc82f917337a95ce270c9f6f92f9834c2bed7b1477572f8db00784222 \
    --hash=sha256:6a2a79c89984dc719817d388c8709e0efc2a2795a934eaa746b4882eb6045adc \
    --hash=sha256:6a31348d7dfa64cd9c78bd1f510ff44c48fe64d71094e6b90e364dba3b55949e \
    --hash=sha256:747843254519dd43b93eee3153a19e5a509334320c4d2f823ec879232db5c796 \
    --hash=sha256:784106539f4b9d4b930e0b4eb8d45168507dae001945e71b4675a367f1e5e806 \
    --hash=sha256:7c2ad193c8004254f34b499f3bd2c80f043d10754aff2b38f93da574f4883f98 \
    --hash=sha256:83445adc40cba26d6d621185a45128ce455b766af368cad2ab64b970603a7978 \
    --hash=sha256:859fc4196855890150bb08e649b30d2c93b249b3e3edd0d3bb2231abf8aa8adc \
    --hash=sha256:8c3bb86dd10f39b3fbf434b7d5dc7cac77d6fc8ac572ae30a10731ede2c4b647 \
    --hash=sha256:8e29957429c35bbb5a185a119c523aa2428b7bbf1a293724c7b9375ed8f892a3 \
    --hash=sha256:8e386b0bc0ddd7cd2056f884b5a0af33592bd01ac66a7ca4b42a65a7e7774a13 \
    --hash=sha256:92ffc09e07233a6ab6d4e067f7841edcbcc134cb4812155cf171ea5255a421d7 \
    --hash=sha256:9a36ec60f1796f9a3f13e3b98390295e17a1c7c10155b448d264098bf9ee5900 \
    --hash=sha256:9caf3d09f47c3c70c4451ada20ef9bc4a4cdffa26f49862cf0a253b329aae2d5 \
    --hash=sha256:9e6fee342a48760e854d743e7a81534d8e2925a6f46e09f750cf56b50fd1de5d \
    --hash=sha256:a15f9a891bce5f5cc5d210e3ad8614d4d1b489a56448c099d6d2a7168b2d954a \
    --hash=sha256:a696529ec96a90d9a5f9570207efe403c8b08f8e4aa2783ee3403511e2fdfa10 \
    --hash=sha256:a6cf4b18e7de173f209f2084ffbd736dd72389a396326ee80a7022168be232e5 \
    --hash=sha256:a791f793b287bbc135b8e87c34e35c8bfc693e2a8a620fab1ae682b925f9a32e \
    --hash=sha256:a94f0f0c6fcbb2b5bd9734c57a489c7584a732bbdf04a39e8c83b861e9d03e92 \
    --hash=sha256:aa3e43a6846e91d7bde3d5a9c66090fcd8744f569a9b6cffc5e1ca38f6a461c0 \
    --hash=sha256:ad0422b92d5195443a39f80c3bcf731cc2e00f153bd32063a47b73b057bd0f03 \
    --hash=sha256:ad29eece0c601737f2a60edc2752a84e7a0785df3efb62e3012834700a5afe0d \
    --hash=sha256:b85931be5b6763c31283805c9bdaae1ca03ad9f6f12a15f1cbf6745b907932c2 \
    --hash=sha256:b9dca132b1fda5565088e65a6b6e742285e0aeceb6fae549fa8863e16c7d3998 \
    --hash=sha256:bc7a872f03522d90e0429e6c0c5cd23084f767bedcb4c58048eec19294613344 \
    --hash=sha256:bd57d79aefa3f84eec851d6de7a366795b9345cfaf17f82b4820430a7a5fa241 \
    --hash=sha256:bf44e374aadde77b1f6109f1030be51433eb61984379852766b6f4e187db7b1e \
    --hash=sha256:c6b11be792c3d2c6a4be2af4ebf97a68d0bf5f580aca6e86a418a354f6cc846a \
    --hash=sha256:d14203fb1aae2ad9b3d52f8a0e82aeb10197ef1c9bc61da7f358bd70b00123d5 \
    --hash=sha256:d39f3f5c3927e2dc0913fe5bbc1a2f6b1b9d1bba1de6358340d0ad0d0c00ca92 \
    --hash=sha256:d8e78d3d93705e3d27cc17cdb209e44d7a8ea203010cac6ce9c7ffc1ae1996f1 \
    --hash=sha256:dce0166feb0a737ab84f598c9a338cbc0b764a036617aa686194f53c7eba0c3e \
    --hash=sha256:e4ac5059baab4b3acbd99485de019ff8cda0fdf34b61fa74f7197a53db78bfe8 \
    --hash=sha256:e9683ee9ea0659da64f36574ef675b8a86330c34c19ea75db1fb93c3ff99e0ef \
    --hash=sha256:ed4ca42bd55955aa34deedcfdfd0e0c31abf51143aae158ae2bc3520b626e517 \
    --hash=sha256:f06dd838d1e07d9b1de0932ec0485ec92c4d5f5d1ad4817a656268c3e88be1e1 \
    --hash=sha256:f3c0683136acdc29afdf88a5bc2f7d3d0e34087788d1d63c0144b805a87a196f \
    --hash=sha256:fb2539159dfe8d371914f354360fa50e4a577cc89222a3828b9650a5e5040252
    # via strictdoc
outcome==1.3.0.post0 \
    --hash=sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8 \
    --hash=sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b
    # via
    #   trio
    #   trio-websocket
packaging==26.3 \
    --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \
    --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
    # via
    #   plotly
    #   pytest
    #   sphinx
    #   webdriver-manager
    #   wheel
pandas==3.0.6 \
    --hash=sha256:0704044b676496b8350e023b09f174a26772456c974a2b11c36bebb558c9490d \
    --hash=sha256:085e3786ae6b2e82b406266bce36690f72b9dc1421903ba9296b2981a9fcf586 \
    --hash=sha256:097090508a1dd335013d39106fc10b20f4fd4a171638e47b77d55798ed9dab6c \
    --hash=sha256:1bcb3e9ed29e74a7439cedff9e2aefd3ea65de84d7de9ccb6c194192541bd60e \
    --hash=sha256:1e7c0afdcaf6661d795fcefc2f647ddd1136f62cdc153fba177c685d97a87808 \
    --hash=sha256:1e92d9fa834c7d877130027cddc0cad8dcff97c1f6cca26bd6310f847228b658 \
    --hash=sha256:22172a92e7ee678ec0140c7af4fc9366b55413834a1cd86af78b3caa0b0574de \
    --hash=sha256:253e12cb9081b0afbac607920f6142975966bc315135e09de275fdbaa415d2de \
    --hash=sha256:265f562fdd1079f69f3de96dd425c3405224038c0af4f920c54bd240ee2c4640 \
    --hash=sha256:2a8fc94be2ee5f1d86f97aacd8cc566f81680b6498e76f3007421bb5d98151bf \
    --hash=sha256:2e5fa32ff162dfdbc280157d664f44d23049ae414725af9676df339c501d82cd \
    --hash=sha256:3ef908d28590b3f42d7070e7ad8f9b34b442b260b7f3c1afb57e0040c58cdb1b \
    --hash=sha256:429d9df32731ab01383ed98f2baa7a60368090d1a94fc06019a12062510e8630 \
    --hash=sha256:47121f9571503f724c9b93e297ab6254ac99c77adf5e9ed085ea419fd585c258 \
    --hash=sha256:4e25e2e1adee99ddfada6f7206a79ae8e9c8a8861b0e3eaaba165006d3eef18e \
    --hash=sha256:4ff44b2cb51cbd691c91f92c4ea6c71e34003f239ebd67c2e857dc898466b49c \
    --hash=sha256:50c44cbf5820b6b91a5f74aae04972472aefadd3cd9fbd1010409d85528bd570 \
    --hash=sha256:569e114072b24fc4970c12e2b4bab252671668a40b324318903380cab0254c0c \
    --hash=sha256:583be68728a31d0d750d5b8d9e00f02b153df0d4655f858bde93cb84cfc4227c \
    --hash=sha256:5e75072773c1b2f7cb63faa3a6f562aede11f3976f68ed34cb538bc091a28171 \
    --hash=sha256:5edd0a7abb0986ecce1ac81f56d99b6763f86aa6946dceb6c661224f90af5a19 \
    --hash=sha256:60d81f9e1799b36f3739e7fff44d1fbb2e8fd5a271b3863e03de9715fccda0fa \
    --hash=sha256:62f51d7f651c8054c5e82a69265c98082e795d1442df7ca6edc3a545d61214b1 \
    --hash=sha256:654aae059295dbba6ecd2328ca12712a2cf1676214c8699f1c29213f7ccf9c34 \
    --hash=sha256:66b07ef7315a31bfe1089cd3d71a7de781c9dca986762d0b4fe7c0ef17465d10 \
    --hash=sha256:6ff482fa91fa2bafd92e8fe66ce3645c851824310f295c1f0a2f96e928fc4541 \
    --hash=sha256:77ccbe5057aece6fc172b9b77f19c04335af6882bc2e10c8f3ee4e6bfb3da553 \
    --hash=sha256:7dac2d65e9087e8e7b5a45fe15c4920911a221df061ab629943ce016489145c7 \
    --hash=sha256:83e91d15738d7783c050197cef2f2cf82fc6353dae9865aa87ed1fa16aa4d55a \
    --hash=sha256:86fa853a12e0b70927e2b1ee00d56d2224ec9cbb4b9d58348b5ad52d2f21150e \
    --hash=sha256:8fe77b408d82e2615674dfed62533b95e18a03610573877422aada4f625d4947 \
    --hash=sha256:963ca21199097a84c7827c4678b04e30833084fbf8ef44fde3fa7180a29f8fa0 \
    --hash=sha256:97274c9adf6255bb48c620cd6959805efa7f09ea2167f0e0ae006a448cd2fca7 \
    --hash=sha256:994a79608263fe1c14cc48ffa7300e2b834b7d1cb406ffe96a08828cb0cdd79b \
    --hash=sha256:9ae8073aed8e21d1a7fe263dcdc6840743549722a6738198a0a46000fa9476f2 \
    --hash=sha256:9dab635a549e58a053c7b0fa054dc0bd7be22f0ed9a720f4a85d5fb993276172 \
    --hash=sha256:9e492cd4bdba6778de4fe0df7f4590c012161ebcf9902dce01b01dc683105514 \
    --hash=sha256:a3a22e07fe75347eaacc75b0e85297947af4fba6b4aae23916bd8b6828d0bba3 \
    --hash=sha256:a4dbd4dc65cbe645b92b8785d0f96dd7311010dc6606cf620e51b07b8788a12a \
    --hash=sha256:a77a1a44e4d88f1c6a2a64d3eb12efec8420875722e14279800b173a7c7c2804 \
    --hash=sha256:b27c8d890e4aa2171437ae2a39de1d215e674158e4865c4023a8b31c932513b2 \
    --hash=sha256:bd75ed0c840f709fc2ae26ddd9534ac77ca1a48ac0cce521a74acaa85f3340a7 \
    --hash=sha256:c6e4aae3e9bea26c6c9a20d88d96c86ec4a99b4db5fd516bcb4e829ab2c0ee36 \
    --hash=sha256:c826e9babb7790142c399f58599d8de679bea059d7b39c5b6efa2096fac37266 \
    --hash=sha256:cc39303913e2ea129915670de5d1c9fbd647f543bb72e5543bac8baa94e9e42f \
    --hash=sha256:d7564d86a94c2eb8ab290b07f63ddaae5c032fa53897c29a2ff2197d43aee8af \
    --hash=sha256:d7dcd21238cbb4828ff148481ba01cac8946dc5121457b5aeba28636f8f99a60 \
    --hash=sha256:db7ec631f26223beee8e5c9e0b8f23c24d8197bbd1d982421d4e3188bea51965 \
    --hash=sha256:e3dccb584123b399c07562ac4d62543e90ede49ddf8ce3c13ffc64cbe828c281 \
    --hash=sha256:e7c1905ef02c3d6d43d9dbd5b6ccb4da4870a0b0c821bbc103fbdb6f3ad2707b \
    --hash=sha256:eb6900de08ac85f93ac4948aa6b80842eba555875337b8359035ac9c43e92d34 \
    --hash=sha256:ee913a91669056c1de1a6b733fbfeab711de9e54e3bee2dfa5fe79d9457247d1 \
    --hash=sha256:ef738d71d1059245b6bb03e312be06d8b3821326a83486c1ad03b9aba3710e44 \
    --hash=sha256:f3ce8a6968045481e91a3990e797e348ce13db45ee164a7095bbc824e26c09dd \
    --hash=sha256:f4e7c52eb108d752e7592268108fd3e98efd76d83a3125cdd06c621c2e44359b \
    --hash=sha256:f8029ec0f1f89e4f985929ce1f6626dabf3140d61a4e9c1215afdab34eaf9a5d \
    --hash=sha256:fb625f426b375bcc96e3a04c5d5d266cd7be6ae5d6866e0e703382ab5164068c \
    --hash=sha256:ff51a4459ed036e93d1eb1bb5e6e7b28685d3cb6b7c12b91c05b31024e234729
    # via strictdoc
plotly==7.1.0 \
    --hash=sha256:dbb7fa18afce40d0a8e80d1bf162eceb3faa0ce5a77fe741ad09a74cf78f53f3 \
    --hash=sha256:f860166a4a3d78c69cb1f4a15f28a5c8283eade98a282a698f3bb853a449ace5
    # via strictdoc
pluggy==1.6.0 \
    --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \
    --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
    # via pytest
ply==3.11 \
    --hash=sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3 \
    --hash=sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce
    # via spdx-tools
pycparser==3.0 ; implementation_name != 'PyPy' and implementation_name != 'pypy' and os_name == 'nt' \
    --hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
    --hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
    # via cffi
pydantic==2.13.5 \
    --hash=sha256:346a034f080da3755d8e9cb5e00e8b07de1d39e4f6e2c87d8ab7cafa0b269a73 \
    --hash=sha256:51a9c5f7b2f8e636f04c6cada605d9b6a3bf1348fdf945a3d8869b19bba0ee08
    # via fastapi
pydantic-core==2.46.5 \
    --hash=sha256:013d6f3483d81e02e7c328831808f336c8596ee33b4bd4026b9ffb1e960b8942 \
    --hash=sha256:03b9666e41e35d8909852ba191a0607520f81b74eaf12ccf8737005dbb313821 \
    --hash=sha256:045ab3b6d308439e32b81cc173bba5b9018bc6ed896afd0c65b3b009b1699af5 \
    --hash=sha256:0bddb4020d8f04175865ccd17eff3040874fc11fb593f424edb452653b4b947c \
    --hash=sha256:0cdbada856a1c69a7624a64d3d9aefe79300bd6ef827b43a4f265010b9b55184 \
    --hash=sha256:0fc5be0abd4a407e200d844b404e33639a554e7bd0d448e7b9ae181be4789ac2 \
    --hash=sha256:10416c15b8839ecc4ef4d0885da76da6fd0f67333a0eb8aff6d93c4b8f2910fc \
    --hash=sha256:15f4a94963c95accac15b7b657bb177d3ad82bb90b0d0526d9a9b85079925db5 \
    --hash=sha256:18a09e1e1011b462f2e32774f25859ef1223d5c2b0546a633cf56654710721e0 \
    --hash=sha256:193375f3548919d3f0b60936ca113ada3e38f264f91b9b8e0508efaad57be931 \
    --hash=sha256:1a353f84de772f423b5ffb11d7ae352fbbef0f446f3c0b0af0f8236d7233606e \
    --hash=sha256:1e449def1945a462c464331254e5a44fca7c3b4f9aedf59ec2f50f8066dd8e25 \
    --hash=sha256:1e5aad1220a1192c42341c8fd4a8686657e73ab2a920c970bdc4de334fe3193d \
    --hash=sha256:200aa3dc9f8d54f0754f43247c0bad0999fdcfbfd2488384dd44f37279271fe6 \
    --hash=sha256:2471fd51c61c610e1dcf7de44d7299283661654d11264ab4802b303368d69c47 \
    --hash=sha256:24922243639cbdac66c75fcb6fd6495a9cb52b213d62f9a0d16f0310b1ff8038 \
    --hash=sha256:28a6a556cd3b6066bea827857f9d9cce027c96f776e512f544a581f9e42161f8 \
    --hash=sha256:2bc9419666990c06d7397831f2126a1ecc3594aaa3ff7de5bf2d066802f4e07b \
    --hash=sha256:2cbd9a5eff05e51c447c34dfa4632145b26b09120cf04bd0c871e44c1a5e1c9a \
    --hash=sha256:2d330aaba8621b1edcec8ae2c4050f63b84ccf6d98723a8f212e9684713abf0e \
    --hash=sha256:2d5d76654becf5efd62c9e51c3756c67b49498b0c9a40884934c40807adbd074 \
    --hash=sha256:337639ba62a11acde6ef3aeb08c8ea755f8ef1fe5e513356c0f36a2b0d7568b0 \
    --hash=sha256:347ec774390c87326a2e4929d58d3f7e8763a104d5d35f4cd595a4c952366433 \
    --hash=sha256:356c8368cbc321050b169595683a2e1d63413b1e0e2868b330af9fc14c616d3f \
    --hash=sha256:37ae34309d7bd8c0d61ab839668058f2a7962ea1fc51d105d2db228fe0618034 \
    --hash=sha256:37ea7b83c935e5b0d68c9449b82651accf78a10828b2c02b2f2d9e9496446c21 \
    --hash=sha256:3a3e26b6a8274211bddee2d0e4d0d42778f17a34510f49d2ec44b58abfc41736 \
    --hash=sha256:3aa166e99c4f2985407fb8714aebede877ecb5455cf321b606adca926d30d5a0 \
    --hash=sha256:3d2652072b2d774947ba5cf78a9e59644ac62ee572daf6dd2e1dfe905e15b2b7 \
    --hash=sha256:40375c2d05acec10323e45dfe2077ac44bc74659008614af5069034e2cfc781c \
    --hash=sha256:413a717a410d0c817ef5b786a059415550b3794e1d0c2abffd9efb93a3d9f7b4 \
    --hash=sha256:46c25dda9d092a06c08db76ffe0a197107904d0dfac653f7d5306bbcd6d6119c \
    --hash=sha256:49776eab08766a08dfff7012f8b422dcd7e25e43b316eedf0477c24fcfa84b7c \
    --hash=sha256:4d44cf99ddebf875f9b68cc267aa684c99b7b44fe63ee1cac4ec163807290069 \
    --hash=sha256:4dedce55295becb61921e386b99d4f2706045306e7fa52249a33004c837379fb \
    --hash=sha256:4f8507560a9284e1370bb048ed4282012fbef4e8d109875b95e884d228552061 \
    --hash=sha256:4fdc8b93a41521988916eeaa271173fcca7fa0803d62f87675aac8dcec1c8e29 \
    --hash=sha256:5086029a57366b8cf81b130a43908738095c270c21a8d7f0e8bdfdb89718e2f3 \
    --hash=sha256:52e24eacdb536cade636aa90fb851835222becff8484b7001fdc78cb0290f2aa \
    --hash=sha256:53feb344243bb9510a9dec7bf3cf1b64d88a98af5dc7872a5160465f8b198c8e \
    --hash=sha256:545f26c504b27c3758439a5e6d9349931f0a04f855668d5fe323c89e82300a38 \
    --hash=sha256:54d510bac3ee52247af28ed4bb18a1e799f040ac60fd2bf5ccd4c92f1fbe786f \
    --hash=sha256:5cb482e9e84c851f4e623fe4acc1ced89168cf1fe18f7089db4548c8f5bbb65b \
    --hash=sha256:5e81740c09e310f5aa5cbd3e434a01c154d4bef93241c7877b39f211d2b78ba8 \
    --hash=sha256:5ee239d575f80b08eca11f6e20f90c4c695de7825c67eefe6091fbf20dda648e \
    --hash=sha256:5f194189415698233dd1114a093a9b56e61e2c57e11b469be3b0506f46f0771c \
    --hash=sha256:5f93c5fe914d75fbec9a49209b00da5f08e9e467d69da2b1510c81940cfd10be \
    --hash=sha256:657b40d6240c0a7b6a64b30f22d1e3aa631c7e846c621b0c0f6d1d75e2e15ea6 \
    --hash=sha256:6d30e1a4f138b8951063e9a394752a9179b51da288ffa507b1e659222f4c1793 \
    --hash=sha256:6f7b393a8b3da82f5c1fc0751e6d01ac6c55b93c18226a60bdfba4a724efafd1 \
    --hash=sha256:701b2e04b560eeb4bddf7a25ab8ca476176e34fdbd9a0e18196f0d12d4685f0b \
    --hash=sha256:771cf63ae0b1b50dd22e5f3e3549fab5f3f4ff1635d352a9e1a97fe01c7b2e64 \
    --hash=sha256:79bdfa52f843137045b2d081cc05c120ba6665d29b7559c2c47690906f39279f \
    --hash=sha256:7ac031912d54f3d83ef3b3eb98dfabc1608802e2202263d25957eeed40b94761 \
    --hash=sha256:7b0fc826b16c55e561e5d2a0c5c77b051ba1d92808118c4e4b5390f5e0cf191d \
    --hash=sha256:7c6be839a5a8312626b32029a415644a0846b420bc8b52b95b28cd92da162168 \
    --hash=sha256:816ff0a6550ffc06c098ccd2e0698600f9aa7da192a79eaa6f9af504a35db869 \
    --hash=sha256:82a36973cf8a2ef5406f4fe2edbf8ed0c99629535d959e0b100c76a32535a111 \
    --hash=sha256:837b396ca3d7b74091ca623f6cbd8351bd42d670a79c2683e79fb089f06a2de5 \
    --hash=sha256:850a08d167dde16db8702c274f320c7be9d7da6f6dff2b58b18f9e815bd94f5b \
    --hash=sha256:8816f3d218beb4b787de5c9759c259b8fa61f9dec42dc7811f320a33771778b7 \
    --hash=sha256:892a881d5f68c2b9ea304b7a6c2c60d9343df578a311b0f86b94bc8f1ffe8129 \
    --hash=sha256:895395f8918627b04efb1ad2a4cf605387143300ba03304cd1dfa6d03f5e095e \
    --hash=sha256:8b10e3e8fd7ddc2bd915848a2768e44c15b22936f1cc54c462ad1164deb02655 \
    --hash=sha256:8e24d8f05fa2d28513d94e877e9c75ad66175376209b3977f916e240e623193c \
    --hash=sha256:8feeac04b5794e513e710af2f9c87d49f31a6dc47967bb264a1fed61a8989bec \
    --hash=sha256:9432f3598db432cb51c5b37fdbf29a60fcccc79e30d37a05022776a6bc4ab689 \
    --hash=sha256:976e1128455aa595ea04c79ccfedff1aaeab96ee013fcc916bed120c4f0ad94f \
    --hash=sha256:978e7b97d4824b5be09c69fb70507cbde3b0323fc147332ca40a94d9a6a0ebbf \
    --hash=sha256:97bf8de4d541598c94a59344eeb988a94c08ff76b5723c41f6567ec18c7892ea \
    --hash=sha256:97cf3eb53a8cccacf9d46686a0926186c9bfb5574f2ed66d3639d5fe117cd3a9 \
    --hash=sha256:9b68938dd5b0c783d88ff8e2dcc69451b5eb936fe212d516b21b9d5567f6d464 \
    --hash=sha256:9c4b71f10dd532fb7a5cbc8f58707779e64f03a258c2bf8bfbaecfcd9970b519 \
    --hash=sha256:9f47b8a949e60f027f0aa0a6f6c7b7e9c55cbf4380d10b344e282fa4e7ab1e1b \
    --hash=sha256:a1dee1b804ff4d11c663636cf15d2ea47e9f79cd56c033fb1cbf08924842a48f \
    --hash=sha256:a2468d93d181667a7abd66e1b64bb9f76f361b0fef8faddf687456453576f5ee \
    --hash=sha256:a2a5e1d0ff29adddc9f6d6821a66302e4493f8ca898b715b6b1182c2c201ea0a \
    --hash=sha256:a39ac25a9a2fa4072efdb429833c4a4c8009a51ff9eea3eeae131713cd27991e \
    --hash=sha256:a445486499897b88a7d6c310c88ed64dd37b1b59bfd7ae9107490bbb362f47d6 \
    --hash=sha256:a91c17edf6eea2402cb5457b4c89e99bc5ed1004aa34c4adf1d4258c1a5c22c2 \
    --hash=sha256:ab4b66edffb32d9e951efb3814bd104b8367a7501b81b955cacb5726d897389f \
    --hash=sha256:aca6c767f552b21b10f774aeac128e828eafb796adfa1b666a18bf6321453c3a \
    --hash=sha256:acf8a67ba51f4ca9ddbd0e6b3000a65ac51ab734661778b3e7ba64d99a710f2f \
    --hash=sha256:b10ec717381bdbfafef34607824db4c91de69ff085e4fca3b2af91b4fa17e68a \
    --hash=sha256:b49924c73a235e969511bf2aabdff3beebf9820931f646c80274d5d780010c47 \
    --hash=sha256:b6acfb46a814762367fb7ba0828b0a17d441b92ce249a0e007474c9072662dda \
    --hash=sha256:b7ca9034437b6022f941f4857459562ee00a560b97e7cce8a0ec5a74fc6766e0 \
    --hash=sha256:b98134087d9de723658d17a42c7d0da8d6e2ef08015dee7dc93889047315f5e4 \
    --hash=sha256:b9fe6fb92520e3fd61f2e49000b6911b188824f089b75973ea06d6267f0b476d \
    --hash=sha256:bce57638e08ac148e5778cce7feb968307a727d66f8e2274a543d0cf0c9ad6a3 \
    --hash=sha256:c14ad3bdc85ee7f318742c457ca3968a92126d144b15721c759033bfb06296c2 \
    --hash=sha256:c1c43ad4339643d70ebb8124e1305a7dab423001eff58bb41a0f731adbc98355 \
    --hash=sha256:c3471e5c4a949c26ec00a77f01df59096aa9495877de76fd60a980f8ee6be461 \
    --hash=sha256:c583b927a8838dab890706a6fa7573fbb8b70e24000ef9f7238e2d6f6435a5ed \
    --hash=sha256:c76fe65e607be28c7fd4d56fc3c42b1583aa058ce3408b7ad0fd540171d31f9f \
    --hash=sha256:c7ea57fc63aa7da93a1bd2d644e6577befae10c52c4e36377635eea1056a74f5 \
    --hash=sha256:cd5214352ae68f3b5e9af7768bdc5253695ee069675db3480518420b3be881f2 \
    --hash=sha256:cdbb78909f52b981d3b2d56b97328d71eb0b974c36bd77c920123a7ebb192829 \
    --hash=sha256:cdc8b74ecc48c0cb1e9607a05ec4e9e88db60a19ffcc9a1d5f9088ede40c8dc0 \
    --hash=sha256:d0a24b40877af2de4950252be9d21eaf7fb07660f3c2cae1f56c6b599ada5266 \
    --hash=sha256:d22a945598fb91236b4dd793a6e42e4f3dd7740bb5aace5ebd7d4c08d13bb575 \
    --hash=sha256:d2f9fc07a8042a8f95925b35c4f04f469707c981fc33245b6ca187cf5d2dd290 \
    --hash=sha256:d625a186a65201c23a9e3b8ed9c47e90a026e03256608cc91851c6709096844f \
    --hash=sha256:d925f3d9afd05a8c0fb3a1031463a8d59ebe5e2afad297e29c78be19e13b4e62 \
    --hash=sha256:e64e88d5585bea9ce95861079de72006c7fa6d3df4e3a3b65ba31eb979c15c9f \
    --hash=sha256:e652ab17569c94bff5475520f907b7148b8c24036a8ebbe5cf7cf7493d28579a \
    --hash=sha256:e7b891faeedeafba41b2983e5001a81b6a915b69544c7e7570d1989ce1c36ac7 \
    --hash=sha256:e80675d75ae2cd14372cb65cad5400d9347a3d3f6c13000183f22dfd027283ed \
    --hash=sha256:e9c134bb666dd54b778b9fc0d2b50cbb7f979b9e3716f26a88c9ab3b6fc1dd0f \
    --hash=sha256:eb7d8d0e5886a89a55d2eef490e272fa965a9d57c6b29a5b5088a7997ec2cad1 \
    --hash=sha256:ecb42011e12ee19cafbc312887cbf3546959fe02fbad44f272d4be5baa997615 \
    --hash=sha256:ef3fbbf161dc9351a2fe0422e51b129f9e97e42385bd0320b309c15f7d287dd8 \
    --hash=sha256:efd62a42486f1bda5d24cb4f63d15a3c7768375fe83d36f9417b4ad7a2fb20b3 \
    --hash=sha256:f077d0b97ab11fa7dcc633fca53515f290bca8a8a633e966d5b6d1879d9ed01a \
    --hash=sha256:f332f0e72a5a0400141f830744e141bf9f97917878dbe968669e8a7fefea78ff \
    --hash=sha256:f7b0ec93a2893de856652154d73b7ba622f26fa97726487dcac373de5f4c6084 \
    --hash=sha256:fa10ef4112775900e7a0661068635eb67b2ab824fbde764de6e0e21982a93db0 \
    --hash=sha256:fc5d783bd4a2387e97b8a2d5ec781cfb92b3d893bf82370548e99db5915935d3 \
    --hash=sha256:fc8515076c11f3cfdf4fb142dcca0fe384b1230a3b5415458ac84f3e0903ec13 \
    --hash=sha256:ff218293c9c806138dca139765e3b067621be52bcd93cdc14c7711be7ddc90a9
    # via pydantic
pygments==2.21.0 \
    --hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
    --hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
    # via
    #   -r requirements.in
    #   pytest
    #   sphinx
    #   sphinx-tabs
    #   strictdoc
pykwalify==1.8.0 \
    --hash=sha256:731dfa87338cca9f559d1fca2bdea37299116e3139b73f78ca90a543722d6651 \
    --hash=sha256:796b2ad3ed4cb99b88308b533fb2f559c30fa6efb4fa9fda11347f483d245884
    # via -r requirements.in
pyparsing==3.3.3 \
    --hash=sha256:928ae7e20211f3b6f3915a72f06a0cfd29ab9d24279dd6346b6b1a7146397d36 \
    --hash=sha256:ece8c00a69cf01b45d0b1dedabb469c90d8caf996d4fda40f147627a122849a4
    # via rdflib
pypdf==6.19.0 \
    --hash=sha256:7e5d6e730e7dae87d560a2cee218b852f6498c8be61966f3cd02ead971e48d14 \
    --hash=sha256:bbc43aca292369ccc6cbc8a921991ecf2538a3587ab5a116eff06c321d647155
    # via
    #   html2pdf4doc
    #   strictdoc
pyserial==3.5 \
    --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \
    --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0
    # via -r requirements.in
pysocks==1.7.1 \
    --hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \
    --hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \
    --hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0
    # via urllib3
pytest==9.1.1 \
    --hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
    --hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
    # via -r requirements.in
python-datauri==2.2.0 \
    --hash=sha256:8fa58222975fee541ce39e6b0b9d5653cefcc2481ad2629efc0378d48b13f43b \
    --hash=sha256:8fdbd6fc544a936eb492aa609ac457b08bbd7b9a77819c555805372cc76d7118
    # via strictdoc
python-dateutil==2.9.0.post0 \
    --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
    --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
    # via
    #   pandas
    #   pykwalify
python-debian==1.1.1 \
    --hash=sha256:f98ae013e8e5310e49041cc3860a7105df73af73d4ff1d8afb474770d328a6ad \
    --hash=sha256:fe4fc3dc798dbf1f0ef5865e2b1b4f7cc0352b6a511b25ab7594906c64a73629
    # via reuse
python-dotenv==1.2.3 \
    --hash=sha256:904552145e8bfed22162c09dab1c2b9b54fefa7b23ba780f4f26ca0316b0f0d9 \
    --hash=sha256:a20a594dabeaa385725aa239d5244871c143ecb356add8a20fcf23773a6c3a35
    # via
    #   -r requirements.in
    #   uvicorn
    #   webdriver-manager
python-magic==0.4.27 \
    --hash=sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b \
    --hash=sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3
    # via reuse
python-multipart==0.0.32 \
    --hash=sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e \
    --hash=sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23
    # via strictdoc
pyyaml==6.0.3 \
    --hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \
    --hash=sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a \
    --hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \
    --hash=sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956 \
    --hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \
    --hash=sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c \
    --hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \
    --hash=sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a \
    --hash=sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0 \
    --hash=sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b \
    --hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \
    --hash=sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6 \
    --hash=sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7 \
    --hash=sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e \
    --hash=sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007 \
    --hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \
    --hash=sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4 \
    --hash=sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9 \
    --hash=sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295 \
    --hash=sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea \
    --hash=sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0 \
    --hash=sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e \
    --hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \
    --hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \
    --hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \
    --hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \
    --hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \
    --hash=sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b \
    --hash=sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69 \
    --hash=sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5 \
    --hash=sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b \
    --hash=sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c \
    --hash=sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369 \
    --hash=sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd \
    --hash=sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824 \
    --hash=sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198 \
    --hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \
    --hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \
    --hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \
    --hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \
    --hash=sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 \
    --hash=sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b \
    --hash=sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00 \
    --hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \
    --hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \
    --hash=sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e \
    --hash=sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28 \
    --hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \
    --hash=sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5 \
    --hash=sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4 \
    --hash=sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b \
    --hash=sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf \
    --hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \
    --hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \
    --hash=sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8 \
    --hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \
    --hash=sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da \
    --hash=sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d \
    --hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc \
    --hash=sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c \
    --hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \
    --hash=sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f \
    --hash=sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917 \
    --hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \
    --hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \
    --hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \
    --hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \
    --hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \
    --hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \
    --hash=sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3 \
    --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \
    --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \
    --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0
    # via
    #   -r requirements.in
    #   spdx-tools
    #   sphinxcontrib-mermaid
    #   uvicorn
rdflib==7.6.0 \
    --hash=sha256:30c0a3ebf4c0e09215f066be7246794b6492e054e782d7ac2a34c9f70a15e0dd \
    --hash=sha256:6c831288d5e4a5a7ece85d0ccde9877d512a3d0f02d7c06455d00d6d0ea379df
    # via spdx-tools
reqif==0.1.0 \
    --hash=sha256:419e8fb838fdb1c0cd6b79ae8c0fb06c9c01dca78690e7e6bae80bf8878d3ca5 \
    --hash=sha256:c3af000d745e107c3d409535acc54274f469522385e6bb3923f5d3918219a189
    # via strictdoc
requests==2.34.2 \
    --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
    --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
    # via
    #   html2pdf4doc
    #   sphinx
    #   webdriver-manager
reuse @ https://codeberg.org/fsfe/reuse-tool/archive/f94ae0b1bb1d4d2ea91f49df88f3184c5d781a1d.tar.gz \
    --hash=sha256:33014f72d8bd184974ec1d61d9f81a6bfff3ba8f582a58d6ee6881a49e6819cd
    # via -r requirements.in
robotframework==7.5 \
    --hash=sha256:5a194db36524604fafa1da89adebc837db9a95adf15ffd746e09ce98251e6c68 \
    --hash=sha256:ff6233ff752a200ece4d0a6c59f6f9f7d0e96dcff0a7a3458296b997b812482e
    # via strictdoc
roman-numerals==4.1.0 \
    --hash=sha256:1af8b147eb1405d5839e78aeb93131690495fe9da5c91856cb33ad55a7f1e5b2 \
    --hash=sha256:647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7
    # via sphinx
ruamel-yaml==0.19.1 \
    --hash=sha256:27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93 \
    --hash=sha256:53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993
    # via pykwalify
selenium==4.49.0 \
    --hash=sha256:0d1de9ec6977aa2d5f766d923d5076fdffa91681a8d4ffc9e3381a36839a20f2 \
    --hash=sha256:c9d91274e5f55835e12b524adf1f231739ea811a8866d810e5bb42ba87cd8eda
    # via html2pdf4doc
semantic-version==2.10.0 \
    --hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \
    --hash=sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177
    # via spdx-tools
setuptools==84.0.0 \
    --hash=sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670 \
    --hash=sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73
    # via sphinx-togglebutton
six==1.17.0 \
    --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
    --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
    # via
    #   doxmlparser
    #   html5lib
    #   python-dateutil
sniffio==1.3.1 \
    --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \
    --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc
    # via trio
snowballstemmer==3.1.1 \
    --hash=sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752 \
    --hash=sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260
    # via sphinx
sortedcontainers==2.4.0 \
    --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \
    --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0
    # via trio
soupsieve==2.10 \
    --hash=sha256:49e9380d7d2905463583bafe285e818c7366a9ed7b3aee221c1ac79c905d8bc0 \
    --hash=sha256:8596eb8967d744174820280fa62b4542a2e955bfaccca73ed8a13c6eb8e9b502
    # via beautifulsoup4
spdx-tools==0.8.5 \
    --hash=sha256:7c2d5865941be9d2e898f5b084e8d5422dd298dc5a29320ddb198fec304f59c4 \
    --hash=sha256:be600beb2f762f0116025e05490d399e724f668bef84025a7c421bb266688bdb
    # via strictdoc
sphinx==9.1.0 \
    --hash=sha256:7741722357dd75f8190766926071fed3bdc211c74dd2d7d4df5404da95930ddb \
    --hash=sha256:c84fdd4e782504495fe4f2c0b3413d6c2bf388589bb352d439b2a3bb99991978
    # via
    #   -r requirements.in
    #   sphinx-autobuild
    #   sphinx-copybutton
    #   sphinx-design
    #   sphinx-last-updated-by-git
    #   sphinx-notfound-page
    #   sphinx-rtd-theme
    #   sphinx-tabs
    #   sphinx-togglebutton
    #   sphinxcontrib-jquery
    #   sphinxcontrib-mermaid
    #   sphinxcontrib-programoutput
    #   sphinxcontrib-svg2pdfconverter
sphinx-autobuild==2025.8.25 \
    --hash=sha256:9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213 \
    --hash=sha256:b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a
    # via -r requirements.in
sphinx-copybutton==0.5.2 \
    --hash=sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd \
    --hash=sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e
    # via -r requirements.in
sphinx-design==0.7.0 \
    --hash=sha256:d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a \
    --hash=sha256:f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282
    # via -r requirements.in
sphinx-last-updated-by-git==0.3.8 \
    --hash=sha256:6382c8285ac1f222483a58569b78c0371af5e55f7fbf9c01e5e8a72d6fdfa499 \
    --hash=sha256:c145011f4609d841805b69a9300099fc02fed8f5bb9e5bcef77d97aea97b7761
    # via sphinx-sitemap
sphinx-notfound-page==1.1.0 \
    --hash=sha256:835dc76ff7914577a1f58d80a2c8418fb6138c0932c8da8adce4d9096fbcd389 \
    --hash=sha256:913e1754370bb3db201d9300d458a8b8b5fb22e9246a816643a819a9ea2b8067
    # via -r requirements.in
sphinx-rtd-theme==3.1.0 \
    --hash=sha256:1785824ae8e6632060490f67cf3a72d404a85d2d9fc26bce3619944de5682b89 \
    --hash=sha256:b44276f2c276e909239a4f6c955aa667aaafeb78597923b1c60babc76db78e4c
    # via -r requirements.in
sphinx-sitemap==2.9.0 \
    --hash=sha256:70f97bcdf444e3d68e118355cf82a1f54c4d3c03d651cd17fe87398b26e25e21 \
    --hash=sha256:f1f1d3a9ad012ba17a7ef0b560d303bff2d0db26647567d6e810bcc754466664
    # via -r requirements.in
sphinx-tabs==3.5.0 \
    --hash=sha256:154be49de4d5c8249ea08c5d9bf88ca8f9c31e00a178305a93cbc33e000339e5 \
    --hash=sha256:91dba1187e4c35fd37380a56ac228bbd54c6c649b2351829f3bf033718277537
    # via -r requirements.in
sphinx-togglebutton==0.4.5 \
    --hash=sha256:74eac6d2426110c3e1e6f989a98e07d7823141a335df1ad8a9d637bdf6a7af62 \
    --hash=sha256:c870dfbd3bc6e119b50ff9a37a64f8991902269e856728931c7d89877e8d4b3d
    # via -r requirements.in
sphinxcontrib-applehelp==2.0.0 \
    --hash=sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1 \
    --hash=sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5
    # via sphinx
sphinxcontrib-devhelp==2.0.0 \
    --hash=sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad \
    --hash=sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2
    # via sphinx
sphinxcontrib-htmlhelp==2.1.0 \
    --hash=sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8 \
    --hash=sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9
    # via sphinx
sphinxcontrib-jquery==4.1 \
    --hash=sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a \
    --hash=sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae
    # via sphinx-rtd-theme
sphinxcontrib-jsmath==1.0.1 \
    --hash=sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 \
    --hash=sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8
    # via sphinx
sphinxcontrib-mermaid==2.1.1 \
    --hash=sha256:3b9ac1a8e0b5154dec3c0acf9b5c54dd9ba58540e416f20858c300814c25648f \
    --hash=sha256:f8d7f1b2f0ad69b7ebdd5cbf532fb4ee107893b5373bc2d0e9634089c0b2cfee
    # via -r requirements.in
sphinxcontrib-programoutput==0.20 \
    --hash=sha256:5c4282c1c7fc9b5a23febe16ae038b6392d7ce068d186ad4870ba22e74db0711 \
    --hash=sha256:f473f9e7992879358efdeb9962fbec2103f6ba1cb6a738eb7f81dae554bc5ec7
    # via -r requirements.in
sphinxcontrib-qthelp==2.0.0 \
    --hash=sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab \
    --hash=sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb
    # via sphinx
sphinxcontrib-serializinghtml==2.0.0 \
    --hash=sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 \
    --hash=sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d
    # via sphinx
sphinxcontrib-svg2pdfconverter==2.1.0 \
    --hash=sha256:805635ac274583e1606b0ec7fb21f16b69ca8ff223dd7e237d91127015628b0c \
    --hash=sha256:9756e82d5f3bf11629ffcbafb1f8a1092d3bb4789e33494032cdce9a9c8459d3
    # via -r requirements.in
starlette==1.7.0 \
    --hash=sha256:67f8e99895493dd2911a03f11314af6ceebeae4e704bb9f43dfc6a9db151c93e \
    --hash=sha256:c79f74ea63cff761804fbbfb182f1e0b440c2d07b164d24700c5a1bab5d6ff5d
    # via
    #   fastapi
    #   sphinx-autobuild
strictdoc==0.30.1 \
    --hash=sha256:1e9c3fa9afaaf254a97b4a2d626db47b655f093912579c99bf731aeee0dc9759 \
    --hash=sha256:28885881371f246ed53eecf131e1f222fe60dc276aabe47902ad7b41e349d4e9
    # via -r requirements.in
textx==4.4.0 \
    --hash=sha256:a7b15a4698b503edde631d5227c0d0f6024898a86a7924b5fc741973305f9286 \
    --hash=sha256:f08071316d662d8dbecb0e8322510eeba71e89fa91c69a5278cbebfd1debde42
    # via strictdoc
toml==0.10.2 \
    --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \
    --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f
    # via strictdoc
tomlkit==0.15.1 \
    --hash=sha256:177a05aece5a8ca5266fd3c448abb47b8d352f09d477d3ca8332db4d89b24304 \
    --hash=sha256:e25bbf38843005246210a12982776f27f99cb9be67160e14434d0c0d21ee1e97
    # via reuse
tree-sitter==0.25.2 \
    --hash=sha256:0628671f0de69bb279558ef6b640bcfc97864fe0026d840f872728a86cd6b6cd \
    --hash=sha256:0c8b6682cac77e37cfe5cf7ec388844957f48b7bd8d6321d0ca2d852994e10d5 \
    --hash=sha256:1799609636c0193e16c38f366bda5af15b1ce476df79ddaae7dd274df9e44266 \
    --hash=sha256:20b570690f87f1da424cd690e51cc56728d21d63f4abd4b326d382a30353acc7 \
    --hash=sha256:260586381b23be33b6191a07cea3d44ecbd6c01aa4c6b027a0439145fcbc3358 \
    --hash=sha256:3e65ae456ad0d210ee71a89ee112ac7e72e6c2e5aac1b95846ecc7afa68a194c \
    --hash=sha256:44488e0e78146f87baaa009736886516779253d6d6bac3ef636ede72bc6a8234 \
    --hash=sha256:463c032bd02052d934daa5f45d183e0521ceb783c2548501cf034b0beba92c9b \
    --hash=sha256:4973b718fcadfb04e59e746abfbb0288694159c6aeecd2add59320c03368c721 \
    --hash=sha256:49ee3c348caa459244ec437ccc7ff3831f35977d143f65311572b8ba0a5f265f \
    --hash=sha256:56ac6602c7d09c2c507c55e58dc7026b8988e0475bd0002f8a386cce5e8e8adc \
    --hash=sha256:65d3c931013ea798b502782acab986bbf47ba2c452610ab0776cf4a8ef150fc0 \
    --hash=sha256:6d0302550bbe4620a5dc7649517c4409d74ef18558276ce758419cf09e578897 \
    --hash=sha256:72a510931c3c25f134aac2daf4eb4feca99ffe37a35896d7150e50ac3eee06c7 \
    --hash=sha256:7712335855b2307a21ae86efe949c76be36c6068d76df34faa27ce9ee40ff444 \
    --hash=sha256:7d2ee1acbacebe50ba0f85fff1bc05e65d877958f00880f49f9b2af38dce1af0 \
    --hash=sha256:a0ec41b895da717bc218a42a3a7a0bfcfe9a213d7afaa4255353901e0e21f696 \
    --hash=sha256:a925364eb7fbb9cdce55a9868f7525a1905af512a559303bd54ef468fd88cb37 \
    --hash=sha256:b3d11a3a3ac89bb8a2543d75597f905a9926f9c806f40fcca8242922d1cc6ad5 \
    --hash=sha256:b3f63a1796886249bd22c559a5944d64d05d43f2be72961624278eff0dcc5cb8 \
    --hash=sha256:b43a9e4c89d4d0839de27cd4d6902d33396de700e9ff4c5ab7631f277a85ead9 \
    --hash=sha256:b878e296e63661c8e124177cc3084b041ba3f5936b43076d57c487822426f614 \
    --hash=sha256:b8ca72d841215b6573ed0655b3a5cd1133f9b69a6fa561aecad40dca9029d75b \
    --hash=sha256:b8d4429954a3beb3e844e2872610d2a4800ba4eb42bb1990c6a4b1949b18459f \
    --hash=sha256:bd88fbb0f6c3a0f28f0a68d72df88e9755cf5215bae146f5a1bdc8362b772053 \
    --hash=sha256:bda059af9d621918efb813b22fb06b3fe00c3e94079c6143fcb2c565eb44cb87 \
    --hash=sha256:c0c0ab5f94938a23fe81928a21cc0fac44143133ccc4eb7eeb1b92f84748331c \
    --hash=sha256:c2f8e7d6b2f8489d4a9885e3adcaef4bc5ff0a275acd990f120e29c4ab3395c5 \
    --hash=sha256:cc0351cfe5022cec5a77645f647f92a936b38850346ed3f6d6babfbeeeca4d26 \
    --hash=sha256:d77605e0d353ba3fe5627e5490f0fbfe44141bafa4478d88ef7954a61a848dae \
    --hash=sha256:dd12d80d91d4114ca097626eb82714618dcdfacd6a5e0955216c6485c350ef99 \
    --hash=sha256:ddabfff809ffc983fc9963455ba1cecc90295803e06e140a4c83e94c1fa3d960 \
    --hash=sha256:eac4e8e4c7060c75f395feec46421eb61212cb73998dbe004b7384724f3682ab \
    --hash=sha256:f5ddcd3e291a749b62521f71fc953f66f5fd9743973fd6dd962b092773569601 \
    --hash=sha256:fbb1706407c0e451c4f8cc016fec27d72d4b211fdd3173320b1ada7a6c74c3ac \
    --hash=sha256:fe43c158555da46723b28b52e058ad444195afd1db3ca7720c59a254544e9c20
    # via strictdoc
tree-sitter-c==0.24.2 \
    --hash=sha256:1628584df0299b5a340aa63f8e67b6c97c91517f52fa7e7a4c557e40adb330a9 \
    --hash=sha256:4a2f4371cd816cc3153458f69062135ebb2ea5f275ddd90494e5c823d778204a \
    --hash=sha256:4d4579a8b54f0a442f903d88d3304cab77cd5c2031d4015baa4f2f8e15d6dcb7 \
    --hash=sha256:5041ef67eb68ce6bc8bb0b1f8ef3a5585ce523dae0c7eec109ab0627dd75aede \
    --hash=sha256:82842c5a5f2acd93f4de10038c33ac179c8979defc39376f990348d6289e933b \
    --hash=sha256:97bc80a224d48215d4e6e6376bf30d114f4c317b8145ff1b02afe785d4ba7bdd \
    --hash=sha256:abb549225091f7b25df2dd3a0143ece6e208f7055d8bcb4700b41ee79b9ef1e1 \
    --hash=sha256:c098bedcd5ac86ff93fa734d51d1dd86aed40fd5ed7d634c7af11380a0469969 \
    --hash=sha256:e2b42e8e22202c251f8629306f9321233542e07a6e01611b5fe83489272143eb
    # via strictdoc
tree-sitter-cpp==0.23.4 \
    --hash=sha256:247d127f0eb6574b0f6b30c0151e0bd0774e2e7acf9c558bdf9fbb8adc2e80c0 \
    --hash=sha256:68606a45bea92669d155399e1239f771a7767d8683cd8f8e30e7d813107030ca \
    --hash=sha256:6a59c4cebb1ad1dc2e8d586cf8a72b39d21b8108b7b139d089719e81a339e41d \
    --hash=sha256:712f84f18be94cbe2a148fa4fdf40fcf4a8c25a8f7670efb9f8a47ddec2fc281 \
    --hash=sha256:773d2cafc08bbc0f998687fa33f42f378c1a371cdb582870c4d13abb06092706 \
    --hash=sha256:aacb1759f0efd9dbc25bd8ee88184a340483018869f75412d9c3bc32c039a520 \
    --hash=sha256:bc3c404d9f0cbd87951213a85440afbf4c31e718f8d907fa9ee12bea4b8d276f \
    --hash=sha256:ccc43ddf1279d5d5a4ef190373f4cb16522801bec4492bcd4754edf2aeba2b7b
    # via strictdoc
tree-sitter-python==0.25.0 \
    --hash=sha256:0fbf6a3774ad7e89ee891851204c2e2c47e12b63a5edbe2e9156997731c128bb \
    --hash=sha256:14a79a47ddef72f987d5a2c122d148a812169d7484ff5c75a3db9609d419f361 \
    --hash=sha256:480c21dbd995b7fe44813e741d71fed10ba695e7caab627fb034e3828469d762 \
    --hash=sha256:71959832fc5d9642e52c11f2f7d79ae520b461e63334927e93ca46cd61cd9683 \
    --hash=sha256:86f118e5eecad616ecdb81d171a36dde9bef5a0b21ed71ea9c3e390813c3baf5 \
    --hash=sha256:9bcde33f18792de54ee579b00e1b4fe186b7926825444766f849bf7181793a76 \
    --hash=sha256:b13e090f725f5b9c86aa455a268553c65cadf325471ad5b65cd29cac8a1a68ac \
    --hash=sha256:be71650ca2b93b6e9649e5d65c6811aad87a7614c8c1003246b303f6b150f61b \
    --hash=sha256:e6d5b5799628cc0f24691ab2a172a8e676f668fe90dc60468bee14084a35c16d
    # via strictdoc
tree-sitter-rust==0.24.2 \
    --hash=sha256:01a46622735498493f29f3e628a90de95c96a07bfbeb88996243eb986b1cee36 \
    --hash=sha256:3620cfd12340efa43082d45df76349ff511893a9c361da2f8d6d51e307020a59 \
    --hash=sha256:4529c125d928882ddfb879fdc6bc0704913261ecc078b6fa7902559e0daf200d \
    --hash=sha256:54fb02a5911e345308b405174465112479f56dc39e3f1e7744d7568595f00db9 \
    --hash=sha256:66ba90f61bd54f4c4f5d30434957daf64507c16b0313df76becb37d63f70a227 \
    --hash=sha256:87930163a462408c49ab62c667e74029bc26b4cc7123dd1bdc7352215786c64a \
    --hash=sha256:9d76d1208c3638b871236090759dfc13d478921320653a6c9da5336e7c58f65a \
    --hash=sha256:da2b86099028fd42c6cd32878b7b16b01f8aac0f7b0e98742b7fa6bc3cf09b89 \
    --hash=sha256:e033c5a93b57c88e0a835880de39fc802909ff69f57aaff6000211c196ea5190
    # via strictdoc
trio==0.34.0 \
    --hash=sha256:63b9485408bdfdde544fced107045a8c0086cdc4bd0ef2f797b9e0dd111b964b \
    --hash=sha256:6c7c9f49917694dcdcd5f67abd168df5599eca480d61f29854d17a61a75c2f05
    # via
    #   selenium
    #   trio-websocket
trio-websocket==0.12.2 \
    --hash=sha256:22c72c436f3d1e264d0910a3951934798dcc5b00ae56fc4ee079d46c7cf20fae \
    --hash=sha256:df605665f1db533f4a386c94525870851096a223adcb97f72a07e8b4beba45b6
    # via selenium
typing-extensions==4.16.0 \
    --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
    --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
    # via
    #   anyio
    #   beautifulsoup4
    #   fastapi
    #   opentelemetry-api
    #   pydantic
    #   pydantic-core
    #   python-datauri
    #   selenium
    #   starlette
    #   strictdoc
    #   typing-inspection
typing-inspection==0.4.4 \
    --hash=sha256:547274fa6b0a561ccf549cc9524b999a578e737d015d8709d021f9d0d13bea47 \
    --hash=sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147
    # via
    #   fastapi
    #   pydantic
tzdata==2026.4 ; sys_platform == 'emscripten' or sys_platform == 'win32' \
    --hash=sha256:c2169a8b0a7a5e9674da5a135ccdfb2b3e671b333ed9fed17b41f73c34476e81 \
    --hash=sha256:f1b8bd365d8d210c55353f4d7f8d6d8561c0ba50d704b700d195a9424bba0d79
    # via pandas
uritools==6.1.3 \
    --hash=sha256:136f113e76e53f85bf2d9cce0c3d40ceec775d0409e7d6de9b28f046a7d42838 \
    --hash=sha256:3a498e7e85ef3249343d5710618d641a414da0fbae6d23053ada7976ee83ea5f
    # via spdx-tools
urllib3==2.8.0 \
    --hash=sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3 \
    --hash=sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63
    # via
    #   requests
    #   selenium
uvicorn==0.54.0 \
    --hash=sha256:505bdb0f318731d45f1f712071fc781a8981f6847a31c902c9f5e652d4f67faf \
    --hash=sha256:a2e33cbfaa0306f8e6b0c13e0cb89d7d7a2da3e62b90c66e18c33d9807b28620
    # via
    #   sphinx-autobuild
    #   strictdoc
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' \
    --hash=sha256:017bd46f9e7b78e81606329d07141d3da446f8798c6baeec124260e22c262772 \
    --hash=sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e \
    --hash=sha256:05e4b5f86e621cf3927631789999e697e58f0d2d32675b67d9ca9eb0bca55743 \
    --hash=sha256:0ae676de143db2b2f60a9696d7eca5bb9d0dd6cc3ac3dad59a8ae7e95f9e1b54 \
    --hash=sha256:1489cf791aa7b6e8c8be1c5a080bae3a672791fcb4e9e12249b05862a2ca9cec \
    --hash=sha256:17d4e97258b0172dfa107b89aa1eeba3016f4b1974ce85ca3ef6a66b35cbf659 \
    --hash=sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8 \
    --hash=sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad \
    --hash=sha256:286322a90bea1f9422a470d5d2ad82d38080be0a29c4dd9b3e6384320a4d11e7 \
    --hash=sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35 \
    --hash=sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289 \
    --hash=sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142 \
    --hash=sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77 \
    --hash=sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733 \
    --hash=sha256:481c990a7abe2c6f4fc3d98781cc9426ebd7f03a9aaa7eb03d3bfc68ac2a46bd \
    --hash=sha256:4a968a72422a097b09042d5fa2c5c590251ad484acf910a651b4b620acd7f193 \
    --hash=sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74 \
    --hash=sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0 \
    --hash=sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6 \
    --hash=sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473 \
    --hash=sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21 \
    --hash=sha256:55502bc2c653ed2e9692e8c55cb95b397d33f9f2911e929dc97c4d6b26d04242 \
    --hash=sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705 \
    --hash=sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702 \
    --hash=sha256:57df59d8b48feb0e613d9b1f5e57b7532e97cbaf0d61f7aa9aa32221e84bc4b6 \
    --hash=sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f \
    --hash=sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e \
    --hash=sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d \
    --hash=sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370 \
    --hash=sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4 \
    --hash=sha256:7cd375a12b71d33d46af85a3343b35d98e8116134ba404bd657b3b1d15988792 \
    --hash=sha256:80eee091fe128e425177fbd82f8635769e2f32ec9daf6468286ec57ec0313efa \
    --hash=sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079 \
    --hash=sha256:a592b043a47ad17911add5fbd087c76716d7c9ccc1d64ec9249ceafd735f03c2 \
    --hash=sha256:ac33ed96229b7790eb729702751c0e93ac5bc3bcf52ae9eccbff30da09194b86 \
    --hash=sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6 \
    --hash=sha256:b45649628d816c030dba3c80f8e2689bab1c89518ed10d426036cdc47874dfc4 \
    --hash=sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3 \
    --hash=sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21 \
    --hash=sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c \
    --hash=sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e \
    --hash=sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25 \
    --hash=sha256:c3e5c6727a57cb6558592a95019e504f605d1c54eb86463ee9f7a2dbd411c820 \
    --hash=sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9 \
    --hash=sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88 \
    --hash=sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2 \
    --hash=sha256:ea721dd3203b809039fcc2983f14608dae82b212288b346e0bfe46ec2fab0b7c \
    --hash=sha256:ef6f0d4cc8a9fa1f6a910230cd53545d9a14479311e87e3cb225495952eb672c \
    --hash=sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42
    # via uvicorn
watchdog==6.0.0 \
    --hash=sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a \
    --hash=sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2 \
    --hash=sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f \
    --hash=sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c \
    --hash=sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c \
    --hash=sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c \
    --hash=sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0 \
    --hash=sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13 \
    --hash=sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134 \
    --hash=sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa \
    --hash=sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e \
    --hash=sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379 \
    --hash=sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a \
    --hash=sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11 \
    --hash=sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282 \
    --hash=sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b \
    --hash=sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f \
    --hash=sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c \
    --hash=sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112 \
    --hash=sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948 \
    --hash=sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881 \
    --hash=sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860 \
    --hash=sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3 \
    --hash=sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680 \
    --hash=sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26 \
    --hash=sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26 \
    --hash=sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e \
    --hash=sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8 \
    --hash=sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c \
    --hash=sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2
    # via strictdoc
watchfiles==1.3.0 \
    --hash=sha256:000b9688fc8133037a8b075c8ebf98f32844ff8964dda61e85c1db547dafc441 \
    --hash=sha256:025b108f2d5cc2799cb941f79380df3e8b22bfb589c218e801767fe78d598c95 \
    --hash=sha256:04c5500faa725d69a99b0f63750e80795e455bb951849e9c98a811b4324997c4 \
    --hash=sha256:1acabde19b67e673274e89a04d613b7fb1f122e2c4b8ec9a581e59c149264b61 \
    --hash=sha256:26b81bc515a0f03f66a69a6fea86eea54c8eca4173c46dd7222569f79dd2f977 \
    --hash=sha256:380f513d26cc2e598266b88d66456e07d67ef4be8f0f435a1154d9c44b43d509 \
    --hash=sha256:45726c6b5a8d67c8087eb2933c4398948546d04206ef40f629dc4881d65d23d1 \
    --hash=sha256:4af9c464d410e8c44b58ddf1cbec7c3a02c1cb2c6c80df9c74659ba2fbda0ab5 \
    --hash=sha256:509d9f74d2bec5c1f4cd868ddcfe0c9601f7ea53066dfcb19d8ede742c4de661 \
    --hash=sha256:591de392458bca26f6130fea4e667c06b657e873ad334ea06fad5a79f5086cef \
    --hash=sha256:5ec46a1ff4c1d81405a5fc645abdbff5e4e9388f7c9a6cdb392316a7c29b884f \
    --hash=sha256:6398d250994baff581147ccba846223076fe6492ca93c0d1b3588fcf5355eb5c \
    --hash=sha256:7398930a2b76b9dc67a4e6b8bfc7baf30946892a86f417a3920c07bdd6febc30 \
    --hash=sha256:7c1125e99f84934a92996ae343501285617373acd66f16b59fd5654b27ad8d80 \
    --hash=sha256:81c989d7267bfb7b676cd32c83bec97914e396870983cbf493e29415037bff5e \
    --hash=sha256:99aee4a07847c06820765fd7b1b49ceac4f3f711ccb7d104655a33231de1c207 \
    --hash=sha256:a5b631db08fd3032db57ec6a92d1777cd60f88803287e4e941a4858c53aab1e0 \
    --hash=sha256:a85e243c87109d9f48a2e0d10d6abdee8768cc114848b32281ec83d7f81d86ef \
    --hash=sha256:b5768b49e426fd5b550b012c866db347cdf15c398ef98dc557b6e6b72fa74cd1 \
    --hash=sha256:bbc1198edfdc90fda0600f825aa94150f428dfcbf8138746f55998e0e660d64c \
    --hash=sha256:be9ef3cd403d756a304a0a08a112163c63da7ec72c8c9d083c98818291ff8f29 \
    --hash=sha256:ca39661934749df580d89f3dde266f2af7c6968f4c21c72ce2dc387d299e6aa7 \
    --hash=sha256:d36c72fcdc08f143d87316a4c4c3b064e340da2c7383d39803950740ed418935 \
    --hash=sha256:d4593392e87669836670f87d62fc754059eaeb0e6157af44060a46558cebe5a3 \
    --hash=sha256:d754e049006e81a9be49dc78ba7802081cee426e968cbc63ee19e164fa2d0e39 \
    --hash=sha256:d978cc1dd7ba44f5590d7de74f7a9c8be7262d9e469c2c0efb8bbfc2574321dc \
    --hash=sha256:da213822ec9082b62cadf3008e07a8c690ec7a3c89f6dc5e55a8cf07b56a1b26 \
    --hash=sha256:dd538c71766c59c732e2c5cedc39323c99c11897b99f93eac773438e54af206a \
    --hash=sha256:e0204f90677b7fb8d3a824279a71a01166bea9f6e53923b8056592d87b33b0b6 \
    --hash=sha256:e5871d4a7f788a9f64fb06f5793389d29d171e5c32d37c3ebfd520b017cc7694 \
    --hash=sha256:eb94e40b9a0db19636b5e3fed0a9803452ecc7381df13b385272abb779ee83ca \
    --hash=sha256:ec3cd4bb181a7b6329134204c2277c7144ab5f62cce9c5335d6f901ee7ce8d6a \
    --hash=sha256:f0c9865240e065a2247f4b5248528ae3d01e0e8ae071462c250c884dc16e3ee3
    # via
    #   sphinx-autobuild
    #   uvicorn
webdriver-manager==4.1.2 \
    --hash=sha256:230515ff4dc4c2feff1add25306ca262421b31016d77ded305e8dd921266445f \
    --hash=sha256:552bbb4e6f95e6e8b772565d2023e7c0ec5ff1736db0b186922d0466fc78c3de
    # via html2pdf4doc
webencodings==0.6.1 \
    --hash=sha256:565f9ad031c702dae404e27a099e3e09186a3ab1b9520f06d215502b651fd910 \
    --hash=sha256:7fab6269c8bf237c657876b52058ccb182e861518d1c695c1a9aaa8c1c105d5b
    # via html5lib
websocket-client==1.9.2 \
    --hash=sha256:0fcb57545848be86992e128218fd96dd87a6769ffdb1a968dff79632b85604d0 \
    --hash=sha256:e1a673830a9c7bfa47b1cd3d5e4178f4c9651d80a4eab02c9c23a1c3ec6250ce
    # via selenium
websockets==17.1 \
    --hash=sha256:0014eaff8ad5b3b43feda2279f9d34bf2eaae040720b9fbbb55944b10f40b14d \
    --hash=sha256:00679b7468b4c2b12b0757118174e8eabac56bb2f579a928a104d9554a56e098 \
    --hash=sha256:00bf34b64501e3477e81fc281532ff3cbf4da26633c10b63979d5085d46602d3 \
    --hash=sha256:01dcb47deebc40b38fd4a493b9b9f4d0a704b7bec6f35e4d34085b329abce71a \
    --hash=sha256:020e271205f8ab3406d7a59cd00de6dec722315924411c421bd00642f18bad86 \
    --hash=sha256:0340bbef6bfbe16da888b3983d666a4db4954ac3253c38f13bc7aba0c7db5a2f \
    --hash=sha256:054c28db2dcec0e857e3b705d8c28012613e555b38c765d6a4f75340a4fc06a0 \
    --hash=sha256:073c5c3f7e127041fa9d34a9e29ceefee8c3cafbd267ed2927318f425144380d \
    --hash=sha256:07fa3e7c30e2c577928d359b56bf872a3e0cbcc15553eaa0907c1ee86344b56f \
    --hash=sha256:0c84bdef916556cbe1d5a43b423398be4dd3cba6522b463e53d848578b920695 \
    --hash=sha256:0c863507ada5805517ca6dff1c524dcd42942efe6304dacf06700878398d21a6 \
    --hash=sha256:0c9982938980e086da59f70d05f9418cd143401a601a0faac10fa48f7bb1cd3e \
    --hash=sha256:0de501b7f2db11e83739ac20e2d33d46da4604b829f506c24be80e7def069391 \
    --hash=sha256:0f4f50dfe2cc810fc4e2de979b35e83bf8bb4bccdc6fe472d93762ea7b1d5927 \
    --hash=sha256:1036189bd34b0bc1b10a4679321e2c7968af317efe6e8e4c1c5141c4254fb5bb \
    --hash=sha256:10ecb38ffc05e1841b619d99c725307a223ef9ad58e7b1ed33311d472dc43918 \
    --hash=sha256:12c8e2b25df59755954a04dfa09c990b96691025aaf7eafd19ed6da24b09c18d \
    --hash=sha256:12fe8984a32dbfd084e0603f1a8d740c0180cb85b3174585c54a80d2455a8394 \
    --hash=sha256:17aa424ab61620aad21b36b2240efc87b500cc496e7d0e999a5c2ae99395e886 \
    --hash=sha256:1a20136d61f9ca3a31493732762661fafc2c20e8861930214e21afc6a8a692a2 \
    --hash=sha256:1a5cf4e7bbe3ca499e6a289206cb4fcb7444b09919e129bd517f57d5fa192c13 \
    --hash=sha256:1c7ac77401227212dc6e849182feee50d57cf456ec6329ffd6979c94bb136c5c \
    --hash=sha256:1fce0f43e0d41422e0b2cad6561e1970df22f212f4c7e884967df7cf591b031c \
    --hash=sha256:259f45358c76d3b18489e3e80636cdbe807e05ecf1b10fdf1a779106d23d0c8e \
    --hash=sha256:2786cbd273ab69c22612db8a41229ddf2c158060b17b5928884bf388d07887f3 \
    --hash=sha256:29176d8b429cfa0fa443c473878d37a5c06cfd0cb36b71ba4314accc71e05906 \
    --hash=sha256:2a0162a6372110a5601cb5c9fd826635cedf69f3e110c545dd19774e040b970e \
    --hash=sha256:2a4dc6ef83f4559e0d05f313a375cb38f63c986096a9da99fe94fdd779d313e5 \
    --hash=sha256:2afb58c7ba48b329d56769f8dfd89f394efe587b65ef806bae810a484d6d3608 \
    --hash=sha256:2cce251f3e2469b99b6802b55435bcdd07123b41870f54c87b336183af9d7e68 \
    --hash=sha256:2d72879819f5145a342d0030c418702496c65a4b913ef81f5ae944dd91dd50f6 \
    --hash=sha256:32a2a68d989d6e5b74a9d5095415c51189ebae29fceb7cf2b64a1c0318a81256 \
    --hash=sha256:33e45c7ea38428e740a7f233555d71df0b875cef7fc080acebc9654475e35335 \
    --hash=sha256:34879e19bb0a3c44f9317679435aea5327fac993933a704cbf353bf1234b10c7 \
    --hash=sha256:3546ef55b3a074494106508bc6505c73825970d2d9505f7bf53882b3e88b0d1e \
    --hash=sha256:3709a1ab30b4b922027d22f68d2b61a0656a91680ac894a537624e6be7dd7f7c \
    --hash=sha256:4031152769179ab8dcdeafc7b0e58052a49117560a28671700b47b2c7b717aad \
    --hash=sha256:406b8107943a43ef4649b1e0cb0cdc052bbf08fe1c8905a623c4af9586e5cebb \
    --hash=sha256:416b4bc8789a1865a3ff643ec4ee073a5f52402d0dbeafd27b1798d5dd6b6a51 \
    --hash=sha256:43bd0c1ceb924d67f5c1a5254d8361dd9d94246e6331a726064dfa2917880780 \
    --hash=sha256:455ffeea0879d313205df1e745e5883e1feb7f31ecd26be882f5f0babd3db04f \
    --hash=sha256:469355ab1af100b9380f1afb09985019f4a4b94fa1dd0e9396db4361626d7ab8 \
    --hash=sha256:46c0331c9eaaf73a559f3a9e388466be0df96eb83d40f06f1ca6ab6613b35c82 \
    --hash=sha256:46e7a10bf04318c7b0c0273791925ae5e1cbe4a11e34aa934d2ef27862058a80 \
    --hash=sha256:47a62d6045c6eaa0d8f97bc2fb68b8cf90077a0cbfd4e83d6f2d2145611ee134 \
    --hash=sha256:4af784f3e436f65b355c117c6497320f2b5cf6a559295cb1c4c7338e335d45cc \
    --hash=sha256:4e8ffcb486c8490a34a4cef5e4409d8da5a1cb1681e5bf7d786ce5e84aa8540d \
    --hash=sha256:50903d335bfda026c2fa11dd9aed09d8cbee0c451e3a85122a9acb041b7dc69b \
    --hash=sha256:57b39dc8541cf7ed3f639da82bf7451060483967f9e733da1f8173e4095f0642 \
    --hash=sha256:581fa678ef46f4277cc8491312468e582f8ad609dbab907ba6096a08c6a0ff98 \
    --hash=sha256:5a74531ce81af587f906ab42f194032388fcff8fc7938402e5917c9147a39441 \
    --hash=sha256:5aefe78e6a3077fe22b5e64b04666a85a3eb8b934d40e8595a693adcbceb6f11 \
    --hash=sha256:5c27336b1a0ac56569493e858497870347854372395f50483725f8cdacc5a45c \
    --hash=sha256:5d4724255fb8398acd9e583b97eb2279cec20e0bd0f9a94bf75f6056ef9f13da \
    --hash=sha256:5f051f8030a51815dc00e24bd2e5f1435af095c1cc111d747ac6e2a3620d7641 \
    --hash=sha256:615746b12b26a3fd4077bc6fbeb277a1c192a45dd57b531d07ad9ed5c52a9a7a \
    --hash=sha256:617243e19a0992095956f406ee9cd3bc4ba92862d83cb1d83bb59ce574412bec \
    --hash=sha256:655a8e28010f09fd6fa317e857afab3af7647f33e41dee88fa421e92086d1090 \
    --hash=sha256:65be6bda2b537fefa4b3a5ccd6ab386533ce39dd8fe62433ec90901fdc81752d \
    --hash=sha256:67258b00302a5aaf0b267771c7014b13429abd7ea17eebc4c55bd935ff101555 \
    --hash=sha256:677014a073bcb1fbaa7e21144786864f16c08f856d66834f611eceb9006cbab8 \
    --hash=sha256:6a8e768a048c2220697477ce2e67e4345dc9f693d0ee6af53945b5e30227c6a7 \
    --hash=sha256:6da17fc94bd270f5987b10bee113461ac36a36a98b0481ddcc98056e5a90001a \
    --hash=sha256:6de9acef07e3a78e9567fcd26c29011a4da8f050b13004bbf880a0fd82a6eea5 \
    --hash=sha256:6e63c01803be425ff062b7f7fc201a74def1d49fc94a2410dd17375df75936e9 \
    --hash=sha256:6f42912fa9eb4cb7c7ec9fde9b3332ba339eb8a8811981043d4029599f3d950b \
    --hash=sha256:722ec21717eec6477bce582147a28acdfe034e604239466a6a95daedb863e774 \
    --hash=sha256:764cf7bfa149365f32b7a0fd9fed32debdac29dd06295d5635cde1745b446cd8 \
    --hash=sha256:76dd004f59115087c7b700474cb18f01325e37250032e19396c08ae41448e4b3 \
    --hash=sha256:77b37cceca17291897c3c73bd30a7c7c7909593554b5da574ec852af83c1742a \
    --hash=sha256:7a72efa3bf4fa3a6669a54420a472ad056da3973d827f10e3a536da463f926c2 \
    --hash=sha256:7e724f843fa6a0614aece65a7c73e51d0f4412ca41dccac13c3caf98e69536bb \
    --hash=sha256:8196d217eeca52b9235ee1f8a684a09885a5f953d5a31e80ef915bf2c5c94f9d \
    --hash=sha256:829dba1bc049779de9b332088c1a6a9858e96bd67e50b6b644a95e02b67836bc \
    --hash=sha256:84f25e099fdfe3b09f953d84698f729a1f7d1e99101b2787d7a28ed77b323750 \
    --hash=sha256:87f0d5e77548b0c40c8464cdb6108792e7e53f487c6400028a4ec28a8afbe5ab \
    --hash=sha256:880069d21cc33a558dcf180924a546d1ecf8ada5be3e4e70acee87019d706a24 \
    --hash=sha256:882af300d2c6a092b93767d5de03c7bb56dfb06314140c8e872d3f48e09f7b74 \
    --hash=sha256:88381602e379165b66244b2ebc29f9b23ea0851fbe63ae157f91ca324f072d6f \
    --hash=sha256:88b882764ef65147a7a5ae13168dedbe225a04e2ff4858fe543f2c402f093e9c \
    --hash=sha256:88bc5138e53903a85c354e59df7ba73ce306f7b09724cef74dba121e60a88ce2 \
    --hash=sha256:8d1b108bd8f5f6a8b90801f6db3b3858d5deca889acfdb8ac497bbb24e4b0edf \
    --hash=sha256:8f6c38cdcaf98a911d7acc25577f2f9e710f3a2fc2bde1563556784320196b51 \
    --hash=sha256:8fbf28e639544503b7d1c96452a5e5e043e4108d89b1f3fa02910603622d19db \
    --hash=sha256:96abdecbaae746851b87c3a36cb4a661df93ca3d92f114270f79228bf1d00de6 \
    --hash=sha256:98a5b2589a56a4b4f098b0a958099a4356ab904a7844f1da3841efca469af7e9 \
    --hash=sha256:9ae55d24241fc055f22aea3ac924559069848bd0ad4ea065fdd72d2194685fe8 \
    --hash=sha256:9f4a08ff7cb68c27b18e09223cc6304e01d0f82d5a240d251266dfd2e6e44729 \
    --hash=sha256:9f4c0377a83e163a303514fdfab501dbe379bdc13e5b9312a91d112658b29dce \
    --hash=sha256:9fa1ffa08c81a4f809cdab6129f8e55bee4650b9d6d3461019dda73aacd146b6 \
    --hash=sha256:a06f3b5085176763182449559e20391d7ce616a8972a9f7a33deda87ea6d4f3c \
    --hash=sha256:a62d8c424383c9dc769ff3672018df822603117e32686e567d452ed035b6fb2e \
    --hash=sha256:a7b35181a14cbfcae163b4de545d22abfd07d06c2c41ca69cfcd99251d6888ab \
    --hash=sha256:a9fe648abd1d9b89aebfa30407bfdd08a0271ec5dc7d44a4c6ccd1ce22cf562a \
    --hash=sha256:acfea4c20bf54384883ea33b1240fc1db4f52e190823a4e2b334bc3e8bfca96a \
    --hash=sha256:ad68c28a27246fed109a4409393d677b7e1388345cbbd2f5aee5c182d8506110 \
    --hash=sha256:aec00f018d34c67500ff0438dc314b40277be4a1b983cbacbf53ccf7db63e257 \
    --hash=sha256:b1bc819c6db90e8f91a38250a1ab4c058261871aa52d2fe36382eddedf146dee \
    --hash=sha256:b1c323fc3be1dc3f87f6c59458cb7d9e13dcbbf971d6c3f3e2bbaf58d3bfcdfe \
    --hash=sha256:b3b451fd2723ad3191a209afe6f3f4bc86c83e9a85bdc255353b91803ee6aa66 \
    --hash=sha256:b65d5fe48219dc2d5e158de9e6514e75600f379cc7e37108d35f31764c155566 \
    --hash=sha256:bb0efe019480a1c93e168ce96479273aaebd672fc8c350d5eed1e507ababb1b8 \
    --hash=sha256:be3f0129c5654517b2abf07dcb75bb1d9479759a4ccfb569e8293579e9fc029a \
    --hash=sha256:c3241d684a76eaaef8b2dc789afde4343cd3aad55ea81e4e8ab3605b529bae51 \
    --hash=sha256:c65da239a5ad553619804c1f9d65c1a0b3005381c6158ee14da2c7444cbd0c78 \
    --hash=sha256:c89406fa3dcd4aa8662c6406cc5c0de1790e9614d2c3aaf03ca53a8a8ccf3405 \
    --hash=sha256:ccbf3f4a9890d50b3a08ee04029fde30a03bfdeffaa19977628bf17251764e60 \
    --hash=sha256:ce0305b702b20d1e1d60a9aaace6bc89970e1753565543f310d549eab22c2435 \
    --hash=sha256:ce13c7d233239e739600a57d4a73c1192ad8259e655a4d55aa1a454242bc809d \
    --hash=sha256:cec1bb8f22abccc8d20f8ca63df9be41600c26c190f4b97ee86c675fd4a863a6 \
    --hash=sha256:d1e2f5fa2b6d01f0d85b4f223fea7ed1d504be282a02a81bd2be4817ef7a2f03 \
    --hash=sha256:d334d11398086bb5559606cb42d51c013ea7c061c7db701521392373d3c087f5 \
    --hash=sha256:d411ea5ca18ac1b12c0c94be88b60c18ca641ac43bcdfdf1c9f79d46cdbe1603 \
    --hash=sha256:d41ef69d5416fbc1d98cf96c37be6192d10fd101c3e0f8b3ddc36e09432b3c08 \
    --hash=sha256:d58159af7835fde09c462394293c0d7aaf8fb4557d8f8e5699f5e722ccae013d \
    --hash=sha256:d7b349265fad6244013eecd99df8d83c12bf3013943e431f4fadd5bffc37db42 \
    --hash=sha256:d8e83333385cac6030a5167fd18bf96cc6c58b914c308e683f05b0cf94bc8dd0 \
    --hash=sha256:d9d01e8ede41fea4f5a847dad9d628355f74905f437a5b6856d67aa66d193800 \
    --hash=sha256:d9fc873e239c5abeb150bc24dbd1a7af23a9254526383ce0a077f5e20adbeb19 \
    --hash=sha256:db9d7ee47f3ba531e278be539af39e2c7c7d28fb94897b6cd1120d63b0ef5922 \
    --hash=sha256:dc053f9e95a76213c5eb7ed95779f7daf0d2bf0e4e03073629ebfa43a033f151 \
    --hash=sha256:dc2b79afc074d2f3e64b26539350f697fe1b85ea1c49ea24eb588f247b053ce1 \
    --hash=sha256:dc5789e5ea182b77a38881383ada5347202a6c66f4857d054e075290e80b604b \
    --hash=sha256:dcb8d5f7edef7a399d322cf28d4c4e6f98dab64d301c8f50581a1080e5198142 \
    --hash=sha256:e4bd7eacb87d8cf3ed70d6392c770a0d92441f05d7d2a3efafb5bc171d5e3067 \
    --hash=sha256:e552e0037230ac16e5f568de7012041344d1b18c9feed30ec2891b8eba55af81 \
    --hash=sha256:e5f5c7a893507d0e83a80b88aefd6522f7e882cd53f9722c6f23f5a020c9557c \
    --hash=sha256:e74e41f0ad12ff1e8983e349daef79d37cc8280c743ce9d134d6c74c18dab5d6 \
    --hash=sha256:e78fd4b7b2c5086a38671c9c882c1e643385eccea360b5b1fda4a105e590087e \
    --hash=sha256:e8dc3fa6d6b7ead3f9de57895f41b116a28787548e066365d9d90f7356bcaad2 \
    --hash=sha256:ea0ed9373b880115911d9d39634bccc95b8ce590c9c42e8589f5cacc3ef3cee2 \
    --hash=sha256:edadce7a22052056fd4384543019856b34850363c9d387929f677ae01d79709c \
    --hash=sha256:eec113a5b41d124ef42ff56b0d74a6da3fd986400038eab9e58ee42a4024e837 \
    --hash=sha256:f221081107b8c48184d99f7019604486376e7ef826037e70aad6b02540732c23 \
    --hash=sha256:f3a1d577e081667dda7f8e5b4796e6e32f9713c93e2a3d930669519840a3c623 \
    --hash=sha256:f47aafd92aa28b941180e6da8a42b0f711851b14b81a5b6bb28dbbb1fa35152c \
    --hash=sha256:f4c45ee2512d3757b5e6c67c5a34e435143f2ecb7df3324f9fd888688c45c0f4 \
    --hash=sha256:f58f58b4b29bbea2a3635e2c56eff4a3adab011fe383802a9e542e31b97085fc \
    --hash=sha256:f612dc57f00c07cf4aa2673f7cbceabd654ad2457b7e639f061b794d6e11f9fd \
    --hash=sha256:f62114a54117e4948a1e414e89521f7fe1e3c2f83f2a571a06a4fc6718b0900a \
    --hash=sha256:f64e001bb7fa89b9f32cfa600bf8e9ac8ca26759d9b92ae01453ee303d9cd7b4 \
    --hash=sha256:f7233eaf441a345a5943a929fd4b5ea3278f11aed35a9ed0f3106b8cb3ca846a \
    --hash=sha256:f78a3ffb1994304db2c0c4588e4d1a518079b557054fa3bb985a6f5e50ff49a3 \
    --hash=sha256:f8e822efd54137d8cc8310eb64635ab827a4a6c72ff08691f38aa624776d8ecb \
    --hash=sha256:f98bf378d7a5be047a044a1a27c987a8f355e10e3b5754617dbe756248cbc5ce \
    --hash=sha256:fb88076df585b69c5761c387c0081aa87d7b9eb1b205a6535ca4777e25650d81 \
    --hash=sha256:fd8f47dbf2e8adb15c847215f83436de3fdb120b51fdae0fbbdf69fd97a3ad80 \
    --hash=sha256:ff3e2ba7a9f0a110b0555452e9b5a03a34e11662544e01beea15f144b48ba7b7
    # via
    #   sphinx-autobuild
    #   strictdoc
    #   uvicorn
wheel==0.48.0 \
    --hash=sha256:3217dcc807155e45db462d7ef2431f5ddda0d7273b700d05a67b271ceb1287ab \
    --hash=sha256:94800765601e9171bf5d58d066e640662842bcedcbab982b2c90787a2c987322
    # via sphinx-togglebutton
wsproto==1.3.2 \
    --hash=sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584 \
    --hash=sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294
    # via trio-websocket
xlrd==2.0.2 \
    --hash=sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9 \
    --hash=sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9
    # via strictdoc
xlsxwriter==3.2.9 \
    --hash=sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c \
    --hash=sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3
    # via strictdoc
xmlschema==4.3.2 \
    --hash=sha256:cf5c970a30f6ebcb3da35260e694704cc0b6794d8ace46125bb2a95e38ed9307 \
    --hash=sha256:f3b33a21a2b2cdc404ddc3fb599d8bc1dee90b155d547370672e6e684746b8d6
    # via reqif
xmltodict==1.0.4 \
    --hash=sha256:6d94c9f834dd9e44514162799d344d815a3a4faec913717a9ecbfa5be1bb8e61 \
    --hash=sha256:a4a00d300b0e1c59fc2bfccb53d7b2e88c32f200df138a0dd2229f842497026a
    # via spdx-tools

---

### Doc Substitutions (`doc/substitutions.txt`)

.. |br|     raw:: html        .. force a line break in HTML output (blank lines needed here)

   <br />

.. |p|     raw:: html        .. force a blank line in HTML output (blank lines needed here)

   <p></p>

---

### Doc  Doxygen Mainpage (`doc/_doxygen/mainpage.md`)

# Zephyr API Reference

This is the reference documentation for the [Zephyr RTOS](https://zephyrproject.org) C API: all the
functions, macros, and data structures available to Zephyr applications and subsystems, generated
directly from the source code.

## Browse the API by topic

The API is organized as a hierarchy of [**Topics**](topics.html) covering the main areas of the OS.
Start with one of the main categories below, or browse the [full topic list](topics.html).

<div class="topic-cards">
  <a class="topic-card" href="group__kernel__apis.html">
    <span class="topic-card-title">Kernel</span>
    <span class="topic-card-desc">
      Threads, scheduling, synchronization, timers, and other core RTOS primitives.
    </span>
  </a>
  <a class="topic-card" href="group__io__interfaces.html">
    <span class="topic-card-title">Device Drivers</span>
    <span class="topic-card-desc">
      Hardware-agnostic interfaces for peripherals: GPIO, I2C, SPI, sensors, and more.
    </span>
  </a>
  <a class="topic-card" href="group__os__services.html">
    <span class="topic-card-title">Operating System Services</span>
    <span class="topic-card-desc">
      Networking, Bluetooth, storage, logging, and other services built on the kernel.
    </span>
  </a>
  <a class="topic-card" href="group__devicetree.html">
    <span class="topic-card-title">Devicetree</span>
    <span class="topic-card-desc">
      Macros for reading the hardware description of the system at build time.
    </span>
  </a>
  <a class="topic-card" href="group__device__model.html">
    <span class="topic-card-title">Device Model</span>
    <span class="topic-card-desc">
      The abstraction that binds drivers to the hardware instances they manage.
    </span>
  </a>
  <a class="topic-card" href="group__mem__mgmt.html">
    <span class="topic-card-title">Memory Management</span>
    <span class="topic-card-desc">Heaps, memory slabs, and memory-mapping interfaces.</span>
  </a>
  <a class="topic-card" href="group__utilities.html">
    <span class="topic-card-title">Utilities</span>
    <span class="topic-card-desc">General-purpose helpers, including the data structure APIs.</span>
  </a>
  <a class="topic-card" href="group__testing.html">
    <span class="topic-card-title">Testing</span>
    <span class="topic-card-desc">The Ztest framework and related testing helpers.</span>
  </a>
</div>

## Other ways to explore

- [Data Structures](annotated.html): an index of all documented `struct`s and `union`s.
- [Files](files.html): browse the API header by header.
- [Deprecated List](deprecated.html): APIs scheduled for removal, and what to use instead.
- Use the search box to find any documented symbol by name.

## Looking for something else?

This site only covers the C API. For guides, samples, supported boards, and everything else, head
over to the main [Zephyr Project documentation](https://docs.zephyrproject.org/latest/).

---

### Doc  Doxygen Toplevel Groups (`doc/_doxygen/toplevel_groups.txt`)

# SPDX-FileCopyrightText: The Zephyr Project Contributors
# SPDX-License-Identifier: Apache-2.0

# Groups allowed at the top level of the API documentation index.
#
# A Doxygen group ends up here when no other group pulls it in with @ingroup or
# @addtogroup. These are the coarse categories of the API index, so the list is
# meant to stay short: nest a new group under an existing category instead of
# adding a line below. Enforced by scripts/ci/doxygen_toplevel_groups.py.
#
# Blank lines are ignored and '#' starts a comment.

# zephyr-keep-sorted-start
device_model
devicetree
internal_api
io_interfaces
kernel_apis
mem_mgmt
os_services
system_errno
testing
third_party
toolchain
utilities
# zephyr-keep-sorted-stop

# Doxygen's EXCLUDE_SYMBOLS drops leading-underscore names, so these three never
# appear on the homepage but they are still top level in the Doxygen XML. list
# them here to avoid having to maintain duplicated logic in
# `doxygen_toplevel_groups` for groups that are going to be deleted soon anyway
# as they are for the deprecated legacy USB device stack.
_usb_device_core_api
_usb_device_controller_api
_usbc_device_api

---

### Doc Build Index (`doc/build/index.rst`)

.. _build_overview:

Build and Configuration Systems
###############################


.. toctree::
   :maxdepth: 1


   cmake/index.rst
   cmake-ref/index.rst
   dts/index
   kconfig/index.rst
   snippets/index.rst
   zephyr_cmake_package.rst
   sysbuild/index.rst
   version/index.rst
   flashing/index.rst
   signing/index.rst

---

### Doc Build Zephyr Cmake Package (`doc/build/zephyr_cmake_package.rst`)

.. _cmake_pkg:

Zephyr CMake Package
####################

The Zephyr `CMake package`_ is a convenient way to create a Zephyr-based application.

.. note::
   The :ref:`zephyr-app-types` section introduces the application types
   used in this page.

The Zephyr CMake package ensures that CMake can automatically select a Zephyr installation to use for building
the application, whether it is a :ref:`Zephyr repository application <zephyr-repo-app>`,
a :ref:`Zephyr workspace application <zephyr-workspace-app>`, or a
:ref:`Zephyr freestanding application <zephyr-freestanding-app>`.

When developing a Zephyr-based application, then a developer simply needs to write
``find_package(Zephyr)`` in the beginning of the application :file:`CMakeLists.txt` file.

To use the Zephyr CMake package it must first be exported to the `CMake user package registry`_.
This means creating a reference to the current Zephyr installation inside the
CMake user package registry.


.. tabs::

   .. group-tab:: Ubuntu

      In Linux, the CMake user package registry is found in:

      ``~/.cmake/packages/Zephyr``

   .. group-tab:: macOS

      In macOS, the CMake user package registry is found in:

      ``~/.cmake/packages/Zephyr``

   .. group-tab:: Windows

      In Windows, the CMake user package registry is found in:

      ``HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\Zephyr``


The Zephyr CMake package allows CMake to automatically find a Zephyr base.
One or more Zephyr installations must be exported.
Exporting multiple Zephyr installations may be useful when developing or testing
Zephyr freestanding applications, Zephyr workspace application with vendor forks, etc..


Zephyr CMake package export (west)
**********************************

When installing Zephyr using :ref:`west <get_the_code>` then it is recommended
to export Zephyr using ``west zephyr-export``.

.. _zephyr_cmake_package_export:

Zephyr CMake package export (without west)
******************************************

Zephyr CMake package is exported to the CMake user package registry using the following commands:

.. code-block:: bash

   cmake -P <PATH-TO-ZEPHYR>/share/zephyr-package/cmake/zephyr_export.cmake

This will export the current Zephyr to the CMake user package registry.

.. _zephyr_cmake_package_zephyr_base:

Zephyr Base Environment Setting
*******************************

The Zephyr CMake package search functionality allows for explicitly specifying
a Zephyr base using an environment variable.

To do this, use the following ``find_package()`` syntax:

.. code-block:: cmake

   find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})

This syntax instructs CMake to first search for Zephyr using the Zephyr base environment setting
:envvar:`ZEPHYR_BASE` and then use the normal search paths.

.. _zephyr_cmake_search_order:

Zephyr CMake Package Search Order
*********************************

When Zephyr base environment setting is not used for searching, the Zephyr installation matching
the following criteria will be used:

* A Zephyr repository application will use the Zephyr in which it is located.
  For example:

  .. code-block:: none

        <projects>/zephyr-workspace/zephyr
        └── samples
            └── hello_world

  in this example, ``hello_world`` will use ``<projects>/zephyr-workspace/zephyr``.


* Zephyr workspace application will use the Zephyr that share the same workspace.
  For example:

  .. code-block:: none

     <projects>/zephyr-workspace
     ├── zephyr
     ├── ...
     └── my_applications
          └── my_first_app

  in this example, ``my_first_app`` will use ``<projects>/zephyr-workspace/zephyr`` as this Zephyr
  is located in the same workspace as the Zephyr workspace application.

.. note::
   The root of a Zephyr workspace is identical to ``west topdir`` if the workspace was
   installed using ``west``

* Zephyr freestanding application will use the Zephyr registered in the CMake user package registry.
  For example:

  .. code-block:: none

     <projects>/zephyr-workspace-1
     └── zephyr                       (Not exported to CMake)

     <projects>/zephyr-workspace-2
     └── zephyr                       (Exported to CMake)

     <home>/app
     ├── CMakeLists.txt
     ├── prj.conf
     └── src
         └── main.c

  in this example, only ``<projects>/zephyr-workspace-2/zephyr`` is exported to the CMake package
  registry and therefore this Zephyr will be used by the Zephyr freestanding application
  ``<home>/app``.

  If user wants to test the application with ``<projects>/zephyr-workspace-1/zephyr``, this can be
  done by using the Zephyr Base environment setting, meaning set
  ``ZEPHYR_BASE=<projects>/zephyr-workspace-1/zephyr``, before
  running CMake.

  .. note::

     The Zephyr package selected on the first CMake invocation will be used for all subsequent
     builds. To change the Zephyr package, for example to test the application using Zephyr base
     environment setting, then it is necessary to do a pristine build first
     (See :ref:`application_rebuild`).

Zephyr CMake Package Version
****************************

When writing an application then it is possible to specify a Zephyr version number ``x.y.z`` that
must be used in order to build the application.

Specifying a version is especially useful for a Zephyr freestanding application as it ensures the
application is built with a minimal Zephyr version.

It also helps CMake to select the correct Zephyr to use for building, when there are multiple
Zephyr installations in the system.

For example:

  .. code-block:: cmake

     find_package(Zephyr 2.2.0)
     project(app)

will require ``app`` to be built with Zephyr 2.2.0 as minimum.
CMake will search all exported candidates to find a Zephyr installation which matches this version
criteria.

Thus it is possible to have multiple Zephyr installations and have CMake automatically select
between them based on the version number provided, see `CMake package version`_ for details.

For example:

.. code-block:: none

   <projects>/zephyr-workspace-2.a
   └── zephyr                       (Exported to CMake)

   <projects>/zephyr-workspace-2.b
   └── zephyr                       (Exported to CMake)

   <home>/app
   ├── CMakeLists.txt
   ├── prj.conf
   └── src
       └── main.c

in this case, there are two released versions of Zephyr installed at their own workspaces.
Workspace 2.a and 2.b, corresponding to the Zephyr version.

To ensure ``app`` is built with minimum version ``2.a`` the following ``find_package``
syntax may be used:

.. code-block:: cmake

   find_package(Zephyr 2.a)
   project(app)


Note that both ``2.a`` and ``2.b`` fulfill this requirement.

CMake also supports the keyword ``EXACT``, to ensure an exact version is used, if that is required.
In this case, the application CMakeLists.txt could be written as:

.. code-block:: cmake

   find_package(Zephyr 2.a EXACT)
   project(app)

In case no Zephyr is found which satisfies the version required, as example, the application specifies

.. code-block:: cmake

   find_package(Zephyr 2.z)
   project(app)

then an error similar to below will be printed:

.. code-block:: none

   Could not find a configuration file for package "Zephyr" that is compatible
   with requested version "2.z".

   The following configuration files were considered but not accepted:

     <projects>/zephyr-workspace-2.a/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake, version: 2.a.0
     <projects>/zephyr-workspace-2.b/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake, version: 2.b.0


.. note:: It can also be beneficial to specify a version number for Zephyr repository applications
          and Zephyr workspace applications. Specifying a version in those cases ensures the
	  application will only build if the Zephyr repository or workspace is matching.
	  This can be useful to avoid accidental builds when only part of a workspace has been
	  updated.


Multiple Zephyr Installations (Zephyr workspace)
************************************************

Testing out a new Zephyr version, while at the same time keeping the existing Zephyr in the
workspace untouched is sometimes beneficial.

Or having both an upstream Zephyr, Vendor specific, and a custom Zephyr in same workspace.

For example:

.. code-block:: none

   <projects>/zephyr-workspace
   ├── zephyr
   ├── zephyr-vendor
   ├── zephyr-custom
   ├── ...
   └── my_applications
        └── my_first_app


in this setup, ``find_package(Zephyr)`` has the following order of precedence for selecting
which Zephyr to use:

* Project name: ``zephyr``
* First project, when Zephyr projects are ordered lexicographical, in this case.

  * ``zephyr-custom``
  * ``zephyr-vendor``

This means that ``my_first_app`` will use ``<projects>/zephyr-workspace/zephyr``.

It is possible to specify a Zephyr preference list in the application.

A Zephyr preference list can be specified as:

.. code-block:: cmake

   set(ZEPHYR_PREFER "zephyr-custom" "zephyr-vendor")
   find_package(Zephyr)

   project(my_first_app)


the ``ZEPHYR_PREFER`` is a list, allowing for multiple Zephyrs.
If a Zephyr is specified in the list, but not found in the system, it is simply ignored and
``find_package(Zephyr)`` will continue to the next candidate.


This allows for temporary creation of a new Zephyr release to be tested, without touching current
Zephyr. When testing is done, the ``zephyr-test`` folder can simply be removed.
Such a CMakeLists.txt could look as:

.. code-block:: cmake

   set(ZEPHYR_PREFER "zephyr-test")
   find_package(Zephyr)

   project(my_first_app)

.. _cmake_build_config_package:

Zephyr Build Configuration CMake packages
*****************************************

There are two Zephyr Build configuration packages which provide control over the build
settings in Zephyr in a more generic way. These packages are:

* **ZephyrBuildConfiguration**: Applies to all Zephyr applications in the workspace
* **ZephyrAppConfiguration**: Applies only to the application you are currently building

They are similar to the per-user :file:`.zephyrrc` file that can be used to set :ref:`env_vars`,
but they set CMake variables instead. They also allow you to automatically share the build
configuration among all users through the project repository. They also allow more advanced use
cases, such as loading of additional CMake boilerplate code.

The Zephyr Build Configuration CMake packages will be loaded in the Zephyr boilerplate code after
initial properties and ``ZEPHYR_BASE`` has been defined, but before CMake code execution. The
ZephyrBuildConfiguration is included first and ZephyrAppConfiguration afterwards. That means the
application-specific package could override the workspace settings, if needed.
This allows the Zephyr Build Configuration CMake packages to setup or extend properties such as:
``DTS_ROOT``, ``BOARD_ROOT``, ``TOOLCHAIN_ROOT`` / other toolchain setup, fixed overlays, and any
other property that can be controlled. It also allows inclusion of additional boilerplate code.

To provide a ZephyrBuildConfiguration or ZephyrAppConfiguration, create
:file:`ZephyrBuildConfig.cmake` and/or :file:`ZephyrAppConfig.cmake` respectively and place them
in the appropriate location. The CMake ``find_package`` mechanism will search for these files with
the steps below. Other default CMake package search paths and hints are disabled and there is no
version checking implemented for these packages. This also means that these packages cannot be
installed in the CMake package registry. The search steps are:

1. If ``ZephyrBuildConfiguration_ROOT``, or ``ZephyrAppConfiguration_ROOT`` respectively, is set,
   search within this prefix path. If a matching file is found, execute this file. If no matching
   file is found, go to step 2.
2. Search within ``${ZEPHYR_BASE}/../*``, or ``${APPLICATION_SOURCE_DIR}`` respectively. If a
   matching file is found, execute this file. If no matching file is found, abort the search.

It is recommended to place the files in the default paths from step 2, but with the
``<PackageName>_ROOT`` variables you have the flexibility to place them anywhere. This is
especially necessary for freestanding applications, for which the default path to
ZephyrBuildConfiguration usually does not work. In this case the ``<PackageName>_ROOT`` variables
can be set on the CMake command line, **before** ``find_package(Zephyr ...)``, as environment
variable or from a CMake cache initialization file with the ``-C`` command line option.

.. note:: The ``<PackageName>_ROOT`` variables, as well as the default paths, are just the prefixes
   to the search path. These prefixes get combined with additional path suffixes, which together
   form the actual search path. Any combination that honors the
   `CMake package search procedure`_ is valid and will work.

If you want to completely disable the search for these packages, you can use the special CMake
``CMAKE_DISABLE_FIND_PACKAGE_<PackageName>`` variable for that. Just set
``CMAKE_DISABLE_FIND_PACKAGE_ZephyrBuildConfiguration`` or
``CMAKE_DISABLE_FIND_PACKAGE_ZephyrAppConfiguration`` to ``TRUE`` to disable the package.

An example folder structure could look like this:

.. code-block:: none

   <projects>/zephyr-workspace
   ├── zephyr
   ├── ...
   ├── manifest repo (can be named anything)
   │    └── cmake/ZephyrBuildConfig.cmake
   ├── ...
   └── zephyr application
        └── share/zephyrapp-package/cmake/ZephyrAppConfig.cmake

A sample :file:`ZephyrBuildConfig.cmake` can be seen below.

.. code-block:: cmake

   # ZephyrBuildConfig.cmake sample code

   # To ensure final path is absolute and does not contain ../.. in variable.
   get_filename_component(APPLICATION_PROJECT_DIR
                          ${CMAKE_CURRENT_LIST_DIR}/../../..
                          ABSOLUTE
   )

   # Add this project to list of board roots
   list(APPEND BOARD_ROOT ${APPLICATION_PROJECT_DIR})

   # Default to GNU Arm Embedded toolchain if no toolchain is set
   if(NOT ENV{ZEPHYR_TOOLCHAIN_VARIANT})
       set(ZEPHYR_TOOLCHAIN_VARIANT gnuarmemb)
       find_program(GNU_ARM_GCC arm-none-eabi-gcc)
       if(NOT ${GNU_ARM_GCC} STREQUAL GNU_ARM_GCC-NOTFOUND)
           # The toolchain root is located above the path to the compiler.
           get_filename_component(GNUARMEMB_TOOLCHAIN_PATH ${GNU_ARM_GCC}/../.. ABSOLUTE)
       endif()
   endif()

Zephyr CMake package source code
********************************

The Zephyr CMake package source code in
:zephyr_file:`share/zephyr-package/cmake` contains the CMake config
package which is used by the CMake ``find_package`` function.

It also contains code for exporting Zephyr as a CMake config package.

The following is an overview of the files in this directory:

:file:`ZephyrConfigVersion.cmake`
    The Zephyr package version file. This file is called by CMake to determine
    if this installation fulfils the requirements specified by user when calling
    ``find_package(Zephyr ...)``. It is also responsible for detection of Zephyr
    repository or workspace only installations.

:file:`ZephyrConfig.cmake`
    The Zephyr package file. This file is called by CMake to for the package
    meeting which fulfils the requirements specified by user when calling
    ``find_package(Zephyr ...)``. This file is responsible for sourcing of
    boilerplate code.

:file:`zephyr_package_search.cmake`
   Common file used for detection of Zephyr repository and workspace candidates.
   Used by ``ZephyrConfigVersion.cmake`` and ``ZephyrConfig.cmake`` for common code.

:file:`zephyr_export.cmake`
   See :ref:`zephyr_cmake_package_export`.

.. _CMake package: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html
.. _CMake user package registry: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#user-package-registry
.. _CMake package version: https://cmake.org/cmake/help/latest/command/find_package.html#version-selection
.. _CMake package search procedure: https://cmake.org/cmake/help/latest/command/find_package.html#search-procedure

---

### Doc Contribute Bin Blobs (`doc/contribute/bin_blobs.rst`)

.. _bin-blobs:

Binary Blobs
############

In the context of an operating system that supports multiple architectures and
many different IC families, some functionality may be unavailable without the
help of executable code distributed in binary form. Binary blobs (or blobs for
short) are files containing proprietary machine code or data in a binary format,
e.g. without corresponding source code released under an OSI approved license.

Zephyr supports downloading and using third-party binary blobs via its built-in
mechanisms, with some important caveats, described in the following sections. It
is important to note that all the information in this section applies only to
`upstream (vanilla) Zephyr <https://github.com/zephyrproject-rtos/zephyr>`_.

There are no limitations whatsoever (except perhaps license compatibility) in
the support for binary blobs in forks or third-party distributions of Zephyr. In
fact, Zephyr’s build system supports arbitrary use cases related to blobs. This
includes linking against libraries, flashing images to targets, etc. Users are
therefore free to create Zephyr-based downstream software which uses binary
blobs if they cannot meet the requirements described in this page.

Software license
****************

Most binary blobs are distributed under proprietary licenses which vary
significantly in nature and conditions. It is up to the vendor to specify the
license as part of the blob submission process. Blob vendors may impose a
click-through or other EULA-like workflow when users fetch and install blobs.

Hosting
*******

Blobs must be hosted on the Internet and managed by third-party infrastructure.
Two potential examples are Git repositories and web servers managed by
individual hardware vendors.

The Zephyr Project does not host binary blobs in its Git repositories or
anywhere else.

Fetching blobs
**************

Blobs are fetched from official third-party sources by the :ref:`west blobs
<west-blobs>` command.

The blobs themselves must be specified in the :ref:`module.yml
<modules-bin-blobs>` files included in separate Zephyr :ref:`module repositories
<modules>` maintained by their respective vendors. This means that in order to
include a reference to a binary blob to the upstream Zephyr distribution, a
module repository must exist first or be created as part of the submission
process.

Each blob which may be fetched must be individually identified in the
corresponding :file:`module.yml` file. A specification for a blob must contain:

- An abstract description of the blob itself
- Version information
- A reference to vendor-provided documentation
- The blob’s :ref:`type <bin-blobs-types>`, which must be one of the allowed types
- A checksum for the blob, which ``west blobs`` checks after downloading.
  This is required for reproducibility and to allow bisecting issues as blobs
  change using Git and west
- License text applicable to the blob or a reference to such text, in SPDX
  format

See the :ref:`corresponding section <modules-bin-blobs>` for a more formal
definition of the fields.

The :ref:`west blobs <west-blobs>` command can be used to list metadata of
available blobs and to fetch blobs from user-selected modules.

The ``west blobs`` command only fetches and stores the binary blobs themselves.
Any accompanying code, including interface header files for the blobs, must be
present in the corresponding module repository.

Tainting
********

Inclusion of binary blobs will taint the Zephyr build. The definition of
tainting originates in the `Linux kernel
<https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html>`_ and,
in the context of Zephyr, a tainted image will be one that includes binary blobs
in it.

Tainting will be communicated to the user in the following manners:

- One or more Kconfig options ``TAINT_BLOBS_*`` will be set to ``y``
- The Zephyr build system, during its configuration phase, will issue a warning.
  It will be possible to disable the warning using Kconfig
- The ``west spdx`` command will include the tainted status in its output
- The kernel's default fatal error handler will also explicitly print out the
  kernel's tainted status
- The boot banner prints the kernel's tainted status

.. _bin-blobs-types:

Allowed types
*************

The following binary blob types are acceptable in Zephyr:

* Precompiled libraries: Hardware enablement libraries, distributed in
  precompiled binary form, typically for SoC peripherals. An example could be an
  enablement library for a wireless peripheral
* Firmware images: An image containing the executable code for a secondary
  processor or CPU. This can be full or partial (typically delta or patch data)
  and is generally copied into RAM or flash memory by the main CPU. An example
  could be the firmware for the core running a Bluetooth LE Controller
* Miscellaneous binary data files. An example could be pre-trained neural
  network model data

Hardware agnostic features provided via a proprietary library are not
acceptable. For example, a proprietary and hardware agnostic TCP/IP stack
distributed as a static archive would be rejected.

Note that just because a blob has an acceptable type does not imply that it will
be unconditionally accepted by the project; any blob may be rejected for other
reasons on a case by case basis (see library-specific requirements below).
In case of disagreement, the TSC is the arbiter of whether a particular blob
fits in one of the above types.

Precompiled library-specific requirements
*****************************************

This section contains additional requirements specific to precompiled library
blobs.

Any person who wishes to submit a precompiled library must represent that it
meets these requirements. The project may remove a blob from the upstream
distribution if it is discovered that the blob fails to meet these requirements
later on.

Interface header files
======================

The precompiled library must be accompanied by one or more header files,
distributed under a non-copyleft OSI approved license, that define the interface
to the library.

Allowed dependencies
====================

This section defines requirements related to external symbols that a library
blob requires the build system to provide.

* The blob must not depend on Zephyr APIs directly. In other words, it must have
  been possible to build the binary without any Zephyr source code present at
  all. This is required for loose coupling and maintainability, since Zephyr
  APIs may change and such blobs cannot be modified by all project maintainers
* Instead, if the code in the precompiled library requires functionality
  provided by Zephyr (or an RTOS in general), an implementation of an OS
  abstraction layer (aka porting layer) can be provided alongside the library.
  The implementation of this OS abstraction layer must be in source code form,
  released under an OSI approved license and documented using Doxygen.

Toolchain requirements
======================

Precompiled library blobs must be in a data format which is compatible with and
can be linked by a toolchain supported by the Zephyr Project. This is required
for maintainability and usability. Use of such libraries may require special
compiler and/or linker flags, however. For example, a porting layer may require
special flags, or a static archive may require use of specific linker flags.

Limited scope
=============

Allowing arbitrary library blobs carries a risk of degrading the degree to
which the upstream Zephyr software distribution is open source. As an extreme
example, a target with a zephyr kernel clock driver that is just a porting layer
around a library blob would not be bootable with open source software.

To mitigate this risk, the scope of upstream library blobs is limited. The
project maintainers define an open source test suite that an upstream
target must be able to pass using only open source software included in the
mainline distribution and its modules. The open source test suite currently
consists of:

- :file:`samples/philosophers`
- :file:`tests/kernel`

The scope of this test suite may grow over time. The goal is to specify
tests for a minimal feature set which must be supported via open source software
for any target with upstream Zephyr support.

At the discretion of the release team, the project may remove support for a
hardware target if it cannot pass this test suite.

Support and maintenance
***********************

The Zephyr Project is not expected to be responsible for the maintenance and
support of contributed binary blobs. As a consequence, at the discretion of the
Zephyr Project release team, and on a case-by-case basis:

- GitHub issues reported on the zephyr repository tracker that require use of
  blobs to reproduce may not be treated as bugs
- Such issues may be closed as out of scope of the Zephyr project

This does not imply that issues which require blobs to reproduce will be closed
without investigation. For example, the issue may be exposing a bug in a Zephyr
code path that is difficult or impossible to trigger without a blob. Project
maintainers may accept and attempt to resolve such issues.

However, some flexibility is required because project maintainers may not be
able to determine if a given issue is due to a bug in Zephyr or the blob itself,
may be unable to reproduce the bug due to lack of hardware, etc.

Blobs must have designated maintainers that must be responsive to issue reports
from users and provide updates to the blobs to address issues. At the discretion
of the Zephyr Project release team, module revisions referencing blobs may be
removed from :file:`zephyr/west.yml` at any time due to lack of responsiveness or
support from their maintainers. This is required to maintain project control
over bit-rot, security issues, etc.

The submitter of the proposal to integrate a binary blob must commit to maintain
the integration of such blob for the foreseeable future.

Regarding Continuous Integration, binary blobs will **not** be fetched in the
project's CI infrastructure that builds and optionally executes tests and samples
to prevent regressions and issues from entering the codebase. This includes
both CI ran when a new GitHub Pull Request is opened as well as any other
regularly scheduled execution of the CI infrastructure.

.. _blobs-process:

Submission and review process
*****************************

For references to binary blobs to be included in the project, they shall be submitted
through the standard pull request (PR) workflow and do not require Technical
Steering Committee (TSC) approval. Maintainers and reviewers are responsible for
ensuring that all blob-related submissions conform to the documented criteria as
defined in :ref:`bin-blobs`.

The PR for initial integration with binary blobs shall include details about the blobs
and the functionality they provide. The PR shall have the following information to
support the review:

* Binary blob origin.
* Type of blob (precompiled library, firmware image).
* Zephyr module that the blob(s) will be referenced from.
* Brief description of what the blob(s) do.
* What other components do the blob(s) depend on, if any?
* License the blob(s) are distributed under.

If the initial integration PR receives the appropriate approvals the binary blob(s)
can be integrated. The standard :ref:`PR escalation procedures <pr_technical_escalation>`
shall apply for any technical disagreements.

Subsequent updates to binary blobs follow the :ref:`module update procedure <modules_changes>`.

---

### Doc Contribute Contributor Expectations (`doc/contribute/contributor_expectations.rst`)

.. _contributor-expectations:

Contributor Expectations
########################

The Zephyr project encourages :ref:`contributors <contributor>` to submit
changes as smaller pull requests. Smaller pull requests (PRs) have the following
benefits:

- Reviewed more quickly and reviewed more thoroughly. It's easier for reviewers
  to set aside a few minutes to review smaller changes several times than it is
  to allocate large blocks of time to review a large PR.

- Less wasted work if reviewers or maintainers reject the direction of the
  change.

- Easier to rebase and merge. Smaller PRs are less likely to conflict with other
  changes in the tree.

- Easier to revert if the PR breaks functionality.

.. note::
  This page does not apply to draft PRs which can have any size, any number of
  commits and any combination of smaller PRs for testing and preview purposes.
  Draft PRs have no review expectation and PRs created as drafts from the start
  do not notify anyone by default.


Defining Smaller PRs
********************

- Smaller PRs should encompass one self-contained logical change.

- When adding a new large feature or API, the PR should address only one part of
  the feature. In this case create an :ref:`RFC proposal <rfcs>` to describe the
  additional parts of the feature for reviewers.

- PRs should include tests or samples under the following conditions:

  - Adding new features or functionality.

  - Modifying a feature, especially for API behavior contract changes.

  - Fixing a hardware agnostic bug. The test should fail without the bug fixed
    and pass with the fix applied.

- PRs must update any documentation affected by a functional code change.

- If introducing a new API, the PR must include an example usage of the API.
  This provides context to the reviewer and prevents submitting PRs with unused
  APIs.


Multiple Commits on a Single PR
*******************************

Contributors are further encouraged to break up PRs into multiple commits.  Keep
in mind each commit in the PR must still build cleanly and pass all the CI
tests.

For example, when introducing an extension to an API, contributors can break up
the PR into multiple commits targeting these specific changes:

#. Introduce the new APIs, including shared devicetree bindings
#. Update driver implementation X, with driver specific devicetree bindings
#. Update driver implementation Y
#. Add tests for the new API
#. Add a sample using the API
#. Update the documentation

Large Changes
*************

Large changes to the Zephyr project must submit an :ref:`RFC proposal <rfcs>`
describing the full scope of change and future work.  The RFC proposal provides
the required context to reviewers, but allows for smaller, incremental, PRs to
get reviewed and merged into the project. The RFC should also define the minimum
viable implementation.

Changes which require an RFC proposal include:

- Submitting a new feature.
- Submitting a new API.
- :ref:`treewide-changes`.
- Other large changes that can benefit from the RFC proposal process.

Maintainers have the discretion to request that contributors create an RFC for
PRs that are too large or complicated.

.. _pr_requirements:

PR Requirements
***************

.. important::

   Pull requests that do not meet the quality expectations outlined below are less likely to receive
   reviewer engagement, and reviewers may request changes on such pull requests without detailed
   feedback.

   Contributors are expected to self-review their changes and ensure all requirements are met before
   requesting a review.

- Each commit in the PR must provide a commit message following the
  :ref:`commit-guidelines`.

- No fixup or merge commits are allowed, see :ref:`Contribution workflow` for
  more information.

- The PR description must include a summary of the changes and their rationales.

- All files in the PR must comply with :ref:`Licensing
  Requirements<licensing_requirements>`.

- The code must follow the Zephyr :ref:`coding_style` and :ref:`coding_guidelines`.

- The PR must pass all CI checks, as described in :ref:`merge_criteria`.
  Contributors may mark a PR as draft and explicitly request reviewers to
  provide early feedback, even with failing CI checks.

- Commits in a pull request should represent clear, logical units of change that are easy to review
  and maintain bisectability. The following guidelines expand on this principle:

  1. Distinct, Logical Units of Change

     Each commit should correspond to a self-contained, meaningful change. For example, adding a
     feature, fixing a bug, or refactoring existing code should be separate commits. Avoid mixing
     different types of changes (e.g., feature implementation and unrelated refactoring) in the same
     commit.

  2. Retain Bisectability

     Every commit in the pull request must build successfully and pass all relevant tests. This
     ensures that git bisect can be used effectively to identify the specific commit that introduced
     a bug or issue.

  3. Squash Intermediary or Non-Final Development History

     During development, commits may include intermediary changes (e.g., partial implementations,
     temporary files, or debugging code). These should be squashed or rewritten before submitting the
     pull request. Remove non-final artifacts, such as:

     * Temporary renaming of files that are later renamed again.
     * Code that was rewritten or significantly changed in later commits.

  4. Ensure Clean History Before Submission

     Use interactive rebasing (git rebase -i) to clean up the commit history before submitting the
     pull request. This helps in:

     * Squashing small, incomplete commits into a single cohesive commit.
     * Ensuring that each commit remains bisectable.
     * Maintaining proper attribution of authorship while improving clarity.

  5. Renaming and Code Rewrites

     If files or code are renamed or rewritten in later commits during development, squash or rewrite
     earlier commits to reflect the final structure. This ensures that:

     * The history remains clean and easy to follow.
     * Bisectability is preserved by eliminating redundant renaming or partial rewrites.

  6. Attribution of Authorship

     While cleaning up the commit history, ensure that authorship attribution remains accurate.

  7. Readable and Reviewable History

     The final commit history should be easy to understand for future maintainers. Logical units of
     change should be grouped into commits that tell a clear, coherent story of the work done.

- When major new functionality is added, tests for the new functionality shall
  be added to the automated test suite. All API functions should have test cases
  and there should be tests for the behavior contracts of the API. Maintainers
  and reviewers have the discretion to determine if the provided tests are
  sufficient. The examples below demonstrate best practices on how to test APIs
  effectively.

    - :zephyr_file:`Kernel timer tests <tests/kernel/timer/timer_behavior>`
      provide around 85% test coverage for the
      :zephyr_file:`kernel timer <kernel/timer.c>`, measured by lines of code.
    - Emulators for off-chip peripherals are an effective way to test driver
      APIs. The :zephyr_file:`fuel gauge tests <tests/drivers/fuel_gauge/sbs_gauge>`
      use the :zephyr_file:`smart battery emulator <drivers/fuel_gauge/sbs_gauge/emul_sbs_gauge.c>`,
      providing test coverage for the
      :zephyr_file:`fuel gauge API <include/zephyr/drivers/fuel_gauge.h>`
      and the :zephyr_file:`smart battery driver <drivers/fuel_gauge/sbs_gauge/sbs_gauge.c>`.
    - Code coverage reports for the Zephyr project are available on `Codecov`_.

- Incompatible changes to APIs must also update the release notes for the
  next release detailing the change.  APIs marked as experimental are excluded
  from this requirement.

- Changes to APIs must increment the API version number according to the API
  version rules.

- Documentation must be added and/or updated to reflect the changes in the code
  introduced by the PR. The documentation changes must use the proper
  terminology as present in the existing pages, and must be written in American
  English. If you include images as part of the documentation, those must follow
  the rules in :ref:`doc_images`. Please refer to :ref:`doc_guidelines` for
  additional information.

- PRs must also satisfy all :ref:`merge_criteria` before a member of the release
  engineering team merges the PR into the zephyr tree.

Maintainers may request that contributors break up a PR into smaller PRs and may
request that they create an :ref:`RFC proposal <rfcs>`.

.. _`Codecov`: https://app.codecov.io/gh/zephyrproject-rtos/zephyr

Workflow Suggestions That Help Reviewers
========================================

- Unless they applied the reviewer's recommendation exactly, authors must not
  resolve and hide comments, they must let the initial reviewer do it. The
  Zephyr project does not require all comments to be resolved before merge.
  Leaving some completed discussions open can sometimes be useful to understand
  the greater picture.

- Respond to comments using the "Start Review" and "Add Review" green buttons in
  the "Files changed" view. This allows responding to multiple comments and
  publishing the responses in bulk. This reduces the number of emails sent to
  reviewers.

- As GitHub does not implement |git range-diff|_, try to minimize rebases in the
  middle of a review. If a rebase is required, push this as a separate update
  with no other changes since the last push of the PR. When pushing a rebase
  only, add a comment to the PR indicating which commit is the rebase.

.. |git range-diff| replace:: ``git range-diff``
.. _`git range-diff`: https://git-scm.com/docs/git-range-diff

Getting PRs Reviewed
====================

The Zephyr community is a diverse group of individuals, with different levels of
commitment and priorities. As such, reviewers and maintainers may not get to a
PR right away.

- After 1 week of inactivity, ping the Assignee or reviewers on the PR by adding
  a comment to the PR.

- After 2 weeks of inactivity, post a message on the `#pr-help`_ channel on
  Discord linking to the PR.

.. _pr_technical_escalation:

PR Technical Escalation
=======================

In cases where a contributor objects to change requests from reviewers, Zephyr
defines the following escalation process for resolving technical disagreements.

Before escalation of technical disagreements, follow the steps below:

- Resolve in the PR among assignee, maintainers and reviewer.

  - Assignee to act as moderator if applicable.

- If no progress is made, the assignee (maintainer) has the right to dismiss
  stale, unrelated or irrelevant change requests by reviewers giving the
  reviewers a minimum of 1 business day to respond and revisit their initial
  change requests or start the escalation process.

  The assignee has the responsibility to document the reasoning for dismissing
  any reviews in the PR and should notify the reviewer about their review being
  dismissed.

  To give the reviewers time to respond and escalate, the assignee is
  expected to block the PR from being merged either by not
  approving the PR or by setting the *DNM* label.

Escalation can be triggered by any party participating in the review
process (assignee, reviewers or the original author of the change) following
the steps below:

- Escalate to the `Architecture Working Group`_ by adding the `Architecture
  Review` label on the PR. Beside the weekly meeting where such escalations are
  processed, the `Architecture Working Group`_  shall facilitate an offline
  review of the escalation if requested, especially if any of the parties can't
  attend the meeting.

- If all avenues of resolution and escalation have failed, assignees can escalate
  to the TSC and get a binding resolution in the TSC by adding the *TSC* label
  on the PR.

- The Assignee is expected to ensure the resolution of the escalation and the
  outcome is documented in the related pull request or issues on Github.

.. _#pr-help: https://discord.com/channels/720317445772017664/997527108844798012

.. _Architecture Project: https://github.com/zephyrproject-rtos/zephyr/projects/18

.. _Architecture Working Group: https://github.com/zephyrproject-rtos/zephyr/wiki/Architecture-Working-Group

---

### Doc Contribute External (`doc/contribute/external.rst`)

.. _external-contributions:

Contributing External Components
################################

In some cases it is desirable to leverage existing, external source code in
order to avoid re-implementing basic functionality or features that are readily
available in other open source projects.

This section describes the circumstances under which external source code can be
imported into Zephyr, and the process that governs the inclusion.

There are three main factors that will be considered during the inclusion
process in order to determine whether it will be accepted. These will be
described in the following sections.

Note that most of this page deals with external components that end up being
compiled and linked into the final image, and programmed into the target
hardware. For external tooling that is only used during compilation,
code analysis, testing or simulation please refer to the
:ref:`external-tooling` section at the end of the page.

Software License
****************

.. note::

   External source code licensed under the Apache-2.0 license is not subject to
   this section.

Integrating code into the Zephyr Project from other projects that use a license
other than the Apache 2.0 license needs to be fully understood in
context and approved by the `Zephyr governing board`_, as described in the
`Zephyr project charter`_. The board will automatically reject licenses that
have not been approved by the `Open Source Initiative (OSI)`_. See the
:ref:`external-src-process` section for more details.

.. _Zephyr governing board:
   https://www.zephyrproject.org/governance/

.. _Zephyr project charter:
   https://www.zephyrproject.org/wp-content/uploads/2023/08/LF-Zephyr-Charter-2023.08.21.pdf

.. _Open Source Initiative (OSI):
   https://opensource.org/licenses/alphabetical

By carefully reviewing potential contributions and also enforcing a :ref:`DCO`
for contributed code, we ensure that the Zephyr community can develop products
with the Zephyr Project without concerns over patent or copyright issues.

Merit
*****

Just like with any other regular contribution, one that contains external code
needs to be evaluated for merit. However, in the particular case of code that
comes from an existing project, there are additional questions that must be
answered in order to accept the contribution.
More specifically, the following will be considered by the Technical Steering
Committee and evaluated carefully before the external source code is accepted
into the project:

- Is this the most optimal way to introduce the functionality to the project?
  Both the cost of implementing this internally and the one incurred in
  maintaining an externally developed codebase need to be evaluated.
- Is the external project being actively maintained? This is particularly
  important for source code that deals with security or cryptography.
- Have alternatives to the particular implementation proposed been considered?
  Are there other open source project that implement the same functionality?

Mode of integration
*******************

There are two ways of integrating external source code into the Zephyr Project,
and careful consideration must be taken to choose the appropriate one for each
particular case.

Integration in the main tree
============================

The first way to integrate external source code into the project is to simply
import the source code files into the main ``zephyr`` repository. This
automatically implies that the imported source code becomes part of the
"mainline" codebase, which in turn requires that:

- The code is formatted according to the Zephyr :ref:`coding_style`
- The code adheres to the project's :ref:`coding_guidelines`
- The code is subject to the same checks and verification requirements as the
  rest of the code in the main tree, including static analysis
- All files contain an SPDX tag if not already present
- If the source is not Apache 2.0 licensed, an ``[[annotations]]`` entry
  describing the component is added to the :zephyr_file:`REUSE.toml` file at the
  root of the repository. This is what the :ref:`licensing page
  <zephyr_licensing>` is generated from.

This mode of integration can be applicable to both small and large external
codebases, but it is typically used more commonly with the former.

Integration as a module
=======================

The second way of integrating external source code into the project is to import
the whole or parts of the third-party open source project into a separate
repository, and then include it under the form of a :ref:`module <modules>`.
With this approach the code is considered as being developed externally, and
thus it is not automatically subject to the requirements of the previous
section.

Integration in main manifest file (west.yaml)
---------------------------------------------

Integrating external code into the main :file:`west.yml` manifest file is
limited to code that is used by a Zephyr subsystem (libraries), by a platform,
drivers (HAL) or tooling needed to test or build Zephyr components.

The integration of modules in this group is validated by the Zephyr project CI,
and verified to be working with each Zephyr release.

Integrated modules will not be removed from the tree without a detailed
migration plan.

Integration as optional modules
-------------------------------

Standalone or loose integration of modules/projects without any incoming
dependencies shall be made optional and shall be kept standalone. Optional
projects that provide value to users directly and through a Zephyr subsystem or
platform shall be added to an optional manifest file that is filtered by
default. (:file:`submanifests/optional.yml`).

Such optional projects might include samples and tests in their own repositories.

There shall not be any direct dependency added in the Zephyr code tree (Git
repository) and all sample or test code shall be maintained as part of the module.

.. note::

   This is valid for all new optional modules. Existing optional modules with
   samples and test code in the Zephyr Git repository will be transitioned out
   over time.

Integration as external modules
-------------------------------

Similar to optional modules, but added to the Zephyr project as an entry in the
documentation using a pre-defined template. This type of modules exists outside the
Zephyr project manifest with documentation instructing users and developers how
to integrate the functionality.

Ongoing maintenance
*******************

Regardless of the mode of integration, external source code that is integrated
in Zephyr requires regular ongoing maintenance. The submitter of the proposal to
integrate external source code must therefore commit to maintain the integration
of such code for the foreseeable future.
This may require adding an entry in the :file:`MAINTAINERS.yml` as part of the
process.

.. _external-src-process:

Submission and review process
*****************************

Before external source code can be included in the project, it must be reviewed
and accepted by the Technical Steering Committee (TSC) and, in some cases, by
the Zephyr governing board.

A request for external source code integration must be made by creating a new
issue in the Zephyr project issue tracking system on GitHub with details
about the source code and how it integrates into the project.

Follow the steps below to begin the submission process:

#. Make sure to read through the :ref:`external-contributions` section in
   detail, so that you are informed of the criteria used by the TSC and board in
   order to approve or reject a request
#. Use the :github:`New External Source Code Issue
   <new?assignees=&labels=RFC&template=007_ext-source.yml>` to open an issue
#. Fill out all required sections, making sure you provide enough detail for the
   TSC to assess the merit of the request. Optionally you can also create a Pull
   Request that demonstrates the integration of the external source code and
   link to it from the issue
#. Wait for feedback from the TSC, respond to any additional questions added as
   GitHub issue comments

If, after consideration by the TSC, the conclusion is that integrating external
source code is the best solution, and the external source code is licensed under
the Apache-2.0 license, the submission process is complete and the external
source code can be integrated.

If, however, the external source code uses a license other than Apache-2.0,
then these additional steps must be followed:

#. The TSC chair will forward the link to the GitHub issue created during the
   early submission process to the Zephyr governing board for further review

#. The Zephyr governing board has two weeks to review and ask questions:

   - If there are no objections, the matter is closed. Approval can be
     accelerated by unanimous approval of the board before the two
     weeks are up

   - If a governing board member raises an objection that cannot be resolved
     via email, the board will meet to discuss whether to override the
     TSC approval or identify other approaches that can resolve the
     objections

#. On approval of the Zephyr TSC and governing board the submission process is
   complete

The flowchart below shows an overview of the process:

.. figure:: media/ext-src-flowchart.svg
   :align: center

   Submission process

.. _external-tooling:

Contributing External Tooling
*****************************

This section deals exclusively with the inclusion of external tooling in the
Zephyr project, where tooling is defined as software that assists the
compilation, testing or simulation processes but in no case ends up being part
of the code compiled and linked into the final image. "Inclusion" in this
context means becoming part of the Zephyr default distribution either in the
main tree directly under the :file:`scripts/` folder or indirectly as a west
project in the main :file:`west.yml` manifest. Therefore, this section does not
apply to 3rd-party tooling such as toolchains, simulators or others, which may
still be referenced by the Zephyr build system or docs without being included in
Zephyr.

Tooling components must be released under a license approved by the
`Open Source Initiative (OSI)`_.

Just like with regular external components, tooling that is imported from
another project can be integrated either in the main tree or as a :ref:`west
project <west-workspace>`. Note that in this case the corresponding west project
will not be a :ref:`module <modules>`, because tooling does not make use of the
Zephyr build system and does not need to be processed by it. Please see
:ref:`modules-vs-projects` for additional information on the differences.

If the tool is integrated in the main tree it should be placed under the
:file:`scripts/` folder.
If the tool is integrated as a west project, then the project repository can be
hosted outside the zephyrproject-rtos GitHub organization, provided that the
project is made optional via the ``group-filter:`` field in the main
:file:`west.yml` manifest. More info on optional projects can be found in
:ref:`this section <west-manifest-groups>`.

The TSC must approve every Pull Request that introduces a new external tooling
component. This will be done on a case-by-case, individual analysis of the
proposed addition by the TSC representatives.

Additional considerations about the main manifest
*************************************************

In general, any additions or removals whatsoever to the ``projects:`` section of
the `main manifest file`_ requires TSC approval. This includes, but is not
limited to:

- Adding and removing groups and group filters
- Adding and removing projects
- Adding and removing ``import`` statements

.. _main manifest file:
   https://github.com/zephyrproject-rtos/zephyr/blob/main/west.yml

---

### Doc Contribute Guidelines (`doc/contribute/guidelines.rst`)

.. _contribute_guidelines:

Contribution Guidelines
#######################

As an open-source project, we welcome and encourage the community to submit
patches directly to the project.  In our collaborative open source environment,
standards and methods for submitting changes help reduce the chaos that can result
from an active development community.

This document explains how to participate in project conversations, log bugs
and enhancement requests, and submit patches to the project so your patch will
be accepted quickly in the codebase.


Prerequisites
*************

.. _Zephyr Project website: https://zephyrproject.org

As a contributor, you'll want to be familiar with the Zephyr project, how to
configure, install, and use it as explained in the `Zephyr Project website`_
and how to set up your development environment as introduced in the Zephyr
:ref:`getting_started`.

You should be familiar with common developer tools such as Git and CMake, and
platforms such as GitHub.

If you haven't already done so, you'll need to create a (free) GitHub account
on https://github.com and have Git tools available on your development system.

.. note::
   The Zephyr development workflow supports all 3 major operating systems
   (Linux, macOS, and Windows) but some of the tools used in the sections below
   are only available on Linux and macOS. On Windows, instead of running these
   tools yourself, you will need to rely on the Continuous Integration (CI)
   service using Github Actions, which runs automatically on GitHub when you submit
   your Pull Request (PR).  You can see any failure results in the workflow
   details link near the end of the PR conversation list. See
   `Continuous Integration`_ for more information


.. _licensing_requirements:

Licensing
*********

Licensing is very important to open source projects. It helps ensure the
software continues to be available under the terms that the author desired.

.. _Apache 2.0 license:
   https://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE

.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr

Zephyr uses the `Apache 2.0 license`_ (as found in the LICENSE file in
the project's `GitHub repo`_) to strike a balance between open
contribution and allowing you to use the software however you would like
to.  The Apache 2.0 license is a permissive open source license that
allows you to freely use, modify, distribute and sell your own products
that include Apache 2.0 licensed software.  (For more information about
this, check out articles such as `Why choose Apache 2.0 licensing`_ and
`Top 10 Apache License Questions Answered`_).

.. _Why choose Apache 2.0 licensing:
   https://www.zephyrproject.org/faqs/#1571346989065-9216c551-f523

.. _Top 10 Apache License Questions Answered:
   https://www.whitesourcesoftware.com/whitesource-blog/top-10-apache-license-questions-answered/

A license tells you what rights you have as a developer, as provided by the
copyright holder. It is important that the contributor fully understands the
licensing rights and agrees to them. Sometimes the copyright holder isn't the
contributor, such as when the contributor is doing work on behalf of a
company.

Components using other Licenses
===============================

There are some imported or reused components of the Zephyr project that
use other licensing, as described in :ref:`Zephyr_Licensing`.

Importing code into the Zephyr OS from other projects that use a license
other than the Apache 2.0 license needs to be fully understood in
context and approved by the Zephyr governing board.

By carefully reviewing potential contributions and also enforcing a
:ref:`DCO` for contributed code, we can ensure that
the Zephyr community can develop products with the Zephyr Project
without concerns over patent or copyright issues.

See :ref:`external-contributions` for more information about
this contributing and review process for imported components.

.. only:: latex

   .. toctree::
      :maxdepth: 1

      ../LICENSING.rst

.. _copyrights:

Copyright and License Notices
=============================

Zephyr follows SPDX/REUSE-style file headers. Add a machine-readable copyright notice and a license
identifier at the top of each file so tooling can detect them (for example
:ref:`west spdx <west-spdx>`, which uses the `REUSE tool`_).

The Zephyr Project follows the `Community Best Practice`_ for copyright notices from the Linux
Foundation, therefore we recommend using the following copyright notice:

.. code-block:: none

   SPDX-FileCopyrightText: Copyright The Zephyr Project Contributors

Include the license identifier alongside it:

.. code-block:: none

   SPDX-License-Identifier: Apache-2.0

Practical guidance:

- Place both lines at the very top of the file using the file's native comment syntax.
- If you authored substantial, original content, you *may* add an additional line for yourself or
  your organization.

.. _Community Best Practice:
   https://www.linuxfoundation.org/blog/copyright-notices-in-open-source-software-projects/

.. _REUSE tool:
   https://github.com/fsfe/reuse-tool

.. _DCO:

Developer Certification of Origin (DCO)
***************************************

To make a good faith effort to ensure licensing criteria are met, the Zephyr
project requires the Developer Certificate of Origin (DCO) process to be
followed.

The DCO is an attestation attached to every contribution made by every
developer. In the commit message of the contribution, (described more fully
later in this document), the developer simply adds a ``Signed-off-by``
statement and thereby agrees to the DCO.

When a developer submits a patch, it is a commitment that the contributor has
the right to submit the patch per the license.  The DCO agreement is shown
below and at https://developercertificate.org/.

.. code-block:: none

    Developer's Certificate of Origin 1.1

    By making a contribution to this project, I certify that:

    (a) The contribution was created in whole or in part by me and I
        have the right to submit it under the open source license
        indicated in the file; or

    (b) The contribution is based upon previous work that, to the
        best of my knowledge, is covered under an appropriate open
        source license and I have the right under that license to
        submit that work with modifications, whether created in whole
        or in part by me, under the same open source license (unless
        I am permitted to submit under a different license), as
        Indicated in the file; or

    (c) The contribution was provided directly to me by some other
        person who certified (a), (b) or (c) and I have not modified
        it.

    (d) I understand and agree that this project and the contribution
        are public and that a record of the contribution (including
        all personal information I submit with it, including my
        sign-off) is maintained indefinitely and may be redistributed
        consistent with this project or the open source license(s)
        involved.

DCO Sign-Off
============

The "sign-off" in the DCO is a "Signed-off-by:" line in each commit's log
message. The Signed-off-by: line must be in the following format::

   Signed-off-by: Your Name <your.email@example.com>

For your commits, replace:

- ``Your Name`` with your legal name (pseudonyms, hacker handles, and the
  names of groups are not allowed)

- ``your.email@example.com`` with the real email address you are using to
  author the commit. Pseudo or anonymized emails such as
  ``you-id+your-username@users.noreply.github.com`` are not allowed. The
  email must match the one you use to author the commit (CI will fail if
  there is no match).

You can automatically add the Signed-off-by: line to your commit body using
``git commit -s``. Use other commits in the zephyr git history as examples.
See :ref:`git_setup` for instructions on configuring user and email settings
in Git.

Additional requirements:

- If you are altering an existing commit created by someone else, you must add
  your Signed-off-by: line without removing the existing one.

.. _ai_coding_assistants:

AI Coding Assistants
********************

This section provides guidance for contributors using AI tools and assistants when contributing to
the Zephyr project.

Licensing and Legal Requirements
================================

All contributions must comply with the licensing requirements of the project and be compatible with
Zephyr's licensing (e.g. Apache-2.0, see :ref:`licensing_requirements` for more details).

Signed-off-by and Developer Certificate of Origin
=================================================

AI agents **must not** add ``Signed-off-by`` tags. Only humans can legally certify the :ref:`DCO`.
The human submitter is responsible for:

- Reviewing all AI-generated code.
- Ensuring compliance with licensing requirements.
- Adding their own Signed-off-by tag to certify the DCO.
- Taking full responsibility for the contribution.

Usage disclosure and attribution
================================

When AI tools are being used to help write a contribution, proper attribution helps track the
evolving role of AI in the development process. Contributions should include an ``Assisted-by:`` tag
in the following format:

.. code-block:: none

   Assisted-by: [Agent Name]:[Model Version] [Tool1] [Tool2]

Where:

- ``[Agent Name]`` is the name of the AI tool or framework.
- ``[Model Version]`` is the specific model version used.
- ``[Tool1] [Tool2]`` are optional specialized analysis tools used.

Basic development tools (git, gcc, make, editors) should not be listed.

Example:

.. code-block:: none

   Assisted-by: Claude:claude-opus-4.6 coccinelle

.. _source_tree_v2:

Source Tree Structure
*********************

To clone the main Zephyr Project repository use the instructions in
:ref:`get_the_code`.

This section describes the main repository's source tree. In addition to the
Zephyr kernel itself, you'll also find the sources for technical documentation,
sample code, supported board configurations, and a collection of subsystem
tests.  All of these are available for developers to contribute to and enhance.

Understanding the Zephyr source tree can help locate the code
associated with a particular Zephyr feature.

At the top of the tree, several files are of importance:

:file:`CMakeLists.txt`
    The top-level file for the CMake build system, containing a lot of the
    logic required to build Zephyr.

:file:`Kconfig`
    The top-level Kconfig file, which refers to the file :file:`Kconfig.zephyr`
    also found in the top-level directory.

    See :ref:`the Kconfig section of the manual <kconfig>` for detailed Kconfig
    documentation.

:file:`west.yml`
    The :ref:`west` manifest, listing the external repositories managed by
    the west command-line tool.

The Zephyr source tree also contains the following top-level
directories, each of which may have one or more additional levels of
subdirectories not described here.

:file:`arch`
    Architecture-specific kernel and system-on-chip (SoC) code.
    Each supported architecture (for example, x86 and ARM)
    has its own subdirectory,
    which contains additional subdirectories for the following areas:

    * architecture-specific kernel source files
    * architecture-specific kernel include files for private APIs

:file:`soc`
    SoC related code and configuration files.

:file:`boards`
    Board related code and configuration files.

:file:`doc`
    Zephyr technical documentation source files and tools used to
    generate the https://docs.zephyrproject.org web content.

:file:`drivers`
    Device driver code.

:file:`dts`
    :ref:`devicetree <dt-guide>` source files used to describe non-discoverable
    board-specific hardware details.

:file:`include`
    Include files for all public APIs, except those defined under :file:`lib`.

:file:`kernel`
    Architecture-independent kernel code.

:file:`lib`
    Library code, including the minimal standard C library.

:file:`misc`
    Miscellaneous code that doesn't belong to any of the other top-level
    directories.

:file:`samples`
    Sample applications that demonstrate the use of Zephyr features.

:file:`scripts`
    Various programs and other files used to build and test Zephyr
    applications.

:file:`cmake`
    Additional build scripts needed to build Zephyr.

:file:`subsys`
    Subsystems of Zephyr, including:

    * USB device stack code
    * Networking code, including the Bluetooth stack and networking stacks
    * File system code
    * Bluetooth host and controller

:file:`tests`
    Test code and benchmarks for Zephyr features.

:file:`share`
    Additional architecture independent data. It currently contains Zephyr's CMake
    package.

Pull Requests and Issues
************************

.. _Zephyr Project Issues: https://github.com/zephyrproject-rtos/zephyr/issues

.. _open pull requests: https://github.com/zephyrproject-rtos/zephyr/pulls

.. _Zephyr devel mailing list: https://lists.zephyrproject.org/g/devel

.. _Zephyr Discord Server: https://chat.zephyrproject.org

Before starting on a patch, first check in our issues `Zephyr Project Issues`_
system to see what's been reported on the issue you'd like to address.  Have a
conversation on the `Zephyr devel mailing list`_ (or the `Zephyr Discord
Server`_) to see what others think of your issue (and proposed solution).  You
may find others that have encountered the issue you're finding, or that have
similar ideas for changes or additions.  Send a message to the `Zephyr devel
mailing list`_ to introduce and discuss your idea with the development
community.

It's always a good practice to search for existing or related issues before
submitting your own. When you submit an issue (bug or feature request), the
triage team will review and comment on the submission, typically within a few
business days.

You can find all `open pull requests`_ on GitHub and open `Zephyr Project
Issues`_ in Github issues.

.. _git_setup:

Git Setup
*********

We need to know who you are, and how to contact you. To add this
information to your Git installation, set the Git configuration
variables ``user.name`` to your full name, and ``user.email`` to your
email address.

For example, if your name is ``Zephyr Developer`` and your email
address is ``z.developer@example.com``:

.. code-block:: console

   git config --global user.name "Zephyr Developer"
   git config --global user.email "z.developer@example.com"

.. note::
   ``user.name`` must be your full name (first and last at minimum), not a
   pseudonym or hacker handle. The email address that you use in your Git configuration must match the email
   address you use to sign your commits. If they don't match, the CI system will
   fail your pull request.

   If you intend to edit commits using the Github.com UI, ensure that your github profile
   ``email address`` and profile ``name`` also match those used in your git configuration
   (``user.name`` & ``user.email``).

Pull Request Guidelines
***********************
When opening a new Pull Request, adhere to the following guidelines to ensure
compliance with Zephyr standards and facilitate the review process.

If in doubt, it's advisable to explore existing Pull Requests within the Zephyr
repository. Use the search filters and labels to locate PRs related to changes
similar to the ones you are proposing.

.. note::
   GitHub's default code UI uses 4-character tabs. However, Zephyr follows the
   `Linux kernel coding style`_, which uses 8-character tabs.

   To ensure your view of the code is consistent with other developers, please
   go to your `user preferences on GitHub`_ and change the tab width to 8 spaces.

.. _Linux kernel coding style:
   https://kernel.org/doc/html/latest/process/coding-style.html#indentation

.. _user preferences on GitHub:
   https://github.com/settings/appearance

.. _commit-guidelines:

Commit Message Guidelines
=========================

Changes are submitted as Git commits. Each commit has a *commit
message* describing the change. Acceptable commit messages look like
this:

.. code-block:: none

   [area]: [summary of change]

   [Commit message body (must be non-empty)]

   Signed-off-by: [Your Full Name] <[your.email@address]>

You need to change text in square brackets (``[like this]``) above to
fit your commit.

Here is an example of a good commit message.

.. code-block:: none

   drivers: sensor: abcd1234: fix bus I/O error handling

   The abcd1234 sensor driver is failing to check the flags field in
   the response packet from the device which signals that an error
   occurred. This can lead to reading invalid data from the response
   buffer. Fix it by checking the flag and adding an error path.

   Signed-off-by: Zephyr Developer <z.developer@example.com>

[area]: [summary of change]
---------------------------

This line is called the commit's *title*. Titles must be:

* one line
* less than 72 characters long
* followed by a completely blank line

[area]
  The ``[area]`` prefix usually identifies the area of code
  being changed. It can also identify the change's wider
  context if multiple areas are affected.

  Here are some examples:

  * ``doc: ...`` for documentation changes
  * ``drivers: foo:`` for ``foo`` driver changes
  * ``Bluetooth: Shell:`` for changes to the Bluetooth shell
  * ``net: ethernet:`` for Ethernet-related networking changes
  * ``dts:`` for treewide devicetree changes
  * ``style:`` for code style changes

  If you're not sure what to use, try running ``git log FILE``, where
  ``FILE`` is a file you are changing, and using previous commits that
  changed the same file as inspiration.

[summary of change]
  The ``[summary of change]`` part should be a quick description of
  what you've done. Here are some examples:

  * ``doc: update wiki references to new site``
  * ``drivers: sensor: sensor_shell: fix channel name collision``

Commit Message Body
-------------------

.. warning::

   An empty commit message body is not permitted. Even for trivial
   changes, please include a descriptive commit message body. Your
   pull request will fail CI checks if you do not.

This part of the commit should explain what your change does, and why
it's needed. Be specific. A body that says ``"Fixes stuff"`` will be
rejected. Be sure to include the following as relevant:

* **what** the change does,
* **why** you chose that approach,
* **what** assumptions were made, and
* **how** you know it works -- for example, which tests you ran.

Each line in your commit message should usually be 75 characters or
less. Use newlines to wrap longer lines. Exceptions include lines
with long URLs, email addresses, etc.

For examples of accepted commit messages, you can refer to the Zephyr GitHub
`changelog <https://github.com/zephyrproject-rtos/zephyr/commits/main>`__.


Signed-off-by: ...
------------------

.. tip::

   You should have set your :ref:`git_setup`
   already. Create your commit with ``git commit -s`` to add the
   Signed-off-by: line automatically using this information.

For open source licensing reasons, your commit must include a
Signed-off-by: line that looks like this:

.. code-block:: none

   Signed-off-by: [Your Full Name] <[your.email@address]>

For example, if your full name is ``Zephyr Developer`` and your email
address is ``z.developer@example.com``:

.. code-block:: none

   Signed-off-by: Zephyr Developer <z.developer@example.com>

This means that you have personally made sure your change complies
with the :ref:`DCO`. For this reason, you must use your legal name.
Pseudonyms or "hacker aliases" are not permitted.

Your name and the email address you use must match the name and email
in the Git commit's ``Author:`` field.

See the :ref:`contributor-expectations` for a more complete discussion of
contributor and reviewer expectations.

Adding Links
------------

.. _GitHub references:
   https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/autolinked-references-and-urls

If your change addresses a specific GitHub issue, include a reference in the
pull request description using the following format:

.. code-block:: none

   Fixes zephyrproject-rtos/zephyr#[issue number]

For pull requests to the Zephyr project only, the short form can also be used,
for example:

.. code-block:: none

   Fixes #[issue number]

Replace [issue number] with the relevant GitHub issue number. For example:

.. code-block:: none

   Fixes zephyrproject-rtos/zephyr#1234

This syntax ensures that the issue is automatically closed when the pull
request is merged. Always specify the full repository path
(zephyrproject-rtos/zephyr) to avoid ambiguity, especially when working across
multiple repositories.

The same format can also be used in commit messages.

For linking to additional external resources—such as related issues,
datasheets, or technical reference manuals—use the ``Link:`` tag:

.. code-block:: none

   Link: https://github.com/zephyrproject-rtos/zephyr/issues/<issue number>

.. _Continuous Integration:

Continuous Integration (CI)
===========================

The Zephyr Project operates a Continuous Integration (CI) system that runs on
every Pull Request (PR) in order to verify several aspects of the PR:

* Git commit formatting
* Coding Style
* Twister builds for multiple architectures and boards
* Documentation build to verify any doc changes

CI is run on Github Actions and it uses the same tools described in the
`CI Tests`_ section.  The CI results must be green indicating "All
checks have passed" before the Pull Request can be merged.  CI is run when the
PR is created, and again every time the PR is modified with a commit.

The current status of the CI run can always be found at the bottom of the
GitHub PR page, below the review status. Depending on the success or failure
of the run you will see:

* "All checks have passed"
* "All checks have failed"

In case of failure you can click on the "Details" link presented below the
failure message in order to navigate to ``Github Actions`` and inspect the
results.
Once you click on the link you will be taken to the ``Github actions`` summary
results page where a table with all the different builds will be shown. To see
what build or test failed click on the row that contains the failed (i.e.
non-green) build.

.. _CI Tests:

Running CI Tests Locally
========================

.. _check_compliance_py:

check_compliance.py
-------------------

The :zephyr_file:`scripts/ci/check_compliance.py` script serves as a valuable
tool for assessing code compliance with Zephyr's established guidelines and
best practices. The script acts as wrapper for a suite of tools that performs
various checks, including linters and formatters.

Developers are encouraged to run the script locally to validate their changes
before opening a new Pull Request:

.. code-block:: bash

   ./scripts/ci/check_compliance.py -c <commit range>

The checks run in parallel, using one worker process per CPU. Pass ``-p N`` to
limit the number of worker processes to ``N``, or ``-p 1`` to run the checks
sequentially.

.. code-block:: bash

   ./scripts/ci/check_compliance.py -p 1 -c <commit range>

.. note::
   On Windows if the .pl extension has not yet been associated with an
   application, then the first time a .pl file is run without specifying an
   interpreter, Windows will ask what application will open Perl files.
   Set the default app to Strawberry Perl. By default the executable is
   installed at ``C:\Strawberry\perl\bin\perl.exe``.

KeepSorted Check
^^^^^^^^^^^^^^^^

The KeepSorted check ensures that specified blocks of code, configuration, or
documentation remain in sorted order.

To use the KeepSorted check, wrap your sorted content between dedicated lines
containing start and stop markers, typically using comments:

.. code-block:: c

   // zephyr-keep-sorted-start
   option_a
   option_b
   option_c
   // zephyr-keep-sorted-stop

KeepSorted Marker Options
"""""""""""""""""""""""""

The sorting behavior of each block can be customized in several ways.
To do this, one or more of the following parameters can be added on
the same line as the start marker itself:

**re(regex_pattern)**
   Enables regex mode where only lines matching the specified regular expression
   are checked for sorting. Other lines are ignored.

   Example checking sorted properties in a yaml file:

   .. code-block:: yaml

      # zephyr-keep-sorted-start re(^\s+\- name:)
      projects:
        - name: application
          revision: main
        - name: library1
          revision: feature-branch
        - name: library2
          revision: main
      # zephyr-keep-sorted-stop

**strip(characters)**
   Strips the specified characters from lines before performing the sort comparison.
   This is useful when lines have optional prefixes or suffixes that should be
   ignored during sorting.

   Example stripping quotes from yaml dictionary keys:

   .. code-block:: yaml

      # zephyr-keep-sorted-start strip(":)
      ACPI:
        status: odd fixes
      "West project: acpica":
        status: odd fixes
      # zephyr-keep-sorted-stop

**nofold**
   Disables line folding. By default, indented lines following a main line are
   concatenated (folded) together for sorting comparison. The ``nofold`` option
   disables this behavior and ignores indented lines.

**ignorecase**
   Enables case-insensitive sorting using Python's `str.casefold`_. This allows
   mixing uppercase and lowercase items in sorted blocks without causing sort
   order violations. Defaults to Python's string ordering if omitted.

.. _str.casefold: https://docs.python.org/3/library/stdtypes.html#str.casefold

Multiple options can be combined on the same marker line:

.. code-block:: rst

   .. zephyr-keep-sorted-start re(^\* \w) ignorecase
   * Shell
     Some important message about the shell.

   * STM32
     Updates for this vendor.
   .. zephyr-keep-sorted-stop

twister
-------

.. note::
   twister is only fully supported on Linux; on Windows and MacOS the execution
   of tests is not supported on all target devices.

If you think your change may break some test, you can submit your PR as a draft
and let the project CI automatically run the :ref:`twister_script` for you.

If a test fails, you can check from the CI run logs how to rerun it locally,
for example:

.. code-block:: bash

   west twister -p native_sim -s tests/drivers/build_all/sensor/drivers.sensor.generic_test

.. _static_analysis:

Static Code Analysis
********************

Coverity Scan is a free service for static code analysis of Open Source
projects. It is based on Coverity's commercial product and is able to analyze
C, C++ and Java code.

Coverity's static code analysis doesn't run the code. Instead of that it uses
abstract interpretation to gain information about the code's control flow and
data flow. It's able to follow all possible code paths that a program may take.
For example the analyzer understands that malloc() returns a memory that must
be freed with free() later. It follows all branches and function calls to see
if all possible combinations free the memory. The analyzer is able to detect
all sorts of issues like resource leaks (memory, file descriptors), NULL
dereferencing, use after free, unchecked return values, dead code, buffer
overflows, integer overflows, uninitialized variables, and many more.

The results are available on the `Coverity Scan
<https://scan.coverity.com/projects/zephyr>`_ website. In order to access the
results you have to create an account yourself.  From the Zephyr project page,
you may select "Add me to project" to be added to the project. New members must
be approved by an admin.

Static analysis of the Zephyr codebase is conducted on a bi-weekly basis. GitHub
issues are automatically created for any issues detected by static analysis
tools. These issues will have the same (or equivalent) priority initially
defined by the tool.

To ensure accountability and efficient issue resolution, they are assigned to
the respective maintainer who is responsible for the affected code.

A dedicated team comprising members with expertise in static analysis, code
quality, and software security ensures the effectiveness of the static
analysis process and verifies that identified issues are properly
triaged and resolved in a timely manner.

Workflow
========

If after analyzing the Coverity report it is concluded that it is a false
positive please set the classification to either "False positive" or
"Intentional", the action to "Ignore", owner to your own account and add a
comment why the issue is considered false positive or intentional.

Update the related Github issue in the zephyr project with the details, and only close
it after completing the steps above on scan service website. Any issues
closed without a fix or without ignoring the entry in the scan service will be
automatically reopened if the issue continues to be present in the code.

.. _Contribution workflow:

Contribution Workflow
*********************

One general practice we encourage, is to make small,
controlled changes. This practice simplifies review, makes merging and
rebasing easier, and keeps the change history clear and clean.

When contributing to the Zephyr Project, it is also important you provide as much
information as you can about your change, update appropriate documentation,
and test your changes thoroughly before submitting.

The general GitHub workflow used by Zephyr developers uses a combination of
command line Git commands and browser interaction with GitHub.  As it is with
Git, there are multiple ways of getting a task done.  We'll describe a typical
workflow here:

.. _Create a Fork of Zephyr:
   https://github.com/zephyrproject-rtos/zephyr#fork-destination-box

#. `Create a Fork of Zephyr`_
   to your personal account on GitHub. (Click on the fork button in the top
   right corner of the Zephyr project repo page in GitHub.)

#. On your development computer, change into the :file:`zephyr` folder that was
   created when you :ref:`obtained the code <get_the_code>`::

     cd zephyrproject/zephyr

   Rename the default remote pointing to the `upstream repository
   <https://github.com/zephyrproject-rtos/zephyr>`_ from ``origin`` to
   ``upstream``::

     git remote rename origin upstream

   Let Git know about the fork you just created, naming it ``origin``::

     git remote add origin https://github.com/<your github id>/zephyr

   and verify the remote repos::

     git remote -v

   The output should look similar to::

     origin   https://github.com/<your github id>/zephyr (fetch)
     origin   https://github.com/<your github id>/zephyr (push)
     upstream https://github.com/zephyrproject-rtos/zephyr (fetch)
     upstream https://github.com/zephyrproject-rtos/zephyr (push)

#. Create a topic branch (off of ``main``) for your work (if you're addressing
   an issue, we suggest including the issue number in the branch name)::

     git switch main
     git switch -c fix_comment_typo

   Some Zephyr subsystems do development work on a separate branch from
   ``main`` so you may need to indicate this in your checkout::

     git switch -c fix_out_of_date_patch origin/net

#. Make changes, test locally, change, test, test again, ...  (Check out the
   prior chapter on `twister`_ as well).

#. When things look good, start the pull request process by adding your changed
   files::

     git add [file(s) that changed, add -p if you want to be more specific]

   You can see files that are not yet staged using::

     git status

#. Verify changes to be committed look as you expected::

     git diff --cached

#. Commit your changes to your local repo::

     git commit -s

   The ``-s`` option automatically adds your ``Signed-off-by:`` to your commit
   message.  Your commit will be rejected without this line that indicates your
   agreement with the :ref:`DCO`.  See the :ref:`commit-guidelines` section for
   specific guidelines for writing your commit messages.

#. Push your topic branch with your changes to your fork in your personal
   GitHub account::

     git push origin fix_comment_typo

#. In your web browser, go to your forked repo and click on the
   ``Compare & pull request`` button for the branch you just worked on and
   you want to open a pull request with.

#. Review the pull request changes, and verify that you are opening a pull
   request for the ``main`` branch. The title and message from your commit
   message should appear as well.

#. A bot will assign one or more suggested reviewers (based on the
   MAINTAINERS file in the repo). If you are a project member, you can
   select additional reviewers now too.

#. Click on the submit button and your pull request is sent and awaits
   review.  Email will be sent as review comments are made, or you can check
   on your pull request at https://github.com/zephyrproject-rtos/zephyr/pulls.

#. While you're waiting for your pull request to be accepted and merged, you
   can create another branch to work on another issue. (Be sure to make your
   new branch off of ``main`` and not the previous branch.)::

     git switch main
     git switch -c fix_another_issue

   and use the same process described above to work on this new topic branch.

#. If reviewers do request changes to your patch, you can interactively rebase
   commit(s) to fix review issues. In your development repo::

     git rebase -i <offending-commit-id>^

   In the interactive rebase editor, replace ``pick`` with ``edit`` to select
   a specific commit (if there's more than one in your pull request), or
   remove the line to delete a commit entirely.  Then edit files to fix the
   issues in the review.

   As before, inspect and test your changes. When ready, continue the
   patch submission::

     git add [file(s)]
     git rebase --continue

   Update commit comment if needed, and continue::

     git push --force origin fix_comment_typo

   By force pushing your update, your original pull request will be updated
   with your changes so you won't need to resubmit the pull request.

#. After pushing the requested change, check on the PR page if there is a
   merge conflict. If so, rebase your local branch::

      git fetch --all
      git rebase --ignore-whitespace upstream/main

   The ``--ignore-whitespace`` option stops ``git apply`` (called by rebase)
   from changing any whitespace. Resolve the conflicts and push again::

      git push --force origin fix_comment_typo

   .. note:: While amending commits and force pushing is a common review model
      outside GitHub, and the one recommended by Zephyr, it's not the main
      model supported by GitHub. Forced pushes can cause unexpected behavior,
      such as not being able to use "View Changes" buttons except for the last
      one - GitHub complains it can't find older commits. You're also not
      always able to compare the latest reviewed version with the latest
      submitted version. When rewriting history GitHub only guarantees access
      to the latest version.

#. If the CI run fails, you will need to make changes to your code in order
   to fix the issues and amend your commits by rebasing as described above.
   Additional information about the CI system can be found in
   `Continuous Integration`_.

.. _contribution_tips:

Contribution Tips
=================

The following is a list of tips to improve and accelerate the review process of
Pull Requests. If you follow them, chances are your pull request will get the
attention needed and it will be ready for merge sooner than later:

.. _git-rebase:
   https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---keep-base

#. When pushing follow-up changes, use the ``--keep-base`` option of
   `git-rebase`_

#. On the PR page, check if the change can still be merged with no merge
   conflicts

#. Make sure title of PR explains what is being fixed or added

#. Make sure your PR has a body with more details about the content of your
   submission

#. Make sure you reference the issue you are fixing in the body of the PR

#. Watch early CI results immediately after submissions and fix issues as they
   are discovered

#. Revisit PR after 1-2 hours to see the status of all CI checks, make sure all
   is green

#. If you get request for changes and submit a change to address them, make
   sure you click the "Re-request review" button on the GitHub UI to notify
   those who asked for the changes

Identifying Contribution Origin
===============================

When adding a new file to the tree, it is important to detail the source of
origin on the file, provide attributions, and detail the intended usage. In
cases where the file is an original to Zephyr, the commit message should
include the following ("Original" is the assumption if no Origin tag is
present)::

      Origin: Original

In cases where the file is :ref:`imported from an external project
<external-contributions>`, the commit message shall contain details regarding
the original project, the location of the project, the SHA-id of the origin
commit for the file and the intended purpose.

For example, a copy of a locally maintained import::

      Origin: Contiki OS
      License: BSD 3-Clause
      URL: https://www.contiki-os.org/
      commit: 853207acfdc6549b10eb3e44504b1a75ae1ad63a
      Purpose: Introduction of networking stack.

For example, a copy of an externally maintained import in a module repository::

      Origin: Tiny Crypt
      License: BSD 3-Clause
      URL: https://github.com/01org/tinycrypt
      commit: 08ded7f21529c39e5133688ffb93a9d0c94e5c6e
      Purpose: Introduction of TinyCrypt

Contributions to External Modules
**********************************

Follow the guidelines in the :ref:`modules` section for contributing
:ref:`new modules <submitting_new_modules>` and
submitting changes to :ref:`existing modules <changes_to_existing_module>`.

.. _treewide-changes:

Treewide Changes
****************

This section describes contributions that are treewide changes and some
additional associated requirements that apply to them. These requirements exist
to try to give such changes increased review and user visibility due to their
large impact.

Definition and Decision Making
==============================

A *treewide change* is defined as any change to Zephyr APIs, coding practices,
or other development requirements that either implies required changes
throughout the zephyr source code repository or can reasonably be expected to
do so for a wide class of external Zephyr-based source code.

This definition is informal by necessity. This is because the decision on
whether any particular change is treewide can be subjective and may depend on
additional context.

Project maintainers should use good judgement and prioritize the Zephyr
developer experience when deciding when a proposed change is treewide.
Protracted disagreements can be resolved by the Zephyr Project's Technical
Steering Committee (TSC), but please avoid premature escalation to the TSC.

Requirements for Treewide Changes
=================================

- The zephyr repository must apply the 'treewide' GitHub label to any issues or
  pull requests that are treewide changes

- The person proposing a treewide change must create an `RFC issue
  <https://github.com/zephyrproject-rtos/zephyr/issues/new?assignees=&labels=RFC&template=003_rfc-proposal.yml>`_
  describing the change, its rationale and impact, etc. before any pull
  requests related to the change can be merged

- The project's `Architecture Working Group (WG)
  <https://github.com/zephyrproject-rtos/zephyr/wiki/Architecture-Working-Group>`_
  must include the issue on the agenda and discuss whether the project will
  accept or reject the change before any pull requests related to the change
  can be merged (with escalation to the TSC if consensus is not reached at the
  WG)

- The Architecture WG must specify the procedure for merging any PRs associated
  with each individual treewide change, including any required approvals for
  pull requests affecting specific subsystems or extra review time requirements

- The person proposing a treewide change must email
  devel@lists.zephyrproject.org about the RFC if it is accepted by the
  Architecture WG before any pull requests related to the change can be merged

Examples
========

Some example past treewide changes are:

- the deprecation of version 1 of the :ref:`Logging API <logging_api>` in favor
  of version 2 (see commit `262cc55609
  <https://github.com/zephyrproject-rtos/zephyr/commit/262cc55609b73ea61b5f999c6c6daaba20bc5240>`_)
- the removal of support for a legacy :ref:`dt-bindings` syntax
  (`6bf761fc0a
  <https://github.com/zephyrproject-rtos/zephyr/commit/6bf761fc0a2811b037abec0c963d60b00c452acb>`_)

Note that adding a new version of a widely used API while maintaining
support for the old one is not a treewide change. Deprecation and removal of
such APIs, however, are treewide changes.

Specialized driver requirements
*******************************

Drivers for standalone devices should use the Zephyr bus APIs (SPI, I2C...)
whenever possible so that the device can be used with any SoC from any vendor
implementing a compatible bus.

If it is not technically possible to achieve full performance using the Zephyr
APIs due to specialized accelerators in a particular SoC family, one could
extend the support for an external device by providing a specialized path for
that SoC family. However, the driver must still provide a regular path (via
Zephyr APIs) for all other SoCs. Every exception must be approved by the
Architecture WG in order to be validated and potentially to be learned/improved
from.

---

### Doc Contribute Index (`doc/contribute/index.rst`)

.. _contribute_to_zephyr:

Contributing to Zephyr
######################

Contributions from the community are the backbone of the project. Whether it is by submitting code,
improving documentation, or proposing new features, your efforts are highly appreciated. This page
lists useful resources and guidelines to help you in your contribution journey.

General Guidelines
==================

.. toctree::
   :maxdepth: 1
   :hidden:

   guidelines.rst
   contributor_expectations.rst
   reviewer_expectations.rst
   coding_guidelines/index.rst
   style/index.rst
   proposals_and_rfcs.rst
   modifying_contributions.rst
   pr_lifecycle_policy.rst


:ref:`contribute_guidelines`
   Learn about the overall process and guidelines for contributing to the Zephyr project.

   This page is a mandatory read for first-time contributors as it contains important information on
   how to ensure your contribution can be considered for inclusion in the project and potentially
   merged.

:ref:`contributor-expectations`
   This document is another mandatory read that describes the expected behavior of *all*
   contributors to the project.

:ref:`reviewer-expectations`
   This document is another mandatory read that describes the expected behavior when revieweing
   contributions to the project.

:ref:`coding_guidelines`
   Code contributions are expected to follow a set of coding guidelines to ensure consistency and
   readability across the code base.

:ref:`coding_style`
   Code contributions are expected to follow a set of style guidelines to ensure consistency and
   readability across the code base.

:ref:`rfcs`
   Learn when and how to submit RFCs (Request for Comments) for new features and changes to the
   project.

:ref:`modifying_contributions`
   Guidelines for modifying contributions made by other developers and how to deal with stale pull
   requests.

:ref:`pr_lifecycle_policy`
   Policy for keeping open pull requests focused on work that is actively progressing and likely to
   merge.

Documentation
=============

The Zephyr project thrives on good documentation. Whether it is as part of a code contribution or
as a standalone effort, contributing documentation is particularly valuable to the project.

.. toctree::
   :maxdepth: 1
   :hidden:

   documentation/guidelines.rst
   documentation/generation.rst

:ref:`doc_guidelines`
   This page provides some simple guidelines for writing documentation using the reSTructuredText
   (reST) markup language and Sphinx documentation generator.

:ref:`zephyr_doc`
   As you write documentation, it can be helpful to see how it will look when rendered.

   This page describes how to build the Zephyr documentation locally.


Dealing with external components
================================

.. toctree::
   :maxdepth: 1
   :hidden:

   external.rst
   bin_blobs.rst

:ref:`external-contributions`
   Basic functionality or features that would make useful addition to Zephyr might be readily
   available in other open source projects, and it is recommended and encouraged to reuse such code.
   This page describes in more details when and how to import external source code into Zephyr.

:ref:`external-tooling`
   Similarly, external tooling used during compilation, code analysis, testing or simulation, can be
   beneficial and is covered in this section.

:ref:`bin-blobs`
   As some functionality might only be made available with the help of executable code distributed
   in binary form, this page describes the process and guidelines for :ref:`contributing binary
   blobs <blobs-process>` to the project.

Need help along the way?
========================

If you have questions related to the contribution process, the Zephyr community is here to help.
You may join our Discord_ channel or use the `Developer Mailing List`_.


.. _Discord: https://chat.zephyrproject.org
.. _Developer Mailing List: https://lists.zephyrproject.org/g/devel

---

### Doc Contribute Modifying Contributions (`doc/contribute/modifying_contributions.rst`)

.. _modifying_contributions:

Modifying Contributions made by other developers
************************************************

Scenarios
#########

Zephyr contributors and collaborators are encouraged to assist
as reviewers in pull requests, so that patches may be approved and merged
to Zephyr's main branch as part of the original pull requests. The authors
of the pull requests are responsible for amending their original commits
following the review process.

There are occasions, however, when a contributor might need to modify patches
included in pull requests that are submitted by other Zephyr contributors.
For instance, this is the case when:

* a developer cherry-picks commits submitted by other contributors into their
  own pull requests in order to:

  * integrate useful content which is part of a stale pull request, or
  * get content merged to the project's main branch as part of a larger
    patch

* a developer pushes to a branch or pull request opened by another
  contributor in order to:

  * assist in updating pull requests in order to get the patches merged
    to the project's main branch
  * drive stale pull requests to completion so they can be merged


Accepted policies
#################

A developer who intends to cherry-pick and potentially modify patches sent by
another contributor shall:

* clarify in their pull request the reason for cherry-picking the patches,
  instead of assisting in getting the patches merged in their original
  pull request, and
* invite the original author of the patches to their pull request review.

A developer who intends to force-push to a branch or pull request of
another Zephyr contributor shall clarify in the pull request the reason
for pushing and for modifying the existing patches (e.g. stating that it
is done to drive the pull request review to completion, when the pull
request author is not able to do so).

.. note::
  Developers should try to limit the above practice to pull requests identified
  as *stale*. Read about how to identify pull requests as stale in
  :ref:`development processes and tools <dev-environment-and-tools>`

If the original patches are substantially modified, the developer can either:

* (preferably) reach out to the original author and request them to
  acknowledge that the modified patches may be merged while having
  the original sign-off line and author identity, or
* submit the modified patches as their *own* work (i.e. with their
  *own* sign-off line and author identity). In this case, the developer
  shall identify in the commit message(s) the original source the
  submitted work is based on (mentioning, for example, the original PR
  number).

.. note::
  Contributors should uncheck the box *“Allow Edits By Maintainers"*
  to indicate that they do not wish their patches to be amended,
  inside their original branch or pull request, by other Zephyr developers.

---

### Doc Contribute Pr Lifecycle Policy (`doc/contribute/pr_lifecycle_policy.rst`)

.. _pr_lifecycle_policy:

Pull Request Lifecycle Policy
#############################

This policy keeps the open pull request list focused on contributions that are actively
progressing and have a realistic path to merge.

Goals
*****

* Keep open pull requests manageable for contributors and maintainers.
* Prioritize review bandwidth for changes that are moving forward.
* Provide clear expectations for draft pull requests and inactive pull requests.

Scope
*****

This policy applies to all pull requests in the repository, including draft pull requests.

Definitions
***********

Active pull request
  A pull request with meaningful progress such as commits, review responses, or updates
  addressing requested changes.

Draft pull request
  A pull request opened for work in progress and early feedback.

Stalled pull request
  A pull request without meaningful activity inside the inactivity window.

Closed inactive pull request
  A pull request closed due to inactivity, supersession, or no clear merge path.

Draft Pull Request Expectations
*******************************

* Draft pull requests should include a clear problem statement, current status, and known gaps.
* Draft pull requests should move to ready-for-review within 30 days.
* If a draft pull request is inactive for 30 days, it may be marked stale and a reminder is posted.
* If there is no meaningful progress for 7 additional days after stale notice, the pull request
  may be closed.

Ready-for-Review Pull Request Expectations
******************************************

* Authors should respond to review feedback within 21 days.
* If a ready pull request has no meaningful activity for 30 days, it may be marked stale.
* If no meaningful update is made within 7 days after stale notice, the pull request
  may be closed.
* Pull requests with unresolved blocking feedback for more than 45 days may be closed if no
  concrete plan is provided.

What Counts as Meaningful Activity
**********************************

Examples of meaningful activity include:

* New commits that address review feedback.
* Concrete technical responses and follow-up updates.
* Significant revision updates that materially change the pull request.

Examples that typically do not count as meaningful activity include:

* Ping-only comments with no technical update.
* Trivial rebases with no substantive change.

Exceptions
**********

The following pull requests may be exempt from automatic inactive closure:

* Security-critical fixes.
* Release blockers.
* Pull requests explicitly waiting on an external dependency with a linked tracking item.

Exempt pull requests still need a status update at least every 30 days.

Superseded Pull Requests
************************

When work is replaced by another pull request:

* Close the old pull request as superseded.
* Link the replacement pull request.
* Add a short summary comment preserving context.

Reopening Closed Inactive Pull Requests
***************************************

Closing a pull request due to inactivity is an administrative step to keep the open list
manageable. It is not a rejection of the contribution.

Closed inactive pull requests may be reopened when:

* The author posts an updated plan.
* Prior blocking feedback is addressed.
* Maintainers confirm that review can continue.

Contributors are encouraged to reopen at any time when they can provide meaningful updates.

Responsibilities
****************

Contributors are expected to:

* Keep pull request descriptions up to date.
* Respond to review comments in a timely manner.
* Move draft pull requests to ready-for-review once they are reviewable.

Consult with the :ref:`contributor expectations <contributor-expectations>` document
for additional guidance.

Maintainers are expected to:

* Apply stale and closure decisions consistently.
* Provide clear blocking feedback.
* Close with explicit rationale and a reopen path.

Consult with the :ref:`maintainer responsibilities <maintainer>`  document for
additional guidance.

---

### Doc Contribute Proposals And Rfcs (`doc/contribute/proposals_and_rfcs.rst`)

.. _rfcs:

Proposals and RFCs
##################

Many changes, including bug fixes and documentation improvements can be
implemented and reviewed via the normal GitHub pull request workflow.

Many changes however are "substantial" and need to go through a
design process and produce a consensus among the project stakeholders.

The "RFC" (request for comments) process is intended to provide a consistent and
controlled path for new features to enter the project.

Contributors and project stakeholders should consider using this process if
they intend to make "substantial" changes to Zephyr or its documentation. Some
examples that would benefit from an RFC are:

- A new feature that creates new API surface area, and would require a feature
  flag if introduced.
- The modification of an existing stable API.
- The removal of features that already shipped as part of Zephyr.
- The introduction of new idiomatic usage or conventions, even if they do not
  include code changes to Zephyr itself.

The RFC process is a great opportunity to get more eyeballs on proposals coming
from contributors before it becomes a part of Zephyr. Quite often, even
proposals that seem "obvious" can be significantly improved once a wider group
of interested people have a chance to weigh in.

The RFC process can also be helpful to encourage discussions about a proposed
feature as it is being designed, and incorporate important constraints into the
design while it's easier to change, before the design has been fully
implemented.

For a Major Feature, first open an issue and outline your proposal so that it
can be discussed. This will also allow us to better coordinate our efforts,
prevent duplication of work, and help you to craft the change so that it is
successfully accepted into the project. Providing the following information
will increase the chances of your issue being dealt with quickly:

  * Overview of the Proposal
  * Motivation for or Use Case
  * Design Details
  * Alternatives
  * Test Strategy

Some changes or contributions do not require an RFC, the rationale and details
of the changes should however be part of the pull-request:

- Small enhancements and modifications to existing and established subsystems.
- Rephrasing, reorganizing or refactoring
- Addition or removal of warnings
- Addition of new boards, SoCs or drivers to existing subsystems
- ...

The process in itself consists in creating a GitHub issue with the :ref:`RFC
label <gh_labels>` that documents the proposal thoroughly. You are encouraged
to use the `RFC form`_ to make sure the proposal follows a template which
project participants are already familiar with.

As with Pull Requests, RFCs might require discussion in the context of one of
the `Zephyr meetings`_ in order to move it forward in cases where there is
either disagreement or not enough voiced opinions in order to proceed. Make sure
to either label it appropriately or include it in the corresponding GitHub
project in order for it to be examined during the next meeting.

.. _`RFC form`: https://github.com/zephyrproject-rtos/zephyr/issues/new?template=003_rfc-proposal.yml
.. _`Zephyr meetings`: https://github.com/zephyrproject-rtos/zephyr/wiki/Zephyr-Committee-and-Working-Groups

---

### Doc Contribute Reviewer Expectations (`doc/contribute/reviewer_expectations.rst`)

.. _reviewer-expectations:

Reviewer Expectations
#####################

- Be respectful when commenting on PRs. Refer to the Zephyr `Code of Conduct`_
  for more details.

- The Zephyr Project recognizes that reviewers and maintainers have limited
  bandwidth. As a reviewer, prioritize review requests in the following order:

    #. PRs related to items in the `Zephyr Release Plan`_ or those targeting
       the next release during the stabilization period (after RC1).
    #. PRs where the reviewer has requested blocking changes.
    #. PRs assigned to the reviewer as the area maintainer.
    #. All other PRs.

- Reviewers shall strive to advance the PR to a mergeable state with their
  feedback and engagement with the PR author.

- Try to provide feedback on the entire PR in one shot. This provides the
  contributor an opportunity to address all comments in the next PR update.

- Partial reviews are permitted, but the reviewer must add a comment indicating
  what portion of the PR they reviewed. Examples of useful partial reviews
  include:

  - Domain specific reviews (e.g. Devicetree).
  - Code style changes that impact the readability of the PR.
  - Reviewing commits separately when the requested changes cascade into the
    later commits.

- Avoid increasing scope of the PR by requesting new features, especially when
  there is a corresponding :ref:`RFC <rfcs>` associated with the PR. Instead,
  reviewers should add suggestions as a comment to the :ref:`RFC <rfcs>`. This
  also encourages more collaboration as it is easier for multiple contributors
  to work on a feature once the minimum implementation has merged.

- When using the "Request Changes" option, mark trivial, non-functional,
  requests as "Non-blocking" in the comment. Reviewers should approve PRs once
  only non-blocking changes remain. The PR author has discretion as to whether
  they address all non-blocking comments. PR authors should acknowledge every
  review comment in some way, even if it's just with an emoticon.

- Style changes that the reviewer disagrees with but that are not documented as
  part of the project can be pointed out as non-blocking, but cannot constitute
  a reason for a request for changes. The reviewer can optionally correct any
  potential inconsistencies in the tree, document the new guidelines or rules,
  and then enforce them as part of the review.

- Whenever requesting style related changes, reviewers should be able to point
  out the corresponding guideline, rule or rationale in the project's
  documentation.  This does not apply to certain types of requests for changes,
  notably those specific to the changes being submitted (e.g. the use of a
  particular data structure or the choice of locking primitives).

- Reviewers shall be *clear* about what changes they are requesting when the
  "Request Changes" option is used. Requested changes shall be in the scope of
  the PR in question and following the contribution and style guidelines of the
  project. Furthermore, reviewers must be able to point back to the exact issues
  in the PR that triggered a request for changes.

- Reviewers should not request changes for issues which are automatically
  caught by CI, as this causes the pull request to remain blocked even after CI
  failures have been addressed and may unnecessarily delay it from being merged.

- Reviewers shall not close a PR due to technical or structural disagreement.
  If requested changes cannot be resolved within the review process, the
  :ref:`pr_technical_escalation` path shall be used for any potential resolution
  path, which may include closing the PR.

- When using AI tools to assist in reviewing code or drafting responses:

  - Reviewers are responsible for following up on comments generated by the AI
    tools they may be using (e.g. GitHub Copilot).
  - Reviewers must never paste raw, unverified LLM output as a PR comment.
  - In general: all AI-generated feedback must be vetted, verified, and
    contextualized by a human reviewer who assumes full accountability for the
    accuracy and tone of the comment or review.

.. _Code of Conduct: https://github.com/zephyrproject-rtos/zephyr/blob/main/CODE_OF_CONDUCT.md

.. _Zephyr Release Plan: https://github.com/orgs/zephyrproject-rtos/projects/13

---

### Doc Develop Beyond GSG (`doc/develop/beyond-GSG.rst`)

.. _beyond-gsg:

Beyond the Getting Started Guide
################################

The :ref:`getting_started` gives a straight-forward path to set up
your Linux, macOS, or Windows environment for Zephyr development. In
this document, we delve deeper into Zephyr development setup
issues and alternatives.

.. _python-pip:

Python and pip
**************

Python 3 and its package manager, pip\ [#pip]_, are used extensively by Zephyr
to install and run scripts required to compile and run Zephyr
applications, set up and maintain the Zephyr development environment,
and build project documentation.

Depending on your operating system, you may need to provide the
``--user`` flag to the ``pip3`` command when installing new packages. This is
documented throughout the instructions.
See `Installing Packages`_ in the Python Packaging User Guide for more
information about pip\ [#pip]_, including `information on -\\-user`_.

- On Linux, make sure ``~/.local/bin`` is at the front of your :envvar:`PATH`
  :ref:`environment variable <env_vars>`, or programs installed with ``--user``
  won't be found. Installing with ``--user`` avoids conflicts between pip
  and the system package manager, and is the default on Debian-based
  distributions.

- On macOS, `Homebrew disables -\\-user`_.

- On Windows, see the `Installing Packages`_ information on ``--user`` if you
  require using this option.

On all operating systems, pip's ``-U`` flag installs or updates the package if the
package is already installed locally but a more recent version is available. It
is good practice to use this flag if the latest version of a package is
required.  (Check the :zephyr_file:`scripts/requirements.txt` file to
see if a specific Python package version is expected.)

Advanced Platform Setup
***********************

Here are some alternative instructions for more advanced platform setup
configurations for supported development platforms:

.. toctree::
   :maxdepth: 1

   Linux setup alternatives <getting_started/installation_linux.rst>
   macOS setup alternatives <getting_started/installation_mac.rst>
   Windows setup alternatives <getting_started/installation_win.rst>

.. _gs_toolchain:

Install a Toolchain
*******************

Zephyr binaries are compiled and linked by a *toolchain* comprised of
a cross-compiler and related tools which are different from the compiler
and tools used for developing software that runs natively on your host
operating system.

You can install the :ref:`Zephyr SDK <toolchain_zephyr_sdk>` to get toolchains for all
supported architectures, or install an :ref:`alternate toolchain <toolchains>`
recommended by the SoC vendor or a specific board (check your specific
:ref:`board-level documentation <boards>`).

You can configure the Zephyr build system to use a specific toolchain by
setting :ref:`environment variables <env_vars>` such as
:envvar:`ZEPHYR_TOOLCHAIN_VARIANT <{TOOLCHAIN}_TOOLCHAIN_PATH>` to a supported
value, along with additional variable(s) specific to the toolchain variant.

.. _gs_toolchain_update:

Updating the Zephyr SDK toolchain
*********************************

When updating Zephyr SDK, check whether the :envvar:`ZEPHYR_TOOLCHAIN_VARIANT`
or :envvar:`ZEPHYR_SDK_INSTALL_DIR` environment variables are already set.

* If the variables are not set, the latest compatible version of Zephyr SDK will be selected
  by default. Proceed to next step without making any changes.

* If :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` is set, the corresponding toolchain will be selected
  at build time. Zephyr SDK is identified by the value ``zephyr``.
  If the :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` environment variable is not ``zephyr``, then either
  unset it or change its value to ``zephyr`` to make sure Zephyr SDK is selected.

* If the :envvar:`ZEPHYR_SDK_INSTALL_DIR` environment variable is set, it will override
  the default lookup location for Zephyr SDK. If you install Zephyr SDK to one
  of the :ref:`recommended locations <toolchain_zephyr_sdk_bundle_variables>`,
  you can unset this variable. Otherwise, set it to your chosen install location.

For more information about these environment variables in Zephyr, see :ref:`env_vars_important`.

Cloning the Zephyr Repositories
*******************************

The Zephyr project source is maintained in the `GitHub zephyr repo
<https://github.com/zephyrproject-rtos/zephyr>`_. External modules used
by Zephyr are found in the parent `GitHub Zephyr project
<https://github.com/zephyrproject-rtos/>`_.  Because of these
dependencies, it's convenient to use the Zephyr-created :ref:`west
<west>` tool to fetch and manage the Zephyr and external module source
code.  See :ref:`west-basics` for more details.

Once your development tools are installed, use :ref:`west` to create,
initialize, and download sources from the zephyr and external module
repos.  We'll use the name ``zephyrproject``, but you can choose any
name that does not contain a space anywhere in the path.

.. code-block:: console

   west init zephyrproject
   cd zephyrproject
   west update

The ``west update`` command fetches and keeps :ref:`modules` in the
:file:`zephyrproject` folder in sync with the code in the local zephyr
repo.

.. warning::

   You must run ``west update`` any time the :file:`zephyr/west.yml`
   changes, caused, for example, when you pull the :file:`zephyr`
   repository, switch branches in it, or perform a ``git bisect`` inside of
   it.

Keeping Zephyr updated
======================

To update the Zephyr project source code, you need to get the latest
changes via ``git``. Afterwards, run ``west update`` as mentioned in
the previous paragraph.
Additionally, check for updated or added Python dependencies.

.. tabs::

   .. group-tab:: Linux/macOS

      .. code-block:: console

         # replace zephyrproject with the path you gave west init
         cd zephyrproject/zephyr
         git pull
         west update
         west packages pip --install

   .. group-tab:: Windows

      .. tabs::

         .. code-tab:: bat

            :: replace zephyrproject with the path you gave west init
            cd zephyrproject\zephyr
            git pull
            west update
            cmd /c scripts\utils\west-packages-pip-install.cmd

         .. code-tab:: powershell

            # replace zephyrproject with the path you gave west init
            cd zephyrproject\zephyr
            git pull
            west update
            python -m pip install @((west packages pip) -split ' ')

Export Zephyr CMake package
***************************

The :ref:`cmake_pkg` can be exported to CMake's user package registry if it has
not already been done as part of :ref:`getting_started`.

.. _gs-board-aliases:

Board Aliases
*************

Developers who work with multiple boards may find explicit board names
cumbersome and want to use aliases for common targets.  This is
supported by a CMake file with content like this:

.. code-block:: cmake

   # Variable foo_BOARD_ALIAS=bar replaces BOARD=foo with BOARD=bar and
   # sets BOARD_ALIAS=foo in the CMake cache.
   set(pca10028_BOARD_ALIAS nrf51dk/nrf51822)
   set(pca10056_BOARD_ALIAS nrf52840dk/nrf52840)
   set(k64f_BOARD_ALIAS frdm_k64f)
   set(sltb004a_BOARD_ALIAS efr32mg_sltb004a)

and specifying its location in :envvar:`ZEPHYR_BOARD_ALIASES`.  This
enables use of aliases ``pca10028`` in contexts like
``cmake -DBOARD=pca10028`` and ``west -b pca10028``.

Build and Run an Application
****************************

You can build, flash, and run Zephyr applications on real
hardware using a supported host system. Depending on your operating system,
you can also run it in emulation with QEMU, or as a native application with
:zephyr:board:`native_sim <native_sim>`.
Additional information about building applications can be found in the
:ref:`build_an_application` section.

Build Blinky
============

Let's build the :zephyr:code-sample:`blinky` sample application.

Zephyr applications are built to run on specific hardware, called a
"board"\ [#board_misnomer]_. We'll use the Phytec
:zephyr:board:`reel_board<reel_board>` here, but you can change the
``reel_board`` build target to another value if you have a different
board. See :ref:`boards` or run ``west boards`` from anywhere inside
the ``zephyrproject`` directory for a list of supported boards.

#. Go to the zephyr repository:

   .. code-block:: console

      cd zephyrproject/zephyr

#. Build the blinky sample for the ``reel_board``:

   .. zephyr-app-commands::
      :zephyr-app: samples/basic/blinky
      :board: reel_board
      :goals: build

The main build products will be in :file:`build/zephyr`;
:file:`build/zephyr/zephyr.elf` is the blinky application binary in ELF
format. Other binary formats, disassembly, and map files may be present
depending on your board.

The other sample applications in the :zephyr_file:`samples` folder are
documented in :zephyr:code-sample-category:`samples`.

.. note:: If you want to reuse an
   existing build directory for another board or application, you need to
   add the parameter ``-p=auto`` to ``west build`` to clean out settings
   and artifacts from the previous build.

Run the Application by Flashing to a Board
==========================================

Most hardware boards supported by Zephyr can be flashed by running
``west flash``. This may require board-specific tool installation and
configuration to work properly.

See :ref:`application_run` and your specific board's documentation in
:ref:`boards` for additional details.

.. _setting-udev-rules:

Setting udev rules
===================

Flashing a board requires permission to directly access the board
hardware, usually managed by installation of the flashing tools.  On
Linux systems, if the ``west flash`` command fails, you likely need to
define udev rules to grant the needed access permission.

Udev is a device manager for the Linux kernel and the udev daemon
handles all user space events raised when a hardware device is added (or
removed) from the system.  We can add a rules file to grant access
permission by non-root users to certain USB-connected devices.

The OpenOCD (On-Chip Debugger) project conveniently provides a rules
file that defined board-specific rules for most Zephyr-supported
arm-based boards, so we recommend installing this rules
file by downloading it from their sourceforge repo, or if you've
installed the Zephyr SDK there is a copy of this rules file in the SDK
folder:

* Either download the OpenOCD rules file and copy it to the right
  location::

     wget -O 60-openocd.rules https://sf.net/p/openocd/code/ci/master/tree/contrib/60-openocd.rules?format=raw
     sudo cp 60-openocd.rules /etc/udev/rules.d

* or copy the rules file from the Zephyr SDK folder::

     sudo cp ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d

Then, in either case, ask the udev daemon to reload these rules::

   sudo udevadm control --reload

Unplug and plug in the USB connection to your board, and you should have
permission to access the board hardware for flashing. Check your
board-specific documentation (:ref:`boards`) for further information if
needed.

Run the Application in QEMU
===========================

You can run Zephyr applications via emulation on your host system using
`QEMU <https://www.qemu.org/>`_ when targeting either the x86 or ARM
Cortex-M3 architectures. QEMU is included with the Zephyr SDK.

If using a manual QEMU installation, ensure it is available in the system
``PATH`` environment variable.

``QEMU_BIN_PATH`` can be used as an optional override to specify the
location of QEMU binaries used by Twister. When provided, Twister
validates that the specified path exists. Otherwise, Twister relies on
SDK or other QEMU discovery mechanisms.

For example, you can build and run the :zephyr:code-sample:`hello_world` sample using
the x86 emulation board configuration (``qemu_x86``), with:

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :host-os: unix
   :board: qemu_x86
   :goals: build run

To exit QEMU, type :kbd:`Ctrl-a`, then :kbd:`x`.

Use ``qemu_cortex_m3`` to target an emulated Arm Cortex-M3 sample.

.. _gs_native:

Run a Sample Application natively (Linux)
=========================================

You can compile some samples to run as host programs
on Linux. See :zephyr:board:`native_sim` for more information. On 64-bit host operating systems, you
need to install a 32-bit C library, or build targeting :ref:`native_sim/native/64<native_sim32_64>`.

First, build Hello World for ``native_sim``.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :host-os: unix
   :board: native_sim
   :goals: build

Next, run the application.

.. code-block:: console

   west build -t run
   # or just run zephyr.exe directly:
   ./build/zephyr/zephyr.exe

Press :kbd:`Ctrl-C` to exit.

You can run ``./build/zephyr/zephyr.exe --help`` to get a list of available
options.

This executable can be instrumented using standard tools, such as gdb or
valgrind.

.. rubric:: Footnotes

.. [#pip]

   pip is Python's package installer. Its ``install`` command first tries to
   reuse packages and package dependencies already installed on your computer.
   If that is not possible, ``pip install`` downloads them from the Python
   Package Index (PyPI) on the Internet.

   The package versions requested by Zephyr's :file:`requirements.txt` may
   conflict with other requirements on your system, in which case you may
   want to set up a virtualenv for Zephyr development.

.. [#board_misnomer]

   This has become something of a misnomer over time. While the target can be,
   and often is, a microprocessor running on its own dedicated hardware
   board, Zephyr also supports using QEMU to run targets built for other
   architectures in emulation, targets which produce native host system
   binaries that implement Zephyr's driver interfaces with POSIX APIs, and even
   running different Zephyr-based binaries on CPU cores of differing
   architectures on the same physical chip. Each of these hardware
   configurations is called a "board," even though that doesn't always make
   perfect sense in context.

.. _information on -\\-user:
 https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
.. _Homebrew disables -\\-user:
 https://docs.brew.sh/Homebrew-and-Python#note-on-pip-install---user
.. _Installing Packages:
 https://packaging.python.org/tutorials/installing-packages/

---

### Doc Develop Env Vars (`doc/develop/env_vars.rst`)

.. _env_vars:

Environment Variables
=====================

Various pages in this documentation refer to setting Zephyr-specific
environment variables. This page describes how.

Setting Variables
*****************

Option 1: Just Once
-------------------

To set the environment variable ``MY_VARIABLE`` to ``foo`` for the
lifetime of your current terminal window:

.. tabs::

   .. group-tab:: Linux/macOS

      .. code-block:: console

         export MY_VARIABLE=foo

   .. group-tab:: Windows

      .. code-block:: console

         set MY_VARIABLE=foo

.. warning::

  This is best for experimentation. If you close your terminal window, use
  another terminal window or tab, restart your computer, etc., this setting
  will be lost forever.

  Using options 2 or 3 is recommended if you want to keep using the setting.

Option 2: In all Terminals
--------------------------

.. tabs::

   .. group-tab:: Linux/macOS

      Add the ``export MY_VARIABLE=foo`` line to your shell's startup script in
      your home directory. For Bash, this is usually :file:`~/.bashrc` on Linux
      or :file:`~/.bash_profile` on macOS.  Changes in these startup scripts
      don't affect shell instances already started; try opening a new terminal
      window to get the new settings.

   .. group-tab:: Windows

      You can use the ``setx`` program in ``cmd.exe`` or the third-party RapidEE
      program.

      To use ``setx``, type this command, then close the terminal window. Any
      new ``cmd.exe`` windows will have ``MY_VARIABLE`` set to ``foo``.

      .. code-block:: console

         setx MY_VARIABLE foo

      To install RapidEE, a freeware graphical environment variable editor,
      `using Chocolatey`_ in an Administrator command prompt:

      .. code-block:: console

         choco install rapidee

      You can then run ``rapidee`` from your terminal to launch the program and set
      environment variables. Make sure to use the "User" environment variables area
      -- otherwise, you have to run RapidEE as administrator. Also make sure to save
      your changes by clicking the Save button at top left before exiting. Settings
      you make in RapidEE will be available whenever you open a new terminal window.

.. _env_vars_zephyrrc:

Option 3: Using ``zephyrrc`` files
----------------------------------

Choose this option if you don't want to make the variable's setting available
to all of your terminals, but still want to save the value for loading into
your environment when you are using Zephyr.

.. tabs::

   .. group-tab:: Linux/macOS

      Zephyr supports multiple locations for your :file:`zephyrrc` file,
      following the XDG Base Directory Specification when possible. Create a
      zephyrrc file in one of the following locations (they will be checked in
      order):

      #. :file:`$XDG_CONFIG_HOME/zephyr/zephyrrc`
      #. :file:`$HOME/.config/zephyr/zephyrrc`
      #. :file:`$HOME/.zephyrrc`

      Add this line to the file in your preferred location:

      .. code-block:: console

         export MY_VARIABLE=foo

      To get this value back into your current terminal environment, **you must
      run** ``source zephyr-env.sh`` from the main ``zephyr`` repository. Among
      other things, this script sources your :file:`zephyrrc` (the first one it
      finds from the list of locations above).

      The value will be lost if you close the window, etc.; run ``source
      zephyr-env.sh`` again to get it back.

   .. group-tab:: Windows

      Add the line ``set MY_VARIABLE=foo`` to the file
      :file:`%userprofile%\\zephyrrc.cmd` using a text editor such as Notepad to
      save the value.

      To get this value back into your current terminal environment, **you must
      run** ``zephyr-env.cmd`` in a ``cmd.exe`` window after changing directory
      to the main ``zephyr`` repository.  Among other things, this script runs
      :file:`%userprofile%\\zephyrrc.cmd`.

      The value will be lost if you close the window, etc.; run
      ``zephyr-env.cmd`` again to get it back.

      These scripts:

      - set :envvar:`ZEPHYR_BASE` to the location of the zephyr repository
      - adds some Zephyr-specific locations (such as zephyr's :file:`scripts`
        directory) to your :envvar:`PATH` environment variable
      - loads any settings from the ``zephyrrc`` files described above in
        :ref:`env_vars_zephyrrc`.

      You can thus use them any time you need any of these settings.

.. _zephyr-env:

Zephyr Environment Scripts
**************************

You can use the zephyr repository scripts ``zephyr-env.sh`` (for macOS and
Linux) and ``zephyr-env.cmd`` (for Windows) to load Zephyr-specific settings
into your current terminal's environment. To do so, run this command from the
zephyr repository:

.. tabs::

   .. group-tab:: Linux/macOS

      .. code-block:: console

         source zephyr-env.sh

   .. group-tab:: Windows

      .. code-block:: console

         zephyr-env.cmd

These scripts:

- set :envvar:`ZEPHYR_BASE` to the location of the zephyr repository
- adds some Zephyr-specific locations (such as zephyr's :file:`scripts`
  directory) to your ``PATH`` environment variable
- loads any settings from the ``zephyrrc`` files described above in
  :ref:`env_vars_zephyrrc`.

You can thus use them any time you need any of these settings.

.. _env_vars_important:

Important Environment Variables
*******************************

Some :ref:`important-build-vars` can also be set in the environment. Here
is a description of some of these important environment variables. This is not
a comprehensive list.

.. envvar:: BOARD

   See :ref:`important-build-vars`.

.. envvar:: CONF_FILE

   See :ref:`important-build-vars`.

.. envvar:: SHIELD

   See :ref:`shields`.

.. envvar:: ZEPHYR_BASE

   See :ref:`important-build-vars`.

.. envvar:: EXTRA_ZEPHYR_MODULES

   See :ref:`important-build-vars`.

.. envvar:: ZEPHYR_MODULES

   See :ref:`important-build-vars`.

.. envvar:: ZEPHYR_BOARD_ALIASES

   See :ref:`gs-board-aliases`

The following additional environment variables are significant when configuring
the :ref:`toolchain <gs_toolchain>` used to build Zephyr applications.

.. envvar:: ZEPHYR_SDK_INSTALL_DIR

   Path where Zephyr SDK is installed.

.. envvar:: ZEPHYR_TOOLCHAIN_VARIANT

   The name of the toolchain to use.

.. envvar:: {TOOLCHAIN}_TOOLCHAIN_PATH

   Path to the toolchain specified by :envvar:`ZEPHYR_TOOLCHAIN_VARIANT`. For
   example, if ``ZEPHYR_TOOLCHAIN_VARIANT=host/llvm``, use
   ``LLVM_TOOLCHAIN_PATH``.  (Note the capitalization when forming the
   environment variable name.)

You might need to update some of these variables when you
:ref:`update the Zephyr SDK toolchain <gs_toolchain_update>`.

Emulators and boards may also depend on additional programs. The build system
will try to locate those programs automatically, but may rely on additional
CMake or environment variables to do so. Please consult your emulator's or
board's documentation for more information. The following environment variables
may be useful in such situations:

.. envvar:: PATH

   ``PATH`` is an environment variable used on Unix-like or Microsoft Windows
   operating systems to specify a set of directories where executable programs
   are located.

.. _using Chocolatey: https://chocolatey.org/packages/RapidEE

---

### Doc Develop Index (`doc/develop/index.rst`)

.. _developing_with_zephyr:

Developing with Zephyr
######################

.. toctree::
   :maxdepth: 1

   getting_started/index.rst
   beyond-GSG.rst
   env_vars.rst
   application/index.rst
   debug/index.rst
   api/index.rst
   languages/index.rst
   optimizations/index
   flash_debug/index
   modules.rst
   west/index
   twister/index
   test/index
   sca/index
   toolchains/index
   tools/index

---

### Doc Develop Modules (`doc/develop/modules.rst`)

.. _modules:

Modules (External projects)
############################

Zephyr relies on the source code of several externally maintained projects in
order to avoid reinventing the wheel and to reuse as much well-established,
mature code as possible when it makes sense. In the context of Zephyr's build
system those are called *modules*. These modules must be integrated with the
Zephyr build system, as described in more detail in other sections on
this page.

To be classified as a candidate for being included in the default list of
modules, an external project is required to have its own life-cycle outside
the Zephyr Project, that is, reside in its own repository, and have its own
contribution and maintenance workflow and release process. Zephyr modules
should not contain code that is written exclusively for Zephyr. Instead,
such code should be contributed to the main zephyr tree.

Modules to be included in the default manifest of the Zephyr project need to
provide functionality or features endorsed and approved by the project Technical
Steering Committee and should comply with the
:ref:`module licensing requirements<modules_licensing>` and
:ref:`contribution guidelines<modules_contributing>`. They should also have a
Zephyr developer that is committed to maintain the module codebase.

Zephyr depends on several categories of modules, including but not limited to:

- Debugger integration
- Silicon vendor Hardware Abstraction Layers (HALs)
- Cryptography libraries
- File Systems
- Inter-Process Communication (IPC) libraries

Additionally, in some cases modules (particularly vendor HALs) can contain
references to optional :ref:`binary blobs <bin-blobs>`.

This page summarizes a list of policies and best practices which aim at
better organizing the workflow in Zephyr modules.

.. _modules-vs-projects:

Modules vs west projects
************************

Zephyr modules, described in this page, are not the same as :ref:`west projects
<west-workspace>`. In fact, modules :ref:`do not require west
<modules_without_west>` at all. However, when using modules :ref:`with west
<modules_using_west>`, then the build system uses west in order to find modules.

In summary:

Modules are repositories that contain a :file:`zephyr/module.yml` file, so that
the Zephyr build system can pull in the source code from the repository.
:ref:`West projects <west-manifests-projects>` are entries in the ``projects:``
section in the :file:`west.yml` manifest file.
West projects are often also modules, but not always. There are west projects
that are not included in the final firmware image (eg. tools) and thus do not
need to be modules.
Modules are found by the Zephyr build system either via :ref:`west itself
<modules_using_west>`, or via the :ref:`ZEPHYR_MODULES CMake variable
<modules_without_west>`.

The contents of this page only apply to modules, and not to west projects in
general (unless they are a module themselves).

Module Repositories
*******************

* All modules included in the default manifest shall be hosted in repositories
  under the zephyrproject-rtos GitHub organization.

* The module repository codebase shall include a *module.yml* file in a
  :file:`zephyr/` folder at the root of the repository.

* Module repository names should follow the convention of using lowercase
  letters and dashes instead of underscores. This rule will apply to all
  new module repositories, except for repositories that are directly
  tracking external projects (hosted in Git repositories); such modules
  may be named as their external project counterparts.

  .. note::

     Existing module repositories that do not conform to the above convention
     do not need to be renamed to comply with the above convention.

* Module repositories names should be explicitly set in the :file:`zephyr/module.yml` file.

* Modules should use "zephyr" as the default name for the repository main
  branch. Branches for specific purposes, for example, a module branch for
  an LTS Zephyr version, shall have names starting with the 'zephyr\_' prefix.

* If the module has an external (upstream) project repository, the module
  repository should preserve the upstream repository folder structure.

  .. note::

     It is not required in module repositories to maintain a 'master'
     branch mirroring the master branch of the external repository. It
     is not recommended as this may generate confusion around the module's
     main branch, which should be 'zephyr'.

* Modules should expose all provided header files with an include pathname
  beginning with the module-name.  (E.g., mcuboot should expose its
  ``bootutil/bootutil.h`` as "mcuboot/bootutil/bootutil.h".)

.. _modules_synchronization:

Synchronizing with upstream
===========================

It is preferred to synchronize a module repository with the latest stable
release of the corresponding external project. It is permitted, however, to
update a Zephyr module repository with the latest development branch tip,
if this is required to get important updates in the module codebase. When
synchronizing a module with upstream it is mandatory to document the
rationale for performing the particular update.

Requirements for allowed practices
----------------------------------

Changes to the main branch of a module repository, including synchronization
with upstream code base, may only be applied via pull requests. These pull
requests shall be *verifiable* by Zephyr CI and *mergeable* (e.g. with the
*Rebase and merge*, or *Create a merge commit* option using Github UI). This
ensures that the incoming changes are always **reviewable**, and the
*downstream* module repository history is incremental (that is, existing
commits, tags, etc. are always preserved). This policy also allows to run
Zephyr CI, git lint, identity, and license checks directly on the set of
changes that are to be brought into the module repository.

.. note::

     Force-pushing to a module's main branch is not allowed.

Allowed practices
-----------------

The following practices conform to the above requirements and should be
followed in all modules repositories. It is up to the module code owner
to select the preferred synchronization practice, however, it is required
that the selected practice is consistently followed in the respective
module repository.

**Updating modules with a diff from upstream:**
Upstream changes brought as a single *snapshot* commit (manual diff) in a
pull request against the module's main branch, which may be merged using
the *Rebase & merge* operation. This approach is simple and
should be applicable to all modules with the downside of suppressing the
upstream history in the module repository.

  .. note::

     The above practice is the only allowed practice in modules where
     the external project is not hosted in an upstream Git repository.

The commit message is expected to identify the upstream project URL, the
version to which the module is updated (upstream version, tag, commit SHA,
if applicable, etc.), and the reason for the doing the update.

**Updating modules by merging the upstream branch:**
Upstream changes brought in by performing a Git merge of the intended upstream
branch (e.g. main branch, latest release branch, etc.) submitting the result in
pull request against the module main branch, and merging the pull request using
the *Create a merge commit* operation.
This approach is applicable to modules with an upstream project Git repository.
The main advantages of this approach is that the upstream repository history
(that is, the original commit SHAs) is preserved in the module repository. The
downside of this approach is that two additional merge commits are generated in
the downstream main branch.


Contributing to Zephyr modules
******************************

.. _modules_contributing:


Individual Roles & Responsibilities
===================================

To facilitate management of Zephyr module repositories, the following
individual roles are defined.

**Administrator:** Each Zephyr module shall have an administrator
who is responsible for managing access to the module repository,
for example, for adding individuals as Collaborators in the repository
at the request of the module owner. Module administrators are
members of the Administrators team, that is a group of project
members with admin rights to module GitHub repositories.

**Module owner:** Each module shall have a module code owner. Module
owners will have the overall responsibility of the contents of a
Zephyr module repository. In particular, a module owner will:

* coordinate code reviewing in the module repository
* be the default assignee in pull-requests against the repository's
  main branch
* request additional collaborators to be added to the repository, as
  they see fit
* regularly synchronize the module repository with its upstream
  counterpart following the policies described in
  :ref:`modules_synchronization`
* be aware of security vulnerability issues in the external project
  and update the module repository to include security fixes, as
  soon as the fixes are available in the upstream code base
* list any known security vulnerability issues, present in the
  module codebase, in Zephyr release notes.


  .. note::

     Module owners are not required to be Zephyr
     :ref:`Maintainers <project_roles>`.

**Merger:** The Zephyr Release Engineering team has the right and the
responsibility to merge approved pull requests in the main branch of a
module repository.


Maintaining the module codebase
===============================

Updates in the zephyr main tree, for example, in public Zephyr APIs,
may require patching a module's codebase. The responsibility for keeping
the module codebase up to date is shared between the **contributor** of
such updates in Zephyr and the module **owner**. In particular:

* the contributor of the original changes in Zephyr is required to submit
  the corresponding changes that are required in module repositories, to
  ensure that Zephyr CI on the pull request with the original changes, as
  well as the module integration testing are successful.

* the module owner has the overall responsibility for synchronizing
  and testing the module codebase with the zephyr main tree.
  This includes occasional advanced testing of the module's codebase
  in addition to the testing performed by Zephyr's CI.
  The module owner is required to fix issues in the module's codebase that
  have not been caught by Zephyr pull request CI runs.


.. _modules_changes:

Contributing changes to modules
===============================

Submitting and merging changes directly to a module's codebase, that is,
before they have been merged in the corresponding external project
repository, should be limited to:

* changes required due to updates in the zephyr main tree
* urgent changes that should not wait to be merged in the external project
  first, such as fixes to security vulnerabilities.

Non-trivial changes to a module's codebase, including changes in the module
design or functionality should be discouraged, if the module has an upstream
project repository. In that case, such changes shall be submitted to the
upstream project, directly.

:ref:`Submitting changes to modules <submitting_new_modules>` describes in
detail the process of contributing changes to module repositories.

Contribution guidelines
-----------------------

Contributing to Zephyr modules shall follow the generic project
:ref:`Contribution guidelines <contribute_guidelines>`.

**Pull Requests:** may be merged with minimum of 2 approvals, including
an approval by the PR assignee. In addition to this, pull requests in module
repositories may only be merged if the introduced changes are verified
with Zephyr CI tools, as described in more detail in other sections on
this page.

The merging of pull requests in the main branch of a module
repository must be coupled with the corresponding manifest
file update in the zephyr main tree.

**Issue Reporting:** `GitHub issues`_ are intentionally disabled in module
repositories, in
favor of a centralized policy for issue reporting. Tickets concerning, for
example, bugs or enhancements in modules shall be opened in the main
zephyr repository. Issues should be appropriately labeled using GitHub
labels corresponding to each module, where applicable.

  .. note::

     It is allowed to file bug reports for zephyr modules to track
     the corresponding upstream project bugs in Zephyr. These bug reports
     shall not affect the
     :ref:`Release Quality Criteria<release_quality_criteria>`.


.. _modules_licensing:

Licensing requirements and policies
***********************************

All source files in a module's codebase shall include a license header,
unless the module repository has **main license file** that covers source
files that do not include license headers.

Main license files shall be added in the module's codebase by Zephyr
developers, only if they exist as part of the external project,
and they contain a permissive OSI-compliant license. Main license files
should preferably contain the full license text instead of including an
SPDX license identifier. If multiple main license files are present it
shall be made clear which license applies to each source file in a module's
codebase.

Individual license headers in module source files supersede the main license.

Any new content to be added in a module repository will require to have
license coverage.

  .. note::

     Zephyr recommends conveying module licensing via individual license
     headers and main license files. This not a hard requirement; should
     an external project have its own practice of conveying how licensing
     applies in the module's codebase (for example, by having a single or
     multiple main license files), this practice may be accepted by and
     be referred to in the Zephyr module, as long as licensing requirements,
     for example OSI compliance, are satisfied.

License policies
================

When creating a module repository a developer shall:

* import the main license files, if they exist in the external project, and
* document (for example in the module README or .yml file) the default license
  that covers the module's codebase.

License checks
--------------

License checks (via CI tools) shall be enabled on every pull request that
adds new content in module repositories.


Documentation requirements
**************************

All Zephyr module repositories shall include an .rst file documenting:

* the scope and the purpose of the module
* how the module integrates with Zephyr
* the owner of the module repository
* synchronization information with the external project (commit, SHA, version etc.)
* licensing information as described in :ref:`modules_licensing`.

The file shall be required for the inclusion of the module and the contained
information should be kept up to date.


Testing requirements
********************

All Zephyr modules should provide some level of **integration** testing,
ensuring that the integration with Zephyr works correctly.
Integration tests:

* may be in the form of a minimal set of samples and tests that reside
  in the zephyr main tree
* should verify basic usage of the module (configuration,
  functional APIs, etc.) that is integrated with Zephyr.
* shall be built and executed (for example in QEMU) as part of
  twister runs in pull requests that introduce changes in module
  repositories.

  .. note::

     New modules, that are candidates for being included in the Zephyr
     default manifest, shall provide some level of integration testing.

  .. note::

     Vendor HALs are implicitly tested via Zephyr tests built or executed
     on target platforms, so they do not need to provide integration tests.

The purpose of integration testing is not to provide functional verification
of the module; this should be part of the testing framework of the external
project.

Certain external projects provide test suites that reside in the upstream
testing infrastructure but are written explicitly for Zephyr. These tests
may (but are not required to) be part of the Zephyr test framework.

Deprecating and removing modules
*********************************

Modules may be deprecated for reasons including, but not limited to:

* Lack of maintainership in the module
* Licensing changes in the external project
* Codebase becoming obsolete

The module information shall indicate whether a module is
deprecated and the build system shall issue a warning
when trying to build Zephyr using a deprecated module.

Deprecated modules may be removed from the Zephyr default manifest
after 2 Zephyr releases.

  .. note::

     Repositories of removed modules shall remain accessible via their
     original URL, as they are required by older Zephyr versions.


Integrate modules in Zephyr build system
****************************************

The build system variable :makevar:`ZEPHYR_MODULES` is a `CMake list`_ of
absolute paths to the directories containing Zephyr modules. These modules
contain :file:`CMakeLists.txt` and :file:`Kconfig` files describing how to
build and configure them, respectively. Module :file:`CMakeLists.txt` files are
added to the build using CMake's `add_subdirectory()`_ command, and the
:file:`Kconfig` files are included in the build's Kconfig menu tree.

If you have :ref:`west <west>` installed, you don't need to worry about how
this variable is defined unless you are adding a new module. The build system
knows how to use west to set :makevar:`ZEPHYR_MODULES`. You can add additional
modules to this list by setting the :makevar:`EXTRA_ZEPHYR_MODULES` CMake
variable or by adding a :makevar:`EXTRA_ZEPHYR_MODULES` line to ``.zephyrrc``
(See the section on :ref:`env_vars` for more details). This can be useful if you
want to keep the list of modules found with west and also add your own. If
:makevar:`EXTRA_ZEPHYR_MODULES` is set in multiple places, for example both as
an environment variable and as a CMake variable, the final list of additional
modules will be the merged result of all sources.

.. note::
   If the module ``FOO`` is provided by :ref:`west <west>` but also given with
   ``-DEXTRA_ZEPHYR_MODULES=/<path>/foo`` then the module given by the command
   line variable :makevar:`EXTRA_ZEPHYR_MODULES` will take precedence.
   This allows you to use a custom version of ``FOO`` when building and still
   use other Zephyr modules provided by :ref:`west <west>`.
   This can for example be useful for special test purposes.

If you want to permanently add modules to the zephyr workspace and you are
using zephyr as your manifest repository, you can also add a west manifest file
into the :zephyr_file:`submanifests` directory. See
:zephyr_file:`submanifests/README.txt` for more details.

See :ref:`west-basics` for more on west workspaces.

Finally, you can also specify the list of modules yourself in various ways, or
not use modules at all if your application doesn't need them.

.. _module-yml:

Module yaml file description
****************************

A module can be described using a file named :file:`zephyr/module.yml`.
The format of :file:`zephyr/module.yml` is described in the following:

Module name
===========

Each Zephyr module is given a name by which it can be referred to in the build
system.

The name should be specified in the :file:`zephyr/module.yml` file. This will
ensure the module name is not changeable through user-defined directory names
or ``west`` manifest files:

.. code-block:: yaml

   name: <name>

In CMake the location of the Zephyr module can then be referred to using the
CMake variable ``ZEPHYR_<MODULE_NAME>_MODULE_DIR`` and the variable
``ZEPHYR_<MODULE_NAME>_CMAKE_DIR`` holds the location of the directory
containing the module's :file:`CMakeLists.txt` file.

.. note::
   When used for CMake and Kconfig variables, all letters in module names are
   converted to uppercase and all non-alphanumeric characters are converted
   to underscores (_).
   As example, the module ``foo-bar`` must be referred to as
   ``ZEPHYR_FOO_BAR_MODULE_DIR`` in CMake and Kconfig.

Here is an example for the Zephyr module ``foo``:

.. code-block:: yaml

   name: foo

.. note::
   If the ``name`` field is not specified then the Zephyr module name will be
   set to the name of the module folder.
   As example, the Zephyr module located in :file:`<workspace>/modules/bar` will
   use ``bar`` as its module name if nothing is specified in
   :file:`zephyr/module.yml`.

Module integration files (in-module)
====================================

Inclusion of build files, :file:`CMakeLists.txt` and :file:`Kconfig`, can be
described as:

.. code-block:: yaml

   build:
     cmake: <cmake-directory>
     kconfig: <directory>/Kconfig

The ``cmake: <cmake-directory>`` part specifies that
:file:`<cmake-directory>` contains the :file:`CMakeLists.txt` to use. The
``kconfig: <directory>/Kconfig`` part specifies the Kconfig file to use.
Neither is required: ``cmake`` defaults to ``zephyr``, and ``kconfig``
defaults to ``zephyr/Kconfig``.

Here is an example :file:`module.yml` file referring to
:file:`CMakeLists.txt` and :file:`Kconfig` files in the root directory of the
module:

.. code-block:: yaml

   build:
     cmake: .
     kconfig: Kconfig

.. _sysbuild_module_integration:

Sysbuild integration
====================

:ref:`Sysbuild<sysbuild>` is the Zephyr build system that allows for building
multiple images as part of a single application, the sysbuild build process
can be extended externally with modules as needed, for example to add custom
build steps or add additional targets to a build. Inclusion of
sysbuild-specific build files, :file:`CMakeLists.txt` and :file:`Kconfig`, can
be described as:

.. code-block:: yaml

   build:
     sysbuild-cmake: <cmake-directory>
     sysbuild-kconfig: <directory>/Kconfig

The ``sysbuild-cmake: <cmake-directory>`` part specifies that
:file:`<cmake-directory>` contains the :file:`CMakeLists.txt` to use. The
``sysbuild-kconfig: <directory>/Kconfig`` part specifies the Kconfig file to
use.

Here is an example :file:`module.yml` file referring to
:file:`CMakeLists.txt` and :file:`Kconfig` files in the ``sysbuild`` directory of
the module:

.. code-block:: yaml

   build:
     sysbuild-cmake: sysbuild
     sysbuild-kconfig: sysbuild/Kconfig

The module description file :file:`zephyr/module.yml` can also be used to
specify that the build files, :file:`CMakeLists.txt` and :file:`Kconfig`, are
located in a :ref:`modules_module_ext_root`.

Build files located in a ``MODULE_EXT_ROOT`` can be described as:

.. code-block:: yaml

   build:
     sysbuild-cmake-ext: True
     sysbuild-kconfig-ext: True

This allows control of the build inclusion to be described externally to the
Zephyr module.

.. _modules-vulnerability-monitoring:

Vulnerability monitoring
========================

The module description file :file:`zephyr/module.yml` can be used to improve vulnerability monitoring.

If your module needs to track vulnerabilities using an external reference
(e.g your module is forked from another repository), you can use the ``security`` section.
It contains the field ``external-references`` that contains a list of references that needs to
be monitored for your module. The supported formats are:

- CPE (Common Platform Enumeration)
- PURL (Package URL)

.. code-block:: yaml

   security:
     external-references:
       - <module-related-cpe>
       - <an-other-module-related-cpe>
       - <module-related-purl>

A real life example for Mbed TLS module could look like this:

.. code-block:: yaml

   security:
     external-references:
       - cpe:2.3:a:arm:mbed_tls:3.5.2:*:*:*:*:*:*:*
       - pkg:github/Mbed-TLS/mbedtls@V3.5.2

.. note::
   CPE field must follow the CPE 2.3 schema provided by `NVD
   <https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/cpe>`_.
   PURL field must follow the PURL specification provided by `Github
   <https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst>`_.


Build system integration
========================

When a module has a :file:`module.yml` file, it will automatically be included into
the Zephyr build system. The path to the module is then accessible through Kconfig
and CMake variables.

Zephyr modules
--------------

In both Kconfig and CMake, the variable ``ZEPHYR_<MODULE_NAME>_MODULE_DIR``
contains the absolute path to the module.

Additionally, ``ZEPHYR_<MODULE_NAME>_MODULE`` and ``ZEPHYR_<MODULE_NAME>_MODULE_BLOBS``
(in case the module declares blobs) symbols are automatically generated for available
modules. These can be used e.g. to declare dependencies from other Kconfig symbols
which depend on the module or blobs from the module. To satisfy compliance checking
when building Zephyr without the module present, it's recommended for the module to
have default definitions for these symbols in its respective Kconfig file under
``modules/`` in the Zephyr main tree.

In CMake, ``ZEPHYR_<MODULE_NAME>_CMAKE_DIR`` contains the
absolute path to the directory containing the :file:`CMakeLists.txt` file that
is included into CMake build system. This variable's value is empty if the
module.yml file does not specify a CMakeLists.txt.

To read these variables for a Zephyr module named ``foo``:

- In CMake: use ``${ZEPHYR_FOO_MODULE_DIR}`` for the module's top level directory, and ``${ZEPHYR_FOO_CMAKE_DIR}`` for the directory containing its :file:`CMakeLists.txt`
- In Kconfig: use ``$(ZEPHYR_FOO_MODULE_DIR)`` for the module's top level directory

Notice how a lowercase module name ``foo`` is capitalized to ``FOO``
in both CMake and Kconfig.

These variables can also be used to test whether a given module exists.
For example, to verify that ``foo`` is the name of a Zephyr module:

.. code-block:: cmake

  if(ZEPHYR_FOO_MODULE_DIR)
    # Do something if FOO exists.
  endif()

In Kconfig, the variable may be used to find additional files to include.
For example, to include the file :file:`some/Kconfig` in module ``foo``:

.. code-block:: kconfig

  source "$(ZEPHYR_FOO_MODULE_DIR)/some/Kconfig"

During CMake processing of each Zephyr module, the following variables are
also available:

- the current module's name: ``${ZEPHYR_CURRENT_MODULE_NAME}``
- the current module's top level directory: ``${ZEPHYR_CURRENT_MODULE_DIR}``
- the current module's :file:`CMakeLists.txt` directory: ``${ZEPHYR_CURRENT_CMAKE_DIR}``

This removes the need for a Zephyr module to know its own name during CMake
processing. The module can source additional CMake files using these ``CURRENT``
variables. For example:

.. code-block:: cmake

  include(${ZEPHYR_CURRENT_MODULE_DIR}/cmake/code.cmake)

It is possible to append values to a Zephyr `CMake list`_ variable from the module's first
CMakeLists.txt file.
To do so, append the value to the list and then set the list in the PARENT_SCOPE
of the CMakeLists.txt file. For example, to append ``bar`` to the ``FOO_LIST`` variable in the
Zephyr CMakeLists.txt scope:

.. code-block:: cmake

  list(APPEND FOO_LIST bar)
  set(FOO_LIST ${FOO_LIST} PARENT_SCOPE)

An example of a Zephyr list where this is useful is when adding additional
directories to the ``SYSCALL_INCLUDE_DIRS`` list.

Sysbuild modules
----------------

In both Kconfig and CMake, the variable ``SYSBUILD_CURRENT_MODULE_DIR``
contains the absolute path to the sysbuild module. In CMake,
``SYSBUILD_CURRENT_CMAKE_DIR`` contains the absolute path to the directory
containing the :file:`CMakeLists.txt` file that is included into CMake build
system. This variable's value is empty if the module.yml file does not specify
a CMakeLists.txt.

To read these variables for a sysbuild module:

- In CMake: use ``${SYSBUILD_CURRENT_MODULE_DIR}`` for the module's top level
  directory, and ``${SYSBUILD_CURRENT_CMAKE_DIR}`` for the directory containing
  its :file:`CMakeLists.txt`
- In Kconfig: use ``$(SYSBUILD_CURRENT_MODULE_DIR)`` for the module's top level
  directory

In Kconfig, the variable may be used to find additional files to include.
For example, to include the file :file:`some/Kconfig`:

.. code-block:: kconfig

  source "$(SYSBUILD_CURRENT_MODULE_DIR)/some/Kconfig"

The module can source additional CMake files using these variables. For
example:

.. code-block:: cmake

  include(${SYSBUILD_CURRENT_MODULE_DIR}/cmake/code.cmake)

It is possible to append values to a Zephyr `CMake list`_ variable from the
module's first CMakeLists.txt file.
To do so, append the value to the list and then set the list in the
PARENT_SCOPE of the CMakeLists.txt file. For example, to append ``bar`` to the
``FOO_LIST`` variable in the Zephyr CMakeLists.txt scope:

.. code-block:: cmake

  list(APPEND FOO_LIST bar)
  set(FOO_LIST ${FOO_LIST} PARENT_SCOPE)

Sysbuild modules hooks
----------------------

Sysbuild provides an infrastructure which allows a sysbuild module to define
a function which will be invoked by sysbuild at a pre-defined point in the
CMake flow.

Functions invoked by sysbuild:

- ``<module-name>_pre_cmake(IMAGES <images>)``: This function is called for each
  sysbuild module before CMake configure is invoked for all images.
- ``<module-name>_post_cmake(IMAGES <images>)``: This function is called for each
  sysbuild module after CMake configure has completed for all images.
- ``<module-name>_pre_domains(IMAGES <images>)``: This function is called for each
  sysbuild module before domains yaml is created by sysbuild.
- ``<module-name>_post_domains(IMAGES <images>)``: This function is called for each
  sysbuild module after domains yaml has been created by sysbuild.

arguments passed from sysbuild to the function defined by a module:

- ``<images>`` is the list of Zephyr images that will be created by the build system.

If a module ``foo`` want to provide a post CMake configure function, then the
module's sysbuild :file:`CMakeLists.txt` file must define function ``foo_post_cmake()``.

To facilitate naming of functions, the module name is provided by sysbuild CMake
through the ``SYSBUILD_CURRENT_MODULE_NAME`` CMake variable when loading the
module's sysbuild :file:`CMakeLists.txt` file.

Example of how the ``foo`` sysbuild module can define ``foo_post_cmake()``:

.. code-block:: cmake

   function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)
     cmake_parse_arguments(POST_CMAKE "" "" "IMAGES" ${ARGN})

     message("Invoking ${CMAKE_CURRENT_FUNCTION}. Images: ${POST_CMAKE_IMAGES}")
   endfunction()

Zephyr module dependencies
==========================

A Zephyr module may be dependent on other Zephyr modules to be present in order
to function correctly. Or it might be that a given Zephyr module must be
processed after another Zephyr module, due to dependencies of certain CMake
targets.

Such a dependency can be described using the ``depends`` field.

.. code-block:: yaml

   build:
     depends:
       - <module>

Here is an example for the Zephyr module ``foo`` that is dependent on the Zephyr
module ``bar`` to be present in the build system:

.. code-block:: yaml

   name: foo
   build:
     depends:
       - bar

This example will ensure that ``bar`` is present when ``foo`` is included into
the build system, and it will also ensure that ``bar`` is processed before
``foo``.

.. _modules_module_ext_root:

Module integration files (external)
===================================

Module integration files can be located externally to the Zephyr module itself.
The ``MODULE_EXT_ROOT`` variable holds a list of roots containing integration
files located externally to Zephyr modules.

Module integration files in Zephyr
----------------------------------

The Zephyr repository contain :file:`CMakeLists.txt` and :file:`Kconfig` build
files for certain known Zephyr modules.

Those files are located under

.. code-block:: none

   <ZEPHYR_BASE>
   └── modules
       └── <module_name>
           ├── CMakeLists.txt
           └── Kconfig

Module integration files in a custom location
---------------------------------------------

You can create a similar ``MODULE_EXT_ROOT`` for additional modules, and make
those modules known to Zephyr build system.

Create a ``MODULE_EXT_ROOT`` with the following structure

.. code-block:: none

   <MODULE_EXT_ROOT>
   └── modules
       ├── modules.cmake
       └── <module_name>
           ├── CMakeLists.txt
           └── Kconfig

and then build your application by specifying ``-DMODULE_EXT_ROOT`` parameter to
the CMake build system. The ``MODULE_EXT_ROOT`` accepts a `CMake list`_ of roots as
argument.

A Zephyr module can automatically be added to the ``MODULE_EXT_ROOT``
list using the module description file :file:`zephyr/module.yml`, see
:ref:`modules_build_settings`.

.. note::

   ``ZEPHYR_BASE`` is always added as a ``MODULE_EXT_ROOT`` with the lowest
   priority.
   This allows you to overrule any integration files under
   ``<ZEPHYR_BASE>/modules/<module_name>`` with your own implementation your own
   ``MODULE_EXT_ROOT``.

The :file:`modules.cmake` file must contain the logic that specifies the
integration files for Zephyr modules via specifically named CMake variables.

To include a module's CMake file, set the variable ``ZEPHYR_<MODULE_NAME>_CMAKE_DIR``
to the path containing the CMake file.

To include a module's Kconfig file, set the variable ``ZEPHYR_<MODULE_NAME>_KCONFIG``
to the path to the Kconfig file.

The following is an example on how to add support the ``FOO`` module.

Create the following structure

.. code-block:: none

   <MODULE_EXT_ROOT>
   └── modules
       ├── modules.cmake
       └── foo
           ├── CMakeLists.txt
           └── Kconfig

and inside the :file:`modules.cmake` file, add the following content

.. code-block:: cmake

   set(ZEPHYR_FOO_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}/foo)
   set(ZEPHYR_FOO_KCONFIG   ${CMAKE_CURRENT_LIST_DIR}/foo/Kconfig)

Module integration files (zephyr/module.yml)
--------------------------------------------

The module description file :file:`zephyr/module.yml` can be used to specify
that the build files, :file:`CMakeLists.txt` and :file:`Kconfig`, are located
in a :ref:`modules_module_ext_root`.

Build files located in a ``MODULE_EXT_ROOT`` can be described as:

.. code-block:: yaml

   build:
     cmake-ext: True
     kconfig-ext: True

This allows control of the build inclusion to be described externally to the
Zephyr module.

The Zephyr repository itself is always added as a Zephyr module ext root.

.. _modules_build_settings:

Build settings
==============

It is possible to specify additional build settings that must be used when
including the module into the build system.

All ``root`` settings are relative to the root of the module.

Build settings supported in the :file:`module.yml` file are:

- ``board_root``: Contains additional boards that are available to the build
  system. Additional boards must be located in a :file:`<board_root>/boards`
  folder.
- ``dts_root``: Contains additional dts files related to the architecture/soc
  families. Additional dts files must be located in a :file:`<dts_root>/dts`
  folder.
- ``snippet_root``: Contains additional snippets that are available for use.
  These snippets must be defined in :file:`snippet.yml` files underneath the
  :file:`<snippet_root>/snippets` folder. For example, if you have
  ``snippet_root: foo``, then you should place your module's
  :file:`snippet.yml` files in :file:`<your-module>/foo/snippets` or any
  nested subdirectory.
- ``soc_root``: Contains additional SoCs that are available to the build
  system. Additional SoCs must be located in a :file:`<soc_root>/soc` folder.
- ``arch_root``: Contains additional architectures that are available to the
  build system. Additional architectures must be located in a
  :file:`<arch_root>/arch` folder.
- ``module_ext_root``: Contains :file:`CMakeLists.txt` and :file:`Kconfig` files
  for Zephyr modules, see also :ref:`modules_module_ext_root`.
- ``sca_root``: Contains additional :ref:`SCA <sca>` tool implementations
  available to the build system. Each tool must be located in
  :file:`<sca_root>/sca/<tool>` folder. The folder must contain a
  :file:`sca.cmake`.

Example of a :file:`module.yaml` file containing additional roots, and the
corresponding file system layout.

.. code-block:: yaml

   build:
     settings:
       board_root: .
       dts_root: .
       soc_root: .
       arch_root: .
       module_ext_root: .


requires the following folder structure:

.. code-block:: none

   <zephyr-module-root>
   ├── arch
   ├── boards
   ├── dts
   ├── modules
   └── soc

Test Runner (Twister) integration
=================================

To execute both tests and samples available in modules, the Zephyr test runner
(twister) should be pointed to the directories containing those samples and
tests. This can be done by specifying the path to both samples and tests in the
:file:`zephyr/module.yml` file.  Additionally, if a module defines out of tree
boards, the module file can point twister to the path where those files
are maintained in the module. For example:

.. code-block:: yaml

    build:
      cmake: .
    samples:
      - samples
    tests:
      - tests
    boards:
      - boards

Tests and Samples defined in the :file:`zephyr/module.yml` file are not detected
by twister automatically. To make twister aware of the tests and samples defined
in modules, the path for those tests and samples must be added to the command line
when executing twister, for example:

.. code-block:: shell

  ./scripts/zephyr_module.py --twister-out module_tests.args
  if [ -s module_tests.args ]; then
      west twister +module_tests.args --outdir module_tests ...
  fi


.. _modules-bin-blobs:

Binary Blobs
============

Zephyr supports fetching and using :ref:`binary blobs <bin-blobs>`, and their
metadata is contained entirely in :file:`zephyr/module.yml`. This is because
a binary blob must always be associated with a Zephyr module, and thus the
blob metadata belongs in the module's description itself.

Binary blobs are fetched using :ref:`west blobs <west-blobs>`.  If ``west`` is
:ref:`not used <modules_without_west>`, they must be downloaded and
verified manually.

The ``blobs`` section in :file:`zephyr/module.yml` consists of a sequence of
maps, each of which has the following entries:

- ``path``: The path to the binary blob, relative to the :file:`zephyr/blobs/`
  folder in the module repository
- ``sha256``: `SHA-256 <https://en.wikipedia.org/wiki/SHA-2>`_ checksum of the
  binary blob file
- ``type``: The :ref:`type of binary blob <bin-blobs-types>`. Currently limited
  to ``img`` or ``lib``
- ``version``: A version string
- ``license-path``: Path to the license file for this blob, relative to the root
  of the module repository
- ``url``: URL(s) that identify the location the blob will be fetched from, as
  well as the fetching scheme to use. If it contains a list instead of a single string,
  each URL will be considered as a fallback for fetching the same blob.
- ``description``: Human-readable description of the binary blob
- ``doc-url``: A URL pointing to the location of the official documentation for
  this blob

The following entries may also be present:

- ``click-through``: A boolean indicating if a click-through license must be
  accepted to download this blob
- ``size``: Size of the blob in bytes. May be required by some fetchers
- ``fetcher``: The method used to download the blob. If not set, the method is
  inferred from the URL

Package manager dependencies
============================

Zephyr modules can describe dependencies available from package managers,
currently only ``pip`` is supported.

A west extension command ``west packages <manager>`` is available to list
dependencies for Zephyr and present modules that leverage this feature in their
``module.yml`` file.
Run ``west help packages`` for more details.

Python pip
----------

Calling ``west packages pip`` lists `requirement files`_ for Zephyr and modules.
Passing ``--install`` installs these if there's an active virtual environment.

The following example demonstrates a ``zephyr/module.yml`` file with some
requirement files in the ``scripts`` directory of the module.


.. code-block:: yaml

    package-managers:
      pip:
        requirement-files:
          - scripts/requirements-build.txt
          - scripts/requirements-doc.txt


.. _modules-runners:

External Runners
================

If a module has out of tree boards that require custom :ref:`runners <west-runner>`,
then it can add a list to its ``zephyr/module.yml`` file, for example:


.. code-block:: yaml

    runners:
      - file: scripts/my-runner.py


Each file entry is imported when executing ``west flash`` or ``west debug`` and
subclasses of the ``ZephyrBinaryRunner`` are registered for use.

Module Inclusion
================

.. _modules_using_west:

Using West
----------

If west is installed and :makevar:`ZEPHYR_MODULES` is not already set, the
build system finds all the modules in your :term:`west installation` and uses
those. It does this by running :ref:`west list <west-built-in-misc>` to get
the paths of all the projects in the installation, then filters the results to
just those projects which have the necessary module metadata files.

Each project in the ``west list`` output is tested like this:

- If the project contains a file named :file:`zephyr/module.yml`, then the
  content of that file will be used to determine which files should be added
  to the build, as described in the previous section.

- Otherwise (i.e. if the project has no :file:`zephyr/module.yml`), the
  build system looks for :file:`zephyr/CMakeLists.txt` and
  :file:`zephyr/Kconfig` files in the project. If both are present, the project
  is considered a module, and those files will be added to the build.

- If neither of those checks succeed, the project is not considered a module,
  and is not added to :makevar:`ZEPHYR_MODULES`.

.. _modules_without_west:

Without West
------------

If you don't have west installed or don't want the build system to use it to
find Zephyr modules, you can set :makevar:`ZEPHYR_MODULES` yourself using one
of the following options. Each of the directories in the list must contain
either a :file:`zephyr/module.yml` file or the files
:file:`zephyr/CMakeLists.txt` and :file:`Kconfig`, as described in the previous
section.

#. At the CMake command line, like this:

   .. code-block:: console

      cmake -DZEPHYR_MODULES=<path-to-module1>[;<path-to-module2>[...]] ...

#. At the top of your application's top level :file:`CMakeLists.txt`, like this:

   .. code-block:: cmake

      set(ZEPHYR_MODULES <path-to-module1> <path-to-module2> [...])
      find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})

   If you choose this option, make sure to set the variable **before**  calling
   ``find_package(Zephyr ...)``, as shown above.

#. In a separate CMake script which is pre-loaded to populate the CMake cache,
   like this:

   .. code-block:: cmake

      # Put this in a file with a name like "zephyr-modules.cmake"
      set(ZEPHYR_MODULES <path-to-module1> <path-to-module2>
        CACHE STRING "pre-cached modules")

   You can tell the build system to use this file by adding ``-C
   zephyr-modules.cmake`` to your CMake command line.

Not using modules
-----------------

If you don't have west installed and don't specify :makevar:`ZEPHYR_MODULES`
yourself, then no additional modules are added to the build. You will still be
able to build any applications that don't require code or Kconfig options
defined in an external repository.

Submitting changes to modules
******************************

When submitting new or making changes to existing modules the main repository
Zephyr needs a reference to the changes to be able to verify the changes. In the
main tree this is done using revisions. For code that is already merged and part
of the tree we use the commit hash, a tag, or a branch name. For pull requests
however, we require specifying the pull request number in the revision field to
allow building the zephyr main tree with the changes submitted to the
module.

To avoid merging changes to master with pull request information, the pull
request should be marked as ``DNM`` (Do Not Merge) or preferably a draft pull
request to make sure it is not merged by mistake and to allow for the module to
be merged first and be assigned a permanent commit hash. Drafts reduce noise by
not automatically notifying anyone until marked as "Ready for review".
Once the module is
merged, the revision will need to be changed either by the submitter or by the
maintainer to the commit hash of the module which reflects the changes.

Note that multiple and dependent changes to different modules can be submitted
using exactly the same process. In this case you will change multiple entries of
all modules that have a pull request against them.

.. _submitting_new_modules:

Process for submitting a new module
===================================

Please follow the process in :ref:`external-src-process` and obtain the TSC
approval to integrate the external source code as a module

If the request is approved, a new repository will
created by the project team and initialized with basic information that would
allow submitting code to the module project following the project contribution
guidelines.

If a module is maintained as a fork of another project on Github, the Zephyr
module related files and changes in relation to upstream need to be maintained
in a special branch named ``zephyr``.

Maintainers from the Zephyr project will create the repository and initialize
it. You will be added as a collaborator in the new repository.  Submit the
module content (code) to the new repository following the guidelines described
:ref:`here <modules_using_west>`, and then add a new entry to the
:zephyr_file:`west.yml` with the following information:

   .. code-block:: console

        - name: <name of repository>
          path: <path to where the repository should be cloned>
          revision: <ref pointer to module pull request>


For example, to add *my_module* to the manifest:

.. code-block:: console

    - name: my_module
      path: modules/lib/my_module
      revision: pull/23/head


Where 23 in the example above indicated the pull request number submitted to the
*my_module* repository. Once the module changes are reviewed and merged, the
revision needs to be changed to the commit hash from the module repository.

.. _changes_to_existing_module:

Process for submitting changes to existing modules
==================================================

#. Submit the changes using a pull request to an existing repository following
   the :ref:`contribution guidelines <contribute_guidelines>` and
   :ref:`expectations <contributor-expectations>`.
#. Submit a pull request changing the entry referencing the module into the
   :zephyr_file:`west.yml` of the main Zephyr tree with the following
   information:

   .. code-block:: console

        - name: <name of repository>
          path: <path to where the repository should be cloned>
          revision: <ref pointer to module pull request>


For example, to add *my_module* to the manifest:

.. code-block:: console

    - name: my_module
      path: modules/lib/my_module
      revision: pull/23/head

Where 23 in the example above indicated the pull request number submitted to the
*my_module* repository. Once the module changes are reviewed and merged, the
revision needs to be changed to the commit hash from the module repository.



.. _CMake list: https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#lists
.. _add_subdirectory(): https://cmake.org/cmake/help/latest/command/add_subdirectory.html
.. _GitHub issues: https://github.com/zephyrproject-rtos/zephyr/issues
.. _requirement files: https://pip.pypa.io/en/stable/reference/requirements-file-format/

---

### Doc Hardware Index (`doc/hardware/index.rst`)

.. _hardware_support:

Hardware Support
################

.. toctree::
   :maxdepth: 1

   arch/index.rst
   barriers/index.rst
   cache/index.rst
   emulator/index.rst
   emulator/bus_emulators.rst
   firmware/index.rst
   peripherals/index.rst
   pinctrl/index.rst
   porting/index
   virtualization/index.rst

---

### Doc Introduction Index (`doc/introduction/index.rst`)

.. _introducing_zephyr:

Introduction
############

The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained and embedded systems: from simple embedded environmental
sensors and LED wearables to sophisticated embedded controllers, smart
watches, and IoT wireless applications.

The Zephyr kernel supports multiple architectures, including:

 - ARCv2 (EM and HS) and ARCv3 (HS6X)
 - ARMv6-M, ARMv7-M, and ARMv8-M (Cortex-M)
 - ARMv7-A and ARMv8-A (Cortex-A, 32- and 64-bit)
 - ARMv7-R, ARMv8-R (Cortex-R, 32- and 64-bit)
 - Qualcomm Hexagon
 - Intel x86 (32- and 64-bit)
 - MIPS (MIPS32 Release 1 specification)
 - OpenRISC (32-bit)
 - Renesas RX
 - RISC-V (32- and 64-bit)
 - SPARC V8
 - Tensilica Xtensa
 - TriCore (TC1.6.2 and TC1.8)

The full list of supported boards based on these architectures can be found :ref:`here <boards>`.

In the context of the Zephyr OS, a :term:`subsystem` refers to a logically distinct
part of the operating system that handles specific functionality or provides
certain services. Subsystems can include components such as networking,
file systems, device driver classes, power management, and communication protocols,
among others. Each subsystem is designed to be modular and can be configured,
customized, and extended to meet the requirements of different embedded
applications.

Licensing
*********

Zephyr is permissively licensed using the `Apache 2.0 license`_
(as found in the ``LICENSE`` file in the
project's `GitHub repo`_).  There are some
imported or reused components of the Zephyr project that use other licensing,
as described in :ref:`Zephyr_Licensing`.

.. _Apache 2.0 license:
   https://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE

.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr


Distinguishing Features
***********************

Zephyr offers a large and ever growing number of features including:

**Extensive suite of Kernel services**
   Zephyr offers a number of familiar services for development:

   * *Multi-threading Services* for cooperative, priority-based,
     non-preemptive, and preemptive threads with optional round robin
     time-slicing. Includes POSIX pthreads compatible API support.

   * *Interrupt Services* for compile-time registration of interrupt handlers.

   * *Memory Allocation Services* for dynamic allocation and freeing of
     fixed-size or variable-size memory blocks.

   * *Inter-thread Synchronization Services* for binary semaphores,
     counting semaphores, and mutex semaphores.

   * *Inter-thread Data Passing Services* for basic message queues, enhanced
     message queues, and byte streams.

   * *Power Management Services* such as overarching, application or
     policy-defined, System Power Management and fine-grained, driver-defined,
     Device Power Management.

**Multiple Scheduling Algorithms**
   Zephyr provides a comprehensive set of thread scheduling choices:

   * Cooperative and Preemptive Scheduling
   * Earliest Deadline First (EDF)
   * Meta IRQ scheduling implementing "interrupt bottom half" or "tasklet"
     behavior
   * Timeslicing: Enables time slicing between preemptible threads of equal
     priority
   * Multiple queuing strategies:

     * Simple linked-list ready queue
     * Red/black tree ready queue
     * Traditional multi-queue ready queue

.. _zephyr_intro_configurability:

**Highly configurable / Modular for flexibility**
   Allows an application to incorporate *only* the capabilities it needs as it
   needs them, and to specify their quantity and size.

**Cross Architecture**
   Supports a wide variety of :ref:`supported boards<boards>` with different CPU
   architectures and developer tools. Contributions have added support
   for an increasing number of SoCs, platforms, and drivers.

**Memory Protection**
   Implements configurable architecture-specific stack-overflow protection,
   kernel object and device driver permission tracking, and thread isolation
   with thread-level memory protection on x86, ARC, and ARM architectures,
   userspace, and memory domains.

   For platforms without MMU/MPU and memory constrained devices, supports
   combining application-specific code with a custom kernel to create a
   monolithic image that gets loaded and executed on a system's hardware. Both
   the application code and kernel code execute in a single shared address
   space.

**Compile-time resource definition**
   Allows system resources to be defined at compile-time, which reduces code
   size and increases performance for resource-limited systems.

**Optimized Device Driver Model**
   Provides a consistent device model for configuring the drivers that are part
   of the platform/system and a consistent model for initializing all the
   drivers configured into the system and allows the reuse of drivers across
   platforms that have common devices/IP blocks.

**Devicetree Support**
   Use of :ref:`devicetree <dt-guide>` to describe hardware.
   Information from devicetree is used to create the application image.

**Native Networking Stack supporting multiple protocols**
   Networking support is fully featured and optimized, including LwM2M and BSD
   sockets compatible support.  OpenThread support (on Nordic chipsets) is also
   provided - a mesh network designed to securely and reliably connect hundreds
   of products around the home.

**Bluetooth Low Energy 5.0 support**
   Bluetooth 5.0 compliant (ESR10) and Bluetooth Low Energy Controller support
   (LE Link Layer). Includes Bluetooth Mesh and a Bluetooth qualification-ready
   Bluetooth controller.

   * Generic Access Profile (GAP) with all possible LE roles
   * Generic Attribute Profile (GATT)
   * Pairing support, including the Secure Connections feature from Bluetooth
     4.2
   * Clean HCI driver abstraction
   * Raw HCI interface to run Zephyr as a Controller instead of a full Host
     stack
   * Verified with multiple popular controllers
   * Highly configurable

   Mesh Support:

   * Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy features
   * Both Provisioning bearers supported (PB-ADV & PB-GATT)
   * Highly configurable, fitting in devices with at least 16k RAM

**Native Linux, macOS, and Windows Development**
   A command-line CMake build environment runs on popular developer OS
   systems. A native port (:zephyr:board:`native_sim <native_sim>`) lets you build and run Zephyr as a native
   application on Linux, aiding development and testing.

**Virtual File System Interface with ext2, FatFs, and LittleFS Support**
   ext2, LittleFS and FatFS support; FCB (Flash Circular Buffer) for memory constrained
   applications.

**Powerful multi-backend logging Framework**
   Support for log filtering, object dumping, panic mode, multiple backends
   (memory, networking, filesystem, console, ...) and integration with the shell
   subsystem.

**User friendly and full-featured Shell interface**
   A multi-instance shell subsystem with user-friendly features such as
   autocompletion, wildcards, coloring, metakeys (arrows, backspace, ctrl+u,
   etc.) and history. Support for static commands and dynamic sub-commands.

**Settings on non-volatile storage**
   The settings subsystem gives modules a way to store persistent per-device
   configuration and runtime state. Settings items are stored as key-value pair
   strings.

**Non-volatile storage (NVS)**
  NVS allows storage of binary blobs, strings, integers, longs, and any
  combination of these.

**Native port**
  :zephyr:board:`Native sim <native_sim>` allows running Zephyr as a Linux application with support
  for various subsystems and networking.


.. include:: ../../README.rst
   :start-after: start_include_here


Fundamental Terms and Concepts
******************************

See :ref:`glossary`

---

### Doc Kernel Cleanup (`doc/kernel/cleanup.rst`)

.. _cleanup_api:

Scope-based Cleanup Helpers
###########################

.. contents::
    :local:
    :depth: 2

Overview
********

The Cleanup Helper API provides a mechanism for automatic resource cleanup when
variables go out of scope. This is similar to RAII in C++ or defer statements
in Go. By leveraging compiler support for the ``__cleanup`` attribute,
this API helps prevent resource leaks and simplifies error handling by ensuring
cleanup code is executed automatically.

It is required to set :kconfig:option:`CONFIG_SCOPE_CLEANUP_HELPERS` to enable this
feature, which is particularly useful for:

* Automatic unlocking of mutexes and semaphores
* Automatic freeing of dynamically allocated memory
* Ensuring cleanup actions occur on all code paths (including early returns)
* Reducing boilerplate cleanup code

.. warning::

   The cleanup mechanism is implemented using the ``__cleanup`` attribute.
   If the toolchain doesn't support this attribute, the API is not available.

   For this reason this API is intended solely for user applications and not for
   the kernel itself or other subsystems.

Core Concepts
*************

The cleanup API provides three main abstractions:

Scoped Variables
================

A scoped variable defines a type with automatic init and exit behavior.
Variables declared with a scoped variable type are initialized using an
init function and automatically cleaned up using an exit function when they
go out of scope.

Scoped Guards
=============

Scoped guards are specialized scoped variables that automatically acquire a lock or
resource on initialization and release it when going out of scope. This pattern
is commonly used with mutexes, semaphores, and other synchronization primitives.

Scoped Defers
=============

Scoped defers execute a specified function when the variable goes out of scope,
without acquiring anything on initialization. This is similar to the ``defer``
statement in languages like Go.

Defining Scoped Types
*********************

Custom Scoped Variables
=======================

Use :c:macro:`SCOPE_VAR_DEFINE` to define a custom scoped variable type with init
and exit functions:

.. code-block:: c

    static inline struct flash_area *flash_area_init(int area_id)
    {
        struct flash_area *fa;

        if (flash_area_open(area_id, &fa) < 0) {
            return NULL;
        }

        return fa;
    }

    static inline void flash_area_exit(struct flash_area *fa)
    {
        if (fa != NULL) {
            flash_area_close(fa);
        }
    }

    // Define the scoped variable type
    SCOPE_VAR_DEFINE(flash_area, struct flash_area *, flash_area_exit(_T),
                     flash_area_init(area_id), int area_id);

    static int some_function(void)
    {
        // Declare 'fa' with automatic cleanup
        scope_var(flash_area, fa)(PARTITION_ID(storage_partition));
        if (fa == NULL) {
            return -EINVAL;  // Exit function is still called
        }

        // Use fa normally
        printk("Has driver: %d\n", flash_area_has_driver(fa));

        // No need to manually close - exit function is called automatically
        return 0;
    }

The ``_T`` variable in the exit function expression contains the value of the
variable being cleaned up.

Scoped Guards
=============

Use :c:macro:`SCOPE_GUARD_DEFINE` to define a guard that acquires a lock on
initialization and releases it on scope exit:

.. code-block:: c

    // Example guard definition (already provided by <zephyr/cleanup/kernel.h>)
    SCOPE_GUARD_DEFINE(k_mutex, struct k_mutex *,
                       (void)k_mutex_lock(_T, K_FOREVER),
                       (void)k_mutex_unlock(_T));

    static K_MUTEX_DEFINE(lock);

    void critical_section(void)
    {
        scope_guard(k_mutex)(&lock);

        // Lock is held here
        // Perform critical operations

        // Lock is automatically released when guard goes out of scope
    }

Block-Scoped Guards
===================

While :c:macro:`scope_guard` holds a guard until the end of the *enclosing* scope,
:c:macro:`scoped_guard` binds the guard to the brace block that immediately follows,
releasing it as soon as that block is exited. This makes short critical sections
explicit and keeps the lock object next to the code it protects:

.. code-block:: c

    static K_MUTEX_DEFINE(lock);

    void worker(void)
    {
        // ... work that does not need the lock ...

        scoped_guard(k_mutex, &lock) {
            // lock held only inside these braces
        }
        // lock released here

        // ... more work without the lock held ...
    }

The block runs exactly once. The lock is released on any exit from the block,
including ``break``, ``return`` and ``goto``. Note that ``continue`` leaves the block
(it behaves like ``break``) rather than re-running it.

Conditional Guards
==================

Guards defined with :c:macro:`SCOPE_GUARD_DEFINE` always acquire the lock (they block
with ``K_FOREVER``). To express a guard whose acquisition may fail (for example a
non-blocking ``K_NO_WAIT`` try-lock), use :c:macro:`SCOPE_COND_GUARD_DEFINE` together
with :c:macro:`scoped_cond_guard`. The acquire expression is evaluated for success: on
failure the guard stores ``NULL``, the supplied fail statement runs, and the block is
skipped.

.. code-block:: c

    // Example guard definition (already provided by <zephyr/cleanup/kernel.h>)
    SCOPE_COND_GUARD_DEFINE(k_mutex_try, struct k_mutex *,
                            k_mutex_lock(_T, K_NO_WAIT) == 0,
                            (void)k_mutex_unlock(_T));

    static K_MUTEX_DEFINE(lock);

    int try_critical_section(void)
    {
        scoped_cond_guard(k_mutex_try, return -EBUSY, &lock) {
            // runs only if the lock was acquired
            // released automatically when the block is exited
        }

        return 0;
    }

The fail statement can be any statement, such as ``break``, ``return -EBUSY``, or
``{}`` to silently skip the block.

Scoped Defers
=============

Use :c:macro:`SCOPE_DEFER_DEFINE` to define a defer that executes a cleanup function:

.. code-block:: c

    // Define a defer for a custom cleanup function
    static void cleanup_resources(void)
    {
        // Cleanup code here
    }

    SCOPE_DEFER_DEFINE(cleanup_resources);

    void some_function(void)
    {
        scope_defer(cleanup_resources)();

        // Do work...

        // cleanup_resources() is called automatically
    }

For functions with parameters:

.. code-block:: c

    // Example deferred k_free (already provided by <zephyr/cleanup/kernel.h>)
    SCOPE_DEFER_DEFINE(k_free, void *);

    void allocate_and_use(void)
    {
        void *ptr = k_malloc(100);
        scope_defer(k_free)(ptr);

        // Use ptr...

        // k_free(ptr) is called automatically
    }

Usage Notes
***********

Order of Cleanup
================

Cleanup functions are called in reverse order of declaration (LIFO - Last In,
First Out), which matches the natural nesting of resources:

.. code-block:: c

    {
        scope_guard(k_mutex)(&lock);           // Acquired first
        void *ptr = k_malloc(100);
        scope_defer(k_free)(ptr);              // Registered second

        // Do work...

    }  // ptr is freed first, then mutex is unlocked

Scope Rules
===========

Cleanup occurs when the variable goes out of scope, which includes:

* Reaching the end of a block
* Early return statements
* Break or continue in loops
* Goto statements that jump out of scope

.. code-block:: c

    void example_with_early_exit(struct k_mutex *lock)
    {
        scope_guard(k_mutex)(lock);

        if (error_condition) {
            return;  // Guard cleanup happens here
        }

        // Normal path

    }  // Guard cleanup also happens here

API Reference
*************

.. doxygengroup:: cleanup_interface

---

### Doc Kernel Code Relocation (`doc/kernel/code-relocation.rst`)

.. _code_data_relocation:

Code And Data Relocation
########################

Overview
********
This feature will allow relocating .text, .rodata, .data, and .bss sections from
required files and place them in the required memory region. The memory region
and file are given to the :ref:`gen_relocate_app.py` script in the form
of a string. This script is always invoked from inside cmake.

This script provides a robust way to re-order the memory contents without
actually having to modify the code.  In simple terms this script will do the job
of ``__attribute__((section("name")))`` for a bunch of files together.

A regular expression filter can be used to select only the required sections to be relocated.

Details
*******
The memory region and file are given to the :ref:`gen_relocate_app.py` script
through a file where each line specifies a list of files to be placed in the
given region.

An example of such a file is:

  .. code-block:: none

     SRAM2:/home/xyz/zephyr/samples/hello_world/src/main.c,
     SRAM1:/home/xyz/zephyr/samples/hello_world/src/main2.c,

This script is invoked with the following parameters:
``python3 gen_relocate_app.py -i input_file -o generated_linker -c generated_code``

Kconfig :kconfig:option:`CONFIG_CODE_DATA_RELOCATION` option,  when enabled in
``prj.conf``, will invoke the script and do the required relocation.

This script also trigger the generation of ``linker_relocate.ld`` and
``code_relocation.c`` files.  The ``linker_relocate.ld`` file creates
appropriate sections and links the required functions or variables from all the
selected files.

.. note::

   The text section is split into 2 parts in the main linker script. The first
   section will have some info regarding vector tables and other debug related
   info.  The second section will have the complete text section.  This is
   needed to force the required functions and data variables to the correct
   locations.  This is due to the behavior of the linker. The linker will only
   link once and hence this text section had to be split to make room for the
   generated linker script.

The ``code_relocation.c`` file has code that is needed for
initializing data sections, and a copy of the text sections (if XIP).
Also this contains code needed for bss zeroing and
for  data copy operations from ROM to required memory type.

**The procedure to invoke this feature is:**

* Enable :kconfig:option:`CONFIG_CODE_DATA_RELOCATION` in the ``prj.conf`` file

* Inside the ``CMakeLists.txt`` file in the project, mention
  all the files that need relocation.

  ``zephyr_code_relocate(FILES src/main.c LOCATION SRAM2)``

  Where the first argument is the file/files and the second
  argument is the memory where it must be placed.

  .. note::

     function ``zephyr_code_relocate()`` can be called  as many times as required.

Additional Configurations
=========================
This section shows additional configuration options that can be set in
``CMakeLists.txt``.

* If the memory is ``SRAM1``, ``SRAM2``, ``CCD``, or ``AON``, then place the
  full object in the sections. For example:

  .. code-block:: cmake

     zephyr_code_relocate(FILES src/file1.c LOCATION SRAM2)
     zephyr_code_relocate(FILES src/file2.c LOCATION SRAM1)

* If the memory type is appended with ``_DATA``, ``_TEXT``, ``_RODATA``,
  ``_BSS`` or ``_NOINIT``, only the selected memory is placed in the required
  memory region. For example:

  .. code-block:: cmake

     zephyr_code_relocate(FILES src/file1.c LOCATION SRAM2_DATA)
     zephyr_code_relocate(FILES src/file2.c LOCATION SRAM2_TEXT)

* Multiple regions can also be appended together such as:
  ``SRAM2_DATA_BSS_NOINIT``. This will place all data: value-initialized,
  zero-initialized and uninitialized inside ``SRAM2``.

* Multiple files can be passed to the ``FILES`` argument, or CMake generator
  expressions can be used to relocate a comma-separated list of files.

  .. code-block:: cmake

     file(GLOB sources "file*.c")
     zephyr_code_relocate(FILES ${sources} LOCATION SRAM2)
     zephyr_code_relocate(FILES $<TARGET_PROPERTY:my_tgt,SOURCES> LOCATION SRAM2)

Section Filtering
=================

By default, all sections of the specified files will be relocated. If
``FILTER`` is used, a regular expression is provided to select only
the sections to be relocated.

The regular expression applies to sections names which can be used to
select the file's symbols when this one has been built with
``-ffunction-sections`` and ``-fdata-sections`` which is the case by
default.

  .. code-block:: cmake

     zephyr_code_relocate(FILES src/file1.c FILTER ".*\\.func1|.*\\.func2" LOCATION SRAM2_TEXT)

The example above will only relocate ``func1()`` and ``func2()`` of file ``src/file1.c``

NOKEEP flag
===========

By default, all relocated functions and variables will be marked with ``KEEP()``
when generating ``linker_relocate.ld``.  Therefore, if any input file happens to
contain unused symbols, then they will not be discarded by the linker, even when
it is invoked with ``--gc-sections``. If you'd like to override this behavior,
you can pass ``NOKEEP`` to your ``zephyr_code_relocate()`` call.

  .. code-block:: cmake

     zephyr_code_relocate(FILES src/file1.c LOCATION SRAM2_TEXT NOKEEP)

The example above will help ensure that any unused code found in the .text
sections of ``file1.c`` will not stick to SRAM2.

NOCOPY flag
===========

When a ``NOCOPY`` option is passed to the ``zephyr_code_relocate()`` function,
the relocation code is not generated in ``code_relocation.c``. This flag can be
used when we want to move the content of a specific file (or set of files) to a
XIP area.

This example will place the .text section of the ``xip_external_flash.c`` file
to the ``EXTFLASH`` memory region where it will be executed from (XIP). The
.data will be relocated as usual into SRAM.

  .. code-block:: cmake

     zephyr_code_relocate(FILES src/xip_external_flash.c LOCATION EXTFLASH_TEXT NOCOPY)
     zephyr_code_relocate(FILES src/xip_external_flash.c LOCATION SRAM_DATA)

Relocating libraries
====================

Libraries can be relocated using the LIBRARY argument to
``zephyr_code_relocation()`` with the library name. For example, the following
snippet will relocate serial drivers to SRAM2:

  .. code-block:: cmake

    zephyr_code_relocate(LIBRARY drivers__serial LOCATION SRAM2)

Tips
====

Take care if relocating kernel/arch files, some contain early initialization
code that executes before code relocation takes place.

Additional MPU/MMU configuration may be required to ensure that the
destination memory region is configured to allow code execution.

Samples/ Tests
==============

A test showcasing this feature is provided at
``$ZEPHYR_BASE/tests/application_development/code_relocation``

This test shows how the code relocation feature is used.

This test will place .text, .data, .bss from 3 files to various parts in the SRAM
using a custom linker file derived from ``include/zephyr/arch/arm/cortex_m/scripts/linker.ld``

A sample showcasing the NOCOPY flag is provided here: :zephyr:code-sample:`code_relocation_nocopy`.

---

### Doc Kernel Index (`doc/kernel/index.rst`)

.. _kernel:

Kernel
######

.. toctree::
   :maxdepth: 1

   services/index.rst
   drivers/index.rst
   usermode/index.rst
   memory_management/index.rst
   data_structures/index.rst
   timing_functions/index.rst
   object_cores/index.rst
   timeutil.rst
   precision_timing.rst
   util/index.rst
   iterable_sections/index.rst
   code-relocation.rst
   cleanup.rst

---

### Doc Kernel Precision Timing (`doc/kernel/precision_timing.rst`)

.. SPDX-FileCopyrightText: Copyright The Zephyr Project Contributors
.. SPDX-FileCopyrightText: Copyright (c) 2026 Philipp Steiner
.. SPDX-License-Identifier: Apache-2.0

.. _precision_timing:

Precision Timing
################

The precision timing subsystem provides a small set of reusable mechanisms for
PTP, gPTP, and other users that control high-resolution clocks. Enable it with
:kconfig:option:`CONFIG_PRECISION_TIMING`.

.. note::

   The API is at :ref:`experimental <api_lifecycle_experimental>` maturity and
   may still change. A protocol does not change maturity by using this
   subsystem.

The subsystem deliberately does not implement synchronization policy. PTP and
gPTP continue to own their protocol state machines, clock selection, step
thresholds, sample acceptance, lock detection, source-loss handling, and
diagnostics.

Precision time
**************

:c:type:`precision_time_t` is a signed 64-bit nanosecond value. Checked
addition and subtraction helpers report overflow. The type does not identify a
time domain or timescale; modelling TAI, UTC, PHCs, monotonic time, and protocol
relationships is outside this API.

Precision clock
***************

:c:struct:`precision_clock` dispatches four mandatory clock operations:

* read the current time;
* set an absolute time;
* apply a phase adjustment; and
* set a rate offset from the nominal frequency as parts per million with a
  16-bit binary fractional field.

All operations must be implemented by a clock adapter. Adjustment ranges and
other hardware constraints remain the responsibility of the underlying clock
implementation.

:c:struct:`precision_clock_ptp_adapter` exposes an existing Zephyr PTP clock
device through this interface. It performs the required conversion between
:c:struct:`net_ptp_time` and :c:type:`precision_time_t`; it does not add
capability discovery or synchronization state.

PI controller
*************

:c:struct:`precision_pi` is an instance-based proportional-integral controller.
Each instance stores its own gains and integral term. For every error sample,
the update is equivalent to:

.. code-block:: c

   integral += ki * error;
   output = kp * error + integral;

The controller does not decide whether an error should be stepped, rejected, or
used for rate adjustment. It also does not track synchronization, acquisition,
lock, holdover, source timeout, or clock faults. Callers own those decisions and
reset the accumulated integral term when their policy requires it.

The PTP and gPTP integrations initialize their controllers from
:kconfig:option:`CONFIG_PRECISION_TIMING_PI_KP` and
:kconfig:option:`CONFIG_PRECISION_TIMING_PI_KI`. The integer values express the
gains in thousandths. Direct users of :c:func:`precision_pi_init` may provide
different gains for each controller instance.

Protocol integration
********************

PTP and the gPTP default clock-update path each keep their existing policy and
use a :c:struct:`precision_pi` for the shared calculation. They initialize a
PTP-clock adapter once and use :c:struct:`precision_clock` operations to access
the PHC.

Sample
******

The :zephyr:code-sample:`precision_timing` sample demonstrates checked time
arithmetic, a software-backed precision clock, and PI-driven rate adjustment.

API reference
*************

.. doxygengroup:: precision_timing

.. doxygengroup:: precision_time

.. doxygengroup:: precision_clock

.. doxygengroup:: precision_clock_ptp

.. doxygengroup:: precision_pi

---

### Doc Kernel Timeutil (`doc/kernel/timeutil.rst`)

.. _timeutil_api:

Time Utilities
##############

Overview
********

:ref:`kernel_timing_uptime` in Zephyr is based on a tick counter.  With
the default :kconfig:option:`CONFIG_TICKLESS_KERNEL`, this counter advances at a
nominally constant rate from zero at the instant the system started. The POSIX
equivalent to this counter is something like ``CLOCK_MONOTONIC`` or, in Linux,
``CLOCK_MONOTONIC_RAW``.  :c:func:`k_uptime_get()` provides a millisecond
representation of this time.

Applications often need to correlate the Zephyr internal time with external
time scales used in daily life, such as local time or Coordinated Universal
Time.  These systems interpret time in different ways and may have
discontinuities due to `leap seconds <https://what-if.xkcd.com/26/>`__ and
local time offsets like daylight saving time.

Because of these discontinuities, as well as significant inaccuracies in the
clocks underlying the cycle counter, the offset between time estimated from
the Zephyr clock and the actual time in a "real" civil time scale is not
constant and can vary widely over the runtime of a Zephyr application.

The time utilities API supports:

* :ref:`converting between time representations <timeutil_repr>`
* :ref:`synchronizing and aligning time scales <timeutil_sync>`
* :ref:`comparing, adding, and subtracting representations <timeutil_manip>`

For terminology and concepts that support these functions see
:ref:`timeutil_concepts`.

Time Utility APIs
*****************

.. _timeutil_repr:

Representation Transformation
=============================

Time scale instants can be represented in multiple ways including:

* Seconds since an epoch. POSIX representations of time in this form include
  ``time_t`` and ``struct timespec``, which are generally interpreted as a
  representation of "UNIX Time" (see :rfc:`8536#section-2`).

* Calendar time as a year, month, day, hour, minutes, and seconds relative to
  an epoch. POSIX representations of time in this form include ``struct tm``.

Keep in mind that these are simply time representations that must be
interpreted relative to a time scale which may be local time, UTC, or some
other continuous or discontinuous scale.

Some necessary transformations are available in standard C library
routines. For example, ``time_t`` measuring seconds since the POSIX EPOCH is
converted to ``struct tm`` representing calendar time with `gmtime()
<https://pubs.opengroup.org/onlinepubs/9699919799/functions/gmtime.html>`__.
Sub-second timestamps like ``struct timespec`` can also use this to produce
the calendar time representation and deal with sub-second offsets separately.

The inverse transformation is not standardized: APIs like ``mktime()`` expect
information about time zones.  Zephyr provides this transformation with
:c:func:`timeutil_timegm` and :c:func:`timeutil_timegm64`.

To convert between ``struct timespec`` and ``k_timeout_t`` durations,
use :c:func:`timespec_to_timeout` and :c:func:`timespec_from_timeout`.

.. code-block:: c

    k_timeout_t to;
    struct timespec ts;

    timespec_from_timeout(K_FOREVER, &ts);
    to = timespec_to_timeout(&ts); /* to == K_FOREVER */

    timespec_from_timeout(K_MSEC(100), &ts);
    to = timespec_to_timeout(&ts); /* to == K_MSEC(100) */

.. doxygengroup:: timeutil_repr_apis

.. _timeutil_sync:

Time Scale Synchronization
==========================

There are several factors that affect synchronizing time scales:

* The rate of discrete instant representation change.  For example, Zephyr
  uptime is tracked in ticks which advance at events that nominally occur at
  :kconfig:option:`CONFIG_SYS_CLOCK_TICKS_PER_SEC` Hertz, while an external time
  source may provide data in whole or fractional seconds (e.g. microseconds).
* The absolute offset required to align the two scales at a single instant.
* The relative error between observable instants in each scale, required to
  align multiple instants consistently.  For example, a reference clock that's
  conditioned by a 1-pulse-per-second GPS signal will be much more accurate
  than a Zephyr system clock driven by a RC oscillator with a +/- 250 ppm
  error.

Synchronization or alignment between time scales is done with a multi-step
process:

* An instant in a time scale is represented by an (unsigned) 64-bit integer,
  assumed to advance at a fixed nominal rate.
* :c:struct:`timeutil_sync_config` records the nominal rates of a reference
  time scale/source (e.g. TAI) and a local time source
  (e.g. :c:func:`k_uptime_ticks`).
* :c:struct:`timeutil_sync_instant` records the representation of a single
  instant in both the reference and local time scales.
* :c:struct:`timeutil_sync_state` provides storage for an initial instant, a
  recently received second observation, and a skew that can adjust for
  relative errors in the actual rate of each time scale.
* :c:func:`timeutil_sync_ref_from_local()` and
  :c:func:`timeutil_sync_local_from_ref()` convert instants in one time scale
  to another taking into account skew that can be estimated from the two
  instances stored in the state structure by
  :c:func:`timeutil_sync_estimate_skew`.

.. doxygengroup:: timeutil_sync_apis

.. _timeutil_manip:

``timespec`` Manipulation
=========================

Checking the validity of a ``timespec`` can be done with :c:func:`timespec_is_valid`.

.. code-block:: c

    struct timespec ts = {
        .tv_sec = 0,
        .tv_nsec = -1, /* out of range! */
    };

    if (!timespec_is_valid(&ts)) {
        /* error-handing code */
    }

In some cases, invalid ``timespec`` objects may be re-normalized using
:c:func:`timespec_normalize`.

.. code-block:: c

    if (!timespec_normalize(&ts)) {
        /* error-handling code */
    }

    /* ts should be normalized */
    __ASSERT(timespec_is_valid(&ts) == true, "expected normalized timespec");

It is possible to compare two ``timespec`` objects for equality using :c:func:`timespec_equal`.

.. code-block:: c

    if (timespec_equal(then, now)) {
        /* time is up! */
    }

It is possible to compare and fully order (valid) ``timespec`` objects using
:c:func:`timespec_compare`.

.. code-block:: c

    int cmp = timespec_compare(a, b);

    switch (cmp) {
    case 0:
        /* a == b */
        break;
    case -1:
        /* a < b */
        break;
    case +1:
        /* a > b */
        break;
    }

It is possible to add, subtract, and negate ``timespec`` objects using
:c:func:`timespec_add`, :c:func:`timespec_sub`, and :c:func:`timespec_negate`,
respectively. Like :c:func:`timespec_normalize`, these functions will output
a normalized ``timespec`` when doing so would not result in overflow.
On success, these functions return ``true``. If overflow would occur, the
functions return ``false``.

.. code-block:: c

    /* a += b */
    if (!timespec_add(&a, &b)) {
        /* overflow */
    }

    /* a -= b */
    if (!timespec_sub(&a, &b)) {
        /* overflow */
    }

    /* a = -a */
    if (!timespec_negate(&a)) {
        /* overflow */
    }

.. doxygengroup:: timeutil_timespec_apis


.. _timeutil_concepts:

Concepts Underlying Time Support in Zephyr
******************************************

Terms from `ISO/TC 154/WG 5 N0038
<https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf>`__
(ISO/WD 8601-1) and elsewhere:

* A *time axis* is a representation of time as an ordered sequence of
  instants.
* A *time scale* is a way of representing an instant relative to an origin
  that serves as the epoch.
* A time scale is *monotonic* (increasing) if the representation of successive
  time instants never decreases in value.
* A time scale is *continuous* if the representation has no abrupt changes in
  value, e.g. jumping forward or back when going between successive instants.
* `Civil time <https://en.wikipedia.org/wiki/Civil_time>`__ generally refers
  to time scales that legally defined by civil authorities, like local
  governments, often to align local midnight to solar time.

Relevant Time Scales
====================

`International Atomic Time
<https://en.wikipedia.org/wiki/International_Atomic_Time>`__ (TAI) is a time
scale based on averaging clocks that count in SI seconds. TAI is a monotonic
and continuous time scale.

`Universal Time <https://en.wikipedia.org/wiki/Universal_Time>`__ (UT) is a
time scale based on Earth’s rotation. UT is a discontinuous time scale as it
requires occasional adjustments (`leap seconds
<https://en.wikipedia.org/wiki/Leap_second>`__) to maintain alignment to
changes in Earth’s rotation. Thus the difference between TAI and UT varies
over time. There are several variants of UT, with `UTC
<https://en.wikipedia.org/wiki/Coordinated_Universal_Time>`__ being the most
common.

UT times are independent of location. UT is the basis for Standard Time
(or "local time") which is the time at a particular location. Standard
time has a fixed offset from UT at any given instant, primarily
influenced by longitude, but the offset may be adjusted ("daylight
saving time") to align standard time to the local solar time. In a sense
local time is "more discontinuous" than UT.

POSIX Time (see :rfc:`8536#section-2`) is a time scale
that counts seconds since the "POSIX epoch" at 1970-01-01T00:00:00Z (i.e. the
start of 1970 UTC). UNIX Time is an extension of POSIX
time using negative values to represent times before the POSIX epoch. Both of
these scales assume that every day has exactly 86400 seconds. In normal use
instants in these scales correspond to times in the UTC scale, so they inherit
the discontinuity.

The continuous analogue is UNIX Leap Time which is UNIX time plus all
leap-second corrections added after the POSIX epoch (when TAI-UTC was 8 s).

Example of Time Scale Differences
---------------------------------

A positive leap second was introduced at the end of 2016, increasing the
difference between TAI and UTC from 36 seconds to 37 seconds. There was
no leap second introduced at the end of 1999, when the difference
between TAI and UTC was only 32 seconds. The following table shows
relevant civil and epoch times in several scales:

==================== ========== =================== ======= ==============
UTC Date             UNIX time  TAI Date            TAI-UTC UNIX Leap Time
==================== ========== =================== ======= ==============
1970-01-01T00:00:00Z 0          1970-01-01T00:00:08 +8      0
1999-12-31T23:59:28Z 946684768  2000-01-01T00:00:00 +32     946684792
1999-12-31T23:59:59Z 946684799  2000-01-01T00:00:31 +32     946684823
2000-01-01T00:00:00Z 946684800  2000-01-01T00:00:32 +32     946684824
2016-12-31T23:59:59Z 1483228799 2017-01-01T00:00:35 +36     1483228827
2016-12-31T23:59:60Z undefined  2017-01-01T00:00:36 +36     1483228828
2017-01-01T00:00:00Z 1483228800 2017-01-01T00:00:37 +37     1483228829
==================== ========== =================== ======= ==============

Functional Requirements
-----------------------

The Zephyr tick counter has no concept of leap seconds or standard time
offsets and is a continuous time scale. However it can be relatively
inaccurate, with drifts as much as three minutes per hour (assuming an RC
timer with 5% tolerance).

There are two stages required to support conversion between Zephyr time and
common human time scales:

* Translation between the continuous but inaccurate Zephyr time scale and an
  accurate external stable time scale;
* Translation between the stable time scale and the (possibly discontinuous)
  civil time scale.

The API around :c:func:`timeutil_sync_state_update()` supports the first step
of converting between continuous time scales.

The second step requires external information including schedules of leap
seconds and local time offset changes. This may be best provided by an
external library, and is not currently part of the time utility APIs.

Selecting an External Source and Time Scale
-------------------------------------------

If an application requires civil time accuracy within several seconds then UTC
could be used as the stable time source. However, if the external source
adjusts to a leap second there will be a discontinuity: the elapsed time
between two observations taken at 1 Hz is not equal to the numeric difference
between their timestamps.

For precise activities a continuous scale that is independent of local and
solar adjustments simplifies things considerably. Suitable continuous scales
include:

- GPS time: epoch of 1980-01-06T00:00:00Z, continuous following TAI with an
  offset of TAI-GPS=19 s.
- Bluetooth Mesh time: epoch of 2000-01-01T00:00:00Z, continuous following TAI
  with an offset of -32.
- UNIX Leap Time: epoch of 1970-01-01T00:00:00Z, continuous following TAI with
  an offset of -8.

Because C and Zephyr library functions support conversion between integral and
calendar time representations using the UNIX epoch, UNIX Leap Time is an ideal
choice for the external time scale.

The mechanism used to populate synchronization points is not relevant: it may
involve reading from a local high-precision RTC peripheral, exchanging packets
over a network using a protocol like NTP or PTP, or processing NMEA messages
received a GPS with or without a 1pps signal.

``timespec`` Concepts
=====================

Originally from POSIX, ``struct timespec`` has been a part of the C standard
since C11. The definition of ``struct timespec`` is as shown below.

.. code-block:: c

   struct timespec {
       time_t tv_sec;  /* seconds */
       long   tv_nsec; /* nanoseconds */
   };

The ``tv_nsec`` field is only valid with values in the range ``[0, 999999999]``. The
``tv_sec`` field is the number of seconds since the epoch. If ``struct timespec`` is
used to express a difference, the ``tv_sec`` field may fall into a negative range.

---

### Doc Project Code Flow (`doc/project/code_flow.rst`)

.. _code-flow-and-branches:

Code Flow and Branches
######################

Introduction
************

The zephyr Git repository has three types of branches:

main
  Which contains the latest state of development

collab-\*
  Collaboration branches that are used for shared development
  of new features to be introduced into the main branch when ready. Creating a new
  collaboration branch requires a justification and TSC approval. Collaboration branches
  shall be based off the main branch and any changes developed in the collab
  branch shall target the main development branch. For released versions of
  Zephyr, the introduction of fixes and new features, if approved by the TSC,
  shall be done using backport pull requests.

vx.y-branch
  Branches which track maintenance releases based on a major
  release

Development in collaboration branches before features go to mainline allows teams to
work independently on a subsystem or a feature, improves efficiency and
turnaround time, and encourages collaboration and streamlines communication
between developers.

Changes submitted to a collaboration branch can evolve and improve
incrementally in a branch, before they are submitted to the mainline tree for
final integration.

By dedicating an isolated branch to complex features, it's
possible to initiate in-depth discussions around new additions before
integrating them into the official project.

Collaboration branches are ephemeral and shall be removed once the collaboration work
has been completed. When a branch is requested, the proposal should include the
following:

* Define exit criteria for merging the collaboration branch changes back into the main branch.
* Define a timeline for the expected life cycle of the branch. It is
  recommended to select a Zephyr release to set the timeline. Extensions to
  this timeline requires TSC approval.

Roles and Responsibilities
**************************

Collaboration branch owners have the following responsibilities:

- Use the infrastructure and tools provided by the project (GitHub, Git)
- All changes to collaboration branches shall come in form of github pull requests.
- Force pushing a collaboration branch is only allowed when rebasing against the main branch.
- Review changes coming from team members and request review from branch owners
  when submitting changes.
- Keep the branch in sync with upstream and update on a regular basis.
- Push changes frequently to upstream using the following methods:

  - GitHub pull requests: for example, when reviews have not been done in the local
    branch (one-man branch).
  - Merge requests: When a set of changes has been done in a local branch and
    has been reviewed and tested in a collaboration branch.

---

### Doc Project Communication (`doc/project/communication.rst`)

.. _communication-and-collaboration:

Communication and Collaboration
###############################

The `Zephyr Discord Server <https://chat.zephyrproject.org>`_ is the primary
chat forum used by Zephyr developers, contributors, and users.

The `Zephyr project mailing lists
<https://lists.zephyrproject.org/g/main/subgroups>`_ are used as an additional
communication tool by project members, contributors, and the community. There
are specialized mailing lists for specific interests. Several lists are public
and open. Mailing lists are always available for use in situations where
Discord is unavailable or an unsuitable forum.

In general, bug reports and other issues should be reported as `GitHub Issues
<https://github.com/zephyrproject-rtos/zephyr/issues>`_ and not broadcasted to
the mailing list. The same applies to code reviews.

---

### Doc Project Dev Env And Tools (`doc/project/dev_env_and_tools.rst`)

.. _dev-environment-and-tools:

Development Environment and Tools
#################################

Code Review
************

GitHub is intended to provide a framework for reviewing every commit before it
is accepted into the code base. Changes, in the form of Pull Requests (PR) are
uploaded to GitHub but don't actually become a part of the project until they've
been reviewed, passed a series of checks (CI), and are approved by maintainers.
GitHub is used to support the standard open source practice of submitting
patches, which are then reviewed by the project members before being applied to
the code base.

Pull requests should be appropriately :ref:`labeled<gh_labels>`,
and linked to any relevant :ref:`bug or feature tracking issues<bug_reporting>`
.

The Zephyr project uses GitHub for code reviews and Git tree management. When
submitting a change or an enhancement to any Zephyr component, a developer
should use GitHub. GitHub Actions automatically assigns a responsible reviewer
on a component basis, as defined in the :zephyr_file:`MAINTAINERS.yml` file
stored with the code tree in the Zephyr project repository. A limited set of
release managers are allowed to merge a pull request into the main branch once
reviews are complete.

.. _review_time:

Give reviewers time to review before code merge
================================================

The Zephyr project is a global project that is not tied to a certain geography
or timezone. We have developers and contributors from across the globe. When
changes are proposed using pull request, we need to allow for a minimal review
time to give developers and contributors the opportunity to review and comment
on changes. There are different categories of changes and we know that some
changes do require reviews by subject matter experts and owners of the subsystem
being changed. Many changes fall under the "trivial" category that can be
addressed with general reviews and do not need to be queued for a maintainer or
code-owner review. Additionally, some changes might require further discussions
and a decision by the TSC or the Security working group. To summarize the above,
the diagram below proposes minimal review times for each category:


.. figure:: pull_request_classes.png
    :align: center
    :alt: Pull request classes
    :figclass: align-center

    Pull request classes

Workflow
---------

- An author of a change can suggest in his pull-request which category a change
  should belong to. A project maintainers or TSC member monitoring the inflow of
  changes can change the label of a pull request by adding a comment justifying
  why a change should belong to another category.
- The project will use the label system to categorize the pull requests.
- Changes should not be merged before the minimal time has expired.

Categories/Labels
-----------------

Hotfix
  Any change that is a fix to an issue that blocks developers from doing their
  daily work, for example CI breakage, Test breakage, Minor documentation fixes
  that impact the user experience.

  Such fixes can be merged at any time after they have passed CI checks. Depending
  on the fix, severity, and availability of someone to review them (other than the
  author) they can be merged with justification without review by one of the
  project owners.

Trivial
  Trivial changes are those that appear obvious enough and do not require maintainer or code-owner
  involvement. Such changes should not change the logic or the design of a
  subsystem or component. For example a trivial change can be:

  - Documentation changes
  - Configuration changes
  - Minor Build System tweaks
  - Minor optimization to code logic without changing the logic
  - Test changes and fixes
  - Sample modifications to support additional configuration or boards etc.

Maintainer
  Any changes that touch the logic or the original design of a subsystem or
  component will need to be reviewed by the code owner or the designated subsystem
  maintainer. If the code changes is initiated by a contributor or developer other
  than the owner the pull request needs to be assigned to the code owner who will
  have to drive the pull request to a mergeable state by giving feedback to the
  author and asking for more reviews from other developers.

Security
  Changes that appear to have an impact to the overall security of the system need
  to be reviewed by a security expert from the security working group.

TSC and Working Groups
  Changes that introduce new features or functionality or change the way the
  overall system works need to be reviewed by the TSC or the responsible Working
  Group. For example for :ref:`breaking API changes <breaking_api_changes>`, the
  proposal needs to be presented in the Architecture meeting so that the relevant
  stakeholders are made aware of the change.

A Pull-Request should have an Assignee
=======================================

- An assignee to a pull request should not be the same as the
  author of the pull-request
- An assignee to a pull request is responsible for driving the
  pull request to a mergeable state
- An assignee is responsible for dismissing stale reviews and seeking reviews
  from additional developers and contributors
- Pull requests should not be merged without an approval by the assignee.

Pull Request should not be merged by author without review
===========================================================

All pull requests need to be reviewed and should not be merged by the author
without a review. The following exceptions apply:

- Hot fixes: Fixing CI issues, reverts, and system breakage
- Release related changes: Changing version file, applying tags and release
  related activities without any code changes.

Developers and contributors should always seek review, however there are cases
when reviewers are not available and there is a need to get a code change into
the tree as soon as possible.

Reviewers shall not 'Request Changes' without comments or justification
=======================================================================

Any change requests (-1) on a pull request have to be justified. A reviewer
should avoid blocking a pull-request with no justification. If a reviewer feels
that a change should not be merged without their review, then: Request change
of the category: for example:

- Trivial -> Maintainer
- Assign Pull Request to yourself, this will mean that a pull request should
  not be merged without your approval.


Pull Requests should have at least 2 approvals before they are merged
======================================================================

A pull-request shall be merged only with two positive reviews (approval). Beside
the person merging the pull-request (merging != approval), two additional
approvals are required to be able to merge a pull request. The person merging
the request can merge without approving or approve and merge to get to the 2
approvals required.

Reviewers should keep track of pull requests they have provided feedback to
===========================================================================

If a reviewer has requested changes in a pull request, he or she should monitor
the state of the pull request and/or respond to mention requests to see if his
feedback has been addressed. Failing to do so, negative reviews shall be
dismissed by the assignee or an owner of the repository. Reviews will be
dismissed following the criteria below:

- The feedback or concerns were visibly addressed by the author
- The reviewer did not revisit the pull request after 2 week and multiple pings
  by the author
- The review is unrelated to the code change or asking for unjustified
  structural changes such as:

  - Split the PR
  - Can you fix this unrelated code that happens to appear in the diff
  - Can you fix unrelated issues
  - Etc.

Closing Stale Issues and Pull Requests
=======================================

- The Pull requests and issues sections on Github are NOT discussion forums.
  They are items that we need to execute and drive to closure.
  Use the mailing lists for discussions.
- In case of both issues and pull-requests the original poster needs to respond
  to questions and provide clarifications regarding the issue or the change.
  After one week without a response to a request, a second attempt to elicit
  a response from the contributor will be made. After one more week without a
  response the item may be closed (draft and DNM tagged pull requests are
  excluded).

Continuous Integration
***********************

All changes submitted to GitHub are subject to tests that are run on
emulated platforms and architectures to identify breakage and regressions that
can be immediately identified. Testing using Twister additionally performs build tests
of all boards and platforms. Documentation changes are also verified
through review and build testing to verify doc generation will be successful.

Any failures found during the CI test run will result in a negative review
assigned automatically by the CI system.
Developers are expected to fix issues and rework their patches and submit again.

The CI infrastructure currently runs the following tests:

- Run ``checkpatch`` for code style issues (can vote -1 on errors; see note)
- Gitlint: Git commit style based on project requirements
- License Check: Check for conflicting licenses
- Run ``twister`` script

  - Run kernel tests in QEMU (can vote -1 on errors)
  - Build various samples for different boards (can vote -1 on errors)

- Verify documentation builds correctly.

.. note::

   ``checkpatch`` is a Perl script that uses regular expressions to
   extract information that requires a C language parser to process
   accurately.  As such it sometimes issues false positives.  Known
   cases include constructs like:

    .. code-block:: c

      static uint8_t __aligned(PAGE_SIZE) page_pool[PAGE_SIZE * POOL_PAGES];
      IOPCTL_Type *base = config->base;

   Both lines produce a diagnostic regarding spaces around the ``*``
   operator: the first is misidentified as a pointer type declaration
   that would be correct as ``PAGE_SIZE *POOL_PAGES`` while the second
   is misidentified as a multiplication expression that would be correct
   as ``IOPCTL_Type * base``.

   Maintainers can override the -1 in cases where the CI infrastructure
   gets the wrong answer.


.. _gh_labels:

Labeling issues and pull requests in GitHub
*******************************************

The project uses GitHub issues and pull requests (PRs) to track and manage
daily and long-term work and contributions to the Zephyr project. We use
GitHub **labels** to classify and organize these issues and PRs by area, type,
priority, and more, making it easier to find and report on relevant items.

All GitHub issues or pull requests must be appropriately labeled.
Issues and PRs often have multiple labels assigned,
to help classify them in the different available categories.
When reviewing a PR, if it has missing or incorrect labels, maintainers shall
fix it.

This saves us all time when searching, reduces the chances of the PR or issue
being forgotten, speeds up reviewing, avoids duplicate issue reports, etc.

These are the labels we currently have, grouped by applicability:

Labels applicable to issues only
================================

.. list-table::
   :header-rows: 1

   * - Label
     - Description

   * - :guilabel:`priority: {high|medium|low}`
     - To classify the impact and importance of a bug.

       Note: Issue priorities are generally set or changed during the bug-triage or TSC
       meetings.

   * - :guilabel:`Regression`
     - Something, which was working, but does not anymore (bug subtype).

   * - :guilabel:`Duplicate`
     - This issue is a duplicate of another issue (please specify).

   * - :guilabel:`Good first issue`
     - Good for a first time contributor to take.

   * - :guilabel:`Release Notes`
     - Issues that need to be mentioned in release notes as known issues with
       additional information.

Labels applicable to pull requests only
=======================================

The issue or PR describes a change to a stable API.

.. list-table::
   :header-rows: 1

   * - Label
     - Description

   * - :guilabel:`Hotfix`
     - Fix for an issue blocking development.

   * - :guilabel:`Trivial`
     - Simple changes that can have shorter review time and be reviewed by anyone, i.e. typos,
       straightforward one-liner bug fixes, etc.

   * - :guilabel:`Maintainer`
     - Maintainer review required.

   * - :guilabel:`Security Review`
     - To be reviewed by a security expert.

   * - :guilabel:`DNM`
     - This PR should not be merged (Do Not Merge). For work in progress, GitHub
       "draft" PRs are preferred.

   * - :guilabel:`Needs review`
     - The PR needs attention from the maintainers.

   * - :guilabel:`Backport`
     - The PR is a backport or should be backported.

   * - :guilabel:`Licensing`
     - The PR has licensing issues which require a licensing expert to review it.

.. note::
   For all labels applicable to PRs: Please note that the label, together with
   PR complexity, affects how long a merge should be held to ensure proper
   review. See :ref:`review process <review_time>` for details.


Labels applicable to both pull requests and issues
==================================================

.. list-table::
   :header-rows: 1

   * - Label
     - Description

   * - :guilabel:`area: {area-name}`
     - Indicates Zephyr subsystems (e.g, :guilabel:`area: Kernel`, :guilabel:`area: I2C`,
       :guilabel:`area: Memory Management`), project functions (e.g., :guilabel:`area: Debugging`,
       :guilabel:`area: Documentation`, :guilabel:`area: Process`), or other categories (e.g.,
       :guilabel:`area: Coding Style`, :guilabel:`area: MISRA-C`) affected by the bug or the pull request.

       An area maintainer should be able to filter by an area label and find all issues
       and PRs which relate to that area.

   * - :guilabel:`platform: {platform-name}`
     - An issue or PR which affects only a particular platform.

   * - :guilabel:`TSC`
     - TSC stands for Technical Steering Committee. The issue is to be discussed in the
       following `TSC meeting`_ if time permits.

       .. _`TSC meeting`: https://github.com/zephyrproject-rtos/zephyr/wiki/Technical-Steering-Committee-(TSC)

   * - :guilabel:`Breaking API Change`
     - The issue or PR describes a breaking change to a stable API. See additional information
       in :ref:`breaking_api_changes`.

   * - :guilabel:`bug`
     - The issue is a bug, or the PR is fixing a bug.

   * - :guilabel:`Coverity`
     - A Coverity detected issue or its fix.

   * - :guilabel:`Waiting for response`
     - The Zephyr developers are waiting for the submitter to respond to a question, or
       address an issue.

   * - :guilabel:`Blocked`
     - Blocked by another PR or issue.

   * - :guilabel:`Stale`
     - An issue or a PR which seems abandoned, and requires attention by the author.

   * - :guilabel:`In progress`
     - For PRs: is work in progress and should not be merged yet. For issues: Is being
       worked on.

   * - :guilabel:`RFC`
     - The author would like input from the community. For a PR it should be considered
       a draft.

   * - :guilabel:`LTS`
     - Long term release branch related.

   * - :guilabel:`EXT`
     - Related to an external component.

---

### Doc Project Documentation (`doc/project/documentation.rst`)

.. _code-documentation:

Code Documentation
###################

API Documentation
******************

Well documented APIs enhance the experience for developers and are an essential
requirement for defining an API's success. Doxygen is a general purpose
documentation tool that the zephyr project uses for documenting APIs. It
generates either an on-line documentation browser (in HTML) and/or provides
input for other tools that is used to generate a reference manual from
documented source files. In particular, doxygen's XML output is used as an input
when producing the Zephyr project's online documentation.

Reference to Requirements
**************************

APIs for the most part document the implementation of requirements or advertised
features and can be traced back to features. We use the API documentation as the
main interface to trace implementation back to documented features. This is done
using doxygen's native requirements traceability commands (``@satisfies`` and
``@verifies``) that reference requirements maintained somewhere else in a
requirement catalogue.

Test Documentation
*******************

To help understand what each test does and which functionality it tests we also
document all test code using the same tools and in the same context and generate
documentation for all unit and integration tests maintained in the same
environment. Tests are documented using references to the APIs or functionality
they validate by creating a link back to the APIs and by adding a reference to
the original requirements.


Documentation Guidelines
*************************

Test Code
=========

The Zephyr project uses several test methodologies, the most common being the
:ref:`Ztest framework <test-framework>`. Test documentation should only be done
on the entry test functions (usually prefixed with test\_) and those that are
called directly by the Ztest framework. Those tests are going to appear in test
reports and using their name and identifier is the best way to identify them
and trace back to them from requirements.

Test documentation should not interfere with the actual API documentation and
needs to follow a new structure to avoid confusion. Using a consistent naming
scheme and following a well-defined structure we will be able to group this
documentation in its own module and identify it uniquely when parsing test data
for traceability reports. Here are a few guidelines to be followed:

- All test code documentation should be grouped under the ``all_tests`` doxygen
  group
- All test documentation should be under doxygen groups that are prefixed
  with tests\_

Documenting a Requirement
=========================

A requirement is documented with the doxygen ``@requirement`` command, which
takes a unique identifier and an optional title. Doxygen collects all
requirements on a single page and allows them to be referenced from anywhere by
their identifier. Use a comment block dedicated to the requirement, typically
maintained in the requirement catalogue::

    /**
    * @requirement ZEPH-015 (Give a semaphore)
    *
    * The kernel shall provide a mechanism to give a semaphore, increasing its
    * count up to its configured maximum.
    */

The identifier used here (for example ``ZEPH-015``) is the same one referenced by
the ``@satisfies`` and ``@verifies`` commands below, which is what links the
implementation and tests back to the requirement.

The doxygen ``@verifies`` command signifies that a test verifies a
requirement::

    /**
    * @brief Tests for the Semaphore kernel object
    * @defgroup kernel_semaphore_tests Semaphore
    * @ingroup all_tests
    * @{
    */

    ...
    /**
    * @brief A brief description of the tests
    * Some details about the test
    * more details
    *
    * @verifies ZEPH-015
    */
    void test_sema_thread2thread(void)
    {
    ...
    }
    ...

    /**
    * @}
    */

To get coverage of how an implementation or a piece of code satisfies a
requirement, we use the doxygen ``@satisfies`` command::

    /**
    * @brief Give a semaphore.
    *
    * This routine gives @a sem, unless the semaphore is already at its maximum
    * permitted count.
    *
    * @note Can be called by ISRs.
    *
    * @param sem Address of the semaphore.
    *
    * @satisfies ZEPH-015
    */
    __syscall void k_sem_give(struct k_sem *sem);



To generate the matrix, you will first need to build the documentation,
specifically you will need to build the doxygen XML output::

   $ make doxygen

Parse the generated XML data from doxygen to generate the traceability matrix.

---

### Doc Project Index (`doc/project/index.rst`)

.. _development_model:

Project and Governance
#######################


.. toctree::
   :maxdepth: 1

   tsc
   project_roles
   working_groups
   release_process
   proposals
   code_flow
   dev_env_and_tools
   issues
   communication
   documentation



The Zephyr project defines a development process workflow using GitHub
**Issues** to track feature, enhancement, and bug reports together with GitHub
**Pull Requests** (PRs) for submitting and reviewing changes.  Zephyr
community members work together to review these Issues and PRs, managing
feature enhancements and quality improvements of Zephyr through its regular
releases, as described in :ref:`release_process`.

We can only manage the volume of Issues and PRs, by requiring timely reviews,
feedback, and responses from the community and contributors, both for initial
submissions and for followup questions and clarifications.  Read about the
project's :ref:`development processes and tools <dev-environment-and-tools>`
and specifics about :ref:`review timelines <review_time>` to learn about the
project's goals and guidelines for our active developer community.

:ref:`project_roles` describes in detail the Zephyr project roles and associated permissions
with respect to the development process workflow.


Terminology
***********

- mainline: The main tree where the core functionality and core features are
  being developed.
- subsystem/feature branch: is a branch within the same repository. In our case,
  we will use the term branch also when referencing branches not in the same
  repository, which are a copy of a repository sharing the same history.
- upstream: A parent branch the source code is based on. This is the branch you
  pull from and push to, basically your upstream.
- LTS: Long Term Support

---

### Doc Project Issues (`doc/project/issues.rst`)

.. _bug_reporting:

Bug Reporting
##############

To maintain traceability and relation between proposals, changes, features, and
issues, it is recommended to cross-reference source code commits with the
relevant GitHub issues and vice versa.
Any changes that originate from a tracked feature or issue should contain a
reference to the feature by mentioning the corresponding issue or pull-request
identifiers.

At any time it should be possible to establish the origin of a change and the
reason behind it by following the references in the code.

Reporting a regression issue
****************************

It could happen that the issue being reported is identified as a regression,
as the use case is known to be working on earlier commit or release.
In this case, providing directly the guilty commit when submitting the bug
gains a lot of time in the eventual bug fixing.

To identify the commit causing the regression, several methods could be used,
but tree bisecting method is an efficient one that doesn't require deep code
expertise and can be used by every one.

For this, `git bisect`_ is the recommended tool.

Recommendations on the process:

* Run ``west update`` on each bisection step.
* Once the bisection is over and a culprit identified, verify manually the result.

.. _git bisect:
   https://git-scm.com/docs/git-bisect

---

### Doc Project Project Roles (`doc/project/project_roles.rst`)

.. _project_roles:

TSC Project Roles
*****************

Project Roles
#############

You can participate in the Zephyr Project as a *Contributor*, *Collaborator*, or *Maintainer*.

**Contributor**: Any community member who contributes code, documentation, or other assets to the
project.

**Collaborator**: An active Contributor who is involved in one or more areas of the project.

**Maintainer**: A lead Collaborator responsible for a specific area or subsystem within the project.
Maintainers also serve as representatives for their area on the Technical Steering Committee (TSC)
as needed.

Areas in this context refer to specific subsystems, components, or modules within
the Zephyr Project codebase. Examples of areas include, but are not limited to, networking,
file systems, device drivers, architecture support, and board support packages (boards and SoC
definitions).

Areas in the project should at least have one Maintainer and may have multiple Collaborators.
Depending on the size and complexity of the area, there may be multiple Maintainers as well,
however, the number of maintainers should be kept to a practical minimum to ensure effective
management and decision-making.

.. _contributor:

Contributor
+++++++++++

A *Contributor* is a developer who wishes to contribute to the project,
at any level.

Contributors are granted the following rights and responsibilities:

* Right to contribute code, documentation, translations, artwork, etc.
* Right to report defects (bugs) and suggestions for enhancement.
* Right to participate in the process of reviewing contributions by others.
* Right to participate in the feature development process.
* Responsibility to abide by decisions, once made. They are welcome to
  provide new, relevant information to reopen decisions.
* Responsibility for issues and bugs introduced by one’s own contributions.
* Responsibility to respect the rules of the community.
* Responsibility to provide constructive advice whenever participating in
  discussions and in the review of contributions.
* Responsibility to follow the project’s code of conduct
  (https://github.com/zephyrproject-rtos/zephyr/blob/main/CODE_OF_CONDUCT.md)


Zephyr Contributor Badge
------------------------

When your first contribution to the Zephyr project gets merged, you'll become
eligible to claim your Zephyr Contributor Badge. This digital badge can be
displayed on your website, blog, social media profile, etc. It will allow you to
showcase your involvement in the Zephyr project and help raise its awareness.

You may apply for your Contributor Badge by filling out the `Zephyr Contributor
Badge form`_.

.. _collaborator:

Collaborator
++++++++++++

A *Collaborator* is a Contributor who is also participating in the maintenance
of Zephyr source code. Their input weighs more when decisions are made, in a
fully meritocratic fashion.

You become a collaborator by showing consistent involvement in the project,
including making significant contributions to the project over a period of
time and by participating in the development and review of at least one area.

To request to become a Collaborator, submit a pull request adding yourself
to the ``collaborators`` section of an area in the :ref:`maintainers_file` and
notify the maintainers of that area. The addition needs to be approved by
the maintainers of that area.

Collaborators have the following rights and responsibilities, in addition to
those listed for Contributors:

* Right to participate in setting goals for the short and medium terms for the
  area being maintained, alongside the maintainers of that area.
* Responsibility to participate in the feature development process.
* Responsibility to review relevant code changes within reasonable time.
* Responsibility to ensure the quality of the code to expected levels.
* Responsibility to participate in community discussions.
* Responsibility to mentor new contributors when appropriate
* Responsibility to participate in the quality verification and release
  process, when those happen.

Collaborator change requests on pull requests should
be addressed by the original submitter. In cases where the changes requested do
not follow the :ref:`expectations <reviewer-expectations>` and the guidelines
of the project or in cases of disagreement, it is the responsibility of the
assignee to advance the review process and resolve any disagreements.

Collaborator approval of pull requests are counted toward the minimum required
approvals needed to merge a PR. Other criteria for merging may apply.


.. _maintainer:

Maintainer
++++++++++

A *Maintainer* is a Collaborator who is also responsible for knowing,
directing and anticipating the needs of a given zephyr source code area.

An individual may become a maintainer of a given area by demonstrating
sustained and meaningful contributions over time. This includes:

- Making significant technical contributions to the area.
- Actively participating in the development process, including code reviews and
  design discussions.
- Establishing familiarity with the architecture, constraints,
  and evolution of the area.

Maintainer status may also be granted when introducing a new area or subsystem to the project as its original author while demonstrating recognized expertise and long-term commitment to the area.

In all cases, maintainership reflects both technical ownership and ongoing
engagement with the community supporting that area.

To request to become a Maintainer, submit a pull request adding yourself
to the ``maintainers`` section of an area in the :ref:`maintainers_file` and
notify the existing maintainers of that area. The addition needs to be approved by
the maintainers of that area.

Usually, there's only one maintainer but depending on the area, there may be
multiple maintainers sharing the responsibility.

Maintainers have the following rights and responsibilities,
in addition to those listed for Contributors and Collaborators:

* Right to set the overall architecture of the relevant subsystems or areas
  of involvement.
* Right to make decisions in the relevant subsystems or areas of involvement,
  in conjunction with the collaborators and submitters.
  See :ref:`pr_technical_escalation`.
* Responsibility to convey the direction of the relevant subsystem or areas to
  the TSC
* Responsibility to ensure all contributions of the project have been reviewed
  within reasonable time.
* Responsibility to enforce the Code of Conduct. As leaders in the community,
  maintainers are expected to be role models in upholding the project's code
  of conduct and creating a welcoming and inclusive environment for everyone.
* Responsibility to triage static analysis issues in their code area.
  See :ref:`static_analysis`.

Maintainer approval of pull requests are counted toward the minimum
required approvals needed to merge a PR. Other criteria for merging may apply.


Teams and Supporting Activities
###############################

Assignee
++++++++

An *Assignee* is one of the maintainers of an area being changed in a pull request.

Assignees are set automatically based on the code being changed. Other
Maintainers or the Release Engineering team can set assignees when the latter is
not possible, or when another assignee is more appropriate, in this last case
documenting in a comment the motivation for the change.

* Responsibility to drive the pull request to a mergeable state
* Right to dismiss stale and unrelated reviews or reviews not following
  :ref:`expectations <reviewer-expectations>` from reviewers and seek reviews
  from additional maintainers, developers and contributors
* Right to block pull requests from being merged until issues or changes
  requested are addressed
* Responsibility to re-assign a pull request if they are the original submitter
  of the code
* Solicit approvals from maintainers of the subsystems affected
* Responsibility to drive the :ref:`pr_technical_escalation` process

Static Analysis Audit Team
++++++++++++++++++++++++++

The Static Analysis Audit team works closely with the release engineering
team to ensure that static analysis defects opened during a release
cycle are properly addressed. The team has the following rights and
responsibilities:

* Right to revert any triage in a static analysis tool (e.g: Coverity)
  that does not follow the project expectations.
* Responsibility to inform code owners about improper classifications.
* Responsibility to alert TSC if any issues are not adequately addressed by the
  responsible code owners.

Joining the Static Analysis Audit team

* Contributors highly involved in the project with some expertise
  in static analysis.


.. _release-engineering-team:

Release Engineering Team
++++++++++++++++++++++++

A team of active Maintainers involved in multiple areas.

* The members of the Release Engineering team are expected to fill
  the Release Manager role based on a defined cadence and selection process.
* The cadence and selection process are defined by the Release Engineering
  team and are approved by the TSC.
* The team reports directly into the TSC.

Release Engineering team has the following rights and responsibilities:

* Right to merge code changes to the zephyr tree following the project rules.
* Right to revert any changes that have broken the code base
* Right to close any stale changes after <N> months of no activity
* Responsibility to take directions from the TSC and follow them.
* Responsibility to coordinate code merges with maintainers.
* Responsibility to merge all contributions regardless of their
  origin and area if they have been approved by the respective
  maintainers and follow the merge criteria of a change.
* Responsibility to keep the Zephyr code base in a working and passing state
  (as per CI)

Joining the Release Engineering team

* Maintainers highly involved in the project may be nominated
  by a TSC voting member to join the Release Engineering team.
  Nominees may become members of the team by approval of the
  existing TSC voting members.
* To ensure a functional Release Engineering team the TSC shall
  periodically review the team’s followed processes,
  the appropriate size, and the membership
  composition (ensure, for example, that team members are
  geographically distributed across multiple locations and
  time-zones).


Release Manager
+++++++++++++++

A *Maintainer* responsible for driving a specific release to
completion following the milestones and the roadmap of the
project for this specific release.

* TSC has to approve a release manager.

A Release Manager is a member of the Release Engineering team and has
the rights and responsibilities of that team in addition to
the following:

* Right to manage and coordinate all code merges after the
  code freeze milestone (M3, see `program management overview <https://wiki.zephyrproject.org/Program-Management>`_.)
* Responsibility to drive and coordinate the triaging process
  for the release
* Responsibility to create the release notes of the release
* Responsibility to notify all stakeholders of the project,
  including the community at large about the status of the
  release in a timely manner.
* Responsibility to coordinate with QA and validation and
  verify changes either directly or through QA before major
  changes and major milestones.

Roles / Permissions
+++++++++++++++++++

.. table:: Project Roles vs GitHub Permissions
    :widths: 20 20 10 10 10 10 10
    :align: center

    ================ =================== =========== ================ =========== =========== ============
          ..             ..               **Admin**  **Merge Rights**   Member      Owner     Collaborator
    ---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
    Main Roles       Contributor                                                                 x
    ---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
        ..           Collaborator                                       x
    ---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
        ..           Maintainer                                         x
    Supportive Roles QA/Validation                                      x                        x
        ..           DevOps                   **x**
        ..           System Admin             **x**                                      x
        ..           Release Engineering                 **x**          x

    ================ =================== =========== ================ =========== =========== ============

Role Retirement
###############

Individuals approved by the TSC or representatives of the TSC to fill a project
role who are no longer actively fulfilling the rights and responsibilities
associated with their role may be requested by the TSC to retire from that role.

Retirements of inactive maintainers or collaborators are reflected by removing the
individual's GitHub user name from the relevant sections of the
:ref:`maintainers_file` in the Zephyr repository and may be initiated by the
TSC, representatives of the TSC or by the individuals themselves. Maintainers
may also initiate the removal of inactive collaborators in their area.

A maintainer may object to being retired, and request a decision by the TSC.

.. _maintainers_file:

MAINTAINERS File
################

The following guidelines apply to the structure, scope, and maintenance of the
MAINTAINERS file.

- The MAINTAINERS file shall have designated individuals responsible for the
  accuracy, structure, and upkeep of the file, in accordance with the Zephyr
  Project Charter. These individuals shall be appointed by the TSC.
- The granularity of maintainership should remain practical and manageable.
- The TSC, in collaboration with existing maintainers and contributors, should
  actively identify and encourage contributors to step up as maintainers for
  orphaned areas of the codebase and should facilitate the assignment of
  maintainers to those components.
- Unmaintained areas shall be clearly marked as such in the MAINTAINERS file.
- Updates to the MAINTAINERS file should:

  - Generally be included as standalone commits when introducing new files or
    directories.
  - Major changes, including the addition of new areas and new maintainers,
    should be submitted as separate pull requests, requiring approval by the
    MAINTAINERS file’s maintainers. Such activities might be the result of splitting
    existing large areas into smaller ones or merging smaller areas.

Guidelines for assigning maintainers to different areas of the codebase:

Architectures, core components, subsystems, samples, and tests:
  Each area shall have an explicitly assigned maintainer.

Boards (including related samples and tests) and SoCs (including DTS definitions)
  Each board and SoC should have an explicitly assigned maintainer through a
  platform area covering the boards, SoCs, and their related components and
  drivers.

Drivers / Backends
  The area of the API level shall have a maintainer and specific driver
  implementations or backends shall also be covered through a platform area covering
  the driver implementation. The driver area or the subsystem maintainers are
  assigned in case of changes to driver instances or backends.

.. _Zephyr Contributor Badge form: https://forms.gle/oCw9iAPLhUsHTapc8

---

### Doc Project Proposals (`doc/project/proposals.rst`)

.. _feature-tracking:

Feature Tracking
#################

To propose something new to the Zephyr Project:

#. Start by searching existing `issues
   <https://github.com/zephyrproject-rtos/zephyr/issues>`_ to see if there
   is prior work on the area.
#. If not, feel free to create a `new issue
   <https://github.com/zephyrproject-rtos/zephyr/issues/new/choose>`_ of
   the appropriate type (Enhancement, RFC/Proposal, etc.)

You should contact an assigned owner if you'd like to discuss or contribute to
an existing issue's implementation.

.. note::

   Previously, the project used `GitHub labels
   <https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels>`_
   to track feature-related work. You may find issues with labels like
   "Feature" or "Enhancement".

   These labels are deprecated for new issues, which should be of the
   appropriate type instead. For example, create an issue of type Enhancement
   instead of adding the Enhancement label to a new issue.

Roadmap and Release Plans
*************************

Project roadmaps and release plans are both important tools for the project, but
they have very different purposes and should not be confused. A project roadmap
communicates the high-level overview of a project's strategy, while a release
plan is a tactical document designed to capture and track the features planned
for upcoming releases.

- The project roadmap communicates the why; a release plan details the what
- A release plan spans only a few months; a product roadmap might cover a year
  or more


Project Roadmap
================

The project roadmap should serve as a high-level, visual summary of the
project's strategic objectives and expectations.

If built properly, the roadmap can be a valuable tool for several reasons. It
can help the project present its plan in a compelling way to existing and new
stakeholders, to help recruit new members and it can be a helpful resource the
team and community can refer to throughout the project's development, to ensure
they are still executing according to plan.

As such, the roadmap should contain only strategic-level details, major project
themes, epics, and goals.


Release Plans
==============

The release plan comes into play when the project roadmap's high-level strategy
is translated into an actionable plan built on specific features, enhancements,
and fixes that need to go into a specific release or milestone.

The release plan communicates those features and enhancements slated for your
project' next release (or the next few releases). So it acts as more of a
project plan, breaking the big ideas down into smaller projects the community
and main stakeholders of the project can make progress on.

---

### Doc Project Release Process (`doc/project/release_process.rst`)

.. _release_process:

Release Process
###############

The Zephyr project releases on a time-based cycle, rather than a feature-driven
one. Zephyr releases represent an aggregation of the work of many contributors,
companies, and individuals from the community.

A time-based release process enables the Zephyr project to provide users with a
balance of the latest technologies and features and excellent overall quality. A
roughly 6-month release cycle allows the project to coordinate development of
the features that have actually been implemented, allowing the project to
maintain the quality of the overall release without delays because of one or two
features that are not ready yet.

Release Phases Overview
***********************

Each release cycle consists of a *development phase* followed by a
*stabilization phase*. Release candidates will be created during the
stabilization phase.

During the development phase, all sorts of changes can be merged. This is
called the *merge window* for the main branch for this reason. During the
stabilization phase, the project and its maintainers focus on fixing bugs and
documenting the release. During this time, new features are generally not
accepted. The main branch is in *feature freeze* during the stabilization
phase.

.. figure:: release_cycle.svg
    :align: center
    :alt: Release Cycle
    :figclass: align-center
    :width: 80%

    Release Cycle

The milestones for the current major version can be found on the
`Official GitHub Wiki <https://github.com/zephyrproject-rtos/zephyr/wiki/Release-Management>`_.
Information on previous releases can be found :ref:`here <zephyr_release_notes>`.

.. note::

   After each stable release is made, a new "release branch" for that release
   is created.

   For example, after Zephyr stable release v4.4.0 was announced, a new branch
   ``v4.4-branch`` was created. Commits intended for v4.4.x point releases
   (v4.4.1, v4.4.2, etc.) should be proposed with that branch as a target.

   This page currently does not document the point release process in detail.

.. _merge_window:

Merge Window (Development Phase)
================================

After tagging a release, the release managers open the `main branch
<https://github.com/zephyrproject-rtos/zephyr/tree/main>`_ for development for
the next release cycle. We call this time the *merge window* or the
*development phase* for each release. During the merge window, any code which
meets the :ref:`merge_criteria` can be merged into the main branch. Most
changes for each release are made during its merge window.

Each release's merge window lasts approximately five months.

After the merge window, the release team tags the first *release candidate* for
the upcoming release. At that point, the main branch is closed for most feature
development, and the project is in :ref:`feature freeze <feature_freeze>` for
the next release. Feature freeze is described in the next section.

Here is an example timeline for a merge window:

- the merge window opened when `v4.3.0
  <https://github.com/zephyrproject-rtos/zephyr/tree/v4.3.0>`_ was tagged on 13
  November 2025. At this point, the main branch was open for merges for the
  next release, which was v4.4.0.

- the merge window for v4.4.0 closed when `v4.4.0-rc1
  <https://github.com/zephyrproject-rtos/zephyr/tree/v4.4.0-rc1>`_ was tagged
  on 24 March 2026. At this time, the project entered feature freeze for the
  v4.4.0 release.

.. _feature_freeze:

Feature Freeze (Stabilization Phase)
====================================

When the first release candidate is tagged, the release's merge window is
closed. This is called the *feature freeze* or *stabilization phase* for that
release. During feature freeze, no new features will be merged for that release
without a :ref:`tsc` approved exception.

Please be patient during the stabilization phase while waiting for pull request
review for new features.

As mentioned, the exception process for merging features during the feature
freeze requires TSC approval and a justification. As a general rule, if your
pull request is not yet merged and feature freeze is declared, the best thing
to do is to wait for the next :ref:`merge window <merge_window>` to open.

If you believe your feature merits an exception and should be merged during
feature freeze, contact the TSC. See the `TSC wiki
<https://github.com/zephyrproject-rtos/zephyr/wiki/Technical-Steering-Committee-%28TSC%29>`_
page for general contact information.

Here is an example timeline for a feature freeze:

- The feature freeze for v4.4.0 began when `v4.4.0-rc1
  <https://github.com/zephyrproject-rtos/zephyr/tree/v4.4.0-rc1>`_ was tagged
  on 24 March 2026. At that time, new features required a TSC exception
  in order to be merged to the main branch.

- The feature freeze for v4.4.0 ended when `v4.4.0
  <https://github.com/zephyrproject-rtos/zephyr/tree/v4.4.0>`_ was tagged on 14
  April 2026. At that time, the main branch was open again for the next
  release's :ref:`merge window <merge_window>`.

The following sections describe the feature freeze in more detail.

Allowed Changes
---------------

After feature freeze, **only** stabilization-related changes **shall** be accepted:

* Bug fixes addressing functional defects
* Stabilization fixes improving reliability, build stability, or test behavior
* Documentation updates (clarifications, corrections, improvements)
* Tests for existing functionality (no new feature enablement)

For more details on when certain changes are accepted, see :ref:`table <release_milestones>`.

Exceptions to these allowed changes are rare and require both explicit
justification and TSC approval. As a general rule, if a feature misses the
development phase window, it should wait for the next development cycle.

Disallowed Changes
------------------

The following changes **shall not** be accepted after feature freeze:

* New features or feature enhancements
* API changes, unless required to resolve a critical defect
* Refactoring not directly tied to a bug fix or stabilization effort
* New subsystems, drivers, boards, or architectural changes

Issue Tracking during Feature Freeze
************************************

Referencing a GitHub issue in a pull request is **recommended** but **not required**
during feature freeze.

Pull requests **must** include a clear description of:

* The issue being addressed
* The impact of the issue
* How the change resolves the issue

Maintainers and release engineers **may** request additional clarification when
the intent or scope of a pull request is not clear.

Mandatory Issue Usage
=====================

A GitHub issue **shall** be required in the following cases:

* Release blockers
* Fixes targeting maintenance of already released branches


Review and Approval
===================

All pull requests **shall** follow the standard review and approval process.

Maintainers **shall** ensure that:

* Changes comply with this policy
* Scope is minimal and focused on stabilization
* Risk is appropriate for the release phase

Release engineers **may**:

* Reject or defer changes based on risk assessment
* Request changes or additional justification

Risk Expectations
=================

Changes accepted during stabilization **shall** be:

* Minimal in scope
* Low risk
* Adequately tested

Changes introducing significant risk **may** be deferred to a future release,
even if they qualify as bug fixes.

.. _merge_criteria:

Pull Request Merge Criteria
***************************

The following criteria apply during all release phases.

.. figure:: img/img_release_activity.png
      :width: 663px
      :align: center
      :alt: Release Activity

* All :ref:`pr_requirements` must be met.
* Minimal of 2 approvals, including an approval by the designated assignee.
* Pull requests should be reviewed by at least a maintainer or collaborator of
  each affected area; Unless the changes to a given area are considered trivial
  enough, in which case approvals by other affected subsystems
  maintainers/collaborators would suffice.
* Four eye principle on the organisation level. We already require at least 2
  approvals (basic four eye principle), however, such reviews and approvals
  might be unintentionally biased in the case where the submitter is from the
  same organisation as the approvers. To allow for project wide review and
  approvals, the merge criteria is extended with the guidelines below:

  * Changes or additions to common and shared code shall have approvals from
    different organisations (at least one approval from an
    organisation different than the submitters').
    Common and shared code is defined as anything that does not fall under
    :file:`soc`, :file:`boards` and :file:`drivers/*/*`.
  * Changes or additions to hardware support (driver, SoC, boards) shall at
    least have the merger be from a different organisation. This applies only
    to implementation of an API supporting vendor specific hardware and not the
    APIs.
  * Release engineers may make exceptions for areas with contributions primarily
    coming from one organisation and where reviews from other organisations are
    not possible, however, merges shall be completed by a person from a different
    organisation. In such cases, the minimum review period of at least 2 days
    shall be strictly followed to allow for additional reviews.
  * Release engineers shall not merge code changes originating and reviewed
    only by their own organisation. To be able to merge such changes, at least
    one review shall be from a different organisation.

* A minimum review period of 2 business days, 4 hours for trivial changes (see
  :ref:`review_time`).
* Hotfixes can be merged at any time after CI has passed and are excluded from
  most of the conditions listed above.
* All required checks are passing:

  * Device Tree
  * Documentation
  * Code linters (Gitlint, Pylint, Ruff, Sphinx, etc.)
  * Identity/Emails
  * Kconfig
  * License checks
  * Checkpatch (Coding Style)
  * Integration Tests (Via twister) on emulation/simulation platforms
  * Simulated Bluetooth Tests


.. _release_quality_criteria:

Release Quality Criteria
************************

The main motivation is to clearly have the criteria in place that must be met
for a release. This will help define when a release is "done" in terms that most
people can understand and in ways that help new people to understand the process
and participate in creating successful releases:

- The release criteria documents all the requirements of our target audience for
  each Zephyr release
- The target audiences for each release can be different, and may overlap
- The criteria at any given time are not set in stone: there may be requirements
  that have been overlooked, or that are new, and in these cases, the criteria
  should be expanded to ensure all needs are covered.

Below is the high level criteria to be met for each release:

- No blocker bugs / blocking issues
- All relevant tests shall pass on ``Tier 0`` platforms
- All relevant tests shall pass on Tier 0 and 1 platforms (at least 1 per
  architecture/architecture variant/Hardware features)
- All applicable samples/tests shall build on Tiers 0, 1 and 2
- All high and critical static analysis and security issues addressed
- Release Notes are up-to-date.

Blocker Bugs
============

Blocker bug process kicks in during the release process and is in effect after the
feature freeze milestone. An issue labeled as a blocker practically blocks a
release from happening. All blocker bugs shall be resolved before a release is
created.

A fix for a bug that is granted ``blocker`` status can be merged to 'main' and included in
the release all the way until the final release date.

Bugs of moderate severity and higher that have impact on all users are typically
the candidates to be promoted to blocker bugs

Contributors and member of the release engineering team shall follow these
guidelines for release blocker bugs:

- Only mark bugs as blockers if the software (Zephyr) must not be released with
  the bug present.
- All collaborators can add or remove blocking labels.
- Evaluate bugs as potential blockers based on their severity and prevalence.
- Provide detailed rationale whenever adding or removing a blocking label.
- Ensure all blockers have the milestone tagged.
- Release managers have final say on blocking status; contact them with any questions.


.. _release_milestones:

Release Milestones
******************

This table documents milestones associated with each release.

.. list-table:: Release Milestones
   :widths: 15 25 100 25
   :header-rows: 1

   * - Timeline
     - Checkpoint
     - Description
     - Owner
   * - T-5M
     - Planning
     - Finalize dates for release, Assign release owner and agree on project wide goals for this release.
     - TSC
   * - T-7W
     - Review target milestones
     - Finalize target milestones for features in flight.
     - Release Engineering
   * - T-5W
     - Release Announcement
     - Release owner announces feature freeze and timeline for release.
     - Release Manager
   * - T-4W
     - Release Timeline reminder
     - Release owner sends a reminder of the feature freeze and timeline for release.
     - Release Manager
   * - T-3W
     - Feature Freeze (RC1)
     - After RC1, no new features may be introduced. Only stabilization,
       cosmetic updates, bug fixes, documentation improvements, and new tests
       for existing features are permitted.
     - Release Engineering
   * - T-2W
     - 2nd Release Candidate
     - No new features after RC2, ONLY stabilization and cosmetic changes, bug and doc fixes are allowed.
     - Release Manager
   * - T-1W
     - Hard Freeze (RC3)
     - Only blocker bug fixes after RC3, documentation improvements and changes
       to release notes are allowed.
       Release notes need to be complete by this checkpoint. Release Criteria is
       met.
     - Release Manager
   * - T-0W
     - Release
     -
     - Release Manager

.. _release_process_lts:

Long Term Support (LTS) Releases
********************************

Long-term support releases are designed to be supported and maintained
for an extended period and are the recommended release for
products and the auditable branch used for certification.

An LTS release is defined as:

- **Product focused**
- **Extended Stabilisation period**: Allow for more testing and bug fixing
- **Stable APIs**
- **Quality Driven Process**
- **Long Term**: Maintained for an extended period of time (at least 5 years).

Product Focused
===============

Zephyr LTS is the recommended release for product makers with an extended
support and maintenance which includes general stability and bug fixes,
security fixes.

An LTS includes both mature and new features. API and feature maturity is
documented and tracked. The footprint and scope of mature and stable APIs expands
as we move from one LTS to the next giving users access to bleeding edge features
and new hardware while keeping a stable foundation that evolves over time.

Extended Stabilisation Period
=============================

Zephyr LTS development cycle differs from regular releases and has an extended
stabilization period. Feature freeze of regular releases happens 3-4 weeks
before the scheduled release date. The stabilization period for LTS is extended
by 3 weeks with the feature freeze occurring 6-7 weeks before the anticipated
release date. The time between code freeze and release date is extended in this case.

Stable APIs
===========

Zephyr LTS provides a stable and long-lived foundation for developing
products. To guarantee stability of the APIs and the implementation of such
APIs it is required that any release software that makes the core of the OS
went through the Zephyr API lifecycle and stabilized over at least 2 releases.
This guarantees that we release many of the highlighted and core features with
mature and well-established implementations with stable APIs that are
supported during the lifetime of the release LTS.

- API Freeze (LTS - 2)

  - All stable APIs need to be frozen 2 releases before an LTS. APIs can be extended
    with additional features, but the core implementation is not modified. This
    is valid for the following subsystems for example:

    - Device Drivers (i2c.h, spi.h)...
    - Kernel (k_*):
    - OS services (logging,debugging, ..)
    - DTS: API and bindings stability
    - Kconfig

  - New APIs for experimental features can be added at any time as long as they
    are standalone and documented as experimental or unstable features/APIs.
- Feature Freeze (LTS - 1)
  - No new features or overhaul/restructuring of code covering major LTS features.

    - Kernel + Base OS
    - Additional advertised LTS features

  - Auxiliary features on top of and/or extending the base OS and advertised LTS features
    can be added at any time and should be marked as experimental if applicable

Quality Driven Process
======================

The Zephyr project follows industry standards and processes with the goal of
providing a quality oriented releases. This is achieved by providing the
following products to track progress, integrity and quality of the software
components provided by the project:

- Compliance with published coding guidelines, style guides and naming
  conventions and documentation of deviations.
- Static analysis reports

  - Regular static analysis on the complete tree using available commercial and
    open-source tools, and documentation of deviations and false positives.

- Documented components and APIS
- Requirements Catalog
- Verification Plans
- Verification Reports
- Coverage Reports
- Requirements Traceability Matrix (RTM)
- SPDX License Reports

Each release is created with the above products to document the quality and the
state of the software when it was released.

Long Term Support and Maintenance
=================================

LTS releases are published every 2.5 to 3 years and are branched and maintained independently from
the main tree for approximately 5 years after they were released.

Support is provided in three main phases:

- **Phase 1 (first 2 years):** General bug fixes and security fixes, including platform and driver
  fixes.
- **Phase 2 (following 3+ years):** Security and OS stability fixes only.
- **Phase 3:** Extended support may be available through third parties (details to be determined).

Support for a given LTS release (LTS *N*) continues until the initial release of the LTS two
versions ahead (LTS *N+2*). A final release of LTS *N* occurs shortly after the initial release of
LTS *N+2*.

The list of currently supported LTS releases and their EOL dates can be found
:ref:`here <supported_releases>`.

.. mermaid::
   :caption: Long Term Support Release

   gitGraph
       commit id: "3.5"
       commit id: "3.6"
       commit id: "3.7"
       branch "LTS"
       checkout "LTS"
       commit id: "3.7.1"
       commit id: "3.7.2"
       checkout main
       commit id: "4.0"
       commit id: "4.1"

Changes and fixes flow in both directions. However, changes from main branch to an
LTS branch will be limited to fixes that apply to both branches and for existing
features only.

All fixes for an LTS branch that apply to the mainline tree shall be submitted to
mainline tree as well.

Auditable Code Base
===================

An auditable code base is to be established from a defined subset of Zephyr OS
features and will be limited in scope. The LTS,  development tree, and the
auditable code bases shall be kept in sync after the audit branch is created,
but with a more rigorous process in place for adding new features into the audit
branch used for certification.

This process will be applied before new features move into the
auditable code base.

The initial and subsequent certification targets will be decided by the Zephyr project
governing board.

Processes to achieve selected certification will be determined by the Security and
Safety Working Groups and coordinated with the TSC.

Host Tools Support Policy
*************************

This section documents policies related to host tools required to develop
zephyr applications.

Python Version Policy
=====================

Zephyr tracks the `Python upstream release schedule`_ when determining its minimum supported Python
version.

The minimum supported version is selected to balance long-term support and practical availability in
mainstream, actively supported Linux distributions (e.g. current Ubuntu LTS and Debian Stable
releases).

A Python version is considered for removal when:

* It is approaching or has reached upstream end-of-life (EOL), and
* Newer Python versions are broadly available in current, actively supported major Linux
  distributions.

.. _Python upstream release schedule: https://devguide.python.org/versions/

Hardware Support Tiers
**********************

This section documents a rough set of tiers associated with hardware platforms.
These criteria are not currently formally enforced or evaluated at a board,
architecture, or SoC level.

Tier 0: Emulation Platforms
===========================

- Tests are both built and run in these platforms in CI, and therefore runtime
  failures can block Pull Requests.
- Supported by the Zephyr project itself, commitment to fix bugs in releases.
- One Tier 0 platform is required for each new architecture.
- Bugs reported against platforms of this tier are to be evaluated and treated as
  a general bug in Zephyr and should be dealt with the highest priority.

Tier 1: Supported Platforms
===========================

- Commitment from a specific team to run tests using twister device
  testing for the "Zephyr compatibility test suite" (details TBD)
  on a regular basis using open-source and publicly available drivers.
- Commitment to fix bugs in time for releases. Not supported by "Zephyr Project"
  itself.
- General availability for purchase
- Bugs reported against platforms of this tier are to be evaluated and treated
  as a general bug in Zephyr and should be dealt with medium to high priority.

Tier 2: Community Platforms
===========================

- Platform implementation is available in upstream, no commitment to testing,
  may not be generally available.
- Has a dedicated maintainer who commits to respond to issues / review patches.
- Bugs reported against platforms of this tier are NOT considered as
  a general bug in Zephyr.

Tier 3: Deprecated and unsupported Platforms
============================================

- Platform implementation is available, but no owner or unresponsive owner.
- No commitment to support is available.
- May be removed from upstream if no one works to bring it up to tier 2 or better.
- Bugs reported against platforms of this tier are NOT considered as
  a general bug in Zephyr.

Release Procedure
*****************

This section documents the Release manager responsibilities so that it serves as
a knowledge repository for Release managers.

Release Checklist
=================

Each release has a GitHub issue associated with it that contains the full
checklist. After a release is complete, a checklist for the next release is
created.

Tagging
=======


The following syntax should be used for releases and tags in Git:

- Release [Major].[Minor].[Patch Level]
- Release Candidate [Major].[Minor].[Patch Level]-rc[RC Number]
- Tagging:

  - v[Major].[Minor].[Patch Level]-rc[RC Number]
  - v[Major].[Minor].[Patch Level]
  - v[Major].[Minor].99 - A tag applied to main branch to signify that work on
    v[Major].[Minor+1] has started. For example, v1.7.99 will be tagged at the
    start of v1.8 process. The tag corresponds to
    VERSION_MAJOR/VERSION_MINOR/PATCHLEVEL macros as defined for a
    work-in-progress main branch version. Presence of this tag allows generation of
    sensible output for "git describe" on main branch, as typically used for
    automated builds and CI tools.


.. figure:: release_flow.png
    :align: center
    :alt: Releases
    :figclass: align-center
    :width: 80%

    Zephyr Code and Releases

The final release and each release candidate shall be tagged using the following
steps:

.. note::

    Tagging needs to be done via explicit git commands and not via GitHub's release
    interface.  The GitHub release interface does not generate annotated tags (it
    generates 'lightweight' tags regardless of release or pre-release). You should
    also upload your gpg public key to your GitHub account, since the instructions
    below involve creating signed tags. Alternatively, if you don't have a gpg key,
    you can also use your ssh key for signing.

.. tabs::

    .. tab:: Release Candidate

        .. note::

            This section uses tagging 1.11.0-rc1 as an example, replace with
            the appropriate release candidate version.

        #. Update the version variables in the :zephyr_file:`VERSION` file
           located in the root of the Git repository to match the version for
           this release candidate. The ``EXTRAVERSION`` variable is used to
           identify the rc[RC Number] value for this candidate::

            EXTRAVERSION = rc1

        #. Post a PR with the updated :zephyr_file:`VERSION` file using
           ``release: Zephyr 1.11.0-rc1`` as the commit subject. Merge
           the PR after successful CI.

        #. Tag and push the version, using an annotated tag::

            $ git pull
            $ git tag -s -m "Zephyr 1.11.0-rc1" v1.11.0-rc1

        #. Verify that the tag has been signed correctly, ``git show`` for the
           tag must contain a signature (look for the ``BEGIN PGP SIGNATURE``
           or ``BEGIN SSH SIGNATURE`` marker in the output)::

            $ git show v1.11.0-rc1

        #. Push the tag::

            $ git push git@github.com:zephyrproject-rtos/zephyr.git v1.11.0-rc1

        #. Send an email to the mailing lists (``announce`` and ``devel``)
           with a link to the release

    .. tab:: Final Release

        .. note::

            This section uses tagging 1.11.0 as an example, replace with the
            appropriate final release version.

        When all final release criteria has been met and the final release notes
        have been approved and merged into the repository, the final release version
        will be set and repository tagged using the following procedure:

        #. Update the version variables in the :zephyr_file:`VERSION` file
           located in the root of the Git repository. Set ``EXTRAVERSION``
           variable to an empty string to indicate final release::

            EXTRAVERSION =

        #. Post a PR with the updated :zephyr_file:`VERSION` file using
           ``release: Zephyr 1.11.0`` as the commit subject. Merge
           the PR after successful CI.
        #. Tag and push the version, using two annotated tags::

            $ git pull
            $ git tag -s -m "Zephyr 1.11.0" v1.11.0

        #. Verify that the tag has been signed correctly, ``git show`` for the
           tag must contain a signature (look for the ``BEGIN PGP SIGNATURE``
           or ``BEGIN SSH SIGNATURE`` marker in the output)::

            $ git show v1.11.0

        #. Push the tag::

            $ git push git@github.com:zephyrproject-rtos/zephyr.git v1.11.0

        #. Find the new ``v1.11.0`` tag at the top of the releases page and
           edit the release with the ``Edit tag`` button with the following:

            * Copy the overview of ``docs/releases/release-notes-1.11.rst``
              into the release notes textbox and link to the full release notes
              file on docs.zephyrproject.org.

        #. Send an email to the mailing lists (``announce`` and ``devel``) with a link
           to the release

---

### Doc Project Tsc (`doc/project/tsc.rst`)

.. _tsc:

Technical Steering Committee (TSC)
**********************************

TSC Member Role
###############

The TSC role and its responsibilities is defined in the `Zephyr project charter`_.

Membership
++++++++++

A TSC member plays a pivotal role in shaping the technical direction of the
Zephyr Project. TSC members work collaboratively with other TSC members,
contributors, and stakeholders to ensure the project's success and
sustainability.

By fulfilling the rights and responsibilities below, TSC members contribute to
the overall success and growth of the Zephyr Project, ensuring that it remains a
vibrant and thriving open-source community for years to come.


Rights
------

Decision Making
  Participate in key decisions related to the project's technical direction,
  including architectural changes, feature additions, and release planning.

Voting
  Exercise voting rights on important matters discussed within the TSC,
  including feature proposals, code contributions, and community initiatives.

Access
  Gain access to relevant project repositories, documentation, and communication
  channels to stay informed and contribute effectively.

Leadership
  Take on leadership roles within working groups or subcommittees dedicated to
  specific technical areas or initiatives.

Representation
  Act as a representative of the broader Zephyr community, advocating for the
  interests of contributors, users, and stakeholders.

Responsibilities
----------------
TSC members are expected to fulfill the following responsibilities, though it is
not mandatory to fulfill all:

Technical Oversight
  Provide guidance and oversight on technical matters, ensuring alignment with
  project goals, standards, and best practices through active participation as
  core members in working groups and committees.

Code Review
  Participate in code reviews to maintain code quality, consistency, and
  compatibility with project standards.

Community Engagement
  Engage with the community through forums, mailing lists, conferences, and
  other channels to foster collaboration, address concerns, and gather feedback.

Documentation
  Contribute to the development and maintenance of project documentation,
  including technical guides, API references, and best practices.

Release Management
  Collaborate with the release manager and other stakeholders to plan and
  coordinate project releases, ensuring timely delivery and quality assurance.

Contributor Support
  Support and mentor new contributors, helping them navigate the project's
  codebase, processes, and community norms.

Issue Triage
  Assist in triaging and prioritizing issues reported by users and contributors,
  facilitating timely resolution and communication.

Compliance and Licensing
  Ensure compliance with project licensing requirements and open-source best
  practices, addressing any licensing-related issues that may arise.

Conflict Resolution
  Facilitate constructive discussions and resolution of technical disagreements
  or conflicts within the community, promoting a healthy and inclusive
  environment.

Continuous Improvement
  Continuously seek opportunities to improve project governance, processes, and
  infrastructure, driving innovation and sustainability.


Appointed TSC Members
+++++++++++++++++++++

See `Zephyr project charter`_ for more details.

- Appointed TSC members have no term limits besides the term of their employment
  at the organization they represent or their organization's membership in the
  Zephyr Project.
- Appointed TSC members can select an Alternate from the same organization.

Elected TSC Members
+++++++++++++++++++

Per the `Zephyr project charter`_, TSC members can nominate representatives from
the technical community at the rate of no more than one per quarter.

- Majority vote is required to confirm a candidate.
- Once elected, a TSC member serves for 2 years.
- Elected TSC members do not have the right to appoint an Alternate.
- To ensure continuity of the TSC, at the end of the 2 year term, the TSC is
  required to reconfirm the membership of elected members. If the elected member
  declines a new term or if the TSC fails to reconfirm the term, the seat will
  be open for new nominations.
- If an elected TSC member resigns before the end of the 2 year term, their spot
  will be open for new members outside of the quarterly nomination limit. The
  elected member will serve a 2 year term.
- The TSC has the right to terminate elected members who become inactive and are
  not fulfilling the responsibilities of TSC members as described in this
  document.
- The number of elected members shall not exceed 20% of the total of appointed
  members.
- Existing TSC members who were elected before May 2024 shall be re-confirmed
  after completing the 2 year term since they were first elected.

Suspensions
+++++++++++

As noted under Section 8b of the Project Charter, voting rights for a
representative who misses three consecutive meetings are subject to suspension
and suspended representatives do not count towards the quorum requirement.

A representative’s suspension will end and voting rights be restored at the start
of the next attended meeting. The TSC enforces the suspension policy for voting
members who miss three consecutive TSC weekly meetings.

Multi-day meetings (F2F events) are counted as "one" meeting. The TSC voted on
February 16, 2022 to discontinue default enforcement of the suspension policy.
The TSC voted on January 18, 2023 to re-enact default enforcement of the
suspension policy.

Notice of suspension will be sent to representatives who miss three consecutive
meetings, noting that rights will be restored upon next attendance of a TSC
meeting.

.. note::

   As per Section 4b of the Project Charter, Platinum and Silver
   Members may choose to opt out of a voting seat on the TSC.

   Members who opt out and then wish to reclaim their seat later will have their
   voting rights restored at the start of the second consecutive meeting
   attended following notification to the TSC Chair.


Voting
++++++

Voting in the Zephyr Project is defined under Section 8 of the Project Charter.

Additional points of clarity / TSC interpretation have been added below. The
Governing Board may opt to update the Charter to include the below
refinements. Until then, additional clarifications (if/where needed) will be
discussed in the Process Working Group, and approved in the TSC.

- TSC In-Meeting Voting For items requesting an in-meeting vote of the Zephyr
  Technical Steering Committee (TSC), assuming quorum requirements have been
  met, the default voting mechanism will be a verbal motion to determine if
  there is general consensus.
- If there are no objections to a motion being brought forward, general
  consensus is assumed and the motion passes.
- Should there be any objections raised, the vote will move to email, and be
  executed using the Voting Guidelines outlined in Section 8 of the Project
  Charter.
- Should a motion be deemed urgent by the TSC Chair, and assuming quorum
  requirements have been met, the Chair may call for a roll call vote
  in-meeting.

Voting Options
--------------

- Voting Options are:

  - "Yes",
  - "No" or
  - "Abstain"

Abstention
----------

Abstentions do not count in tallying the vote negatively or positively; when
members abstain, they are in effect attending only to contribute to a quorum.

Abstentions do not impact the number of votes needed to decide a vote.

Quorum
------

Quorum for TSC meetings shall require 60% of the voting representatives... (ref
8b of the Charter)

Decisions
---------

Decisions by vote shall be based on a majority vote, provided that at least
sixty percent (60%) of the **TSC** representatives must be either
present or participating electronically or by written action in order to
conduct a valid vote. (ref 8c of the Charter)

Example A:

   40 eligible TSC voters. 3 abstain from a vote on a motion. 12 vote Yes. 11 vote
   No.

   Quorum reached: 26 votes cast (quorum = 60% of 40 = 24)
   Majority vote: 12 Yes vs. 11 No. Yes wins.
   Motion adopted.

Example B:

   40 eligible TSC voters. 5 abstain from a vote on a motion. 12 vote Yes. 6
   vote No. Quorum reached? 23 votes cast (quorum = 60% of 40 = 24)

   Vote is not valid. Quorum not reached.

Example C:

   40 eligible TSC voters. 21 abstain from a vote on a motion. 2 vote Yes. 1 votes
   No. Quorum reached? 24 votes cast (quorum = 60% of 40 = 24)

   Majority vote: 2 Yes vs. 1 No. Yes wins.

Immutable Votes
+++++++++++++++

Votes are considered immutable once cast. A voter may not change their vote,
once cast, between the time a Motion is brought forth and the time at which
results are announced.

.. _Zephyr project charter:
   https://www.zephyrproject.org/wp-content/uploads/2023/08/LF-Zephyr-Charter-2023.08.21.pdf

---

### Doc Project Working Groups (`doc/project/working_groups.rst`)

TSC Working Groups
******************

Overview
########

The TSC, at its discretion, may establish working groups or subcommittees to
serve as focused teams dedicated to specific technical areas, initiatives, or
tasks.

Membership
##########

Working Group Membership Eligibility
++++++++++++++++++++++++++++++++++++

- Each Working group (WG) shall determine its own membership eligibility, in
  consultation with the TSC.
- Each working group shall have a team of members who are actively involved
  in its activities and decision-making processes.
- It is expected that WG membership shall be **open to all** Zephyr project
  :ref:`Collaborators <collaborator>`; however, working groups may impose
  restrictions such as the number of participants from a single company.
- All TSC members are eligible to join a working group as members, part of
  the responsibilities being a TSC member.
- The minimal number of members may vary depending on the complexity of the
  tasks and the breadth of expertise required to address them effectively.
- A working group should aim to have at least five to seven members to
  ensure diversity of perspectives, collaboration, and continuity.
- The structure of each working group within the Zephyr Project should be
  designed to ensure effectiveness, productivity, and inclusivity. While the
  optimal size of a working group can vary depending on the specific context and
  scope of its activities.
- Participation in WG meetings and discussions is open to all project
  :ref:`contributors <contributor>`.

Working Group Chair / Co-chair
++++++++++++++++++++++++++++++

Each working group may elect a Chair and optionally a Co-Chair who is
responsible for leading meetings and representing the working group to the TSC.

Working Group Chair / Co-Chair Elections
++++++++++++++++++++++++++++++++++++++++

- The Chair and Co-Chair shall be elected by the members of the working group
- Any member of the working group has the right to nominate themselves for the
  chair/co-chair positions.
- The term for the chair/co-chair is one year
- If a chair/co-chair resigns from the position before the end of the term, a
  vote is to be held to elect a new chair/co-chair.

Working Group Voter Eligibility
+++++++++++++++++++++++++++++++

- Voting for a Chair or Co-Chair is open to the members of the working group.
- Only 1 working group member from each company may vote in the election.
- The Chair and Co-Chair shall be members of the working group.

Working Group Election Confirmation
++++++++++++++++++++++++++++++++++++

- The elected Chair (and/or Co-Chair) is submitted to the TSC for confirmation.
- The TSC decides to accept the outcome or requests a new voting.

Advisory role
#############

- Working Groups are advisory in nature. They provide advice to the projects and
  to the TSC.
- Working groups operate on a rough consensus basis. If the working group is
  unable to reach consensus on what advice to offer, the working group Chair
  shall raise the issue with the TSC or the relevant committee (Safety and
  Security), where a formal vote can be taken, or advise the project that the
  working group cannot reach consensus.
- Working groups shall keep track of discussions and record any votes,
  decisions, or recommendations made and share results with the community and
  the TSC.
- Working group meetings and offline discussions shall be captured in a
  standalone document with all supporting details such as attendance, quorum,
  actions to be taken, and next steps.
- Decisions made within a working group are non-binding and are only considered
  ratified after communicating decisions and outcomes to the TSC.
- Lacking any objections from the TSC within 1 week after the communication or
  report of any results, decisions of a working group are considered confirmed
  and ratified.

TSC Working Group Lifecycle
###########################

Creation of a TSC working group
+++++++++++++++++++++++++++++++

In order to create a TSC working group, a TSC member shall make a proposal to
the TSC (via TSC email list) that shall cover at least the following:

- TSC working group name.
- TSC working group purpose
- TSC working group expected deliverables
- TSC working group starting participants with at least one TSC member acting as
  a sponsor.
- Optionally TSC working group definition of done

Update of a TSC working group
+++++++++++++++++++++++++++++

The TSC can modify a TSC working group via a TSC decision. To request such a
modification, a request is made to the TSC email list.

Conclusion of a TSC working group
+++++++++++++++++++++++++++++++++

The TSC decides the termination of the TSC working group in accordance with the
TSC decision procedure. The submission of a request to terminate the TSC working
group should cover:

- TSC working group name
- TSC working group deliveries
- Motivation for termination of the TSC working group

---

### Doc Releases Eol Releases (`doc/releases/eol_releases.rst`)

.. _eol_releases:

End-of-life releases
####################

Release notes and migration guides for end-of-life releases of Zephyr RTOS are kept here for
historical purposes.

.. When adding new entries to this page, please ensure you update `RELEASE_NOTES_GLOB_PATTERNS`
   accordingly in doc/conf.py so that the .rst file(s) actually stop being built by Sphinx and
   that redirects to this page are added for them.

.. _eol_releases_release_notes:

Release Notes
*************

* :zephyr_file:`Zephyr 4.2 Release Notes <doc/releases/release-notes-4.2.rst>`
* :zephyr_file:`Zephyr 4.1 Release Notes <doc/releases/release-notes-4.1.rst>`
* :zephyr_file:`Zephyr 4.0 Release Notes <doc/releases/release-notes-4.0.rst>`
* :zephyr_file:`Zephyr 3.6 Release Notes <doc/releases/release-notes-3.6.rst>`
* :zephyr_file:`Zephyr 3.5 Release Notes <doc/releases/release-notes-3.5.rst>`
* :zephyr_file:`Zephyr 3.4 Release Notes <doc/releases/release-notes-3.4.rst>`
* :zephyr_file:`Zephyr 3.3 Release Notes <doc/releases/release-notes-3.3.rst>`
* :zephyr_file:`Zephyr 3.2 Release Notes <doc/releases/release-notes-3.2.rst>`
* :zephyr_file:`Zephyr 3.1 Release Notes <doc/releases/release-notes-3.1.rst>`
* :zephyr_file:`Zephyr 3.0 Release Notes <doc/releases/release-notes-3.0.rst>`
* :zephyr_file:`Zephyr 2.7 Release Notes <doc/releases/release-notes-2.7.rst>`
* :zephyr_file:`Zephyr 2.6 Release Notes <doc/releases/release-notes-2.6.rst>`
* :zephyr_file:`Zephyr 2.5 Release Notes <doc/releases/release-notes-2.5.rst>`
* :zephyr_file:`Zephyr 2.4 Release Notes <doc/releases/release-notes-2.4.rst>`
* :zephyr_file:`Zephyr 2.3 Release Notes <doc/releases/release-notes-2.3.rst>`
* :zephyr_file:`Zephyr 2.2 Release Notes <doc/releases/release-notes-2.2.rst>`
* :zephyr_file:`Zephyr 2.1 Release Notes <doc/releases/release-notes-2.1.rst>`
* :zephyr_file:`Zephyr 2.0 Release Notes <doc/releases/release-notes-2.0.rst>`
* :zephyr_file:`Zephyr 1.14 Release Notes <doc/releases/release-notes-1.14.rst>`
* :zephyr_file:`Zephyr 1.13 Release Notes <doc/releases/release-notes-1.13.rst>`
* :zephyr_file:`Zephyr 1.12 Release Notes <doc/releases/release-notes-1.12.rst>`
* :zephyr_file:`Zephyr 1.11 Release Notes <doc/releases/release-notes-1.11.rst>`
* :zephyr_file:`Zephyr 1.10 Release Notes <doc/releases/release-notes-1.10.rst>`
* :zephyr_file:`Zephyr 1.9 Release Notes <doc/releases/release-notes-1.9.rst>`
* :zephyr_file:`Zephyr 1.8 Release Notes <doc/releases/release-notes-1.8.rst>`
* :zephyr_file:`Zephyr 1.7 Release Notes <doc/releases/release-notes-1.7.rst>`
* :zephyr_file:`Zephyr 1.6 Release Notes <doc/releases/release-notes-1.6.rst>`
* :zephyr_file:`Zephyr 1.5 Release Notes <doc/releases/release-notes-1.5.rst>`

.. _eol_releases_migration_guides:

Migration Guides
****************

* :zephyr_file:`Zephyr 4.2 Migration Guide <doc/releases/migration-guide-4.2.rst>`
* :zephyr_file:`Zephyr 4.1 Migration Guide <doc/releases/migration-guide-4.1.rst>`
* :zephyr_file:`Zephyr 4.0 Migration Guide <doc/releases/migration-guide-4.0.rst>`
* :zephyr_file:`Zephyr 3.6 Migration Guide <doc/releases/migration-guide-3.6.rst>`
* :zephyr_file:`Zephyr 3.5 Migration Guide <doc/releases/migration-guide-3.5.rst>`

---

### Doc Releases Index (`doc/releases/index.rst`)

.. _zephyr_release_notes:

Releases
########

Zephyr is distributed as source code and build scripts, not as a binary image.
Use :ref:`west` to :ref:`get the code <get_the_code>` for a specific version,
and see the `GitHub repository`_ for the full history of tagged releases.

The technical documentation for current and past releases is available at
https://docs.zephyrproject.org/ (use the version selector to select your release
of interest).

.. _supported_releases:

Supported Releases
******************

The table below lists all actively supported releases. For most users, the
recommended starting point is either the **latest stable release** or the
**current LTS release**.

.. toctree::
   :hidden:
   :maxdepth: 1
   :glob:
   :reversed:

   release-notes-3.7
   release-notes-4.[3-5]
   migration-guide-3.7
   migration-guide-4.[3-5]

.. note::
   | The next planned release is **Zephyr 4.5**, targeted for **October 2026**.
   | The working drafts of the associated :doc:`Release Notes <release-notes-4.5>`
     and :doc:`Migration Guide <migration-guide-4.5>` are already available.

.. list-table::
    :header-rows: 1

    * - Release
      - Release Date
      - EOL
      - Status
      - Supporting Documentation
    * - `Zephyr 4.4.0`_
      - 2026-04-14
      - 2027-04-12
      - Latest stable
      - * :doc:`Release Notes <release-notes-4.4>`
        * :doc:`Migration Guide <migration-guide-4.4>`
    * - `Zephyr 4.3.0`_
      - 2025-11-14
      - 2026-10-15
      - Stable
      - * :doc:`Release Notes <release-notes-4.3>`
        * :doc:`Migration Guide <migration-guide-4.3>`
    * - `Zephyr 3.7.0 (LTS3)`_
      - 2024-07-26
      - 2029-07-27
      - Long Term Support
      - * :doc:`Release Notes <release-notes-3.7>`
        * :doc:`Migration Guide <migration-guide-3.7>`

Previous LTS releases that have reached end-of-life:

+-------------------------+---------------+
| Release                 | EOL           |
+=========================+===============+
| `Zephyr 2.7.6 (LTS2)`_  | 2025-01-26    |
+-------------------------+---------------+
| `Zephyr 1.14.1 (LTS1)`_ | 2022-01-01    |
+-------------------------+---------------+

End-of-life releases
=====================

.. toctree::
   :hidden:
   :maxdepth: 1

   eol_releases

End-of-life releases are no longer maintained and do not receive security fixes.
The release notes and migration guides for these releases are available
:ref:`here <eol_releases>`.

.. _zephyr_release_cycle:

Release Life Cycle and Maintenance
**********************************

Major and Maintenance Releases
==============================

Zephyr delivers major releases on a **six-month cadence**, targeting April and
October each year. This schedule provides regular, well-tested releases without
overwhelming users with too-frequent updates, and avoids major holidays across
geographies.

Maintenance (point) releases are published on an unscheduled basis when enough
significant fixes have accumulated on a major release branch. Each point release
goes through a full QA cycle before publishing.

Long Term Support and Maintenance
=================================

While stable releases are supported for the duration of 2 release cycles (roughly 1 year),
some specific ones will be supported for a longer period by the Zephyr Project,
and are called Long Term Support (LTS) releases.

A Zephyr :ref:`Long Term Support (LTS) <release_process_lts>` release is
published every 2.5 to 3 years and is branched and maintained independently from the
main tree for approximately 5 years after it was released.

This offers more stability to project users and leaves more time to
upgrade to the following LTS release.


Transitioning to the new Release Cadence
========================================

The transition to the new release cadence will begin in 2026. Zephyr 4.4 is scheduled
for release in April 2026, and subsequent releases will occur every six months.

The projected timeline for upcoming releases is as follows:

+---------+-------------------+---------------------+
| Release | Planned Date      | Notes               |
+=========+===================+=====================+
| 4.4     | April 2026        |                     |
+---------+-------------------+---------------------+
| 4.5     | October 2026      |                     |
+---------+-------------------+---------------------+
| 4.6     | April 2027        | LTS4                |
+---------+-------------------+---------------------+
| 5.0     | October 2027      | Start of 5.x cycle  |
+---------+-------------------+---------------------+
| 5.1     | April 2028        |                     |
+---------+-------------------+---------------------+
| 5.2     | October 2028      |                     |
+---------+-------------------+---------------------+
| 5.3     | April 2029        |                     |
+---------+-------------------+---------------------+
| 5.4     | October 2029      | LTS5                |
+---------+-------------------+---------------------+

Starting with the 5.x release cycle, all releases will follow the new six-month
cadence from the beginning.


Security Fixes
==============

Each security issue fixed within Zephyr is backported or submitted to the
following releases:

- Currently supported Long Term Support (LTS) release.

- The most recent two releases.

For more information, see  :ref:`Security Vulnerability Reporting <reporting>`.

Release documentation
*********************

Each release includes two companion documents:

- Release notes summarize changes made across the project during the release cycle.
- Migration guides describe changes that require action when moving an application from one major
  release to the next.

Release Notes
=============

Release notes contain a list of changes that have been made to the different
areas of the project during the development cycle of the release.
Changes that require the user to modify their own application to support the new
release may be mentioned in the release notes, but the details regarding *what*
needs to be changed are to be detailed in the release's migration guide.

Updates to the release notes post release cycle is permitted but limited to
style, typographical fixes and to upmerge the notes from maintenance release
branches with the sole purpose of keeping the latest documentation consistent
with the changes in the project.

Migration Guides
================

Zephyr provides migration guides for all major releases, in order to assist
users transition from the previous release.

As mentioned in the previous section, changes in the code that require an action
(i.e. a modification of the source code or configuration files) on the part of
the user in order to keep the existing behavior of their application belong in
in the migration guide. This includes:

- Breaking API changes
- Deprecations
- Devicetree or Kconfig changes that affect the user (changes to defaults,
  renames, etc)
- Treewide changes that have an effect (e.g. changing the include path or
  defaulting to a different C standard library)
- Anything else that can affect the compilation or runtime behavior of an
  existing application

Each entry in the migration guide must include a brief explanation of the change
as well as refer to the Pull Request that introduced it, in order for the user
to be able to understand the context of the change.

.. _`GitHub repository`: https://github.com/zephyrproject-rtos/zephyr
.. _`GitHub tagged releases`: https://github.com/zephyrproject-rtos/zephyr/tags
.. _`Zephyr 1.14.1 (LTS1)`: https://docs.zephyrproject.org/1.14.1/
.. _`Zephyr 2.7.6 (LTS2)`: https://docs.zephyrproject.org/2.7.6/
.. _`Zephyr 3.7.0 (LTS3)`: https://docs.zephyrproject.org/3.7.0/
.. _`Zephyr 4.3.0`: https://docs.zephyrproject.org/4.3.0/
.. _`Zephyr 4.4.0`: https://docs.zephyrproject.org/4.4.0/

---

### Doc Releases Migration Guide 3.5 (`doc/releases/migration-guide-3.5.rst`)

:orphan:

.. _migration_3.5:

Migration guide to Zephyr v3.5.0
################################

This document describes the changes required or recommended when migrating your
application from Zephyr v3.4.0 to Zephyr v3.5.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_3.5>`.

Required changes
****************

Kernel
======

* The kernel :c:func:`k_mem_slab_free` function has changed its signature, now
  taking a ``void *mem`` pointer instead of a ``void **mem`` double-pointer.
  The new signature will not immediately trigger a compiler error or warning,
  instead likely causing a invalid memory access at runtime. A new ``_ASSERT``
  statement, that you can enable with :kconfig:option:`CONFIG_ASSERT`, will
  detect if you pass the function memory not belonging to the memory blocks in
  the slab.

* :c:macro:`CONTAINER_OF` now performs type checking, this was very commonly
  misused to obtain user structure from :c:struct:`k_work` pointers without
  passing from :c:struct:`k_work_delayable`. This would now result in a build
  error and have to be done correctly using
  :c:func:`k_work_delayable_from_work`.

C Library
=========

* The default C library used on most targets has changed from the built-in
  minimal C library to Picolibc. While both provide standard C library
  interfaces and shouldn't cause any behavioral regressions for applications,
  there are a few side effects to be aware of when migrating to Picolibc.

  * Picolibc enables thread local storage
    (:kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE`) where supported. This
    changes some internal operations within the kernel that improve
    performance using some TLS variables. Zephyr places TLS variables in the
    memory reserved for the stack, so stack usage for every thread will
    increase by 8-16 bytes.

  * Picolibc uses the same malloc implementation as the minimal C library, but
    the default heap size depends on which C library is in use. When using the
    minimal C library, the default heap is zero bytes, which means that malloc
    will always fail. When using Picolibc, the default is 16kB with
    :kconfig:option:`CONFIG_MMU` or :kconfig:option:`ARCH_POSIX`, 2kB with
    :kconfig:option:`CONFIG_USERSPACE` and
    :kconfig:option:`CONFIG_MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT`. For all
    other targets, the default heap uses all remaining memory on the system.
    You can change this by adjusting
    :kconfig:option:`CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE`.

  * Picolibc can either be built as part of the OS build or pulled from the
    toolchain. When building as part of the OS, the build will increase by
    approximately 1000 files.

  * When using the standard C++ library with Picolibc, both of those must come
    from the toolchain as the standard C++ library depends upon the C library
    ABI.

  * Picolibc removes the ``-ffreestanding`` compiler option. This allows
    significant compiler optimization improvements, but also means that the
    compiler will now warn about declarations of `main` which don't conform to
    the Zephyr required type -- ``int main(void)``.

  * Picolibc has four different printf/scanf variants supported in Zephyr,
    'double', 'long long', 'integer', and 'minimal. 'double' offers a
    complete printf implementation with exact floating point in decimal and
    hexadecimal formats, full integer support including long long, C99
    integer size specifiers (j, z, t) and POSIX positional arguments. 'long
    long' mode removes float support, 'integer' removes long long support
    while 'minimal' mode also removes support for format modifiers and
    positional arguments. Building the library as a module allows finer
    control over the feature set provided at each level.

  * Picolibc's default floating point input/output code is larger than the
    minimal C library version (this is necessary to conform with the C
    language "round trip" requirements for these operations). If you use
    :kconfig:option:`CONFIG_CBPRINTF_FP_SUPPORT`, you will see increased
    memory usage unless you also disable
    :kconfig:option:`CONFIG_PICOLIBC_IO_FLOAT_EXACT`, which switches Picolibc
    to a smaller, but inexact conversion algorithm. This requires building
    Picolibc as a module.

Optional Modules
================

The following modules have been made optional and are not downloaded with `west update` by default anymore:

* ``chre``
* ``lz4``
* ``nanopb``
* ``psa-arch-tests``
* ``sof``
* ``tf-m-tests``
* ``tflite-micro``
* ``thrift``
* ``zscilib``

To enable them again use the ``west config manifest.project-filter -- +<module
name>`` command, or ``west config manifest.group-filter -- +optional`` to
enable all optional modules, and then run ``west update`` again.

Device Drivers and Device Tree
==============================

* ``zephyr,memory-region-mpu`` was renamed ``zephyr,memory-attr`` and its type
  moved from 'enum' to 'int'. To have a seamless conversion this is the
  required change in the DT:

  .. code-block:: none

     - "RAM"         -> <( DT_MEM_ARM(ATTR_MPU_RAM) )>
     - "RAM_NOCACHE" -> <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>
     - "FLASH"       -> <( DT_MEM_ARM(ATTR_MPU_FLASH) )>
     - "PPB"         -> <( DT_MEM_ARM(ATTR_MPU_PPB) )>
     - "IO"          -> <( DT_MEM_ARM(ATTR_MPU_IO) )>
     - "EXTMEM"      -> <( DT_MEM_ARM(ATTR_MPU_EXTMEM) )>

* Device dependencies (incorrectly referred as "device handles" in some areas)
  are now an optional feature enabled by :kconfig:option:`CONFIG_DEVICE_DEPS`.
  This means that an extra linker stage is no longer necessary if this option is
  not enabled.

* On all STM32 ADC, it is no longer possible to read sensor channels (Vref,
  Vbat or temperature) using the ADC driver. The dedicated sensor driver should
  be used instead. This change is due to a limitation on STM32F4 where the
  channels for temperature and Vbat are identical, and the impossibility of
  determining what we want to measure using solely the ADC API.

* The RAM disk driver has been changed to support multiple instances and instantiation
  using devicetree. As a result, Kconfig option :kconfig:option:`CONFIG_DISK_RAM_VOLUME_SIZE`
  and Kconfig option :kconfig:option:`CONFIG_DISK_RAM_VOLUME_NAME` are removed,
  and the application using the RAM disk must instantiate it using devicetree,
  as in the following example:

  .. code-block:: devicetree

    / {
        ramdisk0 {
            compatible = "zephyr,ram-disk";
            disk-name = "RAM";
            sector-size = <512>;
            sector-count = <192>;
        };
    };

* The :dtcompatible:`goodix,gt911`, :dtcompatible:`xptek,xpt2046` and
  :dtcompatible:`hynitron,cst816s` drivers have been converted from Kscan to
  Input, they can still be used with Kscan applications by adding a
  :dtcompatible:`zephyr,kscan-input` node.

* The ``zephyr,gpio-keys`` binding has been merged into
  :dtcompatible:`gpio-keys` and the callback definition has been renamed from
  ``INPUT_LISTENER_CB_DEFINE`` to :c:macro:`INPUT_CALLBACK_DEFINE`.

* The :dtcompatible:`ti,bq274xx` driver was using incorrect units for capacity
  and power channels, these have been fixed and scaled by x1000 factor from the
  previous implementation, any application using them has to be changed
  accordingly.

* The configuration options for the SSD1306 display driver can now be provided
  via the Devicetree binding :dtcompatible:`solomon,ssd1306fb`. The following
  Kconfig options: ``CONFIG_SSD1306_DEFAULT``,
  ``CONFIG_SSD1306_SH1106_COMPATIBLE``, and ``CONFIG_SSD1306_REVERSE_MODE`` have
  been removed.

  * You can remove ``CONFIG_SSD1306_DEFAULT`` without any other modification.

  * ``CONFIG_SSD1306_SH1106_COMPATIBLE`` was used to assert that the device is
    (compatible with) SH1106. This has been replaced by a dedicated dts
    compatible declaration. You may update an existing sh1106 node to change the
    ``compatible`` designation from :dtcompatible:`solomon,ssd1306fb` to
    :dtcompatible:`sinowealth,sh1106`.

  * ``CONFIG_SSD1306_REVERSE_MODE`` is now set using the ``inversion-on``
    property of the devicetree node.

* GPIO drivers not implementing IRQ related operations must now provide
  ``NULL`` to the relevant operations: ``pin_interrupt_configure``,
  ``manage_callback``, ``get_pending_int``. The public API will return
  ``-ENOSYS`` when these are not available, instead of ``-ENOTSUP``.

* STM32 Ethernet driver was misusing :c:func:`hwinfo_get_device_id` to generate
  last 3 bytes of mac address, resulting in a high risk of collision when using
  SoCs from the same lot. This is now fixed to use the whole range of entropy
  available from the unique ID (96 bits). Devices using unique ID based mac address
  will see last 3 bytes of their MAC address modified by this change.

* On all STM32 (except F1x and F37x series), two new required properties have been
  added to ADC to configure the source clock and the prescaler.
  ``st,adc-clock-source`` allows choosing either synchronous or asynchronous clock source.
  ``st,adc-prescaler`` allows setting the value of the prescaler for the chosen clock source.
  Not all combinations are allowed. Refer to the appropriate RefMan for more information.
  When choosing asynchronous clock, the choice of the kernel source clock is made in the
  ``clocks`` node as it is done for other peripherals, for example, to select
  HSI16 as clock source for STM32G0:

  .. code-block:: devicetree

     &adc {
         clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00100000>,
                  <&rcc STM32_SRC_HSI ADC_SEL(2)>;
       };

* On NXP boards with LPC DMA, the DMA controller node used to have its ``dma-channels`` property
  set in the board DTS as a way to configure the amount of structures the driver will allocate.
  This did not match the zephyr dma-controller binding, so this property is now fixed and set
  in the SOC devicetree definition. Downstream boards should not override this property and
  instead use the new driver Kconfig
  :kconfig:option:`CONFIG_DMA_MCUX_LPC_NUMBER_OF_CHANNELS_ALLOCATED`.

* The LPC55XXX series SOC (except LPC55S06) default main clock has been
  updated to PLL1 source from XTAL32K running at 144MHZ. If the new
  kconfig option :kconfig:option:`CONFIG_INIT_PLL1`
  is disabled then the main clock is muxed to FRO_HR as before.

* The Kconfig option ``CONFIG_GPIO_NCT38XX_INTERRUPT`` has been renamed to
  :kconfig:option:`CONFIG_GPIO_NCT38XX_ALERT`.

* The CAN controller timing API functions :c:func:`can_set_timing` and :c:func:`can_set_timing_data`
  no longer fallback to the (Re-)Synchronization Jump Width (SJW) value set in the devicetree
  properties for the given CAN controller upon encountering an SJW value corresponding to
  ``CAN_SJW_NO_CHANGE`` (which is no longer available). The caller will therefore need to fill in
  the ``sjw`` field in :c:struct:`can_timing`. To aid in this, the :c:func:`can_calc_timing` and
  :c:func:`can_calc_timing_data` functions now automatically calculate a suitable SJW. The
  calculated SJW can be overwritten by the caller if needed. The CAN controller API functions
  :c:func:`can_set_bitrate` and :c:func:`can_set_bitrate_data` now also automatically calculate a
  suitable SJW, but their SJW cannot be overwritten by the caller.

* The CAN ISO-TP message configuration in :c:struct:`isotp_msg_id` is changed to use the following
  flags instead of bit fields:

  * :c:macro:`ISOTP_MSG_EXT_ADDR` to enable ISO-TP extended addressing
  * :c:macro:`ISOTP_MSG_FIXED_ADDR` to enable ISO-TP fixed addressing
  * :c:macro:`ISOTP_MSG_IDE` to use extended (29-bit) CAN IDs

  The two new flags :c:macro:`ISOTP_MSG_FDF` and :c:macro:`ISOTP_MSG_BRS` were added for CAN FD
  mode.

* NXP i.MX RT based boards should now enable
  :kconfig:option:`CONFIG_DEVICE_CONFIGURATION_DATA` at the board level when
  using a DCD with the RT bootrom, and enable
  :kconfig:option:`CONFIG_NXP_IMX_EXTERNAL_SDRAM` when using external SDRAM
  via the SEMC

* NXP i.MX RT11xx series SNVS pin control name identifiers have been updated to
  match with the source data for these SOCs. The pin names have had the
  suffix ``dig`` added. For example, ``iomuxc_snvs_wakeup_gpio13_io00`` has
  been renamed to ``iomuxc_snvs_wakeup_dig_gpio13_io00``

Power Management
================

* Platforms that implement power management hooks must explicitly select
  :kconfig:option:`CONFIG_HAS_PM` in Kconfig. This is now a dependency of
  :kconfig:option:`CONFIG_PM`. Before this change all platforms could enable
  :kconfig:option:`CONFIG_PM` because empty weak stubs were provided, however,
  this is no longer supported. As a result of this change, power management
  hooks are no longer defined as weaks.

* Multiple platforms no longer support powering the system off using
  :c:func:`pm_state_force`. The new :c:func:`sys_poweroff` API must be used.
  Migrated platforms include Nordic nRF, STM32, ESP32 and TI CC13XX/26XX. The
  new API is independent from :kconfig:option:`CONFIG_PM`. It requires
  :kconfig:option:`CONFIG_POWEROFF` to be enabled, which depends on
  :kconfig:option:`CONFIG_HAS_POWEROFF`, an option selected by platforms
  implementing the required new hooks.

Bootloader
==========

* The :kconfig:option:`CONFIG_BOOTLOADER_SRAM_SIZE` default value is now ``0`` (was
  ``16``). Bootloaders that use a part of the SRAM should set this value to an
  appropriate size. :github:`60371`

Bluetooth
=========

* The ``accept()`` callback's signature in :c:struct:`bt_l2cap_server` has
  changed to ``int (*accept)(struct bt_conn *conn, struct bt_l2cap_server
  *server, struct bt_l2cap_chan **chan)``,
  adding a new ``server`` parameter pointing to the :c:struct:`bt_l2cap_server`
  structure instance the callback relates to. :github:`60536`

Networking
==========

* A new networking Kconfig option :kconfig:option:`CONFIG_NET_INTERFACE_NAME`
  defaults to ``y``. The option allows user to set a name to a network interface.
  During system startup a default name is assigned to the network interface like
  ``eth0`` to the first Ethernet network interface. The option affects the behavior
  of ``SO_BINDTODEVICE`` BSD socket option. If the Kconfig option is set to ``n``,
  which is how the system worked earlier, then the name of the device assigned
  to the network interface is used by the ``SO_BINDTODEVICE`` socket option.
  If the Kconfig option is set to ``y`` (current default), then the network
  interface name is used by the ``SO_BINDTODEVICE`` socket option.

* Ethernet PHY devicetree bindings were updated to use the standard ``reg``
  property for the PHY address instead of a custom ``address`` property. As a
  result, MDIO controller nodes now require ``#address-cells`` and
  ``#size-cells`` properties. Similarly, Ethernet PHY devicetree nodes and
  corresponding driver were updated to consistently use the node name
  ``ethernet-phy`` instead of ``phy``. Devicetrees and overlays must be updated
  accordingly:

  .. code-block:: devicetree

     mdio {
         compatible = "mdio-controller";
         #address-cells = <1>;
         #size-cells = <0>;

         ethernet-phy@0 {
             compatible = "ethernet-phy";
             reg = <0>;
         };
     };

Other Subsystems
================

* ZBus runtime observers implementation now relies on the HEAP memory instead of a memory slab.
  Thus, zbus' configuration (kconfig) related to runtime observers has changed. To keep your runtime
  observers code working correctly, you need to:

  - Replace the integer ``CONFIG_ZBUS_RUNTIME_OBSERVERS_POOL_SIZE`` with the boolean
    :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS`;
  - Set the HEAP size with the :kconfig:option:`CONFIG_HEAP_MEM_POOL_SIZE`.

* The zbus VDED delivery sequence has changed. Check the :ref:`documentation<zbus delivery
  sequence>` to verify if it will affect your code.

* MCUmgr SMP version 2 error codes entry has changed due to a collision with an
  existing response in shell_mgmt. Previously, these errors had the entry ``ret``
  but now have the entry ``err``. ``smp_add_cmd_ret()`` is now deprecated and
  :c:func:`smp_add_cmd_err` should be used instead, ``MGMT_CB_ERROR_RET`` is
  now deprecated and :c:enumerator:`MGMT_CB_ERROR_ERR` should be used instead.
  SMP version 2 error code defines for in-tree modules have been updated to
  replace the ``*_RET_RC_*`` parts with ``*_ERR_*``.

* MCUmgr SMP version 2 error translation (to legacy MCUmgr error code) is now
  handled in function handlers by setting the ``mg_translate_error`` function
  pointer of :c:struct:`mgmt_group` when registering a group. See
  :c:type:`smp_translate_error_fn` for function details. Any SMP version 2
  handlers made for Zephyr 3.4 need to be updated to include these translation
  functions when the groups are registered.

ARM
===

* ARM SoC initialization routines no longer need to call `NMI_INIT()`. The
  macro call has been removed as it was not doing anything useful.

RISC V
======

* The :kconfig:option:`CONFIG_RISCV_MTVEC_VECTORED_MODE` Kconfig option was renamed to
  :kconfig:option:`CONFIG_RISCV_VECTORED_MODE`.

Recommended Changes
*******************

* Setting the GIC architecture version by selecting
  :kconfig:option:`CONFIG_GIC_V1`, :kconfig:option:`CONFIG_GIC_V2` and
  :kconfig:option:`CONFIG_GIC_V3` directly in Kconfig has been deprecated.
  The GIC version should now be specified by adding the appropriate compatible, for
  example :dtcompatible:`arm,gic-v2`, to the GIC node in the device tree.

* Nordic nRF based boards using :kconfig:option:`CONFIG_NFCT_PINS_AS_GPIOS`
  to configure NFCT pins as GPIOs, should instead set the new UICR
  ``nfct-pins-as-gpios`` property in devicetree. It can be set like this in the
  board devicetree files:

  .. code-block:: devicetree

     &uicr {
         nfct-pins-as-gpios;
     };

* Nordic nRF based boards using :kconfig:option:`CONFIG_GPIO_AS_PINRESET`
  to configure reset GPIO as nRESET, should instead set the new UICR
  ``gpio-as-nreset`` property in devicetree. It can be set like this in the
  board devicetree files:

  .. code-block:: devicetree

     &uicr {
         gpio-as-nreset;
     };

* The :kconfig:option:`CONFIG_MODEM_GSM_PPP` modem driver is obsolete.
  Instead the new :kconfig:option:`CONFIG_MODEM_CELLULAR` driver should be used.
  As part of this :kconfig:option:`CONFIG_GSM_MUX` and :kconfig:option:`CONFIG_UART_MUX` are being
  marked as deprecated as well. The new modem subsystem :kconfig:option:`CONFIG_MODEM_CMUX`
  and :kconfig:option:`CONFIG_MODEM_PPP` should be used instead.

* Device drivers should now be restricted to ``PRE_KERNEL_1``, ``PRE_KERNEL_2``
  and ``POST_KERNEL`` initialization levels. Other device initialization levels,
  including ``EARLY``, ``APPLICATION``, and ``SMP``, have been deprecated and
  will be removed in future releases. Note that these changes do not apply to
  initialization levels used in the context of the ``init.h`` API,
  e.g. :c:macro:`SYS_INIT`.

* The following CAN controller devicetree properties are now deprecated in favor specifying the
  initial CAN bitrate using the ``bus-speed``, ``sample-point``, ``bus-speed-data``, and
  ``sample-point-data`` properties:

  * ``sjw``
  * ``prop-seg``
  * ``phase-seg1``
  * ``phase-seg1``
  * ``sjw-data``
  * ``prop-seg-data``
  * ``phase-seg1-data``
  * ``phase-seg1-data``

* ``<zephyr/arch/arm/aarch32/cortex_a_r/cmsis.h>`` and
  ``<zephyr/arch/arm/aarch32/cortex_m/cmsis.h>`` are now deprecated in favor of
  including ``<cmsis_core.h>`` instead. The new header is part of the CMSIS glue
  code in the ``modules`` directory.

* Random API header ``<zephyr/random/rand32.h>`` is deprecated in favor of
  ``<zephyr/random/random.h>``. The old header will be removed in future releases
  and its usage should be avoided.

---

### Doc Releases Migration Guide 3.6 (`doc/releases/migration-guide-3.6.rst`)

:orphan:

.. _migration_3.6:

Migration guide to Zephyr v3.6.0
################################

This document describes the changes required when migrating your application from Zephyr v3.5.0 to
Zephyr v3.6.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_3.6>`.

.. contents::
    :local:
    :depth: 2

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

* The deprecated ``prj_<board>.conf`` Kconfig file support has been removed, projects that use
  this should switch to using board Kconfig fragments instead (``boards/<board>.conf``).

* Until now ``_POSIX_C_SOURCE``, ``_XOPEN_SOURCE``, and ``_XOPEN_SOURCE_EXTENDED`` were defined
  globally when building for the native (``ARCH_POSIX``) targets, and ``_POSIX_C_SOURCE`` when
  building with PicolibC. Since this release, these are set only for the files that need them.
  If your library or application needed this, you may start getting an "implicit declaration"
  warning for functions whose prototypes are only exposed if one of these is defined.
  If so, you can fix it by defining the corresponding macro in your C source file before any
  include, or by adding the equivalent of
  ``target_compile_definitions(app PRIVATE _POSIX_C_SOURCE=200809L)`` to your application
  or ``zephyr_library_compile_definitions(_POSIX_C_SOURCE=200809L)`` to your library.

* Build type by setting ``CONF_FILE`` to ``prj_<build>.conf`` is now deprecated, users should
  instead use the new ``-DFILE_SUFFIX`` feature :ref:`application-file-suffixes`.

Kernel
******

* The system heap size and its availability is now determined by a ``K_HEAP_MEM_POOL_SIZE``
  define instead of the :kconfig:option:`CONFIG_HEAP_MEM_POOL_SIZE` Kconfig option. Subsystems
  can specify their own custom system heap size requirements by specifying Kconfig options with
  the prefix ``CONFIG_HEAP_MEM_POOL_ADD_SIZE_``. The old Kconfig option still exists, but will be
  overridden if the custom requirements are larger. To force the old Kconfig option to be used,
  even when its value is less than the indicated custom requirements, a new
  :kconfig:option:`CONFIG_HEAP_MEM_POOL_IGNORE_MIN` option has been introduced (which defaults
  being disabled).

* STM32H7 and STM32F7 should now activate the cache (Icache and Dcache) by setting explicitly
  the  ``CONFIG_CACHE_MANAGEMENT`` to ``y``.

Boards
******

* The deprecated Nordic SoC Kconfig option ``NRF_STORE_REBOOT_TYPE_GPREGRET`` has been removed,
  applications that use this should switch to using the :ref:`boot_mode_api` instead.
* NXP: Enabled :ref:`linkserver<linkserver-debug-host-tools>` to be the default runner on the
  following NXP boards: ``mimxrt685_evk_cm33``, ``frdm_k64f``, ``mimxrt1050_evk``, ``frdm_kl25z``,
  ``mimxrt1020_evk``, ``mimxrt1015_evk``

Modules
*******

Optional Modules
================

The following modules have been made optional and are not downloaded with `west update` by default
anymore:

* ``canopennode`` (:github:`64139`)

To enable them again use the ``west config manifest.project-filter -- +<module
name>`` command, or ``west config manifest.group-filter -- +optional`` to
enable all optional modules, and then run ``west update`` again.

MCUboot
=======

* MCUboot's deprecated ``CONFIG_ZEPHYR_TRY_MASS_ERASE`` Kconfig option has been removed. If an
  erase is needed when flashing MCUboot, this should now be provided directly to the ``west``
  command e.g. ``west flash --erase``. (:github:`64703`)

zcbor
=====

* If you have zcbor-generated code that relies on the zcbor libraries through Zephyr, you must
  regenerate the files using zcbor 0.8.1. Note that the names of generated types and members has
  been overhauled, so the code using the generated code must likely be changed.
  For example:

  * Leading single underscores and all double underscores are largely gone,
  * Names sometimes gain suffixes like ``_m`` or ``_l`` for disambiguation.
  * All enum (choice) names have now gained a ``_c`` suffix, so the enum name no longer matches
    the corresponding member name exactly (because this broke C++ namespace rules).

* The function :c:func:`zcbor_new_state`, :c:func:`zcbor_new_decode_state` and the macro
  :c:macro:`ZCBOR_STATE_D` have gained new parameters related to decoding of unordered maps.
  Unless you are using that new functionality, these can all be set to NULL or 0.

* The functions :c:func:`zcbor_bstr_put_term` and :c:func:`zcbor_tstr_put_term` have gained a new
  parameter ``maxlen``, referring to the maximum length of the parameter ``str``.
  This parameter is passed directly to :c:func:`strnlen` under the hood.

* The function :c:func:`zcbor_tag_encode` has been renamed to :c:func:`zcbor_tag_put`.

* Printing has been changed significantly, e.g. :c:func:`zcbor_print` is now called
  :c:func:`zcbor_log`, and :c:func:`zcbor_trace` with no parameters is gone, and in its place are
  :c:func:`zcbor_trace_file` and :c:func:`zcbor_trace`, both of which take a ``state`` parameter.

Device Drivers and Devicetree
*****************************

Devicetree Labels
=================

* Various deprecated macros related to the deprecated devicetree label property
  were removed. These are listed in the following table. The table also
  provides replacements.

  However, if you are still using code like
  ``device_get_binding(DT_LABEL(node_id))``, consider replacing it with
  something like ``DEVICE_DT_GET(node_id)`` instead. The ``DEVICE_DT_GET()``
  macro avoids run-time string comparisons, and is also safer because it will
  fail the build if the device does not exist.

  .. list-table::
     :header-rows: 1

     * - Removed macro
       - Replacement

     * - ``DT_GPIO_LABEL(node_id, gpio_pha)``
       - ``DT_PROP(DT_GPIO_CTLR(node_id, gpio_pha), label)``

     * - ``DT_GPIO_LABEL_BY_IDX(node_id, gpio_pha, idx)``
       - ``DT_PROP(DT_GPIO_CTLR_BY_IDX(node_id, gpio_pha, idx), label)``

     * - ``DT_INST_GPIO_LABEL(inst, gpio_pha)``
       - ``DT_PROP(DT_GPIO_CTLR(DT_DRV_INST(inst), gpio_pha), label)``

     * - ``DT_INST_GPIO_LABEL_BY_IDX(inst, gpio_pha, idx)``
       - ``DT_PROP(DT_GPIO_CTLR_BY_IDX(DT_DRV_INST(inst), gpio_pha, idx), label)``

     * - ``DT_SPI_DEV_CS_GPIOS_LABEL(spi_dev)``
       - ``DT_PROP(DT_SPI_DEV_CS_GPIOS_CTLR(spi_dev), label)``

     * - ``DT_INST_SPI_DEV_CS_GPIOS_LABEL(inst)``
       - ``DT_PROP(DT_SPI_DEV_CS_GPIOS_CTLR(DT_DRV_INST(inst)), label)``

     * - ``DT_LABEL(node_id)``
       - ``DT_PROP(node_id, label)``

     * - ``DT_BUS_LABEL(node_id)``
       - ``DT_PROP(DT_BUS(node_id), label)``

     * - ``DT_INST_LABEL(inst)``
       - ``DT_INST_PROP(inst, label)``

     * - ``DT_INST_BUS_LABEL(inst)``
       - ``DT_PROP(DT_BUS(DT_DRV_INST(inst)), label)``

Multi-level Interrupts
======================

* For platforms that enabled :kconfig:option:`CONFIG_MULTI_LEVEL_INTERRUPTS`, the ``IRQ`` variant
  of the Devicetree macros now return the as-seen value in the devicetree instead of the Zephyr
  multilevel-encoded IRQ number. To get the IRQ number in Zephyr multilevel-encoded format, use
  ``IRQN`` variant instead. For example, consider the following devicetree:

  .. code-block:: devicetree

    plic: interrupt-controller@c000000 {
            riscv,max-priority = <7>;
            riscv,ndev = <1024>;
            reg = <0x0c000000 0x04000000>;
            interrupts-extended = <&hlic0 11>;
            interrupt-controller;
            compatible = "sifive,plic-1.0.0";
            #address-cells = <0x0>;
            #interrupt-cells = <0x2>;
    };

    uart0: uart@10000000 {
            interrupts = <10 1>;
            interrupt-parent = <&plic>;
            clock-frequency = <0x384000>;
            reg = <0x10000000 0x100>;
            compatible = "ns16550";
            reg-shift = <0>;
    };

  ``plic`` is a second level interrupt aggregator and ``uart0`` is a child of ``plic``.
  ``DT_IRQ_BY_IDX(DT_NODELABEL(uart0), 0, irq)`` will return ``10``
  (as-seen value in the devicetree), while ``DT_IRQN_BY_IDX(DT_NODELABEL(uart0), 0)`` will return
  ``(((10 + 1) << CONFIG_1ST_LEVEL_INTERRUPT_BITS) | 11)``.

  Drivers and applications that are supposed to work in multilevel-interrupt configurations should
  be updated to use the ``IRQN`` variant, i.e.:

  * ``DT_IRQ(node_id, irq)`` -> ``DT_IRQN(node_id)``
  * ``DT_IRQ_BY_IDX(node_id, idx, irq)`` -> ``DT_IRQN_BY_IDX(node_id, idx)``
  * ``DT_IRQ_BY_NAME(node_id, name, irq)`` -> ``DT_IRQN_BY_NAME(node_id, name)``
  * ``DT_INST_IRQ(inst, irq)`` -> ``DT_INST_IRQN(inst)``
  * ``DT_INST_IRQ_BY_IDX(inst, idx, irq)`` -> ``DT_INST_IRQN_BY_IDX(inst, idx)``
  * ``DT_INST_IRQ_BY_NAME(inst, name, irq)`` -> ``DT_INST_IRQN_BY_NAME(inst, name)``

Analog-to-Digital Converter (ADC)
=================================

* The io-channel cells of the following devicetree bindings were reduced from 2 (``positive`` and
  ``negative``) to the common ``input``, making it possible to use the various ADC DT macros with TI
  LMP90xxx ADC devices:

  * :dtcompatible:`ti,lmp90077`
  * :dtcompatible:`ti,lmp90078`
  * :dtcompatible:`ti,lmp90079`
  * :dtcompatible:`ti,lmp90080`
  * :dtcompatible:`ti,lmp90097`
  * :dtcompatible:`ti,lmp90098`
  * :dtcompatible:`ti,lmp90099`
  * :dtcompatible:`ti,lmp90100`

* The io-channel cells of the :dtcompatible:`microchip,mcp3204` and
  :dtcompatible:`microchip,mcp3208` devicetree bindings were renamed from ``channel`` to the common
  ``input``, making it possible to use the various ADC DT macros with Microchip MCP320x ADC devices.

Bluetooth HCI
=============

* The optional :c:func:`setup()` function in the Bluetooth HCI driver API (enabled through
  :kconfig:option:`CONFIG_BT_HCI_SETUP`) has gained a function parameter of type
  :c:struct:`bt_hci_setup_params`. By default, the struct is empty, but drivers can opt-in to
  :kconfig:option:`CONFIG_BT_HCI_SET_PUBLIC_ADDR` if they support setting the controller's public
  identity address, which will then be passed in the ``public_addr`` field.

  (:github:`62994`)

* The :dtcompatible:`st,hci-spi-v1` should be used instead of :dtcompatible:`zephyr,bt-hci-spi`
  for the boards which are based on ST BlueNRG-MS.

Controller Area Network (CAN)
=============================

* The native Linux SocketCAN driver, which can now be used in both ``native_posix``
  and :zephyr:board:`native_sim<native_sim>` with or without an embedded C-library, has been renamed to
  reflect this:

  * The devicetree compatible was renamed from ``zephyr,native-posix-linux-can`` to
    :dtcompatible:`zephyr,native-linux-can`.
  * The main Kconfig option was renamed from ``CONFIG_CAN_NATIVE_POSIX_LINUX`` to
    :kconfig:option:`CONFIG_CAN_NATIVE_LINUX`.

* Two new structures for holding common CAN controller driver configuration (``struct
  can_driver_config``) and data (``struct can_driver_data``) fields were introduced. Out-of-tree CAN
  controller drivers need to be updated to use these new, common configuration and data structures
  along with their initializer macros.

* The optional ``can_get_max_bitrate_t`` CAN controller driver callback was removed in favor of a
  common accessor function. Out-of-tree CAN controller drivers need to be updated to no longer
  supply this callback.

* The CAN transceiver API function :c:func:`can_transceiver_enable` now takes a :c:type:`can_mode_t`
  argument for propagating the CAN controller operational mode to the CAN transceiver. Out-of-tree
  CAN controller and CAN transceiver drivers need to be updated to match this new API function
  signature.

* The ``CAN_FILTER_FDF`` flag for filtering classic CAN/CAN FD frames was removed since no known CAN
  controllers implement support for this. Applications can still filter on classic CAN/CAN FD frames
  in their receive callback functions as needed.

* The ``CAN_FILTER_DATA`` and ``CAN_FILTER_RTR`` flags for filtering between Data and Remote
  Transmission Request (RTR) frames were removed since not all CAN controllers implement support for
  individual RX filtering based on the RTR bit. Applications can now use
  :kconfig:option:`CONFIG_CAN_ACCEPT_RTR` to either accept incoming RTR frames matching CAN filters
  or reject all incoming CAN RTR frames (the default). When :kconfig:option:`CONFIG_CAN_ACCEPT_RTR`
  is enabled, applications can still filter between Data and RTR frames in their receive callback
  functions as needed.

* The :dtcompatible:`st,stm32h7-fdcan` CAN controller driver now supports configuring the
  domain/kernel clock via devicetree. Previously, the driver only supported using the PLL1_Q clock
  for kernel clock, but now it defaults to the HSE clock, which is the chip default. Boards that
  use the PLL1_Q clock for FDCAN will need to override the ``clocks`` property as follows:

  .. code-block:: devicetree

    &fdcan1 {
            clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000100>,
                     <&rcc STM32_SRC_PLL1_Q FDCAN_SEL(1)>;
    };

Display
=======

* ILI9XXX based displays now use the MIPI DBI driver class. These displays
  must now be declared within a MIPI DBI driver wrapper device, which will
  manage interfacing with the display. Note that the `cmd-data-gpios` pin has
  changed polarity with this update, to align better with the new
  `dc-gpios` name. For an example, see below:

  .. code-block:: devicetree

    /* Legacy ILI9XXX display definition */
    &spi2 {
        ili9340: ili9340@0 {
            compatible = "ilitek,ili9340";
            reg = <0>;
            spi-max-frequency = <32000000>;
            reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            cmd-data-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            rotation = <270>;
            width = <320>;
            height = <240>;
        };
    };

    /* New display definition with MIPI DBI device */

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
        dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        spi-dev = <&spi2>;
        #address-cells = <1>;
        #size-cells = <0>;

        ili9340: ili9340@0 {
            compatible = "ilitek,ili9340";
            reg = <0>;
            mipi-max-frequency = <32000000>;
            rotation = <270>;
            width = <320>;
            height = <240>;
        };
    };

Flash
=====

* The :dtcompatible:`st,stm32-ospi-nor` and :dtcompatible:`st,stm32-qspi-nor` give the nor flash
  base address and size (in Bytes) with the **reg** property as follows.
  The <size> property is not used anymore.

  .. code-block:: devicetree

    mx25lm51245: ospi-nor-flash@70000000 {
            compatible = "st,stm32-ospi-nor";
            reg = <0x70000000 DT_SIZE_M(64)>; /* 512 Mbits*/
    };

General Purpose I/O (GPIO)
==========================

* The :dtcompatible:`nxp,pcf8574` driver has been renamed to
  :dtcompatible:`nxp,pcf857x`. (:github:`67054`) to support pcf8574 and pcf8575.
  The Kconfig option has been renamed from :kconfig:option:`CONFIG_GPIO_PCF8574` to
  :kconfig:option:`CONFIG_GPIO_PCF857X`.
  The Device Tree can be configured as follows:

  .. code-block:: devicetree

    &i2c {
      status = "okay";
      pcf8574: pcf857x@20 {
          compatible = "nxp,pcf857x";
          status = "okay";
          reg = <0x20>;
          gpio-controller;
          #gpio-cells = <2>;
          ngpios = <8>;
      };

      pcf8575: pcf857x@21 {
          compatible = "nxp,pcf857x";
          status = "okay";
          reg = <0x21>;
          gpio-controller;
          #gpio-cells = <2>;
          ngpios = <16>;
      };
    };

Input
=====

* Touchscreen drivers :dtcompatible:`focaltech,ft5336` and
  :dtcompatible:`goodix,gt911` were using the incorrect polarity for the
  respective ``reset-gpios``. This has been fixed so those signals now have to
  be flagged as :c:macro:`GPIO_ACTIVE_LOW` in the devicetree. (:github:`64800`)

Interrupt Controller
====================

* The function signature of the ``isr_t`` callback function passed to the ``shared_irq``
  interrupt controller driver API via :c:func:`shared_irq_isr_register()` has changed.
  The callback now takes an additional `irq_number` parameter. Out-of-tree users of
  this API will need to be updated.

  (:github:`66427`)

Renesas RA Series Drivers
=========================

* Several Renesas RA series drivers Kconfig options have been renamed:

  * ``CONFIG_CLOCK_CONTROL_RA`` -> :kconfig:option:`CONFIG_CLOCK_CONTROL_RENESAS_RA`
  * ``CONFIG_GPIO_RA`` -> :kconfig:option:`CONFIG_GPIO_RENESAS_RA`
  * ``CONFIG_PINCTRL_RA`` -> :kconfig:option:`CONFIG_PINCTRL_RENESAS_RA`
  * ``CONFIG_UART_RA`` -> :kconfig:option:`CONFIG_UART_RENESAS_RA`

Sensors
=======

* The :dtcompatible:`st,lsm6dsv16x` sensor driver has been changed to support
  configuration of both int1 and int2 pins. The DT attribute ``irq-gpios`` has been
  removed and substituted by two new attributes, ``int1-gpios`` and ``int2-gpios``.
  These attributes must be configured in the Device Tree similarly to the following
  example:

  .. code-block:: devicetree

    / {
        lsm6dsv16x@0 {
            compatible = "st,lsm6dsv16x";

            int1-gpios = <&gpioa 4 GPIO_ACTIVE_HIGH>;
            int2-gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
            drdy-pin = <2>;
        };
    };

Serial
======

* Runtime configuration is now disabled by default for Nordic UART drivers. The motivation for the
  change is that this feature is rarely used and disabling it significantly reduces the memory
  footprint.

Timer
=====

* The :dtcompatible:`st,stm32-lptim` lptim which is selected for counting ticks during
  low power modes is identified by **stm32_lp_tick_source** in the device tree as follows.
  The stm32_lptim_timer driver has been changed to support this.

  .. code-block:: devicetree

    stm32_lp_tick_source: &lptim1 {
            status = "okay";
    };

Bluetooth
*********

* ATT now has its own TX buffer pool.
  If extra ATT buffers were configured using :kconfig:option:`CONFIG_BT_L2CAP_TX_BUF_COUNT`,
  they now instead should be configured through :kconfig:option:`CONFIG_BT_ATT_TX_COUNT`.
* The HCI implementation for both the Host and the Controller sides has been
  renamed for the IPC transport. The ``CONFIG_BT_RPMSG`` Kconfig option is now
  :kconfig:option:`CONFIG_BT_HCI_IPC`, and the ``zephyr,bt-hci-rpmsg-ipc``
  Devicetree chosen is now ``zephyr,bt-hci-ipc``. The existing sample has also
  been renamed, from ``samples/bluetooth/hci_rpmsg`` to
  ``samples/bluetooth/hci_ipc``. (:github:`64391`)
* The BT GATT callback list, appended to by :c:func:`bt_gatt_cb_register`, is no longer
  cleared on :c:func:`bt_enable`. Callbacks can now be registered before the initial
  call to :c:func:`bt_enable`, and should no longer be re-registered after a :c:func:`bt_disable`
  :c:func:`bt_enable` cycle. (:github:`63693`)
* The Bluetooth UUID has been modified to rodata in ``BT_UUID_DECLARE_16``, ``BT_UUID_DECLARE_32``
  and ``BT_UUID_DECLARE_128`` as the return value has been changed to ``const``.
  Any pointer to a UUID must be prefixed with ``const``, otherwise there will be a compilation
  warning. For example change ``struct bt_uuid *uuid = BT_UUID_DECLARE_16(xx)`` to
  ``const struct bt_uuid *uuid = BT_UUID_DECLARE_16(xx)``. (:github:`66136`)
* The :c:func:`bt_l2cap_chan_send` API no longer allocates buffers from the same pool as its `buf`
  parameter when segmenting SDUs into PDUs. In order to reproduce the previous behavior, the
  application should register the `alloc_seg` channel callback and allocate from the same pool as
  `buf`.
* The :c:func:`bt_l2cap_chan_send` API now requires the application to reserve
  enough bytes for the L2CAP headers. Call ``net_buf_reserve(buf,
  BT_L2CAP_SDU_CHAN_SEND_RESERVE);`` at buffer allocation time to do so.
* `BT_ISO_TIMESTAMP_NONE` has been removed and the `ts` parameter of :c:func:`bt_iso_chan_send` has
  as well. :c:func:`bt_iso_chan_send` now always sends without timestamp. To send with a timestamp,
  :c:func:`bt_iso_chan_send_ts` can be used.
* The ``CONFIG_BT_HCI_RESERVE`` and ``CONFIG_BT_HCI_RAW_RESERVE`` Kconfig options were removed. All
  buffers get by default one byte of headroom now, which HCI transport implementations can rely on
  (whether they need it or not).

Bluetooth Mesh
==============

  * The Bluetooth Mesh ``model`` declaration has been changed to add prefix ``const``.
    The ``model->user_data``, ``model->elem_idx`` and ``model->mod_idx`` field has been changed to
    the new runtime structure, replaced by ``model->rt->user_data``, ``model->rt->elem_idx`` and
    ``model->rt->mod_idx`` separately. (:github:`65152`)
  * The Bluetooth Mesh ``element`` declaration has been changed to add prefix ``const``.
    The ``elem->addr`` field has been changed to the new runtime structure, replaced by
    ``elem->rt->addr``. (:github:`65388`)
  * Deprecated :kconfig:option:`CONFIG_BT_MESH_PROV_DEVICE`. This option is
    replaced by new option :kconfig:option:`CONFIG_BT_MESH_PROVISIONEE` to
    be aligned with Mesh Protocol Specification v1.1, section 5.4. (:github:`64252`)
  * Removed the ``CONFIG_BT_MESH_V1d1`` Kconfig option.
  * Removed the ``CONFIG_BT_MESH_TX_SEG_RETRANS_COUNT``,
    ``CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST``,
    ``CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP``, ``CONFIG_BT_MESH_SEG_ACK_BASE_TIMEOUT``,
    ``CONFIG_BT_MESH_SEG_ACK_PER_HOP_TIMEOUT``, ``BT_MESH_SEG_ACK_PER_SEGMENT_TIMEOUT``
    Kconfig options. They are superseded by the
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_SEG_INT_STEP`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_COUNT`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_WITHOUT_PROG_COUNT`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_INT_STEP`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_INT_INC`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_MULTICAST_RETRANS_COUNT`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_TX_MULTICAST_RETRANS_INT`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_RX_SEG_THRESHOLD`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_RX_ACK_DELAY_INC`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_RX_SEG_INT_STEP`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_RX_DISCARD_TIMEOUT`,
    :kconfig:option:`CONFIG_BT_MESH_SAR_RX_ACK_RETRANS_COUNT` Kconfig options.

Bluetooth Audio
===============

  * The ``BT_AUDIO_CODEC_LC3_*`` values from ``<zephyr/bluetooth/audio/lc3.h>`` have moved to
    ``<zephyr/bluetooth/audio/audio.h>`` and have the ``LC3`` part of their names replaced by a
    more semantically correct name: e.g.
    ``BT_AUDIO_CODEC_LC3_CHAN_COUNT`` is now ``BT_AUDIO_CODEC_CAP_TYPE_CHAN_COUNT``,
    ``BT_AUDIO_CODEC_LC3_FREQ`` is now ``BT_AUDIO_CODEC_CAP_TYPE_FREQ``, and
    ``BT_AUDIO_CODEC_CONFIG_LC3_FREQ`` is now ``BT_AUDIO_CODEC_CFG_FREQ``, etc.
    Similarly the enumerations have also been renamed.
    E.g. ``bt_audio_codec_config_freq`` is now ``bt_audio_codec_cfg_freq``,
    ``bt_audio_codec_capability_type`` is now ``bt_audio_codec_cap_type``,
    ``bt_audio_codec_config_type`` is now ``bt_audio_codec_cfg_type``, etc. (:github:`67024`)
  * The `ts` parameter of :c:func:`bt_bap_stream_send` has been removed.
    :c:func:`bt_bap_stream_send` now always sends without timestamp.
    To send with a timestamp, :c:func:`bt_bap_stream_send_ts` can be used.
  * The `ts` parameter of :c:func:`bt_cap_stream_send` has been removed.
    :c:func:`bt_cap_stream_send` now always sends without timestamp.
    To send with a timestamp, :c:func:`bt_cap_stream_send_ts` can be used.

Networking
**********

* The CoAP public API has some minor changes to take into account. The
  :c:func:`coap_remove_observer` now returns a result if the observer was removed. This
  change is used by the newly introduced :ref:`coap_server_interface` subsystem. Also, the
  ``request`` argument for :c:func:`coap_well_known_core_get` is made ``const``.
  (:github:`64265`)

* CoAP observer events have moved from a callback function in a CoAP resource to the Network Events
  subsystem. The ``CONFIG_COAP_OBSERVER_EVENTS`` configuration option has been removed.
  (:github:`65936`)

* The CoAP public API function :c:func:`coap_pending_init` has changed. The parameter
  ``retries`` is replaced with a pointer to :c:struct:`coap_transmission_parameters`. This allows to
  specify retransmission parameters of the confirmable message. It is safe to pass a NULL pointer to
  use default values.
  (:github:`66482`)

* The CoAP public API functions :c:func:`coap_service_send` and :c:func:`coap_resource_send` have
  changed. An additional parameter pointer to :c:struct:`coap_transmission_parameters` has been
  added. It is safe to pass a NULL pointer to use default values. (:github:`66540`)

* The IGMP multicast library now supports IGMPv3. This results in a minor change to the existing
  api. The :c:func:`net_ipv4_igmp_join` now takes an additional argument of the type
  ``const struct igmp_param *param``. This allows IGMPv3 to exclude/include certain groups of
  addresses. If this functionality is not used or available (when using IGMPv2), you can safely pass
  a NULL pointer. IGMPv3 can be enabled using the Kconfig ``CONFIG_NET_IPV4_IGMPV3``.
  (:github:`65293`)

* The network stack now uses a separate IPv4 TTL (time-to-live) value for multicast packets.
  Before, the same TTL value was used for unicast and multicast packets.
  The IPv6 hop limit value is also changed so that unicast and multicast packets can have a
  different one. (:github:`65886`)

* The Ethernet phy APIs defined in ``<zephyr/net/phy.h>`` are removed from syscall list.
  The APIs were marked as callable from usermode but in practice this does not work as the device
  cannot be accessed from usermode thread. This means that the API calls will need to made
  from supervisor mode thread.

* The zperf ratio between mbps and kbps, kbps and bps is changed to 1000, instead of 1024,
  to align with iperf ratios.

* For network buffer pools maximum allocation size was added to a common structure
  ``struct net_buf_data_alloc`` as a new field ``max_alloc_size``. Similar member ``data_size`` of
  ``struct net_buf_pool_fixed`` that was specific only for buffer pools with a fixed size was
  removed.

Other Subsystems
****************

LoRaWAN
=======

* The API to register a callback to provide battery level information to the LoRaWAN stack has been
  renamed from ``lorawan_set_battery_level_callback`` to
  :c:func:`lorawan_register_battery_level_callback` and the return type is now ``void``. This
  is more consistent with similar functions for downlink and data rate changed callbacks.
  (:github:`65103`)

MCUmgr
======

* MCUmgr applications that make use of serial transports (shell or UART) must now select
  :kconfig:option:`CONFIG_CRC`, this was previously erroneously selected if MCUmgr was enabled,
  when for non-serial transports it was not needed. (:github:`64078`)

Shell
=====

* The following subsystem and driver shell modules are now disabled by default. Each required shell
  module must now be explicitly enabled via Kconfig (:github:`65307`):

  * :kconfig:option:`CONFIG_ACPI_SHELL`
  * :kconfig:option:`CONFIG_ADC_SHELL`
  * :kconfig:option:`CONFIG_AUDIO_CODEC_SHELL`
  * :kconfig:option:`CONFIG_CAN_SHELL`
  * :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_SHELL`
  * :kconfig:option:`CONFIG_DAC_SHELL`
  * :kconfig:option:`CONFIG_DEBUG_COREDUMP_SHELL`
  * :kconfig:option:`CONFIG_EDAC_SHELL`
  * :kconfig:option:`CONFIG_EEPROM_SHELL`
  * :kconfig:option:`CONFIG_FLASH_SHELL`
  * :kconfig:option:`CONFIG_HWINFO_SHELL`
  * :kconfig:option:`CONFIG_I2C_SHELL`
  * :kconfig:option:`CONFIG_LOG_CMDS`
  * :kconfig:option:`CONFIG_LORA_SHELL`
  * :kconfig:option:`CONFIG_MCUBOOT_SHELL`
  * :kconfig:option:`CONFIG_MDIO_SHELL`
  * :kconfig:option:`CONFIG_OPENTHREAD_SHELL`
  * :kconfig:option:`CONFIG_PCIE_SHELL`
  * :kconfig:option:`CONFIG_PSCI_SHELL`
  * :kconfig:option:`CONFIG_PWM_SHELL`
  * :kconfig:option:`CONFIG_REGULATOR_SHELL`
  * :kconfig:option:`CONFIG_SENSOR_SHELL`
  * :kconfig:option:`CONFIG_SMBUS_SHELL`
  * :kconfig:option:`CONFIG_STATS_SHELL`
  * :kconfig:option:`CONFIG_USBD_SHELL`
  * :kconfig:option:`CONFIG_USBH_SHELL`
  * :kconfig:option:`CONFIG_W1_SHELL`
  * :kconfig:option:`CONFIG_WDT_SHELL`

* The ``SHELL_UART_DEFINE`` macro now only requires a ``_name`` argument. In the meantime, the
  macro accepts additional arguments (ring buffer TX & RX size arguments) for compatibility with
  previous Zephyr version, but they are ignored, and will be removed in future release.

* :kconfig:option:`CONFIG_SHELL_BACKEND_SERIAL_API` now does not automatically default to
  :kconfig:option:`CONFIG_SHELL_BACKEND_SERIAL_API_ASYNC` when
  :kconfig:option:`CONFIG_UART_ASYNC_API` is enabled, :kconfig:option:`CONFIG_SHELL_ASYNC_API`
  also has to be enabled in order to use the asynchronous serial shell (:github:`68475`).

ZBus
====

* The ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC`` and
  ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC`` zbus options are renamed. Instead, the new
  :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC` and
  :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC` options should be used.
  (:github:`65632`)

* To enable the zbus HLP priority boost, the developer must call the
  :c:func:`zbus_obs_attach_to_thread` inside the attaching thread. The observer will then assume the
  attached thread priority which will be used by zbus to calculate HLP priority. (:github:`63183`)

Userspace
*********

* A number of userspace related functions have been moved out of the ``z_`` namespace
  and into the kernel namespace.

  * ``Z_OOPS`` to :c:macro:`K_OOPS`
  * ``Z_SYSCALL_MEMORY`` to :c:macro:`K_SYSCALL_MEMORY`
  * ``Z_SYSCALL_MEMORY_READ`` to :c:macro:`K_SYSCALL_MEMORY_READ`
  * ``Z_SYSCALL_MEMORY_WRITE`` to :c:macro:`K_SYSCALL_MEMORY_WRITE`
  * ``Z_SYSCALL_DRIVER_OP`` to :c:macro:`K_SYSCALL_DRIVER_OP`
  * ``Z_SYSCALL_SPECIFIC_DRIVER`` to :c:macro:`K_SYSCALL_SPECIFIC_DRIVER`
  * ``Z_SYSCALL_OBJ`` to :c:macro:`K_SYSCALL_OBJ`
  * ``Z_SYSCALL_OBJ_INIT`` to :c:macro:`K_SYSCALL_OBJ_INIT`
  * ``Z_SYSCALL_OBJ_NEVER_INIT`` to :c:macro:`K_SYSCALL_OBJ_NEVER_INIT`
  * ``z_user_from_copy`` to :c:func:`k_usermode_from_copy`
  * ``z_user_to_copy`` to :c:func:`k_usermode_to_copy`
  * ``z_user_string_copy`` to :c:func:`k_usermode_string_copy`
  * ``z_user_string_alloc_copy`` to :c:func:`k_usermode_string_alloc_copy`
  * ``z_user_alloc_from_copy`` to :c:func:`k_usermode_alloc_from_copy`
  * ``z_user_string_nlen`` to :c:func:`k_usermode_string_nlen`
  * ``z_dump_object_error`` to :c:func:`k_object_dump_error`
  * ``z_object_validate`` to :c:func:`k_object_validate`
  * ``z_object_find`` to :c:func:`k_object_find`
  * ``z_object_wordlist_foreach`` to :c:func:`k_object_wordlist_foreach`
  * ``z_thread_perms_inherit`` to :c:func:`k_thread_perms_inherit`
  * ``z_thread_perms_set`` to :c:func:`k_thread_perms_set`
  * ``z_thread_perms_clear`` to :c:func:`k_thread_perms_clear`
  * ``z_thread_perms_all_clear`` to :c:func:`k_thread_perms_all_clear`
  * ``z_object_uninit`` to :c:func:`k_object_uninit`
  * ``z_object_recycle`` to :c:func:`k_object_recycle`
  * ``z_obj_validation_check`` to :c:func:`k_object_validation_check`
  * ``Z_SYSCALL_VERIFY_MSG`` to :c:macro:`K_SYSCALL_VERIFY_MSG`
  * ``z_object`` to :c:struct:`k_object`
  * ``z_object_init`` to :c:func:`k_object_init`
  * ``z_dynamic_object_aligned_create`` to :c:func:`k_object_create_dynamic_aligned`

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

Xtensa
======

* :kconfig:option:`CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC` no longer has a default in
  the architecture layer. Instead, SoCs or boards will need to define it.

* Scratch registers ``ZSR_ALLOCA`` has been renamed to ``ZSR_A0SAVE``.

* Renamed files with hyhphens to underscores:

  * ``xtensa-asm2-context.h`` to ``xtensa_asm2_context.h``

  * ``xtensa-asm2-s.h`` to ``xtensa_asm2_s.h``

* ``xtensa_asm2.h`` has been removed. Use ``xtensa_asm2_context.h`` instead for
  stack frame structs.

* Renamed functions out of ``z_`` namespace into ``xtensa_`` namespace.

  * ``z_xtensa_irq_enable`` to :c:func:`xtensa_irq_enable`

  * ``z_xtensa_irq_disable`` to :c:func:`xtensa_irq_disable`

  * ``z_xtensa_irq_is_enabled`` to :c:func:`xtensa_irq_is_enabled`

---

### Doc Releases Migration Guide 3.7 (`doc/releases/migration-guide-3.7.rst`)

:orphan:

.. _migration_3.7:

Migration guide to Zephyr v3.7.0
################################

This document describes the changes required when migrating your application from Zephyr v3.6.0 to
Zephyr v3.7.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_3.7>`.

.. contents::
    :local:
    :depth: 2

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

* Completely overhauled the way SoCs and boards are defined. This requires all
  out-of-tree SoCs and boards to be ported to the new model. See the
  :ref:`hw_model_v2` for more detailed information. (:github:`69607`)

* The following build-time generated headers:

  .. list-table::
     :header-rows: 1

     * - Affected header files
     * - ``app_version.h``
     * - ``autoconf.h``
     * - ``cmake_intdef.h``
     * - ``core-isa-dM.h``
     * - ``devicetree_generated.h``
     * - ``driver-validation.h``
     * - ``kobj-types-enum.h``
     * - ``linker-kobject-prebuilt-data.h``
     * - ``linker-kobject-prebuilt-priv-stacks.h``
     * - ``linker-kobject-prebuilt-rodata.h``
     * - ``mcuboot_version.h``
     * - ``offsets.h``
     * - ``otype-to-size.h``
     * - ``otype-to-str.h``
     * - ``strerror_table.h``
     * - ``strsignal_table.h``
     * - ``syscall_list.h``
     * - ``version.h``
     * - ``zsr.h``

  as well as syscall headers & sources are now namespaced into the ``zephyr/`` folder. The change is largely
  automated, and the script can be found in :github:`63973`.
  For the time being, the compatibility Kconfig (:kconfig:option:`CONFIG_LEGACY_GENERATED_INCLUDE_PATH`)
  is enabled by default so that downstream applications will continue to compile, a warning message
  will be generated during CMake configuration time.
  This Kconfig will be deprecated and eventually removed in the future, developers are advised to
  update the include paths of these affected headers as soon as possible.

Kernel
******

* All architectures are now required to define the new ``struct arch_esf``, which describes the members
  of a stack frame. This new struct replaces the named struct ``z_arch_esf_t``. (:github:`73593`)

* The named struct ``z_arch_esf_t`` is now deprecated. Use ``struct arch_esf`` instead. (:github:`73593`)

* The header file :zephyr_file:`include/zephyr/arch/arch_interface.h` has been moved from
  ``include/zephyr/sys/`` into ``include/zephyr/arch/``. Out-of-tree source files will need to
  update the include path. (:github:`64987`)

Boards
******

* Reordered D1 and D0 in the ``pro_micro`` connector gpio-map for SparkFun Pro Micro RP2040 to match
  original Pro Micro definition. Out-of-tree shields must be updated to reflect this change. (:github:`69994`)
* ITE: Rename all SoC variant Kconfig options, e.g., ``CONFIG_SOC_IT82202_AX`` is renamed to
  :kconfig:option:`CONFIG_SOC_IT82202AX`.
  All symbols are renamed as follows: ``SOC_IT81202BX``, ``SOC_IT81202CX``, ``SOC_IT81302BX``,
  ``SOC_IT81302CX``, ``SOC_IT82002AW``, ``SOC_IT82202AX``, ``SOC_IT82302AX``.
  And, rename the ``SOC_SERIES_ITE_IT8XXX2`` to ``SOC_SERIES_IT8XXX2``. (:github:`71680`)
* For native_sim/posix: :kconfig:option:`CONFIG_EMUL` is no longer enabled by default when
  :kconfig:option:`CONFIG_I2C` is set. Users who need this setting enabled should set it in
  their project config file. (:github:`73067`)

* LiteX: Renamed the ``compatible`` of the LiteX VexRiscV interrupt controller node from
  ``vexriscv-intc0`` to :dtcompatible:`litex,vexriscv-intc0`. (:github:`73211`)

* ``lairdconnect`` boards are now ``ezurio`` boards. Laird Connectivity has rebranded to `Ezurio <https://www.ezurio.com/laird-connectivity>`_.

Modules
*******

Mbed TLS
========

* TLS 1.2, RSA, AES, DES, and all the hash algorithms except SHA-256
  (SHA-224, SHA-384, SHA-512, MD5 and SHA-1) are not enabled by default anymore.
  Their respective Kconfig options now need to be explicitly enabled to be able to use them.
  (:github:`72078`)
* The Kconfig options previously named ``CONFIG_MBEDTLS_MAC_*_ENABLED`` have been renamed.
  The ``_MAC`` and ``_ENABLED`` parts have been removed from their names. (:github:`73267`)
* The :kconfig:option:`CONFIG_MBEDTLS_HASH_ALL_ENABLED` Kconfig option has been fixed to actually
  enable all the available hash algorithms. Previously, it used to only enable the SHA-2 ones.
  (:github:`73267`)
* The ``CONFIG_MBEDTLS_HASH_SHA*_ENABLED`` Kconfig options have been removed. They were duplicates
  of other Kconfig options which are now named ``CONFIG_MBEDTLS_SHA*``. (:github:`73267`)
* The ``CONFIG_MBEDTLS_MAC_ALL_ENABLED`` Kconfig option has been removed. Its equivalent is the
  combination of :kconfig:option:`CONFIG_MBEDTLS_HASH_ALL_ENABLED` and :kconfig:option:`CONFIG_MBEDTLS_CMAC`.
  (:github:`73267`)
* The Kconfig options ``CONFIG_MBEDTLS_MAC_MD4_ENABLED``, ``CONFIG_MBEDTLS_CIPHER_ARC4_ENABLED``
  and ``CONFIG_MBEDTLS_CIPHER_BLOWFISH_ENABLED`` were removed because they are no more supported
  in Mbed TLS. (:github:`73222`)
* When there is any PSA crypto provider available in the system
  (i.e. :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is set), desired PSA crypto
  features must be explicitly enabled using proper ``CONFIG_PSA_WANT_*``. (:github:`72243`)
* TLS/X509/PK/MD modules will use PSA crypto APIs instead of legacy ones as soon
  as there is any PSA crypto provider available in the system
  (i.e. :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is set). (:github:`72243`)

Trusted Firmware-M
==================

* The default MCUboot signature type has been changed from RSA-3072 to EC-P256.
  This affects builds that have MCUboot enabled in TF-M (:kconfig:option:`CONFIG_TFM_BL2`).
  If you wish to keep using RSA-3072, you need to set :kconfig:option:`CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE`
  to ``"RSA-3072"``. Otherwise, make sure to have your own signing keys of the signature type in use.

LVGL
====

* :kconfig:option:`CONFIG_LV_Z_POINTER_KSCAN` was removed, you need to convert your kscan based
  driver to the input subsystem and use a :dtcompatible:`zephyr,lvgl-pointer-input` in your
  devicetree instead. (:github:`73800`)


Device Drivers and Devicetree
*****************************

* The :dtcompatible:`nxp,kinetis-pit` pit driver has changed its compatible
  to :dtcompatible:`nxp,pit` and has been updated to support multiple channels.
  To configure the individual channels, you must add a child node with the
  compatible :dtcompatible:`nxp,pit-channel` and configure as below.
  The :kconfig:option:`CONFIG_COUNTER_MCUX_PIT` has also been renamed to
  :kconfig:option:`CONFIG_COUNTER_NXP_PIT` with regards to the renaming
  of the binding for the pit. (:github:`66336`)
  example:

  .. code-block:: devicetree

    / {
        pit0: pit@40037000 {
            /* Other Pit DT Attributes */
            compatible = "nxp,pit";
            status = "disabled";
            num-channels = <1>;
            #address-cells = <1>;
            #size-cells = <0>;

            pit0_channel0: pit0_channel@0 {
                compatible = "nxp,pit-channel";
                reg = <0>;
                status = "disabled";
            };
    };

* The :dtcompatible:`nxp,kinetis-ethernet` has been deprecated in favor of
  :dtcompatible:`nxp,enet`. All in tree SOCs were converted to use this new schema.
  Thus, all boards using NXP's ENET peripheral will need to align to this binding
  in DT, which also comes with a different version driver. Alternatively,
  the Ethernet node can be deleted and redefined as the old binding to use
  the deprecated legacy driver. The primary advantage of the new binding
  is to be able to abstract an arbitrary phy through the mdio API. (:github:`70400`)
  Example of a basic board level ENET DT definition:

  .. code-block:: devicetree

    &enet_mac {
        status = "okay";
        pinctrl-0 = <&pinmux_enet>;
        pinctrl-names = "default";
        phy-handle = <&phy>;
        zephyr,random-mac-address;
        phy-connection-type = "rmii";
    };

    &enet_mdio {
        status = "okay";
        pinctrl-0 = <&pinmux_enet_mdio>;
        pinctrl-names = "default";
        phy: phy@3 {
            compatible = "ethernet-phy";
            reg = <3>;
            status = "okay";
        };
    };

* The :dtcompatible:`nxp,kinetis-lptmr` compatible string has been changed to
  :dtcompatible:`nxp,lptmr`. The old string will be usable for a short time, but
  should be replaced for it will be removed in the future.

* Some of the driver API structs have been rename to have the required ``_driver_api`` suffix. (:github:`72182`)
  The following types have been renamed:

  * ``emul_sensor_backend_api`` to :c:struct:`emul_sensor_driver_api`
  * ``emul_bbram_backend_api`` to :c:struct:`emul_bbram_driver_api`
  * ``usbc_ppc_drv`` to :c:struct:`usbc_ppc_driver_api`

* The driver for :dtcompatible:`maxim,max31790` got split up into a MFD and an
  actual PWM driver. (:github:`68433`)
  Previously, an instance of this device could have been defined like this:

  .. code-block:: devicetree

    max31790_max31790: max31790@20 {
        compatible = "maxim,max31790";
        status = "okay";
        reg = <0x20>;
        pwm-controller;
        #pwm-cells = <2>;
    };

  This can be converted to:

  .. code-block:: devicetree

    max31790_max31790: max31790@20 {
        compatible = "maxim,max31790";
        status = "okay";
        reg = <0x20>;

        max31790_max31790_pwm: max31790_max31790_pwm {
            compatible = "maxim,max31790-pwm";
            status = "okay";
            pwm-controller;
            #pwm-cells = <2>;
        };
    };

* The driver for :dtcompatible:`invensense,icm42688` now correctly supports device
  tree configuration(:github:`74267`). Prior devicetrees may have tried to use
  the bindings to set sample rate and scale for the accel/gyro without any
  effect. The devicetree usage should now use the provided defines and include
  file along with new bindings which take these values.

  For example:

  .. code-block:: devicetree

    #include <zephyr/dt-bindings/sensor/icm42688.h>

    icm42688: icm42688@0 {
        accel-pwr-mode = <ICM42688_ACCEL_LN>;
        accel-fs = <ICM42688_ACCEL_FS_16G>;
        accel-odr = <ICM42688_ACCEL_ODR_2000>;
        gyro-pwr-mode= <ICM42688_GYRO_LN>;
        gyro-fs = <ICM42688_GYRO_FS_2000>;
        gyro-odr = <ICM42688_GYRO_ODR_2000>;
    };

* :dtcompatible:`st,lis2mdl` property ``spi-full-duplex`` changed to ``duplex =
  SPI_FULL_DUPLEX``. Full duplex is now the default.

* The DT property ``nxp,reference-supply`` of :dtcompatible:`nxp,lpc-lpadc` driver has
  been removed, users should remove this property from their devicetree if it is present.
  Added new phandle-array type DT property ``nxp,references``, the user can use this
  property to specify the reference voltage and reference voltage value to be used by
  the lpadc. (:github:`75005`)

 * The DT properties ``mc,interface-type``, ``mc,reset-gpio``, and ``mc,interrupt-gpio`` of
   the :dtcompatible:`microchip,ksz8081` phy binding have changed to
   ``microchip,interface-type``, ``reset-gpios``, and ``int-gpios``, respectively (:github:`73725`)

Charger
=======

* Dropped ``constant-charge-current-max-microamp`` property in ``charger_max20335`` driver because
  it did not reflect real chip functionality. (:github:`69910`)

* Added enum key to ``constant-charge-voltage-max-microvolt`` property in ``maxim,max20335-charger``
  binding to indicate invalid devicetree values at build time. (:github:`69910`)

Controller Area Network (CAN)
=============================

* Removed the following deprecated CAN controller devicetree properties. Out-of-tree boards using
  these properties can switch to using the ``bitrate``, ``sample-point``, ``bitrate-data``, and
  ``sample-point-data`` devicetree properties (or rely on
  :kconfig:option:`CONFIG_CAN_DEFAULT_BITRATE` and
  :kconfig:option:`CONFIG_CAN_DEFAULT_BITRATE_DATA`) for specifying the initial CAN bitrate:

  * ``sjw``
  * ``prop-seg``
  * ``phase-seg1``
  * ``phase-seg2``
  * ``sjw-data``
  * ``prop-seg-data``
  * ``phase-seg1-data``
  * ``phase-seg2-data``

  The ``bus-speed`` and ``bus-speed-data`` CAN controller devicetree properties have been
  deprecated.

  (:github:`68714`)

* Support for manual bus-off recovery was reworked (:github:`69460`):

  * Automatic bus recovery will always be enabled upon driver initialization regardless of Kconfig
    options. Since CAN controllers are initialized in "stopped" state, no unwanted bus-off recovery
    will be started at this point.
  * The Kconfig ``CONFIG_CAN_AUTO_BUS_OFF_RECOVERY`` was renamed (and inverted) to
    :kconfig:option:`CONFIG_CAN_MANUAL_RECOVERY_MODE`, which is disabled by default. This Kconfig
    option enables support for the :c:func:`can_recover()` API function and a new manual recovery mode
    (see the next bullet).
  * A new CAN controller operational mode :c:macro:`CAN_MODE_MANUAL_RECOVERY` was added. Support for
    this is only enabled if :kconfig:option:`CONFIG_CAN_MANUAL_RECOVERY_MODE` is enabled. Having
    this as a mode allows applications to inquire whether the CAN controller supports manual
    recovery mode via the :c:func:`can_get_capabilities` API function. The application can then
    either fail initialization or rely on automatic bus-off recovery. Having this as a mode
    furthermore allows CAN controller drivers not supporting manual recovery mode to fail early in
    :c:func:`can_set_mode` during application startup instead of failing when :c:func:`can_recover`
    is called at a later point in time.

Crypto
======

* The CSS driver has been deprecated on NXP lpc55s36 (:github:`71173`).

Display
=======

* GC9X01 based displays now use the MIPI DBI driver class. These displays
  must now be declared within a MIPI DBI driver wrapper device, which will
  manage interfacing with the display. (:github:`73686`)
  For an example, see below:

  .. code-block:: devicetree

    /* Legacy GC9X01 display definition */
    &spi0 {
        gc9a01: gc9a01@0 {
            status = "okay";
            compatible = "galaxycore,gc9x01x";
            reg = <0>;
            spi-max-frequency = <100000000>;
            cmd-data-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
            ...
        };
    };

    /* New display definition with MIPI DBI device */

    #include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>

    ...

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        dc-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
        spi-dev = <&spi0>;
        #address-cells = <1>;
        #size-cells = <0>;

        gc9a01: gc9a01@0 {
            status = "okay";
            compatible = "galaxycore,gc9x01x";
            reg = <0>;
            mipi-max-frequency = <100000000>;
            ...
        };
    };


* ST7735R based displays now use the MIPI DBI driver class. These displays
  must now be declared within a MIPI DBI driver wrapper device, which will
  manage interfacing with the display. Note that the ``cmd-data-gpios`` pin has
  changed polarity with this update, to align better with the new
  ``dc-gpios`` name. For an example, see below:

  .. code-block:: devicetree

    /* Legacy ST7735R display definition */
    &spi0 {
        st7735r: st7735r@0 {
            compatible = "sitronix,st7735r";
            reg = <0>;
            spi-max-frequency = <32000000>;
            reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            cmd-data-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            ...
        };
    };

    /* New display definition with MIPI DBI device */

    #include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>

    ...

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
        dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        spi-dev = <&spi0>;
        #address-cells = <1>;
        #size-cells = <0>;

        st7735r: st7735r@0 {
            compatible = "sitronix,st7735r";
            reg = <0>;
            mipi-max-frequency = <32000000>;
            mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
            ...
        };
    };

* UC81XX based displays now use the MIPI DBI driver class. These displays must
  now be declared within a MIPI DBI driver wrapper device, which will manage
  interfacing with the display. (:github:`73812`) Note that the ``dc-gpios``
  pin has changed polarity with this update, for an example, see below:

  .. code-block:: devicetree

    /* Legacy UC81XX display definition */
    &spi0 {
        uc8179: uc8179@0 {
            compatible = "ultrachip,uc8179";
            reg = <0>;
            spi-max-frequency = <4000000>;
            reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            dc-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            ...
        };
    };

    /* New display definition with MIPI DBI device */

    #include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>

    ...

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
        dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        spi-dev = <&spi0>;
        #address-cells = <1>;
        #size-cells = <0>;
        uc8179: uc8179@0 {
            compatible = "ultrachip,uc8179";
            reg = <0>;
            mipi-max-frequency = <4000000>;
            ...
        };
    };

* ST7789V based displays now use the MIPI DBI driver class. These displays
  must now be declared within a MIPI DBI driver wrapper device, which will
  manage interfacing with the display. (:github:`73750`) Note that the
  ``cmd-data-gpios`` pin has changed polarity with this update, to align better
  with the new ``dc-gpios`` name. For an example, see below:

  .. code-block:: devicetree

    /* Legacy ST7789V display definition */
    &spi0 {
        st7789: st7789@0 {
            compatible = "sitronix,st7789v";
            reg = <0>;
            spi-max-frequency = <32000000>;
            reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            cmd-data-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            ...
        };
    };

    /* New display definition with MIPI DBI device */

    #include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>

    ...

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
        dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        spi-dev = <&spi0>;
        #address-cells = <1>;
        #size-cells = <0>;

        st7789: st7789@0 {
            compatible = "sitronix,st7789v";
            reg = <0>;
            mipi-max-frequency = <32000000>;
            mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
            ...
        };
    };

* SSD16XX based displays now use the MIPI DBI driver class (:github:`73946`).
  These displays must now be declared within a MIPI DBI driver wrapper device,
  which will manage interfacing with the display. Note that the ``dc-gpios``
  pin has changed polarity with this update. For an example, see below:

  .. code-block:: devicetree

    /* Legacy SSD16XX display definition */
    &spi0 {
        ssd1680: ssd1680@0 {
            compatible = "solomon,ssd1680";
            reg = <0>;
            spi-max-frequency = <4000000>;
            reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            dc-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            ...
        };
    };

    /* New display definition with MIPI DBI device */

    #include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>

    ...

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
        dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        spi-dev = <&spi0>;
        #address-cells = <1>;
        #size-cells = <0>;

        ssd1680: ssd1680@0 {
            compatible = "solomon,ssd1680";
            reg = <0>;
            mipi-max-frequency = <4000000>;
            ...
        };
    };

* The ``orientation-flipped`` property has been removed from the SSD16XX
  display driver, as the driver now supports display rotation. Users should
  drop this property from their devicetree, and set orientation at runtime
  via :c:func:`display_set_orientation` (:github:`73360`)

Enhanced Serial Peripheral Interface (eSPI)
===========================================

* The macros ``ESPI_SLAVE_TO_MASTER`` and ``ESPI_MASTER_TO_SLAVE`` were renamed to
  ``ESPI_TARGET_TO_CONTROLLER`` and ``ESPI_CONTROLLER_TO_TARGET`` respectively to reflect
  the new terminology in eSPI 1.5 specification.
  The enum values ``ESPI_VWIRE_SIGNAL_SLV_BOOT_STS``, ``ESPI_VWIRE_SIGNAL_SLV_BOOT_DONE`` and
  all ``ESPI_VWIRE_SIGNAL_SLV_GPIO_<NUMBER>`` signals were renamed to
  ``ESPI_VWIRE_SIGNAL_TARGET_BOOT_STS``, ``ESPI_VWIRE_SIGNAL_TARGET_BOOT_DONE`` and
  ``ESPI_VWIRE_SIGNAL_TARGET_GPIO_<NUMBER>`` respectively to reflect the new terminology
  in eSPI 1.5 specification. (:github:`68492`)
  The Kconfig ``CONFIG_ESPI_SLAVE`` was renamed to  :kconfig:option:`CONFIG_ESPI_TARGET`, similarly
  ``CONFIG_ESPI_SAF`` was renamed as :kconfig:option:`CONFIG_ESPI_TAF` (:github:`73887`)

GNSS
====

* Basic power management support has been added to the ``gnss-nmea-generic`` driver.
  If ``CONFIG_PM_DEVICE=y`` the driver is now initialized in suspended mode and the
  application needs to call :c:func:`pm_device_action_run` with :c:macro:`PM_DEVICE_ACTION_RESUME`
  to start up the driver. (:github:`71774`)

Input
=====

* The ``analog-axis`` deadzone calibration value has been changed to be
  relative to the raw ADC values, similarly to min and max. The data structures
  and properties have been renamed to reflect that (from ``out-deadzone`` to
  ``in-deadzone``) and when migrating to the new definition the value should be
  scaled accordingly. (:github:`70377`)

* The ``holtek,ht16k33-keyscan`` driver has been converted to use the
  :ref:`input` subsystem, callbacks have to be migrated to use the input APIs,
  :dtcompatible:`zephyr,kscan-input` can be used for backward compatibility. (:github:`69875`)

Interrupt Controller
====================

* The static auto-generation of the multilevel interrupt controller lookup table has been
  deprecated, and will be compiled only when the new compatibility Kconfig:
  :kconfig:option:`CONFIG_LEGACY_MULTI_LEVEL_TABLE_GENERATION` is enabled, which will eventually
  be removed in the coming releases.

  Multi-level interrupt controller drivers should be updated to use the newly created
  ``IRQ_PARENT_ENTRY_DEFINE`` macro to register itself with the new multi-level interrupt
  architecture. To make the macro easier to use, ``INTC_INST_ISR_TBL_OFFSET`` macro is made to
  deduce the software ISR table offset for a given driver instance, for pseudo interrupt controller
  child, use the ``INTC_CHILD_ISR_TBL_OFFSET`` macro instead. New devicetree macros
  (``DT_INTC_GET_AGGREGATOR_LEVEL`` & ``DT_INST_INTC_GET_AGGREGATOR_LEVEL``) have been added
  for an interrupt controller driver instance to pass its aggregator level into the
  ``IRQ_PARENT_ENTRY_DEFINE`` macro.

LED Strip
=========

* The property ``in-gpios`` defined in :dtcompatible:`worldsemi,ws2812-gpio` has been
  renamed to ``gpios``. (:github:`68514`)

* The ``chain-length`` and ``color-mapping`` properties have been added to all LED strip bindings
  and are now mandatory.

* Added a new mandatory ``length`` function which returns the length (number of pixels) of an LED
  strip device.

* Made ``update_channels`` function optional and removed unimplemented functions.

* The ``CONFIG_WS2812_STRIP_DRIVER`` kconfig option has been removed.
  Previously, when using :kconfig:option:`CONFIG_WS2812_STRIP_SPI`,
  :kconfig:option:`CONFIG_WS2812_STRIP_I2S`, :kconfig:option:`CONFIG_WS2812_STRIP_GPIO`,
  or :kconfig:option:`CONFIG_WS2812_STRIP_RPI_PICO_PIO`, one of them had to be selected with
  ``CONFIG_WS2812_STRIP_DRIVER``, but this is no longer necessary. Please set each option directly.

MDIO
====

* :kconfig:option:`CONFIG_MDIO_NXP_ENET_TIMEOUT` is now in units of
  microseconds instead of milliseconds. (:github:`75625`)

Sensors
=======

* The ``chip`` devicetree property from the :dtcompatible:`sensirion,shtcx` sensor driver has been
  removed. Chip variants are now selected using the matching compatible property (:github:`74033`).
  For an example of the new shtc3 configuration, see below:

  .. code-block:: devicetree

    &i2c0 {
        status = "okay";

        shtc3: shtc3@70 {
            compatible = "sensirion,shtc3", "sensirion,shtcx";
            reg = <0x70>;
            measure-mode = "normal";
            clock-stretching;
        };
    };

Serial
======

* The Raspberry Pi UART driver ``uart_rpi_pico`` has been removed.
  Use ``uart_pl011`` (:dtcompatible:`arm,pl011`) instead. (:github:`71074`)

Regulator
=========

* The :dtcompatible:`nxp,vref` driver no longer supports the ground selection function,
  as this setting should not be modified by the user. The DT property ``nxp,ground-select``
  has been removed, users should remove this property from their devicetree if it is present.
  (:github:`70642`)

W1
==

* The :dtcompatible:`zephyr,w1-gpio` 1-Wire master driver no longer defaults to enabling the
  internal pull-up resistor of the GPIO pin. The configuration is now taken from the pin's
  configuration flags specified in devicetree. (:github:`71789`)

Watchdog
========

* The ``nuvoton,npcx-watchdog`` driver has been changed to extend the max timeout period.
  The time of one watchdog count varies with the different pre-scalar settings.
  Removed :kconfig:option:`CONFIG_WDT_NPCX_DELAY_CYCLES` because it is no longer suitable to
  set the leading warning time.
  Instead, added the :kconfig:option:`CONFIG_WDT_NPCX_WARNING_LEADING_TIME_MS` to set
  the leading warning time in milliseconds.

Bluetooth
*********

Bluetooth HCI
=============

 * A new HCI driver API was introduced (:github:`72323`) and the old one deprecated. The new API
   follows the normal Zephyr driver model, with devicetree nodes, etc. The host now
   selects which driver instance to use as the controller by looking for a ``zephyr,bt-hci``
   chosen property. The devicetree bindings for all HCI drivers derive from a common
   ``bt-hci.yaml`` base binding.

  * As part of the new HCI driver API, the ``zephyr,bt-uart`` chosen property is no longer used,
    rather the UART HCI drivers select their UART by looking for the parent devicetree node of the
    HCI driver instance node.
  * As part of the new HCI driver API, the ``zephyr,bt-hci-ipc`` chosen property is only used for
    the controller side, whereas the HCI driver now relies on nodes with the compatible string
    ``zephyr,bt-hci-ipc``.
  * The ``BT_NO_DRIVER`` Kconfig option was removed. HCI drivers are no-longer behind a Kconfig
    choice, rather they can now be enabled and disabled independently, mostly based on their
    respective devicetree node being enabled or not.
  * The ``BT_HCI_VS_EXT`` Kconfig option was deleted and the feature is now included in the
    :kconfig:option:`CONFIG_BT_HCI_VS` Kconfig option.
  * The ``BT_HCI_VS_EVT`` Kconfig option was removed, since vendor event support is implicit if
    the :kconfig:option:`CONFIG_BT_HCI_VS` option is enabled.
  * The bt_read_static_addr() API was removed. This wasn't really a completely public API, but
    since it was exposed by the public hci_driver.h header file the removal is mentioned here.
    Enable the :kconfig:option:`CONFIG_BT_HCI_VS` Kconfig option instead, and use vendor specific
    HCI commands API to get the Controller's Bluetooth static address when available.

Bluetooth Mesh
==============

* The model metadata pointer declaration of :c:struct:`bt_mesh_model` has been changed
  to add ``const`` qualifiers. The data pointer of :c:struct:`bt_mesh_models_metadata_entry`
  got ``const`` qualifier too. The model's metadata structure and metadata raw value
  can be declared as permanent constants in the non-volatile memory. (:github:`69679`)

* The model metadata pointer declaration of :c:struct:`bt_mesh_model` has been changed
  to a single ``const *`` and redundant metadata pointer from :c:struct:`bt_mesh_health_srv`
  is removed. Consequently, :code:`BT_MESH_MODEL_HEALTH_SRV` definition is changed
  to use variable argument notation. Now, when your implementation
  supports :kconfig:option:`CONFIG_BT_MESH_LARGE_COMP_DATA_SRV` and when you need to
  specify metadata for Health Server model, simply pass metadata as the last argument
  to the :code:`BT_MESH_MODEL_HEALTH_SRV` macro, otherwise omit the last argument. (:github:`71281`)

Bluetooth Audio
===============

* :kconfig:option:`CONFIG_BT_ASCS`, :kconfig:option:`CONFIG_BT_PERIPHERAL` and
  :kconfig:option:`CONFIG_BT_ISO_PERIPHERAL` are no longer enabled automatically when
  enabling :kconfig:option:`CONFIG_BT_BAP_UNICAST_SERVER`, and these must now be set explicitly
  in the project configuration file. (:github:`71993`)

* The discover callback functions :code:`bt_cap_initiator_cb.unicast_discovery_complete` and
  :code:`bt_cap_commander_cb.discovery_complete` for CAP now contain an additional parameter for
  the set member.
  This needs to be added to all instances of CAP discovery callback functions defined.
  (:github:`72797`)

* :c:func:`bt_bap_stream_start` no longer connects the CIS. To connect the CIS,
  the :c:func:`bt_bap_stream_connect` shall now be called before :c:func:`bt_bap_stream_start`.
  (:github:`73032`)

* Renamed ``stream_lang`` to just ``lang`` to better fit with the assigned numbers document.
  This affects the ``BT_AUDIO_METADATA_TYPE_LANG`` macro and the following functions:

  * :c:func:`bt_audio_codec_cap_meta_set_lang`
  * :c:func:`bt_audio_codec_cap_meta_get_lang`
  * :c:func:`bt_audio_codec_cfg_meta_set_lang`
  * :c:func:`bt_audio_codec_cfg_meta_get_lang`

  (:github:`72584`)

* Changed ``lang`` from ``uint32_t`` to ``uint8_t [3]``. This modifies the following functions:

  * :c:func:`bt_audio_codec_cap_meta_set_lang`
  * :c:func:`bt_audio_codec_cap_meta_get_lang`
  * :c:func:`bt_audio_codec_cfg_meta_set_lang`
  * :c:func:`bt_audio_codec_cfg_meta_get_lang`

  The result of this is that string values such as ``"eng"`` and ``"deu"`` can now be used to set
  new values, and to prevent unnecessary copies of data when getting the values. (:github:`72584`)

* All occurrences of ``set_sirk`` have been changed to just ``sirk`` as the ``s`` in ``sirk`` stands
  for set. (:github:`73413`)

* Added ``fallback_to_default`` parameter to :c:func:`bt_audio_codec_cfg_get_chan_allocation`.
  To maintain existing behavior set the parameter to ``false``. (:github:`72090`)

* Added ``fallback_to_default`` parameter to
  :c:func:`bt_audio_codec_cap_get_supported_audio_chan_counts`.
  To maintain existing behavior set the parameter to ``false``. (:github:`72090`)

* Added ``fallback_to_default`` parameter to
  :c:func:`bt_audio_codec_cap_get_max_codec_frames_per_sdu`.
  To maintain existing behavior set the parameter to ``false``. (:github:`72090`)

* Added ``fallback_to_default`` parameter to
  :c:func:`bt_audio_codec_cfg_meta_get_pref_context`.
  To maintain existing behavior set the parameter to ``false``. (:github:`72090`)

Bluetooth Classic
=================

* The source files of Host BR/EDR have been moved to ``subsys/bluetooth/host/classic``.
  The Header files of Host BR/EDR have been moved to ``include/zephyr/bluetooth/classic``.
  Removed the :kconfig:option:`CONFIG_BT_BREDR`. It is replaced by new option
  :kconfig:option:`CONFIG_BT_CLASSIC`. (:github:`69651`)

Bluetooth Host
==============

* The advertiser options :code:`BT_LE_ADV_OPT_USE_NAME` and :code:`BT_LE_ADV_OPT_FORCE_NAME_IN_AD`
  are deprecated in this release. The application need to include the device name explicitly. One
  way to do it is by adding the following to the advertising data or scan response data passed to
  the host:

  .. code-block:: c

   BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1)

  (:github:`71686`)

* The field :code:`init_credits` in :c:type:`bt_l2cap_le_endpoint` has been removed as it was no
  longer used in Zephyr 3.4.0 and later. Any references to this field should be removed. No further
  action is needed.

* :c:macro:`BT_LE_ADV_PARAM` now returns a :code:`const` pointer.
  Any place where the result is stored in a local variable such as
  :code:`struct bt_le_adv_param *param = BT_LE_ADV_CONN;` will need to
  be updated to :code:`const struct bt_le_adv_param *param = BT_LE_ADV_CONN;` or use it for
  initialization like :code:`struct bt_le_adv_param param = *BT_LE_ADV_CONN;`

  The change to :c:macro:`BT_LE_ADV_PARAM` also affects all of its derivatives, including but not
  limited to:

  * :c:macro:`BT_LE_ADV_CONN`
  * :c:macro:`BT_LE_ADV_NCONN`
  * :c:macro:`BT_LE_EXT_ADV_SCAN`
  * :c:macro:`BT_LE_EXT_ADV_CODED_NCONN_NAME`

  (:github:`75065`)

* :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` now needs to be larger than
  :kconfig:option:`CONFIG_BT_MAX_CONN`. This was always the case due to the design of the HCI
  interface. It is now being enforced through a build-time assertion.

  (:github:`75592`)

Bluetooth Crypto
================

* :kconfig:option:`CONFIG_BT_USE_PSA_API` was added to explicitly request use
  of PSA APIs instead of TinyCrypt for crypto operations. Of course, this is
  possible only a PSA crypto provider available in the system, i.e.
  :kconfig:option:`CONFIG_PSA_CRYPTO_CLIENT` is set. (:github:`73378`)

Networking
**********

* Deprecate the :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` option. It is a legacy option
  and was used to allow user to call BSD socket API while not enabling POSIX API.
  This could cause complications when building applications that wanted to enable the
  :kconfig:option:`CONFIG_POSIX_API` option. This means that if the application wants to use
  normal BSD socket interface, then it needs to enable :kconfig:option:`CONFIG_POSIX_API`.
  If the application does not want or is not able to enable that option, then the socket API
  calls need to be prefixed by a ``zsock_`` string.
  All the sample applications that use BSD socket interface are changed to enable
  :kconfig:option:`CONFIG_POSIX_API`. Internally the network stack will not enable POSIX API
  option which means that various network libraries that use sockets, are converted to
  use the ``zsock_*`` API calls. (:github:`69950`)

* The zperf zperf_results struct is changed to support 64 bits transferred bytes (total_len)
  and test duration (time_in_us and client_time_in_us), instead of 32 bits. This will make
  the long-duration zperf test show with correct throughput result. (:github:`69500`)

* Each IPv4 address assigned to a network interface has an IPv4 netmask
  tied to it instead of being set for the whole interface.
  If there is only one IPv4 address specified for a network interface,
  nothing changes from the user point of view. But, if there is more than
  one IPv4 address / network interface, the netmask must be specified
  for each IPv4 address separately. (:github:`68419`)

* Virtual network interface API no longer has the ``input`` callback. The input callback was
  used to read the inner IPv4/IPv6 packets in an IP tunnel. This incoming tunnel read is now
  implemented in the ``recv`` callback. (:github:`70549`)

* Virtual LAN (VLAN) implementation is changed to use the Virtual network interfaces.
  There are no API changes, but the type of a VLAN network interface is changed from ``ETHERNET``
  to ``VIRTUAL``. This could require changes to the code that sets the VLAN tags to a network
  interface. For example in the :c:func:`net_eth_is_vlan_enabled()` API, the 2nd interface parameter
  must point to the main Ethernet interface, and not to the VLAN interface. (:github:`70345`)

* Modified the ``wifi connect`` command to use key-value format for the arguments. In the
  previous implementation, we were identifying an option using its position in the argument string.
  This made it difficult to deal with optional arguments or extending the support
  for other options. Having this key-value format makes it easier to extend the options that
  can be passed to the connect command.
  ``wifi -h`` will give more information about the usage of connect command.
  (:github:`70024`)

* The Kconfig :kconfig:option:`CONFIG_NET_TCP_ACK_TIMEOUT` has been deprecated. Its usage was
  limited to TCP handshake only, and in such case the total timeout should depend
  on the total retransmission timeout (as in other cases) making the config
  redundant and confusing. Use :kconfig:option:`CONFIG_NET_TCP_INIT_RETRANSMISSION_TIMEOUT` and
  :kconfig:option:`CONFIG_NET_TCP_RETRY_COUNT` instead to control the total timeout at the
  TCP level. (:github:`70731`)

* In LwM2M API, the callback type :c:type:`lwm2m_engine_set_data_cb_t` has now an additional
  parameter ``offset``. This parameter is used to indicate the offset of the data
  during a Coap Block-wise transfer. Any post write, validate or some firmware callbacks
  should be updated to include this parameter. (:github:`72590`)

* The DNS resolver and mDNS/LLMNR responders are converted to use socket service API.
  This means that the number of pollable sockets in the system might need to be increased.
  Please check that the values ``CONFIG_NET_SOCKETS_POLL_MAX`` and
  :kconfig:option:`CONFIG_POSIX_MAX_FDS` are high enough. Unfortunately no exact values
  for these can be given as it depends on application needs and usage. (:github:`72834`)

* The packet socket (type ``AF_PACKET``) protocol field in ``socket`` API call has changed.
  The protocol field should be in network byte order so that we are compatible with Linux
  socket calls. Linux expects the protocol field to be ``htons(ETH_P_ALL)`` if it is desired
  to receive all the network packets. See details in
  https://www.man7.org/linux/man-pages/man7/packet.7.html documentation. (:github:`73338`)

* TCP now uses SHA-256 instead of MD5 for ISN generation. The crypto support for
  this hash computation was also changed from Mbed TLS to PSA APIs. This was achieved
  by making :kconfig:option:`CONFIG_NET_TCP_ISN_RFC6528` depend on
  :kconfig:option:`PSA_WANT_ALG_SHA_256` instead of legacy ``CONFIG_MBEDTLS_*``
  features. (:github:`71827`)

Other Subsystems
****************

Flash map
=========

* The crypto backend for the flash check functions (:kconfig:option:`CONFIG_FLASH_AREA_CHECK_INTEGRITY_BACKEND`),
  previously provided through either TinyCrypt or Mbed TLS, is now provided through either PSA or Mbed TLS.
  The updated Mbed TLS implementation has a slightly smaller footprint than the previous TinyCrypt one,
  and the PSA implementation offers an even greater footprint reduction for devices built with TF-M.
  PSA is the supported way forward, however as of now you may still use Mbed TLS if you cannot afford the
  one-time cost of enabling the PSA API (:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_C` for devices without TF-M).
  :github:`73511`

hawkBit
=======

* :kconfig:option:`CONFIG_HAWKBIT_PORT` is now an int instead of a string.
  :kconfig:option:`CONFIG_SETTINGS` needs to be enabled to use hawkBit, as it now uses the
  settings subsystem to store the hawkBit configuration. (:github:`68806`)

MCUmgr
======

* The support for SHA-256 (when using checksum/hash functions), previously provided
  by either TinyCrypt or Mbed TLS, is now provided by either PSA or Mbed TLS.
  PSA is the recommended API going forward, however, if it is not already enabled
  (:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT`) and you have tight code size
  constraints, you may be able to save 1.3 KB by using Mbed TLS instead.

Modem
=====

* The ``CONFIG_MODEM_CHAT_LOG_BUFFER`` Kconfig option was
  renamed to :kconfig:option:`CONFIG_MODEM_CHAT_LOG_BUFFER_SIZE`. (:github:`70405`)

.. _zephyr_3.7_posix_api_migration:

POSIX API
=========

* The :ref:`POSIX API Kconfig deprecations <zephyr_3.7_posix_api_deprecations>` may require
  changes to Kconfig files (``prj.conf``, etc), as outlined in the release notes. A more automated
  approach is available via the provided migration script. Simply run the following:

  .. code-block:: bash

    $ python ${ZEPHYR_BASE}/scripts/utils/migrate_posix_kconfigs.py -r root_path

State Machine Framework
=======================

* The :c:macro:`SMF_CREATE_STATE` macro now always takes 5 arguments. The amount of arguments is
  now independent of the values of :kconfig:option:`CONFIG_SMF_ANCESTOR_SUPPORT` and
  :kconfig:option:`CONFIG_SMF_INITIAL_TRANSITION`. If the additional arguments are not used, they
  have to be set to ``NULL``. (:github:`71250`)
* SMF now follows a more UML-like transition flow when the transition source is a parent of the
  state called by :c:func:`smf_run_state`. Exit actions up to (but not including) the Least Common
  Ancestor of the transition source and target state will be executed, as will entry actions from
  (but not including) the LCA down to the target state. (:github:`71675`)
* Previously, calling :c:func:`smf_set_state` with a ``new_state`` set to NULL would execute all
  exit actions from the current state to the topmost parent, with the expectation the topmost exit
  action would terminate the state machine. Passing ``NULL`` is now not allowed. Instead create a
  'terminate' state at the top level, and call :c:func:`smf_set_terminate` from its entry action.

UpdateHub
=========

* The SHA-256 implementation used to perform integrity checks is not chosen with
  :kconfig:option:`CONFIG_FLASH_AREA_CHECK_INTEGRITY_BACKEND` anymore. Instead, the implementation
  used (now either Mbed TLS or PSA) is chosen based on :kconfig:option:`CONFIG_PSA_CRYPTO_CLIENT`.
  It still defaults to using Mbed TLS (with a smaller footprint than previously) unless the
  board is built with TF-M or :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_C` is enabled. (:github:`73511`)

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

* Function :c:func:`arch_start_cpu` has been renamed to :c:func:`arch_cpu_start`. (:github:`64987`)

* ``CONFIG_ARM64_ENABLE_FRAME_POINTER`` is deprecated. Use :kconfig:option:`CONFIG_FRAME_POINTER`
  instead. (:github:`72646`)

* x86

  * Kconfigs ``CONFIG_DISABLE_SSBD`` and ``CONFIG_ENABLE_EXTENDED_IBRS``
    are deprecated. Use :kconfig:option:`CONFIG_X86_DISABLE_SSBD` and
    :kconfig:option:`CONFIG_X86_ENABLE_EXTENDED_IBRS` instead. (:github:`69690`)

* POSIX arch:

  * LLVM fuzzing support has been refactored. A test application now needs to provide its own
    ``LLVMFuzzerTestOneInput()`` hook instead of relying on a board provided one. Check
    ``samples/subsys/debug/fuzz/`` for an example. (:github:`71378`)

---

### Doc Releases Migration Guide 4.0 (`doc/releases/migration-guide-4.0.rst`)

:orphan:

.. _migration_4.0:

Migration guide to Zephyr v4.0.0
################################

This document describes the changes required when migrating your application from Zephyr v3.7.0 to
Zephyr v4.0.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.0>`.

.. contents::
    :local:
    :depth: 2

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

* Removed the ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` Kconfig option as ``west sign`` is no
  longer called by the build system when signing images for MCUboot.

* The imgtool part of ``west sign`` has been deprecated, options to be supplied to imgtool when
  signing should be set in :kconfig:option:`CONFIG_MCUBOOT_EXTRA_IMGTOOL_ARGS` instead.

Kernel
******

* Removed the deprecated :kconfig:option:`CONFIG_MP_NUM_CPUS`, application should be updated to use
  :kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` instead.

Boards
******

* ``native_posix`` has been deprecated in favour of
  :zephyr:board:`native_sim<native_sim>` (:github:`76898`).
* Nordic nRF53 and nRF91 based boards can use the common devicetree overlays in ``dts/common/nordic``
  to define default flash and ram partitioning based on TF-M.

* STM32WBA: The command used for fetching blobs required to build ble applications is now
  ``west blobs fetch hal_stm32`` instead of ``west blobs fetch stm32``.

* Board ``qemu_xtensa`` is deprecated. Use ``qemu_xtensa/dc233c`` instead.

Devicetree
**********

* The :c:macro:`DT_REG_ADDR` macro and its variants are now expanding into an
  unsigned literals (i.e. with a ``U`` suffix). To use addresses as devicetree
  indexes use the :c:macro:`DT_REG_ADDR_RAW` variants.
* The :c:macro:`DT_REG_SIZE` macro and its variants are also expanding into
  unsigned literals, no raw variants are provided at this stage.

STM32
=====

* On all official STM32 boards, ``west flash`` selects STM32CubeProgrammer as the default west runner.
  If you want to enforce the selection of another runner like OpenOCD or pyOCD for flashing, you should
  specify it using the west ``--runner`` or ``-r`` option. (:github:`75284`)
* ADC: Domain clock needs to be explicitly defined if property st,adc-clock-source = <ASYNC> is used.

Modules
*******

Mbed TLS
========

* The Kconfig options ``CONFIG_MBEDTLS_TLS_VERSION_1_0`` and ``CONFIG_MBEDTLS_TLS_VERSION_1_1``
  have been removed because Mbed TLS doesn't support TLS 1.0 and 1.1 anymore since v3.0. (:github:`76833`)
* The following Kconfig symbols were renamed (:github:`76408`):
  * ``CONFIG_MBEDTLS_ENTROPY_ENABLED`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_C`,
  * ``CONFIG_MBEDTLS_ZEPHYR_ENTROPY`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`.

* The Kconfig option ``CONFIG_MBEDTLS_SSL_EXPORT_KEYS`` was removed because the
  corresponding build symbol was removed in Mbed TLS 3.1.0 and is now assumed to
  be enabled. (:github:`77657`)

TinyCrypt
=========

Albeit the formal deprecation of TinyCrypt is not started yet, its removal from
the Zephyr codebase is. Formal deprecation will happen in the next release.

Trusted Firmware-M
==================

* The security counter used for the hardware rollback protection now comes explicitly from
  :kconfig:option:`CONFIG_TFM_IMAGE_SECURITY_COUNTER`, instead of being automatically determined from
  the image version. This has been changed as the implicit counter calculation is incompatible with
  versions larger than ``0.0.1024`` (:github:`78128`).

LVGL
====

zcbor
=====

* Updated the zcbor library to version 0.9.0.
  Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md
  Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md
  Migration guide copied here:

  * ``zcbor_simple_*()`` functions have been removed to avoid confusion about their use.
    They are still in the C file because they are used by other functions.
    Instead, use the specific functions for the currently supported simple values, i.e.
    ``zcbor_bool_*()``, ``zcbor_nil_*()``, and ``zcbor_undefined_*()``.
    If a removed variant is strictly needed, add your own forward declaration in your code.

  * Code generation naming:

    * More C keywords are now capitalized to avoid naming collision.
      You might have to capitalize some instances if your code was generated to have those names.

    * A fix was made to the naming of bstr elements with a .size specifier, which might mean that these elements change name in your code when you regenerate.

Device Drivers and Devicetree
*****************************

* The ``compatible`` of the LiteX ethernet controller has been renamed from
  ``litex,eth0`` to :dtcompatible:`litex,liteeth`. (:github:`75433`)

* The ``compatible`` of the LiteX uart controller has been renamed from
  ``litex,uart0`` to :dtcompatible:`litex,uart`. (:github:`74522`)

* The devicetree bindings for the Microchip ``mcp23xxx`` series have been split up. Users of
  ``microchip,mcp230xx`` and ``microchip,mcp23sxx`` should change their devicetree ``compatible``
  values to the specific chip variant, e.g. :dtcompatible:`microchip,mcp23017`.
  The ``ngpios`` devicetree property has been removed, since it is implied by the model name.
  Chip variants with open-drain outputs (``mcp23x09``, ``mcp23x18``) now correctly reflect this in
  their driver API, users of these devices should ensure they pass appropriate values to
  :c:func:`gpio_pin_set`. (:github:`65797`)

* The ``power-domain`` property has been removed in favor of ``power-domains``.
  The new property allows to add more than one power domain.
  ``power-domain-names`` is also available to optionally name each entry in
  ``power-domains``. The number of cells in the ``power-domains`` property need
  to be defined using ``#power-domain-cells``.

Analog Digital Converter (ADC)
==============================

* For all STM32 ADC that selects an asynchronous clock through ``st,adc-clock-source`` property,
  it is now mandatory to also explicitly define a domain clock source using the ``clock`` property.

Clock control
=============

* LFXO/HFXO (High/Low Frequency Crystal Oscillator) present in nRF53 series can
  now be configured using devicetree. The Kconfig options
  :kconfig:option:`CONFIG_SOC_ENABLE_LFXO`,
  :kconfig:option:`CONFIG_SOC_LFXO_CAP_EXTERNAL`,
  :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_6PF`,
  :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_7PF`,
  :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_9PF`,
  :kconfig:option:`CONFIG_SOC_HFXO_CAP_DEFAULT`,
  :kconfig:option:`CONFIG_SOC_HFXO_CAP_EXTERNAL`,
  :kconfig:option:`CONFIG_SOC_HFXO_CAP_INTERNAL` and
  :kconfig:option:`CONFIG_SOC_HFXO_CAP_INT_VALUE_X2` have been deprecated.

  LFXO can now be configured like this:

  .. code-block:: devicetree

     /* use external capacitors */
     &lfxo {
           load-capacitors = "external";
     };

     /* use internal capacitors (value needs to be selected: 6, 7, 9pF)
     &lfxo {
           load-capacitors = "internal";
           load-capacitance-picofarad = <...>;
     };

  HFXO can now be configured like this:

  .. code-block:: devicetree

     /* use external capacitors */
     &hfxo {
           load-capacitors = "external";
     };

     /* use internal capacitors (value needs to be selected: 7pF...20pF in 0.5pF
      * steps, units: femtofarads)
      */
     &hfxo {
           load-capacitors = "internal";
           load-capacitance-femtofarad = <...>;
     };

Crypto
======

* Following the deprecation of the TinyCrypt library (:github:`79566`), the
  TinyCrypt-based shim driver was marked as deprecated (:github:`79653`).

Disk
====

* The SDMMC subsystem driver now requires a ``disk-name`` property be supplied
  with the definition of the disk, which is used when registering the
  SD device with the disk subsystem. This permits multiple SD devices to be
  registered simultaneously. If unsure, ``disk-name = "SD"`` may be used
  as a sane default.

* The MMC subsystem driver now requires a ``disk-name`` property be supplied
  with the definition of the disk, which is used when registering the
  MMC device with the disk subsystem. This permits multiple MMC devices to be
  registered simultaneously. If unsure, ``disk-name = "SD2"`` may be used
  as a sane default.


Enhanced Serial Peripheral Interface (eSPI)
===========================================

GNSS
====

* The u-blox M10 driver has been renamed to M8 as it only supports M8 based devices.
  Existing devicetree compatibles should be updated to :dtcompatible:`u-blox,m8`, and Kconfig
  symbols swapped to :kconfig:option:`CONFIG_GNSS_U_BLOX_M8`.

* The APIs :c:func:`gnss_set_periodic_config` and :c:func:`gnss_get_periodic_config` have
  been removed. (:github:`76392`)

Input
=====

* :c:macro:`INPUT_CALLBACK_DEFINE` has now an extra ``user_data`` void pointer
  argument that can be used to reference any user data structure. To restore
  the current behavior it can be set to ``NULL``. A ``void *user_data``
  argument has to be added to the callback function arguments.

* The :dtcompatible:`analog-axis` ``invert`` property has been renamed to
  ``invert-input`` (there's now an ``invert-output`` available as well).

PWM
===

* The Raspberry Pi Pico PWM driver now configures frequency adaptively.
  This has resulted in a change in how device tree parameters are handled.
  If the :dtcompatible:`raspberry,pico-pwm`'s ``divider-int-0`` or variations
  for each channel are specified, or if these are set to 0,
  the driver dynamically configures the division ratio by specified cycles.
  The driver will operate at the specified division ratio if a non-zero value is
  specified for ``divider-int-0``.
  This is unchanged from previous behavior.
  Please specify ``divider-int-0`` explicitly to make the same behavior as before.

SDHC
====

* The NXP USDHC driver now assumes a card is present if no card detect method
  is configured, instead of using the peripheral's internal card detect signal
  to check for card presence. To use the internal card detect signal, the
  devicetree property ``detect-cd`` should be added to the USDHC node in use.

Sensors
=======

* The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed
  to support all JEDEC JC 42.4 compatible temperature sensors. It now uses the
  :dtcompatible:`jedec,jc-42.4-temp` compatible string instead to the ``microchip,mcp9808`` string.
* The :dtcompatible:`current-sense-amplifier` sense resistor is now specified in milli-ohms
  (``sense-resistor-milli-ohms``) instead of micro-ohms in order to increase the maximum representable
  resistor from 4.2k to 4.2M.
* The :dtcompatible:`current-sense-amplifier` properties ``sense-gain-mult`` and ``sense-gain-div``
  are now limited to a maximum value of ``UINT16_MAX`` to enable smaller rounding errors in internal
  calculations.

* The ``nxp,`` prefixed properties in :dtcompatible:`nxp,kinetis-acmp` have been deprecated in favor
  of properties without the prefix. The sensor based driver for the :dtcompatible:`nxp,kinetis-acmp`
  has been updated to support both the new and deprecated property names. Uses of the deprecated
  property names should be updated to the new property names.

Serial
======

 * Users of :c:func:`uart_irq_tx_ready` now need to check for ``ret > 0`` to ensure that the FIFO
   can accept data bytes, instead of ``ret == 1``. The function now returns a lower bound on the
   number of bytes that can be provided to :c:func:`uart_fifo_fill` without truncation.

 * LiteX: ``CONFIG_UART_LITEUART`` has been renamed to :kconfig:option:`CONFIG_UART_LITEX`.

Regulator
=========

* Internal regulators present in nRF52/53 series can now be configured using
  devicetree. The Kconfig options :kconfig:option:`CONFIG_SOC_DCDC_NRF52X`,
  :kconfig:option:`CONFIG_SOC_DCDC_NRF52X_HV`,
  :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_APP`,
  :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_NET` and
  :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_HV` selected by board-level Kconfig
  options have been deprecated.

  Example for nRF52 series:

  .. code-block:: devicetree

      /* configure REG/REG1 in DC/DC mode */
      &reg/reg1 {
          regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
      };

      /* enable REG0 (HV mode) */
      &reg0 {
          status = "okay";
      };

  Example for nRF53 series:

  .. code-block:: devicetree

      /* configure VREGMAIN in DC/DC mode */
      &vregmain {
          regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
      };

      /* configure VREGRADIO in DC/DC mode */
      &vregradio {
          regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
      };

      /* enable VREGH (HV mode) */
      &vregh {
          status = "okay";
      };

Bluetooth
*********

Bluetooth HCI
=============

* The ``bt-hci-bus`` and ``bt-hci-quirks`` devicetree properties for HCI bindings have been changed
  to use lower-case strings without the ``BT_HCI_QUIRK_`` and ``BT_HCI_BUS_`` prefixes.
* The Kconfig option :kconfig:option:`BT_SPI` is now automatically selected based on devicetree
  compatibles and can be removed from board ``.defconfig`` files.

Bluetooth Audio
===============

* The Volume Renderer callback functions :code:`bt_vcp_vol_rend_cb.state` and
  :code:`bt_vcp_vol_rend_cb.flags` for VCP now contain an additional parameter for
  the connection.
  This needs to be added to all instances of VCP Volume Renderer callback functions defined.
  (:github:`76992`)

* The Unicast Server has a new registration function :c:func:`bt_bap_unicast_server_register` which
  takes a :c:struct:`bt_bap_unicast_server_register_param` as argument. This allows the Unicast
  Server to dynamically register Source and Sink ASE count at runtime. The old
  :kconfig:option:`CONFIG_BT_ASCS_ASE_SRC_COUNT` and :kconfig:option:`CONFIG_BT_ASCS_ASE_SNK_COUNT`
  has been renamed to :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SRC_COUNT` and
  :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT` to reflect that they now serve as a
  compile-time maximum configuration of ASEs to be used.
  :c:func:`bt_bap_unicast_server_register` needs to be called once before using the Unicast Server,
  and more specifically prior to calling :c:func:`bt_bap_unicast_server_register_cb` for the first
  time. It does not need to be called again until the new function
  :c:func:`bt_bap_unicast_server_unregister` has been called.
  (:github:`76632`)

* The Coordinated Set Coordinator functions :c:func:`bt_csip_set_coordinator_lock` and
  :c:func:`bt_csip_set_coordinator_release` now require that :kconfig:option:`CONFIG_BT_BONDABLE`
  is enabled and that all members are bonded, to comply with the requirements from the CSIP spec.
  (:github:`78877`)

* The callback structure provided to :c:func:`bt_bap_unicast_client_register_cb` is no longer
  :code:`const`, and now multiple callback structures can be registered.
  (:github:`78999`)

* The Broadcast Audio Scan Service (BASS) shall now be registered and unregistered dynamically
  at runtime within the scan delegator. Two new APIs, :c:func:`bt_bap_scan_delegator_register()`
  and :c:func:`bt_bap_scan_delegator_unregister()`, have been introduced to manage both BASS and
  scan delegator registration and initialization dynamically. It should also be mentioned that
  the previous callback registration function, :c:func:`bt_bap_scan_delegator_register_cb()` has
  now been removed and merged with :c:func:`bt_bap_scan_delegator_register()`.
  This change allows more flexibility when registering or unregistering scan delegator and BASS
  related functionality without requiring build-time configuration. Existing need to be updated
  to use these new APIs.
  (:github:`78751`)

* The Telephone Bearer Service (TBS) and Generic Telephone Bearer Service (GTBS) shall now be
  registered dynamically at runtime with :c:func:`bt_tbs_register_bearer`. The services can also be
  unregistered with :c:func:`bt_tbs_unregister_bearer`.
  (:github:`76108`)

* There has been a rename from ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg``. This effects all
  structs, enums and defines that used the ``bt_audio_codec_qos`` name. To use the new naming simply
  do a search-and-replace for ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg`` and
  ``BT_AUDIO_CODEC_QOS`` to ``BT_BAP_QOS_CFG``. (:github:`76633`)

* The generation of broadcast ID inside of zephyr stack has been removed, it is now up the
  application to generate a broadcast ID. This means that the application can now fully decide
  whether to use a static or random broadcast ID. Reusing and statically defining a broadcast ID was
  added to the Basic Audio Profile in version 1.0.2, which is the basis for this change. All
  instances of :c:func:`bt_cap_initiator_broadcast_get_id` and
  :c:func:`bt_bap_broadcast_source_get_id` has been removed(:github:`80228`)

* ``BT_AUDIO_BROADCAST_CODE_SIZE`` has been removed and ``BT_ISO_BROADCAST_CODE_SIZE`` should be
  used instead. (:github:`80217`)

Bluetooth Host
==============

Automatic advertiser resumption is deprecated
---------------------------------------------

.. note::

   This deprecation is compiler-checked. If you get no warnings,
   you should not be affected.

Deprecated symbols:
   * :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE`
   * :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`
   * :c:macro:`BT_LE_ADV_CONN`

New symbols:
   * :c:enumerator:`BT_LE_ADV_OPT_CONN`
   * :c:macro:`BT_LE_ADV_CONN_FAST_1`
   * :c:macro:`BT_LE_ADV_CONN_FAST_2`

:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` is a combined
instruction to make the advertiser connectable and to enable
automatic resumption. To disable the automatic resumption, use
:c:enumerator:`BT_LE_ADV_OPT_CONN`.

Extended Advertising API with shorthands
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Extended Advertising API ``bt_le_ext_adv_*`` implicitly assumes
:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` and never automatically
resume advertising. Therefore, the following search/replace can
be applied without thinking:

Replace all

.. code-block:: diff

   -bt_le_ext_adv_create(BT_LE_ADV_CONN, ...)
   +bt_le_ext_adv_create(BT_LE_ADV_FAST_2, ...)

.. code-block:: diff

   -bt_le_ext_adv_update_param(..., BT_LE_ADV_CONN)
   +bt_le_ext_adv_update_param(..., BT_LE_ADV_FAST_2)

Extended Advertising API with custom parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You may have uses of :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE`
in assignments to a :c:struct:`bt_le_adv_param`. If your struct
is never passed to :c:func:`bt_le_adv_start`, you should:

* replace :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` with
  :c:enumerator:`BT_LE_ADV_OPT_CONN`.
* remove :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`.

Legacy Advertising API not using automatic resumption
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Any calls to :c:func:`bt_le_adv_start` that use the combination
:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` and
:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` should have that
combination replaced with :c:enumerator:`BT_LE_ADV_OPT_CONN`.

Legacy Advertising API using automatic resumption
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For this case, the application has to take over the
responsibility of restarting the advertiser.

Refer to the extended advertising sample for an example
implementation of advertiser restarting. The same technique can
be used for legacy advertising.

Networking
**********

* The CoAP public API functions :c:func:`coap_get_block1_option` and
  :c:func:`coap_get_block2_option` have changed. The ``block_number`` pointer
  type has changed from ``uint8_t *`` to ``uint32_t *``. Additionally,
  :c:func:`coap_get_block2_option` now accepts an additional ``bool *has_more``
  parameter, to store the value of the more flag. (:github:`76052`)

* The struct :c:struct:`coap_transmission_parameters` has a new field ``ack_random_percent`` if
  :kconfig:option:`CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT` is enabled. (:github:`79058`)

* The Ethernet bridge shell is moved under network shell. This is done so that
  all the network shell activities can be found under ``net`` shell command.
  After this change the bridge shell is used by ``net bridge`` command. (:github:`77235`)

* The Ethernet bridging code is changed to allow similar configuration experience
  as in Linux. The bridged Ethernet interface can be used normally even if bridging
  is enabled. The actual bridging is done by a separate virtual network interface that
  directs network packets to bridged Ethernet interfaces.
  The :c:func:`eth_bridge_iface_allow_tx` is removed as it is not needed because the
  bridged Ethernet interface can send and receive data normally.
  The :c:func:`eth_bridge_listener_add` and :c:func:`eth_bridge_listener_remove` are
  removed as same functionality can be achieved using promiscuous API.
  Because the bridge interface is a normal network interface,
  the :c:func:`eth_bridge_iface_add` and :c:func:`eth_bridge_iface_remove`
  will take network interface pointer as a first parameter. (:github:`77987`)

* To facilitate use outside of the networking subsystem, the network buffer header file was renamed
  from ``include/zephyr/net/buf.h`` to :zephyr_file:`include/zephyr/net_buf.h` and the
  implementation moved to :zephyr_file:`lib/net_buf/`. (:github:`78009`)

* The ``work_q`` parameter to ``NET_SOCKET_SERVICE_SYNC_DEFINE`` and
  ``NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC`` has been removed as it was always ignored. (:github:`79446`)

* The callback function for the socket service has changed. The
  ``struct k_work *work`` parameter has been replaced with a pointer to the
  ``struct net_socket_service_event *pev`` parameter. (:github:`80041`)

* Deprecated the ``CONFIG_NET_SOCKETS_POLL_MAX`` option in favour of
  :kconfig:option:`CONFIG_ZVFS_POLL_MAX`.

Other Subsystems
****************

Flash map
=========

 * ``CONFIG_SPI_NOR_IDLE_IN_DPD`` has been removed from the :kconfig:option:`CONFIG_SPI_NOR`
   driver. An enhanced version of this functionality can be obtained by enabling
   :ref:`pm-device-runtime` on the device (Tunable with
   :kconfig:option:`CONFIG_SPI_NOR_ACTIVE_DWELL_MS`).

hawkBit
=======

* :c:func:`hawkbit_autohandler` now takes one argument. This argument has to be set to
  ``true`` for the same behavior as before the change. (:github:`71037`)

* ``<zephyr/mgmt/hawkbit.h>`` is deprecated in favor of ``<zephyr/mgmt/hawkbit/hawkbit.h>``.
  The old header will be removed in future releases and its usage should be avoided.
  The hawkbit autohandler has been separated into ``<zephyr/mgmt/hawkbit/autohandler.h>``.
  The configuration part of hawkbit is now in ``<zephyr/mgmt/hawkbit/config.h>``. (:github:`71037`)

MCUmgr
======

* The ``MCUMGR_TRANSPORT_BT_AUTHEN`` Kconfig option from the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT` MCUmgr transport has been replaced with the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig choice.
  The requirement for Bluetooth authentication is now indicated by the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_AUTHEN` Kconfig option.
  To remove the default requirement for Bluetooth authentication it is necessary to enable the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig option in the project configuration.

Random
======

* Following the deprecation of the TinyCrypt library (:github:`79566`), usage
  of TinyCrypt in the CTR-DRBG random number generator was removed. From now on
  Mbed TLS is required to enable :kconfig:option:`CONFIG_CTR_DRBG_CSPRNG_GENERATOR`.
  (:github:`79653`)

Shell
=====

* ``kernel threads`` and ``kernel stacks`` shell command have been renamed to
  ``kernel thread list`` & ``kernel thread stacks``

JWT (JSON Web Token)
====================

* By default, the signature is now computed using the PSA Crypto API for both RSA and ECDSA
  (:github:`78243`). The conversion to the PSA Crypto API is part of the adoption
  of a standard interface for crypto operations (:github:`43712`). Moreover,
  following the deprecation of the TinyCrypt library (:github:`79566`), usage
  of TinyCrypt was removed from the JWT subsystem (:github:`79653`).

* The following new symbols were added to allow specifying both the signature
  algorithm and crypto library:

  * :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA` (default) RSA signature using the PSA Crypto API;
  * :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` RSA signature using Mbed TLS;
  * :kconfig:option:`CONFIG_JWT_SIGN_ECDSA_PSA` ECDSA signature using the PSA Crypto API.

  They replace the previously-existing Kconfigs ``CONFIG_JWT_SIGN_RSA`` and
  ``CONFIG_JWT_SIGN_ECDSA``. (:github:`79653`)

---

### Doc Releases Migration Guide 4.1 (`doc/releases/migration-guide-4.1.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.1:

Migration guide to Zephyr v4.1.0
################################

This document describes the changes required when migrating your application from Zephyr v4.0.0 to
Zephyr v4.1.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.1>`.

.. contents::
    :local:
    :depth: 2

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

* Support for the build type feature which was deprecated in Zephyr 3.6 has been removed,
  :ref:`application-file-suffixes`/:ref:`sysbuild_file_suffixes` has replaced this.

* Sysbuild

  * The Kconfig ``SB_CONFIG_MCUBOOT_MODE_SWAP_WITHOUT_SCRATCH`` has been deprecated and replaced
    with ``SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE``, applications should be updated to select this
    new symbol if they were selecting the old symbol.

BOSSA Runner
============

The ``bossac`` runner has been changed to no longer do a full erase by default when flashing. To
perform a full erase, pass the ``--erase`` option when executing ``west flash``.

Kernel
******


k_pipe API
==========

The k_pipe API has been reworked and the API used in ``CONFIG_PIPES`` is now deprecated.
The k_pipe API is enabled by default when ``CONFIG_MULTITHREADING`` is set.
Function renames and modifications:

.. list-table::
   :header-rows: 1

   * - Old API
     - New API
     - Changes
   * - ``k_pipe_put(..)``
     - ``k_pipe_write(..)``
     - Removed ``min_xfer`` parameter (partial transfers based on thresholds are no longer supported)
       ``bytes_written`` is now the return value
   * - ``k_pipe_get(..)``
     - ``k_pipe_read(..)``
     - Removed ``min_xfer`` parameter (partial transfers based on thresholds are no longer supported)
       ``bytes_read`` is now the return value
   * - ``k_pipe_flush(..)`` & ``k_pipe_buffer_flush(..)``
     - ``k_pipe_reset(..)``
     - Reset the pipe, discarding all data in the pipe, non blocking.
   * - ``k_pipe_alloc_init(..)``, ``k_pipe_cleanup(..)``
     - **Removed**
     - Dynamic allocation of pipes is no longer supported
   * - ``k_pipe_read_avail(..)``, ``k_pipe_write_avail(..)``
     - **Removed**
     - Querying the number of bytes in the pipe is no longer supported
   * - None
     - ``k_pipe_close(..)``
     - Close a pipe, waking up all pending readers and writers with an error code. No further
       reading or writing is allowed on the pipe. The pipe can be re-opened by calling
       ``k_pipe_init(..)`` again. **Note**, all data in the pipe is available to readers until the
       pipe is emptied.


Security
********

* New options for stack canaries have been added, providing users with finer control over stack
  protection. With this change, :kconfig:option:`CONFIG_STACK_CANARIES` no longer enables the
  compiler option ``-fstack-protector-all``. Users who wish to use this option must now enable
  :kconfig:option:`CONFIG_STACK_CANARIES_ALL`.

Boards
******

* Shield ``mikroe_weather_click`` now supports both I2C and SPI interfaces. Users should select
  the required configuration by using ``mikroe_weather_click_i2c`` or ``mikroe_weather_click_spi``
  instead of ``mikroe_weather_click``.

* All nRF52-based boards will now default to soft (system) reset
  instead of pin reset when flashing with ``west flash``. If you want to keep
  using pin reset on the nRF52 family of ICs you can use ``west flash --pinreset``.

* Erasing the external memory when programming a new firmware image with ``west
  flash`` on the nRF52 and nRF53 series now always correctly honors the
  ``--erase`` flag (and its absence) both when using the ``nrfjprog`` and
  ``nrfutil`` backends.  Prior to this release, the ``nrjfprog`` backend would
  always erase only the sectors of the external flash used by the new firmware,
  and the ``nrfutil`` one would always erase the whole external flash.

* CAN1 and USART1 have been disabled on the ``stm32f4_disco``, because of
  conflicting pinctrl on I2C1, which is now used to control the audio codec
  connected to the audio jack output.

Devicetree
**********

* The :dtcompatible:`microchip,cap1203` driver has changed its compatible to
  :dtcompatible:`microchip,cap12xx` and has been updated to support multiple
  channels.
  The number of available channels is derived from the length of the devicetree
  array property ``input-codes``.
  The :kconfig:option:`CONFIG_INPUT_CAP1203_POLL` has been removed:
  If the devicetree property ``int-gpios`` is present, interrupt mode is used
  otherwise, polling is used.
  The :kconfig:option:`CONFIG_INPUT_CAP1203_PERIOD` has been replaced with
  the devicetree property ``poll-interval-ms``.
  In interrupt mode, the devicetree property ``repeat`` is supported.

Raspberry Pi
============

* ``CONFIG_SOC_SERIES_RP2XXX`` is renamed to :kconfig:option:`CONFIG_SOC_SERIES_RP2040`.

STM32
=====

* MCO clock source and prescaler are now exclusively configured by the DTS
  as it was introduced earlier.
  The Kconfig method for configuration is now removed.

* ADC properties ``st,adc-sequencer`` and ``st,adc-clock-source`` now uses
  string values instead of integer values.

Modules
*******

Mbed TLS
========

* If a platform has a CSPRNG source available (i.e. :kconfig:option:`CONFIG_CSPRNG_ENABLED`
  is set), then the Kconfig option :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG`
  is the default choice for random number source instead of
  :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_LEGACY_RNG`. This helps in reducing
  ROM/RAM footprint of the Mbed TLS library.

* The newly-added Kconfig option :kconfig:option:`CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT`
  allows to specify the number of key slots available in the PSA Crypto core.
  Previously this value was not explicitly set, so Mbed TLS's default value of
  32 was used. The new Kconfig option defaults to 16 instead in order to find
  a reasonable compromise between RAM consumption and most common use cases.
  It can be further trimmed down to reduce RAM consumption if the final
  application doesn't need that many key slots simultaneously.

Trusted Firmware-M
==================

LVGL
====

* The config option :kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIO` is now called
  :kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIORITY` and its value is now interpreted as an
  absolute priority instead of a cooperative one.

* The config option :kconfig:option:`CONFIG_LV_Z_VBD_CUSTOM_SECTION` is now called
  :kconfig:option:`CONFIG_LV_Z_VDB_CUSTOM_SECTION`.

Device Drivers and Devicetree
*****************************

* Device driver APIs are placed into iterable sections (:github:`71773` and :github:`82102`) to
  allow for runtime checking. See :ref:`device_driver_api` for more details.
  The :c:macro:`DEVICE_API()` macro should be used by out-of-tree driver implementations for
  all the upstream driver classes.

ADC
===

* Renamed the ``compatible`` from ``nxp,kinetis-adc12`` to :dtcompatible:`nxp,adc12`.

Clock
=====
* Renamed the devicetree property ``freqs_mhz`` to ``freqs-mhz``.
* Renamed the devicetree property ``cg_reg`` to ``cg-reg``.
* Renamed the devicetree property ``pll_ctrl_reg`` to ``pll-ctrl-reg``.

Counter
=======

* Renamed the devicetree property ``primary_source`` to ``primary-source``.
* Renamed the devicetree property ``secondary_source`` to ``secondary-source``.
* Renamed the devicetree property ``filter_count`` to ``filter-count``.
* Renamed the devicetree property ``filter_period`` to ``filter-period``.

Controller Area Network (CAN)
=============================

* Renamed the :dtcompatible:`infineon,xmc4xxx-can-node` devicetree property ``clock_div8`` to
  ``clock-div8`` (:github:`83782`).

Display
=======

* Displays using the MIPI DBI driver which set their MIPI DBI mode via the
  ``mipi-mode`` property in devicetree should now use a string property of
  the same name, like so:

  .. code-block:: devicetree

    /* Legacy display definition */

    st7735r: st7735r@0 {
        ...
        mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
        ...
    };

    /* New display definition */

    st7735r: st7735r@0 {
        ...
        mipi-mode = "MIPI_DBI_MODE_SPI_4WIRE";
        ...
    };

* Renamed the devicetree propertys ``pclk_pol`` and ``data_cmd-gpios``
  to ``pclk-pol`` and ``data-cmd-gpios``.

DAC
===

* Renamed the devicetree properties ``voltage_reference`` and ``power_down_mode``
  to ``voltage-reference`` and ``power-down-mode``.

Enhanced Serial Peripheral Interface (eSPI)
===========================================

Entropy
=======

* BT HCI based entropy driver now directly sends the HCI command to parse random
  data instead of waiting for BT connection to be ready. This is helpful on
  platforms where the BT controller owns the HW random generator and the application
  processor needs to get random data before BT is fully enabled.
  (:github:`79931`)

Ethernet
========

* Deprecated eth_mcux driver was removed.
* Silabs gecko ethernet changes:

  * Renamed the devicetree property ``location-phy_mdc`` to ``location-phy-mdc``.
  * Renamed the devicetree property ``location-phy_mdio`` to ``location-phy-mdio``.
  * Renamed the devicetree property ``location-rmii_refclk`` to ``location-phy-refclk``.
  * Renamed the devicetree property ``location-rmii_crs_dv`` to ``location-phy-crs-dv``.
  * Renamed the devicetree property ``location-rmii_txd0`` to ``location-phy-txd0``.
  * Renamed the devicetree property ``location-rmii_txd1`` to ``location-phy-txd1``.
  * Renamed the devicetree property ``location-rmii_tx_en`` to ``location-phy-tx-en``.
  * Renamed the devicetree property ``location-rmii_rxd0`` to ``location-phy-rxd0``.
  * Renamed the devicetree property ``location-rmii_rxd1`` to ``location-phy-rxd1``.
  * Renamed the devicetree property ``location-rmii_rx_er`` to ``location-phy-rx-er``.
  * Renamed the devicetree property ``location-phy_pwr_enable`` to ``location-phy-pwr-enable``.
  * Renamed the devicetree property ``location-phy_reset`` to ``location-phy-reset``.
  * Renamed the devicetree property ``location-phy_interrupt`` to ``location-phy-interrupt``.

GNSS
====

GPIO
====

* Renamed the device tree property ``pin_mask`` to ``pin-mask``.
* Renamed the device tree property ``pinmux_mask`` to ``pinmux-mask``.
* Renamed the device tree property ``vbatts_pins`` to ``vbatts-pins``.
* Renamed the device tree property ``bit_per_gpio`` to ``bit-per-gpio``.
* Renamed the device tree property ``off_val`` to ``off-val``.
* Renamed the device tree property ``on_val`` to ``on-val``.
* Renamed the ``compatible`` from ``ti,ads114s0x-gpio`` to :dtcompatible:`ti,ads1x4s0x-gpio`.

HWSPINLOCK
==========

* Renamed the DeviceTree property ``num_locks`` to ``num-locks``.

I2C
===

* Renamed the ``compatible`` from ``nxp,imx-lpi2c`` to :dtcompatible:`nxp,lpi2c`.
* Renamed the device tree property ``port_sel`` to ``port-sel```
/* Detailed source-code truncated for AI context efficiency. */
```
* Renamed the device tree property from ``max_current_330`` to ``max-current-330``

Sensors
=======

  * The :dtcompatible:`we,wsen-pads` driver has been renamed to
    :dtcompatible:`we,wsen-pads-2511020213301`.
    The Device Tree can be configured as follows:

    .. code-block:: devicetree

      &i2c0 {
        pads:pads-2511020213301@5d {
          compatible = "we,wsen-pads-2511020213301";
          reg = <0x5d>;
          odr = <10>;
          interrupt-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
        };
      };

  * The :dtcompatible:`we,wsen-pdus` driver has been renamed to
    :dtcompatible:`we,wsen-pdus-25131308XXXXX`.
    The Device Tree can be configured as follows:

    .. code-block:: devicetree

      &i2c0 {
        pdus:pdus-25131308XXXXX@78 {
          compatible = "we,wsen-pdus-25131308XXXXX";
          reg = <0x78>;
          sensor-type = <4>;
        };
      };

  * The :dtcompatible:`we,wsen-tids` driver has been renamed to
    :dtcompatible:`we,wsen-tids-2521020222501`.
    The Device Tree can be configured as follows:

    .. code-block:: devicetree

      &i2c0 {
        tids:tids-2521020222501@3F {
          compatible = "we,wsen-tids-2521020222501";
          reg = <0x3F>;
          odr = <25>;
          interrupt-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
        };
      };

  * The :dtcompatible:`invensense,icp10125` driver has been renamed to
    :dtcompatible:`invensense,icp101xx`.
    The Device Tree can be configured as follows:

    .. code-block:: devicetree

      &i2c0 {
        icp101xx:icp101xx@63 {
           compatible = "invensense,icp101xx";
           reg = <0x63>;
        };
      };

Serial
======

* Renamed the ``compatible`` from ``nxp,kinetis-lpuart`` to :dtcompatible:`nxp,lpuart`.
* Silabs Usart driver has been split for Series 2 :dtcompatible:`silabs,usart-uart`
  and  Series 0/1 ``silabs,gecko-usart``

Stepper
=======

  * Renamed the ``compatible`` from ``zephyr,gpio-steppers`` to :dtcompatible:`zephyr,gpio-stepper`.
  * Renamed the ``stepper_set_actual_position`` function to :c:func:`stepper_set_reference_position`.
  * Renamed the ``stepper_enable_constant_velocity_mode`` function to :c:func:`stepper_run`.
    The function does not take a velocity parameter anymore. Set the desired speed using the
    :c:func:`stepper_set_microstep_interval` function beforehand.
  * Renamed the ``stepper_move`` function to :c:func:`stepper_move_by`.
  * Renamed the ``stepper_set_target_position`` function to :c:func:`stepper_move_to`.
  * Renamed the ``stepper_set_max_velocity`` function to :c:func:`stepper_set_microstep_interval`.
    The function now takes the step interval in nanoseconds. This allows for a more precise control.
  * Deprecating setting max velocity via :c:func:`stepper_run`.
  * The :kconfig:option:`STEPPER_ADI_TMC_RAMP_GEN` is now deprecated and is replaced with the new
    :kconfig:option:`STEPPER_ADI_TMC50XX_RAMP_GEN` option.
  * Renamed tmc5041 stepper driver to tmc50xx.
  * To control the velocity for :dtcompatible:`adi,tmc50xx` stepper driver, use
    :c:func:`tmc50xx_stepper_set_max_velocity` or :c:func:`tmc50xx_stepper_set_ramp`.
  * Renamed the DeviceTree property ``en_spreadcycle`` to ``en-spreadcycle``.
  * Renamed the DeviceTree property ``i_scale_analog`` to ``i-scale-analog``.
  * Renamed the DeviceTree property ``index_optw`` to ``index-otpw``.
  * Renamed the DeviceTree property ``ìndex_step`` to ``index-step``.
  * Renamed the DeviceTree property ``internal_rsense`` to ``internal-rsense``.
  * Renamed the DeviceTree property ``lock_gconf`` to ``lock-gconf``.
  * Renamed the DeviceTree property ``mstep_reg_select`` to ``mstep-reg-select``.
  * Renamed the DeviceTree property ``pdn_disable`` to ``pdn-disable``.
  * Renamed the DeviceTree property ``poscmp_enable`` to ``poscmp-enable``.
  * Renamed the DeviceTree property ``test_mode`` to ``test-mode``.

SPI
===

* Renamed the ``compatible`` from ``nxp,imx-lpspi`` to :dtcompatible:`nxp,lpspi`.
* Renamed the ``compatible`` from ``nxp,kinetis-dspi`` to :dtcompatible:`nxp,dspi`.
* Renamed the ``compatible`` from ``silabs,gecko-spi-usart`` to :dtcompatible:`silabs,usart-spi`.
* Renamed the ``compatible`` from ``silabs,gecko-spi-eusart`` to :dtcompatible:`silabs,eusart-spi`.

Regulator
=========

RTC
===

* Renamed the ``compatible`` from ``nxp,kinetis-rtc`` to :dtcompatible:`nxp,rtc`.

Timer
=====

* Renamed the ``compatible`` from ``nxp,kinetis-ftm`` to :dtcompatible:`nxp,ftm` and relocate it
  under ``dts/bindings/timer``.
* Renamed the device tree property from ``ticks_us`` to ``ticks-us``.

USB
===

* Renamed the devicetree property names ``phy_handle`` to ``phy-handle``.

Video
=====

* The :file:`include/zephyr/drivers/video-controls.h` got updated to have video controls IDs (CIDs)
  matching the definitions in the Linux kernel file ``include/uapi/linux/v4l2-controls.h``.
  In most cases, removing the category prefix is enough: ``VIDEO_CID_CAMERA_GAIN`` becomes
  ``VIDEO_CID_GAIN``.
  The new ``video-controls.h`` source now contains description of each control ID to help
  disambiguating.

* The ``video_pix_fmt_bpp()`` function was returning a byte count, this got replaced by
  ``video_bits_per_pixel()`` which return a bit count. For instance, invocations such as
  ``pitch = width * video_pix_fmt_bpp(pixfmt)`` needs to be replaced by an equivalent
  ``pitch = width * video_bits_per_pixel(pixfmt) / BITS_PER_BYTE``.

* The :c:func:`video_buffer_alloc` and :c:func:`video_buffer_aligned_alloc` functions in the
  video API now take an additional timeout parameter.

* The :c:func:`video_stream_start` and :c:func:`video_stream_stop` driver APIs are now merged
  into the new :c:func:`video_set_stream` driver API. The user APIs are however unchanged to
  keep backward compatibility with downstream applications.

Watchdog
========

* Renamed the ``compatible`` from ``nxp,kinetis-wdog32`` to :dtcompatible:`nxp,wdog32`.

Wi-Fi
=====

* The config options :kconfig:option:`CONFIG_NXP_WIFI_BUILD_ONLY_MODE` and
  :kconfig:option:`CONFIG_NRF_WIFI_BUILD_ONLY_MODE` are now unified under
  :kconfig:option:`CONFIG_BUILD_ONLY_NO_BLOBS` making it a common entry point
  for any vendor to enable builds without blobs.

Bluetooth
*********

Bluetooth HCI
=============

* The :kconfig:option:`BT_CTLR` has been deprecated. A new :kconfig:option:`HAS_BT_CTLR` has been
  introduced which should be selected by the respective link layer Kconfig options (e.g. a
  HCI driver option, or the one for the upstream controller). It's recommended that all HCI drivers
  for local link layers select the new option, since that opens up the possibility of indicating
  build-time support for specific features, which e.g. the host stack can take advantage of.

Bluetooth Mesh
==============

* Following the beginnig of the deprecation process for the TinyCrypt crypto
  library, Kconfig symbol :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` was
  set as deprecated. Default option for platforms that do not support TF-M
  is :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA`.

* Mesh key representations are not backward compatible if images are built with TinyCrypt and
  crypto libraries based on the PSA API. Mesh no longer stores the key values for those crypto
  libraries. The crypto library stores the keys in the internal trusted storage.
  If a provisioned device is going to update its image that was built with
  the :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` Kconfig option set on an image
  that was built with :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA` or
  :kconfig:option:`CONFIG_BT_MESH_USES_TFM_PSA` without erasing the persistent area,
  it should be unprovisioned first and reprovisioned after update again.
  If the image is changed over Mesh DFU, use :c:enumerator:`BT_MESH_DFU_EFFECT_UNPROV`.

* Mesh explicitly depends on the Secure Storage subsystem if storing into
  non-volatile memory (:kconfig:option:`CONFIG_BT_SETTINGS`) is enabled and
  Mbed TLS library (:kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA`) is used.
  Applications should be built with :kconfig:option:`CONFIG_SECURE_STORAGE` enabled.

Bluetooth Audio
===============

* The following Kconfig options are not longer automatically enabled by the LE Audio Kconfig
  options and may need to be enabled manually (:github:`81328`):

    * :kconfig:option:`CONFIG_BT_GATT_CLIENT`
    * :kconfig:option:`CONFIG_BT_GATT_AUTO_DISCOVER_CCC`
    * :kconfig:option:`CONFIG_BT_GATT_AUTO_UPDATE_MTU`
    * :kconfig:option:`CONFIG_BT_EXT_ADV`
    * :kconfig:option:`CONFIG_BT_PER_ADV_SYNC`
    * :kconfig:option:`CONFIG_BT_ISO_BROADCASTER`
    * :kconfig:option:`CONFIG_BT_ISO_SYNC_RECEIVER`
    * :kconfig:option:`CONFIG_BT_PAC_SNK`
    * :kconfig:option:`CONFIG_BT_PAC_SRC`

* PACS have been changed to support dynamic, runtime configuration. This means that PACS now has
  to be registered with :c:func:`bt_pacs_register` before it can be used. In addition,
  :c:func:`bt_pacs_register` also have to be called before :c:func:`bt_ascs_register` can be
  be called. All Kconfig options still remain. Runtime configuration cannot override a disabled
  Kconfig option. (:github:`83730`)

* Several services and service client (AICS, ASCS, CSIP, HAS, MCS, PACS, TBS, VCP and VOCS) now
  depend on :kconfig:option:`CONFIG_BT_SMP` and may need to be explicitly enabled.
  (:github:`84994`)

Bluetooth Classic
=================

Bluetooth Host
==============

* :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` has been deprecated. The number of ACL RX buffers is
  now computed internally and is equal to :kconfig:option:`CONFIG_BT_MAX_CONN` + 1. If an application
  needs more buffers, it can use the new :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA` to add
  additional ones.

  e.g. if :kconfig:option:`CONFIG_BT_MAX_CONN` was ``3`` and
  :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` was ``7`` then
  :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA` should be set to ``7 - (3 + 1) = 3``.

  .. warning::

   The default value of :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` has been set to 0.

* LE legacy pairing is no longer enabled by default since it's not secure. Leaving it enabled
  makes a device vulnerable for downgrade attacks. If an application still needs to use LE legacy
  pairing, it should disable :kconfig:option:`CONFIG_BT_SMP_SC_PAIR_ONLY` manually.

* The prompt for :kconfig:option:`CONFIG_BT_ECC` has been removed, since it only offers an internal
  API, meaning internal users should explicitly select it in their respective Kconfig options.

Bluetooth Crypto
================

Bluetooth Services
==================

* The :kconfig:option:`CONFIG_BT_DIS_MODEL` and :kconfig:option:`CONFIG_BT_DIS_MANUF` have been
  deprecated. Application developers should now use the
  :kconfig:option:`CONFIG_BT_DIS_MODEL_NUMBER_STR` and
  :kconfig:option:`CONFIG_BT_DIS_MANUF_NAME_STR` Kconfig options to set the string values in the
  Model Number String and Manufacturer Name String characteristics that are part of the Device
  Information Service (DIS).

Networking
**********

* The Prometheus metric creation has changed as user does not need to have a separate
  struct :c:struct:`prometheus_metric` any more. This means that the Prometheus macros
  :c:macro:`PROMETHEUS_COUNTER_DEFINE`, :c:macro:`PROMETHEUS_GAUGE_DEFINE`,
  :c:macro:`PROMETHEUS_HISTOGRAM_DEFINE` and :c:macro:`PROMETHEUS_SUMMARY_DEFINE`
  prototypes have changed. (:github:`81712`)

* The default subnet mask on newly added IPv4 addresses is now specified with
  :kconfig:option:`CONFIG_NET_IPV4_DEFAULT_NETMASK` option instead of being left
  empty. Applications can still specify a custom netmask for an address with
  :c:func:`net_if_ipv4_set_netmask_by_addr` function if needed.

* The HTTP server public API function signature for the :c:type:`http_resource_dynamic_cb_t` has
  changed, the data is now passed in a :c:struct:`http_request_ctx` which holds the data, data
  length and request header information. Request headers should be accessed via this parameter
  rather than directly in the :c:struct:`http_client_ctx` to correctly handle concurrent requests
  on different HTTP/2 streams.

* The HTTP server public API function signature for the :c:type:`http_resource_websocket_cb_t` has
  changed, a :c:struct:`http_request_ctx` parameter has been added. The application may use this to
  access the request headers of the HTTP upgrade request, which may be useful in deciding whether
  to accept or reject a websocket connection.

* An additional ``_res_fallback`` parameter has been added to the :c:macro:`HTTP_SERVICE_DEFINE`
  and :c:macro:`HTTPS_SERVICE_DEFINE` macros, allowing a fallback resource to be served if no other
  resources match the requested path. To retain the existing behaviour, ``NULL`` can be passed as the
  additional parameter.

* The :kconfig:option:`CONFIG_NET_L2_OPENTHREAD` symbol no longer implies the
  :kconfig:option:`CONFIG_NVS` Kconfig option. Platforms using OpenThread must explicitly enable
  either the :kconfig:option:`CONFIG_NVS` or :kconfig:option:`CONFIG_ZMS` Kconfig option.

* ``CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO`` was deprecated in favour of
  :kconfig:option:`CONFIG_NET_TC_TX_SKIP_FOR_HIGH_PRIO` to avoid naming ambiguity.

Other Subsystems
****************

Flash map
=========

Filesystem
==========

* The EXT2 Kconfig symbol ``CONFIG_MAX_FILES`` has been renamed to
  :kconfig:option:`CONFIG_EXT2_MAX_FILES`.

hawkBit
=======

* The Kconfig symbols :kconfig:option:`CONFIG_SMF` and
  :kconfig:option:`CONFIG_SMF_ANCESTOR_SUPPORT` are now required to be enabled to use the
  hawkBit subsystem.

MCUmgr
======

* The Kconfig :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH` has been
  deprecated and replaced with :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE`,
  applications should be updated to select this new symbol if they were selecting the old symbol.

* The deprecated macro ``MGMT_CB_ERROR_RET`` has been removed.

Modem
=====

LoRa
====

* The function :c:func:`lora_recv_async` and callback ``lora_recv_cb`` now include an
  additional ``user_data`` parameter, which is a void pointer. This parameter can be used to reference
  any user-defined data structure. To maintain the current behavior, set this parameter to ``NULL``.

Secure Storage
==============

* Store backends no longer automatically enable their dependencies through ``select`` or ``imply``.
  Users must ensure that the depencies are enabled in their applications.
  :kconfig:option:`CONFIG_SECURE_STORAGE_ITS_STORE_IMPLEMENTATION_SETTINGS` previously enabled NVS
  and settings, which means the NVS settings backend would get used by default if ZMS wasn't
  enabled. (:github:`86181`)

Stream Flash
============

* The function :c:func:`stream_flash_init` no longer does auto-detection of device size
  when ``size`` parameter is set to 0 and will return error in such case. User is now
  required to explicitly provide device size. Issue :github:`71042` provides rationale
  for the change.

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

* native/POSIX

  * :kconfig:option:`CONFIG_NATIVE_APPLICATION` has been deprecated. Out-of-tree boards using this
    option should migrate to the native_simulator runner (:github:`81232`).
    For an example of how this was done with a board in-tree check :github:`61481`.
  * For the native_sim target :kconfig:option:`CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT` has been
    switched to ``n`` by default, and this option has been deprecated. Ensure your code does not
    use the :kconfig:option:`CONFIG_BOARD_NATIVE_POSIX` option anymore (:github:`81232`).

* x86

  * Kconfigs ``CONFIG_DISABLE_SSBD`` and ``CONFIG_ENABLE_EXTENDED_IBRS`` have been deprecated
    since v3.7. These were removed.  Use :kconfig:option:`CONFIG_X86_DISABLE_SSBD` and
    :kconfig:option:`CONFIG_X86_ENABLE_EXTENDED_IBRS` instead.

---

### Doc Releases Migration Guide 4.2 (`doc/releases/migration-guide-4.2.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.2:

Migration guide to Zephyr v4.2.0
################################

This document describes the changes required when migrating your application from Zephyr v4.1.0 to
Zephyr v4.2.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.2>`.

.. contents::
    :local:
    :depth: 2

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

* HWMv1 support has been removed, any out-of-tree boards or SoCs in HWMv1 format must be migrated
  to :ref:`HWMv2 <hw_model_v2>` to work with Zephyr v4.2 onwards.

Kernel
******

Boards
******

* All boards based on Nordic ICs that used the ``nrfjprog`` Nordic command-line
  tool for flashing by default have been modified to instead default to the new
  nRF Util (``nrfutil``) tool. This means that you may need to `install nRF Util
  <https://www.nordicsemi.com/Products/Development-tools/nrf-util>`_ or, if you
  prefer to continue using ``nrfjprog``, you can do so by invoking west while
  specifying the runner: ``west flash -r nrfjprog``. The full documentation for
  nRF Util can be found
  `here <https://docs.nordicsemi.com/bundle/nrfutil/page/README.html>`_.

* All boards based on a Nordic IC of the nRF54L series now default to not
  erasing any part of the internal storage when flashing. If you'd like to
  revert to the previous default of erasing the pages that will be written to by
  the firmware to be flashed you can set the new ``--erase-mode`` command-line
  switch when invoking ``west flash`` to ``ranges``.
  Note that RRAM on nRF54L devices is not physically paged, and paging is
  only artificially provided, with a page size of 4096 bytes, for an easier
  transition of nRF52 software to nRF54L devices.

* The config option :kconfig:option:`CONFIG_NATIVE_POSIX_SLOWDOWN_TO_REAL_TIME` has been deprecated
  in favor of :kconfig:option:`CONFIG_NATIVE_SIM_SLOWDOWN_TO_REAL_TIME`.

* The DT binding :dtcompatible:`zephyr,native-posix-cpu` has been deprecated in favor of
  :dtcompatible:`zephyr,native-sim-cpu`.

* Zephyr now supports version 1.11.6 of the :zephyr:board:`neorv32`. NEORV32 processor (SoC)
  implementations need to be updated to this version to be compatible with Zephyr v4.2.0.

* The :zephyr:board:`neorv32` now targets NEORV32 processor (SoC) templates via board variants. The
  old ``neorv32`` board target is now named ``neorv32/neorv32/up5kdemo``.

* ``arduino_uno_r4_minima``, ``arduino_uno_r4_wifi``, and ``mikroe_clicker_ra4m1`` have migrated to
  new FSP-based configurations.
  While there are no major functional changes, the device tree structure has been significantly revised.
  The following device tree bindings are now removed:
  ``renesas,ra-gpio``, ``renesas,ra-uart-sci``, ``renesas,ra-pinctrl``,
  ``renesas,ra-clock-generation-circuit``, and ``renesas,ra-interrupt-controller-unit``.
  Instead, use the following replacements:
  - :dtcompatible:`renesas,ra-gpio-ioport`
  - :dtcompatible:`renesas,ra-sci-uart`
  - :dtcompatible:`renesas,ra-pinctrl-pfs`
  - :dtcompatible:`renesas,ra-cgc-pclk-block`

* Nucleo WBA52CG board (``nucleo_wba52cg``) is not supported anymore since it is NRND
  (Not Recommended for New Design) and it is not supported anymore in the STM32CubeWBA from
  version 1.1.0 (July 2023). The migration to :zephyr:board:`nucleo_wba55cg` (``nucleo_wba55cg``)
  is recommended and it could be done without any change.

* Espressif boards ``esp32_devkitc_wroom`` and ``esp32_devkitc_wrover`` shared almost identical features.
  The differences are covered by the Kconfig options so both boards were merged into ``esp32_devkitc``.

* STM32 boards should now add OpenOCD programming support by including ``openocd-stm32.board.cmake``
  instead of ``openocd.board.cmake``. The ``openocd-stm32.board.cmake`` file extends the default
  OpenOCD runner with manufacturer-specific configuration like STM32 mass erase commands.

* STM32N6570-DK boards's default variant (``stm32n6570_dk/stm32n657xx``) is now supposed to be a
  chainloaded application and should be built using ``--sysbuild``. The old default,
  which built applications to run as First Stage BootLoader, is now available as a dedicated
  variant (``stm32n6570_dk/stm32n657xx/fsbl``) that must be selected explicitly.
  See board documentation for more information about these variants.

* STM32 boards that embed TF-M BL2 boot stage (``b_u585i_iot02a//ns``, ``nucleo_l552ze_q//ns``
  and ``stm32l562e_dk//ns``) do not embed HW crypto accelerator drivers in BL2 as they previously
  did, now relying on Mbed TLS software implementation. This is related to the upgrade to TF-M
  v2.2. HW crypto accelerators are still supported in TF-M, but only in the runtime secure firmware.

Device Drivers and Devicetree
*****************************

.. zephyr-keep-sorted-start re(^\w)

Audio
=====

* The binding file for :dtcompatible:`cirrus,cs43l22` has been renamed to have a name
  matching the compatible string.

Counter
=======

* ``counter_native_posix`` has been renamed ``counter_native_sim``, and with it its
  kconfig options and DT binding. :dtcompatible:`zephyr,native-posix-counter`  has been deprecated
  in favor of :dtcompatible:`zephyr,native-sim-counter`.
  And :kconfig:option:`CONFIG_COUNTER_NATIVE_POSIX` and its related options with
  :kconfig:option:`CONFIG_COUNTER_NATIVE_SIM` (:github:`86616`).

DAI
===

* Renamed the devicetree property ``dai_id`` to ``dai-id``.
* Renamed the devicetree property ``afe_name`` to ``afe-name``.
* Renamed the devicetree property ``agent_disable`` to ``agent-disable``.
* Renamed the devicetree property ``ch_num`` to ``ch-num``.
* Renamed the devicetree property ``mono_invert`` to ``mono-invert``.
* Renamed the devicetree property ``quad_ch`` to ``quad-ch``.
* Renamed the devicetree property ``int_odd`` to ``int-odd``.

DMA
===

* Renamed the devicetree property ``nxp,a_on`` to ``nxp,a-on``.
* Renamed the devicetree property ``dma_channels`` to ``dma-channels``.
* The binding files for Xilinx DMA controllers have been renamed to use the proper vendor prefix
  (``xlnx`` instead of ``xilinx``) and to match their compatible string.

Devicetree
==========

* Many of the vendor-specific and arch-specific files that were in dts/common have been moved
  to more specific locations. Therefore, any dts files which ``#include <common/some_file.dtsi>``
  a file from in the zephyr tree will need to be changed to just ``#include <some_file.dtsi>``.

* Silicon Labs SoC-level dts files for Series 2 have been reorganized in subdirectories per device
  superfamily. Therefore, any dts files for boards that use Series 2 SoCs will need to change their
  include from ``#include <silabs/some_soc.dtsi>`` to ``#include <silabs/xg2[1-9]/some_soc.dtsi>``.

* The :c:macro:`DT_ENUM_HAS_VALUE` and :c:macro:`DT_INST_ENUM_HAS_VALUE` macros are now
  checking all values, when used on an array, not just the first one.

* Property names in devicetree and bindings use hyphens(``-``) as separators, and replacing
  all previously used underscores(``_``). For local code, you can migrate property names in
  bindings to use hyphens by running the ``scripts/utils/migrate_bindings_style.py`` script.

Display
=======

* On STM32 devices, the LTDC driver (:dtcompatible:`st,stm32-ltdc`) RGB565 format
  ``PIXEL_FORMAT_RGB565`` has been replaced by ``PIXEL_FORMAT_BGR565`` to match
  the format expected by Zephyr. This change ensures proper behavior of both
  display and video capture samples.

EEPROM
========

* :dtcompatible:`ti,tmp116-eeprom` has been renamed to :dtcompatible:`ti,tmp11x-eeprom` because it
  supports both tmp117 and tmp119.

Enhanced Serial Peripheral Interface (eSPI)
===========================================

* Renamed the devicetree property ``io_girq`` to ``io-girq``.
* Renamed the devicetree property ``vw_girqs`` to ``vw-girqs``.
* Renamed the devicetree property ``pc_girq`` to ``pc-girq``.
* Renamed the devicetree property ``poll_timeout`` to ``poll-timeout``.
* Renamed the devicetree property ``poll_interval`` to ``poll-interval``.
* Renamed the devicetree property ``consec_rd_timeout`` to ``consec-rd-timeout``.
* Renamed the devicetree property ``sus_chk_delay`` to ``sus-chk-delay``.
* Renamed the devicetree property ``sus_rsm_interval`` to ``sus-rsm-interval``.

Entropy
=======

* ``fake_entropy_native_posix`` has been renamed ``fake_entropy_native_sim``, and with it its
  kconfig options and DT binding. :dtcompatible:`zephyr,native-posix-rng`  has been deprecated
  in favor of :dtcompatible:`zephyr,native-sim-rng`.
  And :kconfig:option:`CONFIG_FAKE_ENTROPY_NATIVE_POSIX` and its related options with
  :kconfig:option:`CONFIG_FAKE_ENTROPY_NATIVE_SIM` (:github:`86615`).

Ethernet
========

* Removed Kconfig option ``ETH_STM32_HAL_MII`` (:github:`86074`).
  PHY interface type is now selected via the ``phy-connection-type`` property in the device tree.

* The :dtcompatible:`st,stm32-ethernet` driver now requires the ``phy-handle`` phandle to be
  set to the according PHY node in the device tree (:github:`87593`).

* The Kconfig options ``ETH_STM32_HAL_PHY_ADDRESS``, ``ETH_STM32_CARRIER_CHECK``,
  ``ETH_STM32_CARRIER_CHECK_RX_IDLE_TIMEOUT_MS``, ``ETH_STM32_AUTO_NEGOTIATION_ENABLE``,
  ``ETH_STM32_SPEED_10M``, ``ETH_STM32_MODE_HALFDUPLEX`` have been removed, as they are no longer
  needed, and the driver now uses the ethernet phy api to communicate with the phy driver, which
  is responsible for configuring the phy settings (:github:`87593`).

* ``ethernet_native_posix`` has been renamed ``ethernet_native_tap``, and with it its
  kconfig options: :kconfig:option:`CONFIG_ETH_NATIVE_POSIX` and its related options have been
  deprecated in favor of :kconfig:option:`CONFIG_ETH_NATIVE_TAP` (:github:`86578`).

* NuMaker Ethernet driver ``eth_numaker.c`` now supports ``gen_random_mac``,
  and the EMAC data flash feature has been removed (:github:`87953`).

* The enum ``ETHERNET_DSA_MASTER_PORT`` and ``ETHERNET_DSA_SLAVE_PORT`` in
  :zephyr_file:`include/zephyr/net/ethernet.h` have been renamed
  to ``ETHERNET_DSA_CONDUIT_PORT`` and ``ETHERNET_DSA_USER_PORT``.

* Enums for the Ethernet speed have been renamed to be more independent of the used medium.
  ``LINK_HALF_10BASE_T``, ``LINK_FULL_10BASE_T``, ``LINK_HALF_100BASE_T``, ``LINK_FULL_100BASE_T``,
  ``LINK_HALF_1000BASE_T``, ``LINK_FULL_1000BASE_T``, ``LINK_FULL_2500BASE_T`` and
  ``LINK_FULL_5000BASE_T`` have been renamed to :c:enumerator:`LINK_HALF_10BASE`,
  :c:enumerator:`LINK_FULL_10BASE`, :c:enumerator:`LINK_HALF_100BASE`,
  :c:enumerator:`LINK_FULL_100BASE`, :c:enumerator:`LINK_HALF_1000BASE`,
  :c:enumerator:`LINK_FULL_1000BASE`, :c:enumerator:`LINK_FULL_2500BASE` and
  :c:enumerator:`LINK_FULL_5000BASE`.
  ``ETHERNET_LINK_10BASE_T``, ``ETHERNET_LINK_100BASE_T``, ``ETHERNET_LINK_1000BASE_T``,
  ``ETHERNET_LINK_2500BASE_T`` and ``ETHERNET_LINK_5000BASE_T`` have been renamed to
  :c:enumerator:`ETHERNET_LINK_10BASE`, :c:enumerator:`ETHERNET_LINK_100BASE`,
  :c:enumerator:`ETHERNET_LINK_1000BASE`, :c:enumerator:`ETHERNET_LINK_2500BASE` and
  :c:enumerator:`ETHERNET_LINK_5000BASE` respectively (:github:`87194`).

* ``ETHERNET_CONFIG_TYPE_LINK``, ``ETHERNET_CONFIG_TYPE_DUPLEX``, ``ETHERNET_CONFIG_TYPE_AUTO_NEG``
  and the related ``NET_REQUEST_ETHERNET_SET_LINK``, ``NET_REQUEST_ETHERNET_SET_DUPLEX``,
  ``NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION`` have been removed. :c:func:`phy_configure_link`
  together with :c:func:`net_eth_get_phy` should be used instead to configure the link
  (:github:`90652`).

* :c:func:`phy_configure_link` got a ``flags`` parameter. Set it to ``0`` to preserve the old
  behavior (:github:`91354`).

Flash
=====

* Renamed the file from ``flash_hp_ra.h`` to ``soc_flash_renesas_ra_hp.h``.
* Renamed the file from ``flash_hp_ra.c`` to ``soc_flash_renesas_ra_hp.c``.
* Renamed the file from ``flash_hp_ra_ex_op.c`` to ``soc_flash_renesas_ra_hp_ex_op.c``.

* The Flash HP Renesas RA dual bank mode Kconfig symbol :kconfig:option:`CONFIG_DUAL_BANK_MODE`
  has been removed.
* The Flash HP Renesas RA Kconfig symbol :kconfig:option:`CONFIG_RA_FLASH_HP`
  has been renamed to :kconfig:option:`CONFIG_SOC_FLASH_RENESAS_RA_HP`.
* The Flash HP Renesas RA write protect Kconfig symbol :kconfig:option:`CONFIG_FLASH_RA_WRITE_PROTECT`
  has been renamed to :kconfig:option:`CONFIG_FLASH_RENESAS_RA_HP_WRITE_PROTECT`.

* Separate the file ``renesas,ra-nv-flash.yaml`` into 2 files ``renesas,ra-nv-code-flash.yaml``
  and ``renesas,ra-nv-data-flash.yaml``.
* Separate the ``compatible`` from ``renesas,ra-nv-flash`` to :dtcompatible:`renesas,ra-nv-code-flash.yaml`
  and :dtcompatible:`renesas,ra-nv-data-flash.yaml`.

GPIO
====

* To support the RP2350B, which has many pins, the Raspberry Pi-GPIO configuration has
  been changed. The previous role of :dtcompatible:`raspberrypi,rpi-gpio` has been migrated to
  :dtcompatible:`raspberrypi,rpi-gpio-port`, and :dtcompatible:`raspberrypi,rpi-gpio` is
  now left as a placeholder and mapper.
  The labels have also been changed along, so no changes are necessary for regular use.
* ``arduino-nano-header-r3`` is renamed to :dtcompatible:`arduino-nano-header`.
  Because the R3 comes from the Arduino UNO R3, which has changed the connector from
  the former version, and is unrelated to the Arduino Nano.
* Moved file ``include/zephyr/dt-bindings/gpio/nordic-npm1300-gpio.h`` to
  :zephyr_file:`include/zephyr/dt-bindings/gpio/nordic-npm13xx-gpio.h` and renamed all instances of
  ``NPM1300`` to ``NPM13XX`` in the defines
* Renamed ``CONFIG_GPIO_NPM1300`` to :kconfig:option:`CONFIG_GPIO_NPM13XX`,
  ``CONFIG_GPIO_NPM1300_INIT_PRIORITY`` to :kconfig:option:`CONFIG_GPIO_NPM13XX_INIT_PRIORITY`

I2S
===
* The :dtcompatible:`nxp,mcux-i2s` driver added property ``mclk-output``. Set this property to
* configure the MCLK signal as an output.  Older driver versions used the macro
* ``I2S_OPT_BIT_CLK_SLAVE`` to configure the MCLK signal direction. (:github:`88554`)

LED
===

* Renamed ``CONFIG_LED_NPM1300`` to :kconfig:option:`CONFIG_LED_NPM13XX`

MFD
===

* Moved file ``include/zephyr/drivers/mfd/npm1300.h`` to :zephyr_file:`include/zephyr/drivers/mfd/npm13xx.h`
  and renamed all instances of ``npm1300``/``NPM1300`` to ``npm13xx``/``NPM13XX`` in the enums and
  function names
* Renamed ``CONFIG_MFD_NPM1300`` to :kconfig:option:`CONFIG_MFD_NPM13XX`,
  ``CONFIG_MFD_NPM1300_INIT_PRIORITY`` to :kconfig:option:`CONFIG_MFD_NPM13XX_INIT_PRIORITY`

Misc
====

* Moved file ``drivers/memc/memc_nxp_flexram.h`` to
  :zephyr_file:`include/zephyr/drivers/misc/flexram/nxp_flexram.h` so that the
  file can be included using ``<zephyr/drivers/misc/flexram/nxp_flexram.h>``.
  Modification to CMakeList.txt to use include this driver is no longer
  required.
* All memc_flexram_* namespaced things including kconfigs and C API
  have been changed to just flexram_*.

* Select ``CONFIG_ETHOS_U`` instead ``CONFIG_ARM_ETHOS_U`` to enable Ethos-U NPU driver.
* Rename all configs that have prefix ``CONFIG_ARM_ETHOS_U_`` to ``CONFIG_ETHOS_U_``.

Modem
=====

* Removed Kconfig option :kconfig:option:`CONFIG_MODEM_CELLULAR_CMUX_MAX_FRAME_SIZE` in favor of
  :kconfig:option:`CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE` and :kconfig:option:`CONFIG_MODEM_CMUX_MTU`.

Regulator
=========

* Moved file ``include/zephyr/dt-bindings/regulator/npm1300.h`` to
  :zephyr_file:`include/zephyr/dt-bindings/regulator/npm13xx.h` and renamed all instances of
  ``NPM1300`` to ``NPM13XX`` in the defines
* Renamed ``CONFIG_REGULATOR_NPM1300`` to :kconfig:option:`CONFIG_REGULATOR_NPM13XX`,
  ``CONFIG_REGULATOR_NPM1300_COMMON_INIT_PRIORITY`` to :kconfig:option:`REGULATOR_NPM13XX_COMMON_INIT_PRIORITY`,
  ``CONFIG_REGULATOR_NPM1300_INIT_PRIORITY`` to :kconfig:option:`CONFIG_REGULATOR_NPM13XX_INIT_PRIORITY`
* :dtcompatible:`nordic,npm1300-regulator` BUCK and LDO node GPIO properties are now specified as an
  integer array without a GPIO controller, removing the requirement for a
  :dtcompatible:`nordic,npm1300-gpio` node to be present and enabled for GPIO control of the output
  rails. For example, ``enable-gpios = <&pmic_gpios 3 GPIO_ACTIVE_LOW>;`` is now specified as
  ``enable-gpio-config = <3 GPIO_ACTIVE_LOW>;``.

SPI
===

* Renamed ``CONFIG_SPI_MCUX_LPSPI`` to :kconfig:option:`CONFIG_SPI_NXP_LPSPI`,
  and similar for any child configs for that driver, including
  :kconfig:option:`CONFIG_SPI_NXP_LPSPI_DMA` and :kconfig:option:`CONFIG_SPI_NXP_LPSPI_CPU`.
* Renamed the device tree property ``port_sel`` to ``port-sel``.
* Renamed the device tree property ``chip_select`` to ``chip-select``.
* The binding file for :dtcompatible:`andestech,atcspi200` has been renamed to have a name
  matching the compatible string.

Sensors
=======

* ``ltr`` vendor prefix has been renamed to ``liteon``, and with it the
  :dtcompatible:`ltr,f216a` name has been replaced by :dtcompatible:`liteon,ltrf216a`.
  The choice :kconfig:option:`DT_HAS_LTR_F216A_ENABLED` has been replaced with
  :kconfig:option:`DT_HAS_LITEON_LTRF216A_ENABLED` (:github:`85453`)

* :dtcompatible:`ti,tmp116` has been renamed to :dtcompatible:`ti,tmp11x` because it supports
  tmp116, tmp117 and tmp119.

* :dtcompatible:`meas,ms5837` has been replaced by :dtcompatible:`meas,ms5837-30ba`
  and :dtcompatible:`meas,ms5837-02ba`. In order to use one of the two variants, the
  status property needs to be used as well.

* The :dtcompatible:`we,wsen-itds` driver has been renamed to
  :dtcompatible:`we,wsen-itds-2533020201601`.
  The Device Tree can be configured as follows:

  .. code-block:: devicetree

    &i2c0 {
      itds:itds-2533020201601@19 {
        compatible = "we,wsen-itds-2533020201601";
        reg = <0x19>;
        odr = "400";
        op-mode = "high-perf";
        power-mode = "normal";
        events-interrupt-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
        drdy-interrupt-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
      };
    };

* The binding file for :dtcompatible:`raspberrypi,pico-temp.yaml` has been renamed to have a name
  matching the compatible string.

* Moved file ``include/zephyr/drivers/sensor/npm1300_charger.h`` to
  :zephyr_file:`include/zephyr/drivers/sensor/npm13xx_charger.h` and renamed all instances of
  ``NPM1300`` to ``NPM13XX`` in the enums

* Renamed ``CONFIG_NPM1300_CHARGER`` to :kconfig:option:`CONFIG_NPM13XX_CHARGER`

Serial
=======

* ``uart_native_posix`` has been renamed ``uart_native_pty``, and with it its
  kconfig options and DT binding. :dtcompatible:`zephyr,native-posix-uart`  has been deprecated
  in favor of :dtcompatible:`zephyr,native-pty-uart`.
  :kconfig:option:`CONFIG_UART_NATIVE_POSIX` and its related options with
  :kconfig:option:`CONFIG_UART_NATIVE_PTY`.
  The choice :kconfig:option:`CONFIG_NATIVE_UART_0` has been replaced with
  :kconfig:option:`CONFIG_UART_NATIVE_PTY_0`, but now, it is also possible to select if a UART is
  connected to the process stdin/out instead of a PTY at runtime with the command line option
  ``--<uart_name>_stdinout``.
  :kconfig:option:`CONFIG_NATIVE_UART_AUTOATTACH_DEFAULT_CMD` has been replaced with
  :kconfig:option:`CONFIG_UART_NATIVE_PTY_AUTOATTACH_DEFAULT_CMD`.
  :kconfig:option:`CONFIG_UART_NATIVE_WAIT_PTS_READY_ENABLE` has been deprecated. The functionality
  it enabled is now always enabled as there is no drawbacks from it.
  :kconfig:option:`CONFIG_UART_NATIVE_POSIX_PORT_1_ENABLE` has been deprecated. This option does
  nothing now. Instead users should instantiate as many :dtcompatible:`zephyr,native-pty-uart` nodes
  as native PTY UART instances they want. (:github:`86739`)

Stepper
=======

* Refactored the ``stepper_enable(const struct device * dev, bool enable)`` function to
  :c:func:`stepper_enable` & :c:func:`stepper_disable`.

Timer
=====

* ``native_posix_timer`` has been renamed ``native_sim_timer``, and so its kconfig option
  :kconfig:option:`CONFIG_NATIVE_POSIX_TIMER` has been deprecated in favor of
  :kconfig:option:`CONFIG_NATIVE_SIM_TIMER`, (:github:`86612`).

* :dtcompatible:`andestech,machine-timer`, :dtcompatible:`neorv32-machine-timer`,
  :dtcompatible:`telink,machine-timer`, :dtcompatible:`lowrisc,machine-timer`,
  :dtcompatible:`niosv-machine-timer`, and :dtcompatible:`scr,machine-timer` have
  been unified under :dtcompatible:`riscv,machine-timer`.

  The addresses of both ``MTIME`` and ``MTIMECMP`` registers must now be explicitly
  specified using the ``reg`` and ``reg-names`` properties. The ``reg-names`` property
  is now **required**, and must list names corresponding one-to-one with each entry
  in ``reg``. (:github:`84175` and :github:`89847`)

  Example:

  .. code-block:: devicetree

    mtimer: timer@d1000000 {
        compatible = "riscv,machine-timer";
        interrupts-extended = <&cpu0_intc 7>;
        reg = <0xd1000000 0x8
               0xd1000008 0x8>;
        reg-names = "mtime", "mtimecmp";
    };

* It is now possible to use a ``timebase-frequency`` property in the cpus DTS group to provide
  the value for :kconfig:option:`CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC` instead of
  using a value: :github:`91296`

Video
=====

* 8 bit RAW Bayer formats BGGR8 / GBRG8 / GRBG8 / RGGB8 have been renamed by adding
  a S prefix in front:

  ``VIDEO_PIX_FMT_BGGR8`` becomes :c:macro:`VIDEO_PIX_FMT_SBGGR8`
  ``VIDEO_PIX_FMT_GBRG8`` becomes :c:macro:`VIDEO_PIX_FMT_SGBRG8`
  ``VIDEO_PIX_FMT_GRBG8`` becomes :c:macro:`VIDEO_PIX_FMT_SGRBG8`
  ``VIDEO_PIX_FMT_RGGB8`` becomes :c:macro:`VIDEO_PIX_FMT_SRGGB8`

* On STM32 devices, the DCMI driver (:dtcompatible:`st,stm32-dcmi`) now relies on endpoint based
  video-interfaces.yaml bindings for sensor interface properties (such as bus width and
  synchronization signals).
  Also the ``capture-rate`` property has been replaced by the usage of the frame interval API
  :c:func:`video_set_frmival`.
  See (:github:`89627`).

* :c:enum:`video_endpoint_id` has been dropped. It is no longer a parameter in any video API.

* :c:enum:`video_buf_type` has been added. It is a required parameter in the following video APIs:
  :c:func:`set_stream`, :c:func:`video_stream_start`, :c:func:`video_stream_stop`

* ``video_format.pitch`` has been updated to be set explicitly by the driver, a task formerly
  required by the application. This update enables the application to correctly allocate a buffer
  size on a per driver basis. Existing applications will not be broken by this change but can be
  simplified as performed in the sample in the commit ``33dcbe37cfd3593e8c6e9cfd218dd31fdd533598``.

* Samples and projects using the :zephyr:board:`native simulator <native_sim>` now require
  specifying the ``--snippet`` :ref:`video-sw-generator <snippet-video-sw-generator>` to build
  correctly.

* :c:func:`video_query_ctrl` now takes a single argument with the :c:struct:`video_ctrl_query`,
  which now contains a ``video_ctrl_query.dev`` field to specify and read back which device is
  being queried (:github:`91265`).

Watchdog
========
* Renamed ``CONFIG_WDT_NPM1300`` to :kconfig:option:`CONFIG_WDT_NPM13XX`,
  ``CONFIG_WDT_NPM1300_INIT_PRIORITY`` to :kconfig:option:`CONFIG_WDT_NPM13XX_INIT_PRIORITY`

qSPI/oSPI/xSPI
==============

* On STM32 devices, external memories device tree descriptions for size and address are now split
  in two separate properties to comply with specification recommendations.

  For instance, following external flash description ``reg = <0x70000000 DT_SIZE_M(64)>; /* 512 Mbits /``
  is changed to ``reg = <0>;`` ``size = <DT_SIZE_M(512)>; / 512 Mbits */``.

  Note that the property gives the actual size of the memory device in bits.
  Previous mapping address information is now described in xspi, ospi or qspi nodes at SoC dtsi level.

.. zephyr-keep-sorted-stop

Bluetooth
*********

.. zephyr-keep-sorted-start re(^\w)

Bluetooth Audio
===============

* ``CONFIG_BT_CSIP_SET_MEMBER_NOTIFIABLE`` has been renamed to
  :kconfig:option:`CONFIG_BT_CSIP_SET_MEMBER_SIRK_NOTIFIABLE`. (:github:`86763`)

* ``bt_csip_set_member_get_sirk`` has been removed. Use :c:func:`bt_csip_set_member_get_info` to get
  the SIRK (and other information). (:github:`86996`)

* ``BT_AUDIO_CONTEXT_TYPE_PROHIBITED`` has been renamed to
  :c:enumerator:`BT_AUDIO_CONTEXT_TYPE_NONE`. (:github:`89506`)

Bluetooth Classic
=================

* The parameters of HFP AG callback ``sco_disconnected`` of the struct :c:struct:`bt_hfp_ag_cb`
  have been changed to SCO connection object ``struct bt_conn *sco_conn`` and the disconnection
  reason of the SCO connection ``uint8_t reason``.

Bluetooth HCI
=============

* The buffer types passing through the HCI driver interface are now indicated as H:4 encoded prefix
  bytes as part of the buffer payload itself. The bt_buf_set_type() and bt_buf_get_type() functions
  have been deprecated, but are still usable, with the exception that they can only be
  called once per buffer.

* The :c:func:`bt_hci_cmd_create` function has been deprecated and the new :c:func:`bt_hci_cmd_alloc`
  function should be used instead. The new function takes no parameters because the command
  sending functions have been updated to do the command header encoding.

Bluetooth Host
==============

* The symbols ``BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_<NUMBER>`` in
  :zephyr_file:`include/zephyr/bluetooth/conn.h` have been renamed
  to ``BT_LE_CS_TONE_ANTENNA_CONFIGURATION_A<NUMBER>_B<NUMBER>``.

* The ISO data paths are not longer setup automatically, and shall explicitly be setup and removed
  by the application by calling :c:func:`bt_iso_setup_data_path` and
  :c:func:`bt_iso_remove_data_path` respectively. (:github:`75549`)

* ``BT_ISO_CHAN_TYPE_CONNECTED`` has been split into ``BT_ISO_CHAN_TYPE_CENTRAL`` and
  ``BT_ISO_CHAN_TYPE_PERIPHERAL`` to better describe the type of the ISO channel, as behavior for
  each role may be different. Any existing uses/checks for ``BT_ISO_CHAN_TYPE_CONNECTED``
  can be replaced with an ``||`` of the two. (:github:`75549`)

* The ``struct _bt_gatt_ccc`` in :zephyr_file:`include/zephyr/bluetooth/gatt.h` has been renamed to
  struct :c:struct:`bt_gatt_ccc_managed_user_data`. (:github:`88652`)

* The macro ``BT_GATT_CCC_INITIALIZER`` in :zephyr_file:`include/zephyr/bluetooth/gatt.h`
  has been renamed to :c:macro:`BT_GATT_CCC_MANAGED_USER_DATA_INIT`. (:github:`88652`)

* The ``CONFIG_BT_ISO_TX_FRAG_COUNT`` Kconfig option was removed as it was completely unused.
  Any uses of it can simply be removed. (:github:`89836`)

.. zephyr-keep-sorted-stop

Networking
**********

* The struct ``net_linkaddr_storage`` has been renamed to struct
  :c:struct:`net_linkaddr` and the old struct ``net_linkaddr`` has been removed.
  The struct :c:struct:`net_linkaddr` now contains space to store the link
  address instead of having pointer that point to the link address. This avoids
  possible dangling pointers when cloning struct :c:struct:`net_pkt`. This will
  increase the size of struct :c:struct:`net_pkt` by 4 octets for IEEE 802.15.4,
  but there is no size increase for other network technologies like Ethernet.
  Note that any code that is using struct :c:struct:`net_linkaddr` directly, and
  which has checks like ``if (lladdr->addr == NULL)``, will no longer work as expected
  (because the addr is not a pointer) and must be changed to ``if (lladdr->len == 0)``
  if the code wants to check that the link address is not set.

* TLS credential type ``TLS_CREDENTIAL_SERVER_CERTIFICATE`` was renamed to
  more generic :c:enumerator:`TLS_CREDENTIAL_PUBLIC_CERTIFICATE` to better
  reflect the purpose of this credential type.

* The MQTT public API function :c:func:`mqtt_disconnect` has changed. The function
  now accepts additional ``param`` parameter to support MQTT 5.0 case. The parameter
  is optional and not used with older MQTT versions - MQTT 3.1.1 users should pass
  NULL as an argument.

* The ``AF_PACKET/SOCK_RAW/IPPROTO_RAW`` socket combination is no longer supported,
  as ``AF_PACKET`` sockets should only accept IEEE 802.3 protocol numbers. As an
  alternative, ``AF_PACKET/SOCK_DGRAM/ETH_P_ALL`` or ``AF_INET(6)/SOCK_RAW/IPPROTO_IP``
  sockets can be used, depending on the actual use case.

* The HTTP server now respects the configured ``_concurrent`` and  ``_backlog`` values. Check that
  you provide applicable values to :c:macro:`HTTP_SERVICE_DEFINE_EMPTY`,
  :c:macro:`HTTPS_SERVICE_DEFINE_EMPTY`, :c:macro:`HTTP_SERVICE_DEFINE` and
  :c:macro:`HTTPS_SERVICE_DEFINE`.

* :kconfig:option:`CONFIG_NET_ZPERF` no longer includes server support by default. To use
  the server commands, enable :kconfig:option:`CONFIG_NET_ZPERF_SERVER`. If server support
  is not needed, :kconfig:option:`CONFIG_ZVFS_POLL_MAX` can possibly be reduced.

* The L2 Wi-Fi shell now supports interface option for most commands, to accommodate this
  change some of the existing options have been renamed. The following table
  summarizes the changes:

  +------------------------+---------------------+--------------------+
  | Command(s)             | Old option          | New option         |
  +------------------------+---------------------+--------------------+
  | ``wifi connect``       | ``-i``              | ``-g``             |
  | ``wifi ap enable``     |                     |                    |
  +------------------------+---------------------+--------------------+
  | ``wifi twt setup``     | ``-i``              | ``-p``             |
  +------------------------+---------------------+--------------------+
  | ``wifi ap config``     | ``-i``              | ``-t``             |
  +------------------------+---------------------+--------------------+
  | ``wifi mode``          | ``--if-index``      | ``--iface``        |
  | ``wifi channel``       |                     |                    |
  | ``wifi packet_filter`` |                     |                    |
  +------------------------+---------------------+--------------------+

* The :c:type:`http_response_cb_t` HTTP client response callback signature has
  changed. The callback function now returns ``int`` instead of ``void``. This
  allows the application to abort the HTTP connection. Existing applications
  need to update their response callback implementations. To retain current
  behavior, simply return 0 from the callback.

* The API signature of ``net_mgmt`` event handler :c:type:`net_mgmt_event_handler_t` and
  request handler :c:type:`net_mgmt_request_handler_t` has changed. The management event
  type is changed from ``uint32_t`` to ``uint64_t``. The change allows event number values
  to be bit masks instead of enum values. The layer code still stays as a enum value.
  The :c:macro:`NET_MGMT_LAYER_CODE` and :c:macro:`NET_MGMT_GET_COMMAND` can be used to get
  the layer code and management event command from the actual event value in the request or
  event handlers if needed.

* The socket options for ``net_mgmt`` type sockets cannot directly be network management
  event types as those are now ``uint64_t`` and the socket option expects a normal 32 bit
  integer value. Because of this, a new ``SO_NET_MGMT_ETHERNET_SET_QAV_PARAM``
  and ``SO_NET_MGMT_ETHERNET_GET_QAV_PARAM`` socket options are created that will replace
  the previously used ``NET_REQUEST_ETHERNET_SET_QAV_PARAM`` and
  ``NET_REQUEST_ETHERNET_GET_QAV_PARAM`` options.

* The DNS server resolver configuration functions :c:func:`dns_resolve_reconfigure` and
  :c:func:`dns_resolve_reconfigure_with_interfaces` now require that the user supplies
  the source of the DNS server information. For example when DNS server information is
  received via DHCPv4, then :c:enumerator:`DNS_SOURCE_DHCPV4` needs to be specified.

.. zephyr-keep-sorted-start re(^\w)

LwM2M
=====

* Accelerometer object: optional resources Y value, Z value, min range value,
  max range value can now be used optionally as per the accelerometer object's
  specification. Users of these resources will now need to provide a read
  buffer.

OpenThread
==========

* The OpenThread stack integration in Zephyr has undergone a major refactor.
  The implementation has been moved from the Zephyr networking layer (``subsys/net/l2/openthread/``)
  to a dedicated module (``modules/openthread/``).

* OpenThread is now a standalone module in Zephyr.
  It can be used independently of Zephyr's networking stack (L2 and IEEE802.15.4 shim layers).
  This enables new use cases, such as applications that use OpenThread directly with their
  own IEEE802.15.4 driver, or that do not need the full Zephyr networking stack.

* Most functions in the :zephyr_file:`include/zephyr/net/openthread.h` file have been deprecated.
  These deprecated APIs are still available for backward compatibility, but new applications should
  use the new APIs provided by the OpenThread module. The following list summarizes the changes:

  * Mutex handling:

    * Previously:

      * ``openthread_api_mutex_lock``
      * ``openthread_api_mutex_try_lock``
      * ``openthread_api_mutex_unlock``

    * Now use:

      * :c:func:`openthread_mutex_lock`
      * :c:func:`openthread_mutex_try_lock`
      * :c:func:`openthread_mutex_unlock`

  * OpenThread starting:

    * Previously: ``openthread_start``
    * Now use: :c:func:`openthread_run`

  * Callback registration:

    * Previously:

      * ``openthread_state_changed_cb_register``
      * ``openthread_state_changed_cb_unregister``

    * Now use:

      * :c:func:`openthread_state_changed_callback_register`
      * :c:func:`openthread_state_changed_callback_unregister`

  * Callback structure:

    * Previously: ``openthread_state_changed_cb``
    * Now use: :c:struct:`openthread_state_changed_callback`

  * The following :c:struct:`openthread_context` struct fields are deprecated and shall not be used
    in new code anymore:

    * ``instance``
    * ``api_lock``
    * ``work_q``
    * ``api_work``
    * ``state_change_cbs``

  * The new functions that were not present before:

    * :c:func:`openthread_init` to initialize the OpenThread stack.
    * :c:func:`openthread_stop` to stop and disable the OpenThread stack.
    * :c:func:`openthread_set_receive_cb` to set the receive callback for the OpenThread stack.

* The OpenThread-related Kconfig options from ``subsys/net/l2/openthread/Kconfig``
  have been moved to :zephyr_file:`modules/openthread/Kconfig`. All Kconfig options remain the same.
  You can still use them in the same way as before, but to modify them, use the new path in the
  menuconfig or guiconfig.

* If the :kconfig:option:`CONFIG_NET_L2_OPENTHREAD` Kconfig option is enabled, Zephyr's L2 layer
  will use the new OpenThread module API as its backend. The L2 layer no longer implements
  OpenThread itself, but delegates the implementation to the module.

* For existing applications using OpenThread through Zephyr's networking stack:

  * Your application should continue to work, as the old APIs are still available for compatibility.
    However, you are encouraged to migrate to the new APIs for future-proofing and use the new
    modular structure.
  * Update any references to OpenThread Kconfig options to use the new path
    (``modules/openthread/Kconfig``) in your configuration tools.

* For applications using :c:struct:`openthread_context` or other deprecated APIs:

  * Begin migrating to the new APIs. The deprecated APIs will be removed in a future release.
  * Avoid direct use of :c:struct:`openthread_context` and related fields; use the new
    initialization and callback registration functions instead.

* For new applications or those using OpenThread without Zephyr L2:

  * Use the new initialization (:c:func:`openthread_init`), run (:c:func:`openthread_run`),
    and callback registration APIs (:c:func:`openthread_state_change_callback_register`).
  * You can now use OpenThread directly, without enabling Zephyr's L2 or IEEE802.15.4 layers, if
    your use case allows.

.. zephyr-keep-sorted-stop


Other subsystems
****************

.. zephyr-keep-sorted-start re(^\w)

Modbus
======

* The ``client_stop_bits`` field in :c:struct:`modbus_serial_param` has been renamed into ``stop_bits``.
  The setting is valid in both client and server modes.
* Custom stop-bit settings are disabled by default and should be enabled
  by :kconfig:option:`CONFIG_MODBUS_NONCOMPLIANT_SERIAL_MODE`.

State Machine Framework
=======================

* :c:func:`smf_set_handled` has been removed.
* State run actions now return an :c:enum:`smf_state_result` value instead of void. and the return
  code determines if the event is propagated to parent run actions or has been handled. A run action
  that handles the event completely should return :c:enum:`SMF_EVENT_HANDLED`, and run actions that
  propagate handling to parent states should return :c:enum:`SMF_EVENT_PROPAGATE`.
* Flat state machines ignore the return value; returning :c:enum:`SMF_EVENT_HANDLED`
  would be the most technically accurate response.

hawkBit
=======

* When :kconfig:option:`CONFIG_HAWKBIT_CUSTOM_DEVICE_ID` is enabled, device_id will no longer
  be prepended with :kconfig:option:`CONFIG_BOARD`. It is the user's responsibility to write a
  callback that prepends the board name if needed.

.. zephyr-keep-sorted-stop

Modules
*******

.. zephyr-keep-sorted-start re(^\w)

CMSIS
=====

* Cortex-M boards/socs now require the ``CMSIS_6`` module to build properly (instead of ``cmsis``
  which was CMSIS 5.9.0).
  If trying to build a Cortex-M board, do a ``west update`` to make sure that ``CMSIS_6`` module is
  available before running ``west build`` or other commands.

  Boards or SOCs or modules using the older ``cmsis`` module either with a local copy or via the
  :kconfig:option:`CONFIG_ZEPHYR_CMSIS_MODULE_DIR` are requested to move to the ``CMSIS_6`` module
  which can be accessed via the :kconfig:option:`CONFIG_ZEPHYR_CMSIS_6_MODULE_DIR` configuration.

  Note: Zephyr will continue using the older ``cmsis`` module for Cortex-A and Cortex-R targets.

.. zephyr-keep-sorted-stop

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

* Moved :kconfig:option:`CONFIG_SRAM_VECTOR_TABLE` from ``zephyr/Kconfig.zephyr`` to
  ``zephyr/arch/Kconfig`` and added dependency to :kconfig:option:`CONFIG_XIP`,
  :kconfig:option:`CONFIG_ARCH_HAS_VECTOR_TABLE_RELOCATION` and
  :kconfig:option:`CONFIG_ROMSTART_RELOCATION_ROM` to support relocation
  of vector table in RAM.
* Renamed :kconfig:option:`CONFIG_DEBUG_INFO` to :kconfig:option:`CONFIG_X86_DEBUG_INFO` to
  better reflect its purpose. This option is now only available for x86 architecture.

---

### Doc Releases Migration Guide 4.3 (`doc/releases/migration-guide-4.3.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.3:

Migration guide to Zephyr v4.3.0
################################

This document describes the changes required when migrating your application from Zephyr v4.2.0 to
Zephyr v4.3.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.3>`.

.. contents::
    :local:
    :depth: 2

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

Kernel
******

* :c:func:`device_init` Earlier releases returned a positive +errno value in case
  of device init failure due to a bug. This is now fixed to return the correct
  negative -errno value. Applications that implemented workarounds for this
  issue should now update their code accordingly.

Base Libraries
**************

* UTF-8 utils declarations (:c:func:`utf8_trunc`, :c:func:`utf8_lcpy`) have
  been moved from ``util.h`` to a separate
  :zephyr_file:`include/zephyr/sys/util_utf8.h` file.

* ``Z_MIN``, ``Z_MAX`` and ``Z_CLAMP`` macros have been renamed to
  :c:macro:`min` :c:macro:`max` and :c:macro:`clamp`.

* The header files ``<zephyr/posix/time.h>``, ``<zephyr/posix/signal.h>`` should no longer be used.
  Include them in the standard path as ``<time.h>``, and ``<signal.h>``, provided by the C library.
  Non-POSIX C library maintainers may include :zephyr_file:`include/zephyr/posix/posix_time.h`
  and :zephyr_file:`include/zephyr/posix/posix_signal.h` to portably provide POSIX definitions.

* POSIX limits are no longer defined in ``<zephyr/posix/posix_features.h>``. Similarly, include them
  in the standard path via ``<limits.h>``, provided by the C library. Non-POSIX C library maintainers
  may include :zephyr_file:`include/zephyr/posix/posix_limits.h` for Zephyr's definitions. Some
  runtime-invariant values may need to be queried via :c:func:`sysconf`.

* The number of file descriptor table size and its availability is now determined by
  a ``ZVFS_OPEN_SIZE`` define instead of the :kconfig:option:`CONFIG_ZVFS_OPEN_MAX`
  Kconfig option. Subsystems can specify their own custom file descriptor table size
  requirements by specifying Kconfig options with the prefix ``CONFIG_ZVFS_OPEN_ADD_SIZE_``.
  The old Kconfig option still exists, but will be overridden if the custom requirements
  are larger. To force the old Kconfig option to be used, even when its value is less
  than the indicated custom requirements, a new :kconfig:option:`CONFIG_ZVFS_OPEN_IGNORE_MIN`
  option has been introduced (which defaults to being disabled).

Boards
******

* b_u585i_iot02a/ns: The flash layout was changed to be in sync with the upstream TF-M 2.2.1 board
  configurations. The new layout expands the flash partitions, moving the secondary ones to the
  external NOR flash. This change currently prevents upgrade from older Zephyr release images to
  Zephyr 4.3 release images. More details in the TF-M migration and release notes.

* nucleo_h753zi: the flash layout was updated and firmware upgrade may fail due to layout
  incompatibility with the previous layout. The new layout includes storage partition enlarged to
  2 sectors, scratch partition removed and all flash partitions reordered for better structure.

* mimxrt11x0: renamed lpadc1 to lpadc2 and renamed lpadc0 to lpadc1.

* NXP ``frdm_mcxa166`` is renamed to ``frdm_mcxa346``.
* NXP ``frdm_mcxa276`` is renamed to ``frdm_mcxa266``.

* Panasonic ``panb511evb`` is renamed to ``panb611evb``.

* STM32 boards OpenOCD configuration files have been changed to support latest OpenOCD versions
  (> v0.12.0) in which the HLA/SWD transport has been deprecated (see
  https://review.openocd.org/c/openocd/+/8523 and commit
  https://sourceforge.net/p/openocd/code/ci/34ec5536c0ba3315bc5a841244bbf70141ccfbb4/).
  Issues may be encountered when connecting to an ST-Link adapter running firmware prior to
  v2j24 which do not support the new transport. In this case, the ST-Link firmware should
  be upgraded or, if not possible, the OpenOCD configuration script should be changed to
  source "interface/stlink-hla.cfg" and select the "hla_swd" interface explicitly.
  Backward compatibility with OpenOCD v0.12.0 or older is maintained.

Device Drivers and Devicetree
*****************************

.. zephyr-keep-sorted-start re(^\w)

ADC
===

* ``iadc_gecko.c`` driver is replaced by ``adc_silabs_iadc.c``.
  :dtcompatible:`silabs,gecko-iadc` is replaced by :dtcompatible:`silabs,iadc`.

* :dtcompatible:`st,stm32-adc` and its derivatives now require the ``clock-names`` property to be
  defined and to match the number of clocks in the ``clocks`` property. The expected clock names are
  ``adcx`` for the register clock, ``adc-ker`` for the kernel source clock, and ``adc-pre`` to set
  the ADC prescaler (for series where it is located in the RCC registers).

Clock Control
=============

* :kconfig:option:`CONFIG_CLOCK_STM32_HSE_CLOCK` is no longer user-configurable. Its value is now
  always taken from the ``clock-frequency`` property of ``&clk_hse`` DT node, but only if the node
  is enabled (otherwise, the symbol is not defined). This change should only affect STM32 MPU-based
  platforms and aligns them with existing practice from STM32 MCU platforms.

* :dtcompatible:`st,stm32f1-rcc` and :dtcompatible:`st,stm32f3-rcc` do not exist anymore. Therefore
  ``adc-prescaler``, ``adc12-prescaler`` and ``adc34-prescaler`` properties are no longer defined
  either. They are replaced by adding the prescaler as an additional clock in the ADC ``clocks``
  property.

Comparator
==========

* :dtcompatible:`nordic,nrf-comp` and :dtcompatible:`nordic,nrf-lpcomp` ``psel`` and ``extrefsel``
  properties type has been changed to integer. The value of these properties is in the range
  of :c:macro:`NRF_COMP_AIN0` to :c:macro:`NRF_COMP_AIN_VDDH_DIV5`, where :c:macro:`NRF_COMP_AIN0`
  to :c:macro:`NRF_COMP_AIN7` represent the external inputs AIN0 to AIN7,
  :c:macro:`NRF_COMP_AIN_VDD_DIV2` represents internal reference VDD/2,
  and :c:macro:`NRF_COMP_AIN_VDDH_DIV5` represents VDDH/5.
  The old ``string`` properties type is deprecated.

DMA
===

* DMA no longer implements user mode syscalls as part of its API. The syscalls were determined to be
  too broadly defined in access and impossible to implement the syscall parameter verification step
  in a safe manner.

Ethernet
========

* The :dtcompatible:`microchip,vsc8541` PHY driver now expects the reset-gpios entry to specify
  the GPIO_ACTIVE_LOW flag when the reset is being used as active low. Previously the active-low
  nature was hard-coded into the driver. (:github:`91726`).

* CRC checksum generation offloading to hardware is now explicitly disabled rather then explicitly
  enabled in the Xilinx GEM Ethernet driver (:dtcompatible:`xlnx,gem`). By default, offloading is
  now enabled by default to improve performance, however, offloading is always disabled for QEMU
  targets due to the checksum generation in hardware not being emulated regardless of whether it
  is explicitly disabled via the Devicetree or not. (:github:`95435`)

  * Replaced Devicetree property ``rx-checksum-offload`` which enabled RX checksum offloading
    ``disable-rx-checksum-offload`` which now actively disables it.
  * Replaced Devicetree property ``tx-checksum-offload`` which enabled TX checksum offloading
    ``disable-tx-checksum-offload`` which now actively disables it.

* The Xilinx GEM Ethernet driver (:dtcompatible:`xlnx,gem`) now obtains the AMBA AHB data bus
  width matching the current target SoC (either Zynq-7000 or ZynqMP) from a design configuration
  register at run-time, making the Devicetree property ``amba-ahb-dbus-width`` obsolete, which
  has therefore been removed.

* The :dtcompatible:`nxp,enet-mac` and :dtcompatible:`xlnx,gem` drivers are no longer configuring
  the link speed and duplex mode of the phy via  :c:func:`phy_configure_link` during initialization.
  Instead, the user has to use the ``default-speeds`` Devicetree property of the phy, if they want
  to restrict the advertised speeds for auto-negotiation, when the mac only supports a subset of the
  phy supported speeds. (:github:`91572`)

MFD
===

* Driver support for AXP2101 has been separated from the AXP192 one. As a consequence the
  kconfig symbol ``MFD_AXP192_AXP2101`` is removed. :kconfig:option:`MFD_AXP192` is now to be
  used for AXP192 device while :kconfig:option:`MFD_AXP2101` for the AXP2101 one.

MISC
====

* The nrf_etr driver has been migrated to drivers/debug. As a consequence the related Kconfig
  symbol was renamed from ``NRF_ETR`` to :kconfig:option:`DEBUG_NRF_ETR`, along with the rest of
  the ``NRF_ETR`` symbols. Also the driver needs to be explicitly enabled via
  :kconfig:option:`DEBUG_DRIVER` as it is no longer built by default.

PWM
===

* :dtcompatible:`nxp,pca9685` ``invert`` property has been removed and you can now use the
  :c:macro:`PWM_POLARITY_INVERTED` or :c:macro:`PWM_POLARITY_NORMAL` flags as specifier cells for
  space "pwm" are now named: ``['channel', 'period', 'flags']`` (old value:
  ``['channel', 'period']``) and ``#pwm-cells`` const value changed from 2 to 3.

Phy
===

* Nodes with compatible property :dtcompatible:`st,stm32u5-otghs-phy` now need to select the
  CLKSEL (phy reference clock) in the SYSCFG_OTGHSPHYCR register using the new property
  clock-reference. The selection directly depends on the value on OTGHSSEL (OTG_HS PHY kernel
  clock source selection) located in the RCC_CCIPR2 register.

SPI
===

* The macros :c:macro:`SPI_CS_CONTROL_INIT` :c:macro:`SPI_CS_CONTROL_INIT_INST`,
  :c:macro:`SPI_CONFIG_DT`, :c:macro:`SPI_CONFIG_DT_INST`, :c:macro:`SPI_DT_SPEC_GET`,
  and :c:macro:`SPI_DT_SPEC_INST_GET` have been changed so that they do not need to be
  provided a delay parameter anymore. This is because the timing parameters of a SPI peripheral
  chip select should now be specified in DT with the
  ``spi-cs-setup-delay-ns`` and ``spi-cs-hold-delay-ns`` properties.
  (:github:`87427`).

Sensors
=======

* Nodes with compatible property :dtcompatible:`invensense,icm42688` now additionally need to also
  include :dtcompatible:`invensense,icm4268x` in order to work.

Stepper
=======

* :dtcompatible:`zephyr,gpio-stepper` has been replaced by :dtcompatible:`zephyr,h-bridge-stepper`.

USB
===

* The USB Video Class was configuring the framerate and format of the source video device.
  This is now to be done by the application after the host selected the format (:github:`93192`).

.. zephyr-keep-sorted-stop

Bluetooth
*********

* :c:struct:`bt_le_cs_test_param` and :c:struct:`bt_le_cs_create_config_params` now require
  providing both the main and sub mode as a single parameter.
* :c:struct:`bt_conn_le_cs_config` now reports both the main and sub mode as a single parameter.
* :c:struct:`bt_conn_le_cs_main_mode` and :c:struct:`bt_conn_le_cs_sub_mode` have been replaced
  with :c:struct:`bt_conn_le_cs_mode`.

Bluetooth Controller
====================

* The following have been renamed:

  * :kconfig:option:`CONFIG_BT_CTRL_ADV_ADI_IN_SCAN_RSP` to
    :kconfig:option:`CONFIG_BT_CTLR_ADV_ADI_IN_SCAN_RSP`
  * :c:struct:`bt_hci_vs_fata_error_cpu_data_cortex_m` to
    :c:struct:`bt_hci_vs_fatal_error_cpu_data_cortex_m` and now contains the program counter
    value.

.. zephyr-keep-sorted-start re(^\w)

Bluetooth Audio
===============

* :c:struct:`bt_audio_codec_cfg` now requires setting the target latency and target PHY explicitly,
  rather than always setting the target latency to "Balanced" and the target PHY to LE 2M.
  To keep current functionality, set the ``target_latency`` to
  :c:enumerator:`BT_AUDIO_CODEC_CFG_TARGET_LATENCY_BALANCED` and ``target_phy`` to
  :c:enumerator:`BT_AUDIO_CODEC_CFG_TARGET_PHY_2M`.
  The :c:macro:`BT_AUDIO_CODEC_CFG` macro defaults to these values.
  (:github:`93825`)
* Setting the BGS role for GMAP now requires also supporting and implementing the
  :kconfig:option:`CONFIG_BT_BAP_BROADCAST_ASSISTANT`.
  See the :zephyr:code-sample:`bluetooth_bap_broadcast_assistant` sample as a reference.
* The BAP Scan Delegator will no longer automatically update the PA sync state, and
  :c:func:`bt_bap_scan_delegator_set_pa_state` must be used to update the state. If the
  BAP Scan Delegator is used together with the BAP Broadcast Sink, then the PA state of the
  receive state of a :c:struct:`bt_bap_broadcast_sink` will still be automatically updated when the
  PA state changes. (:github:`95453`)


.. zephyr-keep-sorted-stop

Bluetooth HCI
=============

* The deprecated ``ipm`` value was removed from ``bt-hci-bus`` Devicetree property.
  ``ipc`` should be used instead.

Bluetooth Mesh
==============

* Kconfigs ``CONFIG_BT_MESH_USES_MBEDTLS_PSA`` and ``CONFIG_BT_MESH_USES_TFM_PSA`` have
  been removed. The selection of the PSA Crypto provider is now automatically controlled
  by Kconfig :kconfig:option:`CONFIG_PSA_CRYPTO`.

Bluetooth Host
==============

* :kconfig:option:`CONFIG_BT_FIXED_PASSKEY` has been deprecated. Instead, the application can
  provide passkeys for pairing using the :c:member:`bt_conn_auth_cb.app_passkey` callback, which is
  available when :kconfig:option:`CONFIG_BT_APP_PASSKEY` is enabled. The application can return the
  passkey for pairing, or :c:macro:`BT_PASSKEY_RAND` for the Host to generate a random passkey
  instead.

Power management
****************

* :kconfig:option:`CONFIG_PM_S2RAM` and :kconfig:option:`PM_S2RAM_CUSTOM_MARKING` have been
  refactored to be automatically managed by SoCs and the Devicetree. Applications shall no
  longer enable them directly, instead, enable or disable the "suspend-to-ram" power states
  in the Devicetree.

* For the NXP RW61x, the Devicetree property ``exit-latency-us`` has been updated to reflect more
  accurate, measured wake-up times. For applications utilizing Standby mode (PM3), this update and
  an increase to the ``min-residency-us`` Devicetree property may influence how the system
  transitions between power modes. In some cases, this could lead to changes in power consumption.

Networking
**********

* The HTTP server now respects the configured ``_config`` value. Check that
  you provide applicable value to :c:macro:`HTTP_SERVICE_DEFINE_EMPTY`,
  :c:macro:`HTTPS_SERVICE_DEFINE_EMPTY`, :c:macro:`HTTP_SERVICE_DEFINE` and
  :c:macro:`HTTPS_SERVICE_DEFINE`.

* The size of socket address length type :c:type:`socklen_t` has changed. It is now defined to
  be always 32 bit ``uint32_t`` in order to be aligned with Linux. Previously it was defined as
  ``size_t`` which meant that the size could be either 32 bit or 64 bit depending on system
  configuration.

* :c:func:`net_icmp_init_ctx` API has changed, it now accepts an additional ``family`` argument
  to indicate what packet family the context should work with. For ICMPv4 contexts, use ``AF_INET``,
  for ICMPv6 contexts use ``AF_INET6``.

.. zephyr-keep-sorted-start re(^\w)

CoAP
====

* The :c:type:`coap_client_response_cb_t` signature has changed. The list of arguments
  is passed as a :c:struct:`coap_client_response_data` pointer instead.

* The :c:struct:`coap_client_request` has changed to improve the library's resilience against
  misconfiguration (i.e. using transient pointers within the struct):

  * The :c:member:`coap_client_request.path` is now a ``char`` array instead of a pointer.
    The array size is configurable with :kconfig:option:`CONFIG_COAP_CLIENT_MAX_PATH_LENGTH`.
  * The :c:member:`coap_client_request.options` is now a :c:struct:`coap_client_option` array
    instead of a pointer. The array size is configurable with
    :kconfig:option:`CONFIG_COAP_CLIENT_MAX_EXTRA_OPTIONS`.

.. zephyr-keep-sorted-stop

Modem
*****

* ``CONFIG_MODEM_AT_SHELL_USER_PIPE`` has been renamed to :kconfig:option:`CONFIG_MODEM_AT_USER_PIPE`.
* ``CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE`` has been updated to :kconfig:option:`CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE_EXTRA`,
  which only takes the number of extra bytes desired over the default of (:kconfig:option:`CONFIG_MODEM_CMUX_MTU` + 7).

Display
*******

* The RGB565 and BGR565 pixel formats were used interchangeably in the display sample.
  This has now been fixed. Boards and applications that were tested or developed based on the
  previous sample may be affected by this change (see :github:`79996` for more information).

* SSD1363's properties using 'greyscale' now use 'grayscale'.

PTP Clock
*********

* The doc of :c:func:`ptp_clock_rate_adjust` API didn't provide proper and clear function description.
  Drivers implemented it to adjust rate ratio relative to the current frequency.
  Now PI servo is introduced in both PTP and gPTP, and this API function is changed to use for rate
  ratio adjusting based on nominal frequency. Drivers implementing :c:func:`ptp_clock_rate_adjust`
  should be adjusted to account for the new behavior.

Video
*****

* The ``min_line_count`` and ``max_line_count`` fields have been removed from :c:struct:`video_caps`.
  Application should base on the new :c:member:`video_format.size` to allocate buffers.

Other subsystems
****************

.. zephyr-keep-sorted-start re(^\w)

Cellular
========

 * :c:enum:`cellular_access_technology` values have been redefined to align with 3GPP TS 27.007.
 * :c:enum:`cellular_registration_status` values have been extended to align with 3GPP TS 27.007.

Crypto
======

* Hashing operations now require a constant input in the :c:struct:`hash_pkt`.
  This shouldn't affect any existing code, unless an out-of-tree hashing backend actually
  performs that operation in-place (see :github:`94218`)

Flash Map
=========

* With the long-term goal of transitioning to PSA Crypto API as the only crypto support in Zephyr,
  :kconfig:option:`FLASH_AREA_CHECK_INTEGRITY_MBEDTLS` is deprecated.
  :kconfig:option:`FLASH_AREA_CHECK_INTEGRITY_PSA` is now the default choice: if TF-M is not
  enabled or not supported by the platform, Mbed TLS will be used as PSA Crypto API provider.

Logging
=======

* The UART dictionary log parsing script
  ``scripts/logging/dictionary/log_parser_uart.py`` has been deprecated. Instead, the
  more generic script of :zephyr_file:`scripts/logging/dictionary/live_log_parser.py` should be
  used. The new script supports the same functionality (and more), but requires different command
  line arguments when invoked.

MCUmgr
======

* The :ref:`OS mgmt<mcumgr_smp_group_0>` :ref:`mcumgr_os_application_info` command's response for
  hardware platform has been updated to output the board target instead of the board and board
  revision, which now includes the SoC and board variant. The old behaviour has been deprecated,
  but can still be used by enabling
  :kconfig:option:`CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM`.

* Support for legacy Mbed TLS hash crypto is removed and only PSA Crypto API is used.
  :kconfig:option:`CONFIG_MCUMGR_GRP_FS_HASH_SHA256` automatically enables Mbed TLS and its
  PSA Crypto implementation if TF-M is not enabled in the build.

Mbed TLS
========

* In order to improve the 1:1 matching between Zephyr Kconfig and Mbed TLS build symbols, the
  following Kconfigs were renamed:

  * :kconfig:option:`CONFIG_MBEDTLS_MD` -> :kconfig:option:`CONFIG_MBEDTLS_MD_C`
  * :kconfig:option:`CONFIG_MBEDTLS_LMS` -> :kconfig:option:`CONFIG_MBEDTLS_LMS_C`
  * :kconfig:option:`CONFIG_MBEDTLS_TLS_VERSION_1_2` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_TLS1_2`
  * :kconfig:option:`CONFIG_MBEDTLS_DTLS` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_DTLS`
  * :kconfig:option:`CONFIG_MBEDTLS_TLS_VERSION_1_3` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_TLS1_3`
  * :kconfig:option:`CONFIG_MBEDTLS_TLS_SESSION_TICKETS` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_SESSION_TICKETS`
  * :kconfig:option:`CONFIG_MBEDTLS_CTR_DRBG_ENABLED` -> :kconfig:option:`CONFIG_MBEDTLS_CTR_DRBG_C`
  * :kconfig:option:`CONFIG_MBEDTLS_HMAC_DRBG_ENABLED` -> :kconfig:option:`CONFIG_MBEDTLS_HMAC_DRBG_C`

RTIO
====

* Callback operations now take an additional argument corresponding to the result code of the first
  error in the chain.
* Callback operations are always called regardless of success/error status of previous submissions
  in the chain.

Secure storage
==============

* The size of :c:type:`psa_storage_uid_t`, used to identify storage entries, was changed from 64 to
  30 bits.
  This change breaks backward compatibility with previously stored entries for which authentication
  will start failing.
  Enable :kconfig:option:`CONFIG_SECURE_STORAGE_64_BIT_UID` if you are updating an existing
  installation from an earlier version of Zephyr and want to keep the pre-existing entries.
  (:github:`94171`)

Shell
=====

* The MQTT topics related to :kconfig:option:`SHELL_BACKEND_MQTT` have been renamed. Renamed
  ``<device_id>_rx`` to ``<device_id>/sh/rx`` and ``<device_id>_tx`` to ``<device_id>/sh/tx``. The
  part after the ``<device_id>`` is now configurable via :kconfig:option:`SHELL_MQTT_TOPIC_RX_ID`
  and :kconfig:option:`SHELL_MQTT_TOPIC_TX_ID`. This allows keeping the previous topics for backward
  compatibility.
  (:github:`92677`).

UpdateHub
=========

* Legacy Mbed TLS as an option for crypto support has been removed and PSA Crypto is now used in all
  cases. :kconfig:option:`CONFIG_UPDATEHUB` will automatically enable the Mbed TLS implementation of
  PSA Crypto if TF-M is not enabled in the build.

.. zephyr-keep-sorted-stop

Modules
*******

* The TinyCrypt library was removed as the upstream version is no longer maintained.
  PSA Crypto API is now the recommended cryptographic library for Zephyr.

MCUboot
=======

* The default operating mode for MCUboot has been changed to swap using offset, this provides
  faster swap updates, needs less overhead, and reduces the flash endurance cycles required to
  perform an update, the previous default was swap using move. If a board was optimised for swap
  using move by having a primary slot that was one sector larger than the secondary then this
  needs to change to have the secondary slot one sector larger than the primary (for optimised
  usage, it is still supported to have both slots the same number of sectors). Alternatively, the
  previous swap using move mode can be selected in sysbuild by using
  :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE`.

Silabs
======

* Aligned the name of the Rail options with the other SiSDK related options:

  * :kconfig:option:`CONFIG_RAIL_PA_CURVE_HEADER` to
    :kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_CURVE_HEADER`
  * :kconfig:option:`CONFIG_RAIL_PA_CURVE_TYPES_HEADER` to
    :kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_CURVE_TYPES_HEADER`
  * :kconfig:option:`CONFIG_RAIL_PA_ENABLE_CALIBRATION` to
    :kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_ENABLE_CALIBRATION`

* Fixed name of the :kconfig:option:`CONFIG_SOC_*`. These options contained PART_NUMBER in their
  while they shouldn't.

* The separate ``em3`` power state was removed from Series 2 SoCs. The system automatically
  transitions to EM2 or EM3 depending on hardware peripheral requests for the oscillators.

LVGL
====

* The PIXEL_FORMAT_MONO10 and PIXEL_FORMAT_MONO01 formats were swapped
  in :zephyr_file:`modules/lvgl/lvgl_display_mono.c`, which caused
  black and white to be inverted when using LVGL with monochrome displays.
  This issue has now been fixed. Any workarounds previously applied to achieve the expected
  behavior should be removed, otherwise black and white will be inverted again.

LED Strip
=========

* Renamed ``arduino,modulino-smartleds`` to :dtcompatible:`arduino,modulino-pixels`

Trusted Firmware-M
==================

* The signing process for BL2 (MCUboot) was updated. The boards that run using
  TF-M NS and require BL2 must have their flash layout with the flash controller
  information. This will ensure that when signing the hex/bin files all the
  details will be present in the S and NS images. The image now has the details
  to allow the FWU state machine to be correct and allow FOTA.
  (:github:`94470`)

  * The ``--align`` parameter was fixed to 1. Now, it's set to the flash DT ``write_block_size``
    property, but still provides 1 as a fallback for specific vendors.
  * The ``--max-sectors`` value is now calculated based on the number of images, taking into
    consideration the largest image size.
  * The ``--confirm`` option now confirms both S and NS HEX images, ensuring that any image
    that runs is valid for production and development.
  * S and NS BIN images are now available. These are the correct images to be used in FOTA. Note
    that S and NS images are unconfirmed by default, and the application is responsible for
    confirming them with ``psa_fwu_accept()``. Otherwise, the images will roll back on the next
    reboot.

* A compatibility issue was identified in the TF-M attestation procedure introduced
  after the TF-M v2.1.0 release. As a result, systems using TF-M v2.1 cannot be
  upgraded to any later TF-M version without encountering failures.
  This limitation affects Zephyr versions using TF-M v2.1.0 through v2.1.2, specifically,
  Zephyr v3.7 through v4.2, preventing seamless upgrades between these releases.
  The issue was resolved in mainline TF-M as of October 25 and the fix is included
  in Zephyr v4.3.0. Users are advised to migrate directly from any earlier Zephyr
  release to Zephyr v4.3.0 or later to ensure full TF-M attestation functionality
  and upgrade compatibility.
  (:github:`94859`)
  For any applications initially built from Zephyr v4.0 to v4.2,
  :kconfig:option:`CONFIG_TFM_ZEPHYR_4_0_TO_4_2_COMPATIBILITY` must be set in order
  to successfully upgrade to any version later than v4.2, and remain set for all future
  upgrades.
  (:github:`103793`)

* Support for automatically downloading MCUboot and ethos by CMake in a build has been removed,
  the in-tree versions of these modules will be used instead. To use custom versions, create a
  :ref:`west manifest <west-manifest-files>` which pulls in the desired versions of these
  repositories instead.

---

### Doc Releases Migration Guide 4.4 (`doc/releases/migration-guide-4.4.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.4:

Migration guide to Zephyr v4.4.0
################################

This document describes the changes required when migrating your application from Zephyr v4.3.0 to
Zephyr v4.4.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.4>`.

.. contents::
    :local:
    :depth: 2

Common
******

* The minimum required Zephyr SDK version is now 1.0.0.
* The minimum required Python version is now 3.12 (from 3.10).

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

* Zephyr now officially defaults to C17 (ISO/IEC 9899:2018) as its minimum required
  C standard version.  If your toolchain does not support this standard you will
  need to use one of the existing and now deprecated options:
  :kconfig:option:`CONFIG_STD_C99` or :kconfig:option:`CONFIG_STD_C11`.
* The ``full_name`` property of ``board``/``boards`` entries corresponding to new boards in
  board.yml files is now required.
* The CMake variable ``BOARD_QUALIFIERS`` is aligned with the corresponding
  :kconfig:option:`CONFIG_BOARD_QUALIFIERS` so that it is no longer prefixed with a ``/``.
  This means that any use of ``${BOARD}${BOARD_QUALIFIERS}`` must be updated to include ``/``, like
  this: ``${BOARD}/${BOARD_QUALIFIERS}``.
* ``SNIPPET_ROOT`` has been aligned with other Zephyr ``<type>_ROOT`` settings which doesn't include
  the application source dir per-default. Samples requiring application source dir to be added to
  ``SNIPPET_ROOT`` must instead add the application source dir using ``snippet_root = <dir>`` entry
  in :file:`zephyr/module.yml` or manually append the folder to the CMake variable ``SNIPPET_ROOT``.
* Shell autocompletions (``west completion``) should be regenerated as board target auto-complete now
  supports board revisions.

Kernel
******

* Heap hardening support has been implemented by adding a build time generated
  ``zephyr/heap_constants.h`` file that is now included from ``kernel.h``. This
  may create a build race condition for downstream application built as a cmake
  library where cmake may try to build them before the header file is
  generated, these may need an extra ``add_dependencies(${lib} zephyr_generated_headers)``
  entry in cmake, see :github:`106439` for mode details.

* The ``__pinned_*`` attribute family and the
  ``CONFIG_LINKER_USE_PINNED_SECTION`` /
  ``CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT`` Kconfig options are gone
  (:github:`108773`). The kernel image is now always resident in physical
  memory; demand paging applies only to anonymous mappings created via
  :c:func:`k_mem_map` and to symbols placed in the ``__ondemand_*`` linker
  sections via :kconfig:option:`CONFIG_LINKER_USE_ONDEMAND_SECTION`.

  The previous "evictable-by-default" model, where any kernel page not
  explicitly tagged ``__pinned_*`` could be paged out, was never safe by
  construction: whether a given build survived depended on the accidental
  placement of code and data relative to the page-fault dispatch path, not
  on any guarantee. If you have an application that relies on the old model
  and it works for you on an existing release, the recommended path is to
  stay on that release, ideally a :ref:`Long Term Support <release_process_lts>`
  one, rather than upgrade. Moving to a later version is liable to shift the
  layout enough (added code, reordered functions, a new compiler) to put an
  untagged page on the fault-dispatch path and break the system in ways that
  are hard to diagnose. That latent fragility is exactly why the model is
  removed rather than carried forward. Applications that do upgrade need the
  following updates:

  * Drop any ``CONFIG_LINKER_USE_PINNED_SECTION=y`` or
    ``CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT=n`` lines from board
    defconfigs and prj.conf overlays.

  * Drop ``__pinned_func``, ``__pinned_data``, ``__pinned_rodata``,
    ``__pinned_bss``, and ``__pinned_noinit`` attributes from source code.
    Code that needs to be demand-pageable must use ``__ondemand_func`` /
    ``__ondemand_rodata`` instead; the contributor is responsible for
    ensuring such symbols are not reached from the page-fault handler's
    execution path.

  * Replace any in-assembly use of ``PINNED_TEXT``, ``PINNED_RODATA``,
    ``PINNED_DATA``, ``PINNED_BSS``, and ``PINNED_NOINIT`` (as the section
    name argument to ``SECTION_FUNC()`` / ``SECTION_VAR()``) with the plain
    ``TEXT``, ``RODATA``, ``DATA``, ``BSS``, and ``NOINIT`` aliases.

  * Rename uses of ``K_KERNEL_PINNED_STACK_DEFINE``,
    ``K_KERNEL_PINNED_STACK_ARRAY_DEFINE``,
    ``K_KERNEL_PINNED_STACK_ARRAY_DECLARE``,
    ``K_THREAD_PINNED_STACK_DEFINE``, and
    ``K_THREAD_PINNED_STACK_ARRAY_DEFINE`` to their non-pinned
    counterparts (``K_KERNEL_STACK_DEFINE``,
    ``K_KERNEL_STACK_ARRAY_DEFINE``, ``K_KERNEL_STACK_ARRAY_DECLARE``,
    ``K_THREAD_STACK_DEFINE``, ``K_THREAD_STACK_ARRAY_DEFINE``).

  * Out-of-tree boards that supplied a custom linker script with pinned
    sections (``pinned_text`` / ``pinned_rodata`` / ``pinned_data`` /
    ``pinned_bss`` / ``pinned_noinit``) should fold those input section
    matches back into the regular text / rodata / data / bss / noinit
    output sections.

  * Out-of-tree code that relied on the ``lnkr_pinned_*`` linker symbols or
    on ``lnkr_is_pinned()`` / ``lnkr_is_region_pinned()`` must remove those
    references. The corresponding ``app_smem_pinned*.ld`` includes and the
    ``--pinoutput`` / ``--pinpartitions`` options of
    ``scripts/build/gen_app_partitions.py`` are also gone.

Boards
******

* The OpenOCD runner now uses the standard ``--file`` and ``--file-type`` interface for specifying
  flash files, aligning with other runners like JLink. The following changes apply:

  * The ``--use-hex``, ``--use-elf``, and ``--use-bin`` flags are deprecated. Use ``--file-type``
    instead:

    * ``--use-elf`` → ``--file-type=elf``
    * ``--use-bin`` → ``--file-type=bin``
    * ``--use-hex`` → ``--file-type=hex`` (or omit, as hex is the default)

  * The ``--file`` option is now supported to specify a custom file path, similar to the JLink
    runner.

  * Board cmake files using the deprecated flags will continue to work but will emit a deprecation
    warning.

  * The ``--file-type`` option can now be used without ``--file`` to select between build artifacts
    (hex, elf, bin).

* native_sim: host FUSE access: Defaults to using libfusev3 now instead of v2. But can be chosen
  with :kconfig:option:`CONFIG_FUSE_LIBRARY_VERSION` (:github:`104965`).

* m5stack_fire: Removed unused pinctrl entries for UART2, and updated the UART1
  pin mapping from GPIO32/GPIO33 to GPIO16/GPIO17 to match the documented Grove
  PORT.C wiring.

* The Ai-Thinker ``ai_m62_12f`` and ``ai_wb2_12f`` boards have been renamed to
  ``ai_m62_12f_kit`` and ``ai_wb2_12f_kit`` respectively.

* Compile definitions 'XIP_EXTERNAL_FLASH', 'USE_HYPERRAM' and 'XIP_BOOT_HEADER_XMCD_ENABLE'
  are only used in :zephyr_file:`boards/nxp/mimxrt1180_evk/xip/evkmimxrt1180_flexspi_nor_config.c`
  and :zephyr_file:`boards/nxp/mimxrt1170_evk/xmcd/xmcd.c`, we have changed them to local scope
  in the respective board CMakeLists.txt files. Applications that depended on these definitions
  being globally available may need to be updated. (:github:`101322`)

* Renesas ``ek_ra8t2/r7ka8t2lfecac/cm85`` is renamed to ``ek_ra8t2/r7ka8t2lflcac/cm85``.

* NXP has changed the scope of some in-tree compile flags to limit their visibility to only where
  they are needed. Out-of-tree applications or boards that depended on these flags being globally
  available may need to add them to their own CMakeLists.txt files to ensure they continue to build
  correctly. (:github:`100252`)
  The affected flags are listed below:

  * For the RT10xx and RT11xx families, the compile flag ``BOARD_FLASH_SIZE``, originally defined in
    ``boards/nxp/mimxrt10xx_evk/CMakeLists.txt`` and ``boards/nxp/mimxrt11xx_evk/CMakeLists.txt``, is
    used only by the HAL header ``fsl_flexspi_nor_boot.h``, which is included by
    :zephyr_file:`soc/nxp/imxrt/imxrt10xx/soc.c` and :zephyr_file:`soc/nxp/imxrt/imxrt11xx/soc.c`.
    To avoid potential collisions with other global flags, the macro is now defined at the SoC layer
    using ``zephyr_library_compile_definitions()`` in :zephyr_file:`soc/nxp/imxrt/imxrt10xx/CMakeLists.txt`
    and :zephyr_file:`soc/nxp/imxrt/imxrt11xx/CMakeLists.txt`. This change has been applied to all
    RTxxxx boards.

  * For the RTxxx family, the compile flag ``BOARD_FLASH_SIZE``, originally defined in
    ``boards/nxp/mimxrtxxx_evk/CMakeLists.txt``, is not used in the Zephyr tree and has
    therefore been removed from all RTxxx board CMakeLists.txt files.

  * For the RTxxx family, the compile flag ``BOOT_HEADER_ENABLE``, previously defined in
    ``boards/nxp/mimxrtxxx_evk/CMakeLists.txt`` and used in ``boards/nxp/rtxxx/<boot_header>.c``,
    has been replaced by a Kconfig option. Consequently, the line
    ``zephyr_compile_definitions(BOOT_HEADER_ENABLE=1)`` has been removed from the RTxxx board
    CMakeLists.txt files.

  * Removed compile flag ``BOOT_HEADER_ENABLE`` definition from :zephyr_file:`boards/nxp/rd_rw612_bga/CMakeLists.txt`,
    as it is not used in the Zephyr tree.

  * Originally, the compile flags ``XIP_BOOT_HEADER_ENABLE`` and ``XIP_BOOT_HEADER_DCD_ENABLE`` were
    used in ``boards/nxp/rt1xxx/<boot_header>.c``. These flags have been converted to Kconfig options
    across NXP RTxxxx evaluation boards, allowing boot-header configuration via the Kconfig build system
    instead of compile-time defines. Consequently, we removed ``zephyr_compile_definitions(XIP_BOOT_HEADER_ENABLE=1)``
    and ``zephyr_compile_definitions(XIP_BOOT_HEADER_DCD_ENABLE=1)`` from the RTxxxx board-level CMakeLists.txt files.
    Because these macros are also required by ``hal_nxp/rt10xx/fsl_flexspi_nor_boot.h`` and
    ``hal_nxp/rt11xx/fsl_flexspi_nor_boot.h``, they were added to the corresponding SoC-layer CMakeLists.txt files
    using ``zephyr_library_compile_definitions()`` to limit their scope.

* The following Nordic SoC Kconfigs have been deprecated and replaced, and Kconfig/CMake/code
  needs to be updated if they reference the deprecated Kconfigs:

  * :kconfig:option:`CONFIG_SOC_SERIES_NRF51X` with :kconfig:option:`CONFIG_SOC_SERIES_NRF51`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF52X` with :kconfig:option:`CONFIG_SOC_SERIES_NRF52`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF53X` with :kconfig:option:`CONFIG_SOC_SERIES_NRF53`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF54HX` with :kconfig:option:`CONFIG_SOC_SERIES_NRF54H`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF54LX` with :kconfig:option:`CONFIG_SOC_SERIES_NRF54L`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF91X` with :kconfig:option:`CONFIG_SOC_SERIES_NRF91`
  * :kconfig:option:`CONFIG_SOC_SERIES_NRF92X` with :kconfig:option:`CONFIG_SOC_SERIES_NRF92`

* The following Sifive Freedom SoC Kconfigs have been deprecated and replaced, and
  Kconfig/CMake/code needs to be updated if they reference the deprecated Kconfigs:

  * :kconfig:option:`CONFIG_SOC_SERIES_SIFIVE_FREEDOM_FE300` with
    :kconfig:option:`CONFIG_SOC_SERIES_FE300`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FE310_G000` with
    :kconfig:option:`CONFIG_SOC_FE310_G000`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FE310_G002` with
    :kconfig:option:`CONFIG_SOC_FE310_G002`
  * :kconfig:option:`CONFIG_SOC_SERIES_SIFIVE_FREEDOM_FU500` with
    :kconfig:option:`CONFIG_SOC_SERIES_FU500`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU540` with :kconfig:option:`CONFIG_SOC_FU540`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU540_E51` with
    :kconfig:option:`CONFIG_SOC_FU540_E51`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU540_U54` with
    :kconfig:option:`CONFIG_SOC_FU540_U54`
  * :kconfig:option:`CONFIG_SOC_SERIES_SIFIVE_FREEDOM_FU700` with
    :kconfig:option:`CONFIG_SOC_SERIES_FU700`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU740` with :kconfig:option:`CONFIG_SOC_FU740`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU740_S7` with :kconfig:option:`CONFIG_SOC_FU740_S7`
  * :kconfig:option:`CONFIG_SOC_SIFIVE_FREEDOM_FU740_U74` with
    :kconfig:option:`CONFIG_SOC_FU740_U74`

* ITE ``it515xx_evb`` is renamed to ``it51xxx_evb``.

* Boards that use :kconfig:option:`CONFIG_USE_DT_CODE_PARTITION` or have a
  ``zephyr,code-partition`` chosen node set should now use the new
  :dtcompatible:`zephyr,mapped-partition` compatible. This binding uses the devicetree unit address
  to be able to get the memory-mapped address of the partition rather than having to manually go up
  child nodes until a node with a specific name is found in order to calculate it, and also
  disallows usage of :kconfig:option:`CONFIG_FLASH_LOAD_OFFSET` and
  :kconfig:option:`CONFIG_FLASH_LOAD_SIZE` when a :dtcompatible:`zephyr,mapped-partition` is used,
  as the linker file can now work out the NVM offset and size without needing Kconfig to perform
  math operations as an intermediate step. In addition, :dtcompatible:`fixed-subpartitions` are no
  longer needed on memory-mapped devices when switching to :dtcompatible:`zephyr,mapped-partition`
  as these can natively be nested inside of each other and will have the correct addresses and
  offsets (when used with the devicetree ``ranges`` property).
  :kconfig:option:`CONFIG_FLASH_CODE_PARTITION_USING_FIXED_PARTITIONS` will be set on board
  targets that have not updated to use the :dtcompatible:`zephyr,mapped-partition` binding for
  ``zephyr,code-partition`` chosen devices. Support for using fixed-partitions as the chosen
  ``zephyr,code-partition`` node will be deprecated in the future.

* Boards or projects based on STM32N6x SoCs (:kconfig:option:`CONFIG_SOC_SERIES_STM32N6X`) now need
  to explicitly enable :kconfig:option:`CONFIG_TRUSTED_EXECUTION_SECURE` when the Zephyr
  application is expected to execute in the secure state of the processor. Alternatively, if the
  Zephyr application is expected to execute in the non-secure state of the processor, the board or
  project must explicitly enable :kconfig:option:`CONFIG_TRUSTED_EXECUTION_NON_SECURE`.

* The following WCH SoC Kconfigs have been renamed. Kconfig/CMake/code
  needs to be updated if they reference the old Kconfigs:

  * ``CONFIG_SOC_SERIES_CH32V00X`` with :kconfig:option:`CONFIG_SOC_SERIES_QINGKE_V2C`

Device Drivers and Devicetree
*****************************

.. zephyr-keep-sorted-start re(^\w) ignorecase

ADC
===

* The :dtcompatible:`renesas,ra-adc` compatible has been replaced by
  :dtcompatible:`renesas,ra-adc12`. Applications using the old compatible
  must update their devicetree nodes.

* The :dtcompatible:`renesas,ra-adc16` compatible was added. This must be
  used when working with the EK-RA2A1 board, which provides a 16-bit ADC
  resolution.

* Renamed the :kconfig:option:`CONFIG_ADC_MCUX_SAR_ADC` to :kconfig:option:`CONFIG_ADC_NXP_SAR_ADC`.
* Renamed the driver file from ``adc_mcux_sar_adc.c`` to :zephyr_file:`drivers/adc/adc_nxp_sar_adc.c`.
* Applications using the SAR ADC driver need to update the nodes in the devicetree to include
  ``zephyr,input-positive`` to specify the hardware channel. For SoCs that currently support SAR ADC,
  the reference voltage should use ``ADC_REF_VDD_1`` instead of ``ADC_REF_INTERNAL``. This driver
  update also corrects this issue, so users also need to update the value of this property in the
  devicetree accordingly. (:github:`100978`)

* :dtcompatible:`st,stm32-adc` no longer has the ``resolutions`` property. It is replaced by the
  ``st,adc-resolutions`` property. For STM32H7 devices in revision Y, it is no longer needed to
  replace the 14 and 12-bit resolution values. This change may have an impact on power consumption
  if 14 or 12-bit resolutions are used. Previously, power-optimized values were used, now the
  standard values (not power-optimized but better accuracy) are used. No impact on other series.

Clock Control
=============

* ``bflb,bl60x-pll``, ``bflb,bl61x-root-clk``, ``bflb,bl60x-root-clk``, ``bflb,bl61x-wifipll``,
  ``bflb,bl70x-root-clk`` and ``bflb,bl61x-flash-clk`` got respectively replaced with
  :dtcompatible:`bflb,flash-clk`, :dtcompatible:`bflb,pll` and :dtcompatible:`bflb,root-clk`.

* The :dtcompatible:`infineon,peri-div` clock control binding has removed the ``resource-type``,
  ``resource-instance``, and ``resource-channel`` properties. These properties are no longer used by
  the driver and the corresponding fields have been removed from the driver's internal data structures.
  Out-of-tree boards using this compatible must remove these properties from their devicetree nodes.
  (:github:`105393`)

Controller Area Network (CAN)
=============================

* Removed ``CONFIG_CAN_MAX_FILTER``, ``CONFIG_CAN_MAX_STD_ID_FILTER``,
  ``CONFIG_CAN_MAX_EXT_ID_FILTER`` (:github:`100596`). These are replaced by the following
  driver-specific Kconfig symbols, some of which have had their default value increased to meet
  typical software needs:

  * :kconfig:option:`CONFIG_CAN_LOOPBACK_MAX_FILTERS` for :dtcompatible:`zephyr,can-loopback`
  * :kconfig:option:`CONFIG_CAN_MAX32_MAX_FILTERS` for :dtcompatible:`adi,max32-can`
  * :kconfig:option:`CONFIG_CAN_MCP2515_MAX_FILTERS` for :dtcompatible:`microchip,mcp2515`
  * :kconfig:option:`CONFIG_CAN_MCP251XFD_MAX_FILTERS` for :dtcompatible:`microchip,mcp251xfd`
  * :kconfig:option:`CONFIG_CAN_MCUX_FLEXCAN_MAX_FILTERS` for :dtcompatible:`nxp,flexcan`
  * :kconfig:option:`CONFIG_CAN_NATIVE_LINUX_MAX_FILTERS` for
    :dtcompatible:`zephyr,native-linux-can`
  * :kconfig:option:`CONFIG_CAN_RCAR_MAX_FILTERS` for :dtcompatible:`renesas,rcar-can`
  * :kconfig:option:`CONFIG_CAN_SJA1000_MAX_FILTERS` for :dtcompatible:`kvaser,pcican` and
    :dtcompatible:`espressif,esp32-twai`
  * :kconfig:option:`CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS` for :dtcompatible:`st,stm32-bxcan`
  * :kconfig:option:`CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS` for :dtcompatible:`st,stm32-bxcan`
  * :kconfig:option:`CONFIG_CAN_STM32_FDCAN_MAX_EXT_ID_FILTERS` for :dtcompatible:`st,stm32-fdcan`
  * :kconfig:option:`CONFIG_CAN_STM32_FDCAN_MAX_STD_ID_FILTERS` for :dtcompatible:`st,stm32-fdcan`
  * :kconfig:option:`CONFIG_CAN_XMC4XXX_MAX_FILTERS` for :dtcompatible:`infineon,xmc4xxx-can-node`

* Replaced Kconfig option ``CONFIG_CAN_MAX_MB`` for :dtcompatible:`nxp,flexcan` and
  :dtcompatible:`nxp,flexcan-fd` with per-instance a ``number-of-mb`` devicetree property
  (:github:`99483`).

* The :dtcompatible:`nxp,flexcan` ``clk-source`` devicetree property, if present, now automatically
  selects between the named input clocks ``clksrc0`` and ``clksrc1`` for use as the CAN protocol
  engine clock.

* Renamed the NXP LPC family MCAN driver Kconfig option ``CONFIG_CAN_MCUX_MCAN`` to
  :kconfig:option:`CONFIG_CAN_NXP_LPC_MCAN` as this driver is not based on the NXP MCUXpresso HAL
  (:github:`103679`).

* Added devicetree property ``ti,nwkrq-voltage-vio`` to :dtcompatible:`ti,tcan4x5x` to allow
  configuring the voltage rail used for the ``nWKRQ`` pin. To maintain previous driver default of
  using VIO, this property must be set (:github:`104182`).

Counter
=======

* Drivers that implement ``get_value_64`` API will now need to select
  :kconfig:option:`CONFIG_COUNTER_SUPPORTS_64BITS_TICKS` and applications will need
  :kconfig:option:`CONFIG_COUNTER_64BITS_TICKS` to enable the API. (:github:`94189`).

* The NXP LPTMR driver (:dtcompatible:`nxp,lptmr`) has been updated to fix incorrect
  prescaler and glitch filter configuration:

  * The ``prescale-glitch-filter`` property valid range changed from ``[0-16]`` to ``[0-15]``.
    The value ``16`` was invalid for pulse counter mode and has been removed. Device trees using
    value ``16`` must be updated to use values in the range ``[0-15]``.

  * A new boolean property ``prescale-glitch-filter-bypass`` has been introduced to explicitly
    control prescaler/glitch filter bypass. Previously, setting ``prescale-glitch-filter = <0>``
    implicitly enabled bypass mode, which was ambiguous.

    In v4.4 and later, bypass is controlled only by the presence of
    ``prescale-glitch-filter-bypass``. If the property is absent, the prescaler/glitch filter is
    active and ``prescale-glitch-filter`` is applied.

  * The prescaler/glitch filter behavior has been clarified:

    * In Time Counter mode: prescaler divides the clock by ``2^(prescale-glitch-filter + 1)``
    * In Pulse Counter mode: glitch filter recognizes change after ``2^prescale-glitch-filter``
      rising edges (value 0 is not supported for glitch filtering)

  * All in-tree device tree nodes have been updated to use ``prescale-glitch-filter-bypass;``
    instead of ``prescale-glitch-filter = <0>;``. Out-of-tree boards should be updated
    accordingly.

  * If both ``prescale-glitch-filter-bypass`` and ``prescale-glitch-filter`` are set,
    bypass mode takes precedence and the ``prescale-glitch-filter`` value is ignored.

  Example migration:

  .. code-block:: devicetree

     /* Old (deprecated) */
     lptmr0: counter@40040000 {
         compatible = "nxp,lptmr";
         /* Implicitly bypassed */
         prescale-glitch-filter = <0>;
     };

     /* New (correct) */
     lptmr0: counter@40040000 {
         compatible = "nxp,lptmr";
         /* Explicitly bypassed */
         prescale-glitch-filter-bypass;
     };

  .. rubric:: Examples of using ``prescale-glitch-filter``

  .. note::

     ``prescale-glitch-filter-bypass`` is a boolean. If present, bypass is enabled. If absent,
     bypass is disabled and ``prescale-glitch-filter`` is applied.

     In Pulse Counter mode, ``prescale-glitch-filter = <0>`` is not a supported glitch filter
     configuration. To request no filtering, use ``prescale-glitch-filter-bypass;``.

  * Time Counter mode: divide the counter clock

    In Time Counter mode the prescaler divides by ``2^(N + 1)``.

    .. code-block:: devicetree

       /* Divide by 2^(0+1) = 2 */
       lptmr0: counter@40040000 {
           compatible = "nxp,lptmr";
           /* Time Counter mode */
           timer-mode-sel = <0>;
           clk-source = <1>;
           clock-frequency = <32768>;
           /* /2 */
           prescale-glitch-filter = <0>;
           resolution = <16>;
       };

       /* Divide by 2^(3+1) = 16 */
       lptmr1: counter@40041000 {
           compatible = "nxp,lptmr";
           /* Time Counter mode */
           timer-mode-sel = <0>;
           clk-source = <1>;
           clock-frequency = <32768>;
           /* /16 */
           prescale-glitch-filter = <3>;
           resolution = <16>;
       };

  * Time Counter mode: explicit bypass (no division)

    .. code-block:: devicetree

       lptmr0: counter@40040000 {
           compatible = "nxp,lptmr";
           /* Time Counter mode */
           timer-mode-sel = <0>;
           clk-source = <1>;
           clock-frequency = <32768>;
           /* no prescaler */
           prescale-glitch-filter-bypass;
           resolution = <16>;
       };

  * Pulse Counter mode: glitch filtering

    In Pulse Counter mode the glitch filter recognizes a change after ``2^N`` rising edges.
    Value ``0`` is not supported for glitch filtering; use bypass if you want no filtering.

    .. code-block:: devicetree

       /* Recognize change after 2^2 = 4 rising edges */
       lptmr0: counter@40040000 {
           compatible = "nxp,lptmr";
           /* Pulse Counter mode */
           timer-mode-sel = <1>;
           clk-source = <1>;
           input-pin = <0>;
           prescale-glitch-filter = <2>;
           resolution = <16>;
       };

       /* No filtering (explicit bypass) */
       lptmr1: counter@40041000 {
           compatible = "nxp,lptmr";
           /* Pulse Counter mode */
           timer-mode-sel = <1>;
           clk-source = <1>;
           input-pin = <0>;
           prescale-glitch-filter-bypass;
           resolution = <16>;
       };

* The NXP i.MX GPT counter driver (:dtcompatible:`nxp,imx-gpt`) now
  defaults to ``run-mode = "restart"`` instead of the previous hardcoded free-run behavior.

  * **Previous behavior** (Zephyr ≤ 4.3): GPT counter always ran in free-run mode
    (``enableFreeRun = true``). The counter continued counting without reset on compare events.

  * **New behavior** (Zephyr ≥ 4.4): GPT counter defaults to restart mode unless explicitly
    configured. A new ``run-mode`` devicetree property controls the behavior:

    * ``"restart"`` (default): Counter resets to 0 when reaching Compare Channel 1 value
    * ``"free-run"``: Counter continues counting without reset (previous behavior)

  **Migration Required**: Out-of-tree boards and applications using GPT counters must add
  ``run-mode = "free-run";`` to their devicetree nodes to preserve the previous behavior.

  .. code-block:: devicetree

     /* Out-of-tree boards: add this to preserve previous behavior */
     gpt2: gpt@400f0000 {
         compatible = "nxp,imx-gpt";
         /* Explicitly restore Zephyr ≤4.3 behavior */
         run-mode = "free-run";
         /* ... other properties ... */
     };

  .. warning::

     The driver uses Compare Channel 1 for Zephyr counter alarm functionality. When using
     ``run-mode = "restart"``, setting alarms will cause the counter to reset at the alarm
     compare point. If your application relies on alarms and continuous counting, you must
     use ``run-mode = "free-run"``.

  .. note::

     This change standardizes NXP counter driver run mode configuration.
     GPT now uses explicit devicetree properties rather than hardcoded values, allowing
     per-instance customization.

.. _migration_4.4_devicetree:

Devicetree
==========

* :ref:`dt-bindings` are no longer allowed to specify any default values for
  the ``status`` and ``#address-cells``, ``#size-cells`` properties. The semantics for
  these properties are defined in Devicetree `Specification
  <https://www.devicetree.org/specifications>`_ section 2.3.4 and `Specification
  <https://www.devicetree.org/specifications>`_ section 2.3.5 and users should
  not try to override them with their own defaults.

  The following bindings syntax now causes build errors:

  .. code-block:: yaml

     properties:
       "status":
         default: ...             <---- any default is a build error
       "#address-cells":
         default: ...             <---- any default is a build error
       "#size-cells":
         default: ...             <---- any default is a build error

  If you were relying on default values in your bindings, you now must
  explicitly specify the values in your devicetree source to fix these build
  errors.

* The devicetree compatible ``ilitek,ili9806e-dsi`` was renamed.
  Use :dtcompatible:`ilitek,ili9806e` instead.

Display
=======

* For ILI9XXX controllers, the usage of ``ILI9XXX_PIXEL_FORMAT_x`` in devicetrees for panel color
  format selection has been updated to ``PANEL_PIXEL_FORMAT_x``. Out-of-tree boards and shields
  should be updated accordingly. (:github:`99267`).

* For ILI9341 controller, display mirroring configuration has been updated to conform with
  the described behavior of the sample ``samples/drivers/display``. (:github:`99267`).
  This change causes mirroring issues on some display panels, which will have a proper fix in the
  v4.4.1 release. (:github:`106862`)

* The ``PIXEL_FORMAT_BGR_565`` pixel format (and its corresponding devicetree macro
  ``PANEL_PIXEL_FORMAT_BGR_565``) has been renamed to :c:enumerator:`PIXEL_FORMAT_RGB_565X`
  (and :c:macro:`PANEL_PIXEL_FORMAT_RGB_565X`) to correctly reflect that it is a byte-swapped
  version of RGB-565, not a swapped Red-Blue channels format. (:github:`99276`)
  Applications and libraries using ``PIXEL_FORMAT_BGR_565`` to denote byte-swapped RGB-565 must
  update to use :c:enumerator:`PIXEL_FORMAT_RGB_565X`.

* The Kconfig options ``CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_565`` and
  ``CONFIG_ST7789V_BGR565`` have been renamed to
  :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_RGB_565X` and
  :kconfig:option:`CONFIG_ST7789V_RGB565X` respectively. (:github:`99276`)

* ``CONFIG_SSD1327`` symbol has been renamed to :kconfig:option:`CONFIG_SSD1327_5` to include
  ``SSD1325`` as well.

* ``solomon,ssd1327fb``, ``solomon,ssd1306fb`` and ``solomon,ssd1309fb`` devicetree compatibles
  have been renamed :dtcompatible:`solomon,ssd1327`, :dtcompatible:`solomon,ssd1306` and
  :dtcompatible:`solomon,ssd1309` respectively, to harmonize with other display controllers and
  eliminate the zephyr-irrelevant ``fb`` suffix.

* The NXP eLCDIF controller (:dtcompatible:`nxp,imx-elcdif`) now correctly advertises support for
  :c:macro:`PIXEL_FORMAT_XRGB_8888` instead of :c:macro:`PIXEL_FORMAT_ARGB_8888`.

* ``waveshare,7inch-dsi-lcd-c`` devicetree compatible has been replaced by
  :dtcompatible:`waveshare,dsi2dpi`, and ``CONFIG_WAVESHARE_7INCH_DSI_LCD_C`` option has been
  replaced by :kconfig:option:`CONFIG_WAVESHARE_DSI2DPI`. (:github:`100140`)

* Boards using STM32 LTDC display controller must update their devicetree to have
  :c:macro:`PANEL_PIXEL_FORMAT_RGB_888` as ``pixel-format`` in :dtcompatible:`st,stm32-ltdc` node.
  (:github:`99277`)

DMA
===

* Removed the :kconfig:option:`CONFIG_DMA_MCUX_EDMA_V5` (:github:`100341`). This macro previously distinguished between
  nxp,version(5) and nxp,version(4). It now supports unified maintenance for both versions.
  Users can modify ``DMA_MCUX_EDMA_V5`` to ``DMA_MCUX_EDMA_V4``.

EEPROM
======

* Added :c:func:`eeprom_target_read_data()` and :c:func:`eeprom_target_write_data()` which takes an
  offset and length and deprecated :c:func:`eeprom_target_program()` for the I2C EEPROM target driver.

* Updated :dtcompatible:`microchip,xec-eeprom` for PCR and GIRQ properties to use new macros (:github:`104591`).

ESP32-S3
========

* The former ``espressif,esp32-lcd-cam`` binding has been restructured. The
  LCD_CAM peripheral is now represented by a common ``lcd_cam`` node, with its
  functional blocks split into two separate child nodes:

    * :dtcompatible:`espressif,esp32-lcd-cam-dvp` compatible node for the DVP
      (camera) input module, labeled as ``lcd_cam_dvp``.
    * :dtcompatible:`espressif,esp32-lcd-cam-mipi-dbi` compatible node for the
      LCD output module, labeled as ``lcd_cam_disp``.

  The original :dtcompatible:`espressif,esp32-lcd-cam` compatible node keeps the
  common pinctrl, clock, and interrupt properties, while camera-specific
  properties have moved into the new ``lcd_cam_dvp`` child node.

  Camera-related properties must be moved from ``lcd_cam`` node to the new
  ``lcd_cam_dvp`` child node, and  ``zephyr,camera`` chosen property should
  point to ``lcd_cam_dvp`` instead.

Ethernet
========

* Driver MAC address configuration support using :c:struct:`net_eth_mac_config` has been introduced
  for the following drivers:

  * :dtcompatible:`atmel,sam-gmac` and :dtcompatible:`atmel,sam0-gmac` (:github:`96598`)

    * Removed ``CONFIG_ETH_SAM_GMAC_MAC_I2C_EEPROM``
    * Removed ``CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS``
    * Removed ``CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZE``
    * Removed ``mac-eeprom`` property

  * :dtcompatible:`litex,liteeth` (:github:`100620`)
  * :dtcompatible:`microchip,lan865x` (:github:`100318`)
  * :dtcompatible:`microchip,lan9250` (:github:`99127`)
  * :dtcompatible:`nxp,enet-mac` (:github:`102775`)
  * :dtcompatible:`sensry,sy1xx-mac` (:github:`100619`)
  * :dtcompatible:`st,stm32n6-ethernet`, :dtcompatible:`st,stm32h7-ethernet`
    and :dtcompatible:`st,stm32-ethernet` (:github:`102810`, :github:`105090`)
  * :dtcompatible:`virtio,net` (:github:`100106`)
  * :dtcompatible:`vnd,ethernet` (:github:`96598`)
  * :dtcompatible:`wiznet,w5500` (:github:`100919`)
  * :dtcompatible:`snps,designware-ethernet` (:github:`105090`)

  MAC address should now be set as a child node of a :dtcompatible:`nvmem-layout`.
  See the documentation of :ref:`MAC address configuration <mac_address_config>`.

* The ``fixed-link`` property has been removed from :dtcompatible:`ethernet-phy`. Use
  the new :dtcompatible:`ethernet-phy-fixed-link` compatible instead, if that functionality
  is needed. There you need to specify the fixed link parameters using the ``default-speeds``
  property (:github:`100454`).

* The ``reset-gpios`` property of :dtcompatible:`microchip,ksz8081` has been
  reworked to be used as active low, you may have to set the pin as
  ``GPIO_ACTIVE_LOW`` in devicetree (:github:`100751`).

* :kconfig:option:`CONFIG_ETH_INIT_PRIORITY` is now set to 60 by default.
  :kconfig:option:`CONFIG_PHY_INIT_PRIORITY` and :kconfig:option:`CONFIG_MDIO_INIT_PRIORITY` are now
  defaulting to the value of :kconfig:option:`CONFIG_ETH_INIT_PRIORITY`. Same for
  :kconfig:option:`CONFIG_PTP_CLOCK_INIT_PRIORITY`,  but only if :kconfig:option:`CONFIG_ETH_DRIVER`
  is enabled. This way the priority is based on the dependencies in the devicetree.
  (:github:`104310`)

* Drivers, that support checksum offloading, now need to select the new Kconfig option
  :kconfig:option:`CONFIG_NET_CHECKSUM_OFFLOAD_SUPPORTED`.
  :kconfig:option:`CONFIG_NET_CHECKSUM_OFFLOAD` needs to be enabled to use checksum offloading.
  It is enabled by default if :kconfig:option:`CONFIG_NET_CHECKSUM_OFFLOAD_SUPPORTED` is selected.
  (:github:`105051`)

* The ``phy-handle`` property of :dtcompatible:`microchip,lan865x` must now be set to the phy node.

* ``CONFIG_NET_DSA_DEPRECATED`` has been removed. The drivers for the compatibles
  ``microchip,ksz8463``, ``microchip,ksz8794`` and ``microchip,ksz8863`` were removed, as they
  haven't been migrated to the new DSA subsystem. (:github:`105926`)

* Ethernet drivers no longer need to call :c:func:`net_if_set_link_addr` themselves, when
  the mac address is changed via ``ETHERNET_CONFIG_TYPE_MAC_ADDRESS``. (:github:`105931`)

File System
===========

* :kconfig:option:`CONFIG_FS_FATFS_FSTAB_AUTOMOUNT` is now enabled by default, if any enabled
  :dtcompatible:`zephyr,fstab,fatfs` with the ``automount`` property are present in the devicetree.
  Applications that do not want this behavior need to explicitly disable this option.
  (:github:`103139`)

* NVS and ZMS have been moved to the new Key-Value Storage Systems (KVSS) subsystem; the move
  affects NVS and ZMS interface header paths which have been moved from
  ``zephyr/fs/`` to ``zephyr/kvss/``.
  Kconfig options for NVS and ZMS have been moved from underneath "File Systems" menu to
  "Key-Value Storage Systems" menu, no Kconfigs have been affected. (:github:`103244`)

GPIO
====

* The LiteX GPIO driver :dtcompatible:`litex,gpio` has been reworked to support changing direction.
  The driver now uses the reg-names property to detect supported modes of the GPIO controller.
  The Devicetree property ``port-is-output`` has been removed.
  The reg-names are now taken directly from LiteX. (:github:`99329`)

* The ``irqs`` property of :dtcompatible:`renesas,rz-gpio` has been reworked
  to map a pin to an interrupt phandle explicitly instead of an interrupt index (:github:`101256`).

  .. code-block:: devicetree

     /* Old (Zephyr ≤ 4.3) */
     &gpio16 {
         /* Map port16 pin3 to tint7 */
         irqs = <3 7>;
     };

     /* New (Zephyr ≥ 4.4) */
     &tint7 {
         status = "okay";
     };

     &gpio16 {
         /* Map port16 pin3 to tint7 */
         irqs = <&tint7 3>;
     };

Infineon
========

* Infineon driver file names have been renamed to remove ``cat1`` from their names to support
  reusability across multiple device categories. The following drivers have been renamed
  (:github:`99174`):

  * ``adc_ifx_cat1.c`` → ``adc_ifx.c``
  * ``clock_control_ifx_cat1.c`` → ``clock_control_ifx.c``
  * ``counter_ifx_cat1.c`` → ``counter_ifx.c``
  * ``dma_ifx_cat1.c`` → ``dma_ifx.c``
  * ``dma_ifx_cat1_pdl.c`` → ``dma_ifx_pdl.c``
  * ``flash_ifx_cat1.c`` → ``flash_ifx.c``
  * ``flash_ifx_cat1_qspi.c`` → ``flash_ifx_qspi.c``
  * ``flash_ifx_cat1_qspi_mtb_hal.c`` → ``flash_ifx_qspi_mtb_hal.c``
  * ``gpio_ifx_cat1.c`` → ``gpio_ifx.c``
  * ``i2c_ifx_cat1.c`` → ``i2c_ifx.c``
  * ``i2c_ifx_cat1_pdl.c`` → ``i2c_ifx_pdl.c``
  * ``mbox_ifx_cat1.c`` → ``mbox_ifx.c``
  * ``pinctrl_ifx_cat1.c`` → ``pinctrl_ifx.c``
  * ``rtc_ifx_cat1.c`` → ``rtc_ifx.c``
  * ``ifx_cat1_sdio.c`` → ``ifx_sdio.c``
  * ``sdio_ifx_cat1_pdl.c`` → ``sdio_ifx_pdl.c``
  * ``serial_ifx_cat1_uart.c`` → ``serial_ifx_uart.c``
  * ``spi_ifx_cat1.c`` → ``spi_ifx.c``
  * ``spi_ifx_cat1_pdl.c`` → ``spi_ifx_pdl.c``
  * ``uart_ifx_cat1.c`` → ``uart_ifx.c``
  * ``uart_ifx_cat1_pdl.c`` → ``uart_ifx_pdl.c``
  * ``wdt_ifx_cat1.c`` → ``wdt_ifx.c``

  Corresponding Kconfig symbols and binding files have also been updated:

  * ``CONFIG_*_INFINEON_CAT1`` → ``CONFIG_*_INFINEON``
  * ``compatible: "infineon,cat1-adc"`` → ``compatible: "infineon,adc"``

* Infineon Bluetooth HCI UART driver (:kconfig:option:`CONFIG_BT_HCI_UART_INFINEON`) with
  compatible :dtcompatible:`infineon,bt-hci-uart` is now explicitly scoped to AIROC connectivity
  chips that use HCI UART transport.
  (:github:`103871`)

  Corresponding Kconfig symbols and devicetree compatibles have also been updated:

  * ``CONFIG_BT_CYW43XX`` → :kconfig:option:` CONFIG_BT_HCI_UART_INFINEON`
  * ``dtcompatible: "infineon,cyw43xxx-bt-hci"`` → ``dtcompatible: "infineon,bt-hci-uart"``

Input
=====

* The CST816S input driver has been generalized to support the CST8xx
  family. The driver and Kconfig file been renamed (:github:`105348`)

  * ``input_cst816s.c`` → ``input_cst8xx.c``
  * ``Kconfig.cst816s`` → ``Kconfig.cst8xx``

  Corresponding Devicetree compatible have been updated:

  * ``hynitron,cst816s`` → :dtcompatible:`hynitron,cst8xx`

  Corresponding Kconfig have also been updated:

  * ``CONFIG_INPUT_CST816S`` → :kconfig:option:` CONFIG_INPUT_CST8XX`
  * ``CONFIG_INPUT_CST816S_PERIOD`` → :kconfig:option:` CONFIG_INPUT_CST8XX_PERIOD`
  * ``CONFIG_INPUT_CST816S_INTERRUPT`` → :kconfig:option:` CONFIG_INPUT_CST8XX_INTERRUPT`
  * ``CONFIG_INPUT_CST816S_EV_DEVICE`` → :kconfig:option:` CONFIG_INPUT_CST8XX_EV_DEVICE`

  The dt-binding macro prefix have also been updated from ``CST816S_*`` to ``CST8XX_*``.

Interrupt Controller
====================

* :dtcompatible:`swerv,pic` is now :dtcompatible:`cdns,swerv-pic` by adding vendor
  prefix.

Keyboard matrix
===============

* The common keyboard matrix Devicetree bindings have been updated to use
  microseconds instead of milliseconds for polling period properties.

  The following properties have been renamed and their units changed:

  * ``poll-period-ms`` -> ``poll-period-us``
  * ``stable-poll-period-ms`` -> ``stable-poll-period-us``

  Applications using these properties must:

  * Replace the old property names with the new ones, and
  * Convert the values from milliseconds to microseconds. For example, a value
    of ``10`` previously representing 10 ms must now be written as ``10000`` to
    represent 10,000 µs.


MDIO
====

* The ``mdio_bus_enable()`` and ``mdio_bus_disable()`` functions have been removed.
  MDIO bus enabling/disabling is now handled internally by the MDIO drivers.
  (:github:`99690`).

* The MDIO driver area has been integrated into the Ethernet driver area.
  The drivers have been moved from ``drivers/mdio/`` to :zephyr_file:`drivers/ethernet/mdio/`.
  The devicetree bindings have been moved from ``dts/bindings/mdio/`` to
  :zephyr_file:`dts/bindings/ethernet/mdio/`. (:github:`103944`)

MEMC
====

* :dtcompatible:`st,stm32-xspi-psram` and :dtcompatible:`st,stm32-ospi-psram`
  compatible nodes now need to include the ``st,refresh`` property to specify
  the PSRAM refresh rate in number of memory clock cycles. (:github:`102735`).
  Hard-coded default values in drivers, of 320 (:dtcompatible:`st,stm32-xspi-psram`) and 129
  (:dtcompatible:`st,stm32-ospi-psram`), have been removed.

NXP
===

* NXP DTSI files were moved into family-specific subdirectories under ``dts/arm/nxp``
  to improve maintainability and discoverability and to match the structure under
  ``soc/nxp``. Devicetree include paths must be updated for moved files. Update
  includes of the form ``#include <nxp/nxp_*.dtsi>`` to use the correct family
  subdirectory. (:github:`101243`).

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/nxp_rt1060.dtsi>

    /* After */
    #include <nxp/imxrt/nxp_rt1060.dtsi>

  This change only applies to NXP ARM SoC include files that were moved from ``dts/arm/nxp``.
  Do not change includes for DTSI files that live elsewhere (for example under ``dts/arm64/nxp``).

  To locate affected includes, you can search for the old include prefix:

  .. code-block:: console

    git grep "#include <nxp/nxp_" -- '*.dtsi' '*.dts' '*.overlay'

* :dtcompatible:`nxp,lptmr` nodes used as the system timer must now be
  designated via the ``zephyr,system-timer`` chosen property. Boards based on
  i.MX95 and MCX-W SoCs already have this set in the SoC DTSI and require no
  change. All other boards using :kconfig:option:`CONFIG_MCUX_LPTMR_TIMER`
  must add a board overlay:

  .. code-block:: devicetree

     / {
         chosen {
             zephyr,system-timer = &lptmr0;
         };
     };

  On Kinetis KE1xF, this overlay is also required when
  :kconfig:option:`CONFIG_PM` is enabled.

* :dtcompatible:`nxp,imx-flexspi-nor` compatible nodes now have
  a :dtcompatible:`soc-nv-flash` compatible child node to describe
  the flash memory. The ``nxp,imx-flexspi-nor`` node acts as the
  flash controller (renamed to ``flash-controller@0``),
  and ``erase-block-size``, ``write-block-size`` properties, as well
  as ``partitions`` node, are moved into the flash chip node.
  Out-of-tree boards must update their devicetrees accordingly.

* ``zephyr,flash`` chosen property must point to the
  :dtcompatible:`soc-nv-flash` compatible node.

  * ``zephyr,flash-controller`` chosen property must point to the
    :dtcompatible:`nxp,imx-flexspi-nor` compatible node.
  * A ``ranges`` property is required on the controller node.

QSPI
====

* :dtcompatible:`st,stm32-qspi` compatible nodes configured with ``dual-flash`` property
  now need to also include the ``ssht-enable`` property to reenable sample shifting.
  Sample shifting is configurable now and disabled by default.
  (:github:`98999`).

Radio
=====

* The following devicetree bindings have been renamed for consistency with the ``radio-`` prefix:

  * :dtcompatible:`generic-fem-two-ctrl-pins` is now :dtcompatible:`radio-fem-two-ctrl-pins`
  * :dtcompatible:`gpio-radio-coex` is now :dtcompatible:`radio-gpio-coex`

* A new :dtcompatible:`radio.yaml` base binding has been introduced for generic radio hardware
  capabilities. The ``tx-high-power-supported`` property has been renamed to
  ``radio-tx-high-power-supported`` for consistency.

* Device trees and overlays using the old compatible strings must be updated to use the new names.

SD Host Controller
==================

* Moved extra fields ``bus_4_bit_support``, ``hs200_support`` and ``hs400_support`` from
  :c:struct:`sdhc_host_caps` to :c:struct:`sdhc_host_props` as per the
  `SD Host Controller Specification <https://www.sdcard.org/downloads/pls/pdf/?p=PartA2_SD%20Host_Controller_Simplified_Specification_Ver4.20.jpg>`_.
  (:github:`91701`)

Shell
=====

* The :c:func:`shell_set_bypass` now requires a user data pointer to be passed. And accordingly the
  :c:type:`shell_bypass_cb_t` now has a user data argument. (:github:`100311`)

Stepper
=======

* For :dtcompatible:`adi,tmc2209`, the property ``msx-gpios`` is now replaced by ``m0-gpios`` and
  ``m1-gpios`` for consistency with other step/dir stepper drivers.

* Several API functions have been renamed:

  * ``stepper_move_by`` to :c:func:`stepper_ctrl_move_by`.
  * ``stepper_move_to`` to :c:func:`stepper_ctrl_move_to`.
  * ``stepper_is_moving`` to :c:func:`stepper_ctrl_is_moving`.
  * ``stepper_run`` to :c:func:`stepper_ctrl_run`.
  * ``stepper_stop`` to :c:func:`stepper_ctrl_stop`.
  * ``stepper_set_reference_position`` to :c:func:`stepper_ctrl_set_reference_position`.
  * ``stepper_get_actual_position`` to :c:func:`stepper_ctrl_get_actual_position`.
  * ``stepper_set_microstep_interval`` to :c:func:`stepper_ctrl_set_microstep_interval`.

* The following events have been moved from :c:enum:`stepper_event` to :c:enum:`stepper_ctrl_event`:

  * ``STEPPER_EVENT_STEPS_COMPLETED`` to ``STEPPER_CTRL_EVENT_STEPS_COMPLETED``.
  * ``STEPPER_EVENT_LEFT_END_STOP_DETECTED`` to ``STEPPER_CTRL_EVENT_LEFT_END_STOP_DETECTED```.
  * ``STEPPER_EVENT_RIGHT_END_STOP_DETECTED`` to ``STEPPER_CTRL_EVENT_RIGHT_END_STOP_DETECTED``.
  * ``STEPPER_EVENT_STOPPED`` to ``STEPPER_CTRL_EVENT_STOPPED``.

* The ``step-gpios``, ``dir-gpios``, ``invert-direction``, and ``counter`` properties have been
  removed from all bindings of step-dir stepper hardware driver devices (:dtcompatible:`adi,tmc2209`,
  :dtcompatible:`ti,drv84xx`, and :dtcompatible:`allegro,a4979`) and moved to the new generic stepper
  motion controller binding :dtcompatible:`zephyr,gpio-step-dir-stepper-ctrl`.

* Motion control must now be performed through a :dtcompatible:`zephyr,gpio-step-dir-stepper-ctrl`
  device that references the stepper hardware driver devicetree node via the ``stepper-driver`` property.
  Applications must update their devicetree to add a motion controller node and use the ``stepper_ctrl_*``
  APIs, instead of calling motion control functions directly on the stepper hardware driver device.

* Stepper hardware driver specific APIs have been removed from the H-bridge stepper controller:

  * :dtcompatible:`zephyr,h-bridge-stepper` is renamed to :dtcompatible:`zephyr,h-bridge-stepper-ctrl` to
    reflect that it is a stepper motion controller binding, not a stepper hardware driver binding.

  * :c:func:`stepper_enable`, :c:func:`stepper_disable`, :c:func:`stepper_set_micro_step_res`,
    and :c:func:`stepper_get_micro_step_res` API functions are no longer usable with
    :dtcompatible:`zephyr,h-bridge-stepper-ctrl` compatible devices.

  * The ``en-gpios`` property has been removed from :dtcompatible:`zephyr,h-bridge-stepper-ctrl`.

  * The ``micro-step-res`` property has been replaced by ``lut-step-gap`` in
    :dtcompatible:`zephyr,h-bridge-stepper-ctrl` to better reflect the H-bridge control mechanism,
    which uses lookup table interpolation rather than hardware micro-stepping.

  Applications using H-bridge stepper controller must:

  1. Remove calls to stepper hardware driver specific APIs on H-bridge controller devices
  2. Update devicetree to use ``lut-step-gap`` instead of ``micro-step-res``
  3. Remove ``en-gpios`` property if present

* :dtcompatible:`adi,tmc50xx` and :dtcompatible:`adi,tmc51xx` devices are now modeled as MFDs.

* Removed the Kconfig.stepper_event_template template used to generate the
  :kconfig:option:`CONFIG_STEPPER_*_GENERATE_ISR_SAFE_EVENTS` and
  :kconfig:option:`CONFIG_STEPPER_*_EVENT_QUEUE_LEN` symbols

* :kconfig:option:`CONFIG_STEPPER_STEP_DIR_GENERATE_ISR_SAFE_EVENTS` is replaced by
  :kconfig:option:`CONFIG_STEPPER_CTRL_ISR_SAFE_EVENTS`

* :kconfig:option:`CONFIG_STEPPER_STEP_DIR_EVENT_QUEUE_LEN` is replaced by
  :kconfig:option:`CONFIG_STEPPER_CTRL_EVENT_QUEUE_LEN`

* :kconfig:option:`CONFIG_STEPPER_CTRL_ISR_SAFE_EVENTS` is now enabled by default

STM32
=====

* STM32 power supply configuration is now performed using Devicetree properties.
  New bindings :dtcompatible:`st,stm32h7-pwr`, :dtcompatible:`st,stm32h7rs-pwr`
  and :dtcompatible:`st,stm32-dualreg-pwr` have been introduced, and all Kconfig
  symbols related to power supply configuration have been removed:

  * ``CONFIG_POWER_SUPPLY_LDO``

  * ``CONFIG_POWER_SUPPLY_DIRECT_SMPS``,

  * ``CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_LDO``

  * ``CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_LDO``,

  * ``CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT_AND_LDO``

  * ``CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT_AND_LDO``

  * ``CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT``

  * ``CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT``

  * ``CONFIG_POWER_SUPPLY_EXTERNAL_SOURCE``

* The ST-specific chosen property ``/chosen/zephyr,ccm`` is replaced by ``/chosen/zephyr,dtcm``.
  Attribute macros ``__ccm_data_section``, ``__ccm_bss_section`` and ``__ccm_noinit_section`` are
  deprecated, but retained for backwards compatibility; **they will be removed in Zephyr 4.5**.
  The generic ``__dtcm_{data,bss,noinit}_section`` macros should be used instead. (:github:`100590`)

* STM32 platforms now use the default MCUboot operating mode ``swap using offset``
  (:kconfig:option:`SB_CONFIG_MCUBOOT_MODE_SWAP_USING_OFFSET`). To support this bootloader mode,
  some changes to the board devicetrees are required. Several boards already support this mode
  (see :github:`100385`).
  The previous ``swap using move`` mode can still be selected in sysbuild by enabling
  :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE`.

* For STM32F2x/F4x/F7x, the different PLL bindings (:dtcompatible:`st,stm32f2-pll-clock`,
  :dtcompatible:`st,stm32f4-pll-clock`, :dtcompatible:`st,stm32f4-plli2s-clock`,
  :dtcompatible:`st,stm32f411-plli2s-clock`, :dtcompatible:`st,stm32f7-pll-clock` and
  :dtcompatible:`st,stm32fx-pllsai-clock` ) has been merged into a single one
  :dtcompatible:`st,stm32fx-pll-clock`. This merge brings some changes, notably ``div-divq`` and
  ``div-divr`` properties have been renamed respectively to ``post-div-q`` and ``post-div-r``.
  Besides, when applicable to the SoC, these properties need to be defined if the corresponding
  ``div-q`` or ``div-r`` properties are used.

* For STM32L4x, the :dtcompatible:`st,stm32l4-pllsai-clock` binding has been replaced by the
  existing :dtcompatible:`st,stm32l4-pll-clock`. This replacement brings a renaming of the
  ``div-divr`` property to ``post-div-r``.

* The MAC address generation in :zephyr_file:`drivers/ethernet/eth_stm32_hal_common.c` for STM32
  platforms now use :c:struct:`net_eth_mac_config` when one of these properties are used in the MAC
  device-tree node:

    * ``zephyr,random-mac-address`` (a)
    * ``local-mac-address`` (b)
    * ``nvmem-cells`` (c) (NEW)

  This causes backward compatibility breakage for implementations using (a) or (b) properties.
  Previous implementation using these properties in the DT mixed an ST OUI for the first 3 MSB with
  random (a) or explicit (b) bits for the 3 LSB of the MAC address. Now, the MAC address is fully
  random (a), fully or partially written in the device-tree (b).

  New implementation (c) allows to refer to a MAC address stored in non-volatile memory.
  E.g: BSEC peripheral managing :abbr:`OTP(One Time Programmable)` fuses on STM32N6x platforms.
  See :c:func:`net_eth_mac_load` for more details.

  When none of these properties are specified in the MAC node, the legacy implementation is used.
  (:github:`102810`)

  .. note:: This change aligns STM32 platforms' behavior with the generic Zephyr one. Previous
            implementation wasn't product-ready so this shouldn't cause much trouble.

* The Kconfig option ``CONFIG_SPI_STM32_USE_HW_SS`` has been removed. SPI operation mode
  is now selected automatically based on devicetree configuration: instances with either of
  the ``cs-gpios`` or new ``st,soft-nss`` property operate in "Soft NSS" mode, while all other
  instances operate in "Hard NSS" mode.

* To ensure that the SPI is functional at any frequency, all SPI pins are now configured with a
  ``very-high-speed`` slew-rate by default. This may result in higher power consumption.
  The slew-rate value can be overridden in board's dts or in overlays to a slower speed in order to
  decrease power consumption.

* :kconfig:option:`CONFIG_NUM_IRQS` is computed automatically based on active (``status = "okay";``)
  devices by using the new ``dt_highest_controller_irq_number`` Kconfig preprocessor function.
  Applications which register custom ISRs (using :c:macro:`IRQ_CONNECT()`) may encounter build
  failures such as the following due to :kconfig:option:`CONFIG_NUM_IRQS` having a lower value:

  .. code-block::

    gen_isr_tables.py: error: IRQ 114 (offset=0) exceeds the maximum of 106

  Explicitly set :kconfig:option:`CONFIG_NUM_IRQS` to an appropriate value to solve these issues.
  (:ref:`The following documentation page <setting_configuration_values>` explains how to do it)

Timer
=====

* Out-of-tree SoC or platform code that implements the legacy Cortex-M SysTick low-power
  companion interface through the compatibility macros ``z_cms_lptim_hook_on_lpm_entry``
  and ``z_cms_lptim_hook_on_lpm_exit`` should migrate to :c:func:`z_sys_clock_lpm_enter`
  and :c:func:`z_sys_clock_lpm_exit` from :zephyr_file:`include/zephyr/drivers/timer/system_timer_lpm.h`.
  The compatibility shim in :zephyr_file:`drivers/timer/cortex_m_systick.h` is deprecated
  in Zephyr 4.4.0 and is currently scheduled for removal in Zephyr 4.6.0.
  The legacy Kconfig options:
  :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_NONE`,
  :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_COUNTER`,
  :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_HOOKS`, and
  :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_RESET_BY_LPM` are also deprecated.
  The chosen property ``/chosen/zephyr,cortex-m-idle-timer`` is deprecated in
  favor of ``/chosen/zephyr,system-timer-companion``.
  Migrate to :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_NONE`,
  :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_COUNTER`,
  :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_HOOKS`, and
  :kconfig:option:`CONFIG_SYSTEM_TIMER_RESET_BY_LPM`.

* :dtcompatible:`renesas,rza2m-ostm` name has been replaced by :dtcompatible:`renesas,rza2m-ostm-timer`.
  The choice :kconfig:option:`DT_HAS_RENESAS_RZA2M_OSTM_ENABLED` has been replaced with
  :kconfig:option:`DT_HAS_RENESAS_RZA2M_OSTM_TIMER_ENABLED` (:github:`100934`)

USB
===

* :dtcompatible:`maxim,max3421e_spi` has been renamed to :dtcompatible:`maxim,max3421e-spi`.
* USB control transfer buffer allocation has been moved away from UDC to USB device_next.
  Out-of-tree UDC drivers will have to be reworked. (:github:`103493`).

* UVC device application API got modified:

  * ``uvc_set_video_dev`` has been renamed to :c:func:`uvc_device_init`
  * ``uvc_add_format`` has been renamed to :c:func:`uvc_device_add_format`
  * :c:func:`uvc_device_enable` has been introduced
  * :c:func:`uvc_device_shutdown` has been introduced

USB-C
=====

* The ``alert_handler_cb`` field has been removed from the :c:struct:`tcpc_driver_api` struct as it
  was unused and redundant with the callback registered via :c:func:`tcpc_set_alert_handler_cb`.

Video
=====

* ``CONFIG_VIDEO_HIMAX_HM01B0`` has been renamed to :kconfig:option:`CONFIG_VIDEO_HM01B0`.
* ``CONFIG_VIDEO_OV7670`` is now gone and replaced by
  :kconfig:option:`CONFIG_VIDEO_OV767X`. This allows supporting both the OV7670
  and 0V7675.
* :kconfig:option:`CONFIG_VIDEO_BUFFER_POOL_SZ_MAX` is replaced by
  :kconfig:option:`CONFIG_VIDEO_BUFFER_POOL_HEAP_SIZE` which represent the
  size in byte allocated for the whole video buffer pool.

* The :dtcompatible:`ovti,ov2640` reset pin handling has been corrected, resulting in an inverted
  active level compared to before, to match the active level expected by the sensor.

* The following pixel formats were renamed to keep consistency with the data ():github:`105522`):

  * :c:macro:`VIDEO_PIX_FMT_ARGB32` (swapped with :c:macro:`VIDEO_PIX_FMT_BGRA32`)
  * :c:macro:`VIDEO_PIX_FMT_BGRA32` (swapped with :c:macro:`VIDEO_PIX_FMT_ARGB32`)
  * :c:macro:`VIDEO_PIX_FMT_RGBA32` (unchanged)
  * :c:macro:`VIDEO_PIX_FMT_ABGR32` (unchanged)
  * :c:macro:`VIDEO_PIX_FMT_XRGB32` (unchanged)
  * :c:macro:`VIDEO_PIX_FMT_XBGR32` (newly introduced)
  * :c:macro:`VIDEO_PIX_FMT_BGRX32` (newly introduced)
  * :c:macro:`VIDEO_PIX_FMT_RGBX32` (newly introduced)

Watchdog
========

* The semantics of :kconfig:option:`CONFIG_WDT_DISABLE_AT_BOOT` have been clarified: the expected
  behavior when ``CONFIG_WDT_DISABLE_AT_BOOT=n``, which was unclear and
  implemented inconsistently across drivers, is now explicitly documented in
  :kconfig:option:`CONFIG_WDT_DISABLE_AT_BOOT`'s description (refer to it for
  more details).

  All in-tree watchdog drivers have been updated to follow the now documented semantics.

  Notably, ``CONFIG_WDT_DISABLE_AT_BOOT=n`` can no longer be used to have
  watchdog(s) enabled at boot "*automatically*". Users which relied on this
  behavior must update their application to explicitly configure a watchdog, as
  done in the :zephyr:code-sample:`watchdog`. The following Kconfig options
  related to this incorrect usage have been removed:

    * ``CONFIG_IWDG_STM32_INITIAL_TIMEOUT``
    * ``CONFIG_WDT_RPI_PICO_INITIAL_TIMEOUT``
    * ``CONFIG_WDT_CC13XX_CC26XX_INITIAL_TIMEOUT``
    * ``CONFIG_WDT_CC23X0_INITIAL_TIMEOUT``
    * ``CONFIG_WDT_CC32XX_INITIAL_TIMEOUT``

* Updated :dtcompatible:`microchip,xec-watchdog` for PCR and GIRQ properties to
  use new macros (:github:`105668`).

.. zephyr-keep-sorted-stop

Bluetooth
*********

Bluetooth Host
==============

* :kconfig:option:`CONFIG_BT_SIGNING` has been deprecated.
* :c:macro:`BT_GATT_CHRC_AUTH` has been deprecated.
* :c:member:`bt_conn_le_info.interval` has been deprecated. Use
  :c:member:`bt_conn_le_info.interval_us` instead. Note that the units have changed: ``interval``
  was in units of 1.25 milliseconds, while ``interval_us`` is in microseconds.
* Legacy Bluetooth LE pairing using the passkey entry method no longer grants authenticated (MITM)
  protection as of the Bluetooth Core Specification v6.2. Stored bonds that were generated using
  this method will be downgraded to unauthenticated when loaded from persistent storage, resulting
  in a lower security level.
* The Bluetooth Host no longer depends on :c:func:`k_poll`, and therefore doesn't select
  :kconfig:option:`CONFIG_POLL`. If the application code itself depends on this, it needs to
  explicitly enable :kconfig:option:`CONFIG_POLL` in its configuration.
* Replace any usage of :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_NONE`
  with :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_NONE`.
* Replace any usage of :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_ENCRYPT`
  with :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_ENCRYPT`.
* Replace any usage of :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_AUTHEN`
  with :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_AUTHEN`.
* Replace any usage of :kconfig:option:`CONFIG_DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN`
  with :kconfig:option:`CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN`.
* The ``required_sec_level`` field has been removed from :c:struct:`bt_iso_chan`.
  Applications that need to set security for CIS connections should call
  :c:func:`bt_conn_set_security` on the ACL connection before calling
  :c:func:`bt_iso_chan_connect`.
* The ``sec_level`` field has been removed from :c:struct:`bt_iso_server`.

Bluetooth Audio
===============

* :c:func:`bt_bap_broadcast_assistant_discover` will now no longer perform reads of the remote BASS
  receive states at the end of the procedure. Users will have to manually call
  :c:func:`bt_bap_broadcast_assistant_read_recv_state` to read the existing receive states, if any,
  prior to performing any operations. (:github:`91587`)
* :kconfig:option:`CONFIG_BT_AUDIO` now depends on :kconfig:option:`CONFIG_UTF8`.
  Applications that enable :kconfig:option:`CONFIG_BT_AUDIO` must also have
  :kconfig:option:`CONFIG_UTF8` enabled. (:github:`102350`)
* :c:func:`bt_tbs_set_uri_scheme_list` now only takes a single string value,
  instead of a list/array of URIs. Applications will need to modify any current input
  from e.g. ``{"tel", "skype"}`` to ``"tel,skype"``. (:github:`102724`)
* ``CONFIG_BT_TBS_SUPPORTED_FEATURES`` has been removed. Applications should use the defined macros
  :c:macro:`BT_TBS_FEATURE_HOLD` and :c:macro:`BT_TBS_FEATURE_JOIN` to set their supported features.
  (:github:`102666`)
* :c:func:`bt_bap_unicast_server_foreach_ep` and :c:func:`bt_has_preset_foreach` may now return an
  error if the iteration stopped early, or if provided with invalid parameters. (:github:`105462`)
* The callbacks for :c:func:`bt_bap_unicast_server_foreach_ep`,
  :c:func:`bt_bap_unicast_group_foreach_stream`, :c:func:`bt_bap_broadcast_source_foreach_stream`,
  :c:func:`bt_cap_unicast_group_foreach_stream`, :c:func:`bt_cap_initiator_broadcast_foreach_stream`
  and :c:func:`bt_has_preset_foreach` now return ``true`` to continue the iteration,
  and ``false`` to stop the iteration. Any callbacks for these functions need to be updated to
  reflect the new return types and values. (:github:`105462`)

Bluetooth Mesh
==============

* :kconfig:option:`CONFIG_BT_MESH_MODEL_VND_MSG_CID_FORCE` has been deprecated. Enabling it no
  longer has any effect on message handling performance.

Bluetooth HCI
=============

* Use :c:macro:`BT_HCI_LE_SUPERVISION_TIMEOUT_MIN` and :c:macro:`BT_HCI_LE_SUPERVISION_TIMEOUT_MAX` instead
  of :c:macro:`BT_HCI_LE_SUPERVISON_TIMEOUT_MIN` and :c:macro:`BT_HCI_LE_SUPERVISON_TIMEOUT_MAX` because
  they have been deprecated for misspelling.

Networking
**********

Wi-Fi
=====

* :c:struct:`wifi_channel_info` gained a ``band`` field for set-channel. Behaviour
  is backwards compatible for 2.4 GHz (channels 1–14) and 5 GHz (36–165): omit or
  leave ``band`` as :c:macro:`WIFI_FREQ_BAND_UNKNOWN` and the driver infers the
  band. For 6 GHz, set ``band`` to :c:macro:`WIFI_FREQ_BAND_6_GHZ` (channel
  numbers overlap 1–14 with 2.4 GHz). Recompile so ``sizeof(struct
  wifi_channel_info)`` is correct when calling net_mgmt.

* WPA3 is configured with the choice
  ``WIFI_NM_WPA_SUPPLICANT_WPA3_IMPLEMENTATION`` (Internal, External, or None).
  Replace any ``CONFIG_WIFI_NM_WPA_SUPPLICANT_WPA3=y`` line in ``prj.conf`` with
  ``CONFIG_WIFI_NM_WPA_SUPPLICANT_WPA3_IMPLEMENTATION_INT=y`` (or ``_EXT`` /
  ``_NONE`` as needed). :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_WPA3` is
  now promptless and is selected only when Internal is chosen; do not assign it
  directly. In C code, prefer :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_WPA3_COMMON`
  to detect either internal or external WPA3.

* Networking APIs found in

  * :zephyr_file:`include/zephyr/net/net_ip.h`
  * :zephyr_file:`include/zephyr/net/socket.h`

  and relevant code in ``subsys/net`` etc. is namespaced. This means that either
  ``net_``, ``NET_`` or ``ZSOCK_`` prefix is added to the network API name. This is done in order
  to avoid circular dependency with POSIX or libc that might define the same symbol.
  A compatibility header file :zephyr_file:`include/zephyr/net/net_compat.h`
  is created that provides the old symbols allowing the user to continue use the old symbols.
  External network applications can continue to use POSIX defined network symbols and
  include relevant POSIX header files like ``sys/socket.h`` to get the POSIX symbols as Zephyr
  networking header files will no longer include those. If the application or Zephyr internal
  code cannot use POSIX APIs, then the relevant network API prefix needs to be added to the
  code calling a network API.

* The return type of :c:type:`net_icmp_handler_t` has changed from ``int`` to
  :c:enum:`net_verdict`. (:github:`104815`)

* The enum for HTTP server transaction status has been renamed from ``http_data_status``
  to ``http_transaction_status`` to better reflect its purpose. The enum values have also been
  renamed as follows:

  - ``HTTP_SERVER_DATA_ABORTED`` → ``HTTP_SERVER_TRANSACTION_ABORTED``
  - ``HTTP_SERVER_DATA_MORE`` → ``HTTP_SERVER_REQUEST_DATA_MORE``
  - ``HTTP_SERVER_DATA_FINAL`` → ``HTTP_SERVER_REQUEST_DATA_FINAL``

  The handler callback type for dynamic resources has been updated accordingly to use the new enum
  and its renamed values. Applications using dynamic HTTP resources must update their handler
  callbacks to use the new enum and handle the renamed values.

* The HTTP server now reports for dynamic resources the ``HTTP_SERVER_TRANSACTION_COMPLETE``
  status when the response has been sent completely to the client. Applications should now also
  handle this status in the handler callback to properly reset resource state after successful
  response transmission.

* The protocol version passed to :c:func:`zsock_socket` when creating a secure socket is now
  enforced as the minimum TLS version to use for the TLS session.

* Automatic selection of crypto Kconfigs has been removed from :kconfig:option:`NET_SOCKETS_SOCKOPT_TLS`
  as they strongly depend on the final application's needs. As a consequence the desired TLS protocol
  version and ciphersuite(s) must be explicitly selected.
  Available :kconfig:option-regex:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_.*` Kconfig helpers can be used
  to automatically enable all the dependencies of a given ciphersuite, and more can be added as
  needed following the same pattern.

CoAP
====

* Resource-related metadata for CoAP ``.well-known/core`` responses is now configured with a dedicated
  :c:member:`coap_resource.metadata` pointer instead of :c:member:`coap_resource.user_data`, which
  should remain for the application to use exclusively. Applications implementing CoAP
  ``.well-known/core`` handling should be updated to use the new pointer.

* ``COAP_RESPONSE_CODE_OK`` 2.00 response code definition has been removed as it's not a valid
  response code - it's not defined in :rfc:`7252` and is not assigned in the IANA registry
  (https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#response-codes).

Modem
*****

Modem HL78XX
============

* The Kconfig options related to HL78XX startup timing have been renamed in
  :kconfig:option:`CONFIG_MODEM_HL78XX_DEV_*` as follows:

  - ``MODEM_HL78XX_DEV_POWER_PULSE_DURATION`` → ``MODEM_HL78XX_DEV_POWER_PULSE_DURATION_MS``
  - ``MODEM_HL78XX_DEV_RESET_PULSE_DURATION`` → ``MODEM_HL78XX_DEV_RESET_PULSE_DURATION_MS``
  - ``MODEM_HL78XX_DEV_STARTUP_TIME`` → ``MODEM_HL78XX_DEV_STARTUP_TIME_MS``
  - ``MODEM_HL78XX_DEV_SHUTDOWN_TIME`` → ``MODEM_HL78XX_DEV_SHUTDOWN_TIME_MS``

* The default startup timing was changed from 1000 ms to 120 ms to improve
  initialization reliability across all supported boards.

  Applications depending on the previous defaults must update their configuration.

LoRaWAN
*******

* The LoRaWAN region Kconfig symbols have been renamed from ``LORAMAC_REGION_*`` to
  ``LORAWAN_REGION_*`` to make them backend-agnostic. Applications using any of the following
  symbols must update their configuration files:

  * ``CONFIG_LORAMAC_REGION_AS923`` → :kconfig:option:`CONFIG_LORAWAN_REGION_AS923`
  * ``CONFIG_LORAMAC_REGION_AU915`` → :kconfig:option:`CONFIG_LORAWAN_REGION_AU915`
  * ``CONFIG_LORAMAC_REGION_CN470`` → :kconfig:option:`CONFIG_LORAWAN_REGION_CN470`
  * ``CONFIG_LORAMAC_REGION_CN779`` → :kconfig:option:`CONFIG_LORAWAN_REGION_CN779`
  * ``CONFIG_LORAMAC_REGION_EU433`` → :kconfig:option:`CONFIG_LORAWAN_REGION_EU433`
  * ``CONFIG_LORAMAC_REGION_EU868`` → :kconfig:option:`CONFIG_LORAWAN_REGION_EU868`
  * ``CONFIG_LORAMAC_REGION_KR920`` → :kconfig:option:`CONFIG_LORAWAN_REGION_KR920`
  * ``CONFIG_LORAMAC_REGION_IN865`` → :kconfig:option:`CONFIG_LORAWAN_REGION_IN865`
  * ``CONFIG_LORAMAC_REGION_US915`` → :kconfig:option:`CONFIG_LORAWAN_REGION_US915`
  * ``CONFIG_LORAMAC_REGION_RU864`` → :kconfig:option:`CONFIG_LORAWAN_REGION_RU864`

Other subsystems
****************

CFB
===

* Change using signed values to represent the coordinates.
  As a result, :c:func:`cfb_print`, :c:func:`cfb_invert_area`,
  and :c:struct:`cfb_position` definitions are changed.

* The DAP subsystem initialization and configuration has changed. Please take a look at
  :zephyr:code-sample:`cmsis-dap` sample on how to initialize Zephyr DAP Link with USB backend.

* Cache

  * Use :kconfig:option:`CONFIG_CACHE_HAS_MIRRORED_MEMORY_REGIONS` instead of
    :kconfig:option:`CONFIG_CACHE_DOUBLEMAP` as the former is more descriptive of the feature.

Flash
=====

* Previously deprecated ``CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS`` is now
  removed.

* ``CONFIG_FLASH_AREA_CHECK_INTEGRITY_PSA`` is also removed since there is
  now no alternative for the crypto library backend.

* The flash shell commands ``flash erase`` and ``flash write`` now require an explicit
  device argument. This avoids accidental corruption of the device's program flash.

Flash map
=========

* The following :zephyr_file:`include/zephyr/storage/flash_map.h` macros have been deprecated and
  replaced:

  +-----------------------------------------+-----------------------------------+
  | Deprecated macro                        | Replacement macro                 |
  +=========================================+===================================+
  | :c:macro:`FIXED_PARTITION_EXISTS`       | :c:macro:`PARTITION_EXISTS`       |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_ID`           | :c:macro:`PARTITION_ID`           |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_OFFSET`       | :c:macro:`PARTITION_OFFSET`       |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_ADDRESS`      | :c:macro:`PARTITION_ADDRESS`      |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_NODE_ADDRESS` | :c:macro:`PARTITION_NODE_ADDRESS` |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_NODE_OFFSET`  | :c:macro:`PARTITION_NODE_OFFSET`  |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_SIZE`         | :c:macro:`PARTITION_SIZE`         |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_NODE_SIZE`    | :c:macro:`PARTITION_NODE_SIZE`    |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_DEVICE`       | :c:macro:`PARTITION_DEVICE`       |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_NODE_DEVICE`  | :c:macro:`PARTITION_NODE_DEVICE`  |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_MTD`          | :c:macro:`PARTITION_MTD`          |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_NODE_MTD`     | :c:macro:`PARTITION_NODE_MTD`     |
  +-----------------------------------------+-----------------------------------+
  | :c:macro:`FIXED_PARTITION_BY_NODE`      | :c:macro:`PARTITION_BY_NODE`      |
  +-----------------------------------------+-----------------------------------+

  These new macros also add support for the :dtcompatible:`zephyr,mapped-partition` binding.

JWT
===

* Previously deprecated ``CONFIG_JWT_SIGN_RSA_LEGACY`` is removed. This removal occurred before
  the usual deprecation period of 2 releases because it has been agreed (see :github:`97660`)
  that Mbed TLS is an external module, so normal deprecation rules do not apply in this case.

Libsbc
======

* Libsbc (sbc.c and sbc.h) is moved under the Bluetooth subsystem. The sbc.h is in
  include/zephyr/bluetooth now.

Management
==========

* hawkBit

  * The deprecated Kconfig option ``CONFIG_HAWKBIT_DDI_NO_SECURITY`` has been removed.
    (:github:`105150`)

* MCUmgr

  * If using :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UART` then
    :kconfig:option:`CONFIG_UART_MCUMGR` must now also be selected, this has changed to be
    ``depends on`` rather than ``select``.

Random
======

* ``CONFIG_CSPRNG_AVAILABLE`` has been renamed to :kconfig:option:`CONFIG_ENTROPY_NODE_ENABLED`.

Tracing
========

* CTF: Changed uint8_t id to uint16_t id in the CTF metadata event header. This
  doubles the space used for event IDs but allows 65,535 events instead of 255.

  With this change, existing CTF traces with 8-bit IDs won't be compatible.

Serial
========

* pl011 UART driver: Remove Read Status Register (RSR) error handling
  from :c:func:`pl011_poll_in`. RSR handling is already implemented in
  :c:func:`pl011_err_check`, which is the appropriate place to detect,
  and report receive error conditions. (:github:`101715`)

Settings
========

* ``CONFIG_SETTINGS_TFM_ITS`` has been renamed to :kconfig:option:`CONFIG_SETTINGS_TFM_PSA`.

Modules
*******

HostAP
======

* Kconfig :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_MBEDTLS_PSA` is now
  enabled by default.

Mbed TLS
========

* Mbed TLS has been upgraded to version 4.1.0. From now on this repo will only include TLS
  and X.509, while crypto support was moved to TF-PSA-Crypto. A new west module
  has been introduced for the latter and it's based on upstream release 1.1.0.
  TF-M continues to build with Mbed TLS 3.6.5.
  Crypto-wise there are many changes introduced with this change, so it's strongly
  suggested to take a look to the official `Mbed TLS 3.x to TF-PSA-Crypto 1.x migration guide
  <https://github.com/Mbed-TLS/TF-PSA-Crypto/blob/development/docs/1.0-migration-guide.md>`_.

* ``CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`` has been renamed to
  :kconfig:option:`CONFIG_MBEDTLS_PSA_DRIVER_GET_ENTROPY`.

* ``CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT`` has been replaced by the underlying options it used
  to enable: :kconfig:option:`CONFIG_MBEDTLS_PEM_PARSE_C`,
  :kconfig:option:`CONFIG_MBEDTLS_PEM_WRITE_C` and :kconfig:option:`CONFIG_MBEDTLS_BASE64_C`.

* ``CONFIG_MBEDTLS_SERVER_NAME_INDICATION`` has been renamed to
  :kconfig:option:`CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION`.

* ``CONFIG_MBEDTLS_TEST`` has been renamed to :kconfig:option:`CONFIG_MBEDTLS_DEBUG_C`.

* The following PSA related Kconfig symbols have been removed as they are no longer
  supported by TF-PSA-Crypto:

  * ``CONFIG_PSA_WANT_KEY_TYPE_DES``
  * ``CONFIG_PSA_WANT_ECC_SECP_R1_192``
  * ``CONFIG_PSA_WANT_ECC_SECP_K1_192``
  * ``CONFIG_PSA_WANT_ECC_SECP_R1_224``

* The following Mbed TLS Kconfig symbols have been removed:

  * ``CONFIG_CUSTOM_MBEDTLS_CFG_FILE``
  * ``CONFIG_MBEDTLS_CHACHAPOLY_AEAD_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_AES_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CAMELLIA_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CCM_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CHACHA20_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_DES_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_GCM_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_CBC_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_CTR_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_XTS_ENABLED``
  * ``CONFIG_MBEDTLS_CMAC``
  * ``CONFIG_MBEDTLS_DHM_C``
  * ``CONFIG_MBEDTLS_ECDH_C``
  * ``CONFIG_MBEDTLS_ECDSA_C``
  * ``CONFIG_MBEDTLS_ECDSA_DETERMINISTIC``
  * ``CONFIG_MBEDTLS_ECJPAKE_C``
  * ``CONFIG_MBEDTLS_ECP_ALL_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_C``
  * ``CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_CURVE448_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED``
  * ``CONFIG_MBEDTLS_GENPRIME_ENABLED``
  * ``CONFIG_MBEDTLS_HKDF_C``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED``
  * ``CONFIG_MBEDTLS_MD5``
  * ``CONFIG_MBEDTLS_PKCS1_V15``
  * ``CONFIG_MBEDTLS_PKCS1_V21``
  * ``CONFIG_MBEDTLS_POLY1305``
  * ``CONFIG_MBEDTLS_RSA_C``
  * ``CONFIG_MBEDTLS_SHA1``
  * ``CONFIG_MBEDTLS_SHA224``
  * ``CONFIG_MBEDTLS_SHA256``
  * ``CONFIG_MBEDTLS_SHA384``
  * ``CONFIG_MBEDTLS_SHA512``
  * ``CONFIG_MBEDTLS_USE_PSA_CRYPTO``

OpenThread
==========

* The following Kconfigs options were renamed:

  * ``CONFIG_OPENTHREAD_MBEDTLS_CHOICE`` to
    :kconfig:option:`CONFIG_OPENTHREAD_SECURITY_DEFAULT_CONFIG`
  * ``CONFIG_CUSTOM_OPENTHREAD_SECURITY`` to
    :kconfig:option:`CONFIG_OPENTHREAD_SECURITY_CUSTOM_CONFIG`

* :kconfig:option:`CONFIG_OPENTHREAD_CRYPTO_PSA` no longer depends on
  :kconfig:option:`CONFIG_PSA_CRYPTO_CLIENT`, but instead selects
  :kconfig:option:`CONFIG_PSA_CRYPTO`.

* In builds without TF-M, :kconfig:option:`CONFIG_SECURE_STORAGE` is now automatically
  implied if :kconfig:option:`CONFIG_OPENTHREAD_SECURITY_DEFAULT_CONFIG` and
  :kconfig:option:`CONFIG_OPENTHREAD_CRYPTO_PSA` are set. This
  guarantees that a PSA ITS implementation is available and it requires a backend
  for Secure Storage (Settings, ZMS, or a custom one) to be configured.

* :kconfig:option:`CONFIG_OPENTHREAD_CRYPTO_PSA` is now enabled by default.

* Following Mbed TLS bump to version 4.1.0, legacy crypto support is no longer available
  in Zephyr. Therefore ``CONFIG_OPENTHREAD_CRYPTO_LEGACY_MBEDTLS_CONFIG`` has been removed.
  :kconfig:option:`CONFIG_OPENTHREAD_CRYPTO_PSA_CONFIG` was already the default choice for
  crypto support and it is now the only supported crypto option.

Trusted Firmware-M
==================

* The ``SECURE_UART1`` TF-M define is now controlled by Zephyr's
  :kconfig:option:`CONFIG_TFM_SECURE_UART`. This option will override any platform values previously
  specified in the TF-M repository.

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

* Renamed ``CONFIG_ARCH_HAS_COHERENCE`` to :kconfig:option:`CONFIG_CACHE_CAN_SAY_MEM_COHERENCE` as
  the feature is cache related so move it under cache.

  * Use :c:func:`sys_cache_is_mem_coherent` instead of :c:func:`arch_mem_coherent`.

* :kconfig:option:`CONFIG_RISCV` now requires that the :dtcompatible:`riscv` is present in the
  devicetree.

* The ``riscv,isa-base`` and  ``riscv,isa-extensions`` devicetree properties of
  :dtcompatible:`riscv` are now used to set the Base Integer Instruction Set and the RISC-V
  extensions. They are no longer set by the SoC. The devicetree property ``riscv,isa`` has been
  deprecated in favor of the two new properties. (:github:`97540`)

  * ``CONFIG_SOC_CV64A6_IMAFDC`` and ``CONFIG_SOC_CV64A6_IMAC`` are now combined into
    :kconfig:option:`CONFIG_SOC_CV64A6`, as the RISC-V extensions are now set by the devicetree.

  * The following options of :kconfig:option:`CONFIG_SOC_SERIES_AE350` had been removed, as they
    now can be set via the devicetree:

    * ``CONFIG_RV32I_CPU``
    * ``CONFIG_RV32E_CPU``
    * ``CONFIG_RV64I_CPU``
    * ``CONFIG_NO_FPU``
    * ``CONFIG_SINGLE_PRECISION_FPU``
    * ``CONFIG_DOUBLE_PRECISION_FPU``

---

### Doc Releases Migration Guide 4.5 (`doc/releases/migration-guide-4.5.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.5:

Migration guide to Zephyr v4.5.0 (Working Draft)
################################################

This document describes the changes required when migrating your application from Zephyr v4.4.0 to
Zephyr v4.5.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.5>`.

.. contents::
    :local:
    :depth: 2

Common
******

* Header files :file:`include/zephyr/sys_clock.h` is deprecated and will be removed in a future
  release. One shall include :file:`include/zephyr/sys/clock.h` instead.

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

* The minimum required CMake version is now 3.28.0. CMake 3.28.3 is shipped in the Ubuntu 24.04 LTS
  package repositories. Users of distributions providing an older CMake, such as Ubuntu 22.04 LTS,
  can get a recent version from the `Kitware APT repository <https://apt.kitware.com/>`_ or with
  ``pip install cmake``.

* Support for C standard versions older than C17 has been removed after having
  been deprecated. The Kconfig options ``CONFIG_STD_C11``, ``CONFIG_STD_C99`` and ``CONFIG_STD_C90``
  have been removed. Use C17 or higher when compiling Zephyr.

* :kconfig:option:`CONFIG_LEGACY_GENERATED_INCLUDE_PATH` has been deprecated, and disabled by
  default, includes must now be prefixed with ``zephyr/`` for zephyr files.

* CMake variables ``SOC_NAME``, ``SOC_SERIES``, ``SOC_FAMILY`` and ``SOC_V2_DIR`` have been
  deprecated as they duplicate variables already, the replacement variables are as follows:
  :kconfig:option:`CONFIG_SOC`, :kconfig:option:`CONFIG_SOC_SERIES`,
  :kconfig:option:`CONFIG_SOC_FAMILY` and ``SOC_FULL_DIR``.

* ``CONFIG_BUILD_NO_GAP_FILL`` has been removed. Gap filling is opt-in through
  :kconfig:option:`CONFIG_BUILD_OUTPUT_HEX_GAP_FILL` and
  :kconfig:option:`CONFIG_BUILD_OUTPUT_S19_GAP_FILL`, so simply drop the option.

* :file:`cmake/app/boilerplate.cmake` has been removed. Applications still
  including it directly must start their :file:`CMakeLists.txt` with
  ``find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})`` instead.

* Board revision Kconfig fragments named :file:`<board>_<revision>.conf` are no
  longer read. Rename them to :file:`<board>_<revision>_defconfig`.

* ``zephyr_code_relocate(FILES ...)`` no longer expands wildcard patterns, and
  now fails on one. Expand the pattern with ``file(GLOB ...)`` and pass the
  resulting file names instead.

* The ``ZephyrUnittest`` CMake package, deprecated since Zephyr 3.1, has been removed and
  ``west zephyr-export`` no longer registers it. Use
  ``find_package(Zephyr COMPONENTS unittest)`` instead of ``find_package(ZephyrUnittest)``.

* ``west spdx --init`` is deprecated and will be removed in Zephyr 5.0. A build with
  :kconfig:option:`CONFIG_BUILD_OUTPUT_META` now asks CMake for the file-based API object model
  that ``west spdx`` reads, so generating an SBOM no longer needs the build directory to be
  prepared beforehand: build as usual, then run ``west spdx``.

* The CMake ``flash``, ``debug``, ``debugserver``, ``attach`` and ``rtt`` targets have been
  removed. Use ``west flash``, ``west debug``, ``west debugserver``, ``west attach`` and
  ``west rtt`` instead. The emulation ``run`` and ``debugserver`` targets are unaffected.

* The ``WEST_DIR`` build system variable is no longer used.

* :kconfig:option:`CONFIG_DEPRECATION_TEST` has been deprecated, this is because
  :kconfig:option:`CONFIG_WARN_DEPRECATED` can be used instead, simply replace lines with
  ``CONFIG_DEPRECATION_TEST=y`` with ``CONFIG_WARN_DEPRECATED=n``.

* The hardening tool's data file :file:`scripts/kconfig/hardened.csv` has been replaced by a
  YAML database: profiles in :file:`scripts/kconfig/hardening.yaml` and per-subsystem
  ``hardening.yaml`` fragments next to the Kconfig files they relate to. Downstream forks that
  patched the CSV should migrate their entries to the new format (see :ref:`hardening`); out-of-tree
  recommendations no longer require patching the in-tree file at all and can instead be provided
  via ``-DHARDENCONFIG_EXTRA_SOURCES=``. Note that ``CONFIG_DEBUG_COREDUMP`` was listed in the
  CSV with a syntax error and was silently skipped; it is now actually checked, so
  ``hardenconfig`` may report it as a new finding. Three CSV entries were dropped rather than
  migrated: ``CONFIG_STACK_USAGE``, which only produces build-time :file:`.su` files and does not
  affect the image, and ``CONFIG_MPU_STACK_GUARD`` and ``CONFIG_BUILTIN_STACK_GUARD``, which are
  mutually exclusive mechanisms arbitrated by :kconfig:option:`CONFIG_HW_STACK_PROTECTION` —
  recommending both flagged the wrong one on cores with stack pointer limit registers. Enabling
  :kconfig:option:`CONFIG_HW_STACK_PROTECTION`, which is still recommended, lets the architecture
  pick.

Kernel
******

* ``_k_neg_eagain`` has been renamed to ``_errno_neg_egain`` as ``errno`` has been migrated out of
  kernel into ``lib/libc/common``.

* :c:func:`k_sem_reset` no longer wakes poll waiters waiting on the semaphore. Poll waiters
  remain pending until the semaphore becomes available or the poll operation times out.
  Applications that rely on reset to wake poll waiters must use an explicit synchronization
  mechanism instead.

* The ``CONFIG_SMP_BOOT_DELAY`` Kconfig option has been removed. Deferring the start of secondary
  CPUs to run time is now expressed per CPU in the devicetree: add the ``zephyr,deferred-start``
  flag to the corresponding ``cpu`` node under ``/cpus`` (typically in a board overlay) and start
  the CPU later with :c:func:`k_smp_cpu_start` or :c:func:`k_smp_cpu_resume`, as before. Unlike
  the removed option, which skipped every secondary CPU, deferral can now be chosen for each CPU
  individually. Note that the flag only takes effect on cpu nodes whose devicetree binding
  includes ``cpu.yaml``; a node without such a binding cannot be deferred.

* When :kconfig:option:`CONFIG_SCHED_CPU_MASK_PIN_ONLY` is enabled, calling
  :c:func:`k_thread_cpu_mask_clear`, :c:func:`k_thread_cpu_mask_enable_all`,
  or :c:func:`k_thread_cpu_mask_disable` now triggers an assertion instead of
  silently producing an invalid state.  Applications using these functions
  in PIN_ONLY mode must be updated to use :c:func:`k_thread_cpu_pin` instead.

* :kconfig:option:`CONFIG_SCHED_CPU_MASK` is no longer restricted to
  :kconfig:option:`CONFIG_SCHED_SIMPLE`.  Projects that previously selected
  ``SCHED_SCALABLE`` or ``SCHED_MULTIQ`` and worked around the limitation by
  keeping ``SCHED_SIMPLE`` for affinity purposes can now use their preferred
  backend directly.

* :c:func:`k_sleep` and :c:func:`k_usleep` are no longer system calls of their
  own.  They are now inline wrappers around the new :c:func:`k_sleep_ticks`
  system call, so that the compiler can fold or discard their unit conversions.
  Their prototypes, semantics and return values are unchanged, and they have
  moved from :file:`include/zephyr/kernel.h` to a new
  :file:`include/zephyr/sleep.h` which :file:`kernel.h` includes.  Code calling
  them needs no change.  Out of tree code taking their address, or relying on
  ``K_SYSCALL_K_SLEEP`` or ``K_SYSCALL_K_USLEEP``, must be updated to use
  :c:func:`k_sleep_ticks` instead.  Note that it reports an early wakeup from
  ``K_FOREVER`` as ``K_TICKS_FOREVER``, where :c:func:`k_sleep` returns ``-1``.

* The ``sys_port_trace_k_thread_sleep_*()``, ``sys_port_trace_k_thread_msleep_*()``
  and ``sys_port_trace_k_thread_usleep_*()`` hooks are replaced by
  ``sys_port_trace_k_thread_sleep_ticks_enter()`` and
  ``sys_port_trace_k_thread_sleep_ticks_exit()``, since :c:func:`k_sleep_ticks`
  is now the only one of the four that is not inline.  The exit hook reports
  the time left to sleep in ticks, so a backend that presented it as
  milliseconds should convert, for instance with
  :c:func:`k_ticks_to_ms_ceil64`.  Out of tree tracing backends defining any of
  the retired hooks must be updated.

* :c:struct:`k_futex` is no longer a kernel object and the corresponding type
  :c:enumerator:`K_OBJ_FUTEX` has been removed. Any user-accessible memory can
  be used as futex address. The error -EINVAL can no longer happen on futex
  operations.

* The :ref:`object core framework <object_cores_api>` no longer links objects
  into per-type lists through a node in the object. Statically defined objects
  are enumerated in place and objects initialized at run time are referenced
  from a bounded registry sized by
  :kconfig:option:`CONFIG_OBJ_CORE_MAX_DYNAMIC_OBJECTS`. The ``node`` member of
  :c:struct:`k_obj_core` and the ``list`` member of :c:struct:`k_obj_type` are
  removed; tools that walked those lists must use
  :c:func:`k_obj_type_walk_locked` or :c:func:`k_obj_type_walk_unlocked`.
  :c:macro:`K_OBJ_TYPE_DEFINE` now defines the :c:struct:`k_obj_type` variable
  itself, so a separate declaration of that variable must be dropped. Objects
  located in a thread's stack or in the interrupt stack are no longer
  registered, and :kconfig:option:`CONFIG_OBJ_CORE` selects
  :kconfig:option:`CONFIG_THREAD_STACK_INFO`, which adds the stack information
  fields to every :c:struct:`k_thread`. The new
  :kconfig:option:`CONFIG_OBJ_CORE_QUEUE`, enabled by default, adds an object
  core to every :c:struct:`k_queue`; as FIFOs and LIFOs embed a queue, they are
  reported by both their own object type and the queue type.

* Object tracking (:kconfig:option:`CONFIG_TRACING_OBJECT_TRACKING`) is now
  provided by the object core framework, which it selects. The
  ``_track_list_k_*`` list heads, the ``SYS_PORT_TRACK_NEXT()`` macro, the
  ``sys_track_*_init()`` hooks and the :file:`include/zephyr/tracing/tracking.h`
  header are removed. Code that walked the tracking lists must use
  :c:func:`k_obj_type_walk_locked` or :c:func:`k_obj_type_walk_unlocked` with
  the object type found by :c:func:`k_obj_type_find`.

Boards
******

* On NXP LPC54xxx, ``CONFIG_LPC54XXX_SRAM2_CLOCK`` has been replaced by
  ``CONFIG_SOC_SERIES_LPC54XXX_SRAM_CLOCKS``. The old name fitted while the
  LPC54114 was the only SoC in the series, where CMSIS ``SystemInit()`` enables
  just SRAM2. On the LPC546xx it enables SRAM2 and SRAM3, so the option now
  covers more than the one bank it was named after. Both default to ``y``. A
  configuration that assigned the old symbol has to be updated, and fails to
  build until it is.

* On RP2040 and RP2350, the ``vreg`` node (:dtcompatible:`raspberrypi,core-supply-regulator`) is
  now ``disabled`` by default instead of ``okay``. Out-of-tree boards that need this regulator
  must set ``status = "okay"`` on the ``&vreg`` node.

  On RP2040, the ``regulator-always-on`` and ``regulator-allowed-modes =
  <REGULATOR_RPI_PICO_MODE_NORMAL>`` properties are now set by default in the SoC dtsi. Boards
  that previously set them explicitly can remove those lines. (:github:`114751`)

* On RP2350 (rpi_pico family), the ``hazard3`` and ``m33`` cpucluster qualifiers are deprecated in
  favor of ``hazard3_0`` and ``m33_0``, which explicitly identify the cluster as CPU0 and pave the
  way for dual-core support. All in-tree RP2350 boards have been migrated to the new qualifiers
  (e.g. ``rpi_pico2/rp2350a/m33`` to ``rpi_pico2/rp2350a/m33_0``). Out-of-tree boards using the bare
  ``hazard3``/``m33`` qualifiers should rename their board files, ``board.yml`` ``cpucluster:``
  entries, and Kconfig select lines to use ``SOC_RP2350[AB]_HAZARD3_0``/``SOC_RP2350[AB]_M33_0``.
  The bare ``hazard3``/``m33`` entries in ``soc.yml`` and the corresponding
  ``SOC_RP2350[AB]_HAZARD3``/``_M33`` Kconfig symbols are deprecated and will both be removed in a
  future release.

* :zephyr:board:`rak4631` now supports the WisBlock ecosystem. A WisBlock Base
  Board shield (e.g. :ref:`rakwireless_rak19007`) is required to expose the
  sensor and IO slots:

  .. code-block:: shell

     west build -b rak4631/nrf52840 --shield rakwireless_rak19007

* The Kconfig options :kconfig:option:`CONFIG_SRAM_SIZE` and
  :kconfig:option:`CONFIG_SRAM_BASE_ADDRESS` have been deprecated, boards should instead use the
  devicetree ``zephyr.sram`` chosen node to specify the RAM node which will be used (whose values
  populated the Kconfig values). If either option is manually adjusted, it will cause
  :kconfig:option:`CONFIG_SRAM_DEPRECATED_KCONFIG_SET` to be set which indicates this deprecation.

* The internal Nordic SoC platform Kconfig symbols ``NRF_PLATFORM_HALTIUM``
  and ``NRF_PLATFORM_LUMOS`` are no longer used by in-tree code, which now
  relies on explicit :kconfig:option:`CONFIG_SOC_SERIES_NRF54H`,
  :kconfig:option:`CONFIG_SOC_SERIES_NRF92`,
  :kconfig:option:`CONFIG_SOC_SERIES_NRF54L` and
  :kconfig:option:`CONFIG_SOC_SERIES_NRF71` checks. Both symbols are kept
  as deprecated stubs that default to ``y`` when the corresponding SoC
  series is selected and :kconfig:option:`CONFIG_NRF_PLATFORM_DEPRECATED_SYMBOLS` is enabled,
  so existing ``CONFIG_NRF_PLATFORM_*=y`` lines and ``depends on NRF_PLATFORM_*`` clauses keep
  building with a Kconfig deprecation warning. Out-of-tree Kconfig, CMake and code using these
  symbols should be updated:

  * The ``CONFIG_NRF_PLATFORM_HALTIUM`` with
    :kconfig:option:`CONFIG_SOC_SERIES_NRF54H` or
    :kconfig:option:`CONFIG_SOC_SERIES_NRF92`.
  * The ``CONFIG_NRF_PLATFORM_LUMOS`` with
    :kconfig:option:`CONFIG_SOC_SERIES_NRF54L` or
    :kconfig:option:`CONFIG_SOC_SERIES_NRF71`.

* Aesc Silicon ``elemrv`` board is renamed to ``elemrv_flask_n``.

* The STMicroelectronics ``stm32mp157c_dk2`` board has been renamed to
  ``stm32mp157x_dk2`` and now references both SoC variants. Build for the
  STM32MP157C-DK2 with ``-b stm32mp157x_dk2/stm32mp157cxx`` and for the
  STM32MP157F-DK2 with ``-b stm32mp157x_dk2/stm32mp157fxx``. The previous
  ``-b stm32mp157c_dk2`` is deprecated and now maps to
  ``stm32mp157x_dk2/stm32mp157cxx``.

* The Nordic sysbuild Kconfig option ``SB_CONFIG_NRF_HALTIUM_GENERATE_UICR``
  has been renamed to :kconfig:option:`SB_CONFIG_NRF_GENERATE_UICR`.
  Update sysbuild configurations to use the new name.

* The Nordic SoC headers :file:`<haltium_power.h>` and :file:`<haltium_pm_s2ram.h>`
  have been renamed to :file:`<soc_power.h>` and :file:`<soc_pm_s2ram.h>` respectively.
  Forwarder headers under the old names remain available and emit a ``#warning``
  pointing to the new include paths. Out-of-tree code that includes the old paths
  should be updated:

  * ``#include <haltium_power.h>`` with ``#include <soc_power.h>``.
  * ``#include <haltium_pm_s2ram.h>`` with ``#include <soc_pm_s2ram.h>``.

* The system clock on STM32H7RS-based boards (stm32h7s78_dk and nucleo_h7s3l8)
  has been increased to 600 MHz. This is achieved by increasing the PLL1 frequency
  to 300 MHz, which also affects the bus and kernel clocks, resulting in slightly
  higher frequencies.

* :kconfig:option:`CONFIG_GPIO` is no longer enabled by default on most STM32 boards.
  (boards with GPIO hogs keep it enabled as GPIO is needed for hogs to work).
  Applications that relied on ``CONFIG_GPIO=y`` being the default will need to enable
  the option explicitly. (:github:`109468`)

* Boards that use UF2 images that migrate to :dtcompatible:`zephyr,mapped-partition` should enable
  HEX output in their defconfig (:kconfig:option:`CONFIG_BUILD_OUTPUT_HEX`), as the UF2 image
  generation can no longer rely on :kconfig:option:`CONFIG_FLASH_LOAD_OFFSET` to determine the code
  address from a BIN output. HEX to UF2 is now the default (instead of BIN). (:github:`107944`)

* Ezurio bl54l15u_dvk has been removed. The bl54l15_dvk remains available and supports
  both the bl54l15 and bl54l15u variants of the module, with the same features.
  Boards using the bl54l15u_dvk should migrate to bl54l15_dvk/nrf54l15/cpuapp or
  bl54l15_dvk/nrf54l15/cpuflpr as appropriate.

* The default MCUboot signature type for the boards stm32h573i_dk and b_u585i_iot02a has
  been changed from RSA-3072 to EC-P256. This affects builds that have MCUboot enabled in
  TF-M (:kconfig:option:`CONFIG_TFM_BL2`). If you wish to keep using RSA-3072, you need
  to set :kconfig:option:`CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE` to ``"RSA-3072"``.
  Otherwise, make sure to have your own signing keys of the signature type in use.

* All Kconfigs under modules/hal_silabs/gecko were renamed from ``SOC_GECKO_*``
  to ``SILABS_GECKO_*``. Adapt your board accordingly.

* The clock configuration for all Silabs Series 0 and Series 1 boards needs to be specified in the
  device tree now. The Kconfigs ``CONFIG_SOC_GECKO_HAS_HFRCO_FREQRANGE`` and ``CONFIG_CMU_*`` have
  been removed. See :github:`111754` for examples of how to adapt your board.

* On the nRF54LM20 DK, the ``nrf7002eb2`` shield (and its ``nrf7002eb2_nrf7001`` and
  ``nrf7002eb2_nrf7000`` variants) no longer redirects the application console. Previously it
  disabled UART20 and rerouted the console (shell, mcumgr, and Bluetooth monitor) to UART30 to
  work around a pin conflict that only exists on the pre-production kit, not on the production
  nRF54LM20 DK. The console now stays on UART20 (VCOM1), matching the standard board behaviour,
  and ``button3``/``sw3`` is no longer deleted. Existing users of this shield on the nRF54LM20 DK
  must move their serial terminal from VCOM0 back to VCOM1. The nRF54L15 DK is unaffected: its
  expansion header genuinely conflicts with UART20, so it keeps rerouting the console to UART30.

* The mimxrt1180_evk Kconfig option ``NXP_BOARD_SPECIFIC_MPU_SETTINGS`` has been renamed to
  :kconfig:option:`CONFIG_BOARD_NXP_SPECIFIC_MPU_SETTINGS`, matching the ``BOARD_NXP_*`` naming
  used by the other NXP board options and by frdm_imxrt1186. Configurations setting
  ``CONFIG_NXP_BOARD_SPECIFIC_MPU_SETTINGS`` must be updated to the new name.

* Boards must now select :kconfig:option:`CONFIG_TFM_PARTITION_FIRMWARE_UPDATE_SUPPORTED` if they
  support firmware update via TF-M.

* :kconfig:option:`CONFIG_SPI_STM32_INTERRUPT` default activation is removed from STM32 based boards
  that used to do it.
  Choosing interrupt-driven vs polling SPI transfers is an application concern, not a board one.
  Applications that rely on interrupt-driven SPI (for example to use :c:func:`spi_transceive_signal`
  or :c:func:`spi_transceive_cb` without DMA) on an affected board must now explicitly enable
  :kconfig:option:`CONFIG_SPI_STM32_INTERRUPT` in their own configuration. (:github:`116218`)

* The following board name aliases, deprecated in v4.3 or earlier, have been removed
  (:github:`116657`, :github:`116750`). Build for the board target the alias used to
  redirect to instead:

  * ``arduino_uno_r4_minima`` → ``arduino_uno_r4@minima``
  * ``arduino_uno_r4_wifi`` → ``arduino_uno_r4@wifi``
  * ``esp32c6_devkitc`` → ``esp32c6_devkitc/esp32c6/hpcore``
  * ``esp32_devkitc_wroom/esp32/procpu`` and ``esp32_devkitc_wrover/esp32/procpu`` →
    ``esp32_devkitc/esp32/procpu``
  * ``esp32_devkitc_wroom/esp32/appcpu`` and ``esp32_devkitc_wrover/esp32/appcpu`` →
    ``esp32_devkitc/esp32/appcpu``
  * ``neorv32`` → ``neorv32/neorv32/up5kdemo``
  * ``panb511evb`` → ``panb611evb``
  * ``raytac_an54l15q_db/nrf54l15/cpuapp`` → ``raytac_an54lq_db_15/nrf54l15/cpuapp``
  * ``scobc_module1`` → ``scobc_a1``
  * ``xiao_esp32c6`` → ``xiao_esp32c6/esp32c6/hpcore``

* The Nordic nRF52 Kconfig option ``CONFIG_GPIO_AS_PINRESET`` has been removed. Set the
  ``gpio-as-nreset`` property on the ``&uicr`` devicetree node instead.

* The Nordic Kconfig options ``CONFIG_SOC_DCDC_NRF52X``, ``CONFIG_SOC_DCDC_NRF52X_HV``,
  ``CONFIG_SOC_DCDC_NRF53X_APP``, ``CONFIG_SOC_DCDC_NRF53X_NET`` and
  ``CONFIG_SOC_DCDC_NRF53X_HV`` have been removed. Configure the regulators in devicetree
  instead: ``regulator-initial-mode = <NRF5X_REG_MODE_DCDC>`` on ``&reg1``/``&vregmain``/
  ``&vregradio``, and ``status = "okay"`` on ``&reg0``/``&vregh``.

* The Nordic nRF53 Kconfig option ``CONFIG_BOARD_ENABLE_CPUNET`` has been removed. Use
  :kconfig:option:`CONFIG_SOC_NRF53_CPUNET_ENABLE` instead.

* The ``esp_threadbr_ethernet`` shield has been removed. Existing users should
  build for ``esp_threadbr/esp32s3/procpu/ethernet`` instead of combining
  ``esp_threadbr/esp32s3/procpu`` with ``SHIELD=esp_threadbr_ethernet``.
  Along with the shield, the ``esp_threadbr`` sub-board connector description
  has been removed, so the ``espressif,esp-threadbr-header`` binding, the
  ``esp_threadbr_header`` GPIO nexus node and the ``esp_threadbr_spi`` and
  ``esp_threadbr_i2c`` devicetree labels are gone. Out-of-tree overlays using
  them have to reference the SoC nodes (``&spi2``, ``&i2c0``, ``&gpio0``,
  ``&gpio1``) directly. (:github:`116956`)

* The STM32MP15 Cortex-M4 SoC Kconfig symbol ``SOC_STM32MP15_M4`` has been renamed to
  :kconfig:option:`CONFIG_SOC_STM32MP157CXX_M4`. Out-of-tree STM32MP15 boards that selected
  ``SOC_STM32MP15_M4`` must select :kconfig:option:`CONFIG_SOC_STM32MP157CXX_M4` instead.
  (:github:`118151`)

* On the Arduino UNO R4 WiFi, ``zephyr,console`` and ``zephyr,shell-uart`` now
  default to SCI9, which the on-board ESP32-S3 bridges to the USB-C connector as
  a USB CDC ACM port, instead of SCI2 on the D0/D1 header pins. Console output is
  now visible on the same port used to flash the board, with no external
  USB-serial adapter. Applications that relied on the console being on D0/D1 can
  select it again in an application overlay:

  .. code-block:: devicetree

     / {
         chosen {
             zephyr,console = &uart2;
             zephyr,shell-uart = &uart2;
         };
     };

  The Arduino UNO R4 Minima is unaffected. (:github:`118433`)

* The Espressif per-module devicetree include files and their SoC Kconfig symbols have been
  removed. A module or SIP part number describes how much flash and PSRAM a board carries, which
  is a property of the board rather than of the SoC, so both are now declared by the board itself.

  Every ``espressif/<soc>/<soc>_<module>.dtsi`` file is replaced by a single
  ``espressif/<soc>/<soc>.dtsi`` per SoC. The matching hidden Kconfig symbols, such as
  ``SOC_ESP32S3_WROOM_N8`` and ``SOC_ESP32_WROVER_E_N16R8``, are replaced by the plain SoC symbol,
  such as :kconfig:option:`CONFIG_SOC_ESP32S3`. ``SOC_PART_NUMBER`` now reports the SoC rather than
  the module.

  Out-of-tree Espressif boards must be updated, and fail to build until they are:

  * Include the plain SoC dtsi instead of the module one.
  * Select the plain SoC symbol in ``Kconfig.<board>``.
  * Describe the flash in the board dts, giving both ``reg`` and a matching ``ranges``, because
    the SoC dtsi no longer sets either.

    .. code-block:: devicetree

       &flash0 {
           reg = <0x0 DT_SIZE_M(8)>;
           ranges = <0x0 0x0 DT_SIZE_M(8)>;
       };

  * Describe the PSRAM the same way, on boards that have it:

    .. code-block:: devicetree

       &psram0 {
           size = <DT_SIZE_M(2)>;
       };

  On the dual-core ESP32, ``espressif/esp32/esp32_appcpu.dtsi`` no longer sets a flash either, so
  an APPCPU board dts has to declare the same flash as its PROCPU counterpart.

* On NXP S32K148, the ENET nodes ``enet`` (:dtcompatible:`nxp,enet`), ``enet_mac``
  (:dtcompatible:`nxp,enet-mac`), ``enet_mdio`` (:dtcompatible:`nxp,enet-mdio`) and
  ``enet_ptp_clock`` (:dtcompatible:`nxp,enet-ptp-clock`) are now ``disabled`` by default instead
  of ``okay``. Out-of-tree boards that use Ethernet must set ``status = "okay"`` on these nodes.

* The ``mimxrt1170_evk`` and ``mimxrt1160_evk`` cm7 targets and ``frdm_imxrt1152`` now ship a static
  Arm MPU region table and enable :kconfig:option:`CONFIG_ARM_MPU_CM7_UNMAPPED_REGION` by default.
  The MPU therefore no longer falls back to the ``PRIVDEFENA`` background map, and addresses outside
  that table are no longer reachable. The table covers ITCM, DTCM, the CM4-shared OCRAM image region
  on the dual-core boards, the RAM backing the ``zephyr,sram`` chosen node, the FlexSPI NOR window
  and the peripheral aperture, but not the remaining on-chip banks: ``ocram1`` and ``ocram2`` on
  ``mimxrt1170_evk`` and ``frdm_imxrt1152``, and ``ocram_combined`` on ``mimxrt1160_evk``.

  Applications that place data in one of those banks must claim it explicitly with a
  ``zephyr,memory-attr`` node, which is then given an MPU region of its own, as the in-tree
  :file:`samples/subsys/ipc` samples do for the memory they share with the CM4. Setting
  :kconfig:option:`CONFIG_ARM_MPU_CM7_UNMAPPED_REGION` to ``n`` restores the previous behavior.

* The Silabs Kconfig option ``CONFIG_SOC_SILABS_IMAGE_PROPERTIES``
  has been renamed to :kconfig:option:`CONFIG_SOC_VENDOR_SILABS_IMAGE_PROPERTIES`.

* The Silabs Kconfig option ``CONFIG_SOC_SILABS_PM_LOW_INTERRUPT_LATENCY``
  has been renamed to :kconfig:option:`CONFIG_SOC_VENDOR_SILABS_PM_LOW_INTERRUPT_LATENCY`.

* The stm32h573i_dk, stm32h5f5j_dk disco kit are now adopting the mspi controller model.
  This is the next step of the migration to mspi stm32 support.
  For both boards, declare the xspi node as ``st,stm32-xspi-controller`` compatible.

* The stm32l562e and stm32h735g_disco kit are now adopting the mspi controller model.
  This is the next step of the migration to mspi stm32 support.
  For that board, declare the ospi node as ``st,stm32-ospi-controller`` compatible.
  The stm32l5 and stm32h735 devices DTS will be updated once all the target boards are changed.

Device Drivers and Devicetree
*****************************

.. Only place contents common to all device drivers here. Contents specific to one driver subsystem
   goes into its own subsection, below.

* The :c:macro:`DEVICE_API` macro is now mandatory for declaring device driver API instances of any
  upstream driver class, including in out-of-tree drivers. :c:macro:`DEVICE_API_GET` now asserts
  that the API belongs to the requested class, which requires the instance to live in the class's
  iterable section. Out-of-tree driver classes that embed an upstream API as their first member
  must also declare the relationship with :c:macro:`DEVICE_API_EXTENDS`, so that
  :c:macro:`DEVICE_API_GET` for the parent class succeeds on devices implementing the child API.
  See :ref:`device_driver_api` for details.

.. Group contents in this section by subsystem, e.g.:
..
.. ADC
.. ===
..
.. ...

.. zephyr-keep-sorted-start re(^\w) ignorecase

ADC
===

* The ``girqs`` and ``pcrs`` properties (array type) of :dtcompatible:`microchip,xec-adc` have been
  replaced by encoded ``girqs`` (using ``MCHP_XEC_ECIA_GIRQ_ENC`` macros) and ``pcr-scr`` (int type)
  for encoded PCR register index and bit position (:github:`105658`).

* The :kconfig:option:`CONFIG_LPADC_DO_OFFSET_CALIBRATION` option is now only meaningful when
  :kconfig:option:`CONFIG_ADC_MCUX_LPADC` is enabled, and its ``default y`` is now scoped to that
  condition. In-tree boards no longer enable it explicitly in their defconfigs since
  the default already covers them.

* The ``CONFIG_LPADC_CHANNEL_COUNT`` Kconfig option has been removed. The NXP LPADC driver now
  treats hardware command slots as logical ADC channels and derives the number of logical channels
  per instance from the ``channel`` child nodes declared for that instance in devicetree, so unused
  command slots no longer consume RAM. Applications that lowered the Kconfig option to save RAM
  should simply drop it. An instance that declares no ``channel`` node keeps the full hardware
  capacity available, so applications that only ever configure channels at runtime through
  :c:func:`adc_channel_setup` are unaffected; applications that mix both must declare in
  devicetree the highest channel identifier they set up at runtime. Declaring a channel identifier
  beyond the number of ``CMD`` registers implemented by the SoC is now a build error instead of a
  runtime HAL assertion, and :c:func:`adc_read` now rejects an empty channel mask, or one selecting
  channels beyond that limit, with ``-EINVAL`` instead of silently ignoring it (:github:`116995`).

Analog Devices
==============

* :kconfig:option:`CONFIG_NUM_IRQS` is now computed automatically for all MAX32 SoCs from the
  devicetree, based on active (``status = "okay";``) devices, using the
  ``dt_highest_controller_irq_number`` Kconfig preprocessor function. The hardcoded per-SoC values
  have been removed, and the resulting IRQ table is typically considerably smaller than before.
  Applications which register custom ISRs (using :c:macro:`IRQ_CONNECT()`) may encounter build
  failures such as the following due to :kconfig:option:`CONFIG_NUM_IRQS` having a lower value:

  .. code-block::

    gen_isr_tables.py: error: IRQ 88 (offset=0) exceeds the maximum of 54

  Explicitly set :kconfig:option:`CONFIG_NUM_IRQS` to an appropriate value to solve these issues.
  (:ref:`The following documentation page <setting_configuration_values>` explains how to do it)

  Applications that install ISRs at runtime with :c:func:`irq_connect_dynamic` are not covered by
  this build-time check and must be reviewed manually.

Audio Codec
===========

* The audio codec driver backend API now uses :c:struct:`audio_codec_driver_api` instead of
  ``struct audio_codec_api``.

  Out-of-tree audio codec drivers must rename their backend API struct definitions and switch
  their API instances to ``DEVICE_API(audio_codec, ...)``. See :github:`110631` for examples of how
  in-tree drivers have been updated. Application code using the ``audio_codec_...`` APIs is not
  impacted.

Clock Control
=============

* The Nordic Kconfig option ``CONFIG_NRFS_LOCAL_DOMAIN_DVFS_SCALE_DOWN_AFTER_INIT`` has been
  removed. Use :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_HSFLL_LOCAL_REQ_LOW_FREQ` instead.

* The :dtcompatible:`nxp,imxrt11xx-arm-pll` binding now uses ``loop-div`` and
  ``post-div`` for ARM PLL configuration. The legacy ``clock-mult`` and
  ``clock-div`` properties remain supported but are deprecated. Existing
  RT11xx overlays should be updated using the mapping
  ``loop-div = clock-mult * 2`` and ``post-div = clock-div``.

* SiWx91x clock control has been split into three managers
  (:dtcompatible:`silabs,siwx91x-cmu-aon`, :dtcompatible:`silabs,siwx91x-cmu-ulp`,
  :dtcompatible:`silabs,siwx91x-cmu-hp`). The legacy :dtcompatible:`silabs,siwx91x-clock`
  binding and ``clock0`` node are removed. Out-of-tree boards and overlays must update
  ``clocks`` phandles to the matching CMU and use the updated ``SIWX91X_CLK_*`` IDs from
  ``siwx91x-clock.h``. For example, ``clocks = <&clock0 SIWX91X_CLK_UART0>;`` becomes
  ``clocks = <&cmu_hp SIWX91X_CLK_UART0>;``.

Clock control nrf deprecation
-----------------------------

.. toggle::

   The :ref:`clock_control_api` driver has been updated for the following clocks on nRF52, nRF53, nRF91, and nRF54L Series devices:

   * HFCLK
   * LFCLK
   * XO
   * XO24M
   * HFCLK192M
   * HFCLKAUDIO

   To restore the legacy driver implementation, set :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF` to ``y``.

   To migrate your code from zephyr v4.4.0 to zephyr v4.5.0, complete the following steps:

   1. Enable each application-controlled clock in the application-specific or board-specific devicetree overlay file.

      This enables the corresponding clock driver.
      For example:

      .. code-block:: dts

          /* if nRF54L XO is to be controlled */
          &xo {
              status = "okay";
          };

          /* if nRF52, nRF53 HFCLK is to be controlled */
          &hfclk {
              status = "okay";
          };

          /* if nRF52, nRF53, nRF91 or nRF54L LFCLK is to be controlled */
          &lfclk {
              status = "okay";
          };

          /* if HFCLK192M is to be controlled */
          &hfclk192m {
              status = "okay";
          };

          /* if XO24M is to be controlled */
          &xo24m {
              status = "okay";
          };

          /* if HFCLKAUDIO is to be controlled */
          &hfclkaudio {
              status = "okay";
          };

   #. Rename the following Kconfig options:

      * Replace :kconfig:option:`CONFIG_NRFX_CLOCK_USE_LFRC_CALIBRATION` with :kconfig:option:`CONFIG_NRFX_CLOCK_LFCLK_USE_LFRC_CALIBRATION`.
      * Replace :kconfig:option:`CONFIG_NRFX_CLOCK_LF_CAL_ENABLED` with :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION`.

   #. Move the following Kconfig options to the ``nordic,nrf-clock-lfclk`` devicetree node:

      * Replace :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_K32SRC_FREQUENCY` with the ``k32src-frequency`` property.
      * Replace :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_SOURCE` choice with the ``k32src`` enum property.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_RC` and :kconfig:option:`NRFX_CLOCK_LF_SRC_RC` with the ``k32src = "rc"``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_XTAL` and :kconfig:option:`NRFX_CLOCK_LF_SRC_XTAL` with the ``k32src = "xtal"``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_SYNTH` and :kconfig:option:`NRFX_CLOCK_LF_SRC_SYNTH` with the ``k32src = "synth"``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_EXT_LOW_SWING` and :kconfig:option:`NRFX_CLOCK_LF_SRC_LOW_SWING` with the ``k32src = "ext_low_swing"``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_EXT_FULL_SWING` and :kconfig:option:`NRFX_CLOCK_LF_SRC_FULL_SWING` with the ``k32src = "ext_full_swing"``.
      * Replace :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_ACCURACY_PPM` choice with the ``k32src-accuracy-ppm`` enum property.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_500PPM` with the ``k32src-accuracy-ppm = <500>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_250PPM` with the ``k32src-accuracy-ppm = <250>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_150PPM` with the ``k32src-accuracy-ppm = <150>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_100PPM` with the ``k32src-accuracy-ppm = <100>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_75PPM` with the ``k32src-accuracy-ppm = <75>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_50PPM` with the ``k32src-accuracy-ppm = <50>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_30PPM` with the ``k32src-accuracy-ppm = <30>``.
      * Replace :kconfig:option:`CLOCK_CONTROL_NRF_K32SRC_20PPM` with the ``k32src-accuracy-ppm = <20>``.
      * Replace :kconfig:option:`CONFIG_NRFX_CLOCK_LFXO_TWO_STAGE_ENABLED` with ``k32src = "xtal"`` or ``k32src = "ext_low_swing"`` or ``k32src = "ext_full_swing"``.

   #. Update your application to use the new clock control API.

      Use the following mapping when you update the API calls:

      * ``mgr`` is the on-off manager created for ``nordic,nrf-clock`` and obtained using ``z_nrf_clock_control_get_onoff``.
      * ``dev`` is the device compatible with ``nordic,nrf-clock``.
      * ``sys`` is the subsystem for ``nordic,nrf-clock``.
         The new clocks implementation does not use it.
      * ``new_dev`` is the device that corresponds to the previously used ``sys`` value.
        It must be compatible with one of the following nodes:

        * ``nordic,nrf-clock-lfclk``
        * ``nordic,nrf-clock-hfclk``
        * ``nordic,nrf-clock-xo``
        * ``nordic,nrf-clock-hfclk192m``
        * ``nordic,nrf-clock-xo24m``
        * ``nordic,nrf-clock-hfclkaudio``

      The following example shows the deprecated API usage and the corresponding new API usage:

      .. code-block:: c

         // Old API usage (deprecated)
         z_nrf_clock_calibration_init(&mgrs);    //1
         onoff_release(mgr)                      //2
         onoff_request(mgr, &cli);               //3
         onoff_cancel_or_release(mgr, &cli);     //4
         clock_control_on(dev,sys)               //5
         clock_control_off(dev,sys)              //6
         clock_control_async_on(dev,sys)         //7
         clock_control_get_status(dev,sys)       //8
         z_nrf_clock_control_get_onoff(sys)      //9

         // New API usage
         z_nrf_clock_calibration_init();                             //1
         nrf_clock_control_release(new_dev, NULL);                   //2
         nrf_clock_control_request(new_dev, NULL, &cli);             //3
         nrf_clock_control_cancel_or_release(new_dev, NULL, &cli);   //4
         clock_control_on(new_dev, NULL)                             //5
         clock_control_off(new_dev, NULL)                            //6
         clock_control_async_on(new_dev, NULL)                       //7
         clock_control_get_status(new_dev, NULL)                     //8
         // Remove all uses of z_nrf_clock_control_get_onoff         //9

Comparator
==========

* The deprecated ``nxp,``-prefixed :dtcompatible:`nxp,kinetis-acmp` properties have been removed:
  use ``enable-pin-out``, ``use-unfiltered-output``, ``enable-high-speed-mode``,
  ``filter-enable-sample``, ``filter-count``, ``filter-period`` and ``enable-window-mode``.

Controller Area Network (CAN)
=============================

* The header files for the NXP SJA1000 (``can_sja1000.h``) and Bosch M_CAN (``can_mcan.h``) CAN
  controller driver backends where converted to library-specific includes. Out-of-tree drivers based
  on these backends will need to update their include directives accordingly.

* The Bosch M_CAN driver now solely uses RX FIFO0 for processing received CAN frames, ensuring these
  are processed in the order received on the bus. Out-of-tree users may want to update any
  ``bosch,mram-cfg`` devicetree property overrides to allocate all FIFO elements to RX FIFO0.

* The deprecated ``bus-speed`` and ``bus-speed-data`` CAN controller devicetree properties have
  been removed. Use ``bitrate`` and ``bitrate-data`` instead.

* The CAN controllers driver ops no longer contain a ``can_set_state_change_callback_t`` function
  pointer as adding/removing callbacks is now handled via the generic
  :c:func:`can_add_state_change_callback`, and :c:func:`can_remove_state_change_callback` API
  functions. Out-of-tree drivers can either remove the driver op completely or replace it with
  ``can_state_change_callbacks_enabled_t`` as needed. Drivers must now use
  :c:func:`can_fire_state_change_callbacks` for firing CAN controller state change callbacks
  (:github:`117889`).

* The CAN bus network driver (:kconfig:option:`CONFIG_NET_CANBUS`) now defines a network interface
  for each CAN controller device defined with :c:macro:`CAN_DEVICE_DT_DEFINE` or
  :c:macro:`CAN_DEVICE_DT_INST_DEFINE`, instead of one for the ``zephyr,canbus`` chosen node.

Counter
=======

* :dtcompatible:`nxp,lpc-ctimer` now routes its input capture signal through the generic
  :ref:`mux <mux_api>` subsystem. The ``inputmux-connections`` property has been removed; describe
  the routing with an INPUTMUX controller node (:dtcompatible:`nxp,inputmux`) and reference it from
  the timer node's ``mux-states`` property instead. The cell layout is unchanged, so an existing
  ``inputmux-connections = <&inputmux0 0 0x06000024>;`` becomes
  ``mux-states = <&inputmux0 0 0x06000024>;`` (:github:`112088`)

* The ``prescaler`` property of :dtcompatible:`nxp,lptmr` has been removed. Use
  ``prescale-glitch-filter`` and ``prescale-glitch-filter-bypass`` instead. The new property is
  an exponent, not a divisor: the prescaler divides by ``2^(prescale-glitch-filter + 1)``.

* :dtcompatible:`adi,max32-rtc-counter` and :dtcompatible:`adi,max32-wut` now use the shared
  ``clk_32k`` node for 32 kHz clock source selection. The clock source is now configured through the
  ``clocks`` property of the ``clk_32k`` node, instead of ``clock-source`` property in each
  peripheral node (:github:`117709`).

* The NXP RTC counter drivers (:dtcompatible:`nxp,rtc`, :dtcompatible:`nxp,lpc-rtc` and
  :dtcompatible:`nxp,imx-snvs-rtc`) now return ``-ETIME`` instead of ``-EINVAL`` from
  :c:func:`counter_set_channel_alarm` when an absolute alarm is set too late, matching the counter
  API contract. Applications that checked for ``-EINVAL`` on the late-absolute-alarm path must check
  for ``-ETIME`` instead. An absolute target equal to the current counter value is now also reported
  as late (``-ETIME``), and the late check no longer applies to relative alarms.

Devicetree
==========

* ``int`` and ``array`` typed devicetree properties whose DTS source uses a negative literal
  (e.g. ``<(-1)>``) now expand to a negative value instead of the two's-complement unsigned
  value used previously. Code that relied on the old unsigned representation, for example
  unsigned comparisons or ``BUILD_ASSERT(DT_PROP(node, foo) > 0, ...)`` checks, must be updated
  to use signed types or signed-aware checks (:github:`107271`).

* The ``zephyr,memory-region-mpu`` property has been removed. Use ``zephyr,memory-attr``
  instead. It takes an integer bitmask, not a string:

  .. code-block:: none

     "RAM"         -> <DT_MEM_ARM_MPU_RAM>
     "RAM_NOCACHE" -> <DT_MEM_ARM_MPU_RAM_NOCACHE>
     "FLASH"       -> <DT_MEM_ARM_MPU_FLASH>
     "PPB"         -> <DT_MEM_ARM_MPU_PPB>
     "IO"          -> <DT_MEM_ARM_MPU_IO>
     "EXTMEM"      -> <DT_MEM_ARM_MPU_EXTMEM>

Digital Microphone
==================

* The DMIC driver backend API now uses :c:struct:`dmic_driver_api` instead of ``struct _dmic_ops``.

  Out-of-tree DMIC drivers must rename their backend API struct definitions and switch their API
  instances to ``DEVICE_API(dmic, ...)``. See :github:`107695` for examples of how in-tree drivers
  have been updated. Application code using :c:func:`dmic_configure`, :c:func:`dmic_trigger`, and
  :c:func:`dmic_read` is not impacted.

Disk
====

* :kconfig:option:`CONFIG_NVME_REQUEST_TIMEOUT` is documented and ranged in
  seconds. The NVMe request timeout path previously compared that value against
  :c:func:`k_uptime_get_32` milliseconds without converting, so the default of
  ``5`` expired after about 5 ms instead of 5 seconds. The driver now converts
  with ``MSEC_PER_SEC`` before scheduling and expiry checks. Review any
  non-default setting if the application depended on the former short timeout
  behavior. (:github:`117809`)

Display
=======

* The Kconfig options ``CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_*`` for SDL display pixel-format
  selection have been removed in favour of setting the pixel-format property directly in devicetree
  on the SDL pseudo-device node using the PANEL_PIXEL_FORMAT_* macros from
  :zephyr_file:`include/zephyr/dt-bindings/display/panel.h`. (:github:`104099`)

* The LVGL ``CONFIG_LV_Z_COLOR_24_BGR_TO_RGB`` Kconfig option has been removed. LVGL's RGB888 color
  format stores bytes in memory as blue, green, red, which matches the in-memory layout of
  :c:enumerator:`PIXEL_FORMAT_RGB_888`, so no channel swap is performed for displays reporting that
  format. Displays whose framebuffer instead expects a red, green, blue byte order must now report
  :c:enumerator:`PIXEL_FORMAT_BGR_888`, for which the LVGL glue performs the red/blue channel swap
  automatically.

* LVGL now renders directly in its ``RGB565_SWAPPED`` color format for displays reporting
  :c:enumerator:`PIXEL_FORMAT_RGB_565X`, so :kconfig:option:`CONFIG_LV_COLOR_16_SWAP` is no longer
  needed for these displays and must not be enabled together with that pixel format, otherwise the
  buffer ends up byte-swapped twice. The ``t_deck``, ``m5stack_core2`` and ``wio_terminal`` boards
  no longer enable the option by default.

* The Kconfig options ``CONFIG_ST730X_POWERMODE_LOW`` for ST7305 and ST7306 displays has been
  removed in favour of toggling the low-power-mode property on the device node.

* The ``set_contrast`` function of the ST7567 display driver now expects a contrast value in the
  range 0-255, instead of 0-63. The driver now scales the value to the 6-bit range expected by the
  controller. The ``CONFIG_ST7567_DEFAULT_CONTRAST`` Kconfig option has been updated to reflect the
  new range. (:github:`112528`)

* :dtcompatible:`raspberrypi,bcm2711-framebuffer` now requires a ``pixel-format``
  property and gains an optional ``red-blue-swap`` boolean to indicate the panel expects
  BGR channel order. Boards relying on firmware-negotiated pixel order to correct swapped
  channels must also set ``red-blue-swap``. (:github:`115633`)

* The ``chipone,co5300`` MIPI DSI display driver no longer maintains an
  internal shadow framebuffer, and the ``pitch-align``, ``addr-align``, and
  ``ext-ram`` devicetree properties have been removed from the
  :dtcompatible:`chipone,co5300` binding. Boards previously relying on these
  properties to satisfy display-controller alignment requirements should
  instead enable :kconfig:option:`CONFIG_LV_Z_AREA_X_ALIGNMENT_WIDTH` and
  :kconfig:option:`CONFIG_LV_Z_AREA_Y_ALIGNMENT_WIDTH` (LVGL) so that
  invalidated areas are rounded to the required boundary before reaching the
  driver. (:github:`117765`)

* The ssd16xx display driver now reports :c:enumerator:`PIXEL_FORMAT_MONO01` instead of
  :c:enumerator:`PIXEL_FORMAT_MONO10`, which matches the controller RAM, where a set bit is a
  white pixel. LVGL and the character framebuffer draw with the intended colors without any
  change. Applications that pass their own buffers to :c:func:`display_write` and inverted them
  to compensate for the former pixel format must drop that inversion.

DMA
===

* :dtcompatible:`silabs,siwx91x-dma` has been renamed :dtcompatible:`silabs,udma`. The Kconfig
  options have also been renamed to align with this new name (``DMA_SILABS_SIWX91X`` in
  ``DMA_SILABS_SIWX91X_UDMA`` and ``DMA_SILABS_SIWX91X_SG_BUFFER_COUNT`` in
  ``DMA_SILABS_SIWX91X_UDMA_DESCR_COUNT``)

* To align with the other drivers, ``GPDMA_SILABS_SIWX91X_DESCRIPTOR_COUNT`` has been renamed in
  ``DMA_SILABS_SIWX91X_GPDMA_DESCR_COUNT``.

ESPI
====

* ECUSTOM_HOST_SUBS_INTERRUPT_EN has been deprecated in favor of new API that allows fine-grained
  enable/disable control of individual eSPI hardware interrupts.
  This replaces the current all-or-nothing approach, which is tightly coupled to
  CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE and single eSPI ACPI HW block instance in all eSPI drivers.
  This will be completely removed in the next Zephyr release to give time for transition.

* The Microchip XEC eSPI v2 driver (:dtcompatible:`microchip,xec-espi-v2`) has been ported from
  MEC172x to also support MEC174x, MEC175x, and MEC165xB. This required several devicetree
  changes that affect out-of-tree boards using this binding (:github:`109519`):

  * The ``pcrs`` property has been replaced by ``pcr-scr``, which is now a single integer
    encoded with the ``MCHP_XEC_SCR_ENCODE(reg, bit)`` helper macro instead of a
    ``<reg bit>`` cell pair. Update existing overlays from ``pcrs = <2 19>;`` to
    ``pcr-scr = <MCHP_XEC_SCR_ENCODE(2, 19)>;``.

  * On MEC174x/5x/165xB only, ``girqs`` cells are now a single integer per entry produced
    by ``MCHP_XEC_ECIA_GIRQ_ENC(reg, bit)`` rather than a ``<reg bit>`` pair. MEC172x
    continues to use the existing ``MCHP_XEC_ECIA(...)`` form.

  * Two new optional properties are available on the eSPI controller node for hosts whose
    address space exceeds 32 bits: ``host-memmap-addr-high`` (host address bits [47:32] for
    memory-mapped logical devices) and ``sram-bar-addr-high`` (host address bits [47:32] for
    both SRAM BARs).

  * The ``interrupt-names`` of the eSPI controller and its host-device children have been
    renamed for consistency. Update overlays accordingly:

    * Controller: ``rst`` → ``erst``; ``vwct_0_6`` / ``vwct_7_10`` →
      ``ht_vw_bank0`` / ``ht_vw_bank1``. Two corresponding interrupts
      (``ht_vw_bank0`` / ``ht_vw_bank1``) must be added to the ``interrupts`` array.
    * KBC child: ``kbc_obe`` / ``kbc_ibf`` → ``obe`` / ``ibf``.
    * ACPI EC children: ``acpi_ibf`` / ``acpi_obe`` → ``ibf`` / ``obe``.

  * In the MEC5 SoC DTSI (MEC174x/5x/165xB), every host-device child of the eSPI
    controller (mailbox, KBC, ACPI EC, ACPI PM1, port92, glue, EMI, BIOS debug port, etc.)
    now declares the ``ldn`` (logical device number) property required by
    :dtcompatible:`microchip,xec-espi-host-dev`. Out-of-tree boards that override or add
    host-device child nodes for these SoCs must set ``ldn`` on each.

* The board power node compatible of the :zephyr:code-sample:`espi` sample has been renamed from
  ``intel-rvp,board-power`` to ``intel,rvp-board-power``. Out-of-tree board overlays for this
  sample must use the new compatible.

Ethernet
========

* The WIZnet Ethernet drivers now share one set of Kconfig options. Replace
  ``CONFIG_ETH_W5500_*``, ``CONFIG_ETH_W6100_*`` and ``CONFIG_ETH_W6300_*`` with the matching
  ``CONFIG_ETH_WIZNET_*`` option.

* ``ETHERNET_CONFIG_TYPE_T1S_PARAM`` and the related ``NET_REQUEST_ETHERNET_SET_T1S_PARAM`` has
  been removed. :c:func:`phy_set_plca_cfg` together with :c:func:`net_eth_get_phy` should be
  used instead to set these parameters (:github:`108136`).

* In the functions implemented by the :c:struct:`ethernet_api` a additional argument was added for
  a pointer to :c:struct:`net_if`. This api is not directly exposed to the application, so only
  out-of-tree drivers need to be updated. (:github:`106086`)

* The ``pinctrl-0`` and ``pinctrl-names`` devicetree properties for the
  :dtcompatible:`nxp,enet-mac` need to be moved from the MAC node to the parent Ethernet controller
  node. (:github:`107352`)

* The NuMaker Ethernet driver has been removed together with ``CONFIG_ETH_NUMAKER``. The NuMaker
  EMAC is now driven by :kconfig:option:`CONFIG_ETH_NUMAKER_DWC_ETHER_1000`, the generic Synopsys
  DesignWare MAC driver, which needs the MDIO controller and the PHY in devicetree. Out-of-tree
  boards have to enable the ``mdio`` node with the MDC and MDIO pins in its pinctrl state, add
  their PHY to it and point the ``emac`` node at it with ``phy-handle``. The ``phy-addr``
  property of :dtcompatible:`nuvoton,numaker-ethernet` has been removed.

* ``port_generate_random_mac`` of the :c:struct:`dsa_api` got removed. Also
  :c:struct:`dsa_port_config` now uses :c:struct:`net_eth_mac_config` to set the MAC address.
  ``mac_addr`` and ``use_random_mac_addr`` members of :c:struct:`dsa_port_config` were removed.
  Out-of-tree DSA drivers must update their port configuration code to use the new API and
  structures. (:github:`108952`)

* The Kconfig option ``CONFIG_ETH_NATIVE_TAP_PTP_CLOCK`` has been replaced by
  :kconfig:option:`CONFIG_PTP_CLOCK_NATIVE`. A new compatible
  :dtcompatible:`zephyr,native-ptp-clock` has been added for the native_sim PTP clock driver.
  :kconfig:option:`CONFIG_PTP_CLOCK_NATIVE` is enabled by default when the
  :dtcompatible:`zephyr,native-ptp-clock` compatible is present.

* The native_sim TAP ethernet driver is now instantiated from devicetree using the
  :dtcompatible:`zephyr,native-tap` compatible. Each interface is defined by a devicetree
  node instead of the ``CONFIG_ETH_NATIVE_TAP_INTERFACE_COUNT`` Kconfig option, which has been
  removed. Multiple interfaces are created by adding multiple nodes. The following Kconfig
  options have been removed and replaced by devicetree properties:

  * ``CONFIG_ETH_NATIVE_TAP_DRV_NAME`` -> the ``host-interface`` property.
  * ``CONFIG_ETH_NATIVE_TAP_MAC_ADDR`` -> the ``local-mac-address`` property.
  * ``CONFIG_ETH_NATIVE_TAP_RANDOM_MAC`` -> the ``zephyr,random-mac-address`` property.

  The ``--eth-if``, ``--mac-addr``, ``--ipv4-addr``, ``--ipv4-gw`` and ``--ipv4-nm`` command
  line options are still supported and apply to the first interface. Per-interface variants
  named ``<node>_eth-if``, ``<node>_mac-addr``, etc. have been added for the remaining
  interfaces.

* ``port_phylink_change`` of the :c:struct:`dsa_api` is now optional.
  The DSA driver no longer needs to call :c:func:`net_eth_carrier_on` or
  :c:func:`net_eth_carrier_off` on PHY link change, this is now handled by the DSA core.
  The ``void *user_data`` argument of ``port_phylink_change`` has been changed to
  ``const struct device *dev``, so it no longer needs to be cast to obtain the device pointer.
  Out-of-tree DSA drivers must update their ``port_phylink_change`` callback to match the new API and
  can remove any calls to :c:func:`net_eth_carrier_on` or :c:func:`net_eth_carrier_off` from it.
  (:github:`109671`)

* The MAC address of ethernet interfaces is now checked for validity, when bringing the interface up
  with :c:func:`net_if_up`. If the MAC address is invalid, the interface will fail to come up and an
  error will be logged. This check is done before the ``start`` function of the
  :c:struct:`ethernet_api` is called. This also applies to native wifi drivers. (:github:`110435`)

* The Xilinx GEM Ethernet driver (:dtcompatible:`xlnx,gem`) has been switched over to use the
  current MDIO and PHY facilities, splitting up the driver's implementation into separate
  MDIO and Ethernet MAC drivers. The driver's custom PHY management code has been removed.
  The types of Ethernet PHYs supported by the removed custom code, the Marvell Alaska GBit
  PHY family and the TI TLK105/DP83822 100 MBit PHYs are both covered by the standard
  (:dtcompatible:`ethernet-phy`) driver. The QEMU targets which emulate the Xilinx GEM have
  been updated accordingly, as have been the device trees of the Zynq-7000 and ZynqMP /
  UltraScale+ SoC families. (:github:`87313`)

* Ethernet and Wi-Fi drivers that use :c:enumerator:`ETHERNET_CONFIG_TYPE_EXTRA_TX_PKT_HEADROOM` to request
  extra headroom for transmit packets must now select
  :kconfig:option:`CONFIG_NET_L2_ETHERNET_EXTRA_TX_PKT_HEADROOM`. (:github:`112924`)

* ``ETHERNET_PTP`` flag has been removed from :c:enum:`ethernet_hw_caps`.
  Use :c:func:`net_eth_get_ptp_clock` to check if the ethernet interface has a PTP clock.
  Out-of-tree drivers must remove any references to these flags from their
  :c:struct:`ethernet_api` ``get_capabilities`` implementation. (:github:`112788`)

* Ethernet drivers that support LLDP, no longer need to call :c:func:`net_lldp_set_lldpdu` in their
  initialization. It is now done by :c:func:`ethernet_init`. (:github:`114087`)

* :dtcompatible:`infineon,xmc4xxx-ethernet` and :dtcompatible:`wch,ethernet` nodes have been merged
  with their parent node. The sibling MDIO nodes are not moved and become children of these
  ``ethernet`` nodes as a result. (:github:`114899`)

* The property ``mdi-port-ctrl`` of ``infineon,xmc4xxx-mdio`` has been moved to the parent node
  (:dtcompatible:`infineon,xmc4xxx-ethernet`). (:github:`114899`)

* The compatibles ``espressif,esp32-mdio``, ``infineon,xmc4xxx-mdio``, ``nxp,enet-qos-mdio``,
  ``nxp,s32-gmac-mdio``, ``st,stm32-mdio`` and ``wch,mdio`` have been replaced by
  :dtcompatible:`snps,dwmac-mdio`. (:github:`114899`)

* The NXP ENET-QOS Ethernet controller (:dtcompatible:`nxp,enet-qos`) devicetree structure has been
  flattened to match other similar controllers. The clocks, interrupts, ``pinctrl-0``,
  ``pinctrl-names``, ``phy-handle`` and MAC address properties now live directly on the parent
  ``nxp,enet-qos`` node instead of a separate child MAC node. The ``nxp,enet-qos-mac`` compatible
  and its ``enet_mac`` node have been removed.
  Out-of-tree boards using this controller must move the properties from the
  old ``enet_mac`` node up to the ``enet`` node. (:github:`115952`)

* The Kconfig option ``CONFIG_ETH_NXP_ENET_QOS_MAC_UNIQUE_MAC_ADDRESS`` has been renamed to
  :kconfig:option:`CONFIG_ETH_NXP_ENET_QOS_UNIQUE_MAC_ADDRESS`. Configurations setting the old
  name must be updated to use the new one. (:github:`115952`)

* The Synopsys DesignWare MAC driver now filters multicast by default
  (:kconfig:option:`CONFIG_ETH_DWC_ETHER_MULTICAST_FILTER`), so only multicast for the addresses
  the network stack has joined is received. Disable this option to receive all multicast, as
  before. (:github:`113235`)

* Boards with Ethernet interfaces should now enable :kconfig:option:`CONFIG_ETH_DRIVER` by default,
  instead of :kconfig:option:`CONFIG_NET_L2_ETHERNET`. The later is now enabled by default when the
  former is. (:github:`117121`)

Flash
=====
* :dtcompatible:`jedec,spi-nand` now requires a ``plane-bytes`` property, which indicates the size
  of each plane in the flash device. For devices with a single plane, this should be set to the
  same value as ``size-bytes``.

* The :dtcompatible:`st,stm32-nv-flash` property ``bank2-flash-size`` has been deprecated in favor
  of determining flash bank sizes using ``reg`` size cells. No changes need be made to the
  devicetree save for removing the aforementioned property. (:github:`114971`)

Fuel Gauge
==========

* Various fuel gauge property enums and union fields have been deprecated in
  favor of new versions with explicit unit suffixes. Applications and drivers
  should migrate to the unit-suffixed names. For example,
  ``FUEL_GAUGE_CURRENT`` (``val.current``) is replaced by
  ``FUEL_GAUGE_CURRENT_UA`` (``val.current_ua``).

* Drivers had inconsistently been reporting full charge/discharge cycles or
  "1/100ths" of a cycle in the ``FUEL_GAUGE_CYCLE_COUNT`` property.
  The property now consistently reports full cycles, and drivers that
  previously reported fractions of a cycle (i.e. ADP5360 and BQ27Z746) have
  been updated to report full cycles instead.
  Applications that relied on the old behavior should be updated.
  (:github:`112276`)

GPIO
====

* The STM32 GPIO driver now returns ``-EINVAL`` when attempting to configure a GPIO pin in disabled
  state with a pull-up/pull-down resistor using :c:func:`gpio_pin_configure`. The driver would
  previously return ``0`` without actually honoring those flags (no PU/PD resistor was enabled).
  Applications encountering this error should remove :c:macro:`GPIO_PULL_UP`/ :c:macro:`GPIO_PULL_DOWN`
  from the ``flags`` they provide to :c:func:`gpio_pin_configure`; this will result in the same
  behavior as before since these flags were effectively ignored. (:github:`104690`)

* On STM32F1 series, GPIO output pins now use 50 MHz max. speed instead of 10 MHz. (:github:`104690`)

* The :dtcompatible:`awinic,aw9523b-gpio` driver no longer has the ``reset-gpios`` property. This has instead
  been moved to the parent :dtcompatible:`awinic,aw9523b` MFD device.

Haptics
=======

* The ``cirrus,cs40l5x`` compatible has been replaced by variant-specific compatibles
  :dtcompatible:`cirrus,cs40l50`, :dtcompatible:`cirrus,cs40l51`, :dtcompatible:`cirrus,cs40l52`,
  and :dtcompatible:`cirrus,cs40l53`. Applications using the old compatible must update their
  devicetree nodes accordingly.

* The ``vib-rated-mv`` and ``vib-overdrive-mv`` properties of :dtcompatible:`ti,drv2605` now
  default to the device reset values, 1362 mV and 3075 mV, instead of 3200 mV. Boards that need
  the previous drive level must set them explicitly.

HWSPINLOCK
==========

* The ``num-locks`` DeviceTree property is now a standard, required property of the hwspinlock
  controller binding. Every hwspinlock controller node must set it, and out-of-tree bindings
  must drop their own ``num-locks`` ``type``/``required`` declarations.

* :c:func:`hw_spin_lock`, :c:func:`hw_spin_trylock` and :c:func:`hw_spin_unlock` no longer take a
  ``hwspinlock_ctx_t *`` argument; the per-lock Zephyr spinlock now lives in the driver's config.
  ``struct hwspinlock_context``, ``hwspinlock_ctx_t``, the ``ctx`` member of
  :c:struct:`hwspinlock_dt_spec` and ``HWSPINLOCK_CTX_INITIALIZER`` have been removed. The
  :c:func:`hw_spin_lock_dt`, :c:func:`hw_spin_trylock_dt` and :c:func:`hw_spin_unlock_dt`
  helpers are unchanged. As a result, all :c:macro:`HWSPINLOCK_DT_SPEC_GET` instances referring to
  the same hardware spinlock now share a single Zephyr spinlock, instead of each getting its own.

* Hardware spinlock drivers must now embed :c:struct:`hwspinlock_driver_config` as the first member
  of their config struct, initialize it with :c:macro:`HWSPINLOCK_COMMON_CONFIG_FROM_DT_INST` (or
  :c:macro:`HWSPINLOCK_COMMON_CONFIG_FROM_DT_NODE`), and declare the backing spinlock array with
  :c:macro:`HWSPINLOCK_SPINLOCK_ARRAY_DT_INST_DEFINE` (or
  :c:macro:`HWSPINLOCK_SPINLOCK_ARRAY_DT_DEFINE`). The ``get_max_id`` driver operation is now
  optional: when it is not implemented, :c:func:`hw_spinlock_get_max_id` default implementation
  returns the value of the ``num-locks`` DeviceTree property minus 1.

I2C
===

* On controller based on :kconfig:option:`CONFIG_I2C_DW` the
  ``CONFIG_I2C_DW_RW_TIMEOUT_MS`` option has been replaced with
  :kconfig:option:`CONFIG_I2C_TRANSFER_TIMEOUT_MS`, with a default of 500ms.

* The ITE I2C controllers :dtcompatible:`ite,enhance-i2c`
  :dtcompatible:`ite,it51xxx-i2c` :dtcompatible:`ite,it8xxx2-i2c` transfer
  timeout is now using the generic ``zephyr,transfer-timeout-ms`` property
  instead of ``transfer-timeout-ms``, default to 500ms.

* The :dtcompatible:`nxp,sc18im704-i2c` bridge no longer sends the target address
  unshifted to the SC18IM704. The Zephyr I2C API passes a 7-bit address to a controller's
  ``transfer()`` callback, and the driver now shifts it left by one to build the address byte
  the bridge expects. Devicetree nodes sitting on a :dtcompatible:`nxp,sc18im704-i2c` bus
  that compensated for the missing shift by declaring a pre-shifted ``reg`` (for example
  ``reg = <0xa0>`` for a device at address ``0x50``) must now declare the real 7-bit address
  (``reg = <0x50>``).

I2S
===

* :c:func:`i2s_buf_write` now honours the ``timeout`` from the stream configuration when it
  allocates the transmit block. It previously waited forever, so the documented ``-EAGAIN``
  return was unreachable, as was ``-ENOMEM`` in a multithreaded build. A caller that relied
  on the unbounded wait can set ``timeout`` to ``SYS_FOREVER_MS``, but the same field also
  bounds the driver's enqueue wait, so no single value reproduces the old combination of an
  unbounded allocation and a bounded enqueue.

IEEE 802.15.4
=============

* The ``IEEE802154_HW_SLEEP_TO_TX`` radio capability, deprecated since Zephyr 3.6, has been
  removed and the capability bits above it renumbered. Every in-tree driver supports
  transmitting directly from a low-power state, so the capability conveyed no information;
  the OpenThread platform now always advertises ``OT_RADIO_CAPS_SLEEP_TO_TX`` and allows
  transmission from the sleep state. Out-of-tree drivers advertising the capability simply
  drop it.

Input
=====

* The ``no-disconnect`` property of :dtcompatible:`gpio-keys` has been replaced by enumeration
  property ``zephyr,suspend-action``. The new property currently has three values, two of which
  are direct replacements for the old situations:

    * ``zephyr,suspend-action = "none";`` is the remplacement for the behavior when
      when ``no-disconnect`` was present. Users of the ``no-disconnect`` property
      should replace it with ``zephyr,suspend-action = "none";``.

    * ``zephyr,suspend-action = "disconnect-with-pupd";`` is the replacement for the
      behavior when ``no-disconnect`` was not present. This is selected by default
      for backwards compatibility with the previous behavior.

    * ``zephyr,suspend-action = "full-disconnect";`` is a new value.
      (Refer to :dtcompatible:`the binding <gpio-keys>` for more details)

  Users of the default configuration are advised to reconsider whether it really is appropriate;
  migration to ``zephyr,suspend-action = "full-disconnect";`` is recommended. (:github:`108294`)

* Kconfig options for the ft6146, ft5336, and cst8xx input drivers have been renamed to be
  consistent with the other input drivers. Applications using the following Kconfig options
  must update their configurations accordingly:

  * ``CONFIG_INPUT_FT5336_PERIOD`` → :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD_MS`
  * ``CONFIG_INPUT_CST8XX_PERIOD`` → :kconfig:option:`CONFIG_INPUT_CST8XX_PERIOD_MS`
  * ``CONFIG_INPUT_FT6146_PERIOD`` → :kconfig:option:`CONFIG_INPUT_FT6146_PERIOD_MS`

  * Nunchuk driver wronlgy reported ``INPUT_KEY_Z``, respective ``INPUT_KEY_C`` in button events. This
    has been fixed and ``INPUT_BTN_Z``, respective ``INPUT_BTN_C`` is used now.

Interrupt Controllers
=====================

* All interrupt controller bindings now use ``flags`` as the interrupt cell name
  instead of ``sense``. The following interrupt controller bindings were updated:

  * :dtcompatible:`intel,ioapic`
  * :dtcompatible:`intel,loapic`
  * :dtcompatible:`cdns,xtensa-core-intc`
  * :dtcompatible:`intel,ace-intc`
  * :dtcompatible:`intel,cavs-intc`
  * :dtcompatible:`snps,designware-intc`
  * :dtcompatible:`mediatek,adsp_intc`

  Drivers using these interrupt controllers are updated to use ``flags`` as the cell name.
  However, any out-of-tree drivers that directly access interrupt properties using
  ``DT_INST_IRQ(n, sense)`` or ``DT_IRQ(node, sense)`` should be updated to use ``flags`` instead
  of ``sense``.

* Deprecate ``GIC_NUM_CPU_IF`` from GIC header file :file:`gic.h`. One shall use
  instead.:kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` instead.

MBOX
====

* The :dtcompatible:`renesas,rz-mhu-mbox` driver was reworked so that a single MHU unit
  serves both TX and RX on one MBOX channel, instead of dedicating each channel to one
  direction. A single driver instance can now own several channels. Devicetree nodes using
  this compatible must be updated:

  * ``channel`` was renamed to ``unit``, because it indexes the underlying MHU hardware unit
    and not the MBOX channel. The two numbering schemes are independent.
  * ``tx-mask`` and ``rx-mask`` were replaced by a single ``channel-mask``, a bitmask of the
    valid MBOX channels where bit ``n`` enables channel ``n``.
  * ``channels-count`` must match the number of ``interrupt-names`` entries on the node.
    This is now enforced at build time.
  * ``shared-memory`` is now optional and should be left unset in most cases. The shared
    memory is instead provided by a single ``zephyr,memory-region`` node named ``mhu_shmem``,
    which replaces the per-unit ``mmio-sram`` nodes and makes the linker emit
    ``__mhu_shmem_start`` for the FSP MHU driver. Boards without this memory region fail to
    link with an undefined reference to that symbol.

  For example:

  .. code-block:: devicetree

     /* Before */
     mhu3_shm: memory@62f01018 {
             compatible = "mmio-sram";
             reg = <0x62f01018 0x8>;
     };

     mbox3: mhu@40400060 {
             channel = <3>;
             tx-mask = <0x00000002>;
             rx-mask = <0x00000001>;
             shared-memory = <&mhu3_shm>;
     };

     /* After */
     mhu_shmem: memory-region@62f01000 {
             compatible = "zephyr,memory-region";
             reg = <0x62f01000 0x1000>;
             zephyr,memory-region = "mhu_shmem";
     };

     mbox3: mhu@40400060 {
             unit = <3>;
             channel-mask = <0x1>;
     };

MSPI
====

* MSPI device binding filenames now use ``(vendor,)device-mspi.yaml`` for
  MSPI-specific variants, while the devicetree ``compatible`` strings describe
  the device itself instead of encoding the MSPI bus. Boards, shields, samples,
  tests, and out-of-tree devicetree overlays are recommended to update MSPI
  child node compatibles as follows:

  * ``jedec,mspi-nor`` -> ``jedec,nor``
  * ``mspi-atxp032`` -> ``atxp032``
  * ``mspi-is25xX0xx`` -> ``is25xX0xx``
  * ``mspi-aps6404l`` -> ``aps6404l``
  * ``mspi-aps-z8`` -> ``aps-z8``
  * ``zephyr,mspi-emul-device`` -> ``zephyr,emul-device-mspi``
  * ``zephyr,mspi-emul-flash`` -> ``zephyr,emul-flash``

  It is recommended that out-of-tree MSPI device drivers should likewise update
  ``DT_DRV_COMPAT`` and generated devicetree Kconfig symbol references to the new compatible names.
  If a driver, sample, or test must ensure that one of these generic
  compatibles is instantiated on an MSPI bus, add an explicit MSPI bus check,
  such as ``dt_compat_on_bus`` in Kconfig or ``dt_compat_on_bus`` filters in
  test metadata.

* The MSPI memory mapping feature has been renamed from "XIP" to "MEMMAP",
  since XIP (:kconfig:option:`CONFIG_XIP`) is a software configuration concept
  in Zephyr while the MSPI feature only memory-maps the device, which can be
  used for data access as well as code execution (:github:`104657`). The MSPI
  API is experimental, so no deprecated aliases are provided. Out-of-tree
  users must update:

  * ``CONFIG_MSPI_XIP`` -> :kconfig:option:`CONFIG_MSPI_MEMMAP`
  * ``CONFIG_FLASH_MSPI_XIP_READ`` -> :kconfig:option:`CONFIG_FLASH_MSPI_MEMMAP_READ`
  * ``struct mspi_xip_cfg`` -> ``struct mspi_memmap_cfg``
  * ``enum mspi_xip_permit`` -> ``enum mspi_memmap_permit`` and its values
    ``MSPI_XIP_READ_WRITE``/``MSPI_XIP_READ_ONLY`` ->
    ``MSPI_MEMMAP_READ_WRITE``/``MSPI_MEMMAP_READ_ONLY``
  * ``mspi_xip_config`` -> :c:func:`mspi_memmap_config` and the
    ``xip_config`` driver API entry -> ``memmap_config``
  * ``MSPI_XIP_CONFIG_DT``/``MSPI_XIP_CONFIG_DT_INST``/``MSPI_XIP_CONFIG_DT_NO_CHECK``
    -> ``MSPI_MEMMAP_CONFIG_DT``/``MSPI_MEMMAP_CONFIG_DT_INST``/``MSPI_MEMMAP_CONFIG_DT_NO_CHECK``
  * ``MSPI_XIP_CFG_STRUCT_DECLARE``/``MSPI_XIP_BASE_ADDR_DECLARE``/``MSPI_XIP_BASE_ADDR_INIT``
    -> ``MSPI_MEMMAP_CFG_STRUCT_DECLARE``/``MSPI_MEMMAP_BASE_ADDR_DECLARE``/``MSPI_MEMMAP_BASE_ADDR_INIT``
  * devicetree property ``xip-config`` -> ``memmap-config`` on MSPI device nodes

Nordic
======

* The ``owner-id``, ``perm-read``, ``perm-write``, ``perm-execute``, ``perm-secure`` and
  ``non-secure-callable`` properties of :dtcompatible:`nordic,owned-memory` and
  :dtcompatible:`nordic,owned-partitions` have been removed. Use ``nordic,access`` instead, e.g.
  ``<NRF_OWNER_ID_APPLICATION NRF_PERM_RW>``. The owner is no longer implicit: an omitted
  ``owner-id`` used to mean the domain being compiled, so it must now be named explicitly.

NXP
===

* :kconfig:option:`CONFIG_MCUX_LPTMR_TIMER` no longer defaults to ``y`` based on the
  ``/chosen/zephyr,system-timer`` chosen node being compatible with
  :dtcompatible:`nxp,lptmr`. Out-of-tree SoCs and boards that rely on the LPTMR
  as the system timer must now explicitly default the symbol in their
  ``Kconfig.defconfig`` (for example ``default y if PM``).

* Kinetis KE1xF no longer requires a board overlay to designate the system
  timer when :kconfig:option:`CONFIG_PM` is enabled. The SoC DTSI now sets the
  ``zephyr,system-timer`` chosen property, so boards that added the overlay
  described in the Zephyr 4.4 migration guide can remove it.

* The NXP LPC DTSI files were reorganized from the flat directory
  ``dts/arm/nxp/lpc/`` into per-series subdirectories. Out-of-tree boards that
  include these files directly must update their includes.

  The new subdirectory layout is:

  ========================  ========================================
  LPC series                New location
  ========================  ========================================
  LPC11U6x                  ``dts/arm/nxp/lpc/lpc11u6x/``
  LPC51U68                  ``dts/arm/nxp/lpc/lpc51u68/``
  LPC54xxx                  ``dts/arm/nxp/lpc/lpc54xxx/``
  LPC55xxx                  ``dts/arm/nxp/lpc/lpc55xxx/``
  LPC84x                    ``dts/arm/nxp/lpc/lpc84x/``
  ========================  ========================================

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/lpc/nxp_lpc55S6x.dtsi>

    /* After */
    #include <nxp/lpc/lpc55xxx/nxp_lpc55S6x.dtsi>

* The NXP Kinetis DTSI files were reorganized from the flat directory
  ``dts/arm/nxp/kinetis/`` into per-series subdirectories. Out-of-tree
  boards that include these files directly must update their includes.

  The new subdirectory layout is:

  ========================  ========================================
  Kinetis series            New location
  ========================  ========================================
  K2X                       ``dts/arm/nxp/kinetis/k2x/``
  K32Lx                     ``dts/arm/nxp/kinetis/k32lx/``
  K6X                       ``dts/arm/nxp/kinetis/k6x/``
  K8X                       ``dts/arm/nxp/kinetis/k8x/``
  KE1xF                     ``dts/arm/nxp/kinetis/ke1xf/``
  KE1xZ                     ``dts/arm/nxp/kinetis/ke1xz/``
  KL2X                      ``dts/arm/nxp/kinetis/kl2x/``
  KV5X                      ``dts/arm/nxp/kinetis/kv5x/``
  KWX                       ``dts/arm/nxp/kinetis/kwx/``
  ========================  ========================================

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/kinetis/nxp_k66.dtsi>

    /* After */
    #include <nxp/kinetis/k6x/nxp_k66.dtsi>

* The NXP MCX DTSI files were reorganized from the flat directory
  ``dts/arm/nxp/mcx/`` into per-series subdirectories. Out-of-tree boards
  that include these files directly must update their includes.

  The new subdirectory layout is:

  ========================  ========================================
  MCX series                New location
  ========================  ========================================
  MCXA                      ``dts/arm/nxp/mcx/mcxa/``
  MCXC                      ``dts/arm/nxp/mcx/mcxc/``
  MCXE                      ``dts/arm/nxp/mcx/mcxe/``
  MCXL                      ``dts/arm/nxp/mcx/mcxl/``
  MCXN                      ``dts/arm/nxp/mcx/mcxn/``
  MCXW                      ``dts/arm/nxp/mcx/mcxw/``
  ========================  ========================================

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/mcx/nxp_mcxc242.dtsi>

    /* After */
    #include <nxp/mcx/mcxc/nxp_mcxc242.dtsi>

* The NXP MCXN series gained dedicated per-part composer DTSI files for
  mcxn547, mcxn947 and mcxn236 (``nxp_mcxn547.dtsi``, ``nxp_mcxn947.dtsi``
  and ``nxp_mcxn236.dtsi``), alongside the new mcxn546, mcxn946 and mcxn235
  phantom parts added this release. Each of these files just includes the
  existing series file (``nxp_mcxn54x.dtsi``, ``nxp_mcxn94x.dtsi`` and
  ``nxp_mcxn23x.dtsi`` respectively) with no overrides, and in-tree boards
  for mcxn547, mcxn947 and mcxn236 now include the new per-part file
  instead. The series files themselves are unchanged and still work if
  included directly, so this is not a required migration, but out-of-tree
  boards for these three parts may want to switch to the new per-part
  files for consistency with the rest of the series.

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/mcx/mcxn/nxp_mcxn94x.dtsi>

    /* After */
    #include <nxp/mcx/mcxn/nxp_mcxn947.dtsi>

* The NXP i.MX RT DTSI files were reorganized from the flat directory
  ``dts/arm/nxp/imxrt/`` into per-series subdirectories, Out-of-tree
  boards that include these files directly must update their includes.

  The new subdirectory layout is:

  ========================  ========================================
  i.MX RT series            New location
  ========================  ========================================
  RT10xx                    ``dts/arm/nxp/imxrt/imxrt10xx/``
  RT11xx                    ``dts/arm/nxp/imxrt/imxrt11xx/``
  RT5xx                     ``dts/arm/nxp/imxrt/imxrt5xx/``
  RT6xx                     ``dts/arm/nxp/imxrt/imxrt6xx/``
  RT7xx                     ``dts/arm/nxp/imxrt/imxrt7xx/``
  RT118x                    ``dts/arm/nxp/imxrt/imxrt118x/``
  ========================  ========================================

  Example:

  .. code-block:: dts

    /* Before */
    #include <nxp/imxrt/nxp_rt1060.dtsi>

    /* After */
    #include <nxp/imxrt/imxrt10xx/nxp_rt1060.dtsi>

* The i.MX RT118x boards now include a single part-core composer file
  ``nxp_rt118<part>_cm<core>.dtsi`` instead of the series-core file plus
  a separate part overlay. Out-of-tree boards must update their devicetree
  includes accordingly (:github:`110228`).

  Example for a part that previously needed the series file plus a part
  overlay:

  .. code-block:: dts

    /* Before */
    #include <nxp/imxrt/nxp_rt118x_cm7.dtsi>
    #include <nxp/imxrt/nxp_rt1186.dtsi>

    /* After */
    #include <nxp/imxrt/imxrt118x/nxp_rt1186_cm7.dtsi>

* The i.MX RT7xx boards now include a single part-core composer file
  ``nxp_<part>_<core>.dtsi`` instead of the series-core file. Out-of-tree
  boards must update their devicetree includes accordingly.

  Example for a part that previously needed the series file:

  .. code-block:: dts

    /* Before */
    #include <nxp/imxrt/imxrt7xx/nxp_rt7xx_cm33_cpu0.dtsi>

    /* After */
    #include <nxp/imxrt/imxrt7xx/nxp_rt798s_cm33_cpu0.dtsi>

* The NXP SoC pin control headers under the ``hal_nxp`` ``dts/nxp/`` tree were
  reorganized to mirror the ``dts/arm/nxp/<family>/<series>/`` layout: every
  SoC ``*-pinctrl.h`` / ``*-pinctrl.dtsi`` file moved into a ``pinctrl/``
  subdirectory. Out-of-tree boards that include these SoC pin control headers
  directly must update their includes.

  The families that are series-organized (i.MX RT, Kinetis, LPC, MCX) place
  their headers in ``<family>/<series>/pinctrl/``; the families that are flat
  (i.MX, S32, RW) place theirs in a family-level ``<family>/pinctrl/``
  directory. Kinetis additionally adds new series directories (``k0x``,
  ``km3x``, ``kv3x``) for parts that had none. In addition the former
  ``nxp_imx`` directory was split: ``nxp_imx/rt/`` became the ``imxrt/`` family
  and the remaining i.MX application processors became the flat ``imx/`` family.

  Examples:

  .. code-block:: dts

    /* Before */
    #include <nxp/nxp_imx/rt/mimxrt1151dvm8b-pinctrl.dtsi>
    #include <nxp/nxp_imx/mimx8ml8dvnlz-pinctrl.dtsi>
    #include <nxp/kinetis/MK64FN1M0VLL12-pinctrl.h>

    /* After */
    #include <nxp/imxrt/imxrt11xx/pinctrl/mimxrt1151dvm8b-pinctrl.dtsi>
    #include <nxp/imx/pinctrl/mimx8ml8dvnlz-pinctrl.dtsi>
    #include <nxp/kinetis/k6x/pinctrl/MK64FN1M0VLL12-pinctrl.h>

PWM
===

* The ``pcrs`` property (array type) of :dtcompatible:`microchip,xec-pwm` has been replaced
  by ``pcr-scr`` (int type) to use encoded PCR register index and bit position macros
  (:github:`104570`).

* STM32 PWM DT bindings macro ``PWM_STM32_COMPLEMENTARY`` that is deprecated since
  Zephyr v3.3.0 is no more defined. One shall use ``STM32_PWM_COMPLEMENTARY`` instead.

* :dtcompatible:`nxp,ctimer-pwm` now routes its input capture signal through the generic
  :ref:`mux <mux_api>` subsystem. The ``inputmux-connections`` property has been removed; describe
  the routing with an INPUTMUX controller node (:dtcompatible:`nxp,inputmux`) and reference it from
  the timer node's ``mux-states`` property instead. (:github:`112088`)

* :dtcompatible:`nxp,sctimer-pwm` now routes its input capture signal through the generic
  :ref:`mux <mux_api>` subsystem. The ``input-channels`` property has been removed; describe the
  routing with an INPUTMUX controller node (:dtcompatible:`nxp,inputmux`) and reference it from the
  timer node's ``mux-states`` property instead. (:github:`112088`)

RTC
===

* The legacy counter-based DS3231 driver has been removed, completing the deprecation introduced in
  :github:`95221`. Applications using :dtcompatible:`maxim,ds3231`, ``CONFIG_COUNTER_MAXIM_DS3231``,
  or :file:`<zephyr/drivers/rtc/maxim_ds3231.h>` must migrate to the RTC subsystem driver.

  Replace the single legacy I2C node with a :dtcompatible:`maxim,ds3231-mfd` parent and a
  :dtcompatible:`maxim,ds3231-rtc` child. Move ``isw-gpios`` to the RTC child, rename old
  ``32k-gpios`` usage to ``freq-32khz-gpios``, and replace ``maxim_ds3231_*`` helper API usage with
  generic RTC subsystem APIs.

* :dtcompatible:`microcrystal,rv3032` properties ``trickle-resistor-ohms`` and
  ``trickle-charger-mode`` have moved to the parent
  :dtcompatible:`microcrystal,rv3032-mfd` device. The parent MFD device now
  handles configuring the backup supply mode for all child devices.

SD Host Controller
==================

* Renamed the Kconfig option ``CONFIG_SDHC_STM32_POLLING_SUPPORT`` to
  :kconfig:option:`CONFIG_SDHC_STM32_DMA_MODE`. The new symbol enables DMA
  (default ``y``); set it to ``n`` to use polling mode. (:github:`101617`)

* Renamed the Kconfig option ``CONFIG_SDHC_STM32_SDIO`` to
  :kconfig:option:`CONFIG_SDHC_STM32_SDMMC`. (:github:`101617`)

* The devicetree compatible ``st,stm32-sdio`` was renamed. Use
  :dtcompatible:`st,stm32-sdmmc` instead. With this compatible, the legacy
  disk driver and the SDHC driver can target the same node. To migrate to the
  SDHC STM32 SDMMC driver, disable the legacy disk driver:

  .. code-block:: kconfig

     CONFIG_SDMMC_STM32=n

  (:github:`101617`)

* For :dtcompatible:`st,stm32-sdmmc`, the ``sdhi-on-gpios`` property has been
  consolidated into the existing ``pwr-gpios`` property. Replace
  ``sdhi-on-gpios`` with ``pwr-gpios`` in out-of-tree devicetree nodes.

* :kconfig:option:`CONFIG_SDMMC_STM32_HWFC` is now enabled by default for the legacy SDMMC_STM32
  disk driver to prevent FIFO underrun and overrun errors during disk access. Applications that
  previously set ``CONFIG_SDMMC_STM32_HWFC=y`` should remove this configuration from their board
  configuration files since it is now the default.

* :dtcompatible:`litex,mmc` now uses the ``dma-coherent`` devicetree property to indicate that the
  controller's DMA accesses are coherent with the CPU.
  :kconfig:option:`CONFIG_SDHC_LITEX_LITESDCARD_NO_COHERENT_DMA` is automatically set based on that
  property and is no longer user-configurable. (:github:`108411`)

Sensor
======

* The :dtcompatible:`pixart,paa3905` driver now enforces the sensor's
  datasheet SPI contract: mode 3 is set by the driver and a devicetree
  ``spi-max-frequency`` above 2 MHz fails the build. Out-of-tree boards
  that overclocked the bus must lower the property to 2000000 or less.

* The ``girqs`` and ``pcrs`` properties (array type) of :dtcompatible:`microchip,xec-tach` have been
  replaced by ``pcr-scr`` (int type) to use encoded PCR register index and bit position macros.
  GIRQ configuration is now handled via the ``microchip,dmec-ecia-girq`` binding include
  (:github:`104808`).
* :dtcompatible:`st,lps22hh` now ignores the ``odr`` property in favor of the one-shot sampling mode
  unless :kconfig:option:`CONFIG_LPS22HH_TRIGGER` is enabled to make use of periodic sampling.

* The devicetree compatible ``tdk,ntcg163jf103ft1`` has been renamed to
  :dtcompatible:`tdk,ntcgxx3jx103x` to reflect that the compensation values are identical for TDK
  NTCG thermistor parts with the same resistance (R25) and beta (B25/85) values, as indicated in the
  part naming scheme (:github:`110123`).

* :dtcompatible:`nxp,mcux-qdc` now routes its input signals through the generic
  :ref:`mux <mux_api>` subsystem. The ``input-channels`` and ``inputmux-connections`` properties
  have been removed; describe the routing with a mux controller node (for example
  :dtcompatible:`nxp,inputmux`) and reference it from the decoder node's ``mux-states`` property
  instead. (:github:`112088`)

* :dtcompatible:`nxp,mcux-qdec` now routes its input signals through the generic
  :ref:`mux <mux_api>` subsystem. The ``xbar`` property has been removed; describe the routing with
  a mux controller node (for example :dtcompatible:`nxp,mcux-xbar`) and reference it from the
  decoder node's ``mux-states`` property instead. (:github:`112088`)

* The ``pgain``, ``again``, ``ppulse-length`` and ``pled-boost`` properties of
  :dtcompatible:`avago,apds9960` used to spell the 2-bit register fields they select in hex
  (``0x00``/``0x01``/``0x10``/``0x11``) and now take the physical value they select instead: gain
  multipliers for ``pgain`` (``1``/``2``/``4``/``8``) and ``again`` (``1``/``4``/``16``/``64``),
  microseconds for ``ppulse-length`` (``4``/``8``/``16``/``32``) and percent for ``pled-boost``
  (``100``/``150``/``200``/``300``). Most of the old values are rejected by the new enums, but
  ``pgain = <0x01>`` and ``again = <0x01>`` still build and now select 1x rather than 2x and 4x,
  so update them explicitly. Nodes that do not set these properties are unaffected
  (:github:`116079`).

Serial
======

* The return type of :c:func:`uart_irq_update` is now ``void`` instead of ``int``.
  (:github:`105231`)

* The :dtcompatible:`brcm,bcm2711-aux-uart` devicetree binding has been removed in favour of
  :dtcompatible:`brcm,bcm283x-aux-uart`. Nodes must add :dtcompatible:`ns16550` as a compatible,
  replace the ``clocks`` property with ``clock-frequency``, and specify ``reg-shift = <2>``.
  The dedicated BCM2711 auxiliary UART driver has been removed in favour of the generic NS16550
  driver, which now provides support for the Broadcom BCM283x auxiliary UART through vendor-specific
  extensions. (:github:`115112`)

* :kconfig:option:`CONFIG_UART_NS16550_DW8250_DW_APB` now follows devicetree: it is
  enabled for :dtcompatible:`snps,dw-apb-uart` nodes and cannot be set otherwise. Add that
  compatible to the UART nodes instead of setting the option in Kconfig. (:github:`120368`)

SPI
===

* The SPI API has been migrated to the inclusive terminology selected by
  :ref:`coding_guideline_inclusive_language` (controller/peripheral roles, SDO/SDI signal names).
  The former names are deprecated and will be removed in Zephyr v5.0:

  * :c:macro:`SPI_OP_MODE_CONTROLLER` and :c:macro:`SPI_OP_MODE_PERIPHERAL` replace
    ``SPI_OP_MODE_MASTER`` and ``SPI_OP_MODE_SLAVE``.
  * The ``slave`` member of :c:struct:`spi_config` is renamed to ``peripheral``.
  * :c:macro:`SPI_SDO_OVERRUN_UNKNOWN`, :c:macro:`SPI_SDO_OVERRUN_DT` and
    :c:macro:`SPI_SDO_OVERRUN_DT_INST` replace the ``SPI_MOSI_OVERRUN_*`` macros.
  * :kconfig:option:`CONFIG_SPI_PERIPHERAL` replaces ``CONFIG_SPI_SLAVE``.
  * ``spi_context_is_peripheral()`` replaces ``spi_context_is_slave()`` in the driver-facing
    ``spi_context.h`` helpers.
  * The ``sdo-gpios``/``sdi-gpios`` properties of :dtcompatible:`zephyr,spi-bitbang` and
    :dtcompatible:`raspberrypi,pico-spi-pio`, the ``spi-sdi-gpios``/``spi-sdo-gpios`` properties of
    :dtcompatible:`brcm,afbr-s50`, the ``peripheral`` property of :dtcompatible:`nxp,s32-spi` and
    the ``is-peripheral`` property of :dtcompatible:`realtek,bee-spi` replace their former
    ``mosi``/``miso``/``slave``-based names, which are still accepted but marked as deprecated in
    the bindings.
  * The :dtcompatible:`zephyr,bt-hci-spi-peripheral` devicetree compatible replaces
    ``zephyr,bt-hci-spi-slave``.

* ``SPI_SILABS_SIWX91X_GSPI_DMA`` and ``SPI_SILABS_SIWX91X_GSPI_DMA_MAX_BLOCKS`` have been removed.
  They are replaced by ``SPI_SILABS_SIWX91X_GSPI_DMA_DESCR_COUNT`` which allow to enable DMA and
  configure the descriptor count.

* The ``fifo-enable`` property of :dtcompatible:`st,stm32h7-spi` has been removed.
  FIFO is now always used in polling and interrupt mode to enhance performance. A new property
  ``st,fifo-threshold`` can be used to configure the FIFO threshold (default = 1). (:github:`110265`)

* The optional delay argument of :c:macro:`SPI_CONFIG_DT`, :c:macro:`SPI_CONFIG_DT_INST`,
  :c:macro:`SPI_DT_SPEC_GET`, :c:macro:`SPI_DT_SPEC_INST_GET`, :c:macro:`SPI_DT_IODEV_DEFINE`,
  :c:macro:`SPI_DT_INST_IODEV_DEFINE` and :c:macro:`SPI_CS_CONTROL_INIT` has been removed; drop
  it from every invocation. Use the ``spi-cs-setup-delay-ns`` and ``spi-cs-hold-delay-ns``
  devicetree properties instead (note that they are in nanoseconds rather than microseconds).

Stepper
=======

* The ``activate-stallguard2``, ``stallguard-threshold-velocity`` and ``stallguard-velocity-check-interval-ms``
  properties of :dtcompatible:`adi,tmc50xx-stepper-ctrl` and :dtcompatible:`adi,tmc51xx-stepper-ctrl` have
  been removed. The stallguard configuration is now done at runtime using
  :c:func:`tmc50xx_stepper_ctrl_configure_stallguard`, :c:func:`tmc51xx_stepper_ctrl_configure_stallguard`
  and :c:struct:`tmc_stallguard_settings`. Out-of-tree drivers using these properties
  must be updated to remove them.
  (:github:`110062`)

STM32
=====

* :dtcompatible:`gpio-keys` devices will fail to suspend unless property ``zephyr,suspend-action``
  is present in Devicetree with value ``"none"`` or ``"full-disconnect"``. Refer to the migration
  guide entry related to this binding for more details. (:github:`104690` / :github:`108294`)

* The STM32MP13 SoC DTSI files have been split per part number so that crypto peripherals (the
  ``hash`` node) are only described on the variants that provide them. Board device trees must now
  include the DTSI matching their exact SoC part number instead of the generic
  ``stm32mp135.dtsi``. For example, ``stm32mp135f_dk`` now includes
  ``<st/mp13/stm32mp135f.dtsi>`` instead of ``<st/mp13/stm32mp135.dtsi>``. Out-of-tree boards
  based on an STM32MP13 SoC must update their ``#include`` accordingly. (:github:`120085`)

* SoC DTSI files now consistently use interrupt priority zero for all peripherals.
  Applications must now explicitly configure interrupt priorities using Devicetree
  if they previously relied on the values found in SoC DTSI files. (:github:`106188`)

* :dtcompatible:`st,stm32-sai` binding has been restructured to reflect the SAI hardware
  topology. The parent node now represents the SAI Block controller, while a new
  ``child-binding`` represents the SAI Sub-Block instances.
  The following properties shall be moved from the parent SAI node to a child sub-block node:
  ``dmas``, ``dma-names`` (now validated against ``enum: [tx, rx]``), ``pinctrl-0``,
  ``pinctrl-names``, ``mclk-enable``, ``mclk-divider``, ``synchronous``, and
  ``fifo-threshold``. (:github:`104423`)

* :dtcompatible:`st,stm32-adc` binding has been restructured to reflect the ADC hardware
  topology. A parent node now represents the ADC common block, which holds the clock and
  the settings shared by all the ADC instances connected to it, while a new ``child-binding``
  represents the ADC instances themselves.

  The existing ``&adcN`` node labels still designate the ADC instances, which are now children
  of a common block node labelled ``&adcN_common``, where ``N`` lists the instances sharing the
  block (for example ``&adc1_common``, ``&adc12_common`` or ``&adc123_common``). The common block
  node must be enabled in addition to the instance node.

  The following properties shall be moved from the ``&adcN`` instance node to its ``&adcN_common``
  parent node: ``clocks``, ``clock-names``, ``st,adc-clock-source``, ``st,adc-prescaler`` and
  ``vref-mv``. Since the clock is now described once per common block, instances sharing it can
  no longer be given conflicting clock settings.

  .. tabs::

    .. group-tab:: Before

      .. code-block:: devicetree

          &adc1 {
            clocks = <&rcc STM32_CLOCK(AHB2, 13)>,
                     <&rcc STM32_SRC_SYSCLK ADC_SEL(3)>;
            clock-names = "adcx", "adc_ker";
            st,adc-clock-source = "ASYNC";
            st,adc-prescaler = <4>;
            vref-mv = <3000>;
            pinctrl-0 = <&adc1_in1_pa0>;
            pinctrl-names = "default";
            status = "okay";
          };

    .. group-tab:: After

      .. code-block:: devicetree

          &adc12_common {
            clocks = <&rcc STM32_CLOCK(AHB2, 13)>,
                     <&rcc STM32_SRC_SYSCLK ADC_SEL(3)>;
            clock-names = "adcx", "adc_ker";
            st,adc-clock-source = "ASYNC";
            st,adc-prescaler = <4>;
            vref-mv = <3000>;
            status = "okay";
          };

          &adc1 {
            pinctrl-0 = <&adc1_in1_pa0>;
            pinctrl-names = "default";
            status = "okay";
          };

  Note that ``vref-mv`` only needs to be set when it differs from its ``3300`` default value.

  For :dtcompatible:`st,stm32f1-adc` and :dtcompatible:`st,stm32f4-adc`, each instance keeps its
  own register clock, so ``clocks`` and ``clock-names`` stay on the ``&adcN`` node.
  (:github:`117309`)

* STM32 ADC (:dtcompatible:`st,stm32-adc`): when
  :kconfig:option:`CONFIG_ADC_STM32_VREFINT_CALIBRATE` is enabled (default
  whenever an okay :dtcompatible:`st,stm32-vref` node exists),
  :c:func:`adc_ref_internal` and INTERNAL :c:func:`adc_raw_to_millivolts_dt`
  results may no longer match DT ``vref-mv`` / 3300 exactly. Disable the
  Kconfig to keep the previous static DT-only scale.

  ``adc_ref_internal()`` no longer reports the first common block's
  ``vref-mv`` for every STM32 ADC child. Each child uses its parent common
  block's ``vref-mv`` (optional, default 3300). This only affects multi-common
  DTs that set divergent ``vref-mv`` values and relied on the old shared
  ``DEVICE_API``.

  VREFINT measurement is no longer tied to the first okay
  :dtcompatible:`st,stm32-vref` node. Any enabled ADC child named by a vref
  node's ``io-channels`` (including disabled vref nodes) can refresh the
  shared rail cache. (:github:`117114`)

* :dtcompatible:`st,hci-stm32wba` and :dtcompatible:`st,stm32wba-ieee802154` nodes
  (with nodelabels ``bt_hci_wba`` and ``ieee802154`` respectively) are now
  children of a top-level :dtcompatible:`st,stm32wba-radio` node with nodelabel
  ``radio``. The ``interrupts`` property is now set on the ``&radio`` node instead
  of being duplicated on both ``&bt_hci_wba`` and ``&ieee802154`` nodes. Out-of-tree
  boards which modified the ``interrupts`` property on either node must be updated
  to set the property on the top-level ``&radio`` node instead. (:github:`110546`)

* Renamed ST gpio-nexus for camera and display connectors as follow:
  ``st,dsi-lcd-qsh-030`` is renamed into :dtcompatible:`st,dsi-lcd-qsh-030-connector`
  ``st,stm32-dcmi-camera-fpu-330zh`` is renamed into :dtcompatible:`st,dvp-cam-zif-30-connector`

* :dtcompatible:`st,stm32-xspim` is now also used on STM32H5 and STM32H7RS series
  to declare and configure XSPI Manager. Boards making use of XSPI must now enable
  ``&xspim`` node in addition to the desired XSPI controller to use XSPI. (:github:`109903`)

* STM32MP13 SoC DTSI ethernet: rename labels from ``mac:`` and ``mdio:`` to ``mac0:`` and
  ``mdio0:``. The goal is to distinguish the 2 Ethernet controllers available. (:github:`108574`)

* Renamed Kconfig option ``CONFIG_STM32_MEMMAP`` to :kconfig:option:`CONFIG_FLASH_STM32_NOR_MEMMAP`.

* Using the ``stm32_lp_tick_source`` nodelabel to select an LPTIM as system timer is no longer supported
  and will trigger a build error. Use the :ref:`generic chosen <devicetree-zephyr-chosen-nodes>`
  ``zephyr,system-timer`` instead. (:github:`112999`)

* Properties ``wkup-pins-nb``, ``wkup-pins-srcs``, ``wkup-pins-pol``, and ``wkup-pins-pupd`` as well as
  the child binding of :dtcompatible:`st,stm32-pwr`, which were related to wake-up pins, have been removed.
  As a replacement, a node named ``wakeup-controller`` with new compatible :dtcompatible:`st,stm32-pwr-wkupctrl`
  is introduced as a child node to all existing :dtcompatible:`st,stm32-pwr` nodes.

  For most out-of-tree users, it is sufficient to move the ``status = "okay";`` property along with wake-up pin
  nodes declared in board DTS (if any) from the ``&pwr`` node to its new child named ``wakeup-controller``.
  The following Devicetree snippets show how this can be achieved by adding two lines in board DTS:

  .. tabs::

    .. group-tab:: Before

      .. code-block:: devicetree

          &pwr {
            wkup-pin@1 {
              /* ... */
            };

            status = "okay";
          };

    .. group-tab:: After

      .. code-block:: devicetree
        :emphasize-lines: 2, 8

          &pwr {
            wakeup-controller {
              wkup-pin@1 {
                /* ... */
              };

              status = "okay";
            };
          };

  Note that wake-up pin nodes are now called :samp:`wkup@{N}` instead of :samp:`wkup-pin@{N}` in tree.
  This change is cosmetic and has no functional impact. (:github:`114092`)

* :dtcompatible:`st,stm32-pwr` nodes are now enabled by default by SoC DTSI as the ``status = "disabled";``
  property has been removed. This should have no impact since the property was not used except for the
  wake-up pins feature, which is now handled by :dtcompatible:`st,stm32-pwr-wkupctrl`. (:github:`114092`)

* All Ethernet pinctrl nodes for STM32H5 series except :samp:`eth_mdc_{px0}`, :samp:`eth_mdio_{px0}`
  and :samp:`eth_pps_out_{px0}` have been renamed to match the Data Sheet names (:github:`118318`).

  The following table indicates the mapping between old and new names and can be used to migrate:

  .. list-table::
     :header-rows: 1
     :widths: 30 35 35

     * - Old name
       - New name (``mii`` PHY)
       - New name (``rmii`` PHY)
     * - :samp:`eth_crs_dv_{px0}`
       - *N/A for MII*
       - :samp:`eth_rmii_crs_dv_{px0}`
     * - :samp:`eth_ref_clk_{px0}`
       - *N/A for MII*
       - :samp:`eth_rmii_ref_clk_{px0}`
     * - :samp:`eth_col_{px0}`
       - :samp:`eth_mii_col_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_crs_{px0}`
       - :samp:`eth_mii_crs_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_rx_clk_{px0}`
       - :samp:`eth_mii_rx_clk_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_rx_dv_{px0}`
       - :samp:`eth_mii_rx_dv_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_rx_er_{px0}`
       - :samp:`eth_mii_rx_er_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_rxd0_{px0}`
       - :samp:`eth_mii_rxd0_{px0}`
       - :samp:`eth_rmii_rxd0_{px0}`
     * - :samp:`eth_rxd1_{px0}`
       - :samp:`eth_mii_rxd1_{px0}`
       - :samp:`eth_rmii_rxd1_{px0}`
     * - :samp:`eth_rxd2_{px0}`
       - :samp:`eth_mii_rxd2_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_rxd3_{px0}`
       - :samp:`eth_mii_rxd3_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_tx_clk_{px0}`
       - :samp:`eth_mii_tx_clk_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_tx_en_{px0}`
       - :samp:`eth_mii_tx_en_{px0}`
       - :samp:`eth_rmii_tx_en_{px0}`
     * - :samp:`eth_txd0_{px0}`
       - :samp:`eth_mii_txd0_{px0}`
       - :samp:`eth_rmii_txd0_{px0}`
     * - :samp:`eth_txd1_{px0}`
       - :samp:`eth_mii_txd1_{px0}`
       - :samp:`eth_rmii_txd1_{px0}`
     * - :samp:`eth_txd2_{px0}`
       - :samp:`eth_mii_txd2_{px0}`
       - *N/A for RMII*
     * - :samp:`eth_txd3_{px0}`
       - :samp:`eth_mii_txd3_{px0}`
       - *N/A for RMII*

  .. note::
    Pin names now vary depending on whether an MII PHY or an RMII PHY is used; this is indicated
    by property ``phy-connection-type`` (``mii`` or ``rmii``) on the Ethernet node in Devicetree.

    :samp:`{px0}` is a placeholder and should be replaced with actual pin names (e.g., ``pa1``).

    SoCs of the STM32H5Ex/STM32H5Fx line are not affected by this change as they have always used
    the new names since their introduction in Zephyr.

Storage
=======

* The ``fs_off`` element of :c:struct:`flash_sector` has been changed from type ``off_t`` to
  ``ptrdiff_t``. This should make all platforms and toolchains use the native machine register size
  and not vary based on the POSIX ``off_t`` type inherited from the C library. Picolibc 1.8.12
  always defines ``off_t`` as a 64-bit integer, even on 32-bit platforms; this change effectively
  returns the struct to the previous layout when using this C library. For older Picolibc versions
  and all other supported C libraries, ``ptrdiff_t`` uses the same underlying C type as ``off_t``;
  this change is intended to preserve the undering C type used for ``fs_off`` across the Picolibc
  update.

Syscon
======

* The syscon API functions :c:func:`syscon_read_reg` and :c:func:`syscon_write_reg` now use
  ``uint32_t`` for the register offset parameter instead of ``uint16_t``. This allows for
  larger register offsets. Code that explicitly declares ``uint16_t`` variables for the
  register parameter or implements the syscon driver API functions may need to be updated.

Texas Instruments
=================

* Using a :dtcompatible:`ti,am654-timer` instance as system timer now requires
  the explicit selection via the :ref:`generic chosen
  <devicetree-zephyr-chosen-nodes>` ``zephyr,system-timer`` node, which is
  provided for all SoCs that are using it. Downstream boards and applications
  that want to use another instance than the SoC default one need to overwrite
  this. (:github:`115068`)

Timer
=====

* :c:func:`sys_clock_set_timeout`, :c:func:`sys_clock_announce` and
  :c:func:`sys_clock_announce_locked` now take their tick count as an unsigned
  ``uint32_t`` rather than a signed ``int32_t``. Out-of-tree system timer drivers must
  update their :c:func:`sys_clock_set_timeout` definition accordingly, otherwise the build
  fails with a conflicting-types error. The kernel now also caps the requested timeout at
  ``SYS_CLOCK_MAX_WAIT`` and no longer passes ``K_TICKS_FOREVER`` to the driver, so such
  drivers no longer need to clamp the request against the :c:func:`sys_clock_announce`
  range or special-case ``K_TICKS_FOREVER``; only their own hardware cycle-count limits
  still need enforcing (:github:`111022`).

* The ``bool idle`` argument of :c:func:`sys_clock_set_timeout` is deprecated. The
  kernel now calls the new :c:func:`sys_clock_idle_enter` hook instead of
  :c:func:`sys_clock_set_timeout` with ``idle=true``. For backwards compatibility, the
  default implementation of :c:func:`sys_clock_idle_enter` emulates the old behavior by
  calling :c:func:`sys_clock_set_timeout` with ``idle=true``, so timer drivers that
  still examine ``idle`` keep working unchanged. Such drivers should be updated to
  implement :c:func:`sys_clock_idle_enter` and move their ``idle``-specific handling
  there. The argument is removed in a future release (:github:`115844`).

* When :kconfig:option:`CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE` is enabled, the kernel now
  calls the new :c:func:`sys_clock_no_timeout` hook when no timeout is pending, instead
  of :c:func:`sys_clock_set_timeout` with ``ticks=K_TICKS_FOREVER``. For backwards
  compatibility, the default implementation of :c:func:`sys_clock_no_timeout` calls
  :c:func:`sys_clock_set_timeout` with ``ticks=UINT32_MAX``, numerically the same
  value, so drivers expecting it as the "no deadline" signal keep working unchanged,
  whether they stop their clock or program a maximal wait. Such drivers should be
  updated to implement :c:func:`sys_clock_no_timeout` instead.

  Note the split between the two new hooks. Masking the wakeups while the CPU still
  runs belongs in :c:func:`sys_clock_no_timeout`, which must leave
  :c:func:`sys_clock_cycle_get_32` working. Stopping the time base belongs in
  :c:func:`sys_clock_idle_enter` when it is passed ``SYS_CLOCK_IDLE_FOREVER``.
  Refer to the :ref:`system timer driver documentation <system_timer_drivers>`
  for the precise semantics (:github:`115844`).

* Tickless system-timer drivers should no longer carry their own tick handling.
  The implementation header :file:`drivers/timer/system_timer_generic.h` now
  owns the accounting that each driver used to reimplement by hand, and got
  subtly wrong: the cycle-to-tick conversion, the announce baseline, the
  tick-aligned deadline computation and the counter range clamp, including the
  wrap handling of a narrow counter. A driver reduces to a few cycle-domain
  primitives, a cycle-counter read plus an absolute-compare arm, and includes
  the header once, which emits :c:func:`sys_clock_set_timeout`,
  :c:func:`sys_clock_elapsed` and :c:func:`sys_clock_cycle_get_32` /
  :c:func:`sys_clock_cycle_get_64` (:github:`115844`).

* When :kconfig:option:`SYSTEM_TIMER_LPM_COMPANION_COUNTER` is enabled, the Low-Power
  Companion counter, selected by the :ref:`generic chosen <devicetree-zephyr-chosen-nodes>`
  ``zephyr,system-timer-companion``, is checked at build time and must be usable as
  wake-up source. If not already present, the ``wakeup-source`` property should be
  added to such nodes to indicate they can be used as wake-up source. (:github:`117274`)

  .. note::

    This behavior was already expected in previous Zephyr releases but never asserted.

USB
===

* On STM32N6, the ``clocks`` cell which configures the USBPHYC clock mux has been moved
  from :samp:`usbotg_hs{N}` to :samp:`usbphyc{N}` nodes at SoC DTSI level. Boards which
  use an STM32N6 SoC with custom clock mux configuration must now set the ``clocks``
  property on :samp:`usbphyc{N}` instead of :samp:`usbotg_hs{N}`. (:github:`107813`)
* Indicating protocol error via ``errno`` in control transfer handlers is deprecated.
  Handlers should return error code directly. (:github:`108118`)
* When host issues control transfer with data stage from host to device, the USB control transfer
  callbacks ``control_to_dev`` in :c:struct:`usbd_class_api` and ``to_dev`` in
  :c:struct:`usbd_vreq_node` are now called with NULL ``buf`` before data stage is received.
  This allows the stack to return STALL during data stage. Out-of-tree class and vendor handlers
  need to be updated. (:github:`108840`)
* USB control transfer callbacks ``control_to_host`` in :c:struct:`usbd_class_api` and
  ``to_host`` in :c:struct:`usbd_vreq_node` are now expected to allocate the data stage buffer
  themselves. This allows allocating only as much memory as is actually needed which makes
  the worst case memory usage dependent on the handlers implementation and not on tainted wLength
  value coming from host. Out-of-tree class and vendor handlers need to be updated.
  (:github:`102491`)
* The Espressif USB-OTG full-speed controller compatible ``espressif,esp32-usb-otg`` has been
  renamed to :dtcompatible:`espressif,esp32-usb-otg-fs`. The internal PHY D+/D- pad numbers are
  now provided through the ``phy-dp-pin`` and ``phy-dm-pin`` properties. Out-of-tree devicetrees
  using the old compatible must update the node compatible and add the two pin properties.
* The ``clock-names`` property is now required on :dtcompatible:`st,stm32-usbphyc` nodes.
  A default value is provided at SoC DTSI level but *might* need to be overridden by board DTS.
  (:github:`112477`)

* The USB host controller API struct ``uhc_api`` got renamed to :c:struct:`uhc_driver_api`.
  It now also uses :c:macro:`DEVICE_API`. Out-of-tree USB host controller drivers must rename
  their API struct definitions and switch their API instances to ``DEVICE_API(uhc, ...)``.
  (:github:`108414`)

* The ``clock-reference`` property of :dtcompatible:`st,stm32u5-otghs-phy` is now deprecated
  and should be removed from DTS files; the underlying driver will compute the correct value
  automatically if the property doesn't exist (and honor it otherwise). (:github:`117882`)

* The ``get_desc`` callback in :c:struct:`usbd_class_api` now returns ``const void *`` instead of
  ``void *``, so that a class can keep its array of descriptor pointers in ROM. Out-of-tree
  classes must update the return type of their handler. (:github:`118251`)

* ``CONFIG_USBD_CDC_ACM_BUF_POOL`` has been removed. The CDC ACM implementation
  now allocates bulk IN and OUT transfer buffers from per-instance pools. The
  device tree properties ``tx-fifo-size`` or ``rx-fifo-size`` determine the
  pool sizes.

Video
=====

* The :dtcompatible:`ovti,ov7670` and :dtcompatible:`ovti,ov7675` camera drivers now assume a
  24 MHz XCLK input instead of the previous 6 MHz, matching the typical XCLK frequency listed in
  the OV7670 datasheet. Boards driving an OV7670 or OV7675 sensor must update their board-level
  XCLK clock configuration accordingly. For example, ``frdm_mcxn236`` has been switched from
  ``kFRO12M_to_CLKOUT`` (divided by 2 to yield 6 MHz) to ``kFRO_HF_to_CLKOUT`` (divided by 2 to
  yield 24 MHz), and ``frdm_mcxn947`` keeps ``kMAIN_CLK_to_CLKOUT`` but changes the CLKOUT
  divider from 25 to 6 to yield 24 MHz. (:github:`109393`)

* The APIs present in ``<zephyr/drivers/video.h>`` are now available under
  ``<zephyr/video/video.h>``. (:github:`112420`)

WiFi
====

* In the functions implemented by the :c:struct:`net_wifi_mgmt_offload`, internally
  :c:struct:`ethernet_api` and :c:struct:`wifi_mgmt_ops`, a additional argument was added for
  a pointer to :c:struct:`net_if`. This api is not directly exposed to the application, so only
  out-of-tree drivers need to be updated. (:github:`106086`)

* The Espressif Wi-Fi driver Kconfig option ``CONFIG_ESP32_WIFI_STA_AUTO_DHCPV4`` has been
  removed in favor of the generic :kconfig:option:`CONFIG_WIFI_STA_AUTO_DHCPV4`. Applications
  that previously disabled the Espressif-specific option must now disable the generic option
  to retain manual DHCPv4 or static IP behavior after STA connection.

* :c:struct:`wifi_status` gained ``status_code`` and ``reason_code`` members carrying the raw
  IEEE 802.11 codes, so the struct is larger than the ``int`` it used to be. Code that raises
  or receives :c:enumerator:`NET_EVENT_WIFI_SCAN_DONE`,
  :c:enumerator:`NET_EVENT_WIFI_CONNECT_RESULT`,
  :c:enumerator:`NET_EVENT_WIFI_DISCONNECT_RESULT`,
  :c:enumerator:`NET_EVENT_WIFI_DISCONNECT_COMPLETE`,
  :c:enumerator:`NET_EVENT_WIFI_AP_ENABLE_RESULT` or
  :c:enumerator:`NET_EVENT_WIFI_AP_DISABLE_RESULT` must use ``sizeof(struct wifi_status)``
  rather than ``sizeof(int)`` for the event payload length. Event handlers that only read the
  status value are unaffected, as it remains the first member. (:github:`116704`)

* A Wi-Fi connect request that runs past its timeout now reports
  :c:enumerator:`WIFI_STATUS_CONN_TIMEOUT` in :c:enumerator:`NET_EVENT_WIFI_CONNECT_RESULT`
  instead of a raw ``-ETIMEDOUT``. This only concerns the connections handled by the
  supplicant. Applications that matched on the errno value have to match on the status
  value instead. (:github:`116704`)

Xen
===

* With the introduction of zephyr-xenlib, the path to Xen's public headers has changed.
  Please use ``xen/public/...`` instead of ``zephyr/xen/public/...``.

.. zephyr-keep-sorted-stop

Bluetooth
*********

Bluetooth Audio
===============

.. zephyr-keep-sorted-start re(^\* \w)

* BAP

  * :c:member:`bt_bap_stream.codec_cfg` is now ``const``, to better reflect that it is a read-only
    value. Any non-read uses of it will need to be updated with the appropriate operations such as
    :c:func:`bt_bap_stream_config`, :c:func:`bt_bap_stream_reconfig`, :c:func:`bt_bap_stream_enable`
    or :c:func:`bt_bap_stream_metadata`. (:github:`104219`)
  * :c:member:`bt_bap_stream.qos` is now ``const``, to better reflect that it is a read-only
    value. Any non-read uses of it will need to be set with the appropriate operations such as
    :c:func:`bt_bap_unicast_group_create`, :c:func:`bt_bap_unicast_group_reconfig`,
    :c:func:`bt_bap_broadcast_source_create` or :c:func:`bt_bap_broadcast_source_reconfig`.
    (:github:`104887`)
  * Almost all API uses of ``struct bt_bap_qos_cfg *`` are now ``const``, which means that once the
    ``qos`` has been stored in a parameter struct like
    :c:struct:`bt_bap_broadcast_source_param` or
    :c:struct:`bt_bap_unicast_group_stream_param`, then the parameter's pointer cannot be used
    to modify the ``qos``, and the actual definition of the struct should be modified instead.
    (:github:`104219`)
  * :c:member:`bt_bap_unicast_group_info.sink_pd` and :c:member:`bt_bap_unicast_group_info.source_pd`
    now reflect the local values defined for the group, and not the values configured for any remote
    ASEs. (:github:`104887`)
  * :c:func:`bt_bap_unicast_client_discover` and :c:func:`bt_bap_broadcast_assistant_discover` now
    require that the connection has already gone through the pairing process and meets the security
    requirements of BAP before doing any discovery. In most cases this requires a call to
    :c:func:`bt_conn_set_security` for new devices. Bonded devices that reconnect should not require
    anything.
  * Almost all API uses of ``struct bt_audio_codec_cfg *`` are now ``const``, which means that once
    the ``codec_cfg`` has been stored in a parameter struct like
    :c:struct:`bt_bap_stream` or
    :c:struct:`bt_bap_broadcast_source_subgroup_param`, then the parameter's pointer cannot be used
    to modify the ``codec_cfg``, and the actual definition of the struct should be modified instead.
    (:github:`104219`)
  * All BAP roles now require :kconfig:option:`CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE` to be at least
    19 octets, as mandated by the BAP spec.
    If :kconfig:option:`CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE` is set to a lower value when used
    with BAP, then applications need to set it to at least 19 octets. The following Kconfig options
    are affected:

    * :kconfig:option:`CONFIG_BT_ASCS`
    * :kconfig:option:`CONFIG_BT_BAP_UNICAST_SERVER`
    * :kconfig:option:`CONFIG_BT_BAP_UNICAST_CLIENT`
    * :kconfig:option:`CONFIG_BT_BAP_BROADCAST_SOURCE`
    * :kconfig:option:`CONFIG_BT_BAP_BROADCAST_SINK`
    * :kconfig:option:`CONFIG_BT_BAP_SCAN_DELEGATOR`
    * :kconfig:option:`CONFIG_BT_BAP_BROADCAST_ASSISTANT`

    (:github:`107989`)
  * :zephyr:code-sample:`bluetooth_bap_broadcast_assistant`,
    :zephyr:code-sample:`bluetooth_bap_broadcast_sink`,
    :zephyr:code-sample:`bluetooth_bap_broadcast_source`,
    :zephyr:code-sample:`bluetooth_bap_unicast_client` and
    :zephyr:code-sample:`bluetooth_bap_unicast_server` have been moved from
    :zephyr_file:`samples/bluetooth/` to :zephyr_file:`samples/bluetooth/audio`.
  * ``bt_bap_stream_ops.configured`` has been renamed to
    :c:member:`bt_bap_stream_ops.codec_configured` and ``bt_bap_stream_ops.qos_set`` has been
    renamed to :c:member:`bt_bap_stream_ops.qos_configured`, to align the names with the ASE states
    defined by the ASCS specification. The callback signatures and the conditions where they are
    called are unchanged, so applications only need to do a search-and-replace from ``configured``
    to ``codec_configured`` and from ``qos_set`` to ``qos_configured`` where the callbacks are
    assigned. (:github:`114835`)

  * :c:func:`bt_bap_scan_delegator_mod_src` no longer treats ``metadata_len = 0`` as "keep existing"
    and will now set the metadata length to 0 for the subgroup. To keep existing data, the
    ``metadata_len`` field needs to be set to the existing length and the existing metadata
    shall be copied.

* CAP

  * :c:func:`bt_cap_commander_broadcast_reception_start` now waits for the CAP acceptors to sync to
    the broadcast before completing. This means that if the broadcast source is offline,
    including colocated broadcast sources like the ones created by
    :c:func:`bt_cap_handover_unicast_to_broadcast`, shall be active and have the periodic advertising
    enabled with a configured BASE. For :c:func:`bt_cap_handover_unicast_to_broadcast` the newly
    added :c:member:`bt_cap_handover_cb.unicast_to_broadcast_created` can be used to configure the
    BASE. This also means that any current checks implemented by an application to wait for receive
    state updates indicating successful sync can be removed,
    as :c:func:`bt_cap_commander_broadcast_reception_start` now ensures this when
    :c:member:`bt_cap_commander_cb.broadcast_reception_start` is called. This also applies for
    :c:func:`bt_cap_commander_broadcast_reception_stop` in a similar manner. (:github:`101070`)
  * :zephyr:code-sample:`bluetooth_cap_acceptor`,
    :zephyr:code-sample:`bluetooth_cap_handover` and
    :zephyr:code-sample:`bluetooth_cap_initiator` have been moved from
    ``samples/bluetooth/`` to ``samples/bluetooth/audio``.
  * :c:func:`bt_cap_initiator_unicast_audio_update` now rejects the API call if it would result in
    no changed states (i.e. the metadata in the parameters are identical to the metadata the server
    have reported to us), and will return ``-EALREADY``.

* CCP

  * :c:member:`bt_tbs_client_cb.technology` has changed the ``value`` parameter from ``uint32_t``
    to ``enum bt_bearer_tech``. Applications using this application should switch the type.
    (:github:`102430`)
  * All ``BT_TBS_TECHNOLOGY_*`` values like ``BT_TBS_TECHNOLOGY_3G`` are renamed to
    ``BT_BEARER_TECH_*`` like ``BT_BEARER_TECH_3G``. Applications can do search-and-replace from
    ``BT_TBS_TECHNOLOGY`` to ``BT_BEARER_TECH``. Additionally the values are now defined in
    :zephyr_file:`include/zephyr/bluetooth/assigned_numbers.h` instead of
    :zephyr_file:`include/zephyr/bluetooth/audio/tbs.h`. (:github:`102430`)
  * ``bt_tbs_register_param.supported_features`` has been renamed to
    :c:member:`bt_tbs_register_param.optional_opcodes`. Applications can do a simple
    search-and-replace for ``supported_features`` to ``optional_opcodes``.
    Additionally the ``BT_TBS_FEATURE_*`` macros have been changed to ``BT_TBS_OPTIONAL_OPCODE_*``.
    Applications can do a simple search-and-replace for ``BT_TBS_FEATURE_`` to
    ``BT_TBS_OPTIONAL_OPCODE_``. (:github:`103350`)
  * :zephyr:code-sample:`bluetooth_ccp_call_control_client` and
    :zephyr:code-sample:`bluetooth_ccp_call_control_server` have been moved from
    ``samples/bluetooth/`` to ``samples/bluetooth/audio``.

* CSIP

  * Optional CSIS characteristics have been made configurable via Kconfig and must be enabled
    explicitly:

    * Coordinated Set Size → :kconfig:option:`CONFIG_BT_CSIP_SET_MEMBER_SIZE_SUPPORT`
    * Set Member Lock → :kconfig:option:`CONFIG_BT_CSIP_SET_MEMBER_LOCK_SUPPORT`
    * Set Member Rank → :kconfig:option:`CONFIG_BT_CSIP_SET_MEMBER_RANK_SUPPORT`

* HAP

  * :zephyr:code-sample:`bluetooth_hap_ha` has been moved from
    ``samples/bluetooth/`` to ``samples/bluetooth/audio``.

* PBP

  * :zephyr:code-sample:`bluetooth_public_broadcast_sink` and
    :zephyr:code-sample:`bluetooth_public_broadcast_source` have been moved from
    ``samples/bluetooth/`` to ``samples/bluetooth/audio``.

* TMAP

  * :zephyr:code-sample:`ble_peripheral_tmap_bmr`,
    :zephyr:code-sample:`ble_peripheral_tmap_bms`,
    :zephyr:code-sample:`ble_peripheral_tmap_central` and
    :zephyr:code-sample:`ble_peripheral_tmap_peripheral` have been moved from
    ``samples/bluetooth/`` to ``samples/bluetooth/audio``.

* VOCS

  * The VOCS client now requires automatic CCC (Client Characteristic Configuration) discovery.
    :kconfig:option:`CONFIG_BT_VOCS_CLIENT` now depends on :kconfig:option:`CONFIG_BT_GATT_AUTO_DISCOVER_CCC`.
    Applications using VOCS client must ensure that CCC auto-discovery support is enabled. (:github:`110607`)

.. zephyr-keep-sorted-stop

Bluetooth Classic
=================

* The BR/EDR specific callbacks ``role_changed`` and ``br_mode_changed`` in
  :c:struct:`bt_conn_cb` have been moved into a new sub-struct
  :c:struct:`bt_conn_br_cb`, accessible via the ``br`` member. Application code
  using these callbacks must update the designated initializers:

  * ``.role_changed`` → ``.br.role_changed``
  * ``.br_mode_changed`` → ``.br.mode_changed``

  (:github:`108022`)

* Renamed ``CONFIG_BT_DEVICE_VEDNOR_ID`` to :kconfig:option:`CONFIG_BT_DEVICE_VENDOR_ID`
  to fix a typo.

* The :c:member:`bt_rfcomm_dlc_ops.recv` callback signature has changed from
  ``void`` to ``int``. Existing implementations must be updated to return ``0``
  to preserve previous synchronous behavior, or ``-EINPROGRESS`` to use the new
  asynchronous completion path.

Bluetooth HCI
=============

* The devicetree compatible ``bflb,bl70x-bt-hci`` has been renamed to
  :dtcompatible:`bflb,bt-hci`, now that a single binding covers all Bouffalo Lab
  on-chip BLE controllers (BL60x/BL70x/BL70XL). Out-of-tree boards and shields
  must update their devicetree nodes accordingly.

* Bluetooth HCI drivers now have to provide a mandatory common struct as the first field of
  their data (:c:struct:`bt_hci_driver_data`) and config (:c:struct:`bt_hci_driver_config`)
  structs.

* The HCI driver ``setup()`` op, :c:func:`bt_hci_setup`, :c:struct:`bt_hci_setup_params`,
  :kconfig:option:`CONFIG_BT_HCI_SETUP` and the ``bt_h4_vnd_setup()`` hook of the H:4 driver are
  deprecated and will be removed two releases from now. A driver that implements ``setup()``
  moves that work into :c:member:`bt_hci_driver_api.open`:

  * Send the vendor-specific commands with :c:func:`bt_hci_lockstep_cmd_send_sync`, over the
    driver's own transport, instead of with the Host's command APIs, and feed every received
    packet to :c:func:`bt_hci_lockstep_feed`. The helpers of
    :file:`include/zephyr/bluetooth/hci_pkt.h` frame the commands. After resetting the
    controller by other means than an HCI command, call :c:func:`bt_hci_lockstep_reset`.
  * Read the public address with :c:func:`bt_hci_get_public_addr` instead of taking it from
    :c:member:`bt_hci_setup_params.public_addr`. As there, it is ``BT_ADDR_ANY``, and not
    ``BT_ADDR_NONE``, when no public address was set.
  * Remove ``select BT_HCI_SETUP`` from the driver's Kconfig.

  The initialization then also runs in a build without a Host, where ``setup()`` was never
  called. With a Host it runs in the thread that calls :c:func:`bt_enable`, before that function
  returns, also when a ready callback is passed; ``setup()`` ran from the system workqueue in
  that case. This holds for every in-tree driver that implemented ``setup()``, as they have all
  been converted.

* The HCI driver :c:member:`bt_hci_driver_api.open` callback no longer has a ``recv`` parameter;
  rather the common HCI driver layer code takes care of managing this as part of the common
  data struct. There is a new :c:func:`bt_hci_recv` API for drivers to pass data the higher
  layer (e.g. the Bluetooth Host stack). For drivers that need access to any error from recv()
  (most don't) there's also a new :c:func:`bt_hci_recv_err` API that leaves the responsibility
  of unrefing the buffer to the caller in case of error situations.

* :kconfig:option:`CONFIG_BT_HCI_SET_PUBLIC_ADDR` no longer selects
  :kconfig:option:`CONFIG_BT_HCI_SETUP`. Out-of-tree HCI drivers that apply the public
  address in their ``setup()`` implementation must now select
  :kconfig:option:`CONFIG_BT_HCI_SETUP` themselves; without it the ``setup`` member does
  not exist in :c:struct:`bt_hci_driver_api` and the callback is not invoked. The address
  is now also available from the time the transport is opened, through
  :c:func:`bt_hci_get_public_addr`, allowing drivers to apply it during ``open()`` instead.
* The :ref:`HCI driver API <bt_hci_drivers>` now documents its lifecycle contract.
  For its user: :c:func:`bt_hci_open`, :c:func:`bt_hci_close` and :c:func:`bt_hci_send` are
  not safe to call concurrently for the same device, :c:func:`bt_hci_send` is only valid on
  an open transport, and :c:func:`bt_hci_close` is not called from the receive callback. For
  a driver: a failed ``open()`` leaves the transport closed and is not followed by
  ``close()``, a failed ``close()`` leaves it open, the receive callback is not called any
  more once ``close()`` has succeeded, and the driver operations other than ``setup()`` do not
  use the Host's HCI command APIs. Out-of-tree HCI drivers, and out-of-tree code that calls
  the HCI driver API directly, may have to be changed to follow these rules.

* An H:4 vendor extension configures its controller from :c:func:`bt_h4_vnd_open`, declared in
  :zephyr_file:`include/zephyr/drivers/bluetooth/h4.h`, which the H:4 driver calls at the end of
  its ``open()`` with a lockstep helper for the extension's commands, instead of from
  ``bt_h4_vnd_setup()`` and the ``setup()`` op. The extension selects
  :kconfig:option:`CONFIG_BT_H4_VND_OPEN` in place of :kconfig:option:`CONFIG_BT_HCI_SETUP` and
  reads the public address with :c:func:`bt_hci_get_public_addr` instead of taking it from the
  setup parameters. ``bt_h4_vnd_setup()`` is still called through the ``setup()`` op by an
  extension that keeps selecting :kconfig:option:`CONFIG_BT_HCI_SETUP`.

Bluetooth Host
==============

* The ``le_param_updated`` callback in :c:struct:`bt_conn_cb` is no longer invoked when a
  connection parameter update fails (i.e. the LE Connection Update Complete event reports a
  non-zero status). Previously it was called unconditionally, reporting the unchanged
  connection parameters with no error indication, which could not be distinguished from a
  successful update. Applications that need to be notified about rejected, application-initiated
  parameter updates should enable :kconfig:option:`CONFIG_BT_USER_CONN_PARAM_REJECTED` and
  implement the new ``le_param_update_rejected`` callback.

* The ``CONFIG_BT_RECV_CONTEXT`` Kconfig choice and its options ``CONFIG_BT_RECV_WORKQ_SYS``
  and ``CONFIG_BT_RECV_WORKQ_BT`` have been removed. The host now unconditionally
  processes low-priority HCI packets on the dedicated Bluetooth RX workqueue (the
  previous ``CONFIG_BT_RECV_WORKQ_BT`` behavior).
  Applications that selected ``CONFIG_BT_RECV_WORKQ_SYS`` to save RAM (e.g. on
  nRF51) must drop that option; the dedicated RX thread is now always created.
  Tune :kconfig:option:`CONFIG_BT_RX_STACK_SIZE` (the RX thread stack) for the
  application's enabled host features. Since low-priority RX no longer runs on
  the system workqueue, applications may be able to reduce
  :kconfig:option:`CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE`, but both stack sizes are
  application-specific and should be validated using stack-usage measurements.

* When :kconfig:option:`CONFIG_BT_GATT_AUTO_READ_CENTRAL_ADDR_RES` is enabled (the
  default when possible), the host reads the Central Address Resolution characteristic
  of a bonded peer once when the bond is created, and :c:func:`bt_le_adv_start`,
  :c:func:`bt_le_ext_adv_create` and :c:func:`bt_le_ext_adv_update_param` now fail
  with ``-ENOTSUP`` when :c:enumerator:`BT_LE_ADV_OPT_DIR_ADDR_RPA` is used towards a
  peer known not to support address resolution. Such a peer cannot resolve the target
  address, so it would never respond to the advertising. Applications that need to know
  in advance can read the same answer with :c:func:`bt_le_bond_addr_res_support`, and
  reach those peers with directed advertising towards their identity address instead.
  Disabling the option restores the previous behavior.

* Selected Bluetooth Host work items now run on the dedicated Bluetooth RX
  workqueue instead of the system workqueue. Application callbacks reached from
  those work items consequently run in the Bluetooth RX thread. This includes
  connection teardown and deferred connection work (e.g. the ``disconnected()``
  connection callback and SMP pairing timeouts), as well as timeout and
  completion paths in ATT/GATT, L2CAP, AVDTP, and HFP AG.
  Applications that relied on those callbacks running in the system workqueue
  should review their synchronization and callback stack requirements. See
  pull request :github:`93033` for details.

* ``CONFIG_BT_AUTO_PHY_UPDATE`` has been removed. Use the per-role ``BT_AUTO_PHY_CENTRAL``
  and ``BT_AUTO_PHY_PERIPHERAL`` choices instead. ``=n`` does not translate to dropping the
  option: the central choice defaults to :kconfig:option:`CONFIG_BT_AUTO_PHY_CENTRAL_2M`, so
  both roles must be set to ``_NONE`` explicitly.

* The deprecated ``CONFIG_BT_CONN_TX_MAX`` Kconfig option has been removed. It has been
  deprecated since Zephyr 4.2, and the number of pending TX buffers with a callback always
  follows :kconfig:option:`CONFIG_BT_BUF_ACL_TX_COUNT`.

* :c:member:`bt_le_ext_adv_info.sid` is now being set to ``BT_GAP_SID_INVALID`` for legacy
  advertising sets, as SIDs are only valid for extended advertising sets. Applications should not
  expect the :c:member:`bt_le_adv_param.sid` to be applied for legacy advertising sets.

* :c:member:`bt_le_ext_adv_info.sid` now reflects the SID given to
  :c:func:`bt_le_ext_adv_update_param`. Previously it kept the value from
  :c:func:`bt_le_ext_adv_create` even though the controller applied the new one.

* :c:func:`bt_addr_le_to_str` now formats LE addresses with a single-character type prefix,
  ``P:`` for public and ``R:`` for random, directly followed by the address, e.g.
  ``R:11:22:33:44:55:66``. The previous ``11:22:33:44:55:66 (random)`` form is no longer
  produced, and address types carrying additional HCI-level bits, such as
  ``BT_ADDR_LE_RANDOM_ID``, are formatted by their base type rather than as ``(random-id)`` or
  a raw hex value. Code that parses Zephyr log or shell output to extract addresses must be
  updated. :c:macro:`BT_ADDR_LE_STR_LEN` has shrunk from ``30`` to ``20`` accordingly.

* :c:func:`bt_addr_le_from_str` no longer takes a separate address type string. It accepts only
  the ``P:``/``R:`` prefixed format produced by :c:func:`bt_addr_le_to_str`; the previous
  ``"XX:XX:XX:XX:XX:XX"`` + ``"public"``/``"random"`` form is not supported. All Bluetooth
  shell commands that take an LE address (for example ``bt connect``, ``bt disconnect``,
  ``bt clear``, ``bt fal-add``, ``bt per-adv-sync-create``, ``gatt resubscribe`` and
  ``bap_broadcast_assistant add_src``) consequently take it as a single
  ``P:XX:XX:XX:XX:XX:XX`` or ``R:XX:XX:XX:XX:XX:XX`` argument instead of an address followed
  by a separate type argument.

Bluetooth Mesh
==============

* The deprecated ``CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASE`` and
  ``CONFIG_BT_MESH_BLOB_IO_FLASH_WITHOUT_ERASE`` Kconfig options have been removed, with no
  replacement. They have been deprecated since Zephyr 4.3, where the BLOB IO Flash module
  started querying the erase capability at runtime, and have had no effect since.

Bluetooth Services
==================

* :kconfig:option:`CONFIG_BT_OTS_MAX_OBJ_CNT` has been changed from ``hex`` to ``int`` for a
  more intuitive type.
  Simply modify any hex values like ``0x30`` to their decimal values like ``48``.

Networking
**********

* The HTTP client response callback (:c:type:`http_response_cb_t`) may now be
  invoked more than once for a single received buffer, once per body fragment,
  for example once per chunk of a chunked response. Applications that assumed a
  single callback per receive must append every fragment they are handed.

* ``CONFIG_NET_TEST_PROTOCOL``, a JSON control channel that let an out of tree
  TTCN-3 suite drive the TCP stack and read its internal state, has been
  removed, along with the ``samples/net/sockets/tcp`` sample that was its only
  system under test. Nothing in the tree enabled the option, and the code
  behind it had not compiled for several years. The suites that used it were
  archived by their author.

  Enabling it also turned off initial sequence number randomisation and made
  ``net_tcp_connect()`` return without waiting for the connection, so a build
  that had it did not behave like one that did not.

  There is no replacement option, because the replacement is not an option: the
  conformance tests under :zephyr_file:`tests/net/conformance` drive an
  unaltered build over the network instead, including a TCP suite covering the
  same ground. See :ref:`ttcn3_testing`.

* The ``struct dns_server`` type nested in :c:struct:`dns_resolve_context` has been
  renamed to ``struct dns_server_info``. A C++ class member cannot share the name of
  its enclosing class, so the old tag made ``<zephyr/net/dns_resolve.h>`` impossible to
  include from C++. No field was renamed, so accesses such as
  ``ctx->servers[i].dns_server_addr`` are unaffected; only code that names the type
  itself, for example in a ``CONTAINER_OF()`` call, needs updating.

* Various IP routing related Kconfig options will have now ``IPV6`` prefix added to
  them. This is done so that we can have IPv4 routing symbols that provide same
  functionality as IPv6 ones but can be controlled separately.

* IPv4 and IPv6 unicast route-table support is now exposed through the
  :kconfig:option:`CONFIG_NET_IPV4_ROUTE` and
  :kconfig:option:`CONFIG_NET_IPV6_ROUTE` options.

  These options control the per-family unicast route tables that are used by
  static route management, networking shell route commands, and host-side route
  selection for locally originated traffic such as VPN-bound packets. They do
  not, by themselves, enable packet forwarding between interfaces.

* The Kconfig options :kconfig:option:`CONFIG_NET_IPV4_ROUTING` and
  :kconfig:option:`CONFIG_NET_IPV6_ROUTING` have been renamed to
  :kconfig:option:`CONFIG_NET_IPV4_FORWARDING` and
  :kconfig:option:`CONFIG_NET_IPV6_FORWARDING`.

  The renamed options explicitly describe IP forwarding between interfaces.
  Applications that only need route-table lookups or static routes should
  enable :kconfig:option:`CONFIG_NET_IPV4_ROUTE` or
  :kconfig:option:`CONFIG_NET_IPV6_ROUTE` and leave forwarding disabled.
  Applications acting as routers should enable both the route-table option and
  the corresponding forwarding option.

* Out-of-tree IPv6 configurations should also migrate away from the deprecated
  legacy aliases :kconfig:option:`CONFIG_NET_ROUTE`,
  :kconfig:option:`CONFIG_NET_ROUTING`,
  :kconfig:option:`CONFIG_NET_MAX_ROUTES`, and
  :kconfig:option:`CONFIG_NET_MAX_NEXTHOPS` and use the
  :kconfig:option:`CONFIG_NET_IPV6_*` symbols directly.

* The ``samples/net/wifi/test_certs/rsa2k`` enterprise test certificates have
  been removed. TF-PSA-Crypto cannot decrypt their DES-encrypted PKCS#8 private
  keys. Use ``samples/net/wifi/test_certs/rsa2k_no_des`` instead, or set
  :envvar:`WIFI_TEST_CERTS_DIR` to another AES-encrypted certificate directory.

* :kconfig:option:`CONFIG_OPENTHREAD_JOINER_PSKD` no longer defaults to the publicly
  documented ``"J01NME"`` credential, and now has no default at all. Builds that enable
  :kconfig:option:`CONFIG_OPENTHREAD_JOINER_AUTOSTART` fail until a PSKd of 6 to 32
  uppercase alphanumeric characters (0-9 and A-Z excluding I, O, Q and Z) is configured.

  A PSKd set through Kconfig is compiled into the image and is therefore identical on
  every unit running that firmware, which lets any commissioner in range enrol an
  uncommissioned device into its own network. Treat the option as a development aid:
  product firmware should read a per-device PSKd from factory data and call
  ``otJoinerStart()`` from the application instead.

* ``net_if_config_get`` was removed as it was a duplicate of :c:func:`net_if_get_config`.
  (:github:`110930`)

* The number of ZVFS eventfd's is now determined by a ``ZVFS_EVENTFD_SIZE`` define
  instead of using the :kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX` Kconfig option directly.
  Subsystems can specify their own eventfd count requirements by specifying Kconfig
  options with the prefix ``CONFIG_ZVFS_EVENTFD_ADD_SIZE_``. These are summed together
  and the result is compared against :kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX`; the larger
  of the two values is used. To force :kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX` to be used,
  even when its value is less than the sum of the custom requirements, a new
  :kconfig:option:`CONFIG_ZVFS_EVENTFD_IGNORE_MIN` option has been introduced (which
  defaults to being disabled). As a result, networking subsystems that allocate eventfds
  (e.g. HTTP server, CoAP server, LwM2M, PTP, SSH, the socket service and the WPA
  supplicant) no longer require the application to manually bump
  :kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX` to account for them. (:github:`111201`)

* :kconfig:option:`CONFIG_NET_L2_PTP` has been deprecated and replaced by
  :kconfig:option:`CONFIG_NET_L2_PTP_TIMESTAMPING`. The new option more accurately describes the
  feature it enables. Applications or board configurations that explicitly enable
  :kconfig:option:`CONFIG_NET_L2_PTP` should be updated to use
  :kconfig:option:`CONFIG_NET_L2_PTP_TIMESTAMPING` instead.

* The default WPA supplicant network selection criterion has changed from
  throughput-based to reliability-based (SNR), switching the
  :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_NW_SEL` Kconfig default from
  :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_NW_SEL_THROUGHPUT` to
  :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_NW_SEL_RELIABILITY`.
  Previously, SNR above 25 dBm was considered sufficient and largely excluded
  from AP selection; SNR is now always factored in, improving connection stability
  for embedded Wi-Fi use cases. Users who need the previous behaviour can restore it by enabling
  :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_NW_SEL_THROUGHPUT`.

* LLMNR support has been deprecated. The Kconfig options
  :kconfig:option:`CONFIG_LLMNR_RESOLVER` and
  :kconfig:option:`CONFIG_LLMNR_RESPONDER` will be removed in a future release
  (4.7 at the earliest). LLMNR (RFC 4795) is being retired by Microsoft and is
  disabled by default on modern Windows. Applications that rely on local name
  resolution should migrate to mDNS (:kconfig:option:`CONFIG_MDNS_RESOLVER` /
  :kconfig:option:`CONFIG_MDNS_RESPONDER`).

* The following MQTT-SN transport functions now take an :c:struct:`mqtt_sn_transport`
  instead of an :c:struct:`mqtt_sn_client`:

  * :c:member:`mqtt_sn_transport.recvfrom`
  * :c:member:`mqtt_sn_transport.poll`
  * :c:member:`mqtt_sn_transport.sendto`

* On :c:func:`net_if_down`, the multicast addresses are no longer cleared from the interface.
  A leave message is still sent, but the addresses are retained in the interface's multicast list
  and will be rejoined when the interface is brought back up.
  This allows applications to bring the interface down and up without losing the multicast
  addresses. (:github:`115307`)

* The DHCPv4 client now raises ``NET_EVENT_IPV4_DHCP_STOP`` before it gives the
  lease up, where it used to raise it last. An application that stops the client
  and inspects the interface from that handler now sees the leased address and
  the lease's DNS servers still installed; they are taken away after it returns,
  the address last. Move such work to the handler for
  ``NET_EVENT_IPV4_ADDR_DEL``, which is now the final event of a teardown.

Ethernet
========

* :kconfig:option:`CONFIG_NET_DEFAULT_IF_ETHERNET` now allows to get the first ethernet interface,
  instead of the first between ethernet and wifi.

* The :kconfig:option:`CONFIG_ETH_QEMU_EXTRA_ARGS` and
  :kconfig:option:`CONFIG_NET_QEMU_USER_EXTRA_ARGS` options can no longer be used to specify the MAC
  address for the QEMU Ethernet device. Instead, :kconfig:option:`CONFIG_NET_QEMU_DEVICE_EXTRA_ARGS`
  can be used. This is because we are no longer using the ``-nic`` option for QEMU, but the
  ``-netdev`` and ``-device`` options. (:github:`107326`)

* Ethernet drivers providing RX timestamps must now call
  :c:func:`net_pkt_set_rx_timestamping` after storing a valid timestamp in the received packet.
  AF_PACKET sockets use :c:func:`net_pkt_is_rx_timestamping` as the sole indication that
  ``SO_TIMESTAMPING`` control data is valid. Out-of-tree drivers that only populate
  ``pkt->timestamp`` must be updated or their RX timestamps will not be passed to
  socket applications. (:github:`110582`)

Modem
=====

* Cellular modem chat delimiters and filters are now specified in
  :c:struct:`modem_cellular_vendor_config`, not :c:struct:`modem_cellular_data`.
* Cellular modem instance PPP pointer is now automatically populated in
  :c:struct:`modem_cellular_config`. Assignment to :c:struct:`modem_cellular_data` must be removed.
* Chat script callback argument types have been updated. A new
  :c:struct:`modem_chat_script_completion_info` pointer is now inserted before the ``user_data``
  argument.

PTP
===

* The PTP UDP protocol Kconfig symbols have been renamed for consistent capitalization:

  * :kconfig:option:`CONFIG_PTP_UDP_IPv4_PROTOCOL` to
    :kconfig:option:`CONFIG_PTP_UDP_IPV4_PROTOCOL`
  * :kconfig:option:`CONFIG_PTP_UDP_IPv6_PROTOCOL` to
    :kconfig:option:`CONFIG_PTP_UDP_IPV6_PROTOCOL`

gPTP
====

* Converted ``int port`` to ``uint16_t gptp_port`` in
  :c:struct:`ethernet_context` to make it clear that the field used only
  by the gPTP stack to store the gPTP port number.

* Used ``uint16_t`` for ``nb_ports`` in :c:struct:`gptp_default_ds` per
  IEEE 1588 standard.

* Removed ``net_eth_get_ptp_port`` and ``net_eth_set_ptp_port``.
  New :c:func:`gptp_get_port_number` and :c:func:`gptp_set_port_number`
  can be used instead.

* Removed ``CONFIG_NET_GPTP_CLOCK_ACCURACY_*``, users need to make sure right gPTP clock
  accuracy value configured in :kconfig:option:`CONFIG_NET_GPTP_CLOCK_ACCURACY`.

Modem
*****

SIMCOM SIM7080
==============

* The Kconfig option :kconfig:option:`CONFIG_MODEM_SIMCOM_SIM7080_LTE_BANDS` has been split
  into :kconfig:option:`CONFIG_MODEM_SIMCOM_SIM7080_LTE_BANDS_M1` and
  :kconfig:option:`CONFIG_MODEM_SIMCOM_SIM7080_LTE_BANDS_NB1` since NB-IoT and CAT-M have
  slightly different usable bands. The type of the newly introduced configuration values
  is a hex bitmap of selected bands. By default bands 8, 20 and 28 are selected.

  Applications configuring the :kconfig:option:`CONFIG_MODEM_SIMCOM_SIM7080_LTE_BANDS`
  must update their configuration.

LoRaWAN
*******

* The native LoRaWAN backend
  (:kconfig:option:`CONFIG_LORA_MODULE_BACKEND_NATIVE`) now requires
  :c:func:`lorawan_start` before the following runtime configuration APIs are
  accepted:

  * :c:func:`lorawan_set_datarate` and :c:func:`lorawan_set_conf_msg_tries`
    return ``-EPERM`` if called before start.
  * :c:func:`lorawan_enable_adr` (which has a ``void`` return type) logs a
    warning and drops the call if invoked before start.

  Configuration values previously latched by these APIs before
  :c:func:`lorawan_start` are no longer retained.  Applications that called
  them during initialization must move the calls to after start. They may still
  run before or after a successful :c:func:`lorawan_join`.

  :c:func:`lorawan_set_channels_mask` is unaffected and remains callable any
  time after :c:func:`lorawan_start`, since the channel mask influences the
  Join-Request channel selection itself.

  These ordering requirements do not apply to the LoRaMac-node backend
  (:kconfig:option:`CONFIG_LORA_MODULE_BACKEND_LORAMAC_NODE`).

Libraries
*********

Ring Buffer
===========

The ring buffer API has been reworked to reduce the :c:struct:`ring_buf` size and to make the
bookkeeping path more efficient. To accommodate these changes, the zero-copy claim/finish API
(``ring_buf_put_claim()`` / ``ring_buf_put_finish()`` and their ``get`` counterparts) has been
replaced by the non-stacking :c:func:`ring_buf_put_ptr` and :c:func:`ring_buf_get_ptr`.

The legacy claim/finish API is still available, but only when
:kconfig:option:`CONFIG_RING_BUFFER` is enabled. New code should use the ``_ptr`` API
directly.

Enabling :kconfig:option:`CONFIG_RING_BUFFER` selects the legacy ring buffer header, which
also brings back the other deprecated symbols that are absent from the default header: the entire
item API (:c:func:`ring_buf_item_init`, :c:func:`ring_buf_item_put`, :c:func:`ring_buf_item_get`,
:c:func:`ring_buf_item_space_get`, ``RING_BUF_ITEM_DECLARE*`` and ``RING_BUF_ITEM_SIZEOF``) and
``ring_buf_internal_reset()``. Out-of-tree code that still uses any of these fails to compile with
no other hint; enabling this option is the switch that restores them while the code is migrated to
:c:struct:`sys_ringq` and the ``_ptr`` API.

:c:func:`ring_buf_get` no longer accepts a ``NULL`` destination to discard data in the default
(slim) build; passing ``NULL`` is only tolerated when :kconfig:option:`CONFIG_RING_BUFFER` is
enabled. To drop data without a destination buffer, advance the read index directly with
:c:func:`ring_buf_consume`, for example
``ring_buf_consume(rb, MIN(count, ring_buf_size_get(rb)))``.

Advanced use cases such as **speculative-write-then-cancel** and **backfilling** (modifying a
previously written header before committing) now rely on the trailing ``offset`` parameter of
:c:func:`ring_buf_put_ptr` and :c:func:`ring_buf_get_ptr`. The offset is the number of bytes past
the current write (or read) index that the caller has already tentatively reserved, wrapping
handled internally. You lay out successive regions by passing an increasing offset, leaving the
real ring buffer unmodified, and only advance it with :c:func:`ring_buf_commit` (or
:c:func:`ring_buf_consume`).
If any step fails you simply return without committing, which is the equivalent of the old
``ring_buf_put_finish(rb, 0)`` cancellation.

For example, the following claim/finish code:

.. code-block:: c

   int write_pkg(struct ring_buf *rb, const uint8_t *payload, size_t payload_size)
   {
           struct hdr *h;
           uint8_t *ptr;
           uint32_t claim_size;

           claim_size = ring_buf_put_claim(rb, (uint8_t **)&h, sizeof(*h));
           if (claim_size < sizeof(*h)) {
                   ring_buf_put_finish(rb, 0);
                   return -ENOMEM;
           }

           claim_size = ring_buf_put_claim(rb, &ptr, payload_size);
           if (claim_size == 0) {
                   ring_buf_put_finish(rb, 0);
                   return -ENOMEM;
           }
           h->len = claim_size;
           /* ... write payload through ptr ... */
           ring_buf_put_finish(rb, sizeof(*h) + h->len);
           return h->len;
   }

would roughly translate to:

.. code-block:: c

   int write_pkg(struct ring_buf *rb, const uint8_t *payload, size_t payload_size)
   {
           struct hdr *h;
           uint8_t *ptr;
           uint32_t claim_size;

           /* Reserve the header region without committing it. */
           if (ring_buf_put_ptr(rb, (uint8_t **)&h, 0) < sizeof(*h)) {
                   return -ENOMEM;
           }

           /* Expose the region right after the header via a trailing offset. */
           claim_size = ring_buf_put_ptr(rb, &ptr, sizeof(*h));
           if (claim_size == 0) {
                   /* Nothing was committed to rb, so the write is cancelled. */
                   return -ENOMEM;
           }
           h->len = MIN(claim_size, payload_size);
           /* ... write payload through ptr ... */

           /* Publish header and payload atomically to the real buffer. */
           ring_buf_commit(rb, sizeof(*h) + h->len);
           return h->len;
   }

Other subsystems
****************

* Demand paging (``subsys/demand_paging``) is moved under Memory Management
  into ``subsys/mem_mgmt/demand_paging``. Custom backing store and eviction algorithm code need
  to be moved there.

* The ring buffer "item" API in ``<zephyr/sys/ring_buffer.h>`` has been deprecated in favor of the new
  fixed-size queue API in ``<zephyr/sys/ringq.h>``.

  Code storing fixed-size items should migrate to :c:struct:`sys_ringq` (see
  :ref:`fixed_size_ringq_api`). Code that only used the item API at the byte level should switch to
  the byte-mode functions :c:func:`ring_buf_put` / :c:func:`ring_buf_get` calls on the same
  :c:struct:`ring_buf`. (:github:`98255`)

* The :c:func:`ZTEST_BENCHMARK_SETUP_TEARDOWN` and :c:func:`ZTEST_BENCHMARK_TIMED_SETUP_TEARDOWN` macros have
  been removed. Their setup/teardown signature has been folded into :c:func:`ZTEST_BENCHMARK` and
  :c:func:`ZTEST_BENCHMARK_TIMED`, which now require explicit ``setup_fn`` and ``teardown_fn``
  arguments at every call site. Pass ``NULL`` when a benchmark genuinely needs neither.

  Update existing call sites as follows:

  .. code-block:: c

     /* Before */
     ZTEST_BENCHMARK(suite, my_bench, 100) { /* ... */ }
     ZTEST_BENCHMARK_TIMED(suite, my_bench, 1000) { /* ... */ }
     ZTEST_BENCHMARK_SETUP_TEARDOWN(suite, my_bench, 100, setup, teardown) { /* ... */ }
     ZTEST_BENCHMARK_TIMED_SETUP_TEARDOWN(suite, my_bench, 1000, setup, teardown) { /* ... */ }

     /* After */
     ZTEST_BENCHMARK(suite, my_bench, 100, NULL, NULL) { /* ... */ }
     ZTEST_BENCHMARK_TIMED(suite, my_bench, 1000, NULL, NULL) { /* ... */ }
     ZTEST_BENCHMARK(suite, my_bench, 100, setup, teardown) { /* ... */ }
     ZTEST_BENCHMARK_TIMED(suite, my_bench, 1000, setup, teardown) { /* ... */ }

* The ``CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNT`` and ``CONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT``
  Kconfig options, deprecated since Zephyr 4.0, have been removed. With
  :kconfig:option:`CONFIG_ZTEST_SHUFFLE` alone, suites and tests now run once per execution, in a
  shuffled order; to repeat them, enable :kconfig:option:`CONFIG_ZTEST_REPEAT` and set
  :kconfig:option:`CONFIG_ZTEST_SUITE_REPEAT_COUNT` and
  :kconfig:option:`CONFIG_ZTEST_TEST_REPEAT_COUNT`.

* The CPU load metric module has been merged into the unified :ref:`cpu_load` module. The
  :kconfig:option:`CONFIG_CPU_LOAD_METRIC` option is deprecated; enable
  :kconfig:option:`CONFIG_CPU_LOAD` with the :kconfig:option:`CONFIG_CPU_LOAD_BACKEND_RUNTIME_STATS`
  backend instead. The ``<zephyr/sys/cpu_load_metric.h>`` header now simply includes
  ``<zephyr/sys/cpu_load.h>``, and :c:func:`cpu_load_metric_get` is a deprecated wrapper around
  :c:func:`cpu_load_get_cpu`. Note that :c:func:`cpu_load_get_cpu` returns the load in per mille
  (0...1000) rather than percent; use :c:macro:`CPU_LOAD_PERMILLE_TO_PERCENT` to convert.

* The internal ``__ASSERT_ON`` define has been removed. Out-of-tree code should invoke
  ``__ASSERT()`` or ``__ASSERT_NO_MSG()`` directly, as these macros already compile out when
  assertions are disabled.
  Mark values used only by assertions with ``__maybe_unused`` or ``ARG_UNUSED()`` as appropriate.

* Several legacy assertion Kconfig options are deprecated in favor of the per-module ZASSERT
  levels (``CONFIG_ASSERT_MODULE_<module>_LEVEL``, defaulting through the ``DEFAULT`` module):

  * :kconfig:option:`CONFIG_ASSERT_VERBOSE` maps to
    :kconfig:option:`CONFIG_ASSERT_MODULE_DEFAULT_LEVEL_VERBOSE`.
  * :kconfig:option:`CONFIG_ASSERT_NO_COND_INFO`, :kconfig:option:`CONFIG_ASSERT_NO_MSG_INFO` and
    :kconfig:option:`CONFIG_ASSERT_NO_FILE_INFO` map to
    :kconfig:option:`CONFIG_ASSERT_MODULE_DEFAULT_LEVEL_TERSE`.
  * ``CONFIG_FORCE_NO_ASSERT`` is replaced by setting :kconfig:option:`CONFIG_ASSERT` to ``n``.
  * ``CONFIG_ASSERT_LEVEL`` is replaced by the ``DEFAULT`` module level; a level of ``0`` maps to
    :kconfig:option:`CONFIG_ASSERT_MODULE_DEFAULT_LEVEL_OFF`.

* The assertion hooks ``assert_post_action`` and ``assert_print`` have been removed.
  Use the new ``zassert_post_action`` and ``zassert_vprint`` hooks to achieve equivalent functionality.
  Note: The ``zassert_post_action`` hook is a terminal function, returning to the caller is not supported.
  If the application needs to return to the caller, enabling :kconfig:option:`CONFIG_ASSERT_TEST` will
  declare the ``zassert_post_action`` hook as a non-terminal function, allowing
  execution to continue after the hook runs.

* :kconfig:option:`CONFIG_ASSERT_NO_FILE_INFO` does not change the ``zassert_post_action`` hook
  signature like the old ``assert_post_action`` hook did.

* The zassert hook ``zassert_vprint``, the replacement for ``assert_print``, is now called with a
  ``va_list`` argument instead of a variable number of arguments. Out-of-tree code that implements
  this hook must be updated.

FIDO2
=====

* The FIDO2 transport callback API has changed. The
  :c:type:`fido2_transport_recv_cb_t` callback now returns an ``int`` to
  indicate whether a received message was accepted by the FIDO2 core, and
  :c:type:`fido2_transport_cancel_cb_t` now takes the
  :c:struct:`fido2_transport` instance that received the cancel command.
  Out-of-tree transports must be updated to handle the receive callback
  return value and pass the transport instance when invoking the cancel
  callback. (:github:`116552`)
* Application-provided user-presence backends selected with
  :kconfig:option:`CONFIG_FIDO2_UP_CUSTOM` must now implement
  :c:func:`fido2_up_reset` to clear their state for each new request. (:github:`116552`)

hawkBit
=======

* The legacy ``<zephyr/mgmt/hawkbit.h>`` header, deprecated since Zephyr 4.0, has been removed.
  Include ``<zephyr/mgmt/hawkbit/hawkbit.h>``, ``<zephyr/mgmt/hawkbit/config.h>`` and
  ``<zephyr/mgmt/hawkbit/autohandler.h>`` instead.

Logging
=======

* The UART dictionary log parsing script ``scripts/logging/dictionary/log_parser_uart.py`` has
  been removed. Use :zephyr_file:`scripts/logging/dictionary/live_log_parser.py` instead, which
  takes the port and baud rate after a ``serial`` sub-command.

MCUboot
=======

* ``CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH`` has been removed. Use
  :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE` instead.

* Sysbuild no longer forces the MCUboot overwrite-only mode and unsigned images on Espressif
  SoCs. Boards using them now get the generic defaults: swap using offset, which keeps the
  previous image for a revert, and RSA-2048 signatures with the MCUboot development key.
  Projects with their own key must set :kconfig:option:`SB_CONFIG_BOOT_SIGNATURE_KEY_FILE`,
  and projects that relied on the previous behavior can select
  :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY` and
  :kconfig:option:`SB_CONFIG_BOOT_SIGNATURE_TYPE_NONE` explicitly. A bootloader built after
  this change rejects unsigned images, so the bootloader and the application must be
  reflashed together when a device is moved to the new defaults.

* The shared Espressif partition tables no longer define a ``scratch_partition``, so
  :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_SWAP_SCRATCH` is no longer available on boards using
  them. The other partitions keep their offsets. Projects that need it can add the partition
  back in a board overlay.

MCUmgr
======

* ``CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM`` has been removed. The
  :ref:`mcumgr_os_application_info` command now always reports the board target as hardware
  platform; the pre-4.3 board and board revision output is no longer available.

* :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UART_MTU` and
  :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_MTU` have been deprecated. They only set the value
  returned by the deprecated ``get_mtu`` callback, which the SMP layer does not use: serial frames
  are limited to 127 bytes and the maximum SMP packet size is set by
  :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE`. Remove them from configuration files; a
  deprecation warning is emitted when they are changed from their default.

* The ``get_mtu`` member of :c:struct:`smp_transport_api_t` and the
  :c:type:`smp_transport_get_mtu_fn` type have been deprecated, as the SMP layer never calls
  them. Out-of-tree code should stop setting or calling ``get_mtu``. Transports remain
  responsible for fragmenting outgoing packets in their ``output`` function (see
  :c:type:`smp_transport_out_fn`).

* The image management client (:kconfig:option:`CONFIG_MCUMGR_GRP_IMG_CLIENT`)
  now supports SHA-512 image digests in addition to SHA-256:

  * :c:func:`img_mgmt_client_state_write` takes a new ``hash_len`` argument.
    When ``hash`` is not ``NULL``, pass its length in bytes (for example, ``32``
    for SHA-256). Otherwise, pass ``0``.
  * :c:struct:`mcumgr_image_data` now stores a variable-length digest: the
    ``hash`` buffer is :c:macro:`IMG_MGMT_CLIENT_HASH_MAX_LEN` (64) bytes, and
    the new ``hash_len`` field holds the actual length. Code that reads ``hash``
    must use ``hash_len`` instead of assuming :c:macro:`IMG_MGMT_DATA_SHA_LEN`.

* :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UDP_MTU` can no longer exceed
  :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE`, and a larger value now fails at
  configuration time. When the buffer is smaller than 1500 bytes, the MTU now defaults to the
  buffer size instead of 1500.

* :c:func:`smp_client_single_response` takes the SMP transport the response was received on as
  a new first argument, and ``res_hdr`` must be in host byte order. A response now only
  completes a pending command that was sent on that transport and has the same group and
  command ID. Responses from a server that does not echo the group and command ID are ignored,
  and the command is retried until it times out.

Network buffers
===============

* :c:func:`net_buf_max_len` and :c:func:`net_buf_simple_max_len` have been deprecated. They
  returned the capacity of the buffer behind its ``data`` pointer, which is neither the storage
  size nor the room left for more data. Use :c:func:`net_buf_tailroom` or
  :c:func:`net_buf_simple_tailroom` to find out how much data can still be added, and
  :c:func:`net_buf_headroom` or :c:func:`net_buf_simple_headroom` for how much can be pushed in
  front. Code that used the value as the size of a scratch area starting at ``data`` can
  compute it as ``buf->len + net_buf_tailroom(buf)``.

POSIX
=====

* ``CONFIG_POSIX_READER_WRITER_LOCKS`` has been removed. Use
  :kconfig:option:`CONFIG_POSIX_RW_LOCKS` instead.

Power Management
================

* The new, default-off experimental option
  :kconfig:option:`CONFIG_PM_EARLY_SYSTEM_TIMER_RESUME` selects the sequence introduced by
  :github:`118977`: SoC post-ops, system timer idle-exit, device resume, then PM exit notifications.
  Enable it only after validating platform dependencies and timeout callbacks. SoC post-ops
  run before device resume, and timer idle-exit may invoke :c:struct:`k_timer` expiry functions
  while devices are still suspended. Without this option, timer-based :c:func:`k_busy_wait`
  in device resume callbacks remains unsupported when the low-power state stopped the timer.

  (:github:`120960`)

Random
======

* ``CONFIG_CTR_DRBG_CSPRNG_GENERATOR`` has been removed.
  Use :kconfig:option:`CONFIG_PSA_CSPRNG_GENERATOR` instead.

* ``CONFIG_CS_CTR_DRBG_PERSONALIZATION`` has been removed. It did not have any effect.

Secure Storage
==============

* The following files were renamed:

  * ``zephyr/secure_storage/its/store/settings_get.h`` ->
    ``zephyr/secure_storage/its/store/settings.h``
  * ``zephyr/secure_storage/its/transform/aead_get.h`` ->
    ``zephyr/secure_storage/its/transform/aead.h``

* The ZMS backend partition chosen name has been updated from
  ``secure_storage_its_partition`` to ``zephyr,secure-storage-its-partition``. (:github:`118501`)

* The ``psa_its_get*()`` functions can now return ``PSA_ERROR_INVALID_SIGNATURE`` and
  ``PSA_ERROR_DATA_CORRUPT``, which were previously reported as ``PSA_ERROR_GENERIC_ERROR``.
  (:github:`118718`)

* ``psa_its_get()`` called with a ``data_size`` of 0 goes through the usual retrieval path, so
  it can now fail, with ``PSA_ERROR_DOES_NOT_EXIST`` for instance, instead of always returning
  ``PSA_SUCCESS``. (:github:`118718`)

Shell
=====

* The ``kernel log_level <module> <severity>`` shell command, deprecated since Zephyr v4.1.0,
  has been removed. Use ``log enable <severity> <module>`` instead: the arguments are reversed
  and the severity is a name (``none``, ``err``, ``wrn``, ``inf``, ``dbg``), not a number.

Stream Flash
============

* ``stream_flash_erase_page()`` has been removed. Use :c:func:`flash_area_erase` or
  :c:func:`flash_erase` instead; there is no Stream Flash API equivalent.

Tools
*****

* The ``--skip-rebuild`` option of the ``west`` commands that invoke a runner (``flash``,
  ``debug``, ``debugserver``, ``attach``, ``rtt``, ``reset``, ``robot`` and ``simulate``) has
  been removed. Use ``--no-rebuild`` instead.

* The ``PYOCD_DAPARG`` environment variable is no longer read by the ``pyocd`` runner. Pass
  ``--daparg`` to ``west flash``/``west debug`` instead.

* The ``openocd`` runner now selects a debug adapter by serial number through the
  canonical ``-i``/``--dev-id`` option, like the other runners. The previous
  ``--serial`` option is deprecated and kept as an alias; it maps onto the same
  mechanism (the value is still passed to the OpenOCD config as
  ``_ZEPHYR_BOARD_SERIAL``). Update any scripts to use ``west flash -i <serial>``.

Modules
*******

* The `CHRE <https://github.com/zephyrproject-rtos/chre>`_ framework is no longer an optional
  module of the Zephyr manifest and its sample moved out of the Zephyr tree. It is now an
  :ref:`external module <external_module_chre>`; add it to the application manifest to keep using
  it.

* Support for the `CANopenNode <https://github.com/CANopenNode/CANopenNode>`_ protocol stack was
  moved to an :ref:`external module<external_module_canopennode>`.

lvgl
====

* LVGL was updated from v9.5 to v9.6. See the `LVGL migration guide
  <https://lvgl.io/docs/open/changelog/migration-v9-6>`_ for the changes of LVGL itself.

* LVGL v9.6 deprecates the ``LV_COLOR_DEPTH`` choice in favor of the ``LV_COLOR_FORMAT_DEFAULT``
  choice, and ``CONFIG_LV_COLOR_DEPTH_*`` options no longer select the color format in Zephyr.
  Replace them with ``CONFIG_LV_COLOR_FORMAT_*``, for example ``CONFIG_LV_COLOR_DEPTH_16=y`` with
  ``CONFIG_LV_COLOR_FORMAT_RGB565=y``.

* ``CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE`` was replaced by
  :kconfig:option:`CONFIG_LV_Z_ATTRIBUTE_MEM_ALIGN_SIZE`.

* Boards, shields and SoCs no longer set LVGL options in ``Kconfig.defconfig`` files, as these
  options are not defined when the LVGL module is absent. They set Zephyr options instead, which
  provide the defaults of the LVGL options. Out-of-tree boards, shields and SoCs have to replace:

  * the ``LV_COLOR_DEPTH`` choice with the ``LV_Z_COLOR_FORMAT`` choice, for example
    ``LV_COLOR_DEPTH_16`` with ``LV_Z_COLOR_FORMAT_RGB565``,
  * ``LV_DPI_DEF`` and ``LV_DRAW_BUF_ALIGN`` with :kconfig:option:`CONFIG_LV_Z_DPI_DEF` and
    :kconfig:option:`CONFIG_LV_Z_DRAW_BUF_ALIGN`,
  * ``LV_USE_DRAW_DMA2D`` with :kconfig:option:`CONFIG_LV_Z_DRAW_DMA2D_DEFAULT`,
  * ``LV_USE_DRAW_DMA2D_INTERRUPT`` and ``LV_DRAW_DMA2D_HAL_INCLUDE`` with
    :kconfig:option:`CONFIG_LV_Z_DRAW_DMA2D_INTERRUPT` and
    :kconfig:option:`CONFIG_LV_Z_DRAW_DMA2D_HAL_INCLUDE`,
  * ``LV_NEMA_USE_CACHE`` and ``LV_NEMA_CACHE_HAL_INCLUDE`` with
    :kconfig:option:`CONFIG_LV_Z_NEMA_USE_CACHE` and
    :kconfig:option:`CONFIG_LV_Z_NEMA_CACHE_HAL_INCLUDE`,
  * the ``LV_USE_NEMA_LIB`` choice with one of the ``LV_Z_NEMA_LIB_*`` options, for example
    :kconfig:option:`CONFIG_LV_Z_NEMA_LIB_M7`.

  The ``LV_USE_NEMA_HAL`` choice needs no replacement, as the custom HAL used by Zephyr is the LVGL
  default. Applications setting LVGL options in ``.conf`` files are not affected.

* The log level of the Zephyr LVGL integration no longer follows the LVGL log level. It is now
  selected with the standard :kconfig:option:`CONFIG_LV_Z_LOG_LEVEL` choice
  (``CONFIG_LV_Z_LOG_LEVEL_DBG`` etc.) and defaults to :kconfig:option:`CONFIG_LOG_DEFAULT_LEVEL`.
  LVGL's own logging is still configured with ``CONFIG_LV_USE_LOG`` and ``CONFIG_LV_LOG_LEVEL_*``.
  LVGL messages forwarded to the Zephyr logging subsystem are filtered by both levels, so set
  ``CONFIG_LV_Z_LOG_LEVEL_DBG=y`` to see LVGL trace messages.

* ``CONFIG_LV_USE_SYSMON`` no longer implies :kconfig:option:`CONFIG_CPU_LOAD`. Enable
  :kconfig:option:`CONFIG_CPU_LOAD` for the system monitor to report the CPU usage.

* The ``zephyr,lvgl-pointer-input`` devicetree binding marks the ``swap-xy``, ``invert-x``, and
  ``invert-y`` properties as **deprecated**. Users should instead add the corresponding
  touchscreen properties ``swapped-x-y``, ``inverted-x``, and ``inverted-y`` to the underlying
  touch input controller device node, where these transformations are now defined canonically.

* :kconfig:option:`CONFIG_LV_Z_FULL_REFRESH` is now part of the ``LV_Z_RENDERING_MODE`` Kconfig
  choice, alongside :kconfig:option:`CONFIG_LV_Z_PARTIAL_REFRESH` (default) and
  :kconfig:option:`CONFIG_LV_Z_DIRECT_RENDERING`. Setting ``CONFIG_LV_Z_FULL_REFRESH=y`` in a
  ``.conf`` fragment still works, but ``CONFIG_LV_Z_FULL_REFRESH=n`` is silently ignored because
  a choice member cannot be deselected that way. Out-of-tree boards or shields that used
  ``CONFIG_LV_Z_FULL_REFRESH=n`` to opt out of a full-refresh default must instead override the
  choice default in a ``Kconfig.defconfig`` or ``.defconfig`` file:

  .. code-block:: kconfig

     choice LV_Z_RENDERING_MODE
       default LV_Z_PARTIAL_REFRESH
     endchoice

hal_nxp
=======

* The ``CONFIG_LV_USE_GPU_NXP_PXP`` Kconfig option has been removed. It only enabled the NXP PXP
  HAL driver component, which is already enabled by :kconfig:option:`CONFIG_MCUX_PXP`, defaulting
  to ``y`` when the :dtcompatible:`nxp,pxp` devicetree node is enabled and
  :kconfig:option:`CONFIG_DISPLAY` is set. Applications that use the PXP driver component
  without the display subsystem must enable :kconfig:option:`CONFIG_MCUX_PXP` explicitly.

* S32K344: The pinmux header file for this SoC was renamed from ``S32K344-172MQFP-pinctrl.h`` to
  ``S32K344_K324_K314_172HDQFP-pinctrl.h``. Out-of-tree boards must update their include directive accordingly::

    #include <nxp/s32/S32K344_K324_K314_172HDQFP-pinctrl.h>

Mbed TLS
========

* The following deprecated Kconfig options have been removed:

  * ``CONFIG_MBEDTLS_MD`` -> :kconfig:option:`CONFIG_MBEDTLS_MD_C`
  * ``CONFIG_MBEDTLS_LMS`` -> :kconfig:option:`CONFIG_MBEDTLS_LMS_C`
  * ``CONFIG_MBEDTLS_TLS_VERSION_1_2`` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_TLS1_2`
  * ``CONFIG_MBEDTLS_DTLS`` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_DTLS`
  * ``CONFIG_MBEDTLS_TLS_VERSION_1_3`` -> :kconfig:option:`CONFIG_MBEDTLS_SSL_PROTO_TLS1_3`
  * ``CONFIG_MBEDTLS_TLS_SESSION_TICKETS`` ->
    :kconfig:option:`CONFIG_MBEDTLS_SSL_SESSION_TICKETS`
  * ``CONFIG_MBEDTLS_CTR_DRBG_ENABLED`` -> :kconfig:option:`CONFIG_MBEDTLS_CTR_DRBG_C`
  * ``CONFIG_MBEDTLS_HMAC_DRBG_ENABLED`` -> :kconfig:option:`CONFIG_MBEDTLS_HMAC_DRBG_C`

  Unlike the removed options, the new ones do not enable their dependencies automatically.

* :kconfig:option:`CONFIG_MBEDTLS_SSL_EARLY_DATA` is now an explicit opt-in and is no longer
  implicitly enabled by :kconfig:option:`CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED`.
  Out-of-tree applications or board configurations that rely on TLS 1.3 PSK early data (0-RTT)
  must now explicitly enable :kconfig:option:`CONFIG_MBEDTLS_SSL_EARLY_DATA`.

* ``CONFIG_PSA_CRYPTO_CLIENT`` has been removed as it was a duplicate of
  :kconfig:option:`CONFIG_PSA_CRYPTO`. If you were using it, use
  :kconfig:option:`CONFIG_PSA_CRYPTO` instead. (:github:`108960`)

* Interface CMake library ``mbedTLS`` has been renamed to ``mbedtls_iface``. The former is kept
  as an alias to the latter for backward compatibility, but it will be removed in future
  releases.

* Mbed TLS was updated to version 4.1.1. Release notes can be found
  `here <https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-4.1.1>`_.

* TF-PSA-Crypto was updated to version 1.1.1. Release notes can be found
  `here <https://github.com/Mbed-TLS/TF-PSA-Crypto/releases/tag/tf-psa-crypto-1.1.1>`_.

Trusted Firmware-M (TF-M)
=========================

* :kconfig:option:`CONFIG_TFM_ZEPHYR_4_0_TO_4_2_COMPATIBILITY` has been deprecated in favor of
  :kconfig:option:`CONFIG_TFM_ZEPHYR_4_2_COMPATIBILITY`, which more accurately describes when the symbol
  needs to be set.

* :kconfig:option:`CONFIG_BUILD_WITH_TFM` does not enable :kconfig:option:`CONFIG_MBEDTLS` /
  :kconfig:option:`CONFIG_PSA_CRYPTO` anymore. Make sure to enable them explicitly in your build as needed. (:github:`114762`)

* :kconfig:option:`CONFIG_TFM_PARTITION_CRYPTO` now depends on
  :kconfig:option:`CONFIG_PSA_CRYPTO_PROVIDER_TFM`, meaning you need to enable
  :kconfig:option:`CONFIG_PSA_CRYPTO` for the TF-M Crypto partition to get enabled.
  (:github:`116318`)

Snippets
********

* Rename ``xen_dom0`` to ``xen-dom0``.

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

* A new architecture primitive, ``arch_cpu_irqs_are_enabled()``, has been added.
  It returns the current interrupt-enable state of the calling CPU without
  modifying it, complementing ``arch_irq_unlocked()`` which inspects a saved
  key.  Out-of-tree architecture ports must provide an implementation.

* ``CONFIG_XTENSA_MPU_ONLY_SOC_RANGES`` is removed. For SoC or board to override the default
  MPU region table, override :c:var:`xtensa_mpu_ranges` in the SoC or board layer instead.

* ``xtensa_soc_mpu_ranges[]`` and ``xtensa_soc_mpu_ranges_num`` are removed. If SoC or board
  needs its own memory regions at boot, override :c:var:`xtensa_mpu_ranges` instead.

* ``CONFIG_XTENSA_MPU_DEFAULT_MEM_TYPE`` is removed since memory types are now defined via
  ``xtensa_mpu_mem_type_ranges[]``.

* ``CONFIG_XTENSA_BACKTRACE_EXCEPTION_DUMP_HOOK`` is removed, since backtrace is now always
  using :c:macro:`EXCEPTION_DUMP` for output.

* SoCs using :kconfig:option:`CONFIG_XTENSA_BACKTRACE` are now expected to implement
  :c:func:`xtensa_soc_stack_ptr_is_sane` and :c:func:`xtensa_soc_ptr_executable`.

* The ARMv7-M MPU device-type region attributes ``REGION_PPB_ATTR``, ``REGION_IO_ATTR``
  and ``REGION_EXTMEM_ATTR`` now set Execute-Never (``XN=1``) on all ARMv7-M cores.
  Executing from Device/Strongly-ordered memory is architecturally UNPREDICTABLE on
  ARMv7-M, so no valid use case is affected. On Cortex-M7 the XN attribute additionally
  prevents speculative instruction fetches into these regions, which can cause bus hangs
  or read side effects in peripheral space (Arm Cortex-M7 TRM, "Speculative accesses -
  Considerations for system design"); the memory type alone does not prevent them.
  Out-of-tree boards that nevertheless execute from a region mapped with these
  attributes must define a custom attribute instead.

* The new :kconfig:option:`CONFIG_ARM_MPU_CM7_UNMAPPED_REGION` option makes the Arm
  MPU driver program the lowest-priority MPU region (region 0) as a 4GB
  Strongly-ordered, no-access, Execute-Never catch-all, implementing the workaround
  for Arm Cortex-M7 erratum 1013783 (SDEN-1068427) and preventing Cortex-M7
  speculative accesses to unmapped addresses. Cortex-M7 boards or SoCs whose static
  MPU region table explicitly covers all memory the firmware uses can enable it; the
  static regions are then programmed starting from MPU region 1. The
  ``mimxrt1180_evk`` and ``frdm_imxrt1186`` cm7 targets enable it by default,
  replacing their previous hand-rolled ``UNMAPPED`` MPU region table entry with
  identical runtime behavior.

* ``CONFIG_SSE`` and ``CONFIG_SSE_FP_MATH`` have been removed. Use
  :kconfig:option:`CONFIG_X86_SSE` and :kconfig:option:`CONFIG_X86_SSE_FP_MATH`
  instead.

* ``CONFIG_PLATFORM_SPECIFIC_INIT`` and its ``z_arm_platform_init()`` hook have
  been removed. Enable :kconfig:option:`CONFIG_SOC_RESET_HOOK` and rename the
  hook to :c:func:`soc_reset_hook`. The new hook runs later in the reset path,
  after the stack pointers have been set up, and is skipped on resume from
  suspend-to-RAM.

* The RISC-V specific ``CONFIG_EXTRA_EXCEPTION_INFO`` has been removed. Use
  :kconfig:option:`CONFIG_EXCEPTION_DEBUG` instead. The option is unchanged on Arm and SPARC.

* Both :c:func:`arch_mem_map` and :c:func:`arch_mem_unmap` have changed from
  returning ``void`` to ``int`` so that the caller can react to error code when
  assertion is disabled. If assertion is enabled, it currently retains mostly
  the previous behavior of halting the system.

Video
=====

* :c:func:`video_import_buffer` no longer returns the imported buffer index via a
  ``uint16_t *idx`` output parameter but instead returns a pointer to the imported
  :c:struct:`video_buffer`, or ``NULL`` on failure. This helps to make the index transparent
  to the application and also makes the buffer accessible from the application.

Twister
=======

* Faults after tests have passed are now explicitly detected and fail the whole
  testsuite, if a test produces a fault on purpose then the corresponding test
  case has to be marked with ``ignore_faults: true`` (:github:`116359`).

---

### Doc Releases Migration Guide 4.6 (`doc/releases/migration-guide-4.6.rst`)

:orphan:

..
  See
  https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
  for details of what is supposed to go into this document.

.. _migration_4.6:

Migration guide to Zephyr v4.6.0 (Working Draft)
################################################

This document describes the changes required when migrating your application from Zephyr v4.5.0 to
Zephyr v4.6.0.

Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.6>`.

.. contents::
    :local:
    :depth: 2

Common
******

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

Kernel
******

Boards
******

Device Drivers and Devicetree
*****************************

.. Only place contents common to all device drivers here. Contents specific to one driver subsystem
   goes into its own subsection, below.

.. Group contents in this section by subsystem, e.g.:
..
.. ADC
.. ===
..
.. ...

.. zephyr-keep-sorted-start re(^\w) ignorecase

.. zephyr-keep-sorted-stop

Bluetooth
*********

Networking
**********

Other subsystems
****************

Modules
*******

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

---

### Doc Releases Release Notes 1.10 (`doc/releases/release-notes-1.10.rst`)

:orphan:

.. _zephyr_1.10:

Zephyr Kernel 1.10.0
#####################

We are pleased to announce the release of Zephyr kernel version 1.10.0.

Major enhancements with this release include:

* Initial alpha-quality thread-level memory protection on x86, userspace and memory
  domains
* Major overhaul to the build system and a switch from Kbuild to CMake.
* Newtron Flash Filesystem (NFFS) Support
* Increased testsuite coverage and migrated majority of testcases to use ztest
* Integration with MCUBOOT Bootloader
* Additional SoC, platform and driver support for many of the already supported
  platforms.

The following sections provide detailed lists of changes by component.

Kernel
******

* Remove deprecated k_mem_pool_defrag code
* Initial alpha-quality thread-level memory protection on x86, userspace and memory
  domains:

  * Same kernel & driver APIs for kernel and user mode threads
  * System calls for privilege elevation
  * Stack overflow protection
  * Kernel object and device driver permission tracking
  * Simple app vs. kernel memory separation
  * Memory domain APIs for fine-tuning memory region permissions
  * Stack memory protection from other threads

* Add the following application-facing memory domain APIs:

  * k_mem_domain_init() - to initialize a memory domain
  * k_mem_domain_destroy() - to destroy a memory domain
  * k_mem_domain_add_partition() - to add a partition into a domain
  * k_mem_domain_remove_partition() - to remove a partition from a domain
  * k_mem_domain_add_thread() - to add a thread into a domain
  * k_mem_domain_remove_thread() - to remove a thread from a domain
* add k_calloc() which uses kernel heap to implement traditional calloc()
  semantics.
* Introduce object validation mechanism: All system calls made from userspace,
  which involve pointers to kernel objects (including device drivers), will need
  to have those pointers validated; userspace must never be able to crash the
  kernel by passing it garbage.

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

* nrf52: Add support for LOW_POWER state and SYSTEM_OFF
* Architecture specific memory domain APIs added
* Tickless Kernel Implementation for Xtensa
* Added support for the following ARM SoCs:

  * NXP i.MX RT1052
  * Silabs EFM32WG
  * STM F0
  * TI MSP432P4xx

Boards
******
* Jailhouse port: The port will enable Zephyr to run as a guest OS on x86-64
  systems. It comes with a test on QEMU to validate that, thus this new board
  introduction.
* Power Management for nrf52 series SOC
* Added support for the following ARM boards:

  * 96b_neonkey
  * efm32wg_stk3800
  * mimxrt1050_evk
  * msp_exp432p401r_launchxl
  * nucleo_f030r8
  * nucleo_f091rc
  * stm32f411e_disco
  * stm32f412g_disco
  * stm32l476g_disco
  * usb_kw24d512

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

* timer: Add Support for TICKLESS KERNEL in xtensa_sys_timer
* Rename ``random`` to ``entropy``
* Add Atmel SAM I2S (SSC) driver
* Add Atmel SAM DMA (XDMAC) driver
* Add plantower PMS7003 Driver
* Add Altera shim driver for JTAG UART soft IP
* Add Altera shim driver for timer soft IP
* Introduce mcux ccm driver
* Introduce mcux igpio shim driver

Networking
**********

* HTTP API changed to use net-app API. Old HTTP API is deprecated.
* Loopback network interface support added. This is used in testing only.
* LWM2M multi-fragment network packet support added.
* New CoAP library implementation, supporting longer network packets.
* Deprecated ZoAP library.
* mDNS (multicast DNS) support added.
* SNTP (Simple Network Time Protocol) client library added.
* Various fixes for: TCP, RPL, ARP, DNS, LWM2M, Ethernet, net-app API, Network
  shell, and BSD socket API
* Network management API fixes.
* Networking sample application fixes.
* 6lo IPv6 header compression fixes.
* IEEE 802.15.4 generic fixes.
* IEEE 802.15.4 mcr20a driver fixes.
* IEEE 802.15.4 kw41z driver fixes.
* IEEE 802.15.4 nrf5 driver fixes.

Bluetooth
*********

* Multiple qualification-related fixes for Bluetooth Mesh
* Support for Bluetooth Mesh Friend Node role
* Support for Bluetooth Mesh Foundation Client Models
* New Bluetooth Mesh shell module and test application
* Support for PA/LNA amplifiers in the BLE Controller
* Support for additional VS commands in the BLE Controller
* Multiple stability fixes for the BLE Controller

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

* The Zephyr project has migrated to CMake, an important step in a
  larger effort to make Zephyr easier to use for application developers
  working on different platforms with different development environment
  needs.  This change retains Kconfig as-is, and replaces all Makefiles
  with corresponding CMakeLists.txt.  The DSL-like Make language that
  KBuild offers is replaced by a set of CMake extensions that provide
  either simple one-to-one translations of KBuild features or introduce
  new concepts that replace KBuild concepts. Please re-read the Getting
  Started guide
  (https://docs.zephyrproject.org/1.10.0/getting_started/getting_started.html)
  with updated instructions for setting up and developing on your host-OS.
  You *will* need to port your own out-of-tree scripts and Makefiles to
  CMake.

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

* The implementation for sys_rand32_get() function has been moved to a new
  "random" subsystem. There are new implementations for this function, one based
  in the Xoroshift128+ PRNG (using a hardware number generator to seed), and
  another that obtains random numbers directly from a hardware number generator
  driver. Hardware number generator drivers have been moved to a
  "drivers/entropy" directory; these drivers only expose the interface provided
  by include/entropy.h.
* TinyCrypt updated to version 0.2.8

HALs
****

* Add Altera HAL for support NIOS-II boards
* Add mcux 2.3.0 for mimxrt1051 and mimxrt1052
* stm32cube: HAL/LL static library for stm32f0xx v.1.9.
* Add support for STM32 family USB driver
* Add Silabs Gecko SDK for EFM32WG SoCs
* Simplelink: Update cc32xx SDK to version 1.50.00.06

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

* Missing API documentation caused by doxygen subgroups and missing
  Sphinx directives now included.
* Note added to all released doc pages mentioning more current content could
  be available from the master branch version of the documentation.
* Documentation updated to use CMake (vs. Make) in all examples, and
  using a new Sphinx extension to keep examples consistent.
* Getting Started Guide material updated to include CMake dependencies
  and build instructions required for version 1.10.
* Instead of hiding all expected warnings from the document build
  process (there are some known doxygen/sphinx issues), the build
  now outputs all warnings, and then reports
  if any new/unexpected warnings or errors were detected.
* Obsolete V1 to V2 porting material removed.
* Continued updates to documentation for new board support, new samples,
  and new features.
* Integration of documentation with new zephyrproject.org website.
* Documentation moved to docs.zephyrproject.org site (with redirection
  from zephyrproject.org/doc)

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

* Benchmarking: cleanup of the benchmarking code
* Add userspace protection tests
* Move all tests to ztest and cleanup coding style and formatting

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

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

.. comment  List derived from Jira/GitHub Issue query: ...

* :github:`779` - CI: shippable - provide some means to allow users to rebuild
* :github:`1166` - Keeping reusable components under samples/ leads to build issues
* :github:`1236` - Cleanup CONFIG_EXECUTION_BENCHMARKING
* :github:`1241` - tests/net/ipv6/ FAILED on qc1000:x86
* :github:`1242` - tests/kernel/mutex/mutex/ FAILED @ esp32
* :github:`1256` - [cmake] A board should support multiple configurations (variants)
* :github:`1270` - Issue : Information CC3220SF LaunchXL
* :github:`1280` - shell on Arduino Due prints "shell>" before the delayed boot banner
* :github:`1289` - C++ 11 support!
* :github:`1332` - sanitycheck builds too many duplicates in CI, make it smarter
* :github:`1392` - No module named 'elftools'
* :github:`1397` - no serialport output
* :github:`1415` - Problem with forcing new line in generated documentation.
* :github:`1416` - Regression added by commit cd35742a (net/ethernet/arp: Let ethernet L2 managing pkt's reference while sending)
* :github:`1419` - test, please ignore
* :github:`1425` - spi.h and spi_legacy.h documentation conflicts
* :github:`1428` - networking defines being used but not defined anywhere
* :github:`1435` - Could not connect to Eclipse Leshan Demo Server
* :github:`1445` - doc: groups of items in API documentation not displaying
* :github:`1450` - make kconfig help is difficult to understand
* :github:`1474` - tests/net/ipv6_fragment build failure, missing testcase.yaml
* :github:`1487` - net/lib/dns doesn't respect CONFIG_NET_IPV6=n
* :github:`1488` - Replacing Make/Kbuild with CMake
* :github:`1499` - doc: replace Mac OS with macOS
* :github:`1501` - doc: Fix link title
* :github:`1510` - "make debugserver" broken for qemu_xtensa
* :github:`1522` - "make qemu" may not regenerate .config after changes to prj.conf
* :github:`1524` - doc: Remove "Changes from Version 1 Kernel" document
* :github:`1527` - make htmldocs failed
* :github:`1538` - esp32: is broken for the latest esp-idf version
* :github:`1542` - filter-known-issues.py fails if input file is empty
* :github:`1543` - doc: add process documentation for importing non-Apache2.0 licensed code
* :github:`1544` - regression: net: K64F: DHCP seems to fail a lot after 91041f9e
* :github:`1558` - Master reports itself as if it was 1.9.0 release
* :github:`1571` - Update to latest tinycrypt: v0.2.8
* :github:`1573` - tests/net/lib/http_header_fields/ fails with CONFIG_HTTP_PARSER_STRICT enabled
* :github:`1580` - checkpatch output in shippable log displays without line breaks
* :github:`1581` - two tests fail in qemu_cortex_m3 with new SDK
* :github:`1597` - remove deprecated k_mem_pool_defrag()
* :github:`1626` - Bluetooth LE dual mode topology
* :github:`1628` - Bluetooth LE data length extension
* :github:`1629` - LE privacy 1.2
* :github:`1630` - E2E tests for connection
* :github:`1632` - Implement Environmental Sensing Profile sample app
* :github:`1653` - enable stack canaries on ARC so we can run test_stackprot
* :github:`1670` - Add Reject command handling
* :github:`1853` - Review all Kconfig variables used and Simplify
* :github:`1880` - Zephyr Build Management
* :github:`1883` - Audio Codec
* :github:`1885` - Display Interface
* :github:`1902` - uWeave
* :github:`2011` - tcf: add support for running altera_max10 binaries
* :github:`2035` - doc: remove workaround for sphinx issue once 1.5 is released
* :github:`2202` - sporadic bad RAM pointer error under qemu_nios2
* :github:`2277` - Update to a more recent version of micro-ecc in Zephyr
* :github:`2281` - purge usage of platform_whitelist
* :github:`2411` - Look into supporting additional file systems under Zephyr FS API
* :github:`2580` - Failure in test_nano_work
* :github:`2723` - QEMU NIOS2 sporadic FAIL in tests/legacy/kernel/test_context
* :github:`2775` - Ability to make Security / Vulnerability bugs non-public
* :github:`2793` - entropy subsystem
* :github:`2818` - Add disk access based on flash on freedom board to interface with file system
* :github:`2853` - Customer: Zephyr Tutorial
* :github:`2855` - Customer: Sample code
* :github:`2858` - Customer: Training / Webinar / Video
* :github:`2942` - Support for NXP KW2xD MCU
* :github:`3039` - Simple Network Time Protocol support
* :github:`3058` - no good way to include library code outside of $(PROJECT_BASE)
* :github:`3064` - Symmetric multiprocessing (SMP)
* :github:`3070` - Add Atmel SAM family DMA (XDMAC) driver
* :github:`3139` - Zephyr Tutorials and Training
* :github:`3142` - [PTS] GAP/TC_SEC_AUT_BV_12_C fails
* :github:`3143` - [PTS] GAP/TC_SEC_AUT_BV_14_C fails
* :github:`3144` - [PTS] GAP/TC_PRIV_CONN_BV_11_C fails
* :github:`3146` - [PTS] SM/SLA/PROT/BV-02-C fails
* :github:`3147` - [PTS] SM/SLA/SIE/BV-01-C fails
* :github:`3158` - Add support for Panther board based on Quark SE C1000
* :github:`3184` - xtensa: Zephyr SDK build and emulation support
* :github:`3201` - Add Device Tree Documentation
* :github:`3268` - Add tickless kernel support in xtensa_sys_timer timer
* :github:`3274` - Lauterbach Debug Tools Support
* :github:`3275` - Tickless Kernel and Frequency Scaling
* :github:`3290` - introduce shared metadata for boards, samples and tests
* :github:`3294` - Application Development
* :github:`3297` - ROM-able
* :github:`3313` - [RESEARCH] Memory Protection Unit support
* :github:`3353` - Missing board documentation for arm/quark_se_c1000_ble
* :github:`3355` - Missing board documentation for arm/nucleo_f103rb
* :github:`3357` - Missing board documentation for arm/stm32_mini_a15
* :github:`3360` - Missing board documentation for x86/panther
* :github:`3364` - Missing board documentation for arc/panther_ss
* :github:`3368` - Can Zephyr support SNMP (Simple Network Management Protocol)?
* :github:`3378` - Zephyr will not build with icecream
* :github:`3383` - Work up linker-based system call prototype for MPU enabling
* :github:`3412` - Provide a sample application for kernel_event_logger
* :github:`3415` - Building FS for Arduino 101
* :github:`3432` - Port Zephyr to Silabs EFM32WG-STK3800
* :github:`3484` - Provide stm32cube LL based UART driver
* :github:`3485` - Provide stm32cube LL based I2C driver
* :github:`3486` - Provide stm32cube LL based SPI driver
* :github:`3587` - Move board related device tree files where the board is defined
* :github:`3588` - Move all X86 boards and related SoCs to device tree
* :github:`3600` -  Build warnings [-Wpointer-sign] with LLVM/icx (tests/unit/bluetooth/at)
* :github:`3601` - Use QMSI mailbox driver for Quark SE
* :github:`3604` - the http_client sample app cannot send GET request on Qemu x86
* :github:`3608` - Add functionality of Gesture Sensor
* :github:`3621` - Design system call interface for drivers
* :github:`3625` - Validation mechanism for user-supplied kernel object pointers
* :github:`3627` - x86: implement system calls
* :github:`3628` - implement APIs for dropping threads to unprivileged mode
* :github:`3630` - use API to validate user-supplied kernel buffers
* :github:`3632` - define set of architecture-specific memory protection APIs
* :github:`3635` - Device Driver Access Control
* :github:`3641` - define kernel system calls
* :github:`3643` - [PTS] PTS server stops working while executing  TC_SEC_CSIGN_BV_01_C test case
* :github:`3646` - Zoap message to use more than one fragment
* :github:`3682` - incremental builds do not work properly in Windows
* :github:`3683` - unable to follow directions to install Crosstool-NG on OS X
* :github:`3688` - OS X Setup Instructions Not Working on macOS Sierra
* :github:`3690` - Move to CMake or similar instead of Kbuild
* :github:`3697` - Use CMSIS __NVIC_PRIO_BITS consistently
* :github:`3716` - define / implement application-facing memory domain APIs
* :github:`3728` - ESP32 i2c Driver Support
* :github:`3772` - test_mem_pool_api crashes qemu_x86 if CONFIG_DEBUG=y
* :github:`3781` - iwdg: provide independent watchdog driver compliant with STM32Cube LL API
* :github:`3783` - Add mbedtls Crypto API shim driver
* :github:`3829` - PTS test case GATT/SR/GPA/BV-02-C crashes tester in QEMU
* :github:`3832` - ARM: implement API to validate user buffer
* :github:`3844` - Fix LWM2M header calculation in lwm2m_engine.c
* :github:`3851` - Port SPI HCI driver on new SPI API
* :github:`3852` - x86: implement memory domain interface
* :github:`3892` - Add support for STM32F429I_DISC1 board
* :github:`3897` - Static code scan (coverity) issues seen
* :github:`3922` - [PTS] GATT/SR/GAT/BV-01-C INCONC
* :github:`3923` - boards: provide support for Nucleo-64 F030R8
* :github:`3939` - Add Atmel SAM family I2S (Inter-IC Sound) driver based on SSC module
* :github:`3941` - x86: implement option for PAE-formatted page tables with NX bit
* :github:`3942` - x86: scope SMEP support in Zephyr
* :github:`3984` - Build warning: [-Wpointer-bool-conversion] with LLVM/icx (samples/bluetooth/mesh_demo)
* :github:`3985` - Build warning:  [-Wpointer-bool-conversion] with LLVM/icx (samples/bluetooth/mesh)
* :github:`4001` - GENERATED_KERNEL_OBJECT_FILES end up in application memory
* :github:`4004` - integrate printk() with console subsystem
* :github:`4009` - I2C API is mixing two incompatible definitions of bit-fields
* :github:`4014` - memory protection: implicit kernel object permissions
* :github:`4016` - bluetooth linker not connected
* :github:`4022` - net: "queue: Use k_poll if enabled" commit regressed BSD Sockets performance
* :github:`4026` - CC3220 WiFi Host Driver support
* :github:`4027` - extra unref happening on net_context
* :github:`4029` - TinyTILE bluetooth app flash
* :github:`4030` - Coverity issue seen with CID: 175366 , in file: /subsys/bluetooth/host/smp.c
* :github:`4031` - Coverity issue seen with CID: 175365 , in file: /subsys/bluetooth/controller/hci/hci.c
* :github:`4032` - Coverity issue seen with CID: 175364 , in file: /subsys/bluetooth/host/mesh/proxy.c
* :github:`4033` - Coverity issue seen with CID: 175363 , in file: /subsys/bluetooth/host/smp.c
* :github:`4034` - Coverity issue seen with CID: 175362 , in file: /subsys/bluetooth/host/smp.c
* :github:`4035` - Coverity issue seen with CID: 175361 , in file: /samples/bluetooth/eddystone/src/main.c
* :github:`4036` - Coverity issue seen with CID: 175360 , in file: /subsys/bluetooth/host/mesh/prov.c
* :github:`4037` - Coverity issue seen with CID: 175359 , in file: /subsys/bluetooth/host/hci_core.c
* :github:`4038` - Coverity issue seen with CID: 175358 , in file: /subsys/bluetooth/host/hci_core.c
* :github:`4041` - flashing tinytile and use of minicom
* :github:`4043` - Add new user CONFIG to project
* :github:`4044` - Livelock in SMP pairing failed scenario
* :github:`4046` - BLE Central and BLE Peripheral roles at a moment on nRF52832
* :github:`4048` - HTTP Request Timeout Not Working
* :github:`4049` - AMP - Multi-core
* :github:`4050` - zephyr.git/tests/kernel/obj_validation/testcase.yaml#test :Evaluation failure
* :github:`4051` - Coverity issue seen with CID: 177219 , in file: /drivers/flash/flash_stm32f4x.c
* :github:`4054` - [CID: 177215 ], in file: /tests/subsys/dfu/mcuboot/src/main.c
* :github:`4055` - Coverity issue seen with CID: 177214 , in file: /samples/boards/microbit/pong/src/ble.c
* :github:`4056` - Coverity issue seen with CID: 177213 , in file: /tests/net/ipv6_fragment/src/main.c
* :github:`4057` - Coverity issue seen with CID: 170744, in file: /samples/boards/microbit/pong/src/ble.c
* :github:`4058` - samples/net/http_client: The HTTP client failed to  send the GET request
* :github:`4059` -  zephyr.git/tests/net/ipv6/testcase.yaml#test  :evaluation failed
* :github:`4068` - [BLE, nRF51822] Error -ENOMEM when use  bt_gatt_write_without_response function
* :github:`4099` - Add some docs to samples/net/ieee802154/hw
* :github:`4131` - gen_syscalls.py may choke on non-ascii chars
* :github:`4135` - checkpatch.pl generates warning messages when run w/ perl-5.26
* :github:`4149` - Transition message on jira.zephyrproject.org needed
* :github:`4162` - build error in http_get sample
* :github:`4165` - ieee802154_uart_pipe.c: warning: return from incompatible pointer type
* :github:`4182` - NET_APP_SETTINGS for 15.4 doesn't seem to work (if to trust 15.4 shell)
* :github:`4186` - tcf.git/examples/test_network_linux_zephyr.py#_test  :Compilation failure
* :github:`4188` - samples /net/echo_server:failed to send packets to client
* :github:`4189` - ieee802154_settings.c is duplicated in the codebase
* :github:`4190` - samples/net/echo_client :failed to send data
* :github:`4193` - Zephyr libc(snprintf) is not comply with ISO standard.
* :github:`4195` - tests/net/udp/test_udp.py#_ipv4_udp : evaluation failed
* :github:`4239` - unit tests broken in sanitycheck
* :github:`4249` - where is auto-pts py script of zephyr?
* :github:`4258` - samples/net/zoap_server : unable to communicate between zoap client and server
* :github:`4264` - Getting started guide for windows: small error
* :github:`4289` - samples/mpu/mem_domain_apis_test is broken
* :github:`4292` - net: tcp.c: prepare_segment() may unrightly unref packet in case of error
* :github:`4295` - Error flashing board STM32373C-EVAL
* :github:`4301` - checkpatch.pl false positives block PR merge
* :github:`4310` - unable to flash quark_se_c1000_devboard
* :github:`4312` - GDB: Ubuntu's default GDB package does not support arm
* :github:`4323` - net: tcp.c: prepare_segment() may leak fragments in case of error
* :github:`4325` - samples/net/http_client:  unable to send the proper http request to Apache server
* :github:`4327` - NET_PKT_TX_SLAB_DEFINE, NET_PKT_DATA_POOL_DEFINE description and usage are confusing
* :github:`4347` - net: BSD Sockets UDP sendto() impl broke tests/net/socket/udp/
* :github:`4353` - VM-VM qemu networking example crashes often
* :github:`4358` - k_queue_poll returns NULL with K_FOREVER
* :github:`4366` - memory corruption in test_pipe_api
* :github:`4377` - Sniffing traffic in a VM-VM qemu setup crashes with a segfault in the monitor application
* :github:`4392` - zephyr/tests/benchmarks/footprint :build Failed
* :github:`4394` - Coverity issue seen with CID: 178058
* :github:`4395` - Coverity issue seen with CID: 178059
* :github:`4396` - Coverity issue seen with CID: 178060
* :github:`4397` - Coverity issue seen with CID: 178064
* :github:`4398` - zephyr/tests/crypto/ccm_mode :-Evaluation failed due to esp32
* :github:`4419` - 6LoWPAN - source address uncompress corner case
* :github:`4421` - net: Duplicated functionality between net_pkt_get_src_addr() and net_context.c:create_sockaddr()
* :github:`4424` - Turning on network debug message w/ LwM2M sample client will result in stack check failure
* :github:`4429` - I2C: stm32-i2c-v2 Driver (F0/F3/F7) gets stuck in endless loop when handling restart conditions
* :github:`4442` - samples: net: ieee802154: Sample is not working on nRF52840 platform
* :github:`4459` - i2c: stm32-i2c-(v1/v2) don't handle i2c_burst_write like expected
* :github:`4463` - Some tests and samples are missing a .yaml file
* :github:`4466` - warnings building echo_client with nrf5
* :github:`4469` - CI problem with check-compliance.py
* :github:`4476` - Multiple build failures with i2c_ll_stm32.c driver
* :github:`4480` - Compilation failure for qemu_x86 with CONFIG_DEBUG_INFO=y
* :github:`4481` - Build failure with CONFIG_NET_DEBUG_APP=y
* :github:`4503` - CONFIG_STACK_SENTINEL inconsistencies
* :github:`4538` - Coverity issue seen with CID:174928
* :github:`4539` - Coverity issue seen with CID:173658
* :github:`4540` - Coverity issue seen with CID: 173657
* :github:`4541` - Coverity issue seen with CID: 173653
* :github:`4544` - [BLE Mesh] Error: Failed to advertise using Node ID
* :github:`4563` - [BLE Mesh]: How to handle the 'Set" and 'Get' callbacks
* :github:`4565` - net_context_recv always fails with timeout=K_FOREVER
* :github:`4567` - [BLE Mesh]: Multiple elements in a node
* :github:`4569` - LoRa:  support LoRa
* :github:`4579` - [CID: 178249] Parse warnings in samples/mpu/mem_domain_apis_test/src/main.c
* :github:`4580` - Coverity issue seen with CID: 178248
* :github:`4581` - Coverity issue seen with CID: 178247
* :github:`4582` - Coverity issue seen with CID: 178246
* :github:`4583` - [CID: 178245] Parse warnings in samples/mpu/mem_domain_apis_test/src/main.c
* :github:`4584` - Coverity issue seen with CID: 178244
* :github:`4585` - Coverity issue seen with CID: 178243
* :github:`4586` - [CID: 178242]: Parse warnings samples/mpu/mem_domain_apis_test/src/main.c
* :github:`4587` - Coverity issue seen with CID: 178241
* :github:`4588` - Coverity issue seen with CID: 178240
* :github:`4589` - [coverity] Null pointer dereferences in tests/net/app/src/main.c
* :github:`4591` - [CID: 178237] memory corruption in drivers/ieee802154/ieee802154_mcr20a.c
* :github:`4592` - Coverity issue seen with CID: 178236
* :github:`4593` - Coverity issue seen with CID: 178235
* :github:`4594` - Coverity issue seen with CID: 178234
* :github:`4595` - Coverity issue seen with CID: 178233
* :github:`4600` - drivers:i2c_ll_stm32_v2: Interrupt mode uses while loops
* :github:`4607` - tests/net/socket/udp/ is broken, again
* :github:`4630` - Sample app 'coaps_server' fails to parse coap pkt
* :github:`4637` - [Coverity CID: 178334] Null pointer dereferences in /subsys/usb/class/netusb/function_ecm.c
* :github:`4638` - build is failing when newlib  is enabled
* :github:`4644` - Kconfig warnings when building any sample for nRF5x
* :github:`4652` - Document "make flash" in the "application development primer"
* :github:`4654` - Wrong file name for drivers/aio/aio_comparator_handlers.o
* :github:`4667` - x86 boards need device trees
* :github:`4668` - drivers/random/random_handlers.c is built when no random driver has been kconfig'ed into the build
* :github:`4683` - net: tcp  tcp_retry_expired cause assert
* :github:`4695` - samples/net/ieee802154 needs documentation
* :github:`4697` - [regression] net: echo_server doesn't accept IPv4 connections
* :github:`4738` - ble-mesh: proxy.c : Is clients-> conn a clerical error? it should be client-> conn?
* :github:`4744` - tests/net/ieee802154/l2/testcase.yaml#test : unable to acknowledge data from receiver
* :github:`4757` - kw41z-frdm: assertion failure while setting IRQ priority
* :github:`4759` - [PTS] GATT/CL/GAW/BV-02-C fails with INCONC
* :github:`4760` - stm32f4_disco and frdm_k64f  samples/basic/blink_led ,Choose supported PWM driver
* :github:`4766` - tests: mem_pool: Fixed memory pool test case failure on quark d2000
* :github:`4780` - [Coverity CID: 178794] Error handling issues in /tests/subsys/dfu/mcuboot/src/main.c
* :github:`4781` - [Coverity CID: 178793] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`4782` - [Coverity CID: 178792] Memory - illegal accesses in /subsys/net/lib/http/http_app_server.c
* :github:`4783` - [Coverity CID: 178791] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`4784` - [Coverity CID: 178790] Memory - corruptions in /samples/net/http_server/src/main.c
* :github:`4785` - [Coverity CID: 178789] Null pointer dereferences in /samples/net/http_server/src/main.c
* :github:`4786` - [Coverity CID: 178788] Control flow issues in /tests/net/context/src/main.c
* :github:`4787` - [Coverity CID: 178787] Null pointer dereferences in /subsys/net/ip/net_context.c
* :github:`4788` - [Coverity CID:178786] Memory - corruptions in /samples/net/http_server/src/main.c
* :github:`4789` - [Coverity CID: 178785] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`4791` - rpl-node uses testcase.ini instead of sample.yaml format
* :github:`4825` - Bluetooth IPSP error with qemu_x86
* :github:`4827` - Ping command crashes kernel over qemu_x86
* :github:`4841` - fix doc/devices/dts/device_tree.rst path and Make references
* :github:`4844` - cmake: can't flash stm32 with openocd
* :github:`4847` - custom 404 error page not being shown on docs.zephyrproject.org
* :github:`4853` - cmake: building unit test cases ignore EXTRA_* settings
* :github:`4864` - cmake: hts221 sensor sample not working anymore
* :github:`4881` - device_get_binding() returns failure in sample/drivers/crypto
* :github:`4889` - Flashing EM Starterkit with EM7D fails on master
* :github:`4899` - Convert opensda doc to CMake
* :github:`4901` - net: tcp: RST is sent after last ack is received
* :github:`4904` - cmake: BOOT_BANNER disappeared
* :github:`4905` - cmake: flashing for quark_se_devboard is broken
* :github:`4910` - BT host CMakeLists.txt code should be agnostic to the FS implementation
* :github:`4912` - Not using the Zephyr SDK is broken
* :github:`4925` - application_development test pollutes source directory
* :github:`4936` - net: 15.4 MAC addresses are shown differently between shell "net iface" and "ieee15_4 get_ext_addr"
* :github:`4937` - ESP32 can't boot
* :github:`4975` - Getting started documentation for Mac OS X inconsistent
* :github:`5004` - Normalize IEEE802514 driver "raw" mode.
* :github:`5008` - system call headers are not properly regenerated in CMake on incremental builds
* :github:`5009` - cmake creates too many build artifacts
* :github:`5014` - samples/drivers/crypto :Unable to find crypto device
* :github:`5019` - tests/kernel/mem_protect/stackprot : input string is long stack overflow
* :github:`5025` - arduino_due not generating proper config with cmake (crash)
* :github:`5026` - k_poll() documentation is wrong
* :github:`5040` - Bluetooth mesh API documentation incomplete
* :github:`5047` - document error: getting_started.rst
* :github:`5051` - Verify doxygen documented APIs are in the generated docs
* :github:`5055` - [Coverity CID: 179254] Possible Control flow issues in /samples/net/zperf/src/zperf_udp_receiver.c
* :github:`5056` - [Coverity CID: 179253] Control flow issues in /samples/net/zperf/src/zperf_tcp_receiver.c
* :github:`5057` - [Coverity CID: 179252] Null pointer dereferences in /samples/net/zperf/src/zperf_udp_receiver.c
* :github:`5058` - [Coverity CID: 179251] Control flow issues in /samples/net/zperf/src/zperf_udp_receiver.c
* :github:`5059` - [Coverity CID: 179250] Null pointer dereferences in /samples/net/zperf/src/zperf_udp_uploader.c
* :github:`5060` - [Coverity CID: 179249] Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`5061` - [Coverity CID: 179248] Control flow issues in /samples/net/zperf/src/zperf_tcp_receiver.c
* :github:`5062` - [Coverity CID: 179247] Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`5063` - samples/bluetooth: central_hr sample app is not connecting with peripheral sample app on arduino_101.
* :github:`5085` - bug: dts: stm32f1: wrong pinctrl base address
* :github:`5087` - Samples/bluetooth: Failed to connect with eddystone sample app on arduino_101.
* :github:`5090` - no makefile in zephyr/samples/bluetooth/mesh examples
* :github:`5097` - zephyr_library_*() configuration has lower precedence than global zephyr_*()  configuration
* :github:`5107` - Default partition addressing for nrf52_pca10040 is incompatible
* :github:`5116` - [Coverity CID: 179986] Null pointer dereferences in /subsys/bluetooth/host/mesh/access.c
* :github:`5117` - [Coverity CID: 179985] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5118` - [Coverity CID: 179984] Memory - corruptions in /drivers/ethernet/eth_mcux.c
* :github:`5119` - [Coverity CID: 179983] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5120` - [Coverity CID: 179982] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5121` - [Coverity CID: 179981] Incorrect expression in /drivers/ieee802154/ieee802154_kw41z.c
* :github:`5122` - [Coverity CID: 179980] Integer handling issues in /subsys/bluetooth/host/mesh/friend.c
* :github:`5123` - [Coverity CID: 179979] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5124` - [Coverity CID: 179978] Error handling issues in /subsys/bluetooth/host/mesh/health_srv.c
* :github:`5125` - [Coverity CID: 179976] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5126` - [Coverity CID: 179975] Error handling issues in /subsys/bluetooth/host/mesh/health_srv.c
* :github:`5127` - [Coverity CID: 179974] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5128` - [Coverity CID: 179973] Error handling issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`5140` - CMake migration regressed (changed behavior) of QEMU_PTY=1
* :github:`5144` - BUG: cmake: make doesn't update zephyr.hex file
* :github:`5145` - samples/bluetooth: Connection failure on peripheral CSC with Arduino 101
* :github:`5152` - CONFIG_CPLUSPLUS is incompatible with the zephyr_get_* API
* :github:`5159` - [nrf] Button example for nrf5x boards latches GPIO after 1 button press
* :github:`5176` - zephyr-v1.9.2 tag missing
* :github:`5177` - hci_usb: Linking error
* :github:`5184` - kernel system call handlers missing due to -Wl,--no-whole-archive
* :github:`5186` - gen_syscall_header_py is being run at the wrong time
* :github:`5189` - tests/subsys/fs/nffs_fs_api:-Evaluation failed
* :github:`5207` - Bluetooth subsystem uses acl_in_pool even for controllers not supporting flow control
* :github:`5211` - Kconfig: CPU_HAS_FPU dependencies problem
* :github:`5223` - CMake: Recent changes broke 3rd-party build system integration again
* :github:`5265` - ROM size increase due Zephyr compile options not stripping unused functions
* :github:`5266` - Ensure the Licensing page is up-to-date for the release
* :github:`5286` - NET_L2: Symbols from the L2 implementation layer are exposed to users of L2
* :github:`5298` - Endless loop in uart pipe

---

### Doc Releases Release Notes 1.11 (`doc/releases/release-notes-1.11.rst`)

:orphan:

.. _zephyr_1.11:

Zephyr Kernel 1.11.0
#####################

We are pleased to announce the release of Zephyr kernel version 1.11.0.

Major enhancements with this release include:

* Thread-level memory protection on x86, ARC and Arm, userspace and memory
  domains
* Symmetric Multi Processing (SMP) support on the Xtensa architecture.
* Initial Armv8-M architecture support.
* Native development environment on Microsoft Windows.
* Native build target on POSIX platforms.
* POSIX PSE52 partial support.
* Thread support via integration with OpenThread.
* Firmware over-the-air (FOTA) updates over BLE using MCUmgr.
* Lightweight flash storage layer for constrained devices.
* Additional SoC, platform and driver support for many of the already supported
  platforms.

The following sections provide detailed lists of changes by component.

Kernel
******

* Initial Symmetric Multi Processing (SMP) support added:

  * SMP-aware scheduler
  * SMP timer and idling support
  * Available on the Xtensa architecture
* POSIX PSE52 support:

  * Timer, clock, scheduler and pthread APIs

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

* User space and system call related changes:

  * Added ARC user space implementation
  * Added Arm user space implementation
  * Fixed a few MPU related issues with stack guards
* Armv8-M initial architecture support, including the following cores:

  * Arm Cortex-M23
  * Arm Cortex-M33
* New POSIX architecture for native GNU/Linux and macOS build targets:

  * Targets native executables that can be run on the host operating system

Boards
******

* New native_posix board for the POSIX architecture:

  * Includes a template for hardware models
  * Adds support for console and logging
  * Interrupts and timers are simulated in several different configurations
* Added support for the following Arm boards:

  * adafruit_trinket_m0
  * arduino_zero
  * lpcxpresso54114
  * nrf52_sparkfun
  * nucleo_f429zi
  * stm32f072_eval
  * stm32f072b_disco
* Removed Panther board support, which included boards/x86/panther and
  boards/arc/panther_ss
* Refactored dts.fixup so common SoC-related fixes are in arch/<*>/soc
  and board dts.fixup is only used for board-specific items.

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

* New LED PWM driver for ESP32 SoC
* Fixed ESP32 I2C driver
* Added I2C master, QSPI flash, and GPIO drivers for nios-II
* Added PinMux, GPIO, serial drivers for LPC54114
* Added PinMux, GPIO, serial, SPI, and watchdog drivers for sam0
* Added APA102 and WS2821B led_strip drivers
* Added native entropy driver
* Moved some sensors to dts
* Added AMG88xx, CCS811, and VL53L0x sensor drivers
* Redefined SENSOR_CHAN_HUMIDITY in percent

Networking
**********

* Generic OpenThread support added
* OpenThread support to nRF5 IEEE 802.15.4 driver added
* NXP MCUX ethernet driver IPv6 multicast join/leave enhancements
* Ethernet STM32 fixes
* IEEE 802.15.4 Sub-GHz TI CC1200 chip support added
* IEEE 802.15.4 test driver (upipe) hw filtering support added
* IEEE 802.15.4 radio API enhancements
* Net loopback driver fixes
* Net management API event enhancements
* IPv6 neighbor addition and removal can be monitored
* Static IPv4 and DHCPv4 configuration enhancements
* Bluetooth IPSP disconnect fix
* Network buffer enhancements
* ICMPv4 and ICMPv6 error checking fixes
* Network interface address handling enhancements
* Add routing support between network interfaces
* LWM2M fixes and enhancements
* Old legacy HTTP API removed
* Old legacy ZoAP API removed
* CoAP fixes
* TCP fixes
* HTTP fixes
* RPL fixes
* Net-app API fixes
* Net-shell fixes
* BSD socket API fixes

Bluetooth
*********

* Multiple fixes to the controller
* Fixed potential connection transmission deadlock issue with the help
  of a dedicated fragment pool
* Multiple fixes to Mesh support
* Added test automation for Mesh (for tests/bluetooth/tester)

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

* Native development environment on Microsoft Windows:

  * Uses CMake and Kconfiglib to avoid requiring an emulation layer
  * Package management support with Chocolatey for simple setup
  * Build time now comparable to Linux and macOS using Ninja

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

* New management subsystem based on the cross-RTOS MCUmgr:

  * Secure Firmware Updates over BLE and serial
  * Support for file system access and statistics
  * mcumgr cross-platform command-line tool

* FCB (File Circular Buffer) lightweight storage layer:

  * Wear-leveling support for NOR flashes
  * Suitable for memory constrained devices

HALs
****

* Updated Arm CMSIS from version 4.5.0 to 5.2.0
* Updated stm32cube stm32l4xx from version 1.9.0 to 1.10.0
* Updated stm32cube stm32f4xx from version 1.16.0 to 1.18.0
* Added Atmel SAMD21 HAL
* Added mcux 2.2.1 for LPC54114
* Added HAL for VL53L0x sensor from STM
* Imported and moved to nRFx 0.8.0 on Nordic SoCs
* Added QSPI Controller HAL driver

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

* Added MPU specific stack and userspace documentation
* Improved docs for Native (POSIX) support
* Docs for new samples and supported board
* General documentation clarifications and improvements
* Identify daily-built master-branch docs as "Latest" version
* Addressed Sphinx-generated intra-page link issues
* Updated doc generation tools (Doxygen, Sphinx, Breathe, Docutils)

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

* Added additional tests and test improvements for user space testing

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

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

.. comment  List derived from GitHub Issue query: ...

* :github:`1082` - build all tests have issues for devices that don't exist on a given board
* :github:`1281` - spi_ll_stm32 driver does not support stm32f1soc
* :github:`1291` - Initial Posix PSE52 Support
* :github:`1460` - 1.10 Release Checklist
* :github:`1462` - rename nano_internal.h to kernel_internal.h
* :github:`1526` - Bluetooth:mesh:prov_start: Invalid authentication
* :github:`1532` - There are no RISC-V boards in the list of supported boards
* :github:`1727` - Support out-of-tree board definitions
* :github:`1793` - I2S device APIs and Drivers
* :github:`1868` - Build System cleanup and Kernel / Application build separation
* :github:`1877` - Provide single point of notification for new data on multiple sockets.
* :github:`1890` - Memory Management
* :github:`1891` - Native Port
* :github:`1892` - NFC Stack
* :github:`1893` - Unified Kernel
* :github:`1921` - Bluetooth LE 4.2 Hardware Support
* :github:`1926` - build system does not re-link if linker script changed
* :github:`1930` - bluetooth tester shall support logging on Arduino101
* :github:`2007` - C++ compiler flags are not managed correctly
* :github:`2072` - create abstraction layer to directly use Altera HAL drivers for Nios II IP blocks
* :github:`2107` - handle configuration changes with more code coverage
* :github:`2239` - sporadic illegal instruction exception on Nios II in test_errno
* :github:`2244` - LE Controller: remove util folder
* :github:`2280` - Move defaults.tc and .known-issue under tests/
* :github:`2347` - Thread Protocol v1.1 Dependencies on the IP Stack
* :github:`2365` - Port IOT Protocols to the new IP Stack
* :github:`2477` - no unit tests exist for CONFIG_DEBUG_INFO
* :github:`2620` - object files created outside of $O directory when obj-XYZ path is relative
* :github:`2722` - QEMU NIOS2 sporadic FAIL in tests/legacy/kernel/test_timer/nanokernel
* :github:`2760` - Implement Virtual USB ethernet Adapter support
* :github:`2819` - legacy/kernel/test_task_priv randomly fails on EMSK ARC
* :github:`2889` - [ARC] legacy/benchmark/latency_measure not measuring RIRQ/FIRQ
* :github:`2891` - implement _tsc_read equivalent for all architectures
* :github:`2912` - Develop Guideline for Handling Configuration Changes with More Code Coverage
* :github:`2937` - Thread-level Memory Protection Support
* :github:`2939` - Add Xtensa Port
* :github:`2943` - Support for the KW22D512 Kinetis MCU based USB Dongle
* :github:`2971` - I2C High-Speed Mode is not implemented
* :github:`2994` - The build system crashes when GCCARMEMB_TOOLCHAIN_PATH has a space in it
* :github:`3069` - XML encoding/decoding library
* :github:`3081` - Concise Binary Object Representation (CBOR)
* :github:`3083` - I2C problem Zephyr OS sensor example on NRF51 and F401re
* :github:`3127` - IP stack does not implement multicasting requirements of IPv6 RFCs and network driver model lacks features to implement it properly
* :github:`3240` - Unnecessary code footprint bloat due to "static inline"
* :github:`3279` - Reclaiming Memory
* :github:`3283` - Split net_buf parsing context from the actual data
* :github:`3302` - samples/subsys/logging/logger-hook needs to be a test case
* :github:`3308` - [TAHI] No "ICMPv6 error message" is received while sending echo request with parameter problem header
* :github:`3316` - [IPv6 TAHI] Section 1: RFC 2460 - IPv6 Specification
* :github:`3317` - [IPv6 TAHI]Section 4: RFC 1981 - Path MTU Discovery for IPv6
* :github:`3318` - [IPv6 TAHI]Section 5: RFC 4443 - ICMPv6
* :github:`3322` - [IPv6 TAHI] Section 3: RFC 4862 - IPv6 Stateless Address Autoconfiguration
* :github:`3323` - [IPv6 TAHI] Section 2: RFC 4861 - Neighbor Discovery for IPv6
* :github:`3329` - Build warnings [-Wpointer-sign] with LLVM/icx (bluetooth_ipsp)
* :github:`3345` - Missing board documentation for riscv32/zedboard_pulpino
* :github:`3346` - Missing board documentation for riscv32/qemu_riscv32
* :github:`3351` - Missing board documentation for arm/bbc_microbit board
* :github:`3352` - Missing board documentation for arm/nrf51_blenano
* :github:`3439` - IP stack: No MTU handling on send()
* :github:`3440` - IP stack: No TCP receive window handling
* :github:`3483` - Unify STM32 configuration files
* :github:`3546` - Enabling networking for targets w/o network hw causes hang on boot
* :github:`3565` - Symmetric multiprocessing (SMP) for Xtensa architecture
* :github:`3597` - Build warnings [-Wpointer-sign] with LLVM/icx (tests/net/ieee802154/crypto)
* :github:`3614` - cdc-acm error when printing one byte at a time
* :github:`3617` - Build warnings [-Wshift-overflow] with LLVM/icx (K_MEM_POOL_DEFINE)
* :github:`3667` - _IsInIsr doesn't work properly on Cortex M0
* :github:`3685` - Test suite cleanup and Test Coverage
* :github:`3704` - Move all X86 boards to device tree
* :github:`3707` - intermittent work_queue test failure
* :github:`3712` - RPL client node version bogus incrementation
* :github:`3718` - Mpu stack guard is not set when reaching main
* :github:`3747` - tests/kernel/mem_slab/test_mslab_threadsafe/testcase.ini#test type:qemu-zephyr-arm
* :github:`3809` - Build warnings [-Wimplicit-function-declaration] with LLVM/icx (tests/drivers/pci_enum)
* :github:`3833` - make device_get_binding() more efficient
* :github:`3834` - CDC_ACM is limited to 4 bytes at a time for Arduino 101
* :github:`3838` - Some  tests end up with  0 platforms due to bad filtering
* :github:`3850` - SPI fails on Nucleo_f334r8
* :github:`3855` - Support board files located in application directory
* :github:`3856` - LwM2M: Support write attributes (section 5.4.4 of spec)
* :github:`3858` - Enable OpenThread support for Zephyr
* :github:`3859` - Create OpenThread platform adaptation for Zephyr
* :github:`3860` - Create OpenThread network interface driver
* :github:`3862` - Verify that the OpenThread requirements are fulfilled by Zephyr 15.4 radio driver
* :github:`3870` - Create a shell to configure OpenThread stack
* :github:`3872` - build on windows failed " error: unrecognized command line option '-no-pie'"
* :github:`3918` - Build error [use of undeclared identifier]with LLVM/icx (samples/net/nats)
* :github:`4000` - xtensa-vectors.S builds wrong versions of ISRs based on HAL information
* :github:`4010` - [CID: 174928]: Control flow issues in /tests/kernel/mem_slab/mslab/src/slab.c
* :github:`4025` - Upgrade to TinyCrypt 0.2.7 has significant API changes
* :github:`4045` - convert to ztest for files in tests/kernel
* :github:`4105` - Sensors: move all the drivers using SPI bus to new SPI API
* :github:`4106` - Flash: move w25qxxdv driver to new SPI API
* :github:`4216` - samples:net:sockets:echo : communication blocks between client and server after few packets transmission
* :github:`4351` - arduino_101: USB device is not listed after flashing with a Zephyr sample
* :github:`4401` - tests/net/ipv6/test.yaml :--Cannot add multicast IPv6 address
* :github:`4445` - sanitycheck --platform-limit is broken
* :github:`4513` - parsetab.py is getting corrupted when multiple instance of sanitycheck is executed simultaneously
* :github:`4549` - tests/crypto/mbedtls/testcase.yaml#test :Build failed
* :github:`4566` - k_busy_wait( ) gives compilation error when CONFIG_SYS_CLOCK_TICKS_PER_SEC is set to 0
* :github:`4568` - dts generation incorrect
* :github:`4576` - no testcase.yaml for tests/drivers/spi/spi_loopback
* :github:`4578` - tests/net/socket/udp/testcase.yaml#test : Build failed on esp32
* :github:`4596` - tests/net/mgmt/testcase.yaml#test :failed due to un-handled exception
* :github:`4597` - tests/drivers/ipm/testcase.yaml#test :unable to print the Expected output
* :github:`4603` - sanitycheck either conceals information from user or spams it
* :github:`4606` - usb mass storage : config waits for Vendor ID and Product ID from user during building
* :github:`4633` - Implement flash page layout api in the Kinetis flash driver
* :github:`4635` - xtensa-esp32-elf-gcc.exe: error: unrecognized command line option '-no-pie'
* :github:`4653` - net: tcp->recv_max_ack isn't used
* :github:`4666` - x86 device trees need interrupt controller nodes
* :github:`4687` - Windows: Remove all dependencies on MSYS2
* :github:`4699` - PWM LED Driver for ESP32
* :github:`4705` -  tests/net/socket/tcp/ undefined reference to __getreent
* :github:`4709` - tests/kernel/fatal/testcase.yaml#stack-sentinel : Kernel Panic
* :github:`4724` - sanitycheck build_only option can be confusing
* :github:`4772` - doc: add contributing info about shippable failures
* :github:`4777` - need a testcase for version number of the kernel and version.h
* :github:`4779` - net: tcp: FIN isn't sent when performing active close.
* :github:`4826` - Bluetooth IPSP example does not reach main() on qemu_cortex_m3
* :github:`4828` - device tree: Introduce bus objects (i2c-device)
* :github:`4851` - cmake does not show verbose output of build tools
* :github:`4885` - cmake: IS_TEST guessing gets thrown off by symlinks
* :github:`4924` - dumb_http_server pollutes the source directory
* :github:`4934` - net: 15.4 network interfaces use incorrect MTU setting of 127
* :github:`4941` - LwM2M: support discovery other than '/'
* :github:`4983` - ARMv8-M basic support
* :github:`4989` - Bluetooth: PTS fails to connect to Zephyr
* :github:`5010` - changes to included linker scripts are not picked up by the build system
* :github:`5017` - Genuino/Arduino 101 Sensor Sample BMI160: Gyro Device not found
* :github:`5091` - MPU fault at drivers/flash/soc_flash_nrf5.c:493 with NFFS enabled on nrf52840_pca10056
* :github:`5101` - LwM2M: device hang after requesting a firmware update to a loopback device IP
* :github:`5109` - yaml: fix key/value syntax to 'mapping' instead of 'series'
* :github:`5130` - include guards missing in toolchain/gcc.h and toolchain/common.h
* :github:`5136` - "Distinguishing Features" section in docs is outdated and needs an update
* :github:`5143` - Cmake ignores setting CONFIG_ETH_MCUX_0=n in prj.conf
* :github:`5148` - Lightweight flash storage layer
* :github:`5162` - Reduce duplication in UUID definitions?
* :github:`5184` - kernel system call handlers missing due to -Wl,--no-whole-archive
* :github:`5221` - Build doesn't fail if total RAM usage is greater than the RAM available on the board
* :github:`5226` - Compiling with -O0 causes the kobject text area to exceed the limit (linker error)
* :github:`5228` - The build fails when building echo_server with nrf52840_pca10056
* :github:`5240` - I2C is enabled by default on ESP32
* :github:`5247` - Object tracing test case fails in NRF boards
* :github:`5256` - _nano_tick_delta, sys_tick_delta, sys_tick_delta_32: not used or tested
* :github:`5270` - Not all IEEE802154_MCR20A_RAW references were removed
* :github:`5282` - net: IPv6 DAD is incorrect, wouldn't work ("always succeed") on mcast medium like Ethernet
* :github:`5283` - reference to non-existing functions in arch/x86/core/intstub.S
* :github:`5305` - flash: use generated FLASH_WRITE_BLOCK_SIZE in flash_stm32_api
* :github:`5317` - IPSP deadlock during disconnect -> net_if_down
* :github:`5326` - IPSP ping fails
* :github:`5328` - build system should try and create conf if not found for non-zephyr SDK
* :github:`5334` - CMake: Ninja support is broken
* :github:`5345` - Cmake: ext: Header file include error: No such file or directory
* :github:`5348` - rom_report is broken for some environments
* :github:`5351` - Some libraries should automatically be linked with 'app'
* :github:`5355` - qemu_x86/qemu_x86_nommu hangs on big executable files
* :github:`5370` - [Coverity CID: 180699] Error handling issues in /tests/bluetooth/tester/src/gatt.c
* :github:`5374` - merge_config.sh can behave differently from merge_config.py
* :github:`5379` - sample: net/socket/http_get: no printf output
* :github:`5382` - P2P Device Firmware Update (FOTA) over BLE and Serial
* :github:`5391` - drivers: stm32 clock control: F0 Series with PREDIV1 Support uses wrong PLLSOURCE define for HSI clock
* :github:`5401` - delta_ticks_from_prev become negative and waiting tasks never scheduled
* :github:`5406` - UART1 on STM32F0 Series not working: errors in makro to enable clock
* :github:`5418` - Provide a python based replacement for gperf
* :github:`5419` - Provide a python based kconfig processing script, replacement for conf/mconf..
* :github:`5428` - can not build for esp32
* :github:`5444` - bluetooth controller fails when building with -Wshadow
* :github:`5448` - STM32: Entropy test could not build
* :github:`5449` - STM32: provide default configuration for entropy sample
* :github:`5453` - gitlint should allow tabs in commit messages
* :github:`5458` - [ESP32] Make error
* :github:`5466` - sanitycheck: "CMake Error: : System Error: File name too long"
* :github:`5467` - NFFS file system does no build when newlib libc is used
* :github:`5471` - cmake errors at -B containing @
* :github:`5476` - Native port (posix) to write own PID into a file
* :github:`5477` - Native port (posix) to support receiving signals
* :github:`5483` - Native port (POSIX) should accept command-line arguments
* :github:`5484` - net: ARP/ND: Possibility for deadlocks and DoS
* :github:`5486` - Bluetooth: Cannot connect to prevoiusly disconnected device when BT_PRIVACY is enabled
* :github:`5488` - target_ld_options will apply flags that should be skipped
* :github:`5493` - NFFS does not work with STM32L4 devices due to flash restrictions
* :github:`5497` - cmake: allow to link external libraries with --whole-archive
* :github:`5499` - config BT_CTLR_DEBUG_PINS
* :github:`5504` - net: Incorrect logic for TCP "ackerr" statistics
* :github:`5530` - [Coverity CID: 181848] Null pointer dereferences in /subsys/bluetooth/host/mesh/access.c
* :github:`5531` - [Coverity CID: 181847] Incorrect expression in /samples/drivers/crypto/src/main.c
* :github:`5539` - tests/kernel/fatal/stack-sentinel fails when asserts are enabled
* :github:`5546` - (Stupid) questions about coverage reports
* :github:`5548` - coverage should be collected from code built with -O0
* :github:`5557` - Cloning Zephyr with git's core.autocrlf=true leads to obscure errors
* :github:`5565` - net: Kconfig: NET_BUF_LOG and NET_BUF_SIMPLE_LOG unrightly select STDOUT_CONSOLE
* :github:`5566` - kconfig: STDOUT_CONSOLE unrightly stuffed under subsys/debug
* :github:`5576` - None of the :github:'XYZ' links work in the 1.10 release notes
* :github:`5589` - Issue with using generic gcc cross compile with cmake
* :github:`5601` - docs for cc3220sf_launchxl are out of date/incorrect
* :github:`5608` - Bluetooth LE continuous scan weird behaviour
* :github:`5619` - zephyr.git/tests/misc/test_build/testcase.yaml#test_newlib @ esp32:xtensa BUILD failed
* :github:`5626` - Building samples failed
* :github:`5640` - MacOS compile error with -std=gnu89
* :github:`5645` - build failures with asserts enabled/newlib: arch/arm/core/cortex_m/mpu/nxp_mpu.c
* :github:`5646` - userbuffer_validate test fails with double fault if CONFIG_USERSPACE disabled
* :github:`5650` - i2c driver test on ESP32 fails with error
* :github:`5651` - [In Progress] arch: arm: linkder: vt must be linked at address 0x00000000 for Cortex-M0
* :github:`5660` - doc: make: make htmldocs fails in genrest.py/kconfiglib.py
* :github:`5673` - kconfig regression: Existing configuration is overwritten on reconfiguration
* :github:`5687` - docs: Confusing treatment of "Sensor Drivers" in Zephyr subsystem docs
* :github:`5692` - sensors: struct sensor_value::val2 is confusingly defined
* :github:`5693` - sensors: SENSOR_CHAN_HUMIDITY confusingly defined in "milli percent", SENSOR_CHAN_DISTANCE inconsistently defined in millimeters
* :github:`5696` - net_app: Static vs DHCPv4 behavior appears to be not as described
* :github:`5699` - Zephyr installs a broken pyOCD
* :github:`5717` - CONTRIBUTING instructions are Linux-specific and don't work for Windows
* :github:`5719` - need a zephyr-env.sh equivalent for Windows developers
* :github:`5720` - Add CONFIG_NOOPTIMIZATIONS option
* :github:`5722` - dts board configuration is incompatible with "build all" kind of test
* :github:`5724` - [Windows] Instructions for setting up a bash-less environment uses bashisms
* :github:`5726` - CI should use the same generator as the sanitycheck default
* :github:`5737` - [Coverity CID: 182195] Error handling issues in /subsys/fs/fcb/fcb_walk.c
* :github:`5740` - [Coverity CID: 181923] Incorrect expression in /subsys/bluetooth/controller/ll_sw/ctrl.c
* :github:`5741` - [Coverity CID: 181922] Incorrect expression in /subsys/bluetooth/controller/ll_sw/ctrl.c
* :github:`5743` - Windows and Linux are writing .config files with options re-ordered
* :github:`5749` - Exception and Interrupt vector forwarding
* :github:`5753` - Bluetooth: controller: In nRF5 radio. c RATEBOOST event not cleared in ISRs
* :github:`5755` - Support flash in jlink runner
* :github:`5756` - MCUboot-compatible builds in Zephyr
* :github:`5760` - doc: device.h defines device_power_management_api group twice
* :github:`5761` - NRF5 BLE radio driver: PPI18 is cleared unconditionally
* :github:`5762` - Windows 10 WSL does not supports Native POSIX Boards
* :github:`5766` - boards: nucleo_f413zh: Likely outdated OpenOCD info in docs
* :github:`5771` - Linking issues with host cross compile with cmake
* :github:`5772` - sanitycheck crashes if ZEPHYR_BASE has symlinks in its path
* :github:`5778` - Add/fix flash controller nodes for NXP kinetis SoCs
* :github:`5779` - bluetooth test_controller_4_0 fails to build on nrf52840_pca10056
* :github:`5784` - make rom_report fails for qemu_x86 (not finding zephyr.bin)
* :github:`5794` - wiki/Development-Model is out of date
* :github:`5808` - msys2 getting started instructions are missing Ninja install step
* :github:`5817` - socket.h: Using #define for POSIX redefinition of zsock\_ functions has unintended consequences
* :github:`5821` - [MSYS2] Unable to build Zephyr
* :github:`5823` - Bluetooth: Collision during Start Encryption procedure
* :github:`5836` - spi: stm32: convert remaining boards that support SPI to using dts
* :github:`5853` - Using newlibc in a project breaks 'rom_report' and 'ram_report' targets.
* :github:`5866` - ram_report not working for qemu targets
* :github:`5877` - sensors: Cleanup Kconfig for address, driver & bus name
* :github:`5881` - enabling THREAD_MONITOR causes tests to fail
* :github:`5886` - [Coverity CID: 182602] Integer handling issues in /drivers/interrupt_controller/system_apic.c
* :github:`5887` - [Coverity CID: 182597] Control flow issues in /drivers/sensor/vl53l0x/vl53l0x.c
* :github:`5888` - [Coverity CID: 182594] Control flow issues in /drivers/sensor/lsm6ds0/lsm6ds0.c
* :github:`5889` - [Coverity CID: 182593] Control flow issues in /drivers/sensor/vl53l0x/vl53l0x.c
* :github:`5890` - [Coverity CID: 182588] Integer handling issues in /drivers/sensor/hts221/hts221.c
* :github:`5903` - Code coverage reports seem wrong
* :github:`5919` - Remove obsolete FLASH_DRIVER_NAME
* :github:`5938` - Incorrectly reported coverage changes
* :github:`5952` - API k_delayed_work_submit_to_queue() make a delayed_work unusable
* :github:`5958` - "Ninja flash" swallows user prompts
* :github:`5968` - datastructure for LIFO
* :github:`5982` - nRF5x  subscribe will cause HardFault while disconnect and reconnect
* :github:`5989` - workstation setup instructions are broken for Fedora
* :github:`5992` - doc: Discrepancy in Zephyr memory domain API documentation
* :github:`5994` - samples/bluetooth/ipsp: build failed for MICRO-BIT & NRF51-PCA10028 HW
* :github:`5996` - Need a "ps aux" like command to list all running threads and their attributes
* :github:`6010` - Removal of old HTTP API is causing errors and faults
* :github:`6013` - updated workstations setup breaks FC27
* :github:`6023` - Bluetooth: Invalid behaviour of Transport Layer after Incomplete timer expiration
* :github:`6025` - mbedTLS: Buffer overflow security issue, requires upgrade to 2.7.0
* :github:`6050` - IPSP sample failed: Cannot bind IPv6 mcast (-2)
* :github:`6062` - build failure in tests/boards/altera_max10/i2c_master with sys log enabled
* :github:`6064` - k_is_in_isr() returns false inside "direct" interrupts on several arches
* :github:`6081` - echo server crash from corrupt ICMPv4 packet
* :github:`6083` - Bluetooth: Regression in MESH tests
* :github:`6091` - [Coverity CID: 182780] Error handling issues in /samples/net/sockets/http_get/src/http_get.c
* :github:`6092` - [Coverity CID: 182779] Memory - corruptions in /drivers/flash/soc_flash_nios2_qspi.c
* :github:`6102` - [Coverity CID: 182769] Error handling issues in /subsys/bluetooth/host/mesh/beacon.c
* :github:`6121` - doc: unit tests documentation refers to non existing sample code
* :github:`6127` - net: Semantics of CONFIG_NET_BUF_POOL_USAGE changed (incorrectly)
* :github:`6131` - mbedtls: Name of config-mini-tls1_2.h contradicts description
* :github:`6135` - build error with gcc 7.3
* :github:`6164` - timer: cortex_m: Incorrect read of clock cycles counter after idle tickless period
* :github:`6185` - [MSYS2] Unable to build hello_world sample
* :github:`6194` - K64F ethernet regression since f7ec62eb
* :github:`6197` - echo server crash from corrupt ICMPv6 packet
* :github:`6204` - bluetooth controller: crc init is not random
* :github:`6217` - echo server crash from corrupt ICMPv6 NS packet
* :github:`6229` - Bluetooth, nRF51: ticker_success_assert during flash erase
* :github:`6231` - samples/bluetooth/eddystone: failed to connect with central device
* :github:`6232` - samples/bluetooth/central_hr: Run time HARD fault occurs
* :github:`6233` - samples/bluetooth/central: Run time HARD fault occurs
* :github:`6235` - echo server crash from ICMPv6 NS source link layer address anomaly
* :github:`6238` - spi: stm32f0 IRQ priority is invalid
* :github:`6240` - "Previous execution" and "Next execution" display problem.
* :github:`6257` - test, please ignore
* :github:`6261` - [Coverity CID: 182887] Control flow issues in /drivers/gpio/gpio_esp32.c
* :github:`6263` - ARC: Implement userspace
* :github:`6264` - ARM: Implement Userspace
* :github:`6279` - Add doc to samples/bluetooth/mesh & samples/bluetooth/mesh_demo
* :github:`6284` - docs.zephyrproject.org should be served with HTTPS
* :github:`6309` - Non-blocking BSD sockets not working as expected
* :github:`6312` - The shell sample does not working on k64f board
* :github:`6315` - echo server crash from malformed ICMPv6 NA
* :github:`6322` - shell crashes when enter is pressed
* :github:`6323` - "SPI master port SPI_1 not found* when porting spi ethernet device enc28j60 on stm32_min_dev board
* :github:`6324` - doc: Project coding standards: page not found
* :github:`6333` - How do I implement GPIO on the f429zi board?
* :github:`6339` - samples/drivers/gpio Sample doesn't work on ESP32 after SMP support was added
* :github:`6346` - ESP-32 preemption regressions with asm2
* :github:`6382` - echo server: crash from unsolicited RA reachable time anomaly
* :github:`6393` - echo server: crash from NS flood
* :github:`6429` - How to add custom driver subdirectory to application project?
* :github:`6432` - daily doc build pages don't indicate their version
* :github:`6439` - ESP32 doesn't compile in master
* :github:`6444` - tests/kernel/mem_protect/obj_validation/ fails to build
* :github:`6455` - k_sleep() fails on ESP32 sometimes
* :github:`6469` - tests/crypto/ecc_dsa results in FATAL EXCEPTION on esp32
* :github:`6470` - tests/crypto/ecc_dh results in FATAL EXCEPTION on esp32
* :github:`6471` - tests/crypto/aes results in Assertion failure on esp32
* :github:`6472` - tests/crypto/sha256 results in Assertion failure on esp32
* :github:`6505` - Userspace support: stack corruption for ARC em7d v2.3

---

### Doc Releases Release Notes 1.12 (`doc/releases/release-notes-1.12.rst`)

:orphan:

.. _zephyr_1.12:

Zephyr Kernel 1.12.0
####################

We are pleased to announce the release of Zephyr kernel version 1.12.0.

Major enhancements with this release include:

- Asymmetric multiprocessing (AMP) via integration of OpenAMP
- Persistent storage support for Bluetooth Low Energy including Mesh
- 802.1Q - Virtual Local Area Network (VLAN) traffic on an Ethernet network
- Support multiple concurrent filesystem devices, partitions, and FS types
- Ethernet network management interface
- Networking traffic prioritization on a per-connection basis
- Support for Ethernet statistical counters
- Support for TAP net device on the native POSIX port
- Command-line Zephyr meta-tool "west"
- SPI slave support
- Runtime non-volatile configuration data storage system (settings)


The following sections provide detailed lists of changes by component.

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

* A suitably sized k_malloc() request can result in a smaller than
  requested buffer.  Use of that buffer could result in writes to
  unallocated memory.  Proper overflow checks were added to fix this
  issue in k_malloc and k_calloc.

  * kernel: mempool: Check for overflow in k_malloc()
  * kernel: mempool: Always check for overflow in k_calloc()
  * tests: mempool: Add overflow checks

Kernel
******

* Added k_thread_foreach API
* kernel/sched: Fix preemption logic
* kernel/sched: Fix SMP scheduling
* kernel/sched: Don't preempt cooperative threads
* kernel: Scheduler rewrite
* kernel: Fix sloppy wait queue API
* kernel/mempool: Handle transient failure condition
* kernel: handle early entropy issues
* kernel: Earliest-deadline-first scheduling policy
* kernel: Add "meta IRQ" thread priorities
* kernel: introduce initial stack randomization
* k_poll: expose to user mode
* k_queue: allow user mode access via allocators
* mempool: add API for malloc semantics
* userspace: add support for dynamic kernel objects

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

* arch: arc: refactor the arc stack check support
* arch: arc: add the support of STACK_SENTINEL
* arch: arc: optimize the _SysFatalErrorHandler
* arch: arc: bug fixes in irq_load
* arch: arc: bug fixes and optimization in exception handling
* arch: arm: Fix zero interrupt latency priority level
* arch: arm: refactor default _FaultDump to provide fatal error code
* arch: arm: Define & implement API for test target (Non-Secure)
* arch: arm: thread built-in stack guard implementation
* arch: arm: lpc: Added support for Cortex-M0+ on lpc54114 soc
* arch: arm: Secure fault handling for Cortex-M23
* arch: arm: SecureFault Handling for Cortex-M33A
* arch: arm: Change method of __swap processing
* arm_mpu: reduce boot MPU regions for various soc
* arm: userspace: fix initial user sp location
* arm: userspace: Rework system call arguments
* arm: syscalls: fix some register issues
* dts: nios2-qemu: add device tree support
* dts: nios2f: Add device tree support
* dts: x86: derive RAM and ROM size from dts instead of Kconfig
* dts: xtensa: Add device tree support for xtensa
* newlib: fix heap user mode access for MPU devices
* nxp_imx/mcimx7_m4: Added support for i.MX7 Cortex M4 core
* x86: minnowboard: Enable the userspace mode
* arch: x86: Unwind the stack on fatal errors
* xtensa: provide XCC compiler support for Xtensa

Boards
******

* Added support for the following Arm boards:

  * 96b_argonkey
  * adafruit_feather_m0_basic_proto
  * colibri_imx7d_m4
  * dragino_lsn50
  * lpcxpresso54114_m0
  * nrf51_ble400
  * nrf52_pca20020
  * nucleo_f070rb
  * nucleo_f446re
  * nucleo_l053r8
  * nucleo_l073rzA
  * olimex_stm32_h407
  * stm32f0_disco

* Added support for the following RISC-V boards:

  * hifive1

* Added support for the following Xtensa boards:

  * intel_s1000_crb

* arc: Added device tree support for all ARC SoCs
* arm: Renamed lpcxpresso54114 to lpcxpresso54114_m4
* nios2: Added device tree support for qemu_nios2 and altera_max10
* Continued adding dts support for device drivers (gpio, spi, i2c, sensors, usb)

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

* can: Added CAN driver support for STM32 SoCs
* display: Added ILI9340 LCD display driver
* dma: Added dma driver for Nios-II MSGDMA core
* dma: Introduce Intel CAVS DMA
* ethernet: Added ethernet driver for native posix arch
* gpio: Added support for i.MX GPIO
* gpio: Added driver for SX1509B
* gpio: Added GPIO for SAM family
* gpio: Added GPIO driver for stm32l0x
* i2s: Introduce CAVS I2S
* ieee802154: Added OpenThread modifications to KW41Z driver
* interrupts: introduce CAVS interrupt logic
* interrupts: Introduce Designware interrupt controller
* ipm: Added mcux ipm driver for LPC SoCs
* led: Added new public API and driver support for TI LP3943
* pinmux: Added pinmux driver for stm32l0x
* rtc: Added mcux RTC driver for Kinetis SoCs
* sensor: Added sensorhub support to lsm6dsl driver
* sensor: Added trigger support to lsm6dsl
* serial: Added support for i.MX UART interface
* spi: Added shims for nrfx SPIS and SPIM drivers
* spi: Updated mcux shim driver to new SPI API
* spi: Updated sensor and radio drivers to new SPI API
* usb: Added usb device driver for Kinetis USBFSOTG controller
* usb: Added usb support for stml072/73, stm32f070/72
* usb: Enable usb2.0 on intel_s1000
* usb: Added nRF52840 USB Device Controller Driver
* watchdog: Added mcux watchdog driver for Kinetis SoCs
* watchdog: Added nrfx watchdog driver for NRF SoCs
* wifi: Added winc1500 WiFi driver

Networking
**********

* Minimal server side websocket support.
* Add network support to syslog.
* Reducing net_pkt RAM usage.
* TCP code refactoring. TCP code is now in one place in tcp.c
* Support MSG_DONTWAIT and MSG_PEEK in recvfrom() socket call.
* Support MSG_DONTWAIT in sendto() socket call.
* Add support for freeaddrinfo() API.
* Allow empty service in getaddrinfo() API.
* Add PRIORITY support to net_context. This is working same way as SO_PRIORITY
  in BSD sockets API.
* Add network traffic classification support to Rx and Tx paths. This allows
  prioritization of incoming or outgoing network traffic. Both Rx and Tx can
  have max 8 network queues.
* Add network interface up/down command to net-shell.
* Create ethernet driver for native_posix board. The driver is enabled
  automatically if networking is active when compiling for native_posix board.
* Support network packet checksum calculation offloading. This is available for
  ethernet based boards.
* Add support for ethernet virtual LANs (VLAN). Following ethernet drivers
  support VLANs: frdm_k64f, sam_e70_explained, native_posix and qemu.
* Allow network statistics collection / network interface.
* Add network management support to ethernet sub-system.
* Add network capabilities support to ethernet network drivers. This is used
  for management purposes.
* Allow collection of ethernet statistics. Currently only native_posix ethernet
  driver supports this.
* Add OpenThread support for KW41Z driver.
* Add initial WiFi management API definitions.
* Add a shell module for controlling WiFi devices.
* Add dedicated net mgmt hooks for WiFi offload devices.
* Use proper IPv4 source address when sending IPv4 packets.
* Add support for energy detection scan on IEEE 802.15.4 driver API.
* Add support for filtering source short IEEE 802.15.4 addresses.
* Add RPL border router sample application.
* LWM2M code refactoring.
* LWM2M OPTIONAL resource fixes.
* LWM2M source port fixes.
* LWM2M resource usage enhancements.
* Fixing network management event ordering.
* Fix ENC28J70 ethernet driver.
* CoAP sample application fixes.
* Network timeout fixes.
* ICMPv6 error check fixes.
* Net-app API port number fixes.
* WPAN USB driver and sample application fixes.
* BSD socket sample application fixes.
* Fix IPv4 echo-request (ping) in net-shell when having multiple network
  interfaces.
* Fixing IPv6 compile error in certain configuration.

Bluetooth
*********

* settings-based persistent storage functionality for BLE (including CCC) and
  Mesh
* Mesh-specific optimizations to avoid flash wear
* Added a new API to set the identity address from the application
* Old bt_storage API removed from the codebase
* Rewrote the HCI SPI driver to comply with the new API
* Added BLE support for the standard entropy driver via an ISR-friendly call
* Multiple BLE Mesh bugfixes and improvements
* Added option to use the identity address for advertising even when using
  privacy
* Added support for L2CAP dynamically allocated PSM values
* GATT CCC handling fixes
* GATT attribute declaration macros reworked for clarity
* Fixed handlng of connection cancellation in the controller
* Fixed a potential assertion failure in the controller related to white list
  handling

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

* build: use git version and hash for boot banner
* kconfig: Drop support for CONFIG_TOOLCHAIN_VARIANT
* kconfig: Remove the C Kconfig implementation
* scripts: kconfig: Add a Python menuconfig implementation
* scripts: west: introduce common runner configuration
* scripts: debug, debugserver and flash scripts for intel_s1000
* xtensa: provide XCC compiler support for Xtensa

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

* subsys/disk: Added support for multiple disk interfaces
* subsys/fs: Added support for multiple instances of filesystem
* subsys/fs: Added Virtual File system Switch (VFS) support
* lib/posix: Added POSIX Mutex support
* lib/posix: Added POSIX semaphore support
* crypto: Updated mbedTLS to 2.9.0
* Imported libmetal and OpenAMP for IPC

HALs
****

* altera: Add modular Scatter-Gather DMA HAL driver
* atmel: Added winc1500 driver from Atmel
* cmsis: Update ARM CMSIS headers to version 5.3.0
* nordic: Import SVD files for nRF5 SoCs
* nordic: Update nrfx to version 1.0.0
* nxp: imported i.MX7 FreeRTOS HAL
* nxp: Added dual core startup code for lpc54114 based on mcux 2.3.0
* stm32l0x: Add HAL for the STM32L0x series

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

* Added description for kernel test cases through extensive doxygen comments
* Discovered some API docs were missing, and fixed
* Documentation added covering system calls and userspace, kernel, and
  threading APIs, POSIX compatibility, VLANs, network traffic
  classification, and the sanitycheck script used by CI.
* Documented writing guidelines and local doc generation process
* Improved Sphinx search results output (removed markup)
* Improved configuration options auto-generated documentation
* Significantly reduced local doc regeneration time

Tests and Samples
*****************
* Added test for POSIX mutex
* Added Apple iBeacon sample application
* Enhanced threads test suite
* Added tests for memory domain

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

These GitHub issues were closed since the previous 1.11.0 tagged release:

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`1420` - LXR for Zephyr
* :github:`1582` - USB: Add support for MS OS Descriptors
* :github:`1620` - BT 4.2 Controller-based link-layer privacy
* :github:`1651` - ARC: remove tickless idle dependency on SW ISR table
* :github:`1655` - clean up how internal APIs are used
* :github:`1799` - Provide an interface for cpu/soc id and version
* :github:`1882` - SMP - Multi-core
* :github:`1896` - Thread Protocol
* :github:`2001` - Add support in I2C shim driver for DMA transfer mode
* :github:`2002` - Add support in SPI shim driver for DMA transfer mode
* :github:`2341` - Thread requirements in RFC1122
* :github:`2342` - Thread requirements in RFC2460
* :github:`2343` - Thread requirements in RFC4291
* :github:`2344` - Thread requirements in RFC4443
* :github:`2345` - Thread requirements in RFC4944
* :github:`2346` - Thread Requirements on RFC6282
* :github:`2360` - Review ALL device driver APIs and enhance them to support variety of devices and MCUs
* :github:`2410` - Create APIs for app to create and mount FS
* :github:`2446` - Different address used for advertising in non-connectable mode from oob data
* :github:`2452` - Add framework for provisioning-style device configuration
* :github:`2529` - GPIO API Update
* :github:`2593` - Consider subdividing applications into different categories
* :github:`2613` - Extend USB stack so it covers multiple device classes switchable on runtime
* :github:`2654` - Encoding/Decoding Libraries
* :github:`2860` - Customer: GUI for Zephyr configuration
* :github:`2916` - event logger: context switch event is not supported at ARC
* :github:`2977` - Install nSIM on CI machines
* :github:`2978` - Add Support for Multiple Simultaneous Backends/Partitions for FS
* :github:`2987` - Add support for computing IP, TCP, UDP checksums in hardware
* :github:`3065` -  Asymmetric multiprocessing (AMP)
* :github:`3152` - Support Atmel WINC1500 Wifi module
* :github:`3167` - consolidate all quark se c1000 arc boards into one
* :github:`3234` - 802.1Q - Virtual LANs
* :github:`3282` - Quick Kernel Resume
* :github:`3339` - IoTivity Import and Interoperability with CoAP and DTLS
* :github:`3348` - Missing board documentation for arc/quark_se_c1000_ss_devboard
* :github:`3369` - BSD Sockets API layer
* :github:`3373` - Atmel board/ Driver Support
* :github:`3384` - DataReady triggers failed to stop on BMI160 when both Accel/Gyro is enabled
* :github:`3388` - Power management-Idle State
* :github:`3389` - Power management-Device State
* :github:`3433` - Nordic SPI driver
* :github:`3471` - Espressif ESP Architecture Support
* :github:`3479` - Implement complete set of stm32cube driver based on LL API for STM32 SoCs
* :github:`3482` - Standardize stm32 SoCs porting
* :github:`3500` - ESP8266 Architecture Configuration
* :github:`3516` - Arduino 101 filesystem fails test
* :github:`3624` - Memory protection: define allocators for kernel objects
* :github:`3637` - Xtensa build is producing huge zephyr.bin
* :github:`3650` - no board target for Risc-V Freedom E310 SOC
* :github:`3703` - Doesn't compile if XCHAL_HAVE_ICACHE_DYN_WAYS and XCHAL_HAVE_DCACHE_DYN_WAYS are defined for an Xtensa processor
* :github:`3711` - RPL root node Grounded flag should be followed by client node
* :github:`3739` - linker: implement MPU alignment constraints
* :github:`3744` - Improve configuration tools for Windows developers
* :github:`3782` - SPI Slave support
* :github:`3819` - Add 802.15.4 Sub-Ghz TI CC1200 driver
* :github:`3824` - Add RPL border router functionality to Zephyr
* :github:`3849` - Reduce the overall memory usage of the LwM2M library
* :github:`3869` - Verify thath echo_server and echo_client examples work over Thread network
* :github:`3910` - IEEE 802.15.4 MCR20A driver problem sending packets
* :github:`3994` - Watchdog API update
* :github:`4012` - echo_server with DTLS drops lots of packets on frdm_k64f
* :github:`4052` - Coverity issue seen with CID: 177217 , in file: /tests/subsys/dfu/img_util/src/main.c
* :github:`4053` - Coverity issue seen with CID: 177216 , in file: /tests/subsys/dfu/mcuboot/src/main.c
* :github:`4066` - Function typedef issue when generating htmldocs.
* :github:`4213` - samples/net/: unexpected communication happens between echo_client and echo_server sample applications
* :github:`4217` - samples:net:sockets:echo_async : unexpected communication blocks between client and server after few packets transmission
* :github:`4309` - xtensa: GDB: Unable to debug
* :github:`4533` - IPv6/DAD: Things should be synchronized around net if up status and ipv6 addr add
* :github:`4684` - mtls and tinycrypt crypto drivers not returning number of bytes written to output buffer
* :github:`4713` - SPI: Update drivers to drop support of the legacy API
* :github:`4959` - Failure to install on Mac OS High Sierra (return of the same error)
* :github:`4963` - Convert NIOS2 boards to device tree
* :github:`4964` - Convert ARC boards to device tree
* :github:`5149` - Runtime non-volatile configuration system
* :github:`5254` - missing test for kernel event logger
* :github:`5274` - Issue with pinmux combination for FRDK-K64F setup for cc2520
* :github:`5327` - 1.11 Release Checklist
* :github:`5344` - samples/net/http_client: unable to send the proper http request to Apache server  in IPv6
* :github:`5482` - net: RFC: Move TCP-related code from net_context.c to tcp.c
* :github:`5554` - Support maintaining subsystems out-of-tree
* :github:`5577` - Document interaction between mcuboot and Zephyr
* :github:`5622` - Use the kconfiglib in scripts/kconfig for generating Kconfig documentation
* :github:`5633` - Optimize the CMake configuration time by reducing the time spent testing the toolchain
* :github:`5653` - STM32 boards: Generic guidelines for pin configuration
* :github:`5658` - Clicking on intra-page links broken on docs.zephyrproject.org
* :github:`5714` - 15.4 features required for OpenThread certification
* :github:`5718` - sanitycheck doesn't work on Windows (mkfifo not supported)
* :github:`5738` - [Coverity CID: 182194] Control flow issues in /subsys/storage/flash_map/flash_map.c
* :github:`5739` - [Coverity CID: 182193] Control flow issues in /subsys/storage/flash_map/flash_map.c
* :github:`5742` - [Coverity CID: 181921] Incorrect expression in /subsys/bluetooth/controller/ll_sw/ctrl.c
* :github:`5757` - native: fix -T warning while linking
* :github:`5767` - docs: Zephyr OpenOCD documentation is weak/non-existent
* :github:`5797` - SPI subsystem API & features updates
* :github:`5807` - Can't build Arduino_101 on Mac following instructions
* :github:`5839` - SPI API improvements proposals
* :github:`5847` - make menuconfig not supported on Windows
* :github:`5891` - [Coverity CID: 182585] Integer handling issues in /arch/x86/core/thread.c
* :github:`5892` - [Coverity CID: 182584] Integer handling issues in /kernel/sched.c
* :github:`5942` - OT: add framing part to OT build for the radio drivers with dependence on AR flag
* :github:`5953` - Build system: typedef not fit with zephyr type when CONFIG_NEWLIB_LIBC is enabled
* :github:`5956` - samples/net/coap_server: Failed to send response to coap client
* :github:`5978` - "$ ninja kconfig-usage" is out-of-date
* :github:`6007` - native: Add support for TAP net device
* :github:`6022` - Consistent feature dependency checks based on ARMvX-M
* :github:`6029` - doc: Zephyr sphinx/pygments support DTS
* :github:`6038` - Update Zephyr Licensing page
* :github:`6093` - [Coverity CID: 182778] Error handling issues in /samples/net/sockets/dumb_http_server/src/socket_dumb_http.c
* :github:`6094` - [Coverity CID: 182777] Error handling issues in /samples/net/sockets/dumb_http_server/src/socket_dumb_http.c
* :github:`6095` - [Coverity CID: 182776] Uninitialized variables in /tests/net/socket/udp/src/main.c
* :github:`6096` - [Coverity CID: 182775] Error handling issues in /tests/net/socket/udp/src/main.c
* :github:`6097` - [Coverity CID: 182774] Resource leaks in /tests/net/socket/udp/src/main.c
* :github:`6098` - [Coverity CID: 182773] Error handling issues in /samples/net/sockets/http_get/src/http_get.c
* :github:`6099` - [Coverity CID: 182772] Error handling issues in /tests/net/socket/udp/src/main.c
* :github:`6100` - [Coverity CID: 182771] Error handling issues in /samples/net/sockets/dumb_http_server/src/socket_dumb_http.c
* :github:`6101` - [Coverity CID: 182770] Error handling issues in /samples/net/sockets/http_get/src/http_get.c
* :github:`6103` - [Coverity CID: 182768] Error handling issues in /samples/net/sockets/dumb_http_server/src/socket_dumb_http.c
* :github:`6104` - [Coverity CID: 182767] Error handling issues in /tests/net/socket/udp/src/main.c
* :github:`6105` - [Coverity CID: 182766] Uninitialized variables in /tests/net/socket/udp/src/main.c
* :github:`6106` - [Coverity CID: 182765] Error handling issues in /tests/net/socket/udp/src/main.c
* :github:`6107` - [Coverity CID: 182764] Resource leaks in /tests/net/socket/udp/src/main.c
* :github:`6108` - [Coverity CID: 182763] Uninitialized variables in /tests/net/socket/udp/src/main.c
* :github:`6109` - [Coverity CID: 182762] Control flow issues in /subsys/storage/flash_map/flash_map.c
* :github:`6230` - Bluetooth: controller: refactor to use min/max macro
* :github:`6258` - [Coverity CID: 182894] Error handling issues in /samples/net/nats/src/main.c
* :github:`6259` - [Coverity CID: 182892] Various in /tests/ztest/src/ztest.c
* :github:`6260` - [Coverity CID: 182890] Null pointer dereferences in /tests/net/net_pkt/src/main.c
* :github:`6262` - [Coverity CID: 182886] Error handling issues in /subsys/bluetooth/controller/hal/nrf5/ticker.c
* :github:`6287` - runtime allocation of kernel objects
* :github:`6288` - better heap APIs for user mode
* :github:`6307` - Unaligned access in networking code causes unaligned exception on Nucleo-F429ZI
* :github:`6338` - Bluetooth: mesh: Node Identity Advertising issue
* :github:`6342` - echo server: incorrect Ethernet FCS and checksum in echo response when running in QEMU
* :github:`6347` - dhcpv4_client sample on spi_api_rework branch with board olimexino_stm32 does not work well
* :github:`6356` - samples/net/http_server causes an endless loop with wget
* :github:`6370` - I can't find adc name which is f429zi board
* :github:`6372` - ARMv8-M: implement & integrate SecureFault Handling
* :github:`6384` - Native (POSIX) zephyr.exe command line options not documented
* :github:`6388` - entropy_native_posix doesn't follow "entropy" contract and is thus security risk
* :github:`6400` - samples/net/http_client: Failed to connect to samples/net/http_server
* :github:`6413` - net_mgmt.h API event set data structure leads to undesirable behavior
* :github:`6424` - tests/kernel/mem_protect/x86_mmu_api: crashes on Arduino_101
* :github:`6450` - Several devices of same type on same bus - how to address?
* :github:`6511` - simics/qemu_x86_nommu: testscases with CONFIG_BOOT_DELAY !=0 do not boot
* :github:`6513` - arch: arc: the stack_sentinel is not supported in arc
* :github:`6514` - samples/drivers/i2c_fujitsu_fram: Data comparison on data written and data read fails randomly
* :github:`6515` - boards: em_starterkit:  the reset mechanism is not stable
* :github:`6534` - coap-server: Canceling Observation not working
* :github:`6559` - boards with i2c child nodes fail to build on windows
* :github:`6564` - samples/net/echo_client: Failed to connect to samples/net/echo_server for IPV4 test
* :github:`6565` - samples/net/sockets/echo: Failed to connect to samples/net/echo_server for IPV6 test
* :github:`6577` - sam0: SPI CS released too early
* :github:`6583` - samples/net/http_client: Failed to connect to
* :github:`6588` - Traffic prioritization on per-connection basis
* :github:`6594` - usb: replace "unicode" with "utf16le"
* :github:`6611` - Make sanitycheck run on Windows
* :github:`6616` - Non-detected/delayed sanitycheck failures due to ROM/RAM overflow
* :github:`6621` - newlib expects HEAP to be in CONFIG_SRAM_*, on arc there isn't always SRAM
* :github:`6623` - Request to support Application's Kconfig tree
* :github:`6625` - stm32: pwm: PWM 3 typo
* :github:`6635` - tests/net/websocket/test doesnt build on qemu_xtensa
* :github:`6640` - Ethernet network management interface additions
* :github:`6643` - usb: nrf52 returns empty configuration responses
* :github:`6644` - Bluetooth: Add reason parameter to L2CAP Channel disconnected callback
* :github:`6646` - usb: protocol field in descriptor for CDC ACM should default to zero
* :github:`6651` - sanity tries to compile things when it should not
* :github:`6657` - Question: Is Bluetooth avrcp supported in Zephyr? Or any plan?
* :github:`6660` - [Coverity CID: 183072] Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`6661` - [Coverity CID: 183071] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`6662` - [Coverity CID: 183070] Uninitialized variables in /tests/posix/timer/src/posix_timer.c
* :github:`6663` - [Coverity CID: 183068] Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`6665` - [Coverity CID: 183067] Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`6666` - [Coverity CID: 183066] Error handling issues in /tests/kernel/mbox/mbox_api/src/test_mbox_api.c
* :github:`6667` - [Coverity CID: 183065] Integer handling issues in /tests/posix/timer/src/posix_timer.c
* :github:`6668` - [Coverity CID: 183064] Incorrect expression in /tests/kernel/common/src/intmath.c
* :github:`6669` - [Coverity CID: 183063] Null pointer dereferences in /tests/net/websocket/src/server.c
* :github:`6670` - [Coverity CID: 183062] Error handling issues in /samples/net/sockets/big_http_download/src/big_http_download.c
* :github:`6671` - [Coverity CID: 183061] Incorrect expression in /tests/kernel/mem_pool/mem_pool/src/main.c
* :github:`6672` - [Coverity CID: 183060] Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`6674` - [Coverity CID: 183058] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`6675` - [Coverity CID: 183057] Memory - illegal accesses in /subsys/net/lib/websocket/websocket.c
* :github:`6677` - [Coverity CID: 183055] Concurrent data access violations in /kernel/posix/pthread.c
* :github:`6679` - [Coverity CID: 183053] Memory - corruptions in /samples/net/ws_echo_server/src/ws.c
* :github:`6680` - [Coverity CID: 183052] Memory - corruptions in /tests/net/app/src/main.c
* :github:`6682` - [Coverity CID: 183050] Memory - illegal accesses in /subsys/net/lib/websocket/websocket.c
* :github:`6683` - [Coverity CID: 183049] Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`6684` - [Coverity CID: 183048] Program hangs in /tests/posix/pthread_rwlock/src/posix_rwlock.c
* :github:`6685` - [Coverity CID: 183047] Uninitialized variables in /kernel/smp.c
* :github:`6686` - [Coverity CID: 183046] Memory - corruptions in /drivers/console/uart_console.c
* :github:`6687` - [Coverity CID: 183045] Error handling issues in /tests/drivers/spi/spi_loopback/src/spi.c
* :github:`6688` - [Coverity CID: 183044] Memory - corruptions in /tests/net/app/src/main.c
* :github:`6689` - [Coverity CID: 183043] Incorrect expression in /tests/kernel/common/src/intmath.c
* :github:`6690` - [Coverity CID: 183042] Program hangs in /tests/posix/pthread_rwlock/src/posix_rwlock.c
* :github:`6691` - [Coverity CID: 183041] Memory - corruptions in /tests/net/websocket/src/server.c
* :github:`6692` - [Coverity CID: 183040] Incorrect expression in /tests/kernel/static_idt/src/static_idt.c
* :github:`6693` - [Coverity CID: 183039] Error handling issues in /tests/kernel/mem_slab/mslab_threadsafe/src/test_mslab_threadsafe.c
* :github:`6694` - [Coverity CID: 183038] Integer handling issues in /kernel/posix/timer.c
* :github:`6697` - [Coverity CID: 183035] Null pointer dereferences in /tests/net/udp/src/main.c
* :github:`6698` - [Coverity CID: 183034] Error handling issues in /tests/net/websocket/src/main.c
* :github:`6699` - [Coverity CID: 183033] Program hangs in /tests/posix/pthread_rwlock/src/posix_rwlock.c
* :github:`6700` - [Coverity CID: 183032] Error handling issues in /tests/net/websocket/src/main.c
* :github:`6701` - [Coverity CID: 183031] Error handling issues in /tests/posix/semaphore/src/sem.c
* :github:`6702` - [Coverity CID: 183030] Memory - corruptions in /drivers/console/uart_console.c
* :github:`6719` - compilation problems with posix/unistd.h
* :github:`6726` - setting locale breaks MacOS X builds
* :github:`6749` - kconfig: The error message is misleading when values are out-of-range
* :github:`6755` - stm32: Compile error if 2-nd UART console enabled
* :github:`6757` - kernel:the API of k_mem_pool_alloc need try again to -EAGAIN[bug]
* :github:`6759` - sanitycheck in shippable states faillure but reports 0 errors
* :github:`6764` - ARC EMSK dts enhancements
* :github:`6779` - websocket API documentation missing
* :github:`6792` - [Coverity CID: 183443] Memory - corruptions in /subsys/bluetooth/controller/ll_sw/ctrl.c
* :github:`6793` - [Coverity CID: 183442] Null pointer dereferences in /subsys/net/ip/icmpv6.c
* :github:`6802` - unexpected user mode stack overflows on ARM
* :github:`6811` - Add ReST/Sphinx usage guide to our contributing documentation
* :github:`6814` - user mode does not work with newlib
* :github:`6821` - Simplify rendering of Kconfig variable doc
* :github:`6822` - Document how to flash with openocd on windows
* :github:`6831` - Update template docs with build example
* :github:`6833` - Question: BLE 5.0 extended advertising feature support for HCI
* :github:`6844` - Update Kconfiglib to improve generated documentation
* :github:`6849` - Some Kconfig symbols select choice symbols, which is a no-op
* :github:`6851` - 'make html' in doc/ fails with lexer.DtsLexer import error
* :github:`6854` - 'make html' in doc/ gives an error if doc.log is missing or empty
* :github:`6866` - build: requirements: No module named yaml and elftools
* :github:`6874` - Not able to join OpenThread BorderRouter or a ot-ftd-cli network
* :github:`6879` - Display symbols with multiple defs. with the right properties in the Kconfig documentation
* :github:`6881` - [Coverity CID: 183487] Control flow issues in /subsys/net/ip/net_core.c
* :github:`6882` - [Coverity CID: 183486] Null pointer dereferences in /tests/net/traffic_class/src/main.c
* :github:`6883` - [Coverity CID: 183485] Memory - illegal accesses in /subsys/net/ip/net_tc.c
* :github:`6884` - [Coverity CID: 183484] Null pointer dereferences in /tests/net/checksum_offload/src/main.c
* :github:`6885` - [Coverity CID: 183482] Memory - illegal accesses in /subsys/net/ip/net_tc.c
* :github:`6886` - [Coverity CID: 183481] Insecure data handling in /ext/lib/crypto/mbedtls/library/pkparse.c
* :github:`6887` - [Coverity CID: 183480] Null pointer dereferences in /tests/net/checksum_offload/src/main.c
* :github:`6888` - [Coverity CID: 183479] Insecure data handling in /ext/lib/crypto/mbedtls/library/pkparse.c
* :github:`6889` - [Coverity CID: 183478] Error handling issues in /tests/net/ipv6/src/main.c
* :github:`6890` - tests: kernel: arm_irq_vector_table: Usage fault on nrf52_pca10040
* :github:`6891` - jlink flashing is broken in windows
* :github:`6893` - http_client: Struct data is erased for no apparent reason
* :github:`6896` - too many static MPU regions on many ARM targets
* :github:`6897` - Can't build i586 on Mac following instructions
* :github:`6899` - support Ethernet statistical counters
* :github:`6902` - k_call_stacks_analyze needs to be reimplemented and optimized
* :github:`6907` - driver_api structs should have all function pointers defined
* :github:`6908` - shippable: console limit error (Console size exceeds 16 MB limit)
* :github:`6909` - Number of regions in arm_core_mpu_buffer_validate() can overflow
* :github:`6911` - xtools build hard-coded to use IAMCU compiler for all x86 targets
* :github:`6912` - OS X: setup instructions are wrong
* :github:`6929` - Make slab allocator work on user mode
* :github:`6937` - Add option for configuring P0.9 and P0.10 as GPIO
* :github:`6948` - Kconfig choice symbols could not be assigned in Kconfig.* files
* :github:`6957` - NRF52840: I2C, SPI driver
* :github:`6972` - RFC: kernel heap requests on behalf of syscalls
* :github:`6973` - bad magic number in 'kconfiglib' error when generating docs
* :github:`6978` - Fix issues with running Python's curses module on Windows
* :github:`6980` - extended Advertising BLE-5
* :github:`6983` - top level CMakeList.txt test if LINKER_SCRIPT points to existing file
* :github:`6984` - include pthread in app -> compilation failed
* :github:`6988` - test checksum_offload fail on native_posix
* :github:`6992` - extern object declarations interfere with kernel object detection
* :github:`6996` - buffer management issues with k_pipe syscalls
* :github:`6997` - buffer management issues with k_msgq syscalls
* :github:`7009` - LSM6DSL: Isse with spi_config
* :github:`7020` - tests/kernel/smp: Test fails, scheduler schedules the threads on only one core
* :github:`7022` - HTTP Server crashes on native posix
* :github:`7026` - i2c based sensor test cases fails on arc core
* :github:`7032` - Have Sphinx search display txt not ReST as results
* :github:`7033` - tests:fp_sharing: Test takes almost an hour on frdm_k64f
* :github:`7044` - Boot banner not correct for application builds outside of zephyr
* :github:`7050` - tests: sys_mem_pool: Bus fault occurs on ARM boards (frdmk64f and nrf52840_pca10056)
* :github:`7055` - tests: fatal: Stack protection fatal test fails on ARC core
* :github:`7067` - scripts: extract_dts_includes: fails on multiple includes in yaml bindings file
* :github:`7070` - lwm2m: possible buffer overflow in LwM2M engine debug output
* :github:`7073` - Full persistent storage support for Bluetooth
* :github:`7075` - No such file or directory: CMAKE_READELF: 'CMAKE_READELF-NOTFOUND'
* :github:`7076` - NRF52840: I2C Sensor (SHT3XD) driver issue
* :github:`7078` - [Coverity CID: 185286] Error handling issues in /subsys/settings/src/settings_store.c
* :github:`7079` - [Coverity CID: 185285] Error handling issues in /subsys/settings/src/settings_fcb.c
* :github:`7080` - [Coverity CID: 185284] Error handling issues in /subsys/settings/src/settings_fcb.c
* :github:`7081` - [Coverity CID: 185283] Control flow issues in /subsys/fs/nffs_fs.c
* :github:`7082` - [Coverity CID: 185282] Error handling issues in /subsys/settings/src/settings_init.c
* :github:`7083` - [Coverity CID: 185281] Null pointer dereferences in /kernel/posix/mqueue.c
* :github:`7084` - [Coverity CID: 185280] Error handling issues in /tests/posix/pthread_rwlock/src/posix_rwlock.c
* :github:`7085` - [Coverity CID: 185279] Resource leaks in /tests/net/socket/getaddrinfo/src/main.c
* :github:`7086` - [Coverity CID: 185278] Null pointer dereferences in /samples/net/coap_server/src/coap-server.c
* :github:`7087` - [Coverity CID: 185277] Null pointer dereferences in /samples/net/coap_server/src/coap-server.c
* :github:`7088` - [Coverity CID: 185276] Uninitialized variables in /tests/posix/posix_checks/src/posix_checks.c
* :github:`7089` - [Coverity CID: 185275] Integer handling issues in /kernel/posix/pthread_common.c
* :github:`7090` - [Coverity CID: 185274] Error handling issues in /subsys/settings/src/settings_store.c
* :github:`7091` - [Coverity CID: 185273] Resource leaks in /tests/net/socket/getaddrinfo/src/main.c
* :github:`7097` - doc build kconfig warning for XOROSHIRO_RANDOM_GENERATOR
* :github:`7103` - Unpatched upstream vulnerabilities in mbedTLS
* :github:`7107` - Crash while running echo_server with openthread
* :github:`7115` - doc/subsystems/settings/settings.rst references non-existing variables
* :github:`7127` - STM32 ethernet driver crashes without connected cable
* :github:`7128` - msp uninitialized on reset leading to usage fault for non-XIP targets
* :github:`7137` - I2C Driver does not compile for nrf5 boards
* :github:`7144` - SDK Openocd stm32f4discovery.cfg is incorrect for new versions of the STM32F407G-DISC1
* :github:`7146` - scripts/sanitycheck will delete any folder given to --outdir argument
* :github:`7155` - DTS: qemu_x86.dts: Warning (unit_address_format): Node /flash@00001000 unit name should not have leading 0s
* :github:`7159` - Kconfig.defconfig is undocumented and unclear
* :github:`7170` - zassert: Confusing rules and actual usage for messages in zassert_*() calls
* :github:`7172` - Mcr20a initialization crashes with frdm_k64f board
* :github:`7184` - List of supported boards is incorrect when $BOARD_ROOT is set by user.
* :github:`7186` - settings_load() never returns when called
* :github:`7198` - sanitycheck issue w/ztest
* :github:`7200` - Commit 'tests: kernel: mem_protect: tests for userspace mode' breaks scripts/sanitycheck
* :github:`7207` - cmake fails when zephyr is used as submodule
* :github:`7208` - ztest_test_fail() not failing?
* :github:`7219` - printk output with gdbserver?
* :github:`7227` - /subsys/storage/flash_map/flash_map_default.c missing declarations.
* :github:`7236` - Sample Http_Client  is deprecated
* :github:`7245` - EMSK 7d: can't build after 60ec8be309cb84d72c5fc61330abc968eb62333e
* :github:`7246` - esp32 fails to build with xtensa-esp32-elf-gcc: error: unrecognized command line option '-no-pie'
* :github:`7248` - i2c: Seems issue in dts
* :github:`7249` - Arduino 101 / ARC:  tests/kernel/fifo/fifo_api/ fails after 3d9ba10b5c903265d870a9f24065340d93e7d465
* :github:`7254` - [Coverity CID :185402] Code maintainability issues in /drivers/spi/spi_dw.c
* :github:`7255` - [Coverity CID :185401] Integer handling issues in /drivers/spi/spi_mcux_dspi.c
* :github:`7256` - [Coverity CID :185400] Null pointer dereferences in /drivers/spi/spi_dw.c
* :github:`7257` - [Coverity CID :185399] Integer handling issues in /subsys/usb/usb_device.c
* :github:`7258` - [Coverity CID :185398] Memory - corruptions in /samples/net/mbedtls_sslclient/src/mini_client.c
* :github:`7259` - [Coverity CID :185397] Null pointer dereferences in /tests/net/ipv6_fragment/src/main.c
* :github:`7260` - [Coverity CID :185395] Memory - corruptions in /samples/net/mbedtls_sslclient/src/mini_client.c
* :github:`7261` - [Coverity CID :185394] Null pointer dereferences in /subsys/net/ip/l2/ethernet/arp.c
* :github:`7262` - [Coverity CID :185393] Memory - illegal accesses in /drivers/interrupt_controller/plic_fe310.c
* :github:`7263` - [Coverity CID :185392] Null pointer dereferences in /drivers/spi/spi_dw.c
* :github:`7264` - [Coverity CID :185391] Incorrect expression in /tests/lib/rbtree/src/main.c
* :github:`7266` - Zephyr's C Kconfig tools do not support <, <=, >, >=, due to being too old
* :github:`7269` - /samples/net/http_client: Error using https in http_cliente sample
* :github:`7280` - if we have two flash on board?
* :github:`7285` - buffer management issues with k_stack syscalls
* :github:`7287` - Git describe broken with older versions of Git
* :github:`7308` - qemu_xtensa cannot be debugged with SDK
* :github:`7309` - minnowboard DTS is not configured correctly
* :github:`7311` - FCB: CRC write size in append_finish doesn't honor flash min write size
* :github:`7327` - Interrupt stack is not initialized for Xtensa target
* :github:`7329` - is there has anyone who having portting stm32f2?
* :github:`7336` - USB DFU: this area can not be overwritten
* :github:`7340` - DISCUSS: usb_device.c: If condition judgment
* :github:`7342` - samples: net/dns_resolve does not build when activating dhcp
* :github:`7349` - Add STM32L0 USB support
* :github:`7364` - kernel crash: USB ECM: echo_server
* :github:`7365` - net: Regression in multiple client connection handling with samples/net/sockets/dumb_http_server (QEMU/SLIP)
* :github:`7377` - net: Regression in multiple client connection handling with samples/net/sockets/dumb_http_server (frdm_k64f/Ethernet)
* :github:`7378` - TOCTOU in spi_transceive syscall handler
* :github:`7379` - TOCTOU in adc_read() handler
* :github:`7380` - dma_stm32f4x possible access out of bounds in start/stop handlers
* :github:`7388` - nxp_mpu: suspicious ENDADDR_ROUND() macro
* :github:`7389` - t1_adc108s102 buffer overflow due to chan->buf_idx growth
* :github:`7412` - Mismatch between 'uint32_t' (and 'off_t') definitions in minimal libc and newlib
* :github:`7434` - bluetooth: host: sample applications can't set BT address w/o using an FS
* :github:`7437` - Zephyr's mailing list archives were hard to find
* :github:`7442` - menuconfig should perform fuzzy string matching for symbols
* :github:`7447` - net tests: valgrind detected issues
* :github:`7452` - nRF52, NXP kinetis, ARM Beetle and  STM MPU option appear for every MPU-equipped device
* :github:`7453` - Bluetooth mesh message context API needs to expose DST address of RX messages
* :github:`7459` - net: Multiple inconsistent settings to configure TIME_WAIT delay in the IP stack
* :github:`7460` - Unable to view PR #6391
* :github:`7475` - LwM2M: UDP local port setting not obeyed, random port doesn't work
* :github:`7478` - tests: valgrind detected issues
* :github:`7480` - pthread_attr_init( ) does not conform to POSIX specification
* :github:`7482` - [Coverity CID :185523]  Out-of-bounds read in lsm6dsl driver
* :github:`7495` - cmake: extensions: ToolchainCapabilityDatabase.cmake parse error in shippable
* :github:`7500` - DHCP: when CONFIG_NET_APP_MY_IPV4_ADDR is IP stack needs to rebind on DHCP acquire
* :github:`7508` - [Coverity CID :185523] Memory - illegal accesses in /drivers/sensor/lsm6dsl/lsm6dsl.c
* :github:`7511` - [Coverity CID :185391] Incorrect expression in /tests/lib/rbtree/src/main.c
* :github:`7519` - Verify CODEOWNERS (not) including subfolders is intended
* :github:`7521` - Website: git clone instructions refer to old (v1.10.0) tag
* :github:`7536` - tests: kernel.timer: fails on riscv32
* :github:`7541` - arm: struct k_thread->entry is overwritten once the thread is scheduled
* :github:`7565` - zephyr_library_ifdef has unexpected behaviour
* :github:`7569` - test: posix/pthread_rwlock
* :github:`7608` - ARC objdump crash when creating zephyr.lst for one test
* :github:`7610` - tests/lib/c_lib fails on native_posix on FC28
* :github:`7613` - OTA:an issue about OTA/mcumgr
* :github:`7644` - k_mem_slab_free triggers rescheduling even when no threads are pending
* :github:`7651` - nRF5x console broken
* :github:`7655` - Invalid argument passed to k_sleep
* :github:`7656` - Invalid argument passed to k_sleep
* :github:`7657` - Invalid argument passed to k_sleep
* :github:`7661` - LwM2M error: invisible error during registration
* :github:`7663` - Sample ipsp: bluetooth: not functional on disco_l475_iot1
* :github:`7666` - NVS API documentation is missing
* :github:`7671` - NVS broken for write-align > 4
* :github:`7673` - Eliminate recursive make in OpenAMP integration
* :github:`7676` - buildsystem: 'make flash' failed
* :github:`7677` - mcuboot-master imgtool.py sign error
* :github:`7692` - Kernel tests failing at runtime on frdm_k64f
* :github:`7694` - Have RTC binding for QMSI utilize base rtc.yaml
* :github:`7698` - Kernel tests failing at runtime on frdm_kw41z
* :github:`7699` - drivers: i2s: intel_s1000: I2S BCLK cannot be a fraction of reference clock
* :github:`7704` - nrf52_pca10040:tests/bluetooth/init/test_controller_dbg fails build with CONFIG_USERSPACE=y
* :github:`7709` - native_posix: hello_world fails to link on Fedora 28
* :github:`7712` - [Coverity CID :186063] Null pointer dereferences in /subsys/disk/disk_access.c
* :github:`7713` - [Coverity CID :186062] Error handling issues in /samples/net/sockets/big_http_download/src/big_http_download.c
* :github:`7714` - [Coverity CID :186061] Memory - corruptions in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7715` - [Coverity CID :186059] Memory - illegal accesses in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7716` - [Coverity CID :186058] Null pointer dereferences in /tests/kernel/fifo/fifo_timeout/src/main.c
* :github:`7717` - [Coverity CID :186057] Memory - corruptions in /samples/net/rpl_border_router/src/coap.c
* :github:`7718` - [Coverity CID :186056] Null pointer dereferences in /subsys/disk/disk_access.c
* :github:`7719` - [Coverity CID :186055] Memory - corruptions in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7720` - [Coverity CID :186053] Code maintainability issues in /samples/net/rpl_border_router/src/http.c
* :github:`7721` - [Coverity CID :186051] Memory - illegal accesses in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7722` - [Coverity CID :186049] Memory - corruptions in /samples/subsys/mgmt/mcumgr/smp_svr/src/main.c
* :github:`7723` - [Coverity CID :186048] Memory - illegal accesses in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7724` - [Coverity CID :186047] Null pointer dereferences in /tests/net/arp/src/main.c
* :github:`7725` - [Coverity CID :186046] Memory - corruptions in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7726` - [Coverity CID :186045] Null pointer dereferences in /subsys/disk/disk_access.c
* :github:`7727` - [Coverity CID :186044] Memory - illegal accesses in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7728` - [Coverity CID :186043] Incorrect expression in /tests/posix/fs/src/test_fs_dir.c
* :github:`7729` - [Coverity CID :186042] Program hangs in /tests/posix/mutex/src/posix_mutex.c
* :github:`7730` - [Coverity CID :186041] Memory - corruptions in /samples/net/rpl_border_router/src/http.c
* :github:`7731` - [Coverity CID :186040] Resource leaks in /tests/posix/fs/src/test_fs_dir.c
* :github:`7732` - [Coverity CID :186039] Control flow issues in /subsys/net/ip/connection.c
* :github:`7733` - [Coverity CID :186037] Memory - corruptions in /lib/posix/fs.c
* :github:`7734` - [Coverity CID :186036] Memory - corruptions in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7735` - [Coverity CID :186035] Incorrect expression in /drivers/ipm/ipm_mcux.c
* :github:`7736` - [Coverity CID :186034] Memory - corruptions in /tests/net/udp/src/main.c
* :github:`7737` - [Coverity CID :186033] Control flow issues in /subsys/mgmt/smp.c
* :github:`7738` - [Coverity CID :186032] Memory - illegal accesses in /drivers/usb/device/usb_dc_kinetis.c
* :github:`7739` - [Coverity CID :186030] Error handling issues in /subsys/bluetooth/host/settings.c
* :github:`7740` - [Coverity CID :186029] Null pointer dereferences in /subsys/disk/disk_access.c
* :github:`7741` - [Coverity CID :186028] Incorrect expression in /drivers/gpio/gpio_imx.c
* :github:`7742` - [Coverity CID :186027] Null pointer dereferences in /subsys/disk/disk_access.c
* :github:`7753` - security: ARM does not scrub registers when returning from system calls
* :github:`7754` - tests/kernel/threads/lifecycle/thread_init register corruption on ARM with user mode enabled
* :github:`7755` - getchar sample not working on nRF5x
* :github:`7761` - ARM: failed syscalls do not report site of faulting syscall
* :github:`7766` - tests/subsys/fs/fat_fs_api - fat_fs_basic_test hangs in fatfs_mount
* :github:`7776` - possible unaligned memory access to struct _k_object's perms
* :github:`7780` - Using latest Openthread in Zephyr
* :github:`7782` - tests/kernel/mem_protect/stack_random hangs without any console output on frdm_k64f
* :github:`7787` - tests: kernel: smp fatal exception observed on ESP32
* :github:`7789` - Reset sequence broken on nRF5x chips
* :github:`7793` - samples\sensor: bme280 and tmp112 hangs without any console output on quark_se_c1000_devboard
* :github:`7795` - STM32 related Kconfig symbols don't exist anymore or aren't referenced anywhere
* :github:`7797` - subsys/net/ip/Kconfig references NET_L2_OFFLOAD but that doesn't exist
* :github:`7798` - nonexistent Kconfig symbol in defconfig arch/x86/soc/intel_quark/quark_x1000/Kconfig.defconfig.series
* :github:`7799` - nonexistent Kconfig symbol in defconfig boards/x86/quark_se_c1000_devboard/Kconfig.defconfig
* :github:`7802` - Add RTC support for all NXP MCUX platforms
* :github:`7804` - samples/sensor/apds9960 fails with assertion "Fatal fault in essential thread" on quark_se_c1000_ss_devboard
* :github:`7811` - CAVS Interrupt controller - using undefined Kconfig symbols
* :github:`7812` - tests: Crypto tests fail on nrf52 boards after enabling user mode
* :github:`7814` - networking - Cleanup undefined but referenced Kconfig
* :github:`7815` - bluetooth - cleanup undefined Kconfig symbols
* :github:`7819` - build breakage due to enabling USER_SPACE by default
* :github:`7821` - net: Loopback broken: Packets sent locally to loopback address are now dropped
* :github:`7858` - Test for k_thread_foreach() is failing on some boards
* :github:`7862` - rpl_border_router sample bus_faults on frdm_k64f
* :github:`7873` - cc2650_sensortag_defconfig assigned missing Kconfig symbols (now dead code)
* :github:`7877` - tests: kernel/mem_protect/mem_protect is failed on nucleo_f429zi/disco_l475_iot1
* :github:`7882` - tests/dfu/mcuboot.test_bank_erase fails on nrf52840_pca10056
* :github:`7885` - em_starterkit_em7d_v22 failing multiple tests in user mode
* :github:`7891` - tests/posix/timer.test_timer fails on nrf51_pca10028
* :github:`7907` - tests/benchmarks/latency_measure fails on sam_e70_xplained
* :github:`7927` - West runner command doesn't work for em-starterkit
* :github:`7931` - Bluetooth controller nrf52 - connection event status
* :github:`7933` - drivers: can: stm32_can: bitrate ignored
* :github:`7942` - tests: benchmarks: build fail in arm/core/fault.c for frdm_k64f in footprint/min
* :github:`7954` - make flash failing for altera_max10
* :github:`7959` - shell: backspace doesn't work in minicom
* :github:`7972` - Bluetooth: Mesh: adv bearer does not use correct interval
* :github:`7974` - extract_dts_includes: Binding merge warning should be enhanced
* :github:`7979` - drivers: dma: dma_cavs: DMA driver does not support per-channel callbacks
* :github:`7989` - eth: ping: can't ping others from zephyr console
* :github:`8005` - FRDM-K64F boot hang w/ mcuboot + lwm2m client
* :github:`8009` - POSIX clock_gettime() is discontinuous
* :github:`8015` - Driver:spi_flash_w25qxxdv.c init mistake and can not be erased
* :github:`8032` - _SysFatalErrorHandler not working properly for arc on quark_se_c1000_ss_devboard
* :github:`8033` - tests/crypto/mbedtls/ results in exception on frdm_k64f
* :github:`8038` - tests/subsys/settings/fcb system.settings.fcb fails on nrf52
* :github:`8049` - kernel: scheduler tries to make polling threads active
* :github:`8054` - Ethernet initialization is unreliable and gets stuck on frdm-k64f
* :github:`8062` - [Coverity CID :186196] Error handling issues in /samples/sensor/mcp9808/src/main.c
* :github:`8063` - [Coverity CID :186190] Null pointer dereferences in /tests/kernel/fifo/fifo_timeout/src/main.c
* :github:`8064` - arm: multiple MemManage status flags may be set simultaneously
* :github:`8065` - tests/subsys/fs/fat_fs_api - test_fat_file and test_fat_dir results into Assertion failure on Arduino_101 due to spi_flash changes
* :github:`8069` - mem_slab/mslab_threadsafe testcase fails in CI sporadically
* :github:`8070` - table broken in S1000 documentation
* :github:`8073` - Zero Latency IRQ masked by interrupt locking
* :github:`8083` - Bluetooth ATT trying to access invalid pointer after disconnect
* :github:`8085` - tests/subsys/logging/logger-hook crashes on sam_e70_explained
* :github:`8086` - tests/net/ieee802154/crypto fails on Quark SE / x86
* :github:`8087` - tests/misc/test_build fails to build on esp32
* :github:`8088` - tests/kernel/xip fails on QEMU riscv32 with no output
* :github:`8090` - tests/sched/schedule_api fails to build on EMSK7d
* :github:`8092` - tests/kernel/fatal crashes on Quark SE / ARC
* :github:`8093` - tests/kernel/common fails to build on xtensa / ESP32
* :github:`8094` - tests/drivers/watchdog/wdt_basic_api fails to build on esp32 / xtensa
* :github:`8096` - tests/drivers/watchdog/wdt_basic_api fails on Quark SE / ARC with no output
* :github:`8098` - tests/drivers/rtc/rtc_basic_api fails on Quark SE / x86
* :github:`8099` - tests/drivers/rtc/rtc_basic_api assertion failure on Arduino 101 / ARC
* :github:`8111` - kconfiglib warning "quotes recommended around default value for string symbol SOC_SERIES"
* :github:`8117` - tests/kernel/errno crashes on minnowboard
* :github:`8118` - x86 may expose private kernel data to user mode
* :github:`8129` - scheduler: in update_cache() thread from next_up() and _current are the same
* :github:`8132` - stm3210c_eval.dts_compiled: Warning
* :github:`8142` - GPIO API not shown on docs.zephyrproject.org
* :github:`8145` - samples/subsys/usb/dfu: Build failure, Reference to non-existent node or label "slot0_partition"
* :github:`8150` - Doc: Update Zephyr security overview
* :github:`8171` - Tests failing with a stacking error on frdm_k64f
* :github:`8172` - Networking tests failing with an assertion on frdm_k64f
* :github:`8180` - objcopy bug
* :github:`8182` - Problem with obtaining hop_limit from a received packet
* :github:`8189` - lwm2m: Quickly running out of resources when using observe
* :github:`8192` - MPU Fault on some platforms after THREAD_MONITOR "fix"
* :github:`8193` - STM32 config BUILD_OUTPUT_HEX fail
* :github:`8198` - Tests: fifo_timeout fails on nrf51_pca10028
* :github:`8200` - Tests: arm_irq_vector_table: Assertion failure on nrf52840_pca10056
* :github:`8202` - question: is the irq_lock is necessary in console_putchar
* :github:`8213` - Failed test: usb.device.dfu.bank_erase
* :github:`8214` - Failed test: kernel.threads.customdata_get_set_coop
* :github:`8222` - tests/drivers/watchdog/wdt_basic_api crashes on multiple platforms
* :github:`8232` - Failed test: kernel.memory_protection.create_new_essential_thread_from_user
* :github:`8250` - UDP socket may lose data
* :github:`8274` - Make flash doesn't work on nrf51_pca10028
* :github:`8275` - when zephyr can support popular IDE develop?
* :github:`8280` - [Coverity CID :186491] Memory - corruptions in /lib/posix/fs.c
* :github:`8292` - Rework ARC exception stack
* :github:`8298` - Failed test: kernel.alert.isr_alert_consumed (in tests/kernel/alert/) on quark_se_c1000_ss
* :github:`8299` - Failed test: kernel.memory_pool.mpool_alloc_free_isr (in tests/kernel/mem_pool/mem_pool_api)
* :github:`8302` - Failed test: peripheral.adc.adc on quark_se
* :github:`8311` - tests/benchmarks/sys_kernel fails on frdm_k64f, sam_e70

---

### Doc Releases Release Notes 1.13 (`doc/releases/release-notes-1.13.rst`)

:orphan:

.. _zephyr_1.13:

Zephyr Kernel 1.13.0
####################

We are pleased to announce the release of Zephyr kernel version 1.13.0.

Major enhancements with this release include:

* Extensible and Pluggable Tracing Support
* Compartmentalized application memory organization
* Logging System Overhaul
* Introduce system calls for BSD socket APIs
* Support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP)
* Link Layer Discovery Protocol (LLDP) TX support
* Support for TLS and DTLS using BSD socket API
* Support for Link Layer Multicast Name Resolution (LLMNR)
* Introduced reworked ADC API and updated Nordic, NXP, Atmel, and
  Synopsys DesignWare drivers
* Support OS driven Power Management framework
* Basic support for Arm TrustZone in Armv8-M

The following sections provide detailed lists of changes by component.

Kernel
******

* Remove kernel event manager, replaced by generic tracing interface
* Enhanced Timeout and Tick handling in kernel
* Compartmentalized application memory organization
* Fix errno access for user mode

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

* arch: arc: improve the reset code
* arch: arc: use a separate stack for exception handling
* arch: arc: refactor the arc stack check support
* arch: arm: stm32: enable instruction and data caches on STM32F7
* arch: arm: implement ARMv8-M MPU driver
* irq: Fix irq_lock api usage
* arch: arm: macro API for defining non-secure entry functions
* arch: arm: allow processor to ignore/recover from faults
* arm: nxp: mpu: Consolidate k64 mpu regions
* arm: Print NXP MPU error information in BusFault dump
* arch: ARM: Change the march used by cortex-m0 and cortex-m0plus
* arch: arm: integrate ARM CMSE with CMake
* arch: arm: basic Arm TrustZone-M functionality for Cortex-M23 and Cortex-M33
* arch: arm: built-in stack protection using Armv8-M SPLIM registers
* arch: arm: API for using TT intrinsics in Secure/Non-Secure Armv8-M firmware
* arch: arm: clean up MPU code for ARM and NXP
* arch: arm: Set Zero Latency IRQ to priority level zero
* arch/arm: Fix locking in __pendsv

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

* x86: add SoC configuration for Apollo Lake
* x86: add support for UP Squared (Pentium/Celeron)
* arc: Support Synopsys ARC nSim instruction set simulator
* riscv32: riscv-privilege: Microsemi Mi-V support
* Added support for the following Arm boards:

  * efr32_slwstk6061a
  * nrf52_adafruit_feather
  * nrf52810_pca10040
  * nrf52840_pca10059
  * nucleo_f207zg
  * reel_board
  * stm32f723e_disco
  * stm32f746g_disco
  * stm32f769i_disco
  * udoo_neo_full_m4
  * warp7_m4

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

* adc: Introduced reworked API and updated Nordic, NXP, Atmel, and
  Synopsys DesignWare drivers
* audio: Added TLV320DAC310x audio DAC driver
* can: Added can support for STM32L432
* clock_control: Added STM32F7 family clock control
* entropy: Added support for STM32F7
* eth: Enabled gPTP support in mcux and gmac drivers
* eth: Added promiscuous mode support to native_posix
* eth: mcux: Added an option for randomized, but stable MAC address
* gpio: Added STM32F7 GPIO support
* interrupt_controller: Added STM32F7 EXTI support
* i2c: Added support for STM32F7
* i2c: Added i.MX shim driver
* i2c: Implemented slave support for stm32_v2
* i2c: Added EEPROM I2C slave driver
* i2c: Added shims for nrfx TWI and TWIM drivers
* i2s: Exposed i2s APIs to user mode
* led: Added TI LP5562 and NXP PCA9633 drivers
* modem: Added Wistron WNC-M14A2A LTE-M Modem driver
* modem: Added modem receiver (tty) driver
* pinmux: Added STM32F7 pinmux support
* pwm: Added i.MX shim driver
* pwm: Added shim for nrfx PWM HW driver
* serial: Added power management to nRF UART driver
* serial: Added STM32F7 UART support
* serial: Allow to pass arbitrary user data to irq callback
* serial: Added UARTE driver for the nRFx family
* sensor: Added adxl372, mma8451q, adt7420 drivers
* sensor: lis2dh: Fix I2C burst read/write operations
* rtc: Added support for STM32
* usb: Added support for OTG FS on STM32F2 and STM32F7
* usb: Added High Speed support for DesignWare USB
* wifi: Added SimpleLink WiFi Offload Driver (wifi_mgmt only)

Networking
**********

* Introduce system calls for BSD socket APIs.
* Add IPv4 autoconf support. This adds support for IPv4 link-local addresses
  (169.254.*.*)
* Add TLS and DTLS support to BSD socket API. They are configured via
  setsockopt() API.
* Add support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP)
  for ethernet networks. A sample application is created to show how to interact
  with gPTP code.
* Add support for PTP clock driver. This driver will be used by gPTP supported
  ethernet drivers.
* Add Link Layer Discovery Protocol (LLDP) TX support.
* Add support for managing Qav credit-based shaper algorithm.
* Add generic TX timestamping support.
* Add carrier detection support to ethernet L2 driver.
* Add support for having vendor specific ethernet statistics.
* Add getter support to ethernet management interface.
* Add promiscuous mode support to network interface. A sample application is
  created that shows how to use the user API for getting all network packets.
  The native_posix ethernet driver supports promiscuous mode at this point.
* Add support for Link Layer Multicast Name Resolution (LLMNR). LLMNR is used in
  Microsoft Windows networks for local name resolution.
* Add API to net_pkt to prefill a network packet to a pre-defined value.
* Add IEEE 802.1Qav support to Atmel GMAC ethernet driver.
* Add hardware TX timestamping support to Atmel GMAC ethernet driver.
* Add multiple hardware queue support to Atmel GMAC ethernet driver.
* Add gPTP support to Atmel GMAC ethernet driver.
* Add support for TI SimpleLink WiFI offload driver.
* Add support for randomized but stable MAC address in NXP MCUX ethernet driver.
* Add extra prints to net-shell for ethernet based network interfaces. The
  supported features and priority queue information is printed.
* Add and fix string to integer conversions in net-shell.
* Allow user to configure MAC address filters into ethernet devices.
* Catch network interface ON and OFF events in DHCPv4 and renew address lease if
  we re-connected.
* Remove forever timeouts when waiting a new network buffer to be available.
* Relay network interface up/down command from net-shell to Linux host for
  native_posix ethernet driver.
* No need to join IPv6 solicited node multicast group for Bluetooth IPSP
  supported nodes.
* Allow external program to be started for native_posix ethernet driver. This
  allows for example startup of wireshark when zeth is created.
* Network packet priority and traffic class fixes and clarifications.
* Lower memory consumption in net by using packed enums when applicable.
* Correctly notify net_app server when TCP is disconnected.
* Register OpenThread used unicast and multicast IPv6 addresses for network
  interface.
* Enable Fast Connect policy for TI SimpleLink ethernet driver.
* Fix ieee802154 simulator driver channel/tx power settings.
* Handle large IPv6 packets properly.
* Enable gPTP support in native_posix, NXP mcux and Atmel GMAC ethernet drivers.
  The native_posix ethernet driver gPTP support is only for testing purposes.
* Network configuration (net_config) library split from the net_app library.
  (This change requires updating application configs to refer to corresponding
  NET_CONFIG_* options instead of NET_APP_*).
* Moving all layer 2 (L2) network code into subsys/net/l2 directory.
* Add MSS option on sending TCP SYN request.
* Fix TCP by processing zero window probes when our receive window is 0.
* IPv4, IPv6, ICMPv6, ARP code refactoring and cleanup.
* IPv6 address lifetime fixes.
* IPv6 fragmentation fixes.
* ARP fixes when using VLAN.
* Timeout too long lasting ARP requests.
* DHCPv4 fixes and timeout management refactoring.
* TCP retry, RST packet handling, and memory leak fixes.
* IP address print function enhancements.
* HTTP fix when sending the last chunk.
* MQTT fixes.
* LWM2M cleanups and fixes.
* Fix cache support in Atmel GMAC ethernet driver.
* Fix NXP MCUX ethernet driver to detect carrier lost event.
* Port native API echo-server/echo-client samples to BSD sockets API, with
  TLS/DTLS support.
* Handle out-of-buf situations gracefully in echo-client and echo-server sample
  applications.

Bluetooth
*********

* New user-friendly service population using a refreshed BT_GATT_CHARACTERISTIC
  macro.
* Added support for Bluetooth hardware in the native_posix board, allowing
  developers to use the native POSIX architecture with Bluetooth.
* Added a new helper API to parse advertising data.
* Added a new flag, BT_LE_ADV_OPT_USE_NAME, to include the Bluetooth Device
  Name in the advertising data.
* Added support for fixed passkeys to use in bonding procedures.
* Added a new Bluetooth shell command to send arbitrary HCI commands to the
  controller.
* Added a new feature to support multiple local identities using a single
  controller.
* Added a new, board-specific mesh sample for the nRF52x series that
  implements the following models:

  - Generic OnOff client and server.
  - Generic Level client and server.
  - Generic Power OnOff client and server.
  - Light Lightness client and server.
  - Light CTL client and server.
  - Vendor Model.
* Controller: Added a TX Power Kconfig option.
* Controller: Use the newly available nrfx utility functions to access the
  nRF5x hardware.
* Controller: Multiple bug fixes.
* Controller: Added support for the nRF52810 SoC from Nordic Semiconductor.
* New HCI driver quirks API to support controllers that need uncommon reset
  sequences.
* Host: Multiple bug fixes for GATT and SMP.
* Mesh: Multiple bug fixes.

Build and Infrastructure
************************
* Kconfig: Remove redundant 'default n' properties
* cmake: replace PROJECT_SOURCE_DIR with ZEPHYR_BASE
* Kconfig: Switch to improved globbing statements


Libraries / Subsystems
***********************
* Tracing: Basic support SEGGER systemview
* Logging: Introduce a new logging subsystem
* fs/nvs: Improved nvs for larger blocksizes
* subsys: console: Refactor code to allow per-UART "tty" wrapper


HALs
****
* ext/hal: stm32cube: STM32L4: Enable legacy CAN API
* ext: Import Atmel SAMD20 header files from ASF library
* ext: gecko: Add Silabs Gecko SDK for EFR32FG1P SoCs
* drivers: add i.MX I2C driver shim
* hal: stm32f2x: Add HAL for the STM32F2x series
* ext: stm32cube: update stm32l4xx cube version
* ext: stm32cube: update stm32f7xx cube version
* ext: stm32cube: update stm32f4xx cube version
* ext: stm32cube: update stm32f3xx cube version
* ext: stm32cube: update stm32f1xx cube version
* ext: hal: nordic: Update nrfx to version 1.1.0
* net: drivers: wifi: SimpleLink WiFi Offload Driver (wifi_mgmt only)
* ext/hal/nxp/imx: Import the nxp imx6 freertos bsp

Documentation
*************
* Simplified and more maintainable theme applied to documentation.
  Latest and previous four releases regenerated and published to
  https://docs.zephyrproject.org
* Updated contributing guidelines
* General organization cleanup and spell check on docs including content
  generated from Kconfig files and doxygen API comments.
* General improvements to documentation following code,
  implementation changes, and in support of new features, boards, and
  samples.
* Documentation generation now supported on Windows host systems
  (previously only linux doc generation was supported).
* PDF version of documentation can now be created


Tests and Samples
*****************
* Enhanced benchmarks to support userspace
* Improve test coverage for the kernel


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

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`9862` - tests/drivers/build_all#test_build_sensors_a_m @ quark_se_c1000_devboard:x86 BUILD failed
* :github:`9857` - tests/cmsis_rtos_v1 - test_signal_events_signalled results in Assertion failure on all targets with PR#9856
* :github:`9840` - doc: potential broken link when referencing latest doc version
* :github:`9833` - Bluetooth Mesh incorrect reference to CONFIG_BT_SETTINGS
* :github:`9788` - update to mbedTLS 2.12.0
* :github:`9786` - arch: xtensa: build failure due to extra #endif
* :github:`9785` - Bluetooth: bt_gatt_service_register() assumes sc delayed work handler is initialized
* :github:`9772` - Test application hangs without any console output on x86/ARC based boards @arduino_101:arc
* :github:`9768` - [Coverity CID :187902] Memory - illegal accesses in /subsys/net/ip/ipv6_fragment.c
* :github:`9766` - [Coverity CID :187904] Integer handling issues in /tests/benchmarks/timing_info/src/semaphore_bench.c
* :github:`9753` - ESP32: Failing to build project
* :github:`9746` - zephyr networking non socket client server, qemu_x86  issue
* :github:`9744` - tests/kernel/mbox/mbox_usage/testcase.yaml#kernel.mailbox crashes on ESP32
* :github:`9727` - Bluetooth: IPSP Sample Doc no match for new path
* :github:`9723` - tests/drivers/adc/adc_api/ fails on sam_e70_xplained
* :github:`9718` - The test suite test_spi (spi_loopback) when built and run on the nrf52832_pca10040 board
* :github:`9701` - Suggestion: Turn warnings into errors in extract_dts_includes.py
* :github:`9689` - Multiple tests are failing on sam_e70_xplained once the cache is enabled
* :github:`9684` - tests/posix/ fails on sam_e70_xplained
* :github:`9683` - Multiple testcases in tests/kernel/mem_protect/mem_protect, tests/kernel/alert, tests/kernel/mem_pool test fails on sam_e70_xplained due to commit c090776
* :github:`9682` - tests/kernel/init: kernel.common.init.verify_bootdelay fails on sam_e70_xplained
* :github:`9680` - tests/mem_slab/mslab, tests/mem_slab/mslab_api and tests/mem_slab/mslab_threadsafe tests are crashing on sam_e70_xplained
* :github:`9677` - tests:cmsis_rtos_v1: test_mutex crashes with bus fault on sam_e70_xplained
* :github:`9676` - benchmark.timing.userspace not working on nrf52840 with v1.13.0-rc1
* :github:`9671` - Zephyr with WNC-M14A2A not compiling
* :github:`9670` - Bluetooth: Mesh: Persistent Storage: AppKey not restored
* :github:`9667` - LwM2M: Writeable parameter /3311/0/5850 doesn't persist write
* :github:`9665` - tests/drivers/watchdog/wdt_basic_api crashes on Quark D2k / SE and ESP32
* :github:`9664` - tests/kernel/threads/thread_apis/kernel.threads.user_mode crases on QEMU-x86
* :github:`9652` - gen_isr_table@mimxrt1050_evk runs failure on R1.13_RC1.
* :github:`9649` - readme of LPCxpresso54114_mo core needs update for R1.13
* :github:`9646` - sanitycheck: crashes after test execution summary report are not caught
* :github:`9644` - [Coverity CID :187817] Error handling issues in /tests/benchmarks/timing_info/src/msg_passing_bench.c
* :github:`9643` - [Coverity CID :187818] Error handling issues in /tests/benchmarks/timing_info/src/msg_passing_bench.c
* :github:`9642` - [Coverity CID :187819] Memory - illegal accesses in /subsys/logging/log_msg.c
* :github:`9641` - [Coverity CID :187820] Memory - illegal accesses in /subsys/bluetooth/host/hci_core.c
* :github:`9640` - [Coverity CID :187821] Memory - illegal accesses in /subsys/bluetooth/host/hci_core.c
* :github:`9639` - [Coverity CID :187822] Null pointer dereferences in /subsys/net/ip/tcp.c
* :github:`9638` - [Coverity CID :187823] Memory - corruptions in /samples/net/coap_server/src/coap-server.c
* :github:`9637` - [Coverity CID :187824] Integer handling issues in /lib/cmsis_rtos_v1/cmsis_thread.c
* :github:`9636` - [Coverity CID :187825] Error handling issues in /subsys/net/ip/udp.c
* :github:`9635` - [Coverity CID :187826] Error handling issues in /tests/benchmarks/timing_info/src/msg_passing_bench.c
* :github:`9634` - [Coverity CID :187827] Null pointer dereferences in /subsys/logging/log_msg.c
* :github:`9633` - [Coverity CID :187828] Error handling issues in /tests/benchmarks/timing_info/src/msg_passing_bench.c
* :github:`9630` - STM32L4: something wrong with GPIO interrupts
* :github:`9623` - tests/net/lib/tls_credentials/ crashed on sam_e70_xplained and frdm_k64f
* :github:`9622` - tests/net/mgmt/ crashed on sam_e70_xplained
* :github:`9621` - tests/net/promiscuous crashed on sam_e70_xplained
* :github:`9619` - tests/net/socket/getaddrinfo/ - crashes on sam_e70_xplained and  frdm_k64f
* :github:`9618` - tests/net/udp/ - MPU fault on sam_e70_xplained
* :github:`9617` - tests/net/websocket/ - passed on QEMUx86 but the target crashed after that
* :github:`9614` - tests/net/socket/ faults on sam_e70_xplained and frdm_k64f
* :github:`9611` - tests/kernel/sched/schedule_api/testcase.yaml#kernel.sched.slice_reset fails on nrf52840_pca10056, sam_e70_xplained, nrf52_pca10040
* :github:`9609` - tests/kernel/mem_protect/stack_random: kernel.memory_protection.stack_random fails on emsk7d_v22
* :github:`9598` - tests/power/power_states fail on arduino101:x86
* :github:`9597` - tests/subsys/fs/fat_fs_api assertion fail on arduino101
* :github:`9591` - @hci.h use of magic-number in bluetooth addr struct (Missing define in @bluetooth.h)
* :github:`9580` - peripheral_hids does not remember bonds
* :github:`9575` - Network NULL pointer reference when enable net/dhcpv4 debug
* :github:`9574` - tests/cmsis_rtos_v1 - test_mutex_lock_timeout results in Assertion failure on all targets with PR#9569
* :github:`9561` - Question: Does it support passing the bootloader(mcuboot) parameter to the kernel(zephyr)?
* :github:`9558` - DTC 1.4.7 breaks at least FRDM_K64F builds
* :github:`9537` - ENC28J60 can't receive packets properly
* :github:`9536` - console: missing kernel.h include in header
* :github:`9535` - broken callback handling in nrfx gpio driver
* :github:`9530` - Bluetooth/gatt: bt_gatt_notify never return -ENOMEM, undocumented return value.
* :github:`9527` - tests/kernel/sched/schedule_api/testcase.yaml#kernel.sched.unlock_preemptible fails on nrf52840_pca10056, sam_e70_xplained, nrf52_pca10040
* :github:`9523` - tests/kernel/mem_protect/stackprot hangs without any console output on nrf51/52
* :github:`9494` - Nordic nrf52810_pca10040 is missing default bluetooth configuration options
* :github:`9487` - tests/cmsis_rtos_v1 - test_kernel_systick results in Assertion failure on nrf51/52
* :github:`9486` - sanitycheck filter rules does not work
* :github:`9471` - soc: efr32fg1p: hello_world sample app hangs when started by MCUboot
* :github:`9470` - LWM2M: TLV encoding of read result is wrong
* :github:`9468` - tests/kernel/mem_pool/mem_pool_concept/testcase.yaml#kernel.memory_pool fails on nrf52840_pca10056, nrf52_pca10040 and  nrf51_pca10028
* :github:`9466` - tests/kernel/context/testcase.yaml#kernel.common.k_sleep fails on nrf52_pca10040 and nrf52840_pca10056
* :github:`9465` - tests/net/ptp/clock: PTP clock test are failing on FRDM_K64f and same_e70_xplained platforms
* :github:`9462` - [Coverity CID :187670] Integer handling issues in /tests/net/ethernet_mgmt/src/main.c
* :github:`9461` - [Coverity CID :187671] Uninitialized variables in /tests/net/iface/src/main.c
* :github:`9460` - [Coverity CID :187672] Uninitialized variables in /tests/net/iface/src/main.c
* :github:`9459` - tests/posix/timer fails on nRF51/52
* :github:`9452` - Error parsing DTS 'compatible' property list
* :github:`9446` - CI didn't report failure due to ARC_INIT issue
* :github:`9444` - sanitycheck not able to run due to CONFIG_ARC_INIT=n
* :github:`9441` - tests/kernel/gen_isr_table fails on mimxrt1050_evk
* :github:`9413` - tests/cmsis_rtos_v1 - test_signal_events_signalled results in Assertion failure on nrf51/52
* :github:`9402` - samples/drivers/watchdog fails on frdm_k64f
* :github:`9396` - ./loop-socat.sh not running
* :github:`9392` - samples/bluetooth/hci_uart ninja flash - UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 360: ordinal not in range(128)
* :github:`9389` - ESP32 support: setting env var ESP_DEVICE not working
* :github:`9356` - Test tests/crypto/rand32 hangs on nrf51_pca10028
* :github:`9348` - samples: net: echo_client/echo_server does not work with IPv4 qemu_x86
* :github:`9310` - nRF52_PCA10040: Failing test_slice_reset
* :github:`9297` - [Coverity CID :187318] Error handling issues in /tests/posix/pthread_key/src/pthread_key.c
* :github:`9296` - [Coverity CID :187319] Control flow issues in /subsys/net/lib/sockets/sockets.c
* :github:`9295` - [Coverity CID :187320] Control flow issues in /drivers/ethernet/eth_sam_gmac.c
* :github:`9294` - [Coverity CID :187321] Possible Control flow issues in /samples/net/sockets/big_http_download/src/big_http_download.c
* :github:`9293` - [Coverity CID :187322] Incorrect expression in /tests/posix/pthread_key/src/pthread_key.c
* :github:`9292` - [Coverity CID :187323] Control flow issues in /subsys/net/ip/net_if.c
* :github:`9291` - [Coverity CID :187324] Control flow issues in /subsys/net/lib/sockets/sockets.c
* :github:`9287` - net/dhcpv4: Fix single byte buffer filling madness
* :github:`9273` - k_pipe_alloc_init() api is failing on qemu_x86
* :github:`9270` - cmake: kconfig: menuconfig is not writing zephyr/.config
* :github:`9262` - tests/kernel/mem_protect/userspace.access_other_memdomain fails on sam_e70_xplained and nrf52840_pca10056
* :github:`9238` - Get POSIX board compliant with default configuration guidelines
* :github:`9234` - Get ARC boards compliant with default configuration guidelines
* :github:`9224` - sam_e70_xplained fails to build several tests
* :github:`9221` - calloc memory data is not initialized to zero for MINIMAL_LIBC
* :github:`9198` - Out-of-Tree YAML and DTS support
* :github:`9196` - optimize gen_kobject_list.py
* :github:`9160` - net: openthread: Mesh Local IPv6 is not in zephyr stack
* :github:`9148` - samples/net/http_server: Failed to respond back to CURL command on http Client
* :github:`9135` - Failure : "integer overflow in exp" on Altera-Max 10 platform
* :github:`9134` - Build failure with SAM_e70 platform
* :github:`9131` - samples/net/coaps_server: Failed to send response to coaps_client
* :github:`9128` - doc build fails if no reST reference to file
* :github:`9113` - Enabling various thread options causes failures on cortex-M0 boards
* :github:`9108` - Which board is suit with esidon??
* :github:`9098` - Doc build failure not noticed by CI test system
* :github:`9081` - dynamic thread objects do not have a thread ID assigned
* :github:`9067` - Failed tests: posix.sema and posix_checks on em_starterkit_em7d_v22
* :github:`9061` - sanitycheck not printing QEMU console in some cases
* :github:`9058` - Kconfig default on BT_ACL_RX_COUNT can be 1, but range is 2-64
* :github:`9054` - Build failures with mimxrt1050_evk board
* :github:`9044` - "logging: Remove log.h including in headers limitation" breaks logging
* :github:`9032` - net/sockets/echo_async crashes after several connections (qemu_x86)
* :github:`9028` - STM32 SPI/I2S: LSB bit corrupted for the received data
* :github:`9019` - cmsis Include/ version mismatch
* :github:`9006` - Create driver for the MMA8451Q accelerometer sensor on FRDM-KL25Z
* :github:`9002` - [Coverity CID :187063] Control flow issues in /subsys/net/l2/ethernet/ethernet_mgmt.c
* :github:`9001` - [Coverity CID :187064] Control flow issues in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`9000` - [Coverity CID :187065] Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`8998` - [Coverity CID :187068] Memory - illegal accesses in /subsys/bluetooth/host/mesh/cfg_srv.c
* :github:`8997` - [Coverity CID :187069] Memory - illegal accesses in /subsys/logging/log_msg.c
* :github:`8996` - [Coverity CID :187070] Control flow issues in /drivers/bluetooth/hci/spi.c
* :github:`8995` - [Coverity CID :187071] Insecure data handling in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`8994` - [Coverity CID :187072] Error handling issues in /samples/net/sockets/echo_server/src/udp.c
* :github:`8993` - [Coverity CID :187073] Null pointer dereferences in /subsys/net/ip/utils.c
* :github:`8992` - [Coverity CID :187074] Incorrect expression in /samples/net/traffic_class/src/main.c
* :github:`8991` - [Coverity CID :187075] Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`8990` - [Coverity CID :187077] Memory - corruptions in /samples/net/rpl_border_router/src/http.c
* :github:`8989` - [Coverity CID :187078] Control flow issues in /subsys/net/l2/ethernet/gptp/gptp_md.c
* :github:`8988` - [Coverity CID :187079] Integer handling issues in /subsys/net/l2/ethernet/gptp/gptp.c
* :github:`8987` - [Coverity CID :187080] Control flow issues in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`8982` - tests/drivers/watchdog/wdt_basic_api results in FATAL EXCEPTION on esp32
* :github:`8977` - CMake Error
* :github:`8976` - nordic: watchdog: Cannot be initialized - circular dependency
* :github:`8968` - The tests/kernel/tickless/tickless_concept fails on nRF5x
* :github:`8963` - tests/net/trickle, utils and icmpv6 hangs on sam_e70_xplained:arm
* :github:`8960` - Tcp connection not connecting
* :github:`8950` - ARM fault dumping code does too much, assumes all faults are fatal, and doesn't work under some configurations
* :github:`8949` - nsim_sem board does not work
* :github:`8933` - doc: build WARNING on windows 7
* :github:`8931` - STM32L4 CAN sample project does not compile
* :github:`8924` - Get rid of -fno-strict-overflow
* :github:`8906` - zsock_getaddrinfo is not reentrant
* :github:`8899` - Failed test: kernel.common.timing.sleep on nrf52 (tests/kernel/sleep/kernel.common.timing)
* :github:`8898` - Failed test: kernel.timer.timer_periodicity on nrf51/nrf52
* :github:`8897` - Failed test: kernel.tickless.tickless_slice on nrf51/nrf52
* :github:`8896` - Failed test: kernel.sched.slice_reset and kernel.sched.slice_scheduling (tests/kernel/sched/schedule_api/kernel.sched) on nrf51/nrf52
* :github:`8895` - Failed test: kernel.common.timing.pending on nrf51_pca10028 and nrf52_pca10040 (tests/kernel/pending/kernel.common.timing)
* :github:`8888` - http client example fails on mimxrt1050_evk
* :github:`8887` - Ping command crash on mimxrt1050_evk
* :github:`8871` - drivers: can: Compiling error due to stm23Cube update
* :github:`8866` - Failed test: net.arp.arp (tests/net/arp) on sam_e70_xplained
* :github:`8865` - Failed test: net.udp.udp (tests/net/udp/)  on sam_e70_xplained
* :github:`8864` - ARM MPU _arch_buffer_validate allowing reads to kernel memory
* :github:`8860` - GATT MTU Callback
* :github:`8849` - Allow application to define its own DTS bindings
* :github:`8833` - OpenThread: Minimal Thread Device (MTD) option is not building
* :github:`8829` - BLE "device name" characteristic of Generic Access Service is read only
* :github:`8820` - wifi_winc1500 driver socket id stored in net_context->user_data may be overwritten at socket layer
* :github:`8815` - Nordic: Directly accessing GPIOTE might create unstable firmware (GPIO, PWM, BLE)
* :github:`8800` - cmake errors with menuconfig
* :github:`8798` - k_cycle_get_32() implementation on nrf series is too slow.
* :github:`8791` - Request supporting OTG_HS port on STM32F4/F7 SoCs
* :github:`8790` - K64F/Kinetis: extract_dts_includes.py warnings when building sample
* :github:`8752` - net: ARP is broken after PR #8608
* :github:`8732` - tests/subsys/usb/bos/ fails randomly
* :github:`8727` - Network stack cleanup: DHCPv4
* :github:`8720` - Network stack cleanup: IPv4
* :github:`8717` - posix:  Memory is not returned to mempool when a pthread complete its execution
* :github:`8715` - buffer-overflow in tests/net/tx_timestamp
* :github:`8713` - add DTS gpio support for NRF51
* :github:`8705` - Out of the box error in samples/subsys/nvs with nRF52-PCA10040
* :github:`8700` - [Coverity CID :186841] Null pointer dereferences in /subsys/usb/usb_descriptor.c
* :github:`8699` - [Coverity CID :186842] Memory - illegal accesses in /drivers/interrupt_controller/plic.c
* :github:`8698` - [Coverity CID :186843] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`8697` - [Coverity CID :186844] Parse warnings in /tests/net/ieee802154/fragment/src/main.c
* :github:`8696` - [Coverity CID :186845] Parse warnings in /tests/net/ieee802154/l2/src/ieee802154_test.c
* :github:`8695` - [Coverity CID :186846] Null pointer dereferences in /tests/net/ptp/clock/src/main.c
* :github:`8694` - [Coverity CID :186847] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/inherit.c
* :github:`8693` - [Coverity CID :186848] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`8692` - [Coverity CID :186849] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`8691` - [Coverity CID :186850] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`8690` - [Coverity CID :186851] Error handling issues in /tests/bluetooth/mesh/src/microbit.c
* :github:`8689` - [Coverity CID :186852] Parse warnings in /tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`8669` - fault during my timer testing
* :github:`8668` - net: ARP is broken in master (at least) on STM32
* :github:`8658` - tests/net/trickle fails on FRDM k64f
* :github:`8657` - tests/net/ptp fails on QEMU x86
* :github:`8646` - CONFIG_NET_OFFLOAD defined in subsys/net/l2/, but not referenced there
* :github:`8643` - Add SAADC driver for nRF52
* :github:`8642` - ieee802154 tests fail to build
* :github:`8636` - MCUboot firmware update issue
* :github:`8611` - RT1050EVK: MPU FAULT with Zephyr OS v1.12.0-360-gf3d1b22 using ztest
* :github:`8610` - USB: Setup stage in control transfers
* :github:`8605` - mbedtls_ssl_close_notify was called after DTLS context released
* :github:`8602` - master broken for stm32 ARM boards
* :github:`8600` - Not able to bind the adc device structure for nrf52832 controller
* :github:`8598` - [Coverity CID :186057] - Out of bounds write in samples/net/rpl_border_router/src/coap.c
* :github:`8596` - drivers: dma_cavs: NULL pointer exception when DMA start called after DMA stop
* :github:`8593` - samples/mpu/mem_domain_apis_test/kernel.memory_protection.memory_domains fails to build
* :github:`8587` - ZTEST should support multiple calls to mocked function
* :github:`8584` - ToolchainCapabilityDatabase.cmake:93 error in PR #8579
* :github:`8576` - there have a error in doc
* :github:`8567` - Can't parse json
* :github:`8563` - Compilation warning/error on stm32l4: "__weak" redefined
* :github:`8529` - tests/kernel/common/kernel.common fails for native_posix on Ubuntu 16.04
* :github:`8528` - rpl-mesh-qemu sample, the net inface init failed.
* :github:`8511` - nrf52_blenano2 tmp112 sensor sample build failed - redefined I2C
* :github:`8506` - tests/subsys/fs/fat_fs_api - test_fat_mount results into assertion failure on Arduino_101 - FS init failed (-19)
* :github:`8502` - Compiling for native_posix with newlib is missing various math symbols
* :github:`8501` - I think there is a issue about shell.
* :github:`8470` - Broken Arduino 101 Bluetooth Core flashing
* :github:`8466` - k_sleep on mimxrt1050_evk board broken
* :github:`8464` - sdk_version file missing
* :github:`8462` - non-ASCII / non-UTF-8 files in ext/
* :github:`8452` - ieee802154: csma-ca: random backoff factor looks wrong
* :github:`8444` - "make clean" removes include directory
* :github:`8438` - cmake: Propagation of library specific compile flag
* :github:`8434` - Networking Problems, Size Missmatch 15 vs 13
* :github:`8431` - mqtt: unimplemented MQTT_UNSUBACK in mqtt_parser function in mqtt.c file
* :github:`8424` - HID example broken
* :github:`8416` - [Coverity CID :186580] Uninitialized variables in /drivers/can/stm32_can.c
* :github:`8415` - [Coverity CID :186581] Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`8414` - [Coverity CID :186582] Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`8413` - [Coverity CID :186583] Error handling issues in /samples/net/sockets/dumb_http_server/src/socket_dumb_http.c
* :github:`8393` - ``CONFIG_MULTITHREADING=n`` builds call main() with interrupts locked
* :github:`8391` - nrf52_blenano2 tmp112 sensor sample build failed.
* :github:`8390` - bluetooth: request APIs to notify application that pairing is complete or not
* :github:`8388` - Assigning to promptless symbols should have a better error message
* :github:`8385` - Missing documentation on bt_conn_auth_cb(...)
* :github:`8382` - ESP32: add support for ESP-IDF bootloader
* :github:`8380` - cmake: ninja clean tries to remove include folders
* :github:`8378` - subsys: settings: Idea for a very simple settings system
* :github:`8371` - nRF5: enable UARTE peripheral support
* :github:`8367` - fs: nvs: auto restore FS on writing while power down error.
* :github:`8366` - mcumgr: unable to perform 2nd update
* :github:`8365` - mcumgr: improper response to "image list" command after update.
* :github:`8361` - __ASSERT() triggers with ``CONFIG_MULTITHREADING=n``
* :github:`8358` - Flashing Target Device FAIL
* :github:`8357` - bluetooth: request the capability to change gap device name programmatically
* :github:`8356` - Failed test: kernel.common.bitfield (tests/kernel/common) on Altera Max10
* :github:`8355` - CMake prints a spammy warning about "policy CMP0000"
* :github:`8350` - bluetooth: request BLE stack to support pre-set passkey for pairing
* :github:`8334` - nrf52840.dtsi contains "0x" in device label
* :github:`8329` - qustion: build-system: How to generate a preprocess file
* :github:`8327` - CONFIG_SPI_FLASH_W25QXXDV_MAX_DATA_LEN doesn't work in proj.conf
* :github:`8322` - LwM2M: Occasional registration updates fail with 4.4 error
* :github:`8313` - Enable hardware stack checking for ARC em_starterkit_em7d (Secure mode)
* :github:`8311` - tests/benchmarks/sys_kernel fails on frdm_k64f, sam_e70
* :github:`8309` - lpcxpresso54114_m4: when i configed system clock from 48M to 96M the target can't work.
* :github:`8302` - Failed test: peripheral.adc.adc on quark_se
* :github:`8300` - Failed test: kernel.memory_protection.userspace.access_after_revoke (in tests/kernel/mem_protect/userspace)
* :github:`8299` - Failed test: kernel.memory_pool.mpool_alloc_free_isr (in tests/kernel/mem_pool/mem_pool_api)
* :github:`8298` - Failed test: kernel.alert.isr_alert_consumed (in tests/kernel/alert/) on quark_se_c1000_ss
* :github:`8293` - ARM: MPU faults should indicate faulting memory address
* :github:`8292` - Rework ARC exception stack
* :github:`8287` - LwM2M: Cancelling an observation doesn't work
* :github:`8286` - LwM2M: Observe of not allowed value still creates observer
* :github:`8284` - Documentation build on Windows
* :github:`8283` - Failed test: kernel.mailbox.msg_receiver_unlimited (tests/kernel/mbox/mbox_usage/) on ESP32
* :github:`8262` - [Bluetooth] MPU FAULT on sdu_recv
* :github:`8255` - [RFC] Add support for system suspend/resume handling from kernel
* :github:`8252` - GPIO interrupt only called once on nRF52832
* :github:`8240` - ESP32: update to recent ESP-IDF
* :github:`8235` - nxp_lpc54102: how to add lpc54102 support?
* :github:`8231` - GATT Macro Confusion
* :github:`8226` - drivers: can: stm32_can: various issues
* :github:`8225` - Error mbedtls_pk_verify MBEDTLS_ERR_RSA_VERIFY_FAILED
* :github:`8215` - Update watchdog driver sample to new API
* :github:`8210` - Always rebuilding even though there are no changes.
* :github:`8206` - Stray files in libapp.a
* :github:`8203` - Implement system calls for the new socket APIs
* :github:`8199` - Tests: Crypto: rand32 faults on nrf51_pca10028 and nrf52_pca10040
* :github:`8188` - net: TCP: FIN packets aren't queued for retransmission, loss leads to TCP timeout on peer's side
* :github:`8183` - zsock_getaddrinfo() is not reentrant
* :github:`8173` - Driver tests failing with an assertion on frdm_k64f
* :github:`8138` - Unsatisfactory kernel benchmark results on SAM E-70 Xplained
* :github:`8128` - scheduler: threads using k_sleep can be _swap()'d back too early
* :github:`8125` - About BMI160 reading issue.
* :github:`8090` - tests/sched/schedule_api fails to build on EMSK7d
* :github:`8041` - arm: NXP MPU does not report faulting address for Stacking Errors
* :github:`8039` - tests/shell failing on Arduino 101 / Quark SE arc
* :github:`8026` - Verify TLS server side operation
* :github:`8019` - ARP: should drop any packet pended when timeout
* :github:`8013` - Open-AMP power on can not communicate
* :github:`7999` - HCI UART with Linux host cannot connect to nrf52 6lowpan peripheral
* :github:`7978` - SSE and SSE_FP_MATH are set on frdm_k64f, which doesn't have it, triggering Kconfig warnings
* :github:`7977` - ARC_INIT is set on boards that don't have it, triggering Kconfig warnings
* :github:`7966` - Move k_thread_foreach() tests to tests/kernel/threads
* :github:`7924` - mcu_mgmt: Memory corruption (cborattr suspected) - test case with smp_svr
* :github:`7906` - tests/benchmarks/sys_kernel fails on Arduino Due
* :github:`7884` - tests/power/power_states never completes on Arduino 101's arc core
* :github:`7882` - tests/dfu/mcuboot.test_bank_erase fails on nrf52840_pca10056
* :github:`7869` - Improve Zero Latency IRQ on ARM
* :github:`7848` - CONFIG_BMM150_SET_ATTR not defined (and now removed), giving dead code
* :github:`7800` - ext/lib/mgmt/mcumgr/cmd/log_mgmt/Kconfig references MDLOG, but MDLOG doesn't exist
* :github:`7758` - sanitycheck error with --coverage
* :github:`7705` - nxp_kinetis/k6x boot MPU regions are configured incorrectly
* :github:`7703` - NUM_KERNEL_OBJECT_FILES is too small
* :github:`7685` - API for 802.1Qav parameters configuration
* :github:`7678` - Unstable ping RTT with ethernet ipv4 networking
* :github:`7658` - [RFC] net: Split off net_app_settings lib to a separate directory under subsys/net/lib/
* :github:`7596` - API to communicate list of MAC addresses to the Ethernet controller
* :github:`7595` - Promiscuous mode and receiving all packets at applications level
* :github:`7571` - IP stack can't recover from a packet overload
* :github:`7570` - usb: update bcdUSB to 2.00
* :github:`7553` - DHCP client does not notice missing link
* :github:`7509` - [Coverity CID :185398] Memory - corruptions in /samples/net/mbedtls_sslclient/src/mini_client.c
* :github:`7502` - samples/mbedtls_sslclient: Discards TLS records, handshake does not work
* :github:`7473` - Bluetooth: Support for multiple local identity addresses
* :github:`7423` - samples: net: echo_client: sample runs failed with prj_qemu_x86_tls.conf configuration file
* :github:`7384` - ARM MPU region configuration possibly out of bounds
* :github:`7372` - Create socket options for certificates and ciphers
* :github:`7371` - Move TLS connection data out from net_context
* :github:`7370` - Add Kconfig options to handle certificates and ciphers.
* :github:`7367` - Doxygen warnings about device.h macros
* :github:`7314` - Generate SPDX TagValue document as part of 1.13 release
* :github:`7310` - Provide signed Zephyr releases
* :github:`7243` - BLE DTM ll_test does not set correct TXPower
* :github:`7230` - The guidelines for whether something should be in DTS or Kconfig are too vague
* :github:`7173` - Difference between the ZEPHYR_BASE and PROJECT_SOURCE_DIR CMake variables is unclear
* :github:`7145` - Configuration file for Cross Toolchain on macOS
* :github:`7112` - ARMv8-M: API for checking permissions using ARMv8-M TT intrinsics
* :github:`7106` - tests: obj_tracing: Test fails on ESP32, semaphore count is more than what is created in the application
* :github:`7042` - Ethernet network management interface additions for MAC filtering
* :github:`6982` - STM32F746G DISCOVERY board support
* :github:`6981` - STM32F7 series MCUs support
* :github:`6866` - build: requirements: No module named yaml and elftools
* :github:`6846` - need console subsystem abstraction for console syscalls
* :github:`6785` - Fail to compile when OT l2 debug is enabled.
* :github:`6778` - Push latest docs down into a "latest" folder
* :github:`6775` - Simplify left nav index on technical docs
* :github:`6749` - kconfig: The error message is misleading when values are out-of-range
* :github:`6730` - ARMv8-M: internal low-level (TrustZone) API & implementation for configuring IRQ target
* :github:`6727` - k_mem_pool crash with larger values of n_max
* :github:`6681` - [Coverity CID: 183051] Error handling issues in /tests/benchmarks/app_kernel/src/memmap_b.c
* :github:`6678` - [Coverity CID: 183054] Memory - corruptions in /tests/lib/c_lib/src/main.c
* :github:`6676` - [Coverity CID: 183056] Memory - corruptions in /tests/kernel/common/src/atomic.c
* :github:`6673` - [Coverity CID: 183059] Memory - corruptions in /samples/net/mbedtls_dtlsclient/src/dtls_client.c
* :github:`6593` - Allow configuring the USB serial number string in runtime
* :github:`6533` - 1.12 Release Checklist
* :github:`6522` - Should have a "dumb" O(N) scheduler
* :github:`6514` - samples/drivers/i2c_fujitsu_fram: Data comparison on data written and data read fails randomly
* :github:`6399` - How to using the PPI chanels from 20-31 in Nrf5 chip?
* :github:`6373` - ARMv8-M: Implement stack limit checking for Secure/Non-secure stack pointers
* :github:`6188` - doc: Merge non-apache contributing into CONTRIBUTING
* :github:`6132` - [RFC] Restructuring and cleanup of mbedTLS configurations
* :github:`5980` - NRF5 I2C standard speed 250kHz
* :github:`5939` - NRF5 I2C (TWI) driver
* :github:`5900` - net: Prototype a TLS convenience API based on sockets
* :github:`5896` - Accidentally using MSYS's python from native windows leads to obscure error messages
* :github:`5833` - Script to import mcux sdk
* :github:`5733` - single threaded applications fail when asserts are enabled
* :github:`5732` - sanitycheck fails with gcc 7 as the host compiler
* :github:`5725` - Ninja: Running sanitycheck has byproducts outside of sanity-out
* :github:`5723` - cmake: Accept CONFIG_XX overrides from command line
* :github:`5524` - reorg documentation structure on website (docs.zephyrproject.org)
* :github:`5445` - Shadowed declarations in bluetooth stack
* :github:`5371` - [Coverity CID: 180698] Null pointer dereferences in /tests/bluetooth/tester/src/gatt.c
* :github:`5366` - Document zephyr-app-commands usage
* :github:`5357` - CII Badge: Generate list of externally maintained dependencies
* :github:`5153` - [RFC] Discussion of "cmake" vs "make" variables, aka "build environment" vs "work environment" setup
* :github:`5132` - Soft real-time "tasklets" in kernel
* :github:`4963` - Convert NIOS2 boards to device tree
* :github:`4957` - Add build targets for each explicit debug/flash option
* :github:`4883` - Should command line examples be "cut and paste" ready?
* :github:`4829` - device tree: gpio
* :github:`4767` - USB: assign endpoints at runtime
* :github:`4762` - [nrf][power][Sample] nrf52 exits from Low Power Mode immedately
* :github:`4590` - [CID: 178238] Parse warnings in samples/mpu/mem_domain_apis_test/src/main.c
* :github:`4283` - kconfig warning are being ignored by sanitycheck
* :github:`4060` - net: NET_CONTEXT_SYNC_RECV relevant
* :github:`4047` - [nrf] nrf GPIO does not have sense configuration value
* :github:`4018` -  zephyr.git/tests/net/mld/testcase.yaml#test  :evalution failed
* :github:`3995` - net tcp retry triggers assert in kernel/sem.c:145
* :github:`3993` - Enabling  Low Power Mode on nordic based platforms(nrf52/51)
* :github:`3980` - Remove adc_enable/adc_disable functions
* :github:`3947` - multiple build failures with XCC toolchain
* :github:`3935` - Bluetooth sample setup docs mentions unknown "btproxy" tool
* :github:`3903` - Static code scan (coverity) issues seen
* :github:`3845` - Enable Sphinx option doc_role='any' for improved reference linking
* :github:`3826` - RISCV32 {__irq_wrapper} exception handling error under compressed instruction mode?
* :github:`3770` - mbedtls build error when CONFIG_DEBUG=y
* :github:`3754` - Support static BT MAC address
* :github:`3666` - schedule_api test uses zassert without cleaning up properly
* :github:`3631` - program text should be in its own memory region
* :github:`3602` - power_mgr and power_states: need build option to keep the app exiting in "active" state
* :github:`3583` - NUCLEO-L073RZ/NUCLEO-L053R8 Dev Board Support
* :github:`3458` - Port Zephyr to Silabs EFM32ZG-STK3200
* :github:`3395` - Provide a sample app that demonstrates VLANs
* :github:`3394` - Support basic VLAN tags
* :github:`3393` - VLAN: Expose through virtual network interfaces
* :github:`3377` - Missing le_param_updated callback when conn param update request fails
* :github:`3363` - Missing board documentation for nios2/qemu_nois2
* :github:`3354` - Missing board documentation for x86/se_c1000_devboard
* :github:`3263` - improve Galileo flashing process
* :github:`3233` - LLDP Transmitting Agent
* :github:`3222` - No negative response if remote enabled encryption too soon
* :github:`3221` - re-pairing with no-bond legacy pairing results in using all zeros LTK
* :github:`3187` - frdm_k64f: Ethernet networking starts to respond ~10s after boot
* :github:`3173` - k_cpu_atomic_idle failed @ARM
* :github:`3150` - Si1153 Ambient Light Sensor, Proximity, and Gesture detector support
* :github:`3149` - Add support for ADXRS290
* :github:`3073` - Add Atmel SAM family DAC (DACC) driver
* :github:`3071` - Add Atmel SAM family Timer Counter (TC) driver
* :github:`3067` - Support Precision Time Protocol (PTP)
* :github:`3056` - arch-specific inline functions cannot manipulate _kernel
* :github:`3025` - Implement _tsc_read equivalent for NiosII
* :github:`3024` - Implement _tsc_read equivalent for ARM
* :github:`3007` - Provide board documentation for all boards
* :github:`2991` - Enable NXP Cortex-M SoCs with MCUXpresso SDK
* :github:`2975` - add arc nSIM simulator build target
* :github:`2972` - extend sanitycheck to support ARC simulator
* :github:`2956` - I2C Slave Driver
* :github:`2954` - nRF5x interrupt-driven TX UART driver
* :github:`2952` - ADC: ADC fails to work when fetch multiple sequence entries
* :github:`2934` - Ecosystem and Tool Support
* :github:`2879` - ARC: Interrupt latency too large
* :github:`2645` - create DRAM_BASE_ADDRESS and SIZE config parameters
* :github:`2623` - nRF52 UART behaviour sensitive to timing of baud rate initialization.
* :github:`2568` - Have the kernel give the leftover memory to the IP stack
* :github:`2422` - O(1) pend queue support
* :github:`2353` - nRF5x: Refactor gpio_nrf5.c to use the MDK headers
* :github:`1678` - support edge/pulse interrupts on ARC
* :github:`1662` - Problem sourcing the project environment file from zsh
* :github:`1600` - Could you give me BTP upper tester demo which can work on PC
* :github:`1464` - SYS_CLOCK_HW_CYCLES_PER_SEC is missing a default value

---

### Doc Releases Release Notes 1.14 (`doc/releases/release-notes-1.14.rst`)

:orphan:

.. _zephyr_1.14:
.. _zephyr_1.14.1:

Zephyr 1.14.3
####################

This is an LTS maintenance release with fixes.

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

The following security vulnerabilities (CVEs) were addressed in this
release:

* CVE-2020-10066
* CVE-2020-10069
* CVE-2020-13601
* CVE-2020-13602

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

Issues Fixed
************

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`18334` - DNS resolution is broken for some addresses in master/2.0-pre
* :github:`19917` - Bluetooth: Controller: Missing LL_ENC_RSP after HCI LTK Negative Reply
* :github:`21107` - LL_ASSERT and 'Imprecise data bus error' in LL Controller
* :github:`21257` - tests/net/net_pkt failed on mimxrt1050_evk board.
* :github:`21299` - bluetooth: Controller does not release buffer on central side after peripheral reset
* :github:`21601` - '!radio_is_ready()' failed
* :github:`21756` - tests/kernel/obj_tracing failed on mec15xxevb_assy6853 board.
* :github:`22968` - Bluetooth: controller: LEGACY: ASSERTION failure on invalid packet sequence
* :github:`23069` - Bluetooth: controller: Assert in data length update procedure
* :github:`23109` - LL.TS Test LL/CON/SLA/BV-129-C fails (split)
* :github:`23805` - Bluetooth: controller: Switching to non conn adv fails for Mesh LPN
* :github:`24601` - Bluetooth: Mesh: Config Client's net_key_status pulls two key indexes, should pull one.
* :github:`25518` - settings_fcb: Fix storing the data
* :github:`25519` - wrong debug function cause kinds of building error
* :github:`26080` - gPTP time sync fails if having more than one port
* :github:`28151` - gPTP should allow user setting of priority1 and priority2 fields used in BMCA
* :github:`28177` - gPTP gptp_priority_vector struct field ordering is wrong
* :github:`29386` - unexpected behavior when doing syscall with 7 or more arguments
* :github:`29858` - Bluetooth: Mesh: RPL cleared on LPN disconnect
* :github:`32430` - Bluetooth: thread crashes when configuring a non 0 Slave Latency
* :github:`32898` - Bluetooth: controller: Control PDU buffer leak into Data PDU buffer pool

Zephyr 1.14.2
####################

This is an LTS maintenance release with fixes.

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

The following security vulnerabilities (CVEs) were addressed in this
release:

* CVE-2020-10019
* CVE-2020-10021
* CVE-2020-10022
* CVE-2020-10023
* CVE-2020-10024
* CVE-2020-10027
* CVE-2020-10028

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

Issues Fixed
************

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`11617` - net: ipv4: udp: broadcast delivery not supported
* :github:`11743` - logging: add user mode access
* :github:`14459` - usb: samples: mass: doesn't build with FLASH overlay
* :github:`15119` - GPIO callback not disabled from an interrupt
* :github:`15339` - RISC-V: RV32M1: Load access fault when accessing GPIO port E
* :github:`15354` - counter: stm32: Issue with LSE clock source selection
* :github:`15373` - IPv4 link local packets are not sent with ARP ethernet type
* :github:`15443` - usb_dc_stm32: Missing semaphore initialization and missing pin remapping configuration
* :github:`15444` - Error initiating sdhc disk
* :github:`15497` - USB DFU: STM32: usb dfu mode doesn't work
* :github:`15507` - NRF52840: usb composite MSC + HID (with CONFIG_ENABLE_HID_INT_OUT_EP)
* :github:`15526` - Unhandled identity in bt_conn_create_slave_le
* :github:`15558` - support for power-of-two MPUs on non-XIP systems
* :github:`15601` - pwm: nRF default prescalar value is wrong
* :github:`15603` - Unable to use C++ Standard Library
* :github:`15605` - Unaligned memory access by ldrd
* :github:`15678` - Watchdog peripheral api docs aren't generated correctly.
* :github:`15698` - bluetooth: bt_conn: No proper ID handling
* :github:`15733` - Bluetooth: controller: Central Encryption setup overlaps Length Request procedure
* :github:`15794` - mps2_an385 crashes if CONFIG_INIT_STACKS=y and CONFIG_COVERAGE=y
* :github:`15817` - nrf52: HFXO is not turned off as expected
* :github:`15904` - concerns with use of CONFIG_BT_MESH_RPL_STORE_TIMEOUT in examples
* :github:`15911` - Stack size is smaller than it should be
* :github:`15975` - Openthread - fault with dual network interfaces
* :github:`16001` - ARC iotdk supports MPU and fpu in hardware but not enabled in kconfig
* :github:`16002` - the spi base reg address in arc_iot.dtsi has an error
* :github:`16010` - Coverage reporting fails on many tests
* :github:`16012` - Source IP address for DHCP renewal messages is unset
* :github:`16046` - modules are being processed too late.
* :github:`16080` - Zephyr UART shell crashes on start if main() is blocked
* :github:`16089` - Mcux Ethernet driver does not detect carrier anymore (it's alway on)
* :github:`16090` - mpu align support for code relocation on non-XIP system
* :github:`16143` - posix: clock_settime calculates the base time incorrectly
* :github:`16155` - drivers: can: wrong value used for filter mode set
* :github:`16257` - net: icmpv4: Zephyr sends echo reply with multicast source address
* :github:`16307` - cannot move location counter backwards error happen
* :github:`16323` - net: ipv6: tcp: unexpected reply to malformed HBH in TCP/IPv6 SYN
* :github:`16339` - openthread: off-by-one error when calculating ot_flash_offset for settings
* :github:`16354` - net: ipv6: Zephyr does not reply to fragmented packet
* :github:`16375` - net: ipv4: udp: Zephyr does not reply to a valid datagram with checksum zero
* :github:`16379` - net: ipv6: udp: Zephyr replies with illegal UDP checksum zero
* :github:`16411` - bad regex for west version check in host-tools.cmake
* :github:`16412` - on reel_board the consumption increases because TX pin is floating
* :github:`16413` - Missing dependency in cmake
* :github:`16414` - Backport west build --pristine
* :github:`16415` - Build errors with C++
* :github:`16416` - sram size for RT1015 and RT1020 needs to be update.
* :github:`16417` - issues with can filter mode set
* :github:`16418` - drivers: watchdog: sam0: check if timeout is valid
* :github:`16419` - Bluetooth: XTAL feature regression
* :github:`16478` - Bluetooth: Improper bonded peers handling
* :github:`16570` - [Coverity CID :198877]Null pointer dereferences in /subsys/net/ip/net_if.c
* :github:`16577` - [Coverity CID :198870]Error handling issues in /subsys/net/lib/lwm2m/lwm2m_obj_firmware_pull.c
* :github:`16581` - [Coverity CID :198866]Null pointer dereferences in /subsys/net/lib/dns/llmnr_responder.c
* :github:`16584` - [Coverity CID :198863]Error handling issues in /subsys/net/lib/sntp/sntp.c
* :github:`16600` - Bluetooth: Mesh: Proxy SAR timeout is not implemented
* :github:`16602` - Bluetooth: GATT Discovery: Descriptor Discovery by range Seg Fault
* :github:`16639` - eth: pinging frdm k64f eventually leads to unresponsive ethernet device
* :github:`16678` - LPN establishment of Friendship never completes if there is no response to the initial Friend Poll
* :github:`16711` - Settings reworked to const char processing
* :github:`16734` - Bluetooth: GATT: Writing 1 byte to a CCC access invalid memory
* :github:`16745` - PTHREAD_MUTEX_DEFINE(): don't store into the _k_mutex section
* :github:`16746` - boards: nrf52840_pca10059: Configure NFC pins as GPIOs by default
* :github:`16749` - IRQ_CONNECT and irq_enable calls in the SiFive UART driver is misconfigured
* :github:`16750` - counter:  lack of interrupt when CC=0
* :github:`16760` - K_THREAD_STACK_EXTERN() confuses gen_kobject_list.py
* :github:`16779` - [Zephyr v1.14] ARM: fix the start address of MPU guard in stack-fail checking (when building with no user mode)
* :github:`16799` - Bluetooth: L2CAP: Interpretation of SCID and DCID in Disconnect is wrong
* :github:`16861` - nRF52: UARTE: Data corruption right after resuming device
* :github:`16864` - Bluetooth: Mesh: Rx buffer exhaustion causes deadlock
* :github:`16893` - Bluetooth: Multiple local IDs, privacy problem
* :github:`16943` - Missing test coverage for lib/os/crc*.c
* :github:`16944` - Insufficient test coverage for lib/os/json.c
* :github:`17031` - Compiler warnings in settings module in Zephyr 1.14
* :github:`17038` - code relocation generating different memory layout cause user mode not working
* :github:`17041` - [1.14] Bluetooth: Mesh: RPL handling is not in line with the spec
* :github:`17055` - net: Incorrect data length after the connection is established
* :github:`17057` - Bluetooth: Mesh: Implementation doesn't conform to latest errata and 1.0.1 version
* :github:`17092` - Bluetooth: GAP/IDLE/NAMP/BV-01-C requires Read by UUID
* :github:`17170` - x86_64 crash with spinning child thread
* :github:`17171` - Insufficient code coverage for lib/os/fdtable.c
* :github:`17177` - ARM: userspace/test_bad_syscall fails on ARMv8-M
* :github:`17190` - net-mgmt should pass info element size to callback
* :github:`17250` - After first GC operation the 1st sector had become scratch and the 2nd sector had became write sector.
* :github:`17251` - w25q: erase operations must be erase-size aligned
* :github:`17262` - insufficient code coverage for lib/os/base64.c
* :github:`17288` - Bluetooth: controller: Fix handling of L2CAP start frame with zero PDU length
* :github:`17294` - DB corruption when adding/removing service
* :github:`17337` - ArmV7-M mpu sub region alignment
* :github:`17338` - kernel objects address check in elf_helper.py
* :github:`17368` - Time Slicing cause system sleep short time
* :github:`17399` - LwM2M: Can't use an alternate mbedtls implementation
* :github:`17401` - LwM2M: requires that CONFIG_NET_IPV* be enabled (can't use 100% offloaded IP stack)
* :github:`17415` - Settings Module - settings_line_val_read() returning -EINVAL instead of 0 for deleted setting entries
* :github:`17427` - net: IPv4/UDP datagram with zero src addr and TTL causes Zephyr to segfault
* :github:`17450` - net: IPv6/UDP datagram with unspecified addr and zero hop limit causes Zephyr to quit
* :github:`17463` - Bluetooth: API limits usage of MITM flags in Pairing Request
* :github:`17534` - Race condition in GATT API.
* :github:`17595` - two userspace tests fail if stack canaries are enabled in board configuration
* :github:`17600` - Enable Mesh Friend support in Bluetooth tester application
* :github:`17613` - POSIX arch: occasional failures of tests/kernel/sched/schedule_api on CI
* :github:`17630` - efr32mg_sltb004a tick clock error
* :github:`17723` - Advertiser never clears state flags
* :github:`17732` - cannot use bt_conn_security in connected callback
* :github:`17764` - Broken link to latest development version of docs
* :github:`17802` - [zephyr 1.14] Address type 0x02 is used by LE Create Connection in device privacy mode
* :github:`17820` - Mesh  bug report In access.c
* :github:`17838` - state DEVICE_PM_LOW_POWER_STATE of Device Power Management
* :github:`17843` - Bluetooth: controller: v1.14.x release conformance test failures
* :github:`17857` - GATT: Incorrect byte order for GATT database hash
* :github:`17861` - Tester application lacks BTP Discover All Primary Services handler
* :github:`17880` - Unable to re-connect to privacy enabled peer when using stack generated Identity
* :github:`17944` - [zephyr 1.14]  LE Enhanced Connection Complete indicates Resolved Public once connected to Public peer address
* :github:`17948` - Bluetooth: privacy: Reconnection issue
* :github:`17967` - drivers/pwm/pwm_api test failed on frdm_k64f board.
* :github:`17971` - [zephyr 1.14] Unable to register GATT service that was unregistered before
* :github:`17979` - Security level cannot be elevated after re-connection with privacy
* :github:`18021` - Socket vtable can access null pointer callback function
* :github:`18090` - [zephyr 1.14][MESH/NODE/FRND/FN/BV-08-C] Mesh Friend queues more messages than indicates it's Friend Cache
* :github:`18178` - BLE Mesh When Provisioning Use Input OOB Method
* :github:`18183` - [zephyr 1.14][GATT/SR/GAS/BV-07-C] GATT Server does not inform change-unaware client about DB changes
* :github:`18297` - Bluetooth: SMP: Pairing issues
* :github:`18306` - Unable to reconnect paired devices with controller privacy disabled (host privacy enabled)
* :github:`18308` - net: TCP/IPv6 set of fragmented packets causes Zephyr to quit
* :github:`18394` - [Coverity CID :203464]Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`18462` - potential buffer overrun in logging infrastructure
* :github:`18580` - Bluetooth: Security fail on initial pairing
* :github:`18658` - Bluetooth BR/EDR encryption key negotiation vulnerability
* :github:`18739` - k_uptime_get_32() does not behave as documented
* :github:`18935` - [Zephyr 1.14] drivers: flash: spi_nor: Problematic write with page boundaries
* :github:`18961` - [Coverity CID :203912]Error handling issues in /samples/net/sockets/coap_client/src/coap-client.c
* :github:`19015` - Bluetooth: Mesh: Node doesn't respond to "All Proxies" address
* :github:`19038` - [zephyr branch 1.14 and master -stm32-netusb]:errors when i view RNDIS Device‘s properties on Windows 10
* :github:`19059` - i2c_ll_stm32_v2: nack on write is not handled correctly
* :github:`19103` - zsock_accept_ctx blocks even when O_NONBLOCK is specified
* :github:`19165` - zephyr_file generates bad links on branches
* :github:`19263` - Bluetooth: Mesh: Friend Clear Procedure Timeout
* :github:`19515` - Bluetooth: Controller: assertion failed
* :github:`19612` - ICMPv6 packet is routed to wrong interface when peer is not found in neighbor cache
* :github:`19678` - Noticeable delay between processing multiple client connection requests (200ms+)
* :github:`19889` - Buffer leak in GATT for Write Without Response and Notifications
* :github:`19982` - Periodically wake up log process thread consume more power
* :github:`20042` - Telnet can connect only once
* :github:`20100` - Slave PTP clock time is updated with large value when Master PTP Clock time has changed
* :github:`20229` - cmake: add --divide to GNU assembler options for x86
* :github:`20299` - bluetooth: host: Connection not being unreferenced when using CCC match callback
* :github:`20313` - Zperf documentation points to wrong iPerf varsion
* :github:`20811` - spi driver
* :github:`20970` - Bluetooth: Mesh: seg_tx_reset in the transport layer
* :github:`21131` - Bluetooth: host: Subscriptions not removed upon unpair
* :github:`21306` - ARC: syscall register save/restore needs backport to 1.14
* :github:`21431` - missing async uart.h system calls
* :github:`21432` - watchdog subsystem has no system calls
* :github:`22275` - arm: cortex-R & M: CONFIG_USERSPACE: intermittent Memory region write access failures
* :github:`22280` - incorrect linker routing
* :github:`23153` - Binding AF_PACKET socket second time will fail with multiple network interfaces
* :github:`23339` - tests/kernel/sched/schedule_api failed on mps2_an385 with v1.14 branch.
* :github:`23346` - bl65x_dvk boards do not reset after flashing

Zephyr 1.14.1
#############

This is an LTS maintenance release with fixes, as well as Bluetooth
qualification listings for the Bluetooth protocol stack included in Zephyr.

See :ref:`zephyr_1.14.0` for the previous version release notes.

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

The following security vulnerability (CVE) was addressed in this
release:

* Fixes CVE-2019-9506: The Bluetooth BR/EDR specification up to and
  including version 5.1 permits sufficiently low encryption key length
  and does not prevent an attacker from influencing the key length
  negotiation. This allows practical brute-force attacks (aka "KNOB")
  that can decrypt traffic and inject arbitrary ciphertext without the
  victim noticing.

Bluetooth
*********

* Qualification:

  * 1.14.x Host subsystem qualified with QDID 139258
  * 1.14.x Mesh subsystem qualified with QDID 139259
  * 1.14.x Controller component qualified on Nordic nRF52 with QDID 135679

Issues Fixed
************

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`11617` - net: ipv4: udp: broadcast delivery not supported
* :github:`11743` - logging: add user mode access
* :github:`14459` - usb: samples: mass: doesn't build with FLASH overlay
* :github:`15279` - mempool alignment might cause a memory block allocated twice
* :github:`15339` - RISC-V: RV32M1: Load access fault when accessing GPIO port E
* :github:`15354` - counter: stm32: Issue with LSE clock source selection
* :github:`15373` - IPv4 link local packets are not sent with ARP ethernet type
* :github:`15443` - usb_dc_stm32: Missing semaphore initialization and missing pin remapping configuration
* :github:`15444` - Error initiating sdhc disk
* :github:`15497` - USB DFU: STM32: usb dfu mode doesn't work
* :github:`15507` - NRF52840: usb composite MSC + HID (with CONFIG_ENABLE_HID_INT_OUT_EP)
* :github:`15526` - Unhandled identity in bt_conn_create_slave_le
* :github:`15558` - support for power-of-two MPUs on non-XIP systems
* :github:`15601` - pwm: nRF default prescalar value is wrong
* :github:`15603` - Unable to use C++ Standard Library
* :github:`15605` - Unaligned memory access by ldrd
* :github:`15606` - trickle.c can't work for multiple triggerings
* :github:`15678` - Watchdog peripheral api docs aren't generated correctly.
* :github:`15698` - bluetooth: bt_conn: No proper ID handling
* :github:`15733` - Bluetooth: controller: Central Encryption setup overlaps Length Request procedure
* :github:`15794` - mps2_an385 crashes if CONFIG_INIT_STACKS=y and CONFIG_COVERAGE=y
* :github:`15817` - nrf52: HFXO is not turned off as expected
* :github:`15904` - concerns with use of CONFIG_BT_MESH_RPL_STORE_TIMEOUT in examples
* :github:`15911` - Stack size is smaller than it should be
* :github:`15975` - Openthread - fault with dual network interfaces
* :github:`16001` - ARC iotdk supports MPU and fpu in hardware but not enabled in kconfig
* :github:`16002` - the spi base reg address in arc_iot.dtsi has an error
* :github:`16010` - Coverage reporting fails on many tests
* :github:`16012` - Source IP address for DHCP renewal messages is unset
* :github:`16027` - support for no-flash systems
* :github:`16046` - modules are being processed too late.
* :github:`16090` - mpu align support for code relocation on non-XIP system
* :github:`16107` - Using bt_gatt_read() with 'by_uuid' method returns 3 extra bytes
* :github:`16143` - posix: clock_settime calculates the base time incorrectly
* :github:`16155` - drivers: can: wrong value used for filter mode set
* :github:`16257` - net: icmpv4: Zephyr sends echo reply with multicast source address
* :github:`16307` - cannot move location counter backwards error happen
* :github:`16323` - net: ipv6: tcp: unexpected reply to malformed HBH in TCP/IPv6 SYN
* :github:`16339` - openthread: off-by-one error when calculating ot_flash_offset for settings
* :github:`16354` - net: ipv6: Zephyr does not reply to fragmented packet
* :github:`16375` - net: ipv4: udp: Zephyr does not reply to a valid datagram with checksum zero
* :github:`16379` - net: ipv6: udp: Zephyr replies with illegal UDP checksum zero
* :github:`16411` - bad regex for west version check in host-tools.cmake
* :github:`16412` - on reel_board the consumption increases because TX pin is floating
* :github:`16413` - Missing dependency in cmake
* :github:`16414` - Backport west build --pristine
* :github:`16415` - Build errors with C++
* :github:`16416` - sram size for RT1015 and RT1020 needs to be update.
* :github:`16417` - issues with can filter mode set
* :github:`16418` - drivers: watchdog: sam0: check if timeout is valid
* :github:`16419` - Bluetooth: XTAL feature regression
* :github:`16478` - Bluetooth: Improper bonded peers handling
* :github:`16570` - [Coverity CID :198877]Null pointer dereferences in /subsys/net/ip/net_if.c
* :github:`16577` - [Coverity CID :198870]Error handling issues in /subsys/net/lib/lwm2m/lwm2m_obj_firmware_pull.c
* :github:`16581` - [Coverity CID :198866]Null pointer dereferences in /subsys/net/lib/dns/llmnr_responder.c
* :github:`16584` - [Coverity CID :198863]Error handling issues in /subsys/net/lib/sntp/sntp.c
* :github:`16594` - net: dns: Zephyr is unable to unpack mDNS answers produced by another Zephyr node
* :github:`16600` - Bluetooth: Mesh: Proxy SAR timeout is not implemented
* :github:`16602` - Bluetooth: GATT Discovery: Descriptor Discovery by range Seg Fault
* :github:`16639` - eth: pinging frdm k64f eventually leads to unresponsive ethernet device
* :github:`16678` - LPN establishment of Friendship never completes if there is no response to the initial Friend Poll
* :github:`16711` - Settings reworked to const char processing
* :github:`16734` - Bluetooth: GATT: Writing 1 byte to a CCC access invalid memory
* :github:`16745` - PTHREAD_MUTEX_DEFINE(): don't store into the _k_mutex section
* :github:`16746` - boards: nrf52840_pca10059: Configure NFC pins as GPIOs by default
* :github:`16749` - IRQ_CONNECT and irq_enable calls in the SiFive UART driver is misconfigured
* :github:`16750` - counter:  lack of interrupt when CC=0
* :github:`16760` - K_THREAD_STACK_EXTERN() confuses gen_kobject_list.py
* :github:`16779` - [Zephyr v1.14] ARM: fix the start address of MPU guard in stack-fail checking (when building with no user mode)
* :github:`16799` - Bluetooth: L2CAP: Interpretation of SCID and DCID in Disconnect is wrong
* :github:`16864` - Bluetooth: Mesh: Rx buffer exhaustion causes deadlock
* :github:`16893` - Bluetooth: Multiple local IDs, privacy problem
* :github:`16943` - Missing test coverage for lib/os/crc\*.c
* :github:`16944` - Insufficient test coverage for lib/os/json.c
* :github:`17031` - Compiler warnings in settings module in Zephyr 1.14
* :github:`17038` - code relocation generating different memory layout cause user mode not working
* :github:`17041` - [1.14] Bluetooth: Mesh: RPL handling is not in line with the spec
* :github:`17055` - net: Incorrect data length after the connection is established
* :github:`17057` - Bluetooth: Mesh: Implementation doesn't conform to latest errata and 1.0.1 version
* :github:`17092` - Bluetooth: GAP/IDLE/NAMP/BV-01-C requires Read by UUID
* :github:`17170` - x86_64 crash with spinning child thread
* :github:`17177` - ARM: userspace/test_bad_syscall fails on ARMv8-M
* :github:`17190` - net-mgmt should pass info element size to callback
* :github:`17250` - After first GC operation the 1st sector had become scratch and the 2nd sector had became write sector.
* :github:`17251` - w25q: erase operations must be erase-size aligned
* :github:`17262` - insufficient code coverage for lib/os/base64.c
* :github:`17288` - Bluetooth: controller: Fix handling of L2CAP start frame with zero PDU length
* :github:`17294` - DB corruption when adding/removing service
* :github:`17337` - ArmV7-M mpu sub region alignment
* :github:`17338` - kernel objects address check in elf_helper.py
* :github:`17368` - Time Slicing cause system sleep short time
* :github:`17399` - LwM2M: Can't use an alternate mbedtls implementation
* :github:`17401` - LwM2M: requires that CONFIG_NET_IPV\* be enabled (can't use 100% offloaded IP stack)
* :github:`17415` - Settings Module - settings_line_val_read() returning -EINVAL instead of 0 for deleted setting entries
* :github:`17427` - net: IPv4/UDP datagram with zero src addr and TTL causes Zephyr to segfault
* :github:`17450` - net: IPv6/UDP datagram with unspecified addr and zero hop limit causes Zephyr to quit
* :github:`17463` - Bluetooth: API limits usage of MITM flags in Pairing Request
* :github:`17534` - Race condition in GATT API.
* :github:`17564` - Missing stdlib.h include when C++ standard library is used.
* :github:`17595` - two userspace tests fail if stack canaries are enabled in board configuration
* :github:`17600` - Enable Mesh Friend support in Bluetooth tester application
* :github:`17613` - POSIX arch: occasional failures of tests/kernel/sched/schedule_api on CI
* :github:`17723` - Advertiser never clears state flags
* :github:`17732` - cannot use bt_conn_security in connected callback
* :github:`17764` - Broken link to latest development version of docs
* :github:`17789` - Bluetooth: host: conn.c missing parameter copy
* :github:`17802` - [zephyr 1.14] Address type 0x02 is used by LE Create Connection in device privacy mode
* :github:`17809` - Bluetooth Mesh message cached too early when LPN
* :github:`17820` - Mesh  bug report In access.c
* :github:`17821` - Mesh Bug on access.c
* :github:`17843` - Bluetooth: controller: v1.14.x release conformance test failures
* :github:`17857` - GATT: Incorrect byte order for GATT database hash
* :github:`17861` - Tester application lacks BTP Discover All Primary Services handler
* :github:`17880` - Unable to re-connect to privacy enabled peer when using stack generated Identity
* :github:`17882` - [zephyr 1.14]  Database Out of Sync error is not returned as expected
* :github:`17907` - BLE Mesh when resend use GATT bearer
* :github:`17932` - BLE Mesh When Friend Send Seg Message To LPN
* :github:`17936` - Bluetooth: Mesh: The canceled buffer is not free, causing a memory leak
* :github:`17944` - [zephyr 1.14]  LE Enhanced Connection Complete indicates Resolved Public once connected to Public peer address
* :github:`17948` - Bluetooth: privacy: Reconnection issue
* :github:`17971` - [zephyr 1.14] Unable to register GATT service that was unregistered before
* :github:`17977` - BLE Mesh When IV Update Procedure
* :github:`17979` - Security level cannot be elevated after re-connection with privacy
* :github:`18013` - BLE Mesh On Net Buffer free issue
* :github:`18021` - Socket vtable can access null pointer callback function
* :github:`18090` - [zephyr 1.14][MESH/NODE/FRND/FN/BV-08-C] Mesh Friend queues more messages than indicates it's Friend Cache
* :github:`18150` - [zephyr 1.14] Host does not change the RPA
* :github:`18178` - BLE Mesh When Provisioning Use Input OOB Method
* :github:`18183` - [zephyr 1.14][GATT/SR/GAS/BV-07-C] GATT Server does not inform change-unaware client about DB changes
* :github:`18194` - [zephyr 1.14][MESH/NODE/CFG/HBP/BV-05-C] Zephyr does not send Heartbeat message on friendship termination
* :github:`18297` - Bluetooth: SMP: Pairing issues
* :github:`18306` - Unable to reconnect paired devices with controller privacy disabled (host privacy enabled)
* :github:`18308` - net: TCP/IPv6 set of fragmented packets causes Zephyr to quit
* :github:`18394` - [Coverity CID :203464]Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`18462` - potential buffer overrun in logging infrastructure
* :github:`18522` - BLE: Mesh: When transport send seg_msg to LPN
* :github:`18580` - Bluetooth: Security fail on initial pairing
* :github:`18658` - Bluetooth BR/EDR encryption key negotiation vulnerability
* :github:`18739` - k_uptime_get_32() does not behave as documented
* :github:`18813` - fs: nvs: Cannot delete entries
* :github:`18873` - zsock_socket() should support proto==0
* :github:`18935` - [Zephyr 1.14] drivers: flash: spi_nor: Problematic write with page boundaries
* :github:`18961` - [Coverity CID :203912]Error handling issues in /samples/net/sockets/coap_client/src/coap-client.c
* :github:`19015` - Bluetooth: Mesh: Node doesn't respond to "All Proxies" address
* :github:`19165` - zephyr_file generates bad links on branches
* :github:`19181` - sock_set_flag implementation in sock_internal.h does not work for 64 bit pointers
* :github:`19191` - problem with implementation of sock_set_flag

.. _zephyr_1.14.0:

Zephyr Kernel 1.14.0
####################

We are pleased to announce the release of Zephyr kernel version 1.14.0.

Major enhancements with this release include:

* The Zephyr project now supports over 160 different board configurations
  spanning 8 architectures. All architectures are rigorously tested and
  validated using one of the many simulation platforms supported by the
  project: QEMU, Renode, ARC Simulator, and the native POSIX configuration.

* The timing subsystem has been reworked and reimplemented, greatly
  simplifying the resulting drivers, removing thousands of lines
  of code, and reducing a typical kernel build size by hundreds of bytes.
  TICKLESS_KERNEL mode is now the default on all architectures.

* The Symmetric Multi-Processing (SMP) subsystem continues to evolve
  with the addition of a new CPU affinity API that can "pin" threads to
  specific cores or sets of cores. The core kernel no longer uses the
  global irq_lock on SMP systems, and exclusively uses the spinlock API
  (which on uniprocessor systems reduces to the same code).

* Zephyr now has support for the x86_64 architecture. It is currently
  implemented only for QEMU targets, supports arbitrary numbers of CPUs,
  and runs in SMP mode by default, our first platform to do so.

* We've overhauled the Network packet (:ref:`net-pkt <net_pkt_interface>`)
  API and moved the majority of components and protocols to use the
  :ref:`BSD socket API <bsd_sockets_interface>`, including MQTT, CoAP,
  LWM2M, and SNTP.

* We enhanced the native POSIX port by adding UART, USB, and display
  drivers. Based on this port, we added a simulated NRF52832 SoC which enables
  running full system, multi-node simulations, without the need of real
  hardware.

* We added an experimental BLE split software Controller with Upper Link Layer
  and Lower Link Layer for supporting multiple BLE radio hardware
  architectures.

* The power management subsystem has been overhauled to support device idle
  power management and move most of the power management logic from the
  application back to the BSP.

* We introduced major updates and an overhaul to both the logging and
  shell subsystems, supporting multiple back-ends, integration
  of logging into the shell, and delayed log processing.

* Introduced the ``west`` tool for management of multiple repositories and
  enhanced support for flashing and debugging.

* Added support for application user mode, application memory
  partitions, and hardware stack protection in ARMv8m

* Applied MISRA-C code guideline on the kernel and core components of Zephyr.
  MISRA-C is a well established code guideline focused on embedded systems and
  aims to improve code safety, security and portability.

The following sections provide detailed lists of changes by component.

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

The following security vulnerabilities (CVEs) were addressed in this release:

* Tinycrypt HMAC-PRNG implementation doesn't take the HMAC state
  clearing into account as it performs the HMAC operations, thereby using a
  incorrect HMAC key for some of the HMAC operations.
  (CVE-2017-14200)

* The shell DNS command can cause unpredictable results due to misuse of stack
  variables.
  (CVE-2017-14201)

* The shell implementation does not protect against buffer overruns resulting
  in unpredictable behavior.
  (CVE-2017-14202)

* We introduced Kernel Page Table Isolation, a technique for
  mitigating the Meltdown security vulnerability on x86 systems. This
  technique helps isolate user and kernel space memory by ensuring
  non-essential kernel pages are unmapped in the page tables when the CPU
  is running in the least privileged user mode, Ring 3. This is the
  fix for Rogue Data Cache Load. (CVE-2017-5754)

* We also addressed these CVEs for the x86 port:

  - Bounds Check Bypass (CVE-2017-5753)
  - Branch Target Injection (CVE-2017-5715)
  - Speculative Store Bypass (CVE-2018-3639)
  - L1 Terminal Fault (CVE-2018-3620)
  - Lazy FP State Restore (CVE-2018-3665)

Kernel
******

* The timing subsystem has been reworked and mostly replaced:

   - The timer driver API has been extensively reworked, greatly
     simplifying the resulting drivers. By removing thousands of lines
     of code, we reduced the size of a typical kernel build by hundreds
     of bytes.

   - TICKLESS_KERNEL mode is now the default on all architectures.  Many
     bugs were fixed in this support.

* Lots of work on the rapidly-evolving SMP subsystem:

  - There is a new CPU affinity API available to "pin" threads to
    specific cores or sets of cores.

  - The core kernel is now 100% free of use of the global irq_lock on
    SMP systems, and exclusively uses the spinlock API (which on
    uniprocessor systems reduces to the same code).

  - Zephyr now has a simple interprocessor interrupt framework for
    applications, such as the scheduler, to use for synchronously
    notifying other processors of state changes.  It's currently implemented
    only on x86_64 and used only for thread abort.

* Zephyr now has support for the x86_64 architecture.  It is
  currently implemented only for QEMU targets.

  - It supports arbitrary numbers of CPUs in SMP, and runs in SMP mode
    by default, our first platform to do so.

  - It currently runs code built for the "x32" ABI, which is a native
    64-bit hardware state, where pointers are 32 bit in memory.
    Zephyr still has some lurking word size bugs that will need to be
    fixed to turn on native 64 bit code generation.

* K_THREAD_STACK_BUFFER() has been demoted to a private API and will be removed
  in a future Zephyr release.
* A new API sys_mutex has been introduced. It has the same semantics
  as a k_mutex, but the memory for it can reside in user memory and so
  no explicit permission management is required.
* sys_mem_pool() now uses a sys_mutex() for concurrency control.
* Memory protection changes:

  - CONFIG_APPLICATION_MEMORY option has been removed from Zephyr. All test
    cases have been appropriately converted to use memory domains.
  - The build time memory domain partition generation mechanism, formerly
    an optional feature under CONFIG_APP_SHARED_MEM, has been overhauled
    and is now a core part of memory protection.
  - Userspace is no longer enabled by default for tests. Tests that are
    written to execute wholly or in part in user mode will need to enable
    CONFIG_TEST_USERSPACE in the test's project configuration. There are
    assertions in place to enforce that this is done.
  - The default stack size for handling system calls has been increased to
    1024 bytes.

* We started applying MISRA-C (https://www.misra.org.uk/) code guideline on
  the Zephyr kernel. MISRA-C is a well established code guideline focused on
  embedded systems and aims to improve code safety, security, and portability.
  This initial effort was narrowed to the Zephyr kernel and architecture
  code, and focused only on mandatory and required rules. The following rules
  were addressed:

  - Namespace changes
  - Normalize switch() operators
  - Avoid implicit conversion to boolean types
  - Fix and normalize headers guard
  - Make if() evaluate boolean operands
  - Remove all VLAs (variable length array)
  - Avoid undefined and implementation defined behavior with shift operator
  - Remove recursions

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

* Introduced X86_64 (64 bit) architecture support with SMP features
* High-level Kconfig symbol structure for Trusted Execution

* ARM:

  * Re-architect Memory Protection code for ARM and NXP
  * Fully support application user mode, memory partitions, and
    stack protection in ARMv8m
  * Support built-in stack overflow protection in user mode in ARMv8m
  * Fix stack overflow error reporting
  * Support executing from SRAM in XIP builds
  * Support non-cacheable memory sections
  * Remove power-of-two align and size requirement for ARMv8-m
  * Introduce sync barriers in ARM-specific IRQ lock/unlock functions
  * Enforce double-word stack alignment on exception entry
  * API to allow Non-Secure FPU Access (ARMv8-M)
  * Various enhancements in ARM system boot code
  * Indicate Secure domain fault in Non-Secure fault exception
  * Update ARM CMSIS headers to version 5.4.0

* ARC:

  * Userspace and MPU driver improvements
  * Optimization of the thread stack definition macros
  * Bug fixes: handling of lp_xxx registers in _rirq_return_from_coop, nested
    interrupt handling, hardware stack bounds checking, execution benchmarking
  * Atomic operations are now usable from user mode on all ARC CPUs

* x86:

  - Support for non-PAE page tables has been dropped.
  - Fixed various security CVEs related to micro-architecture side-effects of
    speculative execution, as detailed in the security notes.
  - Added robustness when reporting exceptions generated due to stack
    overflows or induced in user mode
  - Pages containing read-only data no longer have the execute disable (XD)
    bit un-set.
  - Fix potential IRQ stack corruption when handling double faults


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

* Added the all new :ref:`NRF52 simulated board <nrf52_bsim>`:
  This simulator models some of the hardware in an NRF52832 SOC, to enable
  running full system, multi-node simulations, without the need of real
  hardware.  It enables fast, reproducible testing, development, and debugging
  of an application, BlueTooth (BT) stack, and kernel. It relies on `BabbleSim`_
  to simulate the radio physical layer.

* Added SoC configuration for nRF9160 and Musca ARM Cortex-M33 CPU

* Added support for the following ARM boards:

  * 96b_stm32_sensor_mez
  * b_l072z_lrwan1
  * bl652_dvk
  * bl654_dvk
  * cy8ckit_062_wifi_bt_m0
  * cy8ckit_062_wifi_bt_m4
  * efm32hg_slstk3400a
  * efm32pg_stk3402a
  * efr32mg_sltb004a
  * mimxrt1020_evk
  * mimxrt1060_evk
  * mimxrt1064_evk
  * nrf52832_mdk
  * nrf52840_blip
  * nrf52840_mdk
  * nrf52840_papyr
  * nrf52840_pca10090
  * nrf9160_pca10090
  * nucleo_f302r8
  * nucleo_f746zg
  * nucleo_f756zg
  * nucleo_l496zg
  * nucleo_l4r5zi
  * particle_argon
  * particle_xenon
  * v2m_musca

* Added support for the following RISC-V boards:

  * rv32m1_vega

* Added support for the following ARC boards:
  * Synopsys ARC IoT DevKit
  * Several ARC simulation targets (ARC nSIM EM/SEM; with and without MPU stack guards)

* Added support for the following shield boards:

  * frdm_kw41z
  * x_nucleo_iks01a1
  * x_nucleo_iks01a2

.. _BabbleSim:
   https://BabbleSim.github.io

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

* Added new drivers and backends for ``native_posix``:

  * A UART driver that maps the Zephyr UART to a new host PTY
  * A USB driver that can expose a host connected USB device
  * A display driver that will render to a dedicated window using the SDL
    library
  * A dedicated backend for the new logger subsystem

* Counter

  * Refactored API
  * Ported existing counter and RTC drivers to the new API
  * Deprecated legacy API

* RTC

  - Deprecated the RTC API. The Counter API should be used instead

* UART

  * Added asynchronous API.
  * Added implementation of the new asynchronous API for nRF series (UART and
    UARTE).

* ADC

  * ADC driver APIs are now available to threads running in user mode.
  * Overhauled adc_dw and renamed it to adc_intel_quark_se_c1000_ss
  * Fixed handling of invalid sampling requests

* Display

  * Introduced mcux elcdif shim driver
  * Added support for ssd16xx monochrome controllers
  * Added support for ssd1608, gde029a1, and hink e0154a05
  * Added SDL based display emulation driver
  * Added SSD1673 EPD controller driver
  * Added SSD1306 display controller driver


* Flash:

  * nRF5 flash driver support UICR operations
  * Added driver for STM32F7x series
  * Added flash driver support for Atmel SAM E70
  * Added a generic spi nor flash driver
  * Added flash driver for SiLabs Gecko SoCs

* Ethernet:

  * Extended mcux driver for i.mx rt socs
  * Added driver for Intel PRO/1000 Ethernet controller

* I2C

  * Added mcux lpi2c shim driver
  * Removed deprecated i2c_atmel_sam3 driver
  * Introduced Silabs i2c shim driver
  * Added support for I2S stm32

* Pinmux

  * Added RV32M1 driver
  * Added pinmux driver for Intel S1000
  * Added support for STM32F302x8

* PWM

  * Added SiFive PWM driver
  * Added Atmel SAM PWM driver
  * Converted nRF drivers to use device tree

* Sensor

  * Added lis2ds12, lis2dw12, lis2mdl, and lsm303dlhc drivers
  * Added ms5837 driver
  * Added support for Nordic QDEC
  * Converted drivers to use device tree

* Serial

  * Added RV32M1 driver
  * Added new asynchronous UART API
  * Added support for ARM PL011 UART
  * Introduced Silabs leuart shim serial driver
  * Adapted gecko uart driver for Silabs EFM32HG

* USB

  * Added native_posix USB driver
  * Added usb device driver for Atmel SAM E70 family
  * Added nRF52840 USBD driver


* Other Drivers

  * clock_control: Added RV32M1 driver
  * console: Removed telnet driver
  * entropy: Added Atmel SAM entropy generator driver
  * spi: Converted nRF drivers to use device tree
  * watchdog: Converted drivers to new API
  * wifi: simplelink: Implemented setsockopt() for TLS offload
  * wifi: Added inventek es-WiFi driver
  * timer: Refactored and accuracy improvements of the arcv2 timer driver (boot
    time measurements)
  * timer: Added/reworked Xtensa, RISV-V, NRF, HPET, and ARM systick drivers
  * gpio: Added RV32M1 driver
  * hwinfo: Added new hwinfo API and drivers
  * ipm: Added IMX IPM driver for i.MX socs
  * interrupt_controller: Added RV32M1 driver
  * interrupt_controller: Added support for STM32F302x8 EXTI_LINES
  * neural_net: Added Intel GNA driver
  * can: Added socket CAN support


Networking
**********

* The :ref:`BSD socket API <bsd_sockets_interface>` should be used by
  applications for any network connectivity needs.
* Majority of the network sample applications were converted to use
  the BSD socket API.
* New BSD socket based APIs were created for these components and protocols:

  - :ref:`MQTT <mqtt_socket_interface>`
  - :ref:`CoAP <coap_sock_interface>`
  - :ref:`LWM2M <lwm2m_interface>`
  - :ref:`SNTP <sntp_interface>`
* net-app client and server APIs were removed. This also required removal of
  the following net-app based legacy APIs:

  - MQTT
  - CoAP
  - SNTP
  - LWM2M
  - HTTP client and server
  - Websocket
* Network packet (:ref:`net-pkt <net_pkt_interface>`) API overhaul. The new
  net-pkt API uses less memory and is more streamlined than the old one.
* Implement following BSD socket APIs: ``freeaddrinfo()``, ``gethostname()``,
  ``getnameinfo()``, ``getsockopt()``, ``select()``, ``setsockopt()``,
  ``shutdown()``
* Converted BSD socket code to use global file descriptor numbers.
* Network subsystem converted to use new :ref:`logging system <logging_api>`.
* Added support for disabling IPv4, IPv6, UDP, and TCP simultaneously.
* Added support for :ref:`BSD socket offloading <net_socket_offloading>`.
* Added support for long lifetime IPv6 prefixes.
* Added enhancements to IPv6 multicast address checking.
* Added support for IPv6 Destination Options Header extension.
* Added support for packet socket (AF_PACKET).
* Added support for socket CAN (AF_CAN).
* Added support for SOCKS5 proxy in MQTT client.
* Added support for IPSO Timer object in LWM2M.
* Added support for receiving gratuitous ARP request.
* Added sample application for Google IoT Cloud.
* :ref:`Network interface <net_if_interface>` numbering starts now from 1 for
  POSIX compatibility.
* :ref:`OpenThread <thread_protocol_interface>` enhancements.
* :zephyr:code-sample:`zperf <zperf>` sample application fixes.
* :ref:`LLDP <lldp_interface>` (Link Layer Discovery Protocol) enhancements.
* ARP cache update fix.
* gPTP link delay calculation fixes.
* Changed how network data is passed from
  :ref:`L2 to network device driver <network_stack_architecture>`.
* Removed RPL (Ripple) IPv6 mesh routing support.
* MQTT is now available to threads running in user mode.
* Network device driver additions and enhancements:

  - Added Intel PRO/1000 Ethernet driver (e1000).
  - Added SMSC9118/LAN9118 Ethernet driver (smsc911x).
  - Added Inventek es-WiFi driver for disco_l475_iot1 board.
  - Added support for automatically enabling QEMU based Ethernet drivers.
  - SAM-E70 gmac Ethernet driver Qav fixes.
  - enc28j60 Ethernet driver fixes and enhancements.

Bluetooth
*********

* Host:

  * GATT: Added support for Robust Caching
  * GATT: L2CAP: User driven flow control
  * Many fixes to Mesh
  * Fixed and improved persistent storage handling
  * Fixed direct advertising support
  * Fixed security level 4 handling
  * Add option to configure peripheral connection parameters
  * Added support for updating advertising data without having to restart advertising
  * Added API to iterate through existing bonds
  * Added support for setting channel map
  * Converted SPI HCI driver to use device tree

* New BLE split software Controller (experimental):

  - Split design with Upper Link Layer and Lower Link Layer
  - Enabled with :kconfig:option:`CONFIG_BT_LL_SW_SPLIT` (disabled by default)
  - Support for multiple BLE radio hardware architectures
  - Asynchronous handling of procedures in the ULL
  - Enhanced radio utilization (99% on continuous 100ms scan)
  - Latency resilience: Approx 100uS vs 10uS, 10x improvement
  - CPU and power usage: About 20% improvement
  - Multiple advertiser and scanner instances
  - Support for both Big and Little-Endian architectures

* Controller:

  * Added support for setting the public address
  * Multiple control procedures fixes and improvements
  * Advertising random delay fixes
  * Fixed a serious memory corruption issue during scanning
  * Fixes to RSSI measurement
  * Fixes to Connection Failed to be Established sequence
  * Transitioned to the new logging subsystem from syslog
  * Switched from ``-Ofast`` to ``-O2`` in time-critical sections
  * Reworked the RNG/entropy driver to make it available to apps
  * Multiple size optimizations to make it fit in smaller devices
  * nRF: Rework the PPI channel assignment to use pre-assigned ones
  * Add extensive documentation to the shared primitives

* Several fixes for big-endian architectures

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

* Added support for out-of-tree architectures.
* Added support for out-of-tree implementations of in-tree drivers.
* `BabbleSim`_ has been integrated in Zephyr's CI system.
* Introduced ``DT_`` prefix for all labels generated for information extracted
  from device tree (with a few exceptions, such as labels for LEDs and buttons,
  kept for backward compatibility with existing applications).  Deprecated all
  other defines that are generated.
* Introduce CMake variables for DT symbols, just as we have for CONFIG symbols.
* Move DeviceTree processing before Kconfig. Thereby allowing software
  to be configured based on DeviceTree information.
* Automatically change the KCONFIG_ROOT when the application directory
  has a Kconfig file.
* Added :ref:`west <west>` tool for multiple repository management
* Added support for :ref:`Zephyr modules <modules>`
* Build system ``flash`` and ``debug`` targets now require west
* Added generation of DT_<COMPAT>_<INSTANCE>_<PROP> defines which allowed
  sensor or other drivers on buses like I2C or SPI to not require dts fixup.
* Added proper support for device tree boolean properties

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

* Added a new display API and subsystem
* Added support for CTF Tracing
* Added support for JWT (JSON Web Tokens)
* Flash Maps:

  - API extension
  - Automatic generation of the list of flash areas

* Settings:

  - Enabled logging instead of ASSERTs
  - Always use the storage partition for FCB
  - Fixed FCB backend and common bugs

* Logging:

  - Removed sys_log, which has been replaced by the new logging subsystem
    introduced in v1.13
  - Refactored log modules registration macros
  - Improved synchronous operation (see ``CONFIG_LOG_IMMEDIATE``)
  - Added commands to control the logger using shell
  - Added :c:macro:`LOG_PANIC()` call to the fault handlers to ensure that
    logs are output on fault
  - Added mechanism for handling logging of transient strings. See
    :c:func:`log_strdup`
  - Added support for up to 15 arguments in the log message
  - Added optional function name prefix in the log message
  - Changed logging thread priority to the lowest application priority
  - Added notification about dropped log messages due to insufficient logger
    buffer size
  - Added log backends:

    - RTT
    - native_posix
    - net
    - SWO
    - Xtensa Sim
  - Changed default timestamp source function to :c:func:`k_uptime_get_32`

* Shell:

  - Added new implementation of the shell sub-system. See :ref:`shell_api`
  - Added shell backends:

    - UART
    - RTT
    - telnet

* Ring buffer:

  - Added byte mode
  - Added API to work directly on ring buffer memory to reduce memory copying
  - Removed ``sys_`` prefix from API functions

* MBEDTLS APIs may now be used from user mode.


HALs
****

* Updated Nordic nrfx to version 1.6.2
* Updated Nordic nrf ieee802154 radio driver to version 1.2.3
* Updated SimpleLink to TI CC32XX SDK 2.40.01.01
* Added Microchip MEC1701 Support
* Added Cypress PDL for PSoC6 SoC Support
* Updates to stm32cube, Silabs Gecko SDK, Atmel.
* Update ARM CMSIS headers to version 5.4.0


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

* Reorganized subsystem documentation into more meaningful collections
  and added or improved introductory material for each subsystem.
* Overhauled  Bluetooth documentation to split it into
  manageable units and included additional information, such as
  architecture and tooling.
* Added to and improved documentation on many subsystems and APIs
  including socket offloading, Ethernet management, LLDP networking,
  network architecture and overview, net shell, CoAP, network interface,
  network configuration library, DNS resolver, DHCPv4, DTS, flash_area,
  flash_mpa, NVS, settings, and more.
* Introduced a new debugging guide (see :ref:`debug-probes`) that documents
  the supported debug probes and host tools in
  one place, including which combinations are valid.
* Clarified and improved information about the west tool and its use.
* Improved :ref:`development process <development_model>` documentation
  including how new features
  are proposed and tracked, and clarifying API lifecycle, issue and PR
  tagging requirements, contributing guidelines, doc guidelines,
  release process, and PR review process.
* Introduced a developer "fast" doc build option to eliminate
  the time needed to create the full kconfig option docs from a local
  doc build, saving potentially five minutes for a full doc build. (Doc
  building time depends on your development hardware performance.)
* Made dramatic improvements to the doc build processing, bringing
  iterative local doc generation down from over two minutes to only a
  few seconds. This makes it much faster for doc developers to iteratively
  edit and test doc changes locally before submitting a PR.
* Added a new ``zephyr-file`` directive to link directly to files in the
  Git tree.
* Introduced simplified linking to doxygen-generated API reference
  material.
* Made board documentation consistent, enabling a board-image carousel
  on the zephyrproject.org home page.
* Reduced unnecessarily large images to improve page load times.
* Added CSS changes to improve API docs appearance and usability
* Made doc version selector more obvious, making it easier to select
  documentation for a specific release
* Added a friendlier and more graphic home page.

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

* A new set of, multinode, full system tests of the BT stack,
  based on `BabbleSim`_ have been added.
* Added unique identifiers to all tests and samples.
* Removed old footprint benchmarks
* Added tests for CMSIS RTOS API v2, BSD Sockets, CANBus, Settings, USB,
  and miscellaneous drivers.
* Added benchmark applications for the scheduler and mbedTLS
* Added samples for the display subsystem, LVGL, Google IOT, Sockets, CMSIS RTOS
  API v2, Wifi, Shields, IPC subsystem, USB CDC ACM, and USB HID.
* Add support for using sanitycheck testing with Renode


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

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`15407` - [Coverity CID :197597]Incorrect expression in /tests/kernel/static_idt/src/main.c
* :github:`15406` - [Coverity CID :197598]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`15405` - [Coverity CID :197599]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`15404` - [Coverity CID :197600]Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`15403` - [Coverity CID :197601]Incorrect expression in /tests/kernel/common/src/intmath.c
* :github:`15402` - [Coverity CID :197602]Incorrect expression in /tests/kernel/common/src/intmath.c
* :github:`15401` - [Coverity CID :197603]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`15400` - [Coverity CID :197604]Memory - corruptions in /tests/kernel/mem_protect/userspace/src/main.c
* :github:`15399` - [Coverity CID :197605]Null pointer dereferences in /subsys/testsuite/ztest/src/ztest_mock.c
* :github:`15398` - [Coverity CID :197606]Incorrect expression in /tests/kernel/common/src/irq_offload.c
* :github:`15397` - [Coverity CID :197607]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`15396` - [Coverity CID :197608]Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`15395` - [Coverity CID :197609]Incorrect expression in /tests/kernel/interrupt/src/nested_irq.c
* :github:`15394` - [Coverity CID :197610]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`15393` - [Coverity CID :197611]Integer handling issues in /lib/os/printk.c
* :github:`15392` - [Coverity CID :197612]Integer handling issues in /lib/os/printk.c
* :github:`15390` - [Coverity CID :197614]Incorrect expression in /tests/lib/c_lib/src/main.c
* :github:`15389` - [Coverity CID :197615]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`15388` - [Coverity CID :197616]Null pointer dereferences in /subsys/testsuite/ztest/src/ztest_mock.c
* :github:`15387` - [Coverity CID :197617]Incorrect expression in /tests/kernel/common/src/multilib.c
* :github:`15386` - [Coverity CID :197618]Error handling issues in /subsys/shell/shell_telnet.c
* :github:`15385` - [Coverity CID :197619]Incorrect expression in /tests/kernel/mem_pool/mem_pool/src/main.c
* :github:`15384` - [Coverity CID :197620]Incorrect expression in /tests/kernel/static_idt/src/main.c
* :github:`15383` - [Coverity CID :197621]Incorrect expression in /tests/kernel/static_idt/src/main.c
* :github:`15382` - [Coverity CID :197622]Incorrect expression in /tests/kernel/tickless/tickless_concept/src/main.c
* :github:`15381` - [Coverity CID :197623]Incorrect expression in /tests/kernel/interrupt/src/nested_irq.c
* :github:`15380` - USAGE FAULT on tests/crypto/rand32/ on sam_e70_xplained
* :github:`15379` - foundries.io CI: tests/kernel/mem_protect/stackprot fails on nrf52
* :github:`15370` - log_strdup() leaks memory if log message is filtered
* :github:`15365` - Bluetooth qualification test MESH/SR/HM/CFS/BV-02-C is failing
* :github:`15361` - nRF timer: investigate race condition when setting clock timeout in TICKLESS mode
* :github:`15348` - ARM Cortex-M: SysTick: unhandled race condition
* :github:`15346` - VLAN support is broken
* :github:`15336` - Unable to transmit data using interrupt driven API with nrf UARTE peripheral
* :github:`15333` - hci_uart controller driver loses sync after host driver is reset
* :github:`15329` - Bluetooth: GATT Client Configuration is not cleared when device is unpaired
* :github:`15325` - conn->le.keys pointer is not cleared even after the keys struct is invalidated after unpair
* :github:`15324` - Error undefined reference to '__aeabi_uldivmod' when build Zephyr for nrf52_pca10040 board
* :github:`15309` - ARM Cortex-M SysTick Load value setting off-by-one
* :github:`15303` - net: Stackoverflow in net mgmt thread
* :github:`15300` - Bluetooth: Mesh: bt_mesh_fault_update() doesn't update publication message
* :github:`15299` - west init fails in powershell
* :github:`15289` - Zephyr module uses '\' in path on windows when creating Kconfig files
* :github:`15285` - arc: it's not reliable to use exc_nest_count to check nest interrupt
* :github:`15280` - tests/kernel/mem_protect/stackprot fails on platform qemu_riscv32
* :github:`15266` - doc: Contribution guidelines still link to IRC
* :github:`15260` - Shell doesn't always process input data when it arrives
* :github:`15259` - CAN sample does not work
* :github:`15251` - nRF Watchdog not triggering on kernel panic
* :github:`15246` - doc: confusion about dtc version
* :github:`15240` - esp32 build broken
* :github:`15236` - add external spi-nor flash will build fail
* :github:`15235` - Missing license references in DTS files
* :github:`15234` - Missing SPDX license references in drivers source files.
* :github:`15228` - tests: getnameinfo runs with user mode disabled
* :github:`15227` - sockets: no syscall for gethostname()
* :github:`15221` - ARC: incorrect value checked for MPU violation
* :github:`15216` - k_sleep() expires sooner than expected on STM32F4 (Cortex M4)
* :github:`15213` - cmake infrastructure in code missing file level license identifiers
* :github:`15206` - sanitycheck --coverage: stack overflows on qemu_x86, mps2_an385 and qemu_x86_nommu
* :github:`15205` - hci_usb not working on v1.14.0rc3 with SDK 0.10.0
* :github:`15204` - lwm2m engine hangs on native_posix
* :github:`15198` - tests/booting: Considering remove it
* :github:`15197` - Socket-based DNS API will hang device if DNS query is not answered
* :github:`15184` - Fix build issue with z_sys_trace_thread_switched_in
* :github:`15183` - BLE HID sample often asserts on Windows 10 reconnection
* :github:`15178` - samples/mpu/mem_domain_apis_test:  Did not get to "destroy app0 domain", went into indefinite loop
* :github:`15177` - samples/drivers/crypto:  CBC and CTR mode not supported
* :github:`15170` - undefined symbol TINYCBOR during doc build
* :github:`15169` - [Coverity CID :197534]Memory - corruptions in /subsys/logging/log_backend_rtt.c
* :github:`15168` - [Coverity CID :197535]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`15167` - [Coverity CID :197536]Parse warnings in /include/mgmt/buf.h
* :github:`15166` - [Coverity CID :197537]Control flow issues in /subsys/power/power.c
* :github:`15163` - nsim_*_mpu_stack_guard fails if CONFIG_USERSPACE=n but CONFIG_HW_STACK_PROTECTION=y
* :github:`15161` - stack overflow in tests/posix/common on nsim_em_mpu_stack_guard
* :github:`15157` - mps2_an385 and GNU Arm Embedded gcc-arm-none-eabi-7-2018-q2-update failed tests
* :github:`15154` - mempool can result in OOM while memory is available
* :github:`15153` - Some empty qemu_x86 output when running code coverage using sanity_check
* :github:`15152` - tests/kernel/pipe/pipe: "Kernel Oops" and "CPU Page Fault" when running coverage for qemu_x86
* :github:`15151` - tests/tickless/tickless_concept: Assertions when running code coverage on qemu_x86
* :github:`15150` - tests/kernel/threads/thread_api: "Double faults" when running code coverage in qemu_x86
* :github:`15149` - mps2_an385: fatal lockup when running code coverage
* :github:`15148` - tests/kernel/mem_pool/mem_pool_concept/: Assertion failures for mpns2_an385
* :github:`15146` - mps2_an385: Multiple "MPU Fault"s,  "Hardware Fault"s "Stack Check Fail!" and "Bus Fault" when running code coverage
* :github:`15145` - USB HF clock stop fail
* :github:`15131` - ARC: off-by-one in MPU V2 _is_in_region()
* :github:`15130` - ARC: Z_ARCH_THREAD_STACK_MEMBER defined incorrectly
* :github:`15129` - ARC: tests/kernel/critical times out on nsim_sem
* :github:`15126` - multiple intermittent test failure on ARC
* :github:`15124` - DNS not working with NET_OFFLOAD
* :github:`15109` - ATSAME70 MCU(SAM E70 Xplained) RAM random after a watchdog reset.
* :github:`15107` - samples/application_development/code_relocation fails to build with coverage on mps2_an385
* :github:`15103` - nrf52810_pca10040 SRAM space not enough
* :github:`15100` - Bluetooth: GATT (un)subscribe can silently fail
* :github:`15099` - Bluetooth: GATT Subscribe does not detect duplicate if new parameters are used.
* :github:`15096` - Cannot build samples/net/ipv4_autoconf
* :github:`15093` - zephyr_library_compile_options() lost support for duplicates
* :github:`15090` - FIFO: Clarify doc for k_fifo_alloc_put
* :github:`15085` - Sanitycheck when running on devices is not counting samples in the final report
* :github:`15083` - MCUBoot is linked to slot0 because overlay is dropped in boilerplate.cmake
* :github:`15077` - Cannot boot application flashed to nrf52840_pca10059
* :github:`15073` - Device crashes when starting with USB connected
* :github:`15070` - ieee802154: Configuration for CC2520 is not working
* :github:`15069` - arch: arm: thread arch.mode not always inline with thread's privilege mode (e.g. system calls)
* :github:`15067` - bluetooth: bt_set_name rejects names of size CONFIG_BT_DEVICE_NAME_MAX
* :github:`15064` - tests/kernel/fp_sharing: undefined reference k_float_disable()
* :github:`15063` - tests/subsys/settings/fcb/src/settings_test_save_unaligned.c fail with assertion failure on nrf52_pca10040
* :github:`15061` - Builds on Windows are broken due to invalid zephyr_modules.txt parsing
* :github:`15059` - Fix builds w/o modules
* :github:`15056` - arch: arm: arch.mode variable _not_ initialized to nPRIV in user space enter
* :github:`15050` - Using TCP in zperf causes free memory access
* :github:`15044` - ARC: test failure in tests/kernel/threads/thread_apis
* :github:`15039` - ADC drivers adc_read_async() keep pointers to sequence
* :github:`15037` - xtensa: context returns to thread after kernel oops
* :github:`15035` - build breakage on two ARC targets: missing arc_exc_saved_sp
* :github:`15031` - net: 9cd547f53b "Fix ref counting for the net_pkt" allegedly broke reference counting
* :github:`15019` - tests/kernel/common: test_bitfield: test_bitfield: (b1 not equal to (1 << bit))
* :github:`15018` - tests/kernel/threads/no-multithreading: Not booting
* :github:`15017` - Not able to set "0xFFFF No specific value" for GAP PPCP structured data
* :github:`15013` - tests/kernel/fatal: check_stack_overflow: (rv equal to TC_FAIL)
* :github:`15012` - Unable to establish security after reconnect to dongle
* :github:`15009` - sanitycheck --coverage on qemu_x86:  cannot move location counter backwards
* :github:`15008` - SWO logger backend produces no output in 'in place' mode
* :github:`14992` - West documentation is largely missing
* :github:`14989` - Doc build does not include the zephyr modules Kconfig files
* :github:`14988` - USB device not recognized on PCA10056 preview-DK
* :github:`14985` - Clarify in release docs NOT to use github tagging.
* :github:`14974` - Kconfig.modules needs to be at the top level build folder
* :github:`14958` - [Coverity CID :197457]Control flow issues in /subsys/bluetooth/host/gatt.c
* :github:`14957` - [Coverity CID :197458]Insecure data handling in /subsys/usb/usb_device.c
* :github:`14956` - [Coverity CID :197459]Memory - corruptions in /subsys/bluetooth/shell/gatt.c
* :github:`14955` - [Coverity CID :197460]Integer handling issues in /samples/bluetooth/ipsp/src/main.c
* :github:`14954` - [Coverity CID :197461]Insecure data handling in /subsys/usb/usb_device.c
* :github:`14953` - [Coverity CID :197462]Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`14952` - [Coverity CID :197463]Memory - corruptions in /samples/bluetooth/central_hr/src/main.c
* :github:`14951` - [Coverity CID :197464]Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`14950` - [Coverity CID :197465]Integer handling issues in /samples/bluetooth/ipsp/src/main.c
* :github:`14947` - no user mode access to MQTT subsystem
* :github:`14946` - cdc_acm example doesn't work on nrf52840_pca10059
* :github:`14945` - nrf52840_pca10059 executables do not work without mcuboot
* :github:`14943` - config BOARD_HAS_NRF5_BOOTLOADER not honored for nrf52840_pca10059
* :github:`14942` - tests/posix/fs don't build on em_starterkit_em11d
* :github:`14934` - tinycbor is failing in nightly CI
* :github:`14928` - Bluetooth: Mesh: Provisioning state doesn't always get properly re-initialized when doing reset
* :github:`14903` - tests/posix/fs test show messages dropped in the logs
* :github:`14902` - logger: Enabling USB CDC ACM disables logging
* :github:`14899` - Bluetooth controller ACL data packets stall
* :github:`14882` - USB DFU never enters DFU mode, when composite device is enabled and mcuboot is used
* :github:`14871` - tests/posix/fs : Dropped console output
* :github:`14870` - samples/mpu/mpu_stack_guard_test: Found "Test not passed"
* :github:`14869` - tests/lib/ringbuffer: Assertion failure at test_ring_buffer_main()
* :github:`14840` - settings: settings_save_one() doesn't always seem to store data, even if it returns success
* :github:`14837` - Bluetooth shell scan command parameter mandatory/optional evaluation is broken
* :github:`14833` - Bluetooth init procedure with BT_SETTINGS is not reliable
* :github:`14827` - cmake error
* :github:`14821` - [Coverity CID :196635]Error handling issues in /tests/net/mld/src/main.c
* :github:`14820` - [Coverity CID :196636]Integer handling issues in /kernel/sched.c
* :github:`14819` - [Coverity CID :196637]Uninitialized variables in /samples/net/sockets/can/src/main.c
* :github:`14818` - [Coverity CID :196638]Null pointer dereferences in /subsys/bluetooth/host/hci_core.c
* :github:`14817` - [Coverity CID :196639]Error handling issues in /samples/bluetooth/ipsp/src/main.c
* :github:`14816` - [Coverity CID :196640]Integer handling issues in /arch/x86/core/thread.c
* :github:`14815` - [Coverity CID :196641]Null pointer dereferences in /samples/net/nats/src/nats.c
* :github:`14814` - [Coverity CID :196642]Error handling issues in /subsys/shell/shell_uart.c
* :github:`14813` - [Coverity CID :196643]Null pointer dereferences in /subsys/net/ip/net_context.c
* :github:`14807` - disable SPIN_VALIDATE when SMP enabled
* :github:`14789` - doc: flash_map and flash_area
* :github:`14786` - Information about old sdk version provides wrong download link
* :github:`14782` - Build process produces hex files which will not install on BBC micro:bit
* :github:`14780` - USB: netusb: Unable to send maximum Ethernet packet
* :github:`14779` - stm32: If the memory usage is high, the flash is abnormal.
* :github:`14770` - samples/net/promiscuous_mode the include file is not there
* :github:`14767` - ARC: hang in exception handling when CONFIG_LOG is enabled
* :github:`14766` - K_THREAD_STACK_BUFFER() is broken
* :github:`14763` - PCI debug logging cannot work with PCI-enabled NS16550
* :github:`14762` - elf_helper: Call to undefined debug_die() in AggregateTypeMember (wrong class)
* :github:`14753` - nrf52840_pca10056: Get rid of leading spurious 0x00 byte in UART output
* :github:`14743` - Directed advertising to Android does not work
* :github:`14741` - Bluetooth scanning frequent resetting
* :github:`14714` - Mesh network traffic overflow ungraceful stop. (MMFAR Address: 0x0)
* :github:`14698` - USB: usb/console sample does not work for most of the boards
* :github:`14697` - USB: cdc_acm_composite sample might lose characters
* :github:`14693` - ARC: need test coverage for MPU stack guards
* :github:`14691` - samples: telnet: net shell is not working
* :github:`14684` - samples/net/promiscuous _mode : Cannot set promiscuous mode for interface
* :github:`14665` - samples/net/zperf does not work for TCP in qemu_x86
* :github:`14663` - net: echo server sends unknown packets on start
* :github:`14661` - samples/net/syslog_net fails for native_posix
* :github:`14658` - Disabling CONFIG_BT_PHY_UPDATE makes connections stall with iOS
* :github:`14657` - Sample: echo_async: setsockopt fail
* :github:`14654` - Samples: echo_client: No reply packet from the server
* :github:`14647` - IP: Zephyr replies to broadcast ethernet packets in other subnets on the same wire
* :github:`14643` - ARC: tests/kernel/mem_protect/mem_protect/kernel.memory_protection fails on nsim_sem
* :github:`14642` - ARC: tests/posix/common/ and tests/kernel/critical time out on nsim_sem with userspace enabled
* :github:`14641` - ARC: tests/kernel/critical/kernel.common times out on nsim_em and nsim_sem
* :github:`14640` - ARC: tests/cmsis_rtos_v2/portability.cmsis_rtos_v2 fails on nsim_em and nsim_sem
* :github:`14635` - bluetooth: controller: Control procedure collision with Encryption and PHY update procedure
* :github:`14627` - USB HID device only detected after replugging
* :github:`14623` - sanitycheck error when trying to run specific test
* :github:`14622` - net: IPv6: malformed packet in fragmented echo reply
* :github:`14612` - samples/net/sockets/echo_async_select doesn’t work for qemu_x86 target
* :github:`14609` - mimxrt1050_evk Fatal fault in thread tests/kernel/mem_protect/stackprot Fatal fault in thread
* :github:`14608` - Promiscuous mode net sample cannot be build
* :github:`14606` - mimxrt1050_evk tests/kernel/fp_sharing kernel.fp_sharing fails
* :github:`14605` - mimxrt1060_evk cpp_synchronization meets Hardware exception
* :github:`14603` - pyocd can't support more board_runner_args
* :github:`14586` - Sanitycheck shows "FAILED: failed" for successful test: tests/kernel/fifo/fifo_api/kernel.fifo
* :github:`14568` - I2C stm32 LL driver V2 will hang when trying again after an error occurs
* :github:`14566` - mcuboot doesn't link into code-partition
* :github:`14556` - tests/benchmarks/timing_info reports strange values on quark_se_c1000:x86, altera_max10:nios2
* :github:`14554` - UP2 console no output after commit fb4f5e727b.
* :github:`14546` - shell compilation error when disabling CONFIG_SHELL_ECHO_STATUS
* :github:`14542` - STM32F4XX dts_fixup.h error
* :github:`14540` - kernel: message queue MACRO not compatible with C++
* :github:`14536` - out of bounds access in log_backend_rtt
* :github:`14523` - echo-client doesn't close socket if echo-server is offline
* :github:`14510` - USB DFU sample doc outdated
* :github:`14508` - mempool allocator can return with no allocation even if memory is available
* :github:`14504` - mempool can return success if no memory was available
* :github:`14501` - crash in qemu_x86_64:tests/kernel/fifo/fifo_usage/kernel.fifo.usage
* :github:`14500` - sanitycheck --coverage: stack overflows on qemu_x86 and mps2_an385
* :github:`14499` - sanitycheck --coverage on qemu_x86: stack overflows on qemu_x86 and mps2_an385
* :github:`14496` - PyYAML 5.1 breaks DTS parsing
* :github:`14492` - doc: update robots.txt to exclude more old docs
* :github:`14479` - Regression for net_offload API in net_if.c?
* :github:`14477` - tests/crypto/tinycrypt: test_ecc_dh() 's montecarlo_ecdh() hangs when num_tests (1st parameter) is greater than 1
* :github:`14476` - quark_d2000_crb: samples/sensor/bmg160 runs out of ROM (CI failure)
* :github:`14471` - MPU fault during application startup
* :github:`14469` - sanitycheck failures on 96b_carbon due to commit 75164763868ebd604904af3fdbc86845da833abc
* :github:`14462` - tests/kernel/threads/no-multithreading/testcase.yam: Not Booting
* :github:`14460` - python requirements.txt: pyocd and pyyaml conflict
* :github:`14454` - tests/kernel/threads/no-multithreading/:  Single/Repeated delay boot banner
* :github:`14447` - Rename macro functions starting with two or three underscores
* :github:`14422` - [Coverity CID :195758]Uninitialized variables in /drivers/usb/device/usb_dc_nrfx.c
* :github:`14421` - [Coverity CID :195760]Error handling issues in /tests/net/tcp/src/main.c
* :github:`14420` - [Coverity CID :195768]API usage errors in /arch/x86_64/core/xuk-stub32.c
* :github:`14419` - [Coverity CID :195770]Memory - illegal accesses in /drivers/ethernet/eth_native_posix_adapt.c
* :github:`14418` - [Coverity CID :195774]API usage errors in /arch/x86_64/core/xuk-stub32.c
* :github:`14417` - [Coverity CID :195786]Error handling issues in /samples/drivers/CAN/src/main.c
* :github:`14416` - [Coverity CID :195789]Uninitialized variables in /subsys/usb/class/netusb/function_rndis.c
* :github:`14415` - [Coverity CID :195793]Insecure data handling in /drivers/counter/counter_ll_stm32_rtc.c
* :github:`14414` - [Coverity CID :195800]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14413` - [Coverity CID :195816]Null pointer dereferences in /tests/net/dhcpv4/src/main.c
* :github:`14412` - [Coverity CID :195819]Null pointer dereferences in /tests/net/tcp/src/main.c
* :github:`14411` - [Coverity CID :195821]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14410` - [Coverity CID :195828]Memory - corruptions in /boards/posix/native_posix/cmdline.c
* :github:`14409` - [Coverity CID :195835]Null pointer dereferences in /tests/net/ipv6/src/main.c
* :github:`14408` - [Coverity CID :195838]Memory - illegal accesses in /samples/subsys/usb/hid-cdc/src/main.c
* :github:`14407` - [Coverity CID :195839]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14406` - [Coverity CID :195841]Insecure data handling in /drivers/usb/device/usb_dc_native_posix.c
* :github:`14405` - [Coverity CID :195844]Null pointer dereferences in /tests/net/mld/src/main.c
* :github:`14404` - [Coverity CID :195845]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14403` - [Coverity CID :195847]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14402` - [Coverity CID :195848]Error handling issues in /samples/net/sockets/echo_async_select/src/socket_echo_select.c
* :github:`14401` - [Coverity CID :195855]Memory - corruptions in /drivers/serial/uart_native_posix.c
* :github:`14400` - [Coverity CID :195858]Incorrect expression in /arch/posix/core/posix_core.c
* :github:`14399` - [Coverity CID :195860]Null pointer dereferences in /tests/net/tcp/src/main.c
* :github:`14398` - [Coverity CID :195867]Memory - corruptions in /arch/posix/core/posix_core.c
* :github:`14397` - [Coverity CID :195871]Integer handling issues in /drivers/counter/counter_ll_stm32_rtc.c
* :github:`14396` - [Coverity CID :195872]Error handling issues in /drivers/serial/uart_native_posix.c
* :github:`14395` - [Coverity CID :195880]Null pointer dereferences in /tests/net/dhcpv4/src/main.c
* :github:`14394` - [Coverity CID :195884]Control flow issues in /arch/x86_64/core/xuk.c
* :github:`14393` - [Coverity CID :195896]Memory - corruptions in /tests/net/traffic_class/src/main.c
* :github:`14392` - [Coverity CID :195897]Error handling issues in /samples/net/sockets/echo_async/src/socket_echo.c
* :github:`14391` - [Coverity CID :195900]Security best practices violations in /drivers/entropy/fake_entropy_native_posix.c
* :github:`14390` - [Coverity CID :195903]Null pointer dereferences in /tests/net/iface/src/main.c
* :github:`14389` - [Coverity CID :195905]Control flow issues in /arch/x86_64/core/x86_64.c
* :github:`14388` - [Coverity CID :195921]Null pointer dereferences in /tests/net/tcp/src/main.c
* :github:`14315` - iamcu has build issues due to lfence
* :github:`14313` - doc: API references such as :c:func:`funcname` aren't creating links
* :github:`14310` - 64 bit print format specifiers not defined with newlib and SDK 0.10.0
* :github:`14297` - mimxrt1020_evk tests/kernel/gen_isr_table test failure
* :github:`14293` - mimxrt1060_evk tests/benchmarks/latency_measure failed
* :github:`14289` - Cannot build GRUB2 boot loader image in Clear Linux
* :github:`14275` - [ci.foundries.io] regression 4344e27 all: Update reserved function names
* :github:`14265` - Bluetooth GATT descriptor discovery returns all attributes
* :github:`14261` - DTS file for the esp32
* :github:`14258` - doc: Recommended SDK version is out of date
* :github:`14247` - tests/net/ieee802154/crypto fails with assertion failure in subsys/net/ip/net_if.c
* :github:`14246` - ./sample/bluetooth/mesh/ always issue an "HARD FALUT"
* :github:`14244` - tests/crypto/rand32/testcase.yaml#crypto.rand32.random_hw_xoroshiro.rand32: Not Booting
* :github:`14235` - Bluetooth connection timeout
* :github:`14209` - unable to flash sam_e70_xplained due to west errors
* :github:`14191` - Logger corrupts itself on rescheduling
* :github:`14186` -  tests/cmsis_rtos_v1 fails on nrf boards
* :github:`14184` - tests/benchmarks: Stuck at  delaying boot banner on quark_se_c1000_ss_board
* :github:`14177` - Spurious Error: "zephyr-no-west/samples/hello_world" is not in a west installation
* :github:`14160` - Bluetooth API documentation - bt_conn_create_slave_le
* :github:`14156` - Mac OSX Documentation Update Needed
* :github:`14141` - USB suspend/resume on board startup
* :github:`14139` - nsim failed in tests/subsys/jwt/libraries_encoding
* :github:`14127` - netusb: TX path doesn't work in RNDIS driver
* :github:`14125` - system calls are vulnerable to Spectre V1 attacks on CPUs with speculative execution
* :github:`14121` - gaps between app shared memory partitions can waste a lot of space
* :github:`14109` - Incorrect documentation for k_work_*() API
* :github:`14105` - Race condition in k_delayed_work_submit_to_queue()
* :github:`14104` - Invalid locking in k_delayed_work_submit_to_queue()
* :github:`14099` - Minnowboard doesn't build tests/kernel/xip/
* :github:`14098` - Test Framework documentation issue
* :github:`14096` - Timeslicing is broken
* :github:`14093` - net: Description of net_pkt_skip() is not clear
* :github:`14087` - serial/stm32: uart_stm32_fifo_fill can't transmit data complete
* :github:`14084` - ADC driver subsystem has no system calls
* :github:`14063` - net: ipv6: Neighbor table management improvements
* :github:`14059` - CONFIG_XUK_64_BIT_ABI is referenced but undefined (outside of tests)
* :github:`14044` - BLE HID sample fails to reconnect on Windows 10 tablets - Wrong Sequence Number (follow-up)
* :github:`14042` - MCUboot fails to boot STM32L4 device
* :github:`14010` - logger: timestamp resets after 35.7 seconds on K64F
* :github:`14001` - drivers: modem: modem receiver is sending extra bytes around \r\n
* :github:`13984` - nucleo_l496zg: samples: console/echo: It doesn't echo
* :github:`13972` - bt_le_scan_stop()  before finding device results in Data Access Violation
* :github:`13964` - rv32m1_vega_ri5cy doesn't build w/o warnings
* :github:`13960` - tests/kernel/lifo/lifo_usage fails on m2gl025_miv
* :github:`13956` - CI scripting doesn't retry modifications to tests on non-default platforms
* :github:`13949` - tests: Ztest problem - not booting properly
* :github:`13943` - net: QEMU Ethernet drivers are flaky
* :github:`13937` - tests/net/tcp: Page fault
* :github:`13934` - tests/kernel/fatal: test_fatal rv equal to TC_FAIL
* :github:`13923` - app shared memory placeholders waste memory
* :github:`13919` - tests/crypto/mbedtls reports some errors without failing
* :github:`13918` - x86 memory domain configuration not always applied correctly on context switch when partitions are added
* :github:`13906` - posix: Recently enabled POSIX+newlib tests fail to build with gnuarmemb
* :github:`13890` - stm32: serial: Data is not read properly at a certain baud rate
* :github:`13889` - ARM: Userspace: should we have default system app partitions?
* :github:`13888` - [Coverity CID :190924]Integer handling issues in /subsys/net/lib/sntp/sntp.c
* :github:`13887` - [Coverity CID :190925]Memory - corruptions in /subsys/bluetooth/controller/hci/hci_driver.c
* :github:`13886` - [Coverity CID :190926]Error handling issues in /drivers/can/stm32_can.c
* :github:`13885` - [Coverity CID :190928]Error handling issues in /samples/net/sockets/echo_async/src/socket_echo.c
* :github:`13884` - [Coverity CID :190929]Integer handling issues in /tests/drivers/hwinfo/api/src/main.c
* :github:`13883` - [Coverity CID :190930]Integer handling issues in /samples/subsys/fs/src/main.c
* :github:`13882` - [Coverity CID :190931]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`13881` - [Coverity CID :190932]Control flow issues in /samples/subsys/ipc/openamp/src/main.c
* :github:`13880` - [Coverity CID :190933]Control flow issues in /drivers/gpio/gpio_intel_apl.c
* :github:`13879` - [Coverity CID :190934]Parse warnings in /tests/drivers/can/stm32/src/main.c
* :github:`13878` - [Coverity CID :190935]Parse warnings in /tests/drivers/can/stm32/src/main.c
* :github:`13877` - [Coverity CID :190936]Uninitialized variables in /tests/subsys/fs/nffs_fs_api/common/test_performance.c
* :github:`13876` - [Coverity CID :190937]Incorrect expression in /tests/drivers/counter/counter_basic_api/src/test_counter.c
* :github:`13875` - [Coverity CID :190938]Parse warnings in /tests/drivers/can/stm32/src/main.c
* :github:`13874` - [Coverity CID :190939]Error handling issues in /tests/subsys/fs/fat_fs_dual_drive/src/test_fat_file.c
* :github:`13873` - [Coverity CID :190940]Memory - corruptions in /soc/arm/microchip_mec/mec1701/soc.c
* :github:`13872` - [Coverity CID :190942]Memory - corruptions in /subsys/mgmt/smp_shell.c
* :github:`13871` - [Coverity CID :190943]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`13870` - [Coverity CID :190944]Control flow issues in /subsys/usb/class/usb_dfu.c
* :github:`13869` - [Coverity CID :190945]Parse warnings in /tests/drivers/can/api/src/main.c
* :github:`13868` - [Coverity CID :190946]Null pointer dereferences in /tests/net/utils/src/main.c
* :github:`13867` - [Coverity CID :190948]Null pointer dereferences in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`13866` - [Coverity CID :190949]Error handling issues in /tests/subsys/fs/nffs_fs_api/common/test_append.c
* :github:`13865` - [Coverity CID :190950]Integer handling issues in /arch/arm/core/cortex_m/mpu/nxp_mpu.c
* :github:`13864` - [Coverity CID :190951]Control flow issues in /subsys/net/ip/net_context.c
* :github:`13863` - [Coverity CID :190952]Incorrect expression in /tests/drivers/counter/counter_basic_api/src/test_counter.c
* :github:`13862` - [Coverity CID :190953]Error handling issues in /subsys/fs/shell.c
* :github:`13861` - [Coverity CID :190954]Error handling issues in /subsys/bluetooth/controller/ll_sw/nordic/lll/lll_test.c
* :github:`13860` - [Coverity CID :190955]Error handling issues in /tests/subsys/fs/nffs_fs_api/common/nffs_test_utils.c
* :github:`13859` - [Coverity CID :190956]Error handling issues in /samples/net/sockets/can/src/main.c
* :github:`13858` - [Coverity CID :190957]Incorrect expression in /tests/kernel/fatal/src/main.c
* :github:`13857` - [Coverity CID :190958]Control flow issues in /samples/boards/96b_argonkey/microphone/src/main.c
* :github:`13856` - [Coverity CID :190960]Various in /tests/subsys/fs/fcb/src/fcb_test_last_of_n.c
* :github:`13855` - [Coverity CID :190961]Error handling issues in /subsys/bluetooth/host/mesh/prov.c
* :github:`13854` - [Coverity CID :190964]Integer handling issues in /arch/arm/core/cortex_m/mpu/nxp_mpu.c
* :github:`13853` - [Coverity CID :190965]Error handling issues in /subsys/net/ip/ipv4_autoconf.c
* :github:`13852` - [Coverity CID :190966]Error handling issues in /samples/net/sockets/echo_async_select/src/socket_echo_select.c
* :github:`13851` - [Coverity CID :190967]Incorrect expression in /tests/drivers/counter/counter_basic_api/src/test_counter.c
* :github:`13850` - [Coverity CID :190969]Uninitialized variables in /samples/net/sockets/coap_client/src/coap-client.c
* :github:`13849` - [Coverity CID :190970]Uninitialized variables in /subsys/bluetooth/shell/ll.c
* :github:`13848` - [Coverity CID :190971]Null pointer dereferences in /subsys/net/ip/net_pkt.c
* :github:`13847` - [Coverity CID :190972]Control flow issues in /subsys/power/power.c
* :github:`13846` - [Coverity CID :190973]Control flow issues in /subsys/net/ip/net_context.c
* :github:`13845` - [Coverity CID :190974]Integer handling issues in /subsys/net/ip/trickle.c
* :github:`13844` - [Coverity CID :190976]Integer handling issues in /arch/arm/core/cortex_m/mpu/nxp_mpu.c
* :github:`13843` - [Coverity CID :190977]Integer handling issues in /lib/os/printk.c
* :github:`13842` - [Coverity CID :190978]Control flow issues in /drivers/spi/spi_intel.c
* :github:`13841` - [Coverity CID :190980]Parse warnings in /tests/drivers/can/api/src/main.c
* :github:`13840` - [Coverity CID :190981]Error handling issues in /subsys/fs/nffs_fs.c
* :github:`13839` - [Coverity CID :190983]Incorrect expression in /tests/drivers/counter/counter_basic_api/src/test_counter.c
* :github:`13838` - [Coverity CID :190985]Memory - illegal accesses in /arch/x86/core/x86_mmu.c
* :github:`13837` - [Coverity CID :190986]Control flow issues in /subsys/net/lib/sockets/sockets_tls.c
* :github:`13836` - [Coverity CID :190987]Integer handling issues in /arch/arm/core/cortex_m/mpu/nxp_mpu.c
* :github:`13835` - [Coverity CID :190989]Parse warnings in /tests/drivers/can/api/src/main.c
* :github:`13834` - [Coverity CID :190990]Null pointer dereferences in /subsys/net/ip/net_pkt.c
* :github:`13833` - [Coverity CID :190991]Error handling issues in /subsys/bluetooth/controller/ll_sw/ull_conn.c
* :github:`13832` - [Coverity CID :190992]Null pointer dereferences in /subsys/net/ip/dhcpv4.c
* :github:`13831` - [Coverity CID :190993]Various in /subsys/shell/shell.c
* :github:`13830` - [Coverity CID :190995]Control flow issues in /subsys/net/ip/ipv6.c
* :github:`13829` - [Coverity CID :190996]Integer handling issues in /drivers/can/stm32_can.c
* :github:`13828` - [Coverity CID :190997]Integer handling issues in /lib/os/printk.c
* :github:`13827` - [Coverity CID :190998]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`13826` - [Coverity CID :191001]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`13825` - [Coverity CID :191002]Error handling issues in /tests/net/lib/mqtt_pubsub/src/test_mqtt_pubsub.c
* :github:`13824` - [Coverity CID :191003]Resource leaks in /samples/net/sockets/can/src/main.c
* :github:`13823` - tests/kernel/arm_irq_vector_table: test case cannot quit displaying "isr 0 ran!"
* :github:`13822` - Invalid USB state: powered after cable is disconnected
* :github:`13821` - tests/kernel/sched/schedule_api: Assertion failed for test_slice_scheduling
* :github:`13813` - Test suite mslab_threadsafe fails randomly
* :github:`13783` - tests/kernel/mem_protect/stackprot failure in frdm_k64f due to limited privilege stack size
* :github:`13780` - mimxrt1060_evk tests/crypto/tinycrypt_hmac_prng and test_mbedtls meet Unaligned memory access
* :github:`13779` - mimxrt1060_evk tests/kernel/mem_pool/mem_pool_threadsafe meets Imprecise data bus error
* :github:`13778` - mimxrt1060_evk tests/kernel/pending meets assert
* :github:`13777` - mimxrt1060_evk tests/kernel/profiling/profiling_api meets Illegal use of the EPSR
* :github:`13769` - mimxrt1060_evk tests/kernel/fifo/fifo_timeout and kernel/fifo/fifo_usage meet system error
* :github:`13768` - mimxrt1060_evk tests/kernel/device illegal use of the EPSR
* :github:`13767` - mimxrt1060_evk tests/kernel/context and tests/kernel/critical caught system err
* :github:`13766` - mimxrt1060_evk tests/kernel/fatal meet many unwanted exceptions
* :github:`13765` - mimxrt1060_evk tests/kernel/workq/work_queue meets Illegal use of the EPSR
* :github:`13764` - mimxrt1060_evk test/kernel/mem_slab/mslab_threadsafe meets Imprecise data bus error
* :github:`13762` - mimxrt1060_evk test/lib/c_lib and test/lib/json test/lib/ringbuffer meet  Unaligned memory access
* :github:`13754` - Error: "West version found in path does not support '/usr/bin/make flash', ensure west is installed and not only the bootstrapper"
* :github:`13753` - _UART_NS16550_PORT_{2,3}_ seems to be a (possibly broken) Kconfig/DTS mishmash
* :github:`13752` - The Arduino 101 docs tell people to set CONFIG_UART_QMSI_1_BAUDRATE, which was removed
* :github:`13750` - CONFIG_SPI_3_NRF_SPIS is undefined but referenced
* :github:`13748` - CONFIG_SOC_MCIMX7D_M4 is undefined but referenced
* :github:`13747` - CONFIG_NRFX_UARTE{2-3} are undefined but referenced
* :github:`13735` - mimxrt1020_evk tests/benchmarks/app_kernel meets Illegal use of the EPSR
* :github:`13734` - tests/subsys/settings/fcb/src/settings_test_save_unaligned.c fail with assertion failure on nrf52_pca10040
* :github:`13733` - mimxrt1020_evk samples/net/zperf meets Unaligned memory access
* :github:`13729` - sanitycheck --coverage failed
* :github:`13728` - mimxrt1020_evk tests/subsys/logging/log_core test_log_strdup_gc meets Unaligned memory access
* :github:`13727` - MIMXRT1020_EVK sample/subsys/logging/logger report unaligned memory access
* :github:`13716` - CAN tests don't build
* :github:`13710` - Build failure when using XCC toolchain
* :github:`13703` - Build error w/Flash driver enabled on hexiwear kw40
* :github:`13701` - x86 stack check fail w/posix-lib & newlib
* :github:`13686` - newlib, posix-lib and xtensa/riscv (with sdk-0.9.5) don't build cleanly
* :github:`13680` - XCC install directions need updating in boards/xtensa/intel_s1000_crb/doc/index.rst
* :github:`13665` - amples/subsys/usb/cdc_acm_composite: Stuck at "Wait for DTR"
* :github:`13664` - samples/subsys/usb/cdc_acm_composite: No output beyond "***** Booting Zephyr OS v1.14.0-rc- ....****** banner
* :github:`13662` - samples/subsys/usb/cdc_acm: Stuck at "Wait for DTR"
* :github:`13655` - mimxrt1050_evk test/crypto/rand32 meets Kernel Panic
* :github:`13654` - mimxrt1050_evk test/kernel/mem_protect/stack_random fails on stack fault
* :github:`13642` - stack canaries don't work with user mode threads
* :github:`13624` - ATMEL SAM family UART and USART - functions u(s)art_sam_irq_is_pending doesn't respect IRQ settings
* :github:`13610` - kernel: Non-deterministic and very high ISR latencies
* :github:`13609` - samples: cfb: text is not displayed due to display_blanking_off()
* :github:`13595` - tests/kernel/stack fails to build on nios2 with new SDK 0.10.0-rc3
* :github:`13594` - tests/kernel/mem_protect/mem_protect/kernel.memory_protection build failure on minnowboard with new SDK
* :github:`13585` - CONFIG_BT_HCI_TX_STACK_SIZE is too small
* :github:`13584` - i.MX RT board flashing and debugging sections are out of date
* :github:`13572` - settings: Bluetooth: Failed parse/lookup
* :github:`13567` - tests/subsys/settings/fcb/base64 fails when write-block-size is 8
* :github:`13560` - STM32 USB: netusb: kernel crash when testing example echo_server with nucleo_f412zg  (ECM on Windows)
* :github:`13550` - stm32: i2c: SSD1306 does not work due to write size limitation
* :github:`13547` - tests/drivers/build_all: The Zephyr library 'drivers__adc' was created without source files
* :github:`13541` - sanitycheck errors when device-testing frdm_k64f
* :github:`13536` - test: tests/kernel/mem_slab/mslab_threadsafe fails sporadically on nrf52
* :github:`13522` - BT SUBSCRIBE to characteristic for Indication or WRITE to value results in kernel crash
* :github:`13515` - samples/net/sockets/echo doesn’t link with CONFIG_NO_OPTIMIZATIONS=y
* :github:`13514` - #stm32 creating #gpio #interrupts on 2+ pins with the same pin number failes
* :github:`13502` - tests/benchmarks/timing_info: Output only consist of Delay Boot Banner
* :github:`13489` - frdm_k64f test/net/tcp bus fault after test ends
* :github:`13484` - net: (At least) eth_smsc911x driver is broken in the master
* :github:`13482` - The frdm_k64f board resets itself periodically/A possible NXP MPU bug
* :github:`13481` - Regression in CI coverage for (at least) some Ethernet drivers after net_app code removal
* :github:`13470` - Lack of POSIX compliance for sched_param struct
* :github:`13465` - tests/lib/mem_alloc/testcase.yaml#libraries.libc.minimal: Bus fault at test_malloc
* :github:`13464` - rb.h: macro RB_FOR_EACH_CONTAINER bug
* :github:`13463` - frdm_kl25z samples/basic/threads Kernel Panic
* :github:`13462` - frdm_kl25z samples/basic/disco meet hard fault
* :github:`13458` - galileo I2C bus master names aren't getting set in the build
* :github:`13449` - sanitycheck failure: [nocache] build failures with sdk-ng-0.10.0
* :github:`13448` - OpenOCD support code version not raised on recent additions
* :github:`13437` - 6LoWPAN: ICMP Ping Zephyr -> Linux broken in master [regression, bisected]
* :github:`13434` - Aliases inside dts leads to warnings
* :github:`13433` - Error when rebooting the frdm_k64f board
* :github:`13424` - Logger got recently slower
* :github:`13423` - Default logger stack size insufficient for various samples
* :github:`13422` - Can't use GPIO 2, 3 and 4
* :github:`13421` - tests/drivers/watchdog/wdt_basic_api: test_wdt_no_callback() repeats indefinitely
* :github:`13413` - x86 reports incorrect stack pointer for user mode exceptions
* :github:`13411` - kernel: ASSERTION FAIL [z_spin_lock_valid(l)]
* :github:`13410` - qemu_x86 transient build errors for mmu_tables.o
* :github:`13408` - DT_FLASH_AREA generated seems to be different for Zephyr and MCUBootloader
* :github:`13397` - Function documentation is missing for BSD sockets
* :github:`13396` - Cannot connect to Galaxy S8 via BLE
* :github:`13394` - Missing Documentation for Bluetooth subsystem
* :github:`13384` - linking error of gettimeofday with zephyr-sdk-0.10.0-rc2
* :github:`13380` - sockets: ordering of send() vs. poll() when using socket API + DTLS causes a crash
* :github:`13378` - Missing Documentation for Networking subsystem
* :github:`13361` - nucleo_f103rb blinky example cannot run
* :github:`13357` - Tracing hooks problem on POSIX
* :github:`13353` - z_timeout_remaining should subtract z_clock_elapsed
* :github:`13342` - arm: user thread stack overflows do not report _NANO_ERR_STACK_CHK_FAIL
* :github:`13341` - arc: user thread stack overflows do not report _NANO_ERR_STACK_CHK_FAIL
* :github:`13340` - NRF52 pca10040 boards open the "Flash hardware support" option, the BT Mesh example does not work properly
* :github:`13323` - No USB instance
* :github:`13320` - sanitycheck miss extra_args: OVERLAY_CONFIG parameter
* :github:`13316` - Notification enabled before connection
* :github:`13306` - Checking if UARTE TX complete on nRF52
* :github:`13301` - frdm_k64f: samples/net/sockets/echo_server doesn't work
* :github:`13300` - NET: USB Ethernet tests were removed allowing to submit not compiling code
* :github:`13291` - samples/drivers/watchdog: Fatal fault in ISR
* :github:`13290` - samples/drivers/watchdog: Watchdog setup error
* :github:`13289` - tests/kernel/fifo/fifo_timeout fails on nrf52840_pca10056
* :github:`13287` - Zephyr can no longer apply DT overlays on a per-SoC basis
* :github:`13272` - Catch all bug for build issues with SDK 0.10.0-rc2
* :github:`13257` - Shell not compatible with c++
* :github:`13256` - UART error bitmask broken by new asynchronous UART API
* :github:`13255` - tests/drivers/counter/counter_basic_api: Kernel panic and an assertion error when you run  test_multiple_alarms() after test_single_shot_alarm_top() failed
* :github:`13254` - tests/drivers/counter/counter_basic_api: counter failed to raise alarm after ticks limit reached
* :github:`13253` - tests/drivers/counter/counter_basic_api: nchan  not equal to alarm_cnt
* :github:`13251` - frdm_k64f: samples/net/sockets/echo_server doesn't work
* :github:`13249` - Latest Zephyr HEAD results in a crash in mcuboot tree
* :github:`13247` - tests/drivers/counter/counter_basic_api:  counter_set_top_value() failed
* :github:`13245` - Including module(s):
* :github:`13243` - DT: error in generated_dts_board_fixups.h for board: frdm_k64f
* :github:`13237` - stm32 USB sanitycheck failures with sdk 0.10.0-beta2
* :github:`13236` - Failure tests/kernel/gen_isr_table on some stm32 platforms
* :github:`13223` - I2S transfers causes exception/crash in xtensa/Intel S1000
* :github:`13220` - qemu_x86_64 build failures
* :github:`13218` - tests: intel_s1000_crb: CONFIG_I2C_0_NAME undeclared build error
* :github:`13211` - net/sockets: send/sendto broken when len > MTU
* :github:`13209` - FATAL ERROR: unknown key "posixpath" in format string "{posixpath}"
* :github:`13203` - drivers: wifi: simplelink: Need to translate socket family macro values
* :github:`13194` - soc/arm/nordic_nrf/nrf52/soc_power.h warning spew when CONFIG_SYS_POWER_MANAGEMENT=n
* :github:`13192` - silabs flash_gecko driver warning (will fail in CI)
* :github:`13187` - qemu_x86_64 leaks system headers into the build process
* :github:`13166` - tests/kernel/threads/dynamic_thread test cases are failing on frdm_k64f board
* :github:`13161` - QMSI drivers/counter/counter_qmsi_aon.c doesn't build
* :github:`13147` - net: ICMPv4 echo reply packets do not use default values in the IP header
* :github:`13122` - build for KW40z, KW41z fails to generate isr_tables
* :github:`13113` - Samples fail to build for SimpleLink when CONFIG_XIP=n
* :github:`13110` - MPU fault on performing fifo operations
* :github:`13096` - Remove CONFIG_X86_PAE_MODE from scripts/gen_mmu_x86.py
* :github:`13084` - net: Align interface numbering with POSIX/BSD/Linux
* :github:`13083` - Problem pairing/bonding 2nd device, whilst the first device is still connected using sample project (bluetooth\peripheral)
* :github:`13082` - s1000 board: multiple registrations for irq error
* :github:`13073` - intermittent failure in tests/benchmarks/timing_info
* :github:`13066` - Bug on STM32F2 USB Low Layer HAL
* :github:`13065` - CONFIG_BT leads Fatal fault in ISR on esp32
* :github:`13051` - Two timers are expiring at one time and crashing for platform nrf52_pca10040
* :github:`13050` - net: Zephyr drops TCPv4 packet with extended MAC frame size
* :github:`13047` - Build error while executing tests/kernel/tickless/tickless on quark_se_c1000_devboard
* :github:`13044` - intermittent tests/kernel/workq/work_queue failure
* :github:`13043` - intermittent tests/posix/common/ failure
* :github:`13034` - samples/bluetooth/peripheral_hr: could not connect with reel board
* :github:`13025` - CAN not working on Nucleo L432KC with external transciever
* :github:`13014` - sanitycheck fails to generate coverage report if samples/application_development/external_lib is run
* :github:`13013` - Problem executing 'west flash' outside zephyr directory.
* :github:`13011` - tests/posix/fs/ segfaults randomly in POSIX arch
* :github:`13009` - Coverage broken for nrf52_bsim
* :github:`13005` - syslog_net doc error
* :github:`13001` - app shared memory rules in CMakeLists.txt breaks incremental builds
* :github:`12994` - intermittent failures in tests/net/socket/select/ on qemu_x86
* :github:`12982` - net: Zephyr drops IPv4 packet with extended MAC frame size
* :github:`12967` - settings/fcb-backend: value size might be bigger than expected
* :github:`12959` - Error with cmake build "string sub-command REGEX, mode MATCH needs at least 5 arguments"
* :github:`12958` - Missing LwM2M protocol information in the network section of docs
* :github:`12957` - Need documentation for MQTT
* :github:`12956` - CoAP missing documentation
* :github:`12955` - Missing Documentation for many subsystems and features
* :github:`12950` - tests/kernel/workq/work_queue_api/kernel.workqueue fails on nsim_em
* :github:`12949` - tests/benchmarks/timing_info/benchmark.timing.userspace fails on nsim_em
* :github:`12948` - tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random fails on nsim_em
* :github:`12947` - tests/benchmarks/timing_info/benchmark.timing.default_kernel fails on nsim_em
* :github:`12946` - Zephyr/BLE stack: Problem pairing/bonding more than one device, whilst the first device is still connected.
* :github:`12945` - mqtt_socket connect is hung on sam_e70_xplained
* :github:`12933` - MCUboot: high current
* :github:`12908` - Data allocation in sections for quark_se is incorrect
* :github:`12905` - Build improperly does a partial discard of 'const' defined variables
* :github:`12900` - tests/benchmarks/timing_info doesn't print userspace stats
* :github:`12886` - Application development primer docs broken by west merge
* :github:`12873` - Early log panic does not print logs on shell
* :github:`12851` - Early log panic does not print logs
* :github:`12849` - i2c: frdm-k64f and mimxrt1050_evk I2C driver  will cause hardware exception if read/write to a not existing device
* :github:`12844` - ARC MPU version 3 is configured incorrectly
* :github:`12821` - When CPU_STATS is enable with MPU_STACK_GUARD in DEBUG_OPTIMIZATIONS mode, it cause a MPU FAULT /   Instruction Access Violation.
* :github:`12820` - CONFIG_NO_OPTIMIZATION triggers a usage fault
* :github:`12813` - DTS: CONFIG_FLASH_BASE_ADDRESS not being generated for SPI based Flash chip
* :github:`12812` - ninja flash when running without 'west'
* :github:`12810` - Up Squared serial console character output corrupted
* :github:`12804` - tests/drivers/watchdog/wdt_basic_api/: wdt_install_timeout() failed to call callback
* :github:`12803` - tests/drivers/watchdog/wdt_basic_api/: Watchdog setup error
* :github:`12800` - topic-counter: nrfx_*: counter_set_top_value inconsistent behavior
* :github:`12796` - USB Power Event Panic
* :github:`12766` - drivers: gpio: stm32: implementation silently ignores attempts to configure level interrupts
* :github:`12765` - drivers: gpio: intel_apl: implementation silently ignores double-edge interrupt config
* :github:`12764` - drivers: gpio: cmsdk_ahb: implementation silently ignores double-edge interrupt config
* :github:`12763` - drivers: gpio: sch: implementation does not configure interrupt level/edge
* :github:`12758` - doc: Samples and Demos documentation hierarchy looks unintentionally deep
* :github:`12745` - SimpleLink socket functions, on error, sometimes do not set errno and return (-1)
* :github:`12734` - drivers: flash: Recent change in spi_nor.c does not let have multiple flash devs on a board.
* :github:`12726` - Dead loop of the kernel during Bluetooth Mesh pressure communication
* :github:`12724` - SPI CS: in case of multiple slaves, wrong cs-gpio is chosen in DT\_ define
* :github:`12708` - Drivers may call net_pkt_(un)ref from ISR concurrently with other code
* :github:`12696` - CMAKE_EXPORT_COMPILE_COMMANDS is broken
* :github:`12688` - arm: userspace: inconsistent configuration between ARM and NXP MPU
* :github:`12685` - 717aa9cea7 broke use of dtc 1.4.6
* :github:`12657` - subsys/settings: fcb might compress areas more than once
* :github:`12654` - Build error while executing tests/kernel/smp on ESP32
* :github:`12652` - UART console is showing garbage with driver uart_ns15560
* :github:`12650` - drivers: wifi: simplelink: socket() always returns fd of zero on success
* :github:`12640` - CONFIG_ETH_ENC28J60_0_GPIO_SPI_CS=y cause build error
* :github:`12632` - tests/drivers/adc/adc_api/ fails on quark platforms
* :github:`12621` - warning about images when building docs
* :github:`12615` - Network documentation might miss API documentation
* :github:`12611` - Shell does not support network backends
* :github:`12609` - ext: stm32: revert fix https://github.com/zephyrproject-rtos/zephyr/pull/8762
* :github:`12594` - stm32_min_dev board no console output
* :github:`12589` - Several nRF based boards enable both I2C & SPI by default in dts at same MMIO address
* :github:`12574` - Bluetooth: Mesh: 2nd time commissioning configuration details (APP Key) not get saved on SoC flash
* :github:`12571` - No coverage reports are being generated
* :github:`12570` - Zephyr codebase incorrectly uses #ifdef for boolean config values
* :github:`12560` - Using TCP w/ wired NIC results in mismanagement of buffers due to ACK accounting error
* :github:`12559` - tests/kernel/mem_pool/mem_pool_threadsafe/kernel.memory_pool fails sporadically
* :github:`12553` - List of tests that keep failing sporadically
* :github:`12548` - ISR sometimes run with the MPU disabled: breaks __nocache
* :github:`12544` - commit 2fb616e broke I2C on Nucleo F401RE + IKS01A2 shield
* :github:`12543` - doc: Wrong file path for code relocation sample
* :github:`12541` - nrf timer handling exceeds bluetooth hard realtime deadline
* :github:`12530` - DTS: Changes done to support QSPI memory mapped flash breaks intel_s1000 build
* :github:`12528` - a bug in code
* :github:`12501` - nRF52: UARTE lacks pm interface
* :github:`12494` - Logging with CONFIG_LOG_IMMEDIATE=y from ISR leads to assert
* :github:`12488` - RedBear Nano v2 Mesh Instruction Fault
* :github:`12487` - Power management and RTTLogger
* :github:`12479` - arc: the pollution of lp_start,lpend and lp_count will  break down the system
* :github:`12478` - tests/drivers/ipm/peripheral.mailbox failing sporadically on qemu_x86_64 (timeout)
* :github:`12455` - Fatal fault when openthread commissioner starts
* :github:`12454` - doc: Some board images are pretty big (> 1MB)
* :github:`12453` - nrf52 SPIM spi_transceive function occasionally doesn't return
* :github:`12449` - Existing LPN lookup in Mesh Friend Request handling
* :github:`12441` - include: net: Link error when inet_pton() is used and wifi offloading is enabled
* :github:`12429` - Bluetooth samples not working on qemu_x86
* :github:`12419` - cannot flash with segger jlink in windows environment
* :github:`12410` - Assert and printk not printed on RTT
* :github:`12409` - non-tickless kernels incorrectly advance system clock with delayed ticks
* :github:`12395` - Some Bluetooth samples wont run using the latest branch on some boards
* :github:`12369` - WDT: wdt callbacks are not getting triggerred before CPU going for a reboot
* :github:`12362` - BLE HID sample fails to reconnect on Windows 10 tablets
* :github:`12352` - intermittent kernel.mutex sanitycheck with mps2_an385
* :github:`12347` - net ping shell can't show reply
* :github:`12339` - drivers: nordic: usb: missing fragmentation handling for IN transfers, causing buffer overflow
* :github:`12329` - enable CONFIG_NET_DEBUG_HTTP_CONN cause build error
* :github:`12326` - [Coverity CID :158187]Control flow issues in /sanitylog/nrf52840_pca10056/samples/net/echo_server/test_nrf_openthread/zephyr/ext_proj/Source/ot/third_party/mbedtls/repo/library/ecp.c
* :github:`12325` - [Coverity CID :190377]Control flow issues in /sanitylog/nrf52840_pca10056/samples/net/echo_server/test_nrf_openthread/zephyr/ext_proj/Source/ot/examples/platforms/utils/settings_flash.c
* :github:`12324` - [Coverity CID :190380]Insecure data handling in /sanitylog/nrf52840_pca10056/samples/net/echo_server/test_nrf_openthread/zephyr/ext_proj/Source/ot/third_party/mbedtls/repo/library/ssl_tls.c
* :github:`12323` - [Coverity CID :190383]Null pointer dereferences in /sanitylog/nrf52840_pca10056/samples/net/echo_server/test_nrf_openthread/zephyr/ext_proj/Source/ot/third_party/mbedtls/repo/library/ssl_tls.c
* :github:`12322` - [Coverity CID :190611]Control flow issues in /drivers/usb/device/usb_dc_nrfx.c
* :github:`12321` - [Coverity CID :190612]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`12320` - [Coverity CID :190613]Integer handling issues in /subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`12319` - [Coverity CID :190614]Control flow issues in /subsys/shell/shell_utils.c
* :github:`12318` - [Coverity CID :190615]Null pointer dereferences in /subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`12317` - [Coverity CID :190616]Integer handling issues in /subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`12316` - [Coverity CID :190617]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`12315` - [Coverity CID :190618]Code maintainability issues in /drivers/modem/wncm14a2a.c
* :github:`12314` - [Coverity CID :190619]Memory - illegal accesses in /subsys/bluetooth/host/mesh/settings.c
* :github:`12313` - [Coverity CID :190620]Null pointer dereferences in /drivers/wifi/eswifi/eswifi_core.c
* :github:`12312` - [Coverity CID :190621]Memory - corruptions in /subsys/net/lib/lwm2m/lwm2m_rw_oma_tlv.c
* :github:`12311` - [Coverity CID :190622]Memory - corruptions in /drivers/wifi/eswifi/eswifi_offload.c
* :github:`12310` - [Coverity CID :190623]Error handling issues in /drivers/wifi/eswifi/eswifi_core.c
* :github:`12309` - [Coverity CID :190624]Memory - corruptions in /tests/posix/fs/src/test_fs_file.c
* :github:`12308` - [Coverity CID :190625]Integer handling issues in /samples/bluetooth/peripheral/src/main.c
* :github:`12307` - [Coverity CID :190626]Null pointer dereferences in /subsys/net/lib/coap/coap_sock.c
* :github:`12306` - [Coverity CID :190627]Incorrect expression in /samples/net/zperf/src/zperf_tcp_receiver.c
* :github:`12305` - [Coverity CID :190628]Memory - corruptions in /drivers/wifi/eswifi/eswifi_core.c
* :github:`12304` - [Coverity CID :190629]Incorrect expression in /samples/net/zperf/src/zperf_udp_receiver.c
* :github:`12303` - [Coverity CID :190630]Null pointer dereferences in /drivers/modem/wncm14a2a.c
* :github:`12302` - [Coverity CID :190631]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_json.c
* :github:`12301` - [Coverity CID :190632]Memory - corruptions in /drivers/wifi/eswifi/eswifi_offload.c
* :github:`12300` - [Coverity CID :190633]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_rw_plain_text.c
* :github:`12299` - [Coverity CID :190634]Control flow issues in /subsys/net/lib/lwm2m/lwm2m_obj_device.c
* :github:`12298` - [Coverity CID :190635]Integer handling issues in /subsys/net/lib/coap/coap_link_format_sock.c
* :github:`12297` - [Coverity CID :190636]Incorrect expression in /samples/subsys/usb/console/src/main.c
* :github:`12296` - [Coverity CID :190637]Null pointer dereferences in /subsys/net/lib/lwm2m/lwm2m_rw_plain_text.c
* :github:`12295` - [Coverity CID :190638]Control flow issues in /samples/portability/cmsis_rtos_v2/timer_synchronization/src/main.c
* :github:`12294` - [Coverity CID :190639]Null pointer dereferences in /subsys/net/ip/route.c
* :github:`12293` - [Coverity CID :190640]Null pointer dereferences in /drivers/wifi/eswifi/eswifi_core.c
* :github:`12292` - [Coverity CID :190641]Null pointer dereferences in /lib/cmsis_rtos_v2/kernel.c
* :github:`12291` - [Coverity CID :190642]Error handling issues in /drivers/console/telnet_console.c
* :github:`12290` - [Coverity CID :190644]Memory - illegal accesses in /drivers/modem/wncm14a2a.c
* :github:`12282` - "make htmldocs" reports a cmake warning
* :github:`12274` - Assert crash in logger's out_func
* :github:`12268` - doc: nightly published AWS docs are not as generated
* :github:`12265` - doc: Some API documentation is not being generated
* :github:`12257` - The latest GNU ARM Embedded Toolchain can't produce hex files on Windows
* :github:`12252` - potential non-termination of k_mem_pool_alloc
* :github:`12250` - DTS: Inconsistencies seen for SPI node with size-cells
* :github:`12249` - Can't flash CC3220 with OpenOCD
* :github:`12243` - Build error with I2C driver for nucleo_f103rb: DT_ST_STM32_I2C_V1_40005400_BASE_ADDRESS' undeclared here
* :github:`12241` - logging: log output busy loops if log output function can not process buffer
* :github:`12224` - POSIX api are incompatible with arm gcc 2018q2 toolchain
* :github:`12203` - openthread: bind IP is randomly selected causing off-mesh communication problems
* :github:`12201` - Enabling CONFIG_LOG is throwing exceptions on intel_s1000
* :github:`12192` - include: __assert: enabling assert causes build errors
* :github:`12190` - Mbedtls MBEDTLS_PLATFORM_STD_SNPRINTF issue
* :github:`12186` - net: arp: Zephyr does not use MAC address from unicast ARP reply with wrong target MAC
* :github:`12179` - net: arp: Zephyr does not use MAC address from unicast ARP reply
* :github:`12171` - ot: ping ten times will crash
* :github:`12170` - logging: previous changes to dropped message notification break wifi sample debug
* :github:`12164` - net: icmpv4: Zephyr drops ICMPv4 packet with correct checksum 0
* :github:`12162` - net: icmpv4: Zephyr replies to ICMPv4 echo request with broadcast destination IPv4 address
* :github:`12159` - bt_gatt_attr_read_chrc: no characteristic for value
* :github:`12154` - 802.15.4 6LowPAN stopped working with multiple samples
* :github:`12147` - tests/kernel/interrupt fails on quark_se_c1000_ss_devboard
* :github:`12146` - tests/kernel/arm_irq_vector_table fails on NRF5 boards
* :github:`12144` - There's lots of references to undefined Kconfig symbols
* :github:`12123` - samples: cmsis_rtos_v1/philosophers faults with a FATAL EXCEPTION on esp32
* :github:`12122` - system.settings.nffs fails on NRF5 boards
* :github:`12120` - Can't pair with nrf52832 running zephyr
* :github:`12118` - printf doesn't work on qemu_cortex_m3 with newlib and arm gcc 2018q2 toolchain
* :github:`12092` - Default Virtual COM port on nucleo_l4r5zi is lpuart1
* :github:`12091` - tests/subsys/settings/fcb/base64 fails on NRF5 boards
* :github:`12089` - Unexpected fault during test does not cause test failure
* :github:`12069` - iwdg_stm32.c: potential failure in wdt_set_config()
* :github:`12066` - Observing a Python path Issue with Git based Compile
* :github:`12065` - enormous .BSS size while building tests/subsys/fs/nffs_fs_api
* :github:`12059` - kernel.memory_protection.stack_random fails on quark_d2000_crb board
* :github:`12058` - Lots of tests don't honor CONFIG_TEST_EXTRA_STACK_SIZE
* :github:`12051` - LOG_PANIC never returns if RTT is disconnected
* :github:`12045` - frdm_k64f + shell breaks Ethernet driver
* :github:`12043` - logger: Invalid pointer deference in samples/subsys/logging/logger/
* :github:`12040` - Log messages are dropped even with huge log buffer
* :github:`12037` - nrf52840 ram retention example failed
* :github:`12033` - samples/application_development/code_relocation fails on mps2_an385
* :github:`12029` - CONFIG_STACK_CANARIES doesn't work on x86_64
* :github:`12016` - Crash while disconnecting device from USB
* :github:`12006` - valgrind detected issue in tests/net/ipv6/
* :github:`11999` - CONFIG_TEXT_SECTION_OFFSET doesn't seem to work on x86
* :github:`11998` - intermittent failures in tests/kernel/common: test_timeout_order: (poll_events[ii].state not equal to K_POLL_STATE_SEM_AVAILABLE)
* :github:`11989` - Reel Board mesh_badge sample | Light sensor bug
* :github:`11980` - cmake: Build fails in an environment without 'python' binary
* :github:`11967` - nrfx SPI driver blocks indefinitely when transferring
* :github:`11961` - Python warning in process_gperf.py
* :github:`11935` - Invalid usage of k_busy_wait()
* :github:`11916` - ISR table (_sw_isr_table) generation is fragile and can result in corrupted binaries
* :github:`11914` - NXP documentation: frdm-k64f links dead
* :github:`11904` - blinky example can't work on nucleo-f070rb and nucleo-f030r8 platform
* :github:`11894` - zephyr_env.sh failes to correctly set $ZEPHYR_BASE with zsh hooks bound to cd
* :github:`11889` - Race between SimpleLink WiFi driver FastConnect and networking app startup.
* :github:`11859` - sanitycheck failures on lpcxpresso54114_m4: Error: Aborting due to non-whitelisted Kconfig warning
* :github:`11857` - cmake does not detect most recent python, it is fixed somehow to 3.4.x
* :github:`11844` - rtc_ll_stm32.c:232: undefined reference to 'LL_RCC_LSE_SetDriveCapability'  #stm32 #rtc
* :github:`11841` - Assert invoked in exception in ctrl.c line 7653 (zephyr 1.13.00)
* :github:`11827` - gPTP Sample Application fails on frdm_k64f board ,and PDelay Response Receipt Timeout
* :github:`11815` - nxp_kinetis: system reset leaves interrupts enabled during startup
* :github:`11806` - gpio_nrf mishandles level interrupts
* :github:`11798` - A thread may lock a mutex before it is fully unlocked.
* :github:`11794` - cmake: CMake 3.13 doesn't like INTERFACE with target_link_libraries
* :github:`11792` - drivers: nrf: UARTE interrupt driven cannot be compiled
* :github:`11780` - Bluetooth: Mesh: initialisation delay after disabling CONFIG_BT_DEBUG_LOG
* :github:`11779` - watchdog sample application not being built on Nordic devices
* :github:`11767` - tests: counter api: Failed when MPU enabled
* :github:`11763` - logger drops log messages without any indication
* :github:`11754` - NRFX TWI driver does not compile with newlib
* :github:`11752` - tests/lib/ringbuffer: build error on Xtensa ESP32
* :github:`11749` - logging: default log thread priority is too high
* :github:`11744` - Regression: nNRF52840 HW dies at 8 minutes 20 seconds in various samples using IPSP
* :github:`11741` - mqtt_publisher sample not working with BLE IPSP and has outdated net setup/prj configs
* :github:`11723` - tests/cmsis_rtos_v1 fails on nrf52840_pca10056
* :github:`11722` - tests/kernel/timer/timer_api fails on nrf52_pca10040 board
* :github:`11721` - tests/kernel/sched/schedule_api fails on nrf5* boards
* :github:`11719` - Legacy MQTT sample app breaking
* :github:`11698` - net: ipv4: Zephyr replies to ICMPv4 packets with incorrect checksums
* :github:`11694` - system clock problem on NRF52 boards
* :github:`11682` - Mesh Friend replies to initial Friend Poll with "old" security credentials
* :github:`11675` - Cannot set UART device name in menuconfig
* :github:`11674` - Wrong assert condition @@zephyr/kernel/sched.c:345
* :github:`11651` - Time consumption is not constant during the pend and unpend operation with 0(1) pending queue
* :github:`11633` - logging: CONFIG_LOG_INPLACE_PROCESS is not synchronous
* :github:`11626` - k_busy_wait exits early on Nordic chips
* :github:`11625` - Problem with printk and LOG_ERR used with shell enabled
* :github:`11618` - net: icmpv4: Zephyr drops valid echo request
* :github:`11617` - net: ipv4: udp: broadcast delivery not supported
* :github:`11612` - i2c_burst_write on nrf51 is not a burst write
* :github:`11586` - mimxrt1050_evb board: Can't get Ethernet to work
* :github:`11579` - net: arp: MAC address not updated if target address is not its own
* :github:`11565` - gpio_callback ambiguity in union pin vs pin_mask
* :github:`11564` - Bluetooth: settings: Invalid base64 value written to flash
* :github:`11562` - net: arp: Zephyr does use MAC address from broadcast ARP reply
* :github:`11561` - Ping through net shell seems to be broken
* :github:`11533` - Energy-efficient BLE controller on the nRF52
* :github:`11532` - drivers: serial: uart_msp432p4xx.c not compile for interrupt API
* :github:`11531` - Networking samples documentation updates
* :github:`11513` - drivers: SPI NOR: Inconsistency with flash interface docs
* :github:`11502` - Delayed works are not scheduled when system is busy
* :github:`11495` - Printk processed by logger overwrites each other
* :github:`11489` - net: arp: Zephyr replies to localhost address
* :github:`11488` - [Coverity CID :183483]Incorrect expression in /sanitylog/v2m_beetle/tests/ztest/test/base/testing.ztest.verbose_2/zephyr/priv_stacks_hash.gperf
* :github:`11487` - [Coverity CID :185396]Incorrect expression in /sanitylog/v2m_beetle/tests/posix/fs/portability.posix/zephyr/kobject_hash.gperf
* :github:`11486` - [Coverity CID :186197]Parse warnings in /sanitylog/lpcxpresso54114_m4/samples/subsys/ipc/openamp/test/openamp_remote-prefix/src/openamp_remote-build/CMakeFiles/CheckIncludeFiles/HAVE_FCNTL_H.c
* :github:`11485` - [Coverity CID :189738]Null pointer dereferences in /subsys/net/lib/dns/llmnr_responder.c
* :github:`11484` - [Coverity CID :189739]Parse warnings in /subsys/usb/class/netusb/function_eem.c
* :github:`11483` - [Coverity CID :189740]Control flow issues in /samples/boards/reel_board/mesh_badge/src/reel_board.c
* :github:`11482` - [Coverity CID :189741]Memory - illegal accesses in /samples/boards/reel_board/mesh_badge/src/reel_board.c
* :github:`11481` - [Coverity CID :189742]Program hangs in /drivers/usb/device/usb_dc_sam.c
* :github:`11480` - [Coverity CID :189743]Incorrect expression in /drivers/usb/device/usb_dc_sam.c
* :github:`11465` - UART_INTERRUPT_DRIVEN broken on SOC_SERIES_IMX7_M4 and SOC_SERIES_IMX_6X_M4
* :github:`11464` - where is PM_CONTROL_OS defined in Kconfig?
* :github:`11462` - tests: intel_s1000: flash test will fail or erase code when booting from flash
* :github:`11461` - tests: intel_s1000: build error due to offsets lib
* :github:`11447` - Build error for lwm2m_client w/ modem overlay
* :github:`11425` - MISRA C Do not use recursions
* :github:`11417` - logging doesn't log, again
* :github:`11409` - Device crash on BLE reconnection
* :github:`11394` - GPIO API: Do not blindly re-install an already installed callback
* :github:`11393` - printk (RTT backend) from isr can deadlock the system
* :github:`11390` - soc: intel_s1000: Fix the tests for dma and i2s drivers
* :github:`11384` - CI ignores result of multiple test suites in one test application
* :github:`11383` - tests/drivers/i2s/i2s_api failing on sam_e70_xplained
* :github:`11373` - Move STM32 RTC to new counter API
* :github:`11339` - zephyr stm32f4 startup freezes at startup in PRINT_BOOT_BANNER() #stm32 #uart #boot
* :github:`11329` - net: arp: Zephyr replies to multicast address cause of malfored ARP request
* :github:`11310` - Wifi scan crashes on disco_l475_iot1
* :github:`11301` - KW41Z crash on echo apps (ieee802154)
* :github:`11281` - uart shell: ring buffer usage bug
* :github:`11276` - nrf51_pca10028:tests/kernel/interrupt/arch.interrupt registers IRQ 24 twice
* :github:`11275` - frdm_k64f/samples/net/gptp/test: irq line 85 registered twice
* :github:`11268` - soc: intel_s1000: linker section size updates
* :github:`11266` - intel_s1000: usb_hid: load/store alignment exception
* :github:`11260` - Detection of an MSYS environment sometimes fails
* :github:`11255` - Pinging sam_e70 leads to unresponsive ethernet device at some point
* :github:`11250` - 'net help' or 'kernel help' shell commands lead to a fatal fault
* :github:`11244` - Turning on SystemView causes error
* :github:`11232` - nrf52: reel_board: USB unable to send fragmented packets through Control endpoint
* :github:`11226` - Logging: duplicate log messages for some samples when building for qemu_x86
* :github:`11202` - recent "shell: shell_uart" commit breaks shell samples on cc3220sf
* :github:`11187` - cmake/toolchain/clang: selecting clang doesn't select the correct compiler file
* :github:`11182` - qemu_xtensa tests fail spuriously under sanitycheck/CI
* :github:`11179` - Minor Typo "dirver" in UART of Native Posix
* :github:`11171` - usb: nrf: usb_nrfx is in endless loop when USB cable in not connected
* :github:`11170` - kernel.profiling.call_stacks_analyze_idle: assertion fails on em_starterkit_em7d_v22
* :github:`11167` - Building failing in arm cortex-m0
* :github:`11166` - quark_se_c1000_devboard has no docs
* :github:`11147` - subsys: logging: rtt: undeclared macro
* :github:`11146` - ext: debug: segger: rtt: SEGGER_RTT_Init() missing return statement
* :github:`11136` - drivers/spi: WARNING: Unsigned expression compared with zero
* :github:`11135` - subsys/net/lib/: WARNING: Unsigned expression compared with zero
* :github:`11134` - drivers/flash/soc_flash_nios2_qspi.c: WARNING: Unsigned expression compared with zero
* :github:`11133` - lib/posix/mqueue.c: WARNING: Unsigned expression compared with zero
* :github:`11129` - CONFIG_TICKLESS_KERNEL makes z_clock_set_timeout doesn't work
* :github:`11103` - The wrong Python version can be detected on Windows
* :github:`11102` - [Coverity CID :189504]Error handling issues in /samples/net/sockets/echo/src/socket_echo.c
* :github:`11101` - [Coverity CID :189505]Error handling issues in /drivers/sensor/lis2mdl/lis2mdl_trigger.c
* :github:`11100` - [Coverity CID :189506]Control flow issues in /subsys/net/ip/net_shell.c
* :github:`11099` - [Coverity CID :189507]Parse warnings in /samples/drivers/flash_shell/src/main.c
* :github:`11098` - [Coverity CID :189508]Control flow issues in /drivers/usb/device/usb_dc_nrfx.c
* :github:`11097` - [Coverity CID :189509]Integer handling issues in /drivers/sensor/ms5837/ms5837.c
* :github:`11096` - [Coverity CID :189510]Memory - corruptions in /subsys/bluetooth/host/monitor.c
* :github:`11095` - [Coverity CID :189511]Code maintainability issues in /subsys/settings/src/settings_fcb.c
* :github:`11094` - [Coverity CID :189512]Null pointer dereferences in /subsys/logging/log_msg.c
* :github:`11093` - [Coverity CID :189513]Control flow issues in /subsys/bluetooth/shell/gatt.c
* :github:`11092` - [Coverity CID :189514]Possible Control flow issues in /drivers/display/ssd1673.c
* :github:`11091` - [Coverity CID :189515]Incorrect expression in /drivers/usb/device/usb_dc_stm32.c
* :github:`11090` - [Coverity CID :189516]Null pointer dereferences in /drivers/wifi/simplelink/simplelink_sockets.c
* :github:`11089` - [Coverity CID :189517]Control flow issues in /drivers/sensor/fxos8700/fxos8700.c
* :github:`11088` - [Coverity CID :189518]Memory - illegal accesses in /samples/boards/reel_board/mesh_badge/src/reel_board.c
* :github:`11087` - [Coverity CID :189519]Error handling issues in /samples/net/sockets/echo/src/socket_echo.c
* :github:`11086` - [Coverity CID :189520]Error handling issues in /samples/net/sockets/echo/src/socket_echo.c
* :github:`11077` - Compiler warning at include/misc/util.h when building for ESP32
* :github:`11047` - doc: missing Doxygen generated documentation for any function which name starts with an underscore
* :github:`11046` - Enabling SYS_POWER_MANAGEMENT results in a linker error.
* :github:`11034` - Enabling config XTENSA_ASM2 is causing system crash on intel_s1000
* :github:`11022` - mempool allocator is broken
* :github:`11019` - About printk configuration
* :github:`11016` - nRF52840-PCA10056/59: Cannot bring up HCI0 when using HCI_USB sample
* :github:`11008` - net-related logging: Don't see the expected output + crash in logging
* :github:`11007` - logging: "log_strdup pool empty!" is confusing
* :github:`10994` - upsquared sample gpio_counter sample.yaml is malformatted/sanitycheck doens't build samples/boards/up_squared/gpio_counter
* :github:`10993` - upsquared sample gpio_counter doesnt build
* :github:`10990` - ext: lib: crypto: mbedTLS: warning in platform.h glue
* :github:`10971` - net: ipv6: Zephyr replies to ICMPv6 packets with incorrect checksums
* :github:`10970` - net: ipv6: Zephyr replies to malformed ICMPv6 message
* :github:`10967` - FRDM-K64F and MCR-20A configuration does not work
* :github:`10961` - net: ipv6: Zephyr replies to a packet with organization local multicast destination address
* :github:`10960` - net: ipv6: Zephyr replies to a packet with site-local multicast destination address
* :github:`10959` - net: ipv6: Zephyr replies to a packet with interface-local multicast destination
* :github:`10958` - net: ipv6: Zephyr replies to a packet with destination multicast with scope zero
* :github:`10955` - I can't see the output using the minicom when flash on STM32F429IGT6
* :github:`10952` - Bluetooth Mesh: Disabling "CONFIG_BT_MESH_DEBUG_ACCESS" leads to wrong OpCode attached to sent messages
* :github:`10917` - Convert iwdg_stm32 STM32 Watchdog driver to new API
* :github:`10916` - Convert CMSDK APB Watchdog driver to new API
* :github:`10914` - Convert Atmel SAM0 Watchdog driver to new API
* :github:`10913` - Convert Atmel SAM Watchdog driver to new API
* :github:`10909` - Missing stm32l433.dtsi file
* :github:`10899` - nRF52840 DevKit generates USB TX timeout when using HCI_USB
* :github:`10894` - Add dts support to SPI slave drivers & tests
* :github:`10882` - Web instructions: quotes are wrong in build chain for Windows
* :github:`10878` - errno for error codes for key management break on newlib
* :github:`10845` - ext: hal: nxp: Use ARRAY_SIZE helper macro
* :github:`10825` - The DesignWare SPI driver should be hidden on unsupported platforms
* :github:`10817` - Getting Started Guide script error
* :github:`10811` - crash while connecting a USB cable
* :github:`10803` - Compiler warning at /kernel/sched.c
* :github:`10801` - Compiler warning in soc/xtensa/esp32/include/_soc_inthandlers.h
* :github:`10788` - riscv_machine_timer driver don't follow the spec ?
* :github:`10775` - Build error in zephyr.git/include/toolchain/gcc.h leading to shippable failures
* :github:`10772` - tests/drivers/adc/adc_api results into build failure on nRF platforms
* :github:`10760` - Flash Shell compilation error without BT
* :github:`10758` - [Coverity CID :188881]Control flow issues in /samples/net/zperf/src/zperf_shell.c
* :github:`10757` - [Coverity CID :188882]Incorrect expression in /tests/kernel/interrupt/src/nested_irq.c
* :github:`10756` - [Coverity CID :188883]Memory - illegal accesses in /subsys/bluetooth/host/hci_core.c
* :github:`10755` - [Coverity CID :188885]Error handling issues in /lib/ring_buffer/ring_buffer.c
* :github:`10754` - [Coverity CID :188886]Error handling issues in /tests/posix/common/src/mqueue.c
* :github:`10753` - [Coverity CID :188887]Error handling issues in /tests/posix/common/src/pthread.c
* :github:`10752` - [Coverity CID :188888]Incorrect expression in /tests/kernel/interrupt/src/nested_irq.c
* :github:`10751` - [Coverity CID :188889]Memory - illegal accesses in /subsys/bluetooth/host/gatt.c
* :github:`10750` - [Coverity CID :188890]Insecure data handling in /drivers/watchdog/wdt_qmsi.c
* :github:`10747` - tests/kernel/tickless/tickless_concept fails on ARC boards
* :github:`10733` - Logger thread should be started earlier than _init_static_threads() in init.c
* :github:`10720` - SSD1673 driver it setting a Kconfig symbol in dts_fixup.h
* :github:`10707` - tests/benchmarks/latency_measure fails on sam_e70_xplained
* :github:`10693` - samples/subsys/usb/console: Console routed to UART of no USB
* :github:`10685` - Missing # for else in segger conf
* :github:`10678` - nRF52840: hci_usb timeout during initialization by bluez
* :github:`10672` - nRF52: UARTE: uart_fifo_fill return value unreliable
* :github:`10671` - Callback function le_param_req() is never called.
* :github:`10668` - nRF52832: RTT vs. Bluetooth
* :github:`10662` - "Quick start - Integration testing" does not work as intended.
* :github:`10658` - Cannot use SPI_0 on nRF52810
* :github:`10649` - bug when build project which new c lib
* :github:`10639` - make run for native_posix has dependency issues
* :github:`10636` - quark_se is missing SPI_DRV_NAME symbol
* :github:`10635` - tests/kernel/mem_pool/mem_pool_api#test_mpool_alloc_timeout crashes on qemu_riscv32
* :github:`10633` - tests/kernel/mem_protect/syscall crashes on freedom_k64f, sam_e70_xplained and nrf52_pca10040
* :github:`10632` - tests/kernel/poll faults on freedom_k64f, sam_e70_xplained and nrf52_pca10040
* :github:`10623` - tests/drivers/watchdog/wdt_basic_api fails on Quark platforms
* :github:`10619` - [Zephyr] Firmware upgrade through UART [Nordic 52840 - pca 10056 Board]
* :github:`10617` - net: shell: Converting net and wifi shells to new shell breaks samples/net/wifi app for SimpleLink WiFi driver
* :github:`10611` - STM32L4 GPIOC Missing Interrupt support? (nucleo_l476rg)
* :github:`10610` - i2s driver for stm still uses old logger
* :github:`10609` - RISC-V timer incorrectly written
* :github:`10600` - [Coverity CID :174409]Memory - illegal accesses in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/fs.c
* :github:`10599` - [Coverity CID :174410]Memory - corruptions in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/wlan.c
* :github:`10598` - [Coverity CID :174412]Incorrect expression in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/wlan.c
* :github:`10597` - [Coverity CID :174414]Error handling issues in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/driver.c
* :github:`10596` - [Coverity CID :174417]Code maintainability issues in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/device.c
* :github:`10595` - [Coverity CID :174418]Error handling issues in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/fs.c
* :github:`10594` - [Coverity CID :188729]Uninitialized variables in /subsys/bluetooth/shell/bt.c
* :github:`10593` - [Coverity CID :188730]Memory - corruptions in /drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`10592` - [Coverity CID :188731]Memory - illegal accesses in /ext/hal/ti/simplelink/source/ti/drivers/net/wifi/source/driver.c
* :github:`10591` - [Coverity CID :188732]Integer handling issues in /subsys/net/lib/http/http_server.c
* :github:`10590` - [Coverity CID :188733]Error handling issues in /drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`10589` - [Coverity CID :188734]Control flow issues in /drivers/sensor/lis2dh/lis2dh.c
* :github:`10588` - [Coverity CID :188735]Uninitialized variables in /subsys/bluetooth/shell/bt.c
* :github:`10587` - [Coverity CID :188738]Memory - illegal accesses in /subsys/bluetooth/host/conn.c
* :github:`10586` - [Coverity CID :188739]Program hangs in /tests/posix/common/src/posix_rwlock.c
* :github:`10585` - [Coverity CID :188740]Error handling issues in /drivers/sensor/isl29035/isl29035_trigger.c
* :github:`10584` - [Coverity CID :188741]Control flow issues in /subsys/shell/shell_utils.c
* :github:`10583` - [Coverity CID :188742]Incorrect expression in /subsys/net/ip/connection.c
* :github:`10582` - [Coverity CID :188743]Program hangs in /tests/posix/common/src/posix_rwlock.c
* :github:`10581` - [Coverity CID :188744]Memory - corruptions in /drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`10580` - [Coverity CID :188745]Error handling issues in /drivers/wifi/winc1500/wifi_winc1500.c
* :github:`10579` - [Coverity CID :188747]Security best practices violations in /subsys/shell/shell.c
* :github:`10578` - [Coverity CID :188748]Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`10577` - [Coverity CID :188749]Null pointer dereferences in /subsys/bluetooth/controller/ll_sw/ctrl.c
* :github:`10576` - [Coverity CID :188750]Memory - illegal accesses in /subsys/bluetooth/shell/bt.c
* :github:`10575` - [Coverity CID :188752]Security best practices violations in /subsys/shell/shell.c
* :github:`10574` - [Coverity CID :188753]Incorrect expression in /subsys/net/ip/connection.c
* :github:`10573` - [Coverity CID :188754]Control flow issues in /samples/basic/userspace/shared_mem/src/enc.c
* :github:`10572` - [Coverity CID :188755]Control flow issues in /subsys/shell/shell_utils.c
* :github:`10571` - [Coverity CID :188756]Memory - corruptions in /drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`10570` - [Coverity CID :188757]Memory - illegal accesses in /subsys/bluetooth/shell/bt.c
* :github:`10569` - [Coverity CID :188758]Incorrect expression in /drivers/wifi/winc1500/wifi_winc1500.c
* :github:`10568` - [Coverity CID :188759]Integer handling issues in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`10567` - [Coverity CID :188760]Error handling issues in /drivers/wifi/winc1500/wifi_winc1500.c
* :github:`10537` - nRF52 regression: random resets noted across several boards / use cases
* :github:`10535` - Failure on tests/posix/common/ due to uninitialized memory access
* :github:`10531` - Default idle thread stack sizes too small when OS controlled power management is used
* :github:`10524` - PM_CONTROL_OS doesn't work in combination with certain I2C drivers in a single thread context
* :github:`10518` - drivers/modem/modem_receiver.c needs LOG_MODULE_REGISTER(mdm_receiver)
* :github:`10517` - Compatibility problem with increased BLE Tx buffers
* :github:`10515` - tests/benchmarks/timing_info faults on ARM platforms
* :github:`10509` - tests/kernel/interrupt is failing on NRFx boards
* :github:`10508` - tests/posix/common fails randomly on all platforms
* :github:`10493` - native_posix: Warnings during link on orphan sections after #10368
* :github:`10476` - kernel/threads/thread_apis tests crashes on ARM boards
* :github:`10475` - tests/kernel/threads/dynamic_thread test cases are failing on ARM boards
* :github:`10474` - tests/kernel/pipe/pipe test cases are failing on ARM boards
* :github:`10473` - tests/kernel/mem_protect/mem_protect tests are failing on ARM boards
* :github:`10460` - Bluetooth: settings: No space to store CCC config after successful pairing
* :github:`10453` - dma_stm32 driver has been broken by commit 07ff2d5
* :github:`10444` - tests/subsys/logging/log_core fails on few ARM platforms
* :github:`10439` - Logger calls will execute functions even though the LOG_LEVEL is masked
* :github:`10428` - logging: Weird output from log_strdup()
* :github:`10420` - gcc: "Exec format error" - WSL in Windows 10 1803
* :github:`10415` -  logging: Unaligned memory access in log_free
* :github:`10413` - Shell: trying to browse history freezes shell on disco_l475_iot1
* :github:`10402` - Crash with new logger and with new shell
* :github:`10389` - Conversion of net core to new logger breaks WiFi driver builds
* :github:`10382` - samples/sensor/apds9960/ results into build failure on multiple platforms.
* :github:`10369` - Logger crashes shell when boot banner is enabled
* :github:`10348` - valgrind detected issue in logger, during msg free
* :github:`10345` - The OpenAMP remote build is for wrong board
* :github:`10344` - SPI Chip Select usage is not unambiguous
* :github:`10329` - SystemView overflow event
* :github:`10320` - arm: mpu: mpu_config and mpu_regions to be declared/defined as const
* :github:`10318` - It is not documented what YAML bindings do
* :github:`10316` - net: sockets: Close doesn't unblock recv
* :github:`10313` - net: sockets: Packets are leaked on TCP abort connection
* :github:`10312` - Bluetooth: settings: CCC not stored on device reset
* :github:`10271` - Unexpected Kconfig warnings during documentation build
* :github:`10243` - native_posix linking issues under Ubuntu 18.04 after upgrade
* :github:`10241` - scripts/requirements.txt needs updating for west
* :github:`10234` - There is one too many "Shields" entry in the root Kconfig menu
* :github:`10231` - zephyr supported targets fail to flash with "ImportError: No module named 'colorama'"
* :github:`10207` - Shell should accept either CR or LF as line delimiter
* :github:`10204` - net: ipv6: corrupted UDP header after forwarding over 6lo iface
* :github:`10195` - Shell dereferences invalid pointer when printing demo command help
* :github:`10192` - SHELL asserts when pressing tab
* :github:`10191` - The new shell uses CONSOLE kconfig options, even though it does not use CONSOLE.
* :github:`10190` - The new shell can only be compiled on boards with SERIAL but it does not set the dependency in its Kconfig
* :github:`10186` - GPIO callback disable has no effect due to _gpio_fire_callbacks
* :github:`10164` - logger sample fails on qemu_xtensa due to lack of backend
* :github:`10152` - gitlint complains of apostrophe in user name
* :github:`10146` - [bluetooth][PTS] Getting Connection failed to be established occasionally
* :github:`10143` - Why does BT_SETTINGS require PRINTK?
* :github:`10137` - sample/basic/button should configure expected pin configuration
* :github:`10134` - sensor: vl53l0x: Warning message when building in ext/hal/st/lib/sensor/vl53l0x
* :github:`10130` - sanitycheck errors with "not well-formed text" warning
* :github:`10127` - Cannot use new shell with native_posix
* :github:`10102` - /tests/subsys/logging/log_core compilation fails on nios2 platform
* :github:`10096` - [Coverity CID :188167] Concurrent data access violations in /lib/posix/pthread.c
* :github:`10095` - [Coverity CID :188168] Concurrent data access violations in /lib/posix/pthread.c
* :github:`10094` - [Coverity CID :188169] Null pointer dereferences in /subsys/net/ip/rpl.c
* :github:`10093` - [Coverity CID :188170] Concurrent data access violations in /lib/posix/pthread.c
* :github:`10092` - [Coverity CID :188171] Null pointer dereferences in /lib/cmsis_rtos_v1/cmsis_thread.c
* :github:`10091` - [Coverity CID :188172] Null pointer dereferences in /subsys/net/ip/route.c
* :github:`10090` - [Coverity CID :188173] Null pointer dereferences in /subsys/net/ip/route.c
* :github:`10089` - [Coverity CID :188174] Control flow issues in /tests/crypto/mbedtls/src/mbedtls.c
* :github:`10058` - The test mem_pool_threadsafe sporadically hangs forever
* :github:`10055` - nRF52: MPU Fault issue
* :github:`10054` - Logger thread spins forever if there is no backend
* :github:`10043` - RISCv32 qemu configuration does not work with upstream qemu
* :github:`10038` - Inversed logic in fade_led sample for nRF boards
* :github:`10037` - fade_led sample doesn't work with pwm_nrfx driver
* :github:`10035` - nrfx PWM driver breaking API contract
* :github:`10034` - Possible regression of #8815 ("Nordic: Directly accessing GPIOTE might create unstable firmware"...)
* :github:`10028` - MCUBoot using W25Q SPI Flash not working (use of Zephyr semaphore)
* :github:`10026` - undefined reference to '__log_current_const_data_get' when using LOG_MODULE_DECLARE
* :github:`10013` - MISRA C - Review the use of memcpy, memcmp and memmove
* :github:`10012` - MISRA-C Do not use feature from stdarg.h
* :github:`10003` - Bluetooth: Identity creation is incomplete through vendor HCI
* :github:`9993` - Few error codes in POSIX API implementation is not supported
* :github:`9992` - cmake compiler cache failures in CI
* :github:`9975` - tests/lib/mem_alloc fails to build on Arduino Due after SoC move
* :github:`9972` - Porting to a new architecture needs to be documented
* :github:`9971` - doc: DT: use-prop-name is not documented
* :github:`9970` - Native posix port drivers need to be documented
* :github:`9960` - Stack check test fails - qemu_x86:tests/kernel/fatal/kernel.common.stack_protection
* :github:`9956` - Build failed when CONFIG_STM32_ARM_MPU_ENABLE=y
* :github:`9954` - samples/hello_world build failed on Windows/MSYS
* :github:`9953` - wrong behavior in pthread_barrier_wait()
* :github:`9949` - Make West launcher scripts in mainline zephyr compatible with multi- and mono-repo
* :github:`9936` - docs: Ring Buffers docs are hidden away under unexpected title
* :github:`9935` - sockets: Connect always binds the context to the default interface
* :github:`9932` - Invalid documentation link in README.rst
* :github:`9926` - samples/net/sockets/echo_client/server: No docs for testing TLS mode
* :github:`9924` - Segger Systemview + newlib does not compile
* :github:`9922` - Networking: Neighbour Discovery may be breaking an ongoing UDP Transmission
* :github:`9912` - Group posix tests
* :github:`9901` - Default nrfx PWM interrupt prio results in assert
* :github:`9892` - MISRA C Avoid dynamic memory allocation
* :github:`9879` - Portability: Arithmetic on void pointers
* :github:`9867` - Bluetooth LESC debug keys support (BT_USE_DEBUG_KEYS) is broken
* :github:`9861` - samples/subsys/usb/hid/  test hangs on quark_se_c1000_devboard
* :github:`9849` - samples/drivers/i2c fails with error writing to FRAM sensor
* :github:`9843` - tests/kernel/sched/deadline fails on NRF5x boards
* :github:`9830` - ASSERTION FAILURE : /tests/drivers/adc/adc_api fails on arduino_101 and quark_se_c1000 platforms
* :github:`9816` - DHT driver fetch fail
* :github:`9812` - drivers: eth: gmac: Fix incorrect cache coherency handling code
* :github:`9777` - tests/kernel/mem_pool/mem_pool_api:mpool_alloc_timeout crashes on qemu_riscv32 with boot delay
* :github:`9767` - [Coverity CID :187903] Uninitialized variables in /subsys/fs/nvs/nvs.c
* :github:`9765` - [Coverity CID :187905] Incorrect expression in /arch/arc/core/thread.c
* :github:`9763` - samples/net/http_client: Failed to send Head requrest
* :github:`9749` - NRF52 : NFFS file system : use of write function returns 0 but fails
* :github:`9743` - tests/posix/fs crashes with BUS FAULT on nRF52
* :github:`9741` - tests/kernel/spinlock:kernel.multiprocessing.spinlock_bounce crashing on ESP32
* :github:`9720` - samples\bluetooth\mesh_demo crash with real payload
* :github:`9708` - tests/kernel/tickless/tickless_concept fails on nRF5x with 1000msec boot delay
* :github:`9704` - tests/lib/mem_alloc/testcase.yaml#libraries.libc.newlib @ minnowboard:x86 results into exception
* :github:`9703` - tests/kernel/threads/no-multithreading: kernel.threads.no-multithreading failing on nrf52_pca10040 and qemu_x86 with boot delay
* :github:`9695` - Deprecated configurations around 'SPI_CS_GPIO'
* :github:`9689` - Multiple tests are failing on sam_e70_xplained once the cache is enabled
* :github:`9666` - tests/benchmarks/timing_info/testcase.yaml#benchmark.timing.default_kernel crashes on Arduino 101 / ARC
* :github:`9656` -  tests/kernel/fp_sharing failing on sam_e70_xplained
* :github:`9653` - tests/lib/mem_alloc/testcase.yaml#libraries.libc.newlib @ esp32:xtensa BUILD failed
* :github:`9651` - Shell_module@mimxrt1050_evk runs failure on R1.13_RC1
* :github:`9650` - latency_measure@mimxrt1050_evk meets hard fault for R1.13 RC1
* :github:`9590` - Template with C linkage in util.h:41
* :github:`9587` - System stack usage analysis code seems to be broken
* :github:`9582` - Cannot find g++ when CONFIG_CPLUSPLUS is set to y
* :github:`9560` - Failed test: mem_protect/usespace failed in nsim_sem and em_starterkit_em7d_v22
* :github:`9510` - zephyr/doc/security/security-overview.rst needs update
* :github:`9509` - Unable to upload firmware over serial with mcumgr
* :github:`9498` - Invalid argument saved on IRQ_CONNECT
* :github:`9463` - bt_le_scan_start Fails with Error -5 after 128 scan start/stop cycles
* :github:`9432` - Overriding 'LOG_LEVEL' could crash the firmware
* :github:`9411` - checkpatch.pl generates warning messages during execution for tests/kernel/static_idt/src/main.c
* :github:`9340` - Failed test: kernel.common.errno.thread_context on em_starterkit_em7d_v22 and minnowboard
* :github:`9290` - [Coverity CID :187325] Control flow issues in /samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app/src/mesh/device_composition.c
* :github:`9289` - [Coverity CID :187326] Control flow issues in /samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app/src/mesh/device_composition.c
* :github:`9174` - STM32L4 I2C read polling hang on NACK in stm32_i2c_msg_read()
* :github:`9076` - doc: correct SMP server sample imgtool.py sign usage
* :github:`9043` - New logging subsystem's timestamps wrap a little before the 3-minute mark
* :github:`9015` - eth_sam_gmac driver (and BOARD=sam_e70_xplained using it) sets unduly high memory requirements on the IP stack overall
* :github:`9003` - [Coverity CID :187062] Incorrect expression in /samples/net/sockets/echo_server/src/udp.c
* :github:`8999` - [Coverity CID :187067] Memory - corruptions in /subsys/logging/log_output.c
* :github:`8988` - [Coverity CID :187079] Integer handling issues in /subsys/net/l2/ethernet/gptp/gptp.c
* :github:`8979` - Failed test:  tests/subsys/dfu/mcuboot/dfu.bank_erase failing on nrf52840_pca10056
* :github:`8915` - STM32 I2C hang
* :github:`8914` - Failed test: net.app.no-ipv6 (/tests/net/app/) on sam_e70_xplained
* :github:`8869` - uart: Problems with interrupt-driven UART in QEMU and some hw boards
* :github:`8838` - hello_world not working on frdm_k64f/qemu_cortex_m3 with newlib and arm gcc embedded 2018q2
* :github:`8810` - Cannot flash board stm32f4_disco
* :github:`8804` - esp32 cannot get character from UART port
* :github:`8796` - Bluetooth: controller: assert on conn update in slave role under max. throughput usecases
* :github:`8789` - tests/ztest/test/mock fails to complete on max10/nios2
* :github:`8746` - net_app DTLS Client net/pkt ERR log when doing handshake
* :github:`8684` - driver: i2c_mcux: unable to perform more than one write transfer like i2c_burst_write
* :github:`8683` - issue with nrf52840_pca10040 and peripheral sample
* :github:`8631` - memory leak in mbedtls using net_app DTLS client
* :github:`8614` - cmake: Zephyr wrapped functions does not allow keywords on zephyr_link_libraries
* :github:`8470` - Broken Arduino 101 Bluetooth Core flashing
* :github:`8409` - Pin interrupt not handled when two pin ints fires in quick succession
* :github:`8376` - DTS: 'boolean' type value was defined as True, not 1
* :github:`8374` - arm: core: cortex_m: wrongly assumes double precision FPU on Cortex-M7
* :github:`8348` - sanitycheck: localized make error message leads to false "passed" result
* :github:`8339` - crypto: drivers use cipher_aead_pkt.tag differently
* :github:`8208` - tests/crypto/ecc_dsa hangs in montecarlo_signverify test on nrf51_pca10028:arm
* :github:`8197` - kernel.memory_protection.stack_random: Stack pointer randomization fails on em_starterkit_em7d_v22
* :github:`8190` - scheduler: thread priorities need to be cleaned up
* :github:`8187` - QEMU serial output is not reliable, may affect SLIP and thus network testing
* :github:`8160` - BUILD_ASSERT doesn't work outside gcc
* :github:`8159` - tests/kernel/fifo/fifo_timeout fails on nrf51_pca10028 and nrf52_pca10040
* :github:`8131` - net_if_tx sends a 0 Reference counter(pkt->ref == 0) packet
* :github:`8116` - tests/kernel/profiling/profiling_api fails to complete on minnowboard
* :github:`8115` - tests/kernel/xip crasshes on minnowboard
* :github:`8108` - make 'rom_report' misreports _sw_isr_table
* :github:`8104` - open-amp: enable C library cause open-amp\open-amp\lib\common\sh_mem.c compile error
* :github:`8097` - tests/drivers/watchdog/wdt_basic_api fails on Quark SE / x86 and esp32
* :github:`8057` - samples/net/: Experiencing the delayed response from zephyr networking stack
* :github:`7999` - HCI UART with Linux host cannot connect to nrf52 6lowpan peripheral
* :github:`7986` - The scripts (debug, debugserver and flash) are not working for Intel S1000 board
* :github:`7818` - big_http_download stuck during download on qemu_x86
* :github:`7817` - Confusing macros: SECONDS vs K_SECONDS, MSEC vs K_MSEC
* :github:`7760` - cmake failure using ExternalProject and dependencies w/ninja
* :github:`7706` - ARM NXP hardware stack overflows do not report _NANO_ERR_STACK_CHK_FAIL or provide MPU fault information
* :github:`7638` - get FAULT when fuzzing sys_ring_buf\_ put and sys_ring_bug_get APIs
* :github:`7510` - [Coverity CID :185395] Memory - corruptions in /samples/net/mbedtls_sslclient/src/mini_client.c
* :github:`7441` - newlib support in zephyr is untested and very broken
* :github:`7409` - Networking examples crash on optimization levels different than -Os
* :github:`7390` - pinmux subsystem API is undocumented and does not enforce validation
* :github:`7381` - gpio_mcux driver needs to validate pin parameters
* :github:`7291` - intermittent issue with tests/kernel/fatal
* :github:`7196` - kernel: CONFIG_INIT_STACKS : minor documentation & dependency update
* :github:`7193` - tickless and timeslicing don't play well together
* :github:`7179` - _vprintk incorrectly prints 64-bit values
* :github:`7048` - Tickless Kernel Timekeeping Problem
* :github:`7013` - cleanup device tree warnings on STM32
* :github:`6874` - Not able to join OpenThread BorderRouter or a ot-ftd-cli network
* :github:`6866` - build: requirements: No module named yaml and elftools
* :github:`6696` - [Coverity CID: 183036] Control flow issues in /drivers/gpio/gpio_sam.c
* :github:`6695` - [Coverity CID: 183037] Memory - corruptions in /samples/net/mbedtls_dtlsclient/src/dtls_client.c
* :github:`6666` - [Coverity CID: 183066] Error handling issues in /tests/kernel/mbox/mbox_api/src/test_mbox_api.c
* :github:`6585` - kernel: re-delete event list node [bug]
* :github:`6452` - Jumbled Console log over USB
* :github:`6365` - "dummy-flash" device tree bug
* :github:`6319` - Missing documentation for zephyr API to query kernel version: sys_kernel_version_get
* :github:`6276` - assert when running sys_kernel on disco_l475_iot1 (with asserts enabled)
* :github:`6226` - IRC-bot sample eventually stops responding to IRC commands
* :github:`6180` - CONFIG_IS_BOOTLOADER is poorly named and documented
* :github:`6147` - "ninja flash" cannot be used with DFU-capable applications
* :github:`5781` - Initial TLS connection failure causes TLS client handler to stop and fail endlessly w/ EBUSY
* :github:`5735` - mpu_stack_guard_test fails on many arm platforms, including qemu
* :github:`5734` - samples/drivers/crypto fails on qemu_nios2
* :github:`5702` - usb subsystem doc not pulling from header doxygen comments
* :github:`5678` - USB: DW driver does not work properly with mass storage class
* :github:`5634` - The dependency between the Kconfig source files and the Kconfig output is missing
* :github:`5605` - Compiler flags added late in the build are not exported to external build systems
* :github:`5603` - Bluetooth logging is hardcoded with level 4 (debug)
* :github:`5485` - tests: kernel/xip: CONFIG_BOOT_DELAY issue for qemu_riscv32
* :github:`5426` - [kconfig] Allow user-input when new options are detected
* :github:`5411` - Secondary repos are missing licenses
* :github:`5387` - Many of the samples using mbedtls_ssl_conf_psk() dont check for error
* :github:`5376` - No way to get clock control subsystem type
* :github:`5343` - cmake: libapp.a in unexpected location
* :github:`5289` - IPv6 over BLE: IPSP sample crashes and ble controller gets disconnected
* :github:`5244` - UART continuous interrupt
* :github:`5226` - Compiling with -O0 causes the kobject text area to exceed the limit (linker error)
* :github:`5006` - syscalls: properly fix how unit testing deals with __syscall
* :github:`4977` - USB: documentation needs to be updated
* :github:`4927` - Hard Fault when no device driver is setup for ENTROPY results
* :github:`4888` - LwM2M: Fix BT device pending / retry errors
* :github:`4836` -  connection disconnected due to Le timeout(0x22)
* :github:`4682` - http_server example fails for ESP32
* :github:`4324` - samples/net/http_client: error in detecting and processing the message received
* :github:`4082` - remove _current NULL check in ARM's _is_thread_user()
* :github:`4042` - net: NET_CONN_CACHE relevant
* :github:`4002` - Can not compile C++ project without setting -fpermissive
* :github:`3999` - qemu_xtensa crash while running sample/net/sockets/echo with ipv6 enabled
* :github:`3997` - *** ERROR *** pkt 0x2000c524 is freed already by prepare_segment():388 (mqtt_tx_publish():242)
* :github:`3906` - Static code scan (coverity CID: 151975, 173645, 173658 ) issues seen
* :github:`3847` - Fix LwM2M object firmware pull block transfer mode to select size via interface type (BT, ethernet, etc)
* :github:`3796` - Multiple issues with http_server library design and implementation
* :github:`3670` - ARC: timeslice not reset on interrupt-induced swap
* :github:`3669` - xtensa: timeslice not reset for interrupt-induced swaps
* :github:`3606` - _NanoFatalErrorHandler and other internal kernel APIs are inconsistently defined
* :github:`3524` - Bluetooth data types missing API documentation
* :github:`3522` - New Zephyr-defined types missing API documentation
* :github:`3464` - xtensa hifi_mini SOC does not build
* :github:`3375` - Debugging difficulties on Cortex-M with frame pointer missing
* :github:`3288` - Fatal fault in SPI ISR when using multiple interfaces
* :github:`3244` - Ataes132a fails to encrypt/decrypt with mode ECB and CCM mode
* :github:`3226` - ATT channel gets disconnected on ATT timeout but GATT API doesn't check for it
* :github:`3198` - ARC: Boot_time test not functioning
* :github:`3132` - frdm_k64f: Sometimes, there may be 1000+ms roundtrip for pings and other Ethernet packets (instead of sub-ms)
* :github:`3129` - frdm_k64f: Ethernet may become stuck in semi-persistent weird state, not transferring data, potentially affecting host Ethernet
* :github:`2984` - frdm_k64f bus exception bug due to peculiar RAM configuration
* :github:`2907` - make menuconfig .config easily overwritten
* :github:`2627` - LE L2CAP CoC transfers less octets that claims to be
* :github:`2108` - Stack alignment on ARM doesn't always follow Procedure Call Standard
* :github:`1677` - sys_*_bit and sys_bitfield_*_bit APIs are not implemented on ARM
* :github:`1550` - problem with pci_bus_scan resulting in an endless loop
* :github:`1533` - It is not documented how to discover, install, and use external toolchains
* :github:`1495` - esp32: newlibc errors
* :github:`1429` - LWM2M configs not defined
* :github:`1381` - HMC5883L driver config error
* :github:`729` - TCP SYN backlog change likely has concurrent global var access issues

---

### Doc Releases Release Notes 1.5 (`doc/releases/release-notes-1.5.rst`)

.. _zephyr_1.5:

Zephyr Kernel 1.5.0
####################

The Zephyr Engineering team is glad to announce the release of Zephyr Kernel
1.5.0. This is the first release to follow the 3-month release cadence.
This release includes numerous fixes and support for major features.
Additional changes include support for new drivers, sensors, and boards.

Major enhancements included with the release:

- TCP Support
- Integration of the Paho MQTT Library support with QoS
- Flash Filesystem Support
- Integration of the mbedTLS library for encryption
- Improved BR/EDR support (for L2CAP, in particular).
- Support for the Altera Nios II/f soft CPU architecture

A detailed list of changes since v1.4.0 by component follows:

Kernel
******

- Added nano_fifo_put_list() APIs, which allows queuing  a list of elements
  on a nanokernel FIFO.
- Removed unused memory pool structure field.
- Enhanced memory pool code.

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

- ARM: Updated to include floating point registers.
- Altera Nios II/f soft CPU architecture support
   -  Internal Interrupt Controller
   -  Avalon Timer
   -  Avalon JTAG UART (polling mode) as default for qemu-system-nios2,
      and 16550 UART as default for Altera MAX10.

Boards
******

- Added Nios II QEMU board.
- Added configuration for Altera MAX10 FPGA.

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

- Sensors: Added driver for I2C HMC5883L magnetometer.
- Sensors: Added driver for I2C TMP112 temperature sensor.
- Sensors: Added driver for MAX44009 light sensor.
- Sensors: Added driver for LPS25HB.
- HAL: Updated QMSI drivers to 1.1
- Added DMA QMSI shim driver.
- Added Quark SE USB device controller driver.
- Added suspend/resume to QMSI drivers.
- Added Guard for critical sections of the QMSI drivers.
- Added Zephyr File System API.
- Added driver for ENC28J60 Ethernet SPI module.

Networking
**********

- TCP Support
- Connection handling fixes in IP stack.
- Allow sending zero length user data IP packet.

Network Buffers

- New net_buf_simple API for light-weight on-stack (or static) buffers where a
  net_buf (and its associated pool) is overkill. The net_buf API now uses as
  an internal implementation detail net_buf_simple.
- Add support for network buffer fragmentation.
- Add more net_buf big endian helpers.

Bluetooth
*********

- Multiple fixes & improvements to the nble driver.
- New API for dealing with Out of Band data (like the local address).
- Various smaller fixes & improvements in many places.

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

- Added "qemugdb" target to start a local GDB on port 1234.
- Added script to filter known issues in the build output.
- Sanity: Added "-R" option to build all test with assertions.

Libraries
*********

- File system: Imported Open Source FAT FS 0.12a code.
- Encryption: Imported mbedTLS library.
- Encryption: Updated TinyCrypt library to 2.0.

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

- Fixed all the documentations warnings during build.
- Fixed several typos, trademarks and grammar.
- Moved all the boards documentation to the wiki.
- Moved Code Contribution documentation to the wiki.
- Added package "ncurses" to the list of requirements.
- Updated macOS instructions.

Test and Samples
****************

- Samples: Replaced old debug macro to use new SYS_LOG macro.
- Added TMP112 sensor application.
- Added Quark SE power management sample application.
- Added DMA memory to memory transfer sample.
- Added sample for MAX44009 light sensor.
- Added MQTT publisher and subscriber samples.
- Added mbedTLS sample client.

JIRA Related Items
******************


Stories
========

* ``ZEP-49`` - x86: unify separate SysV and IAMCU code
* ``ZEP-55`` - enable nanokernel test_context on ARC
* ``ZEP-58`` - investigate use of -fomit-frame-pointer
* ``ZEP-60`` - irq priorities should be rebased to safe values
* ``ZEP-69`` - Extend PWM API to use arbitrary unit of time
* ``ZEP-203`` - clean up APIs for static exceptions
* ``ZEP-225`` - Add kernel API to put SoC to Deep Sleep (DS) State
* ``ZEP-226`` - Update sample PMA to support device suspend/resume
* ``ZEP-227`` - Add kernel API to put SoC to Low Power State (LPS)
* ``ZEP-228`` - File system interface designed after POSIX
* ``ZEP-232`` - Support for USB communications device class ACM
* ``ZEP-234`` - provide a direct memory access (DMA) interface
* ``ZEP-243`` - Create Wiki Structure for Boards
* ``ZEP-249`` - nios2: Enable altera_max10 board in sanitycheck runs for nanokernel
* ``ZEP-254`` - nios2: define NANO_ESF struct and populate _default_esf
* ``ZEP-270`` - nios2: determine optimal value for PERFOPT_ALIGN
* ``ZEP-271`` - nios2: enable microkernel & test cases
* ``ZEP-272`` - nios2: add global pointer support
* ``ZEP-273`` - nios2: implement flashing scripts
* ``ZEP-274`` - nios2: document GDB debugging procedure
* ``ZEP-275`` - nios2: scope support for instruction/data caches
* ``ZEP-279`` - nios2: demonstrate nanokernel hello world
* ``ZEP-285`` - FAT filesystem support on top of SPI Flash
* ``ZEP-289`` - nios2: implement kernel_event_logger
* ``ZEP-291`` - Driver for the ENC28J60 ethernet device
* ``ZEP-304`` - Investigate QEMU support for Nios II
* ``ZEP-327`` - Encryption Libraries needed for Thread support
* ``ZEP-340`` - TLS/SSL
* ``ZEP-354`` - Provide a DMA driver for Quark SE core
* ``ZEP-356`` - DMA device support
* ``ZEP-357`` - Support for the MAX44009 sensor
* ``ZEP-358`` - Add support for TMP112 sensor
* ``ZEP-412`` - Add driver API reentrancy support to RTC driver for LMT
* ``ZEP-414`` - Add driver API reentrancy support to flash driver
* ``ZEP-415`` - aaU, I want to use the NATS messaging protocol to send sensor data to the cloud
* ``ZEP-416`` - MQTT client capability: QoS1, QoS2
* ``ZEP-424`` - AON counter driver needs to add driver API reentrancy support
* ``ZEP-430`` - Add driver API reentrancy support to PWM shim driver
* ``ZEP-434`` - Driver for HMC5883L magnetometer
* ``ZEP-440`` - Add driver API reentrancy support to WDT shim driver
* ``ZEP-441`` - Add driver API reentrancy support to GPIO shim drivers
* ``ZEP-489`` - nios2: handle unimplemented multiply/divide instructions
* ``ZEP-500`` - Domain Name System client library
* ``ZEP-506`` - nios2: support bare metal boot and XIP on Altera MAX10
* ``ZEP-511`` - Add Deep Sleep support in PMA
* ``ZEP-512`` - Add suspend/resume support for some core devices to enable Deep Sleep support in PMA
* ``ZEP-541`` - Integrate QMSI releases to Zephyr
* ``ZEP-567`` - netz sample code
* ``ZEP-568`` - MQTT QoS sample app
* ``ZEP-573`` - IoT applications must use netz API
* ``ZEP-590`` - Update Zephyr's TinyCrypt to version 2.0
* ``ZEP-643`` - Add file system API documentation
* ``ZEP-650`` - Quark SE: Implement PM reference application
* ``ZEP-652`` - QMSI shim driver: RTC: Implement suspend and resume callbacks
* ``ZEP-655`` - QMSI shim driver: PWM: Implement suspend and resume callbacks
* ``ZEP-658`` - QMSI shim driver: GPIO: Implement suspend and resume callbacks
* ``ZEP-659`` - QMSI shim driver: UART: Implement suspend and resume callbacks
* ``ZEP-662`` - QMSI shim driver: Pinmux: Implement suspend and resume callbacks

Epic
====

* ``ZEP-278`` - Enable Nios II CPU on Altera Max10
* ``ZEP-284`` - Flash Filesystem Support
* ``ZEP-305`` - Device Suspend / Resume infrastructure
* ``ZEP-306`` - PWM Enabling
* ``ZEP-406`` - Drivers shall be re-entrant

Bug
===

* ``ZEP-68`` - Final image contains duplicates of some routines
* ``ZEP-156`` - PWM Set Value API behaves incorrectly
* ``ZEP-158`` - PWM Set Duty Cycle API does not work
* ``ZEP-180`` - make menuconfig user provided options are ignored at building time
* ``ZEP-187`` - BLE APIs are not documented
* ``ZEP-218`` - [drivers/nble][PTS_TEST] Fix responding with the wrong error codes to the Prepare Write Request
* ``ZEP-221`` - [drivers/nble][PTS_TEST] Implement Execute Write Request handler
* ``ZEP-369`` - When building out of the tree, application object files are not placed into outdir
* ``ZEP-379`` - _k_command_stack may be improperly initialized when debugging
* ``ZEP-384`` - D2000 hangs after I2C communication with BMC150 sensor
* ``ZEP-401`` - PWM driver turns off pin if off time is 0 in set_values
* ``ZEP-423`` - Quark D2000 CRB documentation should include instructions to flash bootloader
* ``ZEP-435`` - Ethernet/IPv4/TCP: ip_buf_appdatalen returns wrong values
* ``ZEP-456` - doc: ``IDT security``` section disappeared
* ``ZEP-457`` - doc: contribute/doxygen/typedefs.rst: examples files are broken
* ``ZEP-459`` - doc: kconfig reference entries in HTML are lacking a title
* ``ZEP-460`` - doc: document parameters of DEVICE* macros
* ``ZEP-461`` - Release 1.4.0 has broken the BMI160 sample as well as an application based on it
* ``ZEP-463`` - Getting started guide "next" link doesn't take you to "Checking Out the Source Code Anonymously" section
* ``ZEP-469`` - Ethernet/IPv4/TCP: net_receive & net_reply in server mode
* ``ZEP-474`` - ND: Neighbor cache is not getting cleared
* ``ZEP-475`` - Issue with timer callback routine: Condition checked is incorrect
* ``ZEP-478`` - Linux setup docs missing step to install curses development package for Fedora
* ``ZEP-497`` - Ethernet/IPv4/TCP: failed to get free buffer
* ``ZEP-499`` - TMP007 driver returns invalid values for negative temperature
* ``ZEP-514`` - memory corruption in microkernel memory pool defrag()
* ``ZEP-516`` - Ubuntu setup instructions missing 'upgrade' step
* ``ZEP-518`` - SPI not working on Arduino101
* ``ZEP-522`` - TCP/client-mode: disconnect
* ``ZEP-523`` - FIFOs defined by DEFINE_FIFO macro use the same memory buffer
* ``ZEP-525`` - srctree changes are breaking applications
* ``ZEP-526`` - build "kernel event logger" sample app failed for BOARD=quark_d2000_crb
* ``ZEP-534`` - Scan for consistent use of "platform/board/SoC" in documentation
* ``ZEP-537`` - doc: create external wiki page "Maintainers"
* ``ZEP-545`` - Wrong default value of CONFIG_ADC_QMSI_SAMPLE_WIDTH for x86 QMSI ADC
* ``ZEP-547`` - [nble] Failed to start encryption after reconnection
* ``ZEP-554`` - samples/drivers/aon_counter check README file
* ``ZEP-555`` - correct libgcc not getting linked for CONFIG_FLOAT=y on ARM
* ``ZEP-556`` - System hangs during I2C transfer
* ``ZEP-565`` - Ethernet/IPv4/TCP: last commits are breaking network support
* ``ZEP-571`` - ARC kernel BAT failed due to race in nested interrupts
* ``ZEP-572`` - X86 kernel BAT failed: Kernel Allocation Failure!
* ``ZEP-575`` - Ethernet/IPv4/UDP: ip_buf_appdatalen returns wrong values
* ``ZEP-595`` - UART: usb simulated uart doesn't work in poll mode
* ``ZEP-598`` - CoAP Link format filtering is not supported
* ``ZEP-611`` - Links on downloads page are not named consistently
* ``ZEP-616`` - OS X setup instructions not working on El Capitan
* ``ZEP-617`` - MQTT samples build fail because netz.h file missing.
* ``ZEP-621`` - samples/static_lib: fatal error: stdio.h: No such file or directory
* ``ZEP-623`` - MQTT sample mqtt.h missing "mqtt_unsubscribe" function
* ``ZEP-632`` - MQTT fail to re-connect to the broker.
* ``ZEP-633`` - samples/usb/cdc_acm: undefined reference to 'uart_qmsi_pm_save_config'
* ``ZEP-642`` - Inconsistent interpretation of pwm_pin_set_values arguments among drivers
* ``ZEP-645`` - ARC QMSI ADC shim driver fails to read sample data
* ``ZEP-646`` - I2C fail to read GY2561 sensor when GY2561 & GY271 sensor are attached to I2C bus.
* ``ZEP-647`` - Power management state storage should use GPS1 instead of GPS0
* ``ZEP-669`` - MQTT fail to pingreq if broker deliver topic to client but client doesn't read it.
* ``ZEP-673`` - Sanity crashes and doesn't kill qemu upon timeout
* ``ZEP-679`` - HMC5883L I2C Register Read Order
* ``ZEP-681`` - MQTT client sample throws too many warnings when build.
* ``ZEP-687`` - docs: Subsystems/Networking section is almost empty
* ``ZEP-689`` - Builds on em_starterkit fail
* ``ZEP-695`` - FatFs doesn't compile using Newlib
* ``ZEP-697`` - samples/net/test_15_4 cannot be built by sanitycheck
* ``ZEP-703`` - USB sample apps are broken after QMSI update
* ``ZEP-704`` - test_atomic does not complete on ARC
* ``ZEP-708`` - tests/kernel/test_ipm fails on Arduino 101
* ``ZEP-739`` - warnings when building samples for quark_se devboard

Known issues
============

* ``ZEP-517`` - build on windows failed "zephyr/Makefile:869: \*\*\* multiple target patterns"
   - No workaround, will fix in future release.

* ``ZEP-711`` - I2c: fails to write with mode fast plus
   - No workaround need it, there is no support for high speed mode.

* ``ZEP-724`` - build on windows failed: 'make: execvp: uname: File or path name too long'
   - No workaround, will fix in future release.

* ``ZEP-467`` - Hang using UART and console.
   - No workaround, will fix in future release.

* ``ZEP-599`` - Periodic call-back function for periodic REST resources is not getting invoked
   - No workaround, will fix in future release.

* ``ZEP-471`` - Ethernet packet with multicast address is not working
   - No workaround, will fix in future release.

* ``ZEP-473`` - Destination multicast address is not correct
   - No workaround, will fix in future release.

---

### Doc Releases Release Notes 1.6 (`doc/releases/release-notes-1.6.rst`)

.. _zephyr_1.6:

Zephyr Kernel 1.6.0
####################

We are pleased to announce the release of Zephyr kernel version 1.6.0. This
release introduces the unified Kernel replacing the separate nano- and
micro-kernels and simplifying the overall Zephyr architecture and programming
interfaces.
Support for the ARM Cortex-M0/M0+ family was added and board support for
Cortex-M was expanded.
Additionally, this release adds many improvements for documentation, build
infrastructure, and testing.

Major enhancements included with the release:

* Introduced the Unified Kernel; the nano and micro kernel were removed.
* The legacy API is still supported but deprecated.
* Legacy tests and samples were moved to tests/legacy and samples/legacy.
* Unified kernel documentation was added and legacy nanokernel/microkernel
  documentation was removed.
* Added support for several ARM Cortex-M boards
* Added support for USB mass storage and access to the filesystem.
* Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported.

A detailed list of changes since v1.5.0 by component follows:

Kernel
******

* Introduced the unified kernel.
* Removed deprecated Tasks IRQs.
* Removed deprecated dynamic interrupt API.
* Added DLIST to operate in all elements of a doubly-linked list.
* SLIST: Added sys_slist_get() to fetch and remove the head, also Added
  append_list and merge_slist.
* Added nano_work_pending to check if it is pending execution.
* Unified: Added support for k_malloc and k_free.
* Renamed kernel objects event to alert and memory map to memory slab.
* Changed memory pool, memory maps, message queues and event handling APIs.

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

* ARC: Removed CONFIG_TIMER0_CLOCK_FREQ.
* ARC: Unified linker scripts.
* ARC: Removed dynamic interrupts.
* ARM: Added choice to use floating point ABI.
* ARM: Added NXP Kinetis kconfig options to configure clocks.
* ARM: Removed dynamic interrupts and exceptions.
* ARM: Atmel: Added constants and structures for watchdog registers.
* ARM: Added support for ARM Cortex-M0/M0+.
* x86: Removed dynamic interrupts and exceptions.
* x86: Declared internal API for interrupt controllers.
* x86: Changed IRQ controller to return -1 if cannot determine source vector.
* x86: Grouped Quark SoC's under intel_quark family.
* x86: Optimized and simplified IRQ and exception stubs.

Boards
******

* Renamed board Quark SE devboard to Quark SE C1000 devboard.
* Renamed board Quark SE SSS devboard to Quark SE C1000 SS devboard.
* Quark SE C1000: Disabled IPM and enabled UART0 on the Sensor Subsystem.
* Removed basic_cortex_m3 and basic_minuteia boards.
* Arduino 101: Removed backup/restore scripts. To restore original bootloader
  use flashpack utility instead.
* Renamed nRF52 Nitrogen to 96Boards Nitrogen.
* Added ARM LTD Beetle SoC and V2M Beetle board.
* Added Texas Instruments CC3200 LaunchXL support.
* Added support for Nordic Semiconductor nRF51822.
* Added support for NXP Hexiwear board.

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

* SPI: Fixed typos in SPI port numbers.
* Pinmux: Removed Quark dev unused file.
* I2C: Added KSDK shim driver.
* Ethernet: Added KSDK shim driver.
* Flash: Added KSDK shim driver
* I2C: Changed config parameters to SoC specific.
* QMSI: Implemented suspend and resume functions QMSI shim drivers
* Added HP206C sensor.
* Changed config_info pointers to const.
* Added support for SoCWatch driver.
* Added FXOS8700 accelerometer / magnetometer sensor driver.

Networking
**********

* Minor fixes to uIP networking stack (This will be deprecated in 1.7)

Bluetooth
*********

* Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported.
* New location for Controller & Host implementations: subsys/bluetooth/
* Added raw HCI API to enable physical HCI transport for a Controller-only build.
* Added sample raw HCI apps for USB and UART.
* Added cross-transport pairing support for the Security Manager Protocol.
* Added RFCOMM support (for Bluetooth Classic)
* Added basic persistent storage support (filesystem-backed)
* Renamed bt_driver API to bt_hci_driver, in anticipation of Bluetooth radio drivers.

Build Infrastructure
********************

* Makefile: Changed outdir into board-specific directory to avoid build collisions.
* Makefile: Changed to use HOST_OS environment variable.
* Makefile: Added support for third party build systems.
* Sanity: Added support to filter using environment variables.
* Sanity: Added support for multiple toolchains.
* Sanity: Added ISSM and ARM GCC embedded toolchains to the supported toolchains.
* Sanity: Added extra arguments to be passed to the build.
* Sanity: Removed linker VMA/LMA offset check.
* Sysgen: Added --kernel_type argument.
* Modified build infrastructure to support unified kernel.
* SDK: Zephyr: Added check for minimum required version.
* Imported get_maintainer.pl from Linux kernel.

Libraries
*********

* libc: Added subset of standard types in inttypes.h.
* libc: Added support for 'z' length specifier.
* libc: Removed stddef.h which is provided by the compiler.
* libc: printf: Improved code for printing.
* printk: Added support for modifiers.
* Added CoAP implementation for Zephyr.
* File system: Added API to grow or shrink a file.
* File system: Added API to get volume statistics.
* File system: Added API to flush cache of an opened file.

HALs
****

* QMSI: Updated to version 1.3.1.
* HAL: Imported CC3200 SDK.
* Imported Nordic MDK nRF51 files.
* Imported Kinetis SDK Ethernet phy driver.
* Imported SDK RNGA driver.

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

* Drivers: Improved Zephyr Driver model.
* Updated device power management API.
* Unified Kernel primer.
* Moved supported board information to the wiki.zephyrproject.org site.
* Revised documentation for Kernel Event logger and Timing.

Test and Samples
****************

* Fixed incorrect printk usage.
* Removed test for dynamic exceptions.
* Added USB sample.
* Added tests and samples for CoAP client and server.
* Added philosophers unified sample.
* Removed printf/printk wrappers.
* Added Unified kernel API samples.
* Imported TinyCrypt test cases for CTR, ECC DSA and ECC DH algorithm.

Deprecations
************

* Deprecated microkernel and nanokernel APIs.
* Removed dynamic IRQs and exceptions.
* Removed Tasks IRQs.

JIRA Related Items
******************

* ``ZEP-308`` - Build System cleanup and Kernel / Application build separation
* ``ZEP-334`` - Unified Kernel
* ``ZEP-766`` - USB Mass Storage access to internal filesystem
* ``ZEP-1090`` - CPU x86 save/restore using new QMSI bootloader flow
* ``ZEP-1173`` - Add support for bonding remove
* ``ZEP-48`` - define API for interrupt controllers
* ``ZEP-181`` - Persistent storage APIs
* ``ZEP-233`` - Support USB mass storage device class
* ``ZEP-237`` - Support pre-built host tools
* ``ZEP-240`` - printk/printf usage in samples
* ``ZEP-248`` - Add a BOARD/SOC porting guide
* ``ZEP-342`` - USB DFU
* ``ZEP-451`` - Quark SE output by default redirected to IPM
* ``ZEP-521`` - ARM - add choice to floating point ABI selection
* ``ZEP-546`` - UART interrupts not triggered on ARC
* ``ZEP-584`` - warn user if SDK is out of date
* ``ZEP-592`` - Sanitycheck support for multiple toolchains
* ``ZEP-605`` - SMP over BR/EDR
* ``ZEP-614`` - Port TinyCrypt 2.0 test cases to Zephyr
* ``ZEP-622`` - Add FS API to truncate/shrink a file
* ``ZEP-627`` - Port Trickle support from Contiki into current stack
* ``ZEP-635`` - Add FS API to grow a file
* ``ZEP-636`` - Add FS API to get volume total and free space
* ``ZEP-640`` - Remove dynamic IRQs/exceptions from Zephyr
* ``ZEP-653`` - QMSI shim driver: Watchdog: Implement suspend and resume callbacks
* ``ZEP-654`` - QMSI shim driver: I2C: Implement suspend and resume callbacks
* ``ZEP-657`` - QMSI shim driver: AONPT: Implement suspend and resume callbacks
* ``ZEP-661`` - QMSI shim driver: SPI: Implement suspend and resume callbacks
* ``ZEP-688`` - unify duplicated sections of arch linker scripts
* ``ZEP-715`` - Add K64F clock configurations
* ``ZEP-716`` - Add Hexiwear board support
* ``ZEP-717`` - Add ksdk I2C shim driver
* ``ZEP-718`` - Add ksdk ethernet shim driver
* ``ZEP-721`` - Add FXOS8700 accelerometer/magnetometer sensor driver
* ``ZEP-737`` - Update host tools from upstream: fixdep.c
* ``ZEP-740`` - PWM API: Check if 'flags' argument is really required
* ``ZEP-745`` - Revisit design of PWM Driver API
* ``ZEP-750`` - Arduino 101 board should support one configuration using original bootloader
* ``ZEP-758`` - Rename Quark SE Devboard to its official name: Quark SE C1000
* ``ZEP-767`` - Add FS API to flush cache of an open file
* ``ZEP-775`` - Enable USB CDC by default on Arduino 101 and redirect serial to USB
* ``ZEP-783`` - ARM Cortex-M0/M0+ support
* ``ZEP-784`` - Add support for Nordic Semiconductor nRF51822 SoC
* ``ZEP-850`` - remove obsolete boards basic_minuteia and basic_cortex_m3
* ``ZEP-906`` - [unified] Add scheduler time slicing support
* ``ZEP-907`` - Test memory pool support (with mailboxes)
* ``ZEP-908`` - Add task offload to fiber support
* ``ZEP-909`` - Adapt tickless idle + power management for ARM
* ``ZEP-910`` - Adapt tickless idle for x86
* ``ZEP-912`` - Finish renaming kernel object types
* ``ZEP-916`` - Eliminate kernel object API anomalies
* ``ZEP-920`` - Investigate malloc/free support
* ``ZEP-921`` - Miscellaneous documentation work
* ``ZEP-922`` - Revise documentation for Kernel Event Logger
* ``ZEP-923`` - Revise documentation for Timing
* ``ZEP-924`` - Revise documentation for Interrupts
* ``ZEP-925`` - API changes to message queues
* ``ZEP-926`` - API changes to memory pools
* ``ZEP-927`` - API changes to memory maps
* ``ZEP-928`` - API changes to event handling
* ``ZEP-930`` - Cut over to unified kernel
* ``ZEP-933`` - Unified kernel ARC port
* ``ZEP-934`` - NIOS_II port
* ``ZEP-935`` - Kernel logger support (validation)
* ``ZEP-954`` - Update device PM API to allow setting additional power states
* ``ZEP-957`` - Create example sample for new unified kernel API usage
* ``ZEP-959`` - sync checkpatch.pl with upstream Linux
* ``ZEP-966`` - need support for EM7D SOC on em_starterkit
* ``ZEP-975`` - DNS client port to new IP stack
* ``ZEP-981`` - Add doxygen documentation to both include/kernel.h and include/legacy.h
* ``ZEP-989`` - Cache next ready thread instead of finding out the long way
* ``ZEP-993`` - Quark SE (x86): Refactor save/restore execution context feature
* ``ZEP-994`` - Quark SE (ARC): Add PMA sample
* ``ZEP-996`` - Refactor save/restore feature from i2c_qmsi driver
* ``ZEP-997`` - Refactor save/restore feature from spi_qmsi driver
* ``ZEP-998`` - Refactor save/restore feature from uart_qmsi driver
* ``ZEP-999`` - Refactor save/restore feature from gpio_qmsi driver
* ``ZEP-1000`` - Refactor save/restore feature from rtc_qmsi driver
* ``ZEP-1001`` - Refactor save/restore feature from wdt_qmsi driver
* ``ZEP-1002`` - Refactor save/restore feature from counter_qmsi_aonpt driver
* ``ZEP-1004`` - Extend counter_qmsi_aon driver to support save/restore peripheral context
* ``ZEP-1005`` - Extend dma_qmsi driver to support save/restore peripheral context
* ``ZEP-1006`` - Extend soc_flash_qmsi driver to support save/restore peripheral context
* ``ZEP-1008`` - Extend pwm_qmsi driver to support save/restore peripheral context
* ``ZEP-1023`` - workq in Kernel primer for unified kernel
* ``ZEP-1030`` - Enable QMSI shim drivers of SoC peripherals on the sensor subsystem
* ``ZEP-1043`` - Update QMSI to 1.2
* ``ZEP-1045`` - Add/Enhance shim layer to wrap SOC specific PM implementations
* ``ZEP-1046`` - Implement RAM sharing between bootloader and Zephyr
* ``ZEP-1047`` - Adapt to new PM related boot flow changes in QMSI boot loader
* ``ZEP-1106`` - Fix all test failures from TCF
* ``ZEP-1107`` - Update QMSI to 1.3
* ``ZEP-1109`` - Texas Instruments CC3200 LaunchXL Support
* ``ZEP-1119`` - move top level usb/ to sys/usb
* ``ZEP-1120`` - move top level fs/ to sys/fs
* ``ZEP-1121`` - Add config support for enabling SoCWatch in Zephyr
* ``ZEP-1140`` - Add a unified kernel version of power_mgr sample app for testing PM code with the new kernel
* ``ZEP-1188`` - Add an API to retrieve pending interrupts for wake events
* ``ZEP-1191`` - Create wiki page for Hexiwear board
* ``ZEP-1235`` - Basic shell support for file system browsing
* ``ZEP-1245`` - ARM LTD V2M Beetle Support
* ``ZEP-1313`` - porting and user guides must include a security section
* ``ZEP-1386`` - Revise power management document to reflect latest changes
* ``ZEP-199`` - Zephyr driver model is undocumented
* ``ZEP-436`` - Test case tests/kernel/test_mem_safe fails on ARM hardware
* ``ZEP-471`` - Ethernet packet with multicast address is not working
* ``ZEP-472`` - Ethernet packets are getting missed if sent in quick succession.
* ``ZEP-517`` - build on windows failed "zephyr/Makefile:869: \*\*\* multiple target patterns"
* ``ZEP-528`` - ARC has 2 almost identical copies of the linker script
* ``ZEP-577`` - Sample application source does not compile on Windows
* ``ZEP-601`` - enable CONFIG_DEBUG_INFO
* ``ZEP-602`` - unhandled CPU exceptions/interrupts report wrong faulting vector if triggered by CPU
* ``ZEP-615`` - Un-supported flash erase size listed in SPI flash w25qxxdv driver header file
* ``ZEP-639`` - device_pm_ops structure should be defined as static
* ``ZEP-686`` - docs: Info in "Application Development Primer" and "Developing an Application and the Build System" is largely duplicated
* ``ZEP-698`` - samples/task_profiler issues
* ``ZEP-707`` - mem_safe test stomps on top of .data and bottom of .noinit
* ``ZEP-724`` - build on windows failed: 'make: execvp: uname: File or path name too long'
* ``ZEP-733`` - Minimal libc shouldn't be providing stddef.h
* ``ZEP-762`` - unexpected "abspath" and "notdir" from mingw make system
* ``ZEP-777`` - samples/driver/i2c_stts751: kconfig build warning from "select DMA_QMSI"
* ``ZEP-778`` - Samples/drivers/i2c_lsm9ds0: kconfig build warning from "select DMA_QMSI"
* ``ZEP-779`` - Using current MinGW gcc version 5.3.0 breaks Zephyr build on Windows
* ``ZEP-845`` - UART for ARC on Arduino 101 behaves unexpectedly
* ``ZEP-905`` - hello_world compilation for arduino_due target fails when using CROSS_COMPILE
* ``ZEP-940`` - Fail to get ATT response
* ``ZEP-950`` - USB: Device is not listed by USB20CV test suite
* ``ZEP-961`` - samples: other cases cannot execute after run aon_counter case
* ``ZEP-967`` - Sanity doesn't build 'samples/usb/dfu' with assertions (-R)
* ``ZEP-970`` - Sanity doesn't build 'tests/kernel/test_build' with assertions (-R)
* ``ZEP-982`` - Minimal libc has EWOULDBLOCK != EAGAIN
* ``ZEP-1014`` - [TCF] tests/bluetooth/init build fail
* ``ZEP-1025`` - Unified kernel build sometimes breaks on a missing .d dependency file.
* ``ZEP-1027`` - Documentation for GCC ARM is not accurate
* ``ZEP-1031`` - qmsi: dma: driver test fails with LLVM
* ``ZEP-1048`` - grove_lcd sample: sample does not work if you disable serial
* ``ZEP-1051`` - mpool allocation failed after defrag twice...
* ``ZEP-1062`` - Unified kernel isn't compatible with CONFIG_NEWLIB_LIBC
* ``ZEP-1074`` - ATT retrying misbehaves when ATT insufficient Authentication is received
* ``ZEP-1076`` - "samples/philosophers/unified" build failed with dynamic stack
* ``ZEP-1077`` - "samples/philosophers/unified" build warnings with NUM_PHIL<6
* ``ZEP-1079`` - Licensing not clear for imported components
* ``ZEP-1097`` - ENC28J60 driver fails on concurrent tx and rx
* ``ZEP-1098`` - ENC28J60 fails to receive big data frames
* ``ZEP-1100`` - Current master still identifies itself as 1.5.0
* ``ZEP-1101`` - SYS_KERNEL_VER_PATCHLEVEL() and friends artificially limit version numbers to 4 bits
* ``ZEP-1124`` - tests/kernel/test_sprintf/microkernel/testcase.ini#test failure on frdm_k64f
* ``ZEP-1130`` - region 'RAM' overflowed occurs while building test_hmac_prng
* ``ZEP-1138`` - Received packets not being passed to upper layer from IP stack when using ENC28J60 driver
* ``ZEP-1139`` - Fix build error when power management is built with unified kernel
* ``ZEP-1141`` - TinyCrypt SHA256 test fails with system crash using unified kernel type
* ``ZEP-1144`` - TinyCrypt AES128 fixed-key with variable-text test fails using unified kernel type
* ``ZEP-1145`` - system hang after TinyCrypt HMAC test
* ``ZEP-1146`` - zephyrproject.org home page needs technical scrub for 1.6 release
* ``ZEP-1149`` - port ztest framework to unified kernel
* ``ZEP-1154`` - tests/samples failing with unified kernel
* ``ZEP-1155`` - Fix filesystem API namespace
* ``ZEP-1163`` - LIB_INCLUDE_DIR is clobbered in Makefile second pass
* ``ZEP-1164`` - ztest skip waiting the test case to finish its execution
* ``ZEP-1179`` - Build issues when compiling with LLVM from ISSM (icx)
* ``ZEP-1182`` - kernel.h doxygen show unexpected "asm" blocks
* ``ZEP-1183`` - btshell return "panic: errcode -1" when init bt
* ``ZEP-1195`` - Wrong ATT error code passed to the application
* ``ZEP-1199`` - [L2CAP] No credits to receive packet
* ``ZEP-1219`` - [L2CAP] Data sent exceeds maximum PDU size
* ``ZEP-1221`` - Connection Timeout during pairing
* ``ZEP-1226`` - cortex M7 port assembler error
* ``ZEP-1227`` - ztest native testing not working in unified kernel
* ``ZEP-1232`` - Daily build is failing asserts
* ``ZEP-1234`` - Removal of fiber* APIs due to unified migration breaks USB mass storage patchset
* ``ZEP-1247`` - Test tests/legacy/benchmark/latency_measure is broken for daily sanitycheck
* ``ZEP-1252`` - Test test_chan_blen_transfer does not build for quark_d2000_crb
* ``ZEP-1277`` - Flash driver (w25qxxdv) erase function is not checking for offset alignment
* ``ZEP-1278`` - Incorrect boundary check in flash driver (w25qxxdv) for erase offset
* ``ZEP-1287`` - ARC SPI 1 Port is not working
* ``ZEP-1289`` - Race condition with k_sem_take
* ``ZEP-1291`` - libzephyr.a dependency on phony "gcc" target
* ``ZEP-1293`` - ENC28J60 driver doesn't work on Arduino 101
* ``ZEP-1295`` - incorrect doxygen comment in kernel.h:k_work_pending()
* ``ZEP-1297`` - test/legacy/kernel/test_mail: failure on ARC platforms
* ``ZEP-1299`` - System can't resume completely with DMA suspend and resume operation
* ``ZEP-1302`` - ENC28J60 fails with rx/tx of long frames
* ``ZEP-1303`` - Configuration talks about >32 thread prios, but the kernel does not support it
* ``ZEP-1309`` - ARM uses the end of memory for its init stack
* ``ZEP-1310`` - ARC uses the end of memory for its init stack
* ``ZEP-1312`` - ARC: software crashed at k_mbox_get() with async sending a message
* ``ZEP-1319`` - Zephyr is unable to compile when CONFIG_RUNTIME_NMI is enabled on ARM platforms
* ``ZEP-1341`` - power_states test app passes wrong value as power state to post_ops functions
* ``ZEP-1343`` - tests/drivers/pci_enum: failing on QEMU ARM and X86 due to missing commit
* ``ZEP-1345`` - cpu context save and restore could corrupt stack
* ``ZEP-1349`` - ARC sleep needs to pass interrupt priority threshold when interrupts are enabled
* ``ZEP-1353`` - FDRM k64f Console output broken on normal flash mode

Known Issues
************

* ``ZEP-1405`` - function l2cap_br_conn_req in /subsys/bluetooth/host/l2cap_br.c
  references uninitialized pointer

---

### Doc Releases Release Notes 1.7 (`doc/releases/release-notes-1.7.rst`)

.. _zephyr_1.7:

Zephyr Kernel 1.7.0
####################

We are pleased to announce the release of Zephyr kernel version 1.7.0. This
release continues refinement of the unified kernel introduced with the 1.6.0
kernel release, simplifying the overall Zephyr architecture and programming
interfaces. This is the last release that will support the deprecated legacy
nano- and micro-kernel APIs found in the 1.5.0 release and earlier.

This release introduces a new native IP stack, replacing the legacy uIP stack,
maintaining the legacy functionality, adding additional capabilities, and allowing
future improvements.

We have introduced support for the RISC V and Xtensa architectures and now
support 6 architectures in total.

Device tree support for ARM based boards added. The initial
device tree support includes flash/sram base address and UART devices.  Board
support includes NXP Kinetis based SoCs, ARM Beetle, TI CC3200 LaunchXL, and
STML32L476 based SoCs. Plan is to add support for other architectures and
expand device support in upcoming Zephyr releases.

The following sections provide a detailed list of changes, by component,  since
kernel version 1.6.0.

Kernel
******

* Introduction of k_poll API: k_poll() is similar to the POSIX poll() API in
  spirit in that it allows a single thread to monitor multiple events without
  actively polling them, but rather pending for one or more to become ready.
* Optimized memory use of some thread fields
* Remove usage of micro/nano kernel terminology from kernel code and introduced
  a legacy option to enable/disable legacy APIs. (using legacy.h)


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

* ARM: Added support for device tree
* ARM: Fixed exception priority access on Cortex M0(+)
* ARM: Refactored to use CMSIS

Boards
******

* Added ARM MPS2_AN385 board
* Added Atmel SAM E70 Xplained board
* Added Nordic pca10056 PDK board
* Added NXP FRDM-KW41Z board
* Added ST Nucleo-F334R8, Nucleo-L476G, STM3210C-EVAL, and STM32373C-EVAL boards
* Added Panther and tinyTILE boards, based on Quark SE C1000 and Intel Curie
* Added support for Zedboard Pulpino, a RISC V based board
* Added Qemu target for RISC V and a simulator target for the Xtensa architecture.

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

* Added Atmel SAM pmc, gpio, uart, and ethernet drivers
* Added STM32F3x clock, flash, gpio, pinmux drivers
* Added stm32cube pwm and clock drivers
* Added cc3200 gpio driver
* Added mcr20a ieee802154 driver
* Added mcux pinmux, gpio, uart, and spi drivers
* Added Beetle clock control and watchdog drivers

Networking
**********

This version removes the legacy uIP stack and introduces a new native IP stack.
Because of this there is lot of changes in the code base. The native IP stack
will support the same functionality as the legacy IP stack found in 1.6, and
add new networking features which are described below.

* IP stack code is moved to subsys/net/ip directory.
* IP stack supports both IPv6 and IPv4, and they can be enabled simultaneously.
* Multiple network technologies like Bluetooth IPSP and IEEE 802.15.4 can be
  enabled simultaneously. No routing functionality is provided by IP stack
  between enabled network technologies, applications need to decide where to
  send the network packets.
* Network technologies are abstracted in IP layer 2 (L2) and presented to
  rest of the system as network interfaces. There exists L2 driver for
  Ethernet, Bluetooth and IEEE 802.15.4.
* Created Bluetooth Internet Protocol Support Profile (IPSP) support. It will
  provide IPv6 connection over Bluetooth connection oriented channel (L2CAP).
* Created DHCPv4 support.
* Created CoAP implementation called ZoAP which replaces uIP based one.
* Updated 6Lo implementation to support both Bluetooth and IEEE 802.15.4
* Created application API (net_context) for creating connections and
  transferring data to external systems.
* Added sample application (wpanusb) for exporting IEEE 802.15.4 radio over
  USB to external operating systems like Linux.
* Added DNS client library.
* Updated TCP implementation.
* Created MQTT publisher support.
* Created network test generator (zperf).
* Created telnet console support.
* Created IRC client sample application.
* Created HTTP server and client sample applications.
* Created net-shell module for interacting with network sub-system.
* Created ieee15_4 shell module for dedicated interaction with
  IEEE 802.15.4 Soft MAC.
* Created network management API for generic network settings request as well
  as a network event notification system (sender/listener).
* Redesigned buffer & pool allocation API.

Bluetooth
*********

* Redesigned buffer pools for smaller memory consumption
* Redesigned thread model for smaller memory consumption
* Utilized new k_poll API to consolidate all TX threads into a single one
* Added more SDP functionality
* Improved RFCOMM support
* Reduced latencies in the Controller
* Added SPI HCI driver

Libraries
*********

* Updated mbedTLS library
* Updated TinyCrypt to version 0.2.5

HALs
****

* Updated FAT FS to rev 0.12b
* Updated Nordic MDK header files
* Updated QMSI to 1.4 RC3
* Imported Atmel SDK (ASF) for SAM E70 and SAM3X
* Imported Nordic SDK HAL and 802.15.4 radio driver
* Renamed NXP KSDK to MCUX
* Imported NXP MCUX for KW41Z
* Imported Segger J-Link RTT library
* Imported stm32cube for F4 and L4

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

* General improvements and additions to kernel component docs
* Moved supported board information back to the website site.
* New website documentation theme to go with the new zephyrproject.org site.
* New local-content generation theme (read-the-docs)
* General spelling checks and organizational improvements.
* Site-wide glossary added.
* Porting guides added.
* Sample README files converted to documents included in the website.
* Improved consistency of :ref:`boards` and :zephyr:code-sample-category:`samples`.


JIRA Related Items
******************


.. comment  List derived from https://jira.zephyrproject.org/issues/?filter=10345

* ``ZEP-19`` - IPSP node support
* ``ZEP-145`` - no 'make flash' for Arduino Due
* ``ZEP-328`` - HW Encryption Abstraction
* ``ZEP-359`` - Move QEMU handling to a central location
* ``ZEP-365`` - Zephyr's MQTT library
* ``ZEP-437`` - TCP/IP API
* ``ZEP-513`` - extern declarations of  small microkernel objects in designated sections require __attribute__((section)) in gp-enabled systems
* ``ZEP-591`` - MQTT Port to New IP Stack
* ``ZEP-604`` - In coap_server sample app, CoAP resource separate is not able to send separate response
* ``ZEP-613`` - TCP/UDP client and server mode functionality
* ``ZEP-641`` - Bluetooth Eddystone sample does not correctly implement Eddystone beacon
* ``ZEP-648`` - New CoAP Implementation
* ``ZEP-664`` - Extend spi_qmsi_ss driver to support save/restore peripheral context
* ``ZEP-665`` - Extend gpio_qmsi_ss driver to support save/restore peripheral context
* ``ZEP-666`` - Extend i2c_qmsi_ss driver to support save/restore peripheral context
* ``ZEP-667`` - Extend adc_qmsi_ss driver to support save/restore peripheral context
* ``ZEP-686`` - docs: Info in Application Development Primer and Developing an Application and the Build System is largely duplicated
* ``ZEP-706`` - cannot set debug breakpoints on ARC side of Arduino 101
* ``ZEP-719`` - Add ksdk uart shim driver
* ``ZEP-734`` - Port AES-CMAC-PRF-128 [RFC 4615] encryption library for Thread support
* ``ZEP-742`` - nRF5x Series: System Clock driver using NRF_RTC
* ``ZEP-744`` - USB WebUSB
* ``ZEP-748`` - Enable mbedtls_sslclient sample to run on quark se board
* ``ZEP-759`` - Add preliminary support for Atmel SAM E70 (Cortex-M7) chipset family and SAM E70 Xplained board
* ``ZEP-788`` - UDP
* ``ZEP-789`` - IPv4
* ``ZEP-790`` - ICMPv4
* ``ZEP-791`` - TCP
* ``ZEP-792`` - ARP
* ``ZEP-793`` - DNS Resolver
* ``ZEP-794`` - Requirements for Internet Hosts - Communication Layers
* ``ZEP-796`` - DHCPv4
* ``ZEP-798`` - IPv6
* ``ZEP-799`` - HTTP over TLS
* ``ZEP-801`` - DNS Extensions to support IPv6
* ``ZEP-804`` - IPv6 Addressing Architecture
* ``ZEP-805`` - Internet Control Message Protocol (ICMP) v6
* ``ZEP-807`` - Neighbor Discovery for IPv6
* ``ZEP-808`` - IPv6 Stateless Autoconfiguration (SLAAC)
* ``ZEP-809`` - IPv6 over 802.15.4
* ``ZEP-811`` - The Trickle Algorithm
* ``ZEP-812`` - Compression Format for IPv6 over 802.15.4
* ``ZEP-813`` - RPL:  IPv6 Routing Protocol
* ``ZEP-814`` - Routing Metrics used in Path Selection
* ``ZEP-815`` - Objective Function Zero for RPL
* ``ZEP-816`` - Minimum Rank with Hysteresis (RPL)
* ``ZEP-818`` - CoAP working over the new IP stack
* ``ZEP-820`` - HTTP v1.1 Server Sample
* ``ZEP-823`` - New IP Stack - Documentation
* ``ZEP-824`` - Network Device Driver Porting Guide
* ``ZEP-825`` - Porting guide for old-to-new IP Stack APIs
* ``ZEP-827`` - HTTP Client sample application
* ``ZEP-830`` - ICMPv6 Parameter Problem Support
* ``ZEP-832`` - Hop-by-Hop option handling
* ``ZEP-847`` - Network protocols must be moved to subsys/net/lib
* ``ZEP-854`` - CoAP with DTLS sample
* ``ZEP-859`` - Migrate ENC28J60 driver to YAIP IP stack
* ``ZEP-865`` - convert filesystem sample to a runnable test
* ``ZEP-872`` - Unable to flash Zephyr on Arduino 101 using Ubuntu and following wiki instructions
* ``ZEP-873`` - DMA API Update
* ``ZEP-875`` - 6LoWPAN - Context based compression support
* ``ZEP-876`` - 6LoWPAN - Offset based Reassembly of 802.15.4 packets
* ``ZEP-879`` - 6LoWPAN - Stateless Address Autoconfiguration
* ``ZEP-882`` - 6LoWPAN - IPv6 Next Header Compression
* ``ZEP-883`` - IP Stack L2 Interface Management API
* ``ZEP-884`` - 802.15.4 - CSMA-CA Radio protocol support
* ``ZEP-885`` - 802.15.4 - Beacon frame support
* ``ZEP-886`` - 802.15.4 - MAC command frame support
* ``ZEP-887`` - 802.15.4 - Management service: RFD level support
* ``ZEP-911`` - Refine thread priorities & locking
* ``ZEP-919`` - Purge obsolete microkernel & nanokernel code
* ``ZEP-929`` - Verify the preempt-thread-only and coop-thread-only configurations
* ``ZEP-931`` - Finalize kernel file naming & locations
* ``ZEP-936`` - Adapt drivers to unified kernel
* ``ZEP-937`` - Adapt networking to unified kernel
* ``ZEP-946`` - Galileo Gen1 board support dropped?
* ``ZEP-951`` - CONFIG_GDB_INFO build not working on ARM
* ``ZEP-953`` - CONFIG_HPET_TIMER_DEBUG build warning
* ``ZEP-958`` - simplify pinmux interface and merge the pinmux_dev into one single API
* ``ZEP-964`` - Add a (hidden?) Kconfig option for disabling legacy API
* ``ZEP-975`` - DNS client port to new IP stack
* ``ZEP-1012`` - NATS client port to new IP stack
* ``ZEP-1038`` - Hard real-time interrupt support
* ``ZEP-1060`` - Contributor guide for documentation missing
* ``ZEP-1103`` - Propose and implement synchronization flow for multicore power management
* ``ZEP-1165`` - support enums as IRQ line argument in IRQ_CONNECT()
* ``ZEP-1172`` - Update logger Api to allow using a hook for SYS_LOG_BACKEND_FN function
* ``ZEP-1177`` - Reduce Zephyr's Dependency on Host Tools
* ``ZEP-1179`` - Build issues when compiling with LLVM from ISSM (icx)
* ``ZEP-1189`` - SoC I2C peripheral of the Quark SE cannot be used from the ARC core
* ``ZEP-1190`` - SoC SPI peripheral of the Quark SE cannot be used from the ARC core
* ``ZEP-1222`` - Add save/restore support to ARC core
* ``ZEP-1223`` - Add save/restore support to arcv2_irq_unit
* ``ZEP-1224`` - Add save/restore support to arcv2_timer_0/sys_clock
* ``ZEP-1230`` - Optimize interrupt return code on ARC.
* ``ZEP-1233`` - mbedDTLS DTLS client stability does not work on top of the tree for the net branch
* ``ZEP-1251`` - Abstract driver re-entrancy code
* ``ZEP-1267`` - Echo server crashes upon reception of router advertisement
* ``ZEP-1276`` - Move disk_access_* out of file system subsystem
* ``ZEP-1283`` - compile option to skip gpio toggle in samples/power/power_mgr
* ``ZEP-1284`` - Remove arch/arm/core/gdb_stub.S and all the abstractions it introduced
* ``ZEP-1288`` - Define _arc_v2_irq_unit device
* ``ZEP-1292`` - Update external mbed TLS library to latest version (2.4.0)
* ``ZEP-1300`` - ARM LTD V2M Beetle Support [Phase 2]
* ``ZEP-1304`` - Define device tree bindings for NXP Kinetis K64F
* ``ZEP-1305`` - Add DTS/DTB targets to build infrastructure
* ``ZEP-1306`` - Create DTS/DTB parser
* ``ZEP-1307`` - Plumbing the DTS configuration
* ``ZEP-1308`` - zephyr thread function k_sleep doesn't work with nrf51822
* ``ZEP-1320`` - Update Architecture Porting Guide
* ``ZEP-1321`` - Glossary of Terms needs updating
* ``ZEP-1323`` - Eliminate references to fiber, task, and nanokernel under ./include
* ``ZEP-1324`` - Get rid of references to CONFIG_NANOKERNEL
* ``ZEP-1325`` - Eliminate TICKLESS_IDLE_SUPPORTED option
* ``ZEP-1327`` - Eliminate obsolete kernel directories
* ``ZEP-1329`` - Rename kernel APIs that have nano\_ prefixes
* ``ZEP-1334`` - Add make debug support for QEMU-based boards
* ``ZEP-1337`` - Relocate event logger files
* ``ZEP-1338`` - Update external fs with new FATFS revision 0.12b
* ``ZEP-1342`` - legacy/kernel/test_early_sleep/ fails on EMSK
* ``ZEP-1347`` - sys_bitfield_*() take unsigned long* vs memaddr_t
* ``ZEP-1351`` - FDRM k64f SPI does not work
* ``ZEP-1355`` - Connection Failed to be Established
* ``ZEP-1357`` - iot/dns: Client is broken
* ``ZEP-1358`` - BMI160 accelerometer gives 0 on all axes
* ``ZEP-1361`` - IP stack is broken
* ``ZEP-1363`` - Missing wiki board support page for arm/arduino_101_ble
* ``ZEP-1365`` - Missing wiki board support page for arm/c3200_launchxl
* ``ZEP-1370`` - There's a wiki page for arduino_due but no zephyr/boards support folder
* ``ZEP-1374`` - Add ksdk spi shim driver
* ``ZEP-1387`` - Add a driver for Atmel ataes132a  HW Crypto module
* ``ZEP-1389`` - Add support for KW41 SoC
* ``ZEP-1390`` - Add support for FRDM-KW41Z
* ``ZEP-1393`` - Add ksdk pinmux driver
* ``ZEP-1394`` - Add ksdk gpio driver
* ``ZEP-1395`` - Add data ready trigger to FXOS8700 driver
* ``ZEP-1401`` - Enhance ready queue cache and interrupt exit code to reduce interrupt latency.
* ``ZEP-1403`` - remove CONFIG_OMIT_FRAME_POINTER from ARC boards
* ``ZEP-1405`` - function l2cap_br_conn_req in /subsys/bluetooth/host/l2cap_br.c references uninitialized pointer
* ``ZEP-1406`` - Update sensor driver paths in wiki
* ``ZEP-1408`` - quark_se_c1000_ss enter_arc_state() might need cc and memory clobber
* ``ZEP-1411`` - Deprecate device_sync_call API and use semaphore directly
* ``ZEP-1413`` - [ARC] test/legacy/kernel/test_tickless/microkernel fails to build
* ``ZEP-1415`` - drivers/timer/* code comments still refer to micro/nano kernel
* ``ZEP-1418`` - Add support for Nordic nRF52840 and its DK
* ``ZEP-1419`` - SYS_LOG macros cause potentially bad behavior due to printk/printf selection
* ``ZEP-1420`` - Make the time spent with interrupts disabled deterministic
* ``ZEP-1421`` - BMI160 gyroscope driver stops reporting after 1-5 minutes
* ``ZEP-1422`` - Arduino_101 doesn't response ipv6 ping request after enable echo_client ipv6
* ``ZEP-1427`` - wpanusb dongle / 15.4 communication instability
* ``ZEP-1429`` - NXP MCR20A Driver
* ``ZEP-1432`` - ksdk pinmux driver should expose the public pinmux API
* ``ZEP-1434`` - menuconfig screen shots show nanokernel options
* ``ZEP-1437`` - AIO: Fail to retrieve pending interrupt in ISR
* ``ZEP-1440`` - Kconfig choice for MINIMAL_LIBC vs NEWLIB_LIBC is not selectable
* ``ZEP-1442`` - Samples/net/dhcpv4_client: Build fail as No rule to make target prj\_.conf
* ``ZEP-1443`` - Samples/net/zperf: Build fail as net_private.h can not be found
* ``ZEP-1448`` - Samples/net/mbedtls_sslclient:Build fail as net/ip_buf.h can not be found
* ``ZEP-1449`` - samples: logger_hook
* ``ZEP-1456`` - Asserts on nrf51 running Bluetooth hci_uart sample
* ``ZEP-1457`` - Add SPDX Tags to Zephyr license boilerplate
* ``ZEP-1460`` - Sanity check reports some qemu step failures as 'build_error'
* ``ZEP-1461`` - Add zephyr support to openocd upstream
* ``ZEP-1467`` - Cleanup misc/ and move features to subsystems in subsys/
* ``ZEP-1473`` - ARP cache confused by use of gateway.
* ``ZEP-1474`` - BLE Connection Parameter Request/Response Processing
* ``ZEP-1475`` - k_free documentation should specify that NULL is valid
* ``ZEP-1476`` - echo_client display port unreachable
* ``ZEP-1480`` - Update supported distros in getting started guide
* ``ZEP-1481`` - Bluetooth fails to init
* ``ZEP-1483`` - H:4 HCI driver (h4.c) should rely on UART flow control to avoid dropping packets
* ``ZEP-1487`` - I2C_SS: I2C doesn't set device busy before starting data transfer
* ``ZEP-1488`` - SPI_SS: SPI doesn't set device busy before starting data transfer
* ``ZEP-1489`` - [GATT] Nested Long Characteristic Value Reliable Writes
* ``ZEP-1490`` - [PTS] TC_CONN_CPUP_BV_04_C test case is failing
* ``ZEP-1492`` - Add Atmel SAM family GMAC Ethernet driver
* ``ZEP-1493`` - Zephyr project documentation copyright
* ``ZEP-1495`` - Networking API details documentation is missing
* ``ZEP-1496`` - gpio_pin_enable_callback error
* ``ZEP-1497`` - Cortex-M0 port exception and interrupt priority setting and getting is broken
* ``ZEP-1507`` - fxos8700 broken gpio_callback implementation
* ``ZEP-1512`` - doc-theme has its own conf.py
* ``ZEP-1514`` - samples/bluetooth/ipsp build fail: net/ip_buf.h No such file or directory
* ``ZEP-1525`` - driver: gpio: GPIO driver still uses  nano_timer
* ``ZEP-1532`` - Wrong accelerometer readings
* ``ZEP-1536`` - Convert documentation of PWM samples to RST
* ``ZEP-1537`` - Convert documentation of power management samples to RST
* ``ZEP-1538`` - Convert documentation of zoap samples to RST
* ``ZEP-1539`` - Create documentation in RST for all networking samples
* ``ZEP-1540`` - Convert Bluetooth samples to RST
* ``ZEP-1542`` - Multi Sessions HTTP Server sample
* ``ZEP-1543`` - HTTP Server sample with basic authentication
* ``ZEP-1544`` - Arduino_101 doesn't respond to ipv6 ping request after enable echo_server ipv6
* ``ZEP-1545`` - AON Counter : ISR triggered twice on ARC
* ``ZEP-1546`` - Bug in Zephyr OS high-precision timings sub-system (function sys_cycle_get_32())
* ``ZEP-1547`` - Add support for H7 crypto function and CT2 SMP auth flag
* ``ZEP-1548`` - Python script invocation is inconsistent
* ``ZEP-1549`` - k_cpu_sleep_mode unaligned byte address
* ``ZEP-1554`` - Xtensa integration
* ``ZEP-1557`` - RISC V Port
* ``ZEP-1558`` - Support of user private data pointer in Timer expiry function
* ``ZEP-1559`` - Implement _tsc_read  for ARC architecture
* ``ZEP-1562`` - echo_server/echo_client examples hang randomly after some time of operation
* ``ZEP-1563`` - move board documentation for NRF51/NRF52 back to git tree
* ``ZEP-1564`` - 6lo uncompress_IPHC_header overwrites IPHC fields
* ``ZEP-1566`` - WDT: Interrupt is triggered multiple times
* ``ZEP-1569`` - net/tcp: TCP in server mode doesn't support multiple concurrent connections
* ``ZEP-1570`` - net/tcp: TCP in server mode is unable to close client connections
* ``ZEP-1571`` - Update "Changes from Version 1 Kernel" to include a "How-To Port Apps" section
* ``ZEP-1572`` - Update QMSI to 1.4
* ``ZEP-1573`` - net/tcp: User provided data in net_context_recv is not passed to callback
* ``ZEP-1574`` - Samples/net/dhcpv4_client: Build fail as undefined reference to net_mgmt_add_event_callback
* ``ZEP-1579`` - external links to zephyr technical docs are broken
* ``ZEP-1581`` - [nRF52832] Blinky hangs after some minutes
* ``ZEP-1583`` - ARC: warning: unmet direct dependencies (SOC_RISCV32_PULPINO || SOC_RISCV32_QEMU)
* ``ZEP-1585`` - legacy.h should be disabled in kernel.h with CONFIG_LEGACY_KERNEL=n
* ``ZEP-1587`` - sensor.h still uses legacy APIs and structs
* ``ZEP-1588`` - I2C doesn't work on Arduino 101
* ``ZEP-1589`` - Define yaml descriptions for UART devices
* ``ZEP-1590`` - echo_server run on FRDM-K64F displays BUS FAULT
* ``ZEP-1591`` - wiki: add Networking section and point https://wiki.zephyrproject.org/view/Network_Interfaces
* ``ZEP-1592`` - echo-server does not build with newlib
* ``ZEP-1593`` - /scripts/sysgen should create output using SPDX licensing tag
* ``ZEP-1598`` - samples/philosophers build failed unexpectedly @quark_d2000  section noinit will not fit in region RAM
* ``ZEP-1601`` - Console over Telnet
* ``ZEP-1602`` - IPv6 ping fails using sample application echo_server on FRDM-K64F
* ``ZEP-1611`` - Hardfault after a few echo requests (IPv6 over BLE)
* ``ZEP-1614`` - Use correct i2c device driver name
* ``ZEP-1616`` - Mix up between "network address" and "socket address" concepts in declaration of net_addr_pton()
* ``ZEP-1617`` - mbedTLS server/client failing to run on qemu
* ``ZEP-1619`` - Default value of NET_NBUF_RX_COUNT is too low, causes lock up on startup
* ``ZEP-1623`` - (Parts) of Networking docs still refer to 1.5 world model (with fibers and tasks) and otherwise not up to date
* ``ZEP-1626`` - SPI: spi cannot work in CPHA mode @ ARC
* ``ZEP-1632`` - TCP ACK packet should not be forwarded to application recv cb.
* ``ZEP-1635`` - MCR20A driver unstable
* ``ZEP-1638`` - No (public) analog of inet_ntop()
* ``ZEP-1644`` - Incoming connection handling for UDP is not exactly correct
* ``ZEP-1645`` - API to wait on multiple kernel objects
* ``ZEP-1648`` - Update links to wiki pages for board info back into the web docs
* ``ZEP-1650`` - make clean (or pristine) is not removing all artifacts of document generation
* ``ZEP-1651`` - i2c_dw malfunctioning due to various changes.
* ``ZEP-1653`` - build issue when compiling with LLVM in ISSM (altmacro)
* ``ZEP-1654`` - Build issues when compiling with LLVM(unknown attribute '_alloc_align_)
* ``ZEP-1655`` - Build issues when compiling with LLVM(memory pool)
* ``ZEP-1656`` - IPv6 over BLE no longer works after commit 2e9fd88
* ``ZEP-1657`` - Zoap doxygen documentation needs to be perfected
* ``ZEP-1658`` - IPv6 TCP low on buffers, stops responding after about 5 requests
* ``ZEP-1662`` - zoap_packet_get_payload() should return the payload length
* ``ZEP-1663`` - sanitycheck overrides user's environment for CCACHE
* ``ZEP-1665`` - pinmux: missing default pinmux driver config for quark_se_ss
* ``ZEP-1669`` - API documentation does not follow in-code documentation style
* ``ZEP-1672`` - flash: Flash device binding failed on Arduino_101_sss
* ``ZEP-1674`` - frdm_k64f: With Ethernet driver enabled, application can't start up without connected network cable
* ``ZEP-1677`` - SDK: BLE cannot be initialized/advertised with CONFIG_ARC_INIT=y on Arduino 101
* ``ZEP-1681`` - Save/restore debug registers during soc_sleep/soc_deep_sleep in c1000
* ``ZEP-1692`` - [PTS] GATT/SR/GPA/BV-11-C fails
* ``ZEP-1701`` - Provide an HTTP API
* ``ZEP-1704`` - BMI160 samples fails to run
* ``ZEP-1706`` - Barebone Panther board support
* ``ZEP-1707`` - [PTS] 7 SM/MAS cases fail
* ``ZEP-1708`` - [PTS] SM/MAS/PKE/BI-01-C fails
* ``ZEP-1709`` - [PTS] SM/MAS/PKE/BI-02-C fails
* ``ZEP-1710`` - Add TinyTILE board support
* ``ZEP-1713`` - xtensa: correct all checkpatch issues
* ``ZEP-1716`` - HTTP server sample that does not support up to 10 concurrent sessions.
* ``ZEP-1717`` - GPIO: GPIO LEVEL interrupt cannot work well in deep sleep mode
* ``ZEP-1723`` - Warnings in Network code/ MACROS, when built with ISSM's  llvm/icx compiler
* ``ZEP-1732`` - sample of zoap_server runs error.
* ``ZEP-1733`` - Work on ZEP-686 led to regressions in docs on integration with 3rd-party code
* ``ZEP-1745`` - Bluetooth samples build failure
* ``ZEP-1753`` - sample of dhcpv4_client runs error on Arduino 101
* ``ZEP-1754`` - sample of coaps_server was tested failed on qemu
* ``ZEP-1756`` - net apps: [-Wpointer-sign] build warning raised when built with ISSM's  llvm/icx compiler
* ``ZEP-1758`` - PLL2 is not correctly enabled in STM32F10x connectivity line SoC
* ``ZEP-1763`` - Nordic RTC timer driver not correct with tickless idle
* ``ZEP-1764`` - samples: sample cases use hard code device name, such as "GPIOB" "I2C_0"
* ``ZEP-1768`` - samples: cases miss testcase.ini
* ``ZEP-1774`` - Malformed packet included with IPv6 over 802.15.4
* ``ZEP-1778`` - tests/power: multicore case won't work as expected
* ``ZEP-1786`` - TCP does not work on Arduino 101 board.
* ``ZEP-1787`` - kernel event logger build failed with "CONFIG_LEGACY_KERNEL=n"
* ``ZEP-1789`` - ARC: "samples/logger-hook" crashed __memory_error from sys_ring_buf_get
* ``ZEP-1799`` - timeout_order_test _ASSERT_VALID_PRIO failed
* ``ZEP-1803`` - Error occurs when exercising dma_transfer_stop
* ``ZEP-1806`` - Build warnings with LLVM/icx (gdb_server)
* ``ZEP-1809`` - Build error in net/ip with LLVM/icx
* ``ZEP-1810`` - Build failure in net/lib/zoap with LLVM/icx
* ``ZEP-1811`` - Build error in net/ip/net_mgmt.c with LLVM/icx
* ``ZEP-1839`` - LL_ASSERT in event_common_prepareA
* ``ZEP-1851`` - Build warnings with obj_tracing
* ``ZEP-1852`` - LL_ASSERT in isr_radio_state_close()
* ``ZEP-1855`` - IP stack buffer allocation fails over time
* ``ZEP-1858`` - Zephyr NATS client fails to respond to  server MSG
* ``ZEP-1864`` - llvm icx build warning in tests/drivers/uart/*
* ``ZEP-1872`` - samples/net: the HTTP client sample app must run on QEMU x86
* ``ZEP-1877`` - samples/net: the coaps_server sample app runs failed on Arduino 101
* ``ZEP-1883`` - Enabling Console on ARC Genuino 101
* ``ZEP-1890`` - Bluetooth IPSP sample: Too small user data size

---

### Doc Releases Release Notes 1.8 (`doc/releases/release-notes-1.8.rst`)

.. _zephyr_1.8:

Zephyr Kernel 1.8.0
####################

We are pleased to announce the release of Zephyr kernel version 1.8.0.

Major enhancements with this release include:

* Tickless kernel
* IP Stack improvements
* Bluetooth 5.0 features
* Ecosystem: Tracing, debugging support through third-party tools (openocd,
  Segger Systemview)
* Improved build support on Mac and Windows development environments
* Xtensa GCC support
* Initial implementation of MMU/MPU support
* Expanded device support

The following sections provide detailed lists of changes by component.

Kernel
******

* Use k_cycle_get_32 instead of sys_cycle_get_32 for Kernel
* Added k_panic() and k_oops() APIs for Kernel
* Added k_thread_create() API for Kernel
* Added k_queue API for Kernel
* Add tickless kernel support

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

* arm: Update core to use struct k_thread
* arm: Added ARM MPU support
* dts: Added ARM CMSDK support
* arm: Added Initial support for NXP MPU
* arm: Added Device Tree Support for nRF52832 SoC based boards
* arm: Fixed nRF52840-QIAA SoC support for device tree
* arm: Added Device Tree Support for nRF52840 SoC & boards
* arm: Added Device Tree Support for nRF51822 SoC & boards
* dts: Introduced st/mem.h for FLASH & SRAM sizes
* dts: Put IRQ priority into the interrupt property
* arm: Support for MKL25Z soc
* arm: Added FPU support
* x86: defined MMU data structures
* Support for ARC EM Starter Kit version 2.3 added



Boards
******

* Added qemu_xtensa board definition
* Added a more informative page fault handler x86 board
* xtensa: build similar to other Zephyr arches
* Define MMU data structures for x86 board
* Added support for board disco_l475_iot1
* Added STM32F413 Nucleo board
* Added support for the CC3220SF_LAUNCHXL board
* Support for new ARM board FRDM-KL25Z
* arduino_101 board enable GPIO by default
* boards: convert to using newly introduced integer sized types
* arm: Added support for Nucleo L432KC board
* arm: Added support for STM32L496G Discovery board
* arm: Added support for STM32F469I-DISCO board
* BBC micro:bit: Added driver & API for the 5x5 LED display

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

* UART interrupt-driver API is better defined
* Support for pull-style console API
* nRF5 IEEE 802.15.4 radio driver added
* KW41Z IEEE 802.15.4 radio driver added
* Added MCUX TRNG driver
* Added support for the SiFive Freedom E310 pinmux driver
* drivers/sensor: Convert formatter strings to use PRI defines
* Added lps22hb sensor driver
* Added lsm6dsl sensor driver
* Added heart rate sensor driver
* Added support for max30101 heart rate sensor
* Added support for lis2dh accelerometer

Networking
**********

* HTTPS server support added
* HTTP Basic-Auth support added
* IPv6 fragmentation support added
* Add block wise support to CoAP for well-known response
* Big refactoring of network buffer handling
* Start to collect TCP statistics if enabled in config
* IEEE 802.15.4 security support added
* DNS resolver sample application added
* IPv6 multicast listener (MLDv2) support added
* NATS protocol sample application added
* HTTP client and server connectivity fixes
* Network samples Coverity fixes
* Network samples llvm compiler warning fixes
* MQTT publisher connectivity fixes
* 6lo IPv6 header compression fixes
* CoAP connectivity fixes
* DHCPv4 connectivity fixes
* TCP connectivity fixes
* DNS documentation and connectivity fixes
* IPv6 connectivity fixes
* IPv4 ARP fixes
* IEEE 802.15.4 configuration tweaking fixes
* Remove ORFD (Overly Reduced Function Device) 802.15.4 support
* Network offloading driver fixes
* Fix various memory leaks
* Properly check TCP and UDP checksum before accepting packet
* Start RX and TX network threads in proper order
* Network samples documentation fixes and clarifications
* RPL mesh routing fixes
* Network link (MAC) address fixes

Bluetooth
*********

* Host: Added ATT and SMP packet tracking for flow control enforcement
* Host: GATT database changed to a linked list in preparation for dynamic allocation
* Bluetooth 5.0: The Controller reports itself as 5.0-capable
* Bluetooth 5.0: Introduced Channel Selection Algorithm #2 support
* Bluetooth 5.0: Added Multiple PHY support, both 2Mbit/s and long-range coded
* Bluetooth 5.0: Integrated Scan Request notifications
* Controller: Added Low Duty Cycle Directed Advertising support
* Controller: Added Scan duplicate filtering support
* Controller: Enforced complete role separation in the controller for smaller builds
* Controller: Introduced Advanced Controller configuration with several new Kconfig options
* Controller: Changed the radio interrupts to direct ISRs to reduce interrupt latency
* Added HCI Controller to Host flow control support in both Host and Controller
* BR/EDR: Added HFP (e)SCO audio channel establishment support
* BR/EDR: Added support for a functional SDP server

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

* Support building host tools
* Added separate DTS target
* Added support for MSYS2
* Use -O2 instead of -Os for ARC with SDK 0.9

Libraries
*********

* Added library for software driven I2C
* Created a HTTP library
* Added HTTP server library support
* Added minimal JSON library
* Update TinyCrypt to version 0.2.6
* Added minimal JSON library

HALs
****

* Added Atmel SAM family I2C (TWIHS) driver
* Added Atmel SAM serial (UART) driver
* Added WDT driver for Atmel SAM SoCs
* Added Atmel SAM4S SoC support
* Imported Nordic 802.15.4 radio driver
* Added Initial support for NXP MPU
* Updated QMSI to 1.4 RC4
* Added FPU support
* Added basic support for STM32F413
* Introduced STM32F4x DMA driver
* pinmux: stm32: Added support for Nucleo L432KC
* Added support for STM32L496G Discovery board
* Added dts for STM32F407
* Added support for STM32F4DISCOVERY Board
* Added support for STM32F469XI
* Added support for STM32F469I-DISCO

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

* Board documentation added for new board ports
* Added a board porting guide
* Added security sections to porting and user guides
* Continued migration of wiki.zephyrproject.org material to website and github wiki
* Improved CSS formatting and appearance of generated documents
* Added breadcrumb navigation header with kernel version number
* Updated getting started setup guides for Linux, Windows, and macOS
* Updates and additions to follow new and updated kernel features
* Broken link and spelling check scans
* Removed deprecated kernel documentation (pre 1.6 release) from website (still available in git repo if needed)

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

* Added test to verify same tick timeout expiry order
* Added clock_test for kernel
* Added tickless tests
* Added a simple CC2520 crypto dev test
* Added combined observer & broadcaster app for Bluetooth samples
* Added support to wait both IPv4 and IPv6
* Enabled tickless kernel option in some apps

JIRA Related Items
******************

.. comment  List derived from Jira query: ...

* ``ZEP-248`` - Add a BOARD/SOC porting guide
* ``ZEP-339`` - Tickless Kernel
* ``ZEP-540`` - add APIs for asynchronous transfer callbacks
* ``ZEP-628`` - Validate RPL Routing node support
* ``ZEP-638`` - feature to consider: flag missing functionality at build time when possible
* ``ZEP-720`` - Add MAX30101 heart rate sensor driver
* ``ZEP-828`` - IPv6 - Multicast Join/Leave Support
* ``ZEP-843`` - Unified assert/unrecoverable error infrastructure
* ``ZEP-888`` - 802.15.4 - Security support
* ``ZEP-932`` - Adapt kernel sample & test projects
* ``ZEP-948`` - Revisit the timeslicing algorithm
* ``ZEP-973`` - Remove deprecated API related to device PM functions and DEVICE\_ and SYS\_* macros
* ``ZEP-1028`` - shrink k_block struct size
* ``ZEP-1032`` - IPSP router role support
* ``ZEP-1169`` - Sample mbedDTLS DTLS client stability on ethernet driver
* ``ZEP-1171`` - Event group kernel APIs
* ``ZEP-1280`` - Provide Event Queues Object
* ``ZEP-1313`` - porting and user guides must include a security section
* ``ZEP-1326`` - Clean up _THREAD_xxx APIs
* ``ZEP-1388`` - Add support for KW40 SoC
* ``ZEP-1391`` - Add support for Hexiwear KW40
* ``ZEP-1392`` - Add FXAS21002 gyroscope sensor driver
* ``ZEP-1435`` - Improve Quark SE C1000 ARC Floating Point Performance
* ``ZEP-1438`` - AIO: AIO Comparator is not stable on D2000 and Arduino101
* ``ZEP-1463`` - Add Zephyr Support in segger SystemView
* ``ZEP-1500`` - net/mqtt: Test case for the MQTT high-level API
* ``ZEP-1528`` - Provide template for multi-core applications
* ``ZEP-1529`` - Unable to exit menuconfig
* ``ZEP-1530`` - Hotkeys for the menu at the bottom of menuconfig sometimes doesn't work
* ``ZEP-1568`` - Replace arm cortex_m scs and scb functionality with direct CMSIS-core calls
* ``ZEP-1586`` - menuconfig: Backspace is broken
* ``ZEP-1599`` - printk() support for the '-' indicator  in format string (left justifier)
* ``ZEP-1607`` - JSON encoding/decoding library
* ``ZEP-1621`` - Stack Monitoring
* ``ZEP-1631`` - Ability to use k_mem_pool_alloc (or similar API) from ISR
* ``ZEP-1684`` - Add Atmel SAM family watchdog (WDT) driver
* ``ZEP-1695`` - Support ADXL362 sensor
* ``ZEP-1698`` - BME280 support for SPI communication
* ``ZEP-1711`` - xtensa build defines Kconfigs with lowercase names
* ``ZEP-1718`` - support for IPv6 fragmentation
* ``ZEP-1719`` - TCP does not work with 6lo
* ``ZEP-1721`` - many TinyCrypt test cases only run on ARM and x86
* ``ZEP-1722`` - xtensa: TinyCrypt does not build
* ``ZEP-1735`` - Controller to Host flow control
* ``ZEP-1759`` - All python scripts needed for build should be moved to python 3 to minimize dependencies
* ``ZEP-1761`` - K_MEM_POOL_DEFINE build error "invalid register name" when built with llvm/icx from ISSM toolchain
* ``ZEP-1769`` - Implement  Set Event Mask and LE Set Event Mask commands
* ``ZEP-1772`` - re-introduce controller to host flow control
* ``ZEP-1776`` - sending LE COC data from RX thread can lead to deadlock
* ``ZEP-1785`` - Tinytile: Flashing not supported with this board
* ``ZEP-1788`` - [REG] bt_enable: No HCI driver registered
* ``ZEP-1800`` - Update external mbed TLS library to latest version (2.4.2)
* ``ZEP-1812`` - Add tickless kernel support in HPET timer
* ``ZEP-1816`` - Add tickless kernel support in LOAPIC timer
* ``ZEP-1817`` - Add tickless kernel support in ARCV2 timer
* ``ZEP-1818`` - Add tickless kernel support in cortex_m_systick timer
* ``ZEP-1821`` - Update PM apps to use mili/micro seconds instead of ticks
* ``ZEP-1823`` - Improved Benchmarks
* ``ZEP-1825`` - Context Switching KPI
* ``ZEP-1836`` - Expose current ecb_encrypt() as bt_encrypt() so host can directly access it
* ``ZEP-1856`` - remove legacy micro/nano kernel APIs
* ``ZEP-1857`` - Build warnings [-Wpointer-sign] with LLVM/icx (bluetooth_handsfree)
* ``ZEP-1866`` - Add Atmel SAM family I2C (TWIHS) driver
* ``ZEP-1880`` - "samples/grove/temperature": warning raised when generating configure file
* ``ZEP-1886`` - Build warnings [-Wpointer-sign] with LLVM/icx (tests/net/nbuf)
* ``ZEP-1887`` - Build warnings [-Wpointer-sign] with LLVM/icx (tests/drivers/spi/spi_basic_api)
* ``ZEP-1893`` - openocd: 'make flash' works with Zephyr SDK only and fails for all other toolchains
* ``ZEP-1896`` - [PTS] L2CAP/LE/CFC/BV-06-C
* ``ZEP-1899`` - Missing board documentation for xtensa/xt-sim
* ``ZEP-1908`` - Missing board documentation for arm/nucleo_96b_nitrogen
* ``ZEP-1910`` - Missing board documentation for arm/96b_carbon
* ``ZEP-1927`` - AIO: AIO_CMP_POL_FALL is triggered immediately after aio_cmp_configure
* ``ZEP-1935`` - Packet loss make RPL mesh more vulnerable
* ``ZEP-1936`` - tests/drivers/spi/spi_basic_api/testcase.ini#test_spi - Assertion Fail
* ``ZEP-1946`` - Time to Next Event
* ``ZEP-1955`` - Nested interrupts crash on Xtensa architecture
* ``ZEP-1959`` - Add Atmel SAM family serial (UART) driver
* ``ZEP-1965`` - net-tools HEAD is broken for QEMU/TAP
* ``ZEP-1966`` - Doesn't seem to be able to both send and receive locally via local address
* ``ZEP-1968`` - "make mrproper" removes top-level dts/ dir, makes ARM builds fail afterwards
* ``ZEP-1980`` - Move app_kernel benchmark to unified kernel
* ``ZEP-1984`` - net_nbuf_append(), net_nbuf_append_bytes() have data integrity problems
* ``ZEP-1990`` - Basic support for the BBC micro:bit LED display
* ``ZEP-1993`` - Flowcontrol Required for CDC_ACM
* ``ZEP-1995`` - samples/subsys/console breaks xtensa build
* ``ZEP-1997`` - Crash during startup if co-processors are present
* ``ZEP-2008`` - Port tickless idle test to unified kernel and cleanup
* ``ZEP-2009`` - Port test_sleep test to unified kernel and cleanup
* ``ZEP-2011`` - Retrieve RPL node information through CoAP requests
* ``ZEP-2012`` - Fault in networking stack for cores that can't access unaligned memory
* ``ZEP-2013`` - dead object monitor code
* ``ZEP-2014`` - Default samples/subsys/shell/shell fails to build on QEMU RISCv32 / NIOS2
* ``ZEP-2019`` - Xtensa port does not compile if CONFIG_TICKLESS_IDLE is enabled
* ``ZEP-2027`` - Bluetooth Peripheral Sample won't pair with certain Android devices
* ``ZEP-2029`` - xtensa: irq_offload() doesn't work on XRC_D2PM
* ``ZEP-2033`` - Channel Selection Algorithm #2
* ``ZEP-2034`` - High Duty Cycle Non-Connectable Advertising
* ``ZEP-2037`` - Malformed echo response
* ``ZEP-2048`` - Change UART "baud-rate" property to "current-speed"
* ``ZEP-2051`` - Move away from C99 types to zephyr defined types
* ``ZEP-2052`` - arm: unhandled exceptions in thread take down entire system
* ``ZEP-2055`` - Add README.rst in the root of the project for github
* ``ZEP-2057`` - crash in tests/net/rpl on qemu_x86 causing intermittent sanitycheck failure
* ``ZEP-2061`` - samples/net/dns_resolve networking setup/README is confusing
* ``ZEP-2064`` - RFC: Making net_shell command handlers reusable
* ``ZEP-2065`` - struct dns_addrinfo has unused fields
* ``ZEP-2066`` - nitpick: SOCK_STREAM/SOCK_DGRAM values swapped compared to most OSes
* ``ZEP-2069`` - samples: net: dhcpv4_client: runs failed on frdm k64f board
* ``ZEP-2070`` - net pkt doesn't full unref after send a data form bluetooth's ipsp
* ``ZEP-2076`` - samples: net: coaps_server: build failed
* ``ZEP-2077`` - Fix IID when using CONFIG_NET_L2_BLUETOOTH_ZEP1656
* ``ZEP-2080`` - No reply from RPL node after 20-30 minutes.
* ``ZEP-2092`` - [NRF][BT] Makefile:946: recipe for target 'include/generated/generated_dts_board.h' failed
* ``ZEP-2114`` - tests/kernel/fatal : Fail for QC1000/arc
* ``ZEP-2125`` - Compilation error when UART1 port is enabled via menuconfig
* ``ZEP-2132`` - Build samples/bluetooth/hci_uart fail
* ``ZEP-2138`` - Static code scan (coverity) issues seen
* ``ZEP-2143`` - Compilation Error on Windows 10 with MSYS2
* ``ZEP-2152`` - Xtensa crashes on startup for cores with coprocessors
* ``ZEP-2178`` - Static code scan (coverity) issues seen

---

### Doc Releases Release Notes 1.9 (`doc/releases/release-notes-1.9.rst`)

:orphan:

.. _zephyr_1.9:

Zephyr Kernel 1.9.2
###################

This is a maintenance release with fixes.

Kernel
******
* Generic queue item acquisition fixed to always return a valid item when
  using K_FOREVER

Bluetooth
*********
* Multiple stability fixes for BLE Mesh
* Multiple stability fixes for the BLE Controller

Zephyr Kernel 1.9.1
###################

This is a maintenance release with fixes and a two new features in the
BLE Controller.

Drivers and Sensors
*******************
* mcux ethernet driver buffer overflow fixed
* STM32 PWM prescaler issue fixed

Networking
**********
* Support for IPv6 in DNS fixed

Bluetooth
*********
* Multiple stability fixes for the BLE Controller
* Support for PA/LNA amplifiers in the BLE Controller
* Support for additional VS commands in the BLE Controller

Zephyr Kernel 1.9.0
###################

We are pleased to announce the release of Zephyr kernel version 1.9.0

Major enhancements planned with this release include:

* Bluetooth 5.0 Support (all features except Advertising Extensions)
* Bluetooth Qualification-ready BLE Controller
* BLE Mesh
* Lightweight Machine to Machine (LwM2M) support
* Pthreads compatible API
* BSD Sockets compatible API
* MMU/MPU (Cont.): Thread Isolation, Paging
* Expand Device Tree support to more architectures
* Revamp Testsuite, Increase Coverage
* Stack Sentinel support (See details below)

The following sections provide detailed lists of changes by component.

Kernel
******

* Added POSIX thread IPC support for Kernel
* kernel: introduce opaque data type for stacks
* Timeslicing and tickless kernel improvements

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

* arm: Added STM32F405, STM32F417, STM32F103x8 SoCs
* arm: Added TI CC2650 SoC
* arm: Removed TI CC3200 SoC
* arm: Added MPU support to nRF52, STM32L4, and STM32F3
* xtensa: Added ESP32 support
* Stack sentinel: This places a sentinel value at the lowest 4 bytes of a stack
  memory region and checks it at various intervals, including when servicing
  interrupts or context switching.
* x86: Enable MMU for application memory
* ARC: Added initial MPU support, including stack sentinel checking for ARC
  configurations not featuring hardware stack bounds checking
* ARC: Nested interrupt support for normal, non-FIRQ interrupts

Boards
******

* Added device tree support for Intel Quark based microcontroller boards
  such as Arduino_101, tinytile, and Quark_d2000_crb.
* arm: Added Atmel SAM4S Xplained board
* arm: Added Olimex STM32-E407 and STM32-P405 boards
* arm: Added STM32F412 Nucleo and STM32F429I-DISC1 boards
* arm: Added TI SensorTag board
* arm: Removed TI CC3200 LaunchXL board
* arm: Added VBLUno51 and VBLUno52 boards
* xtensa: Added ESP32 board support
* ARC: Added support for EMSK EM7D v2.2 version (incl. MPU)
* ARC: Board configuration restructuring, peripheral configs moved from soc to
  board level

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

* KW40Z IEEE 802.15.4 radio driver support added
* APDS9960 sensor driver added
* Added TICKLESS KERNEL support for nrf RTC Timer
* Added Kinetis adc and pwm drivers
* Removed deprecated PWM driver APIs
* Added ESP32 drivers for GPIO, pin mux, watchdog, random number generator,
  and UART
* sensor: Add BMM150 Geomagnetic sensor driver

Networking
**********

* LWM2M support added
* net-app API support added. This is higher level API that can be used
  by applications to create client/server applications with transparent
  TLS (for TCP) or DTLS (for UDP) support.
* MQTT TLS support added
* Add support to automatically setup IEEE 802.15.4 and Bluetooth IPSP networks
* TCP receive window support added
* Network sample application configuration file unification, where most of the
  similar configuration files were merged together
* Added Bluetooth support to HTTP(S) server sample application
* BSD Socket compatible API layer, allowing to write and/or port simple
  networking applications using a well-known, cross-platform API
* Networking API documentation fixes
* Network shell enhancements
* Trickle algorithm fixes
* Improvements to HTTP server and client libraries
* CoAP API fixes
* IPv6 fixes
* RPL fixes

Bluetooth
*********

* Bluetooth Mesh support (all mandatory features and most optional ones)
* GATT Service Changed Characteristic support
* IPSP net-app support: a simplified networking API reducing duplication
  of common tasks an application writer has to go through to connect
  to the network.
* BLE controller qualification-ready, with all required tests passing
* Controller-based privacy (including all optional features)
* Extended Scanner Filter Policies support in the controller
* Controller roles (Advertiser, Scanner, Master and Slave) separation in
  source code, conditionally includable
* Flash access cooperation with BLE radio activity
* Bluetooth Kconfig options have been renamed have the same (consistent)
  prefix as the Bluetooth APIs, namely BT_* instead of BLUETOOTH_*.
  Controller Kconfig options have been shortened to use CTLR instead of
  CONTROLLER.
* Removed deprecated NBLE support

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

* change description

Libraries
*********

* mbedTLS updated to 2.6.0
* TinyCrypt updated to 0.2.7

HALs
****

* Added support for stm32f417 SOC
* Added support for stm32f405 SOC
* pinmux: stm32: 96b_carbon: Add support for SPI
* Added rcc node on stm32 socs
* Added pin config for USART1 on PB6/PB7 for stm32l4
* Removed TI cc3200 SOC and LaunchXL board support

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

* CONTRIBUTING.rst and Contribution Guide material added
* Configuration options doc reorganized for easier access
* Navigation sidebar issues fixed for supported boards section
* Fixed link targets hidden behind header
* Completed migration of wiki.zephyrproject.org content into docs and
  GitHub wiki. All links to old wiki updated.
* Broken link and spelling check scans through .rst, Kconfig (used for
  auto-generated configuration docs), and source code doxygen comments
  (used for API documentation).
* API documentation added for new interfaces and improved for existing
  ones.
* Documentation added for new boards supported with this release.
* Python packages needed for document generation added to new python
  pip requirements.txt


Build System and Tools
**********************
* Convert post-processing host tools to python, this includes the following
  tools: gen_offset_header.py gen_idt.py gen_gdt.py gen_mmu.py


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

* Added test Case to stress test round robin scheduling in schedule_api test.
* Added test case to stress test priority scheduling in scheduling_api_test.


JIRA Related Items
******************
* ``ZEP-230`` - Define I2S driver APIs
* ``ZEP-601`` - enable CONFIG_DEBUG_INFO
* ``ZEP-702`` - Integrate Nordic's Phoenix Link Layer into Zephyr
* ``ZEP-749`` - TinyCrypt uses an old, unoptimized version of micro-ecc
* ``ZEP-896`` - nRF5x Series: Add support for power and clock peripheral
* ``ZEP-1067`` - Driver for BMM150
* ``ZEP-1396`` - Add ksdk adc shim driver
* ``ZEP-1426`` - CONFIG_BOOT_TIME_MEASUREMENT on all targets?
* ``ZEP-1552`` - Provide apds9960 sensor driver
* ``ZEP-1647`` - Figure out new combo for breathe/doxygen/sphinx versions that are supported
* ``ZEP-1744`` - UPF 56 BLE Controller Issues
* ``ZEP-1751`` - Add template YAML file
* ``ZEP-1819`` - Add tickless kernel support in nrf_rtc_timer timer
* ``ZEP-1843`` - provide mechanism to filter test cases based on available hardware
* ``ZEP-1892`` - Fix issues with Fix Release
* ``ZEP-1902`` - Missing board documentation for arm/nucleo_f334r8
* ``ZEP-1911`` - Missing board documentation for arm/stm3210c_eval
* ``ZEP-1917`` - Missing board documentation for arm/stm32373c_eval
* ``ZEP-1918`` - Fix connection parameter request procedure
* ``ZEP-2018`` - Remove deprecated PWM APIs
* ``ZEP-2020`` - tests/crypto/test_ecc_dsa intermittently fails on riscv32
* ``ZEP-2025`` - Add mcux pwm shim driver for k64
* ``ZEP-2031`` - ESP32 Architecture Configuration
* ``ZEP-2032`` - Espressif Open-source Toolchain Support
* ``ZEP-2039`` - Implement stm32cube LL based clock control driver
* ``ZEP-2054`` - Convert all helper script to use python3
* ``ZEP-2062`` - Convert gen_offset_header to a python script
* ``ZEP-2063`` - Convert gen_idt to python
* ``ZEP-2068`` - Need Tasks to Be Tracked in QRC too
* ``ZEP-2071`` - samples: warning: (SPI_CS_GPIO && SPI_SS_CS_GPIO && I2C_NRF5) selects GPIO which has unmet direct dependencies
* ``ZEP-2085`` - Add CONTRIBUTING.rst to root folder w/contributing guidelines
* ``ZEP-2089`` - UART support for ESP32
* ``ZEP-2115`` - Common API for networked applications for setting up network
* ``ZEP-2116`` - Common API for networked apps to create client/server applications
* ``ZEP-2141`` - Coverity CID 169303 in tests/net/ipv6/src/main.c
* ``ZEP-2150`` - Move Arduino 101 to Device Tree
* ``ZEP-2151`` - Move Quark D2000 to device tree
* ``ZEP-2156`` - Build warnings [-Wformat] with LLVM/icx (tests/kernel/sprintf)
* ``ZEP-2168`` - Timers seem to be broken with TICKLESS_KERNEL on nRF51 (Cortex M0)
* ``ZEP-2171`` - Move all board pinmux code from drivers/pinmux/stm32 to the corresponding board/soc locations
* ``ZEP-2184`` - Split data, bss, noinit sections into application and kernel areas
* ``ZEP-2188`` - x86: Implement simple stack memory protection
* ``ZEP-2217`` - schedule_api test fails on ARM with tickless kernel enabled
* ``ZEP-2218`` - unexpected short timeslice when running schedule_api with tickless kernel enabled
* ``ZEP-2220`` - Extend MPU to stm32 family
* ``ZEP-2225`` - Ability to unregister GATT services
* ``ZEP-2226`` - BSD Sockets API: Basic blocking API
* ``ZEP-2227`` - BSD Sockets API: Non-blocking API
* ``ZEP-2229`` - test_time_slicing_preemptible fails on bbc_microbit and other NRF boards
* ``ZEP-2250`` - sanitycheck not filtering defconfigs properly
* ``ZEP-2258`` - Coverity static scan issues seen
* ``ZEP-2265`` - stack declaration macros for ARM MPU
* ``ZEP-2267`` - Create Release Notes
* ``ZEP-2270`` - Convert mpu_stack_guard_test from using k_thread_spawn to k_thread_create
* ``ZEP-2274`` - Build warnings [-Wpointer-sign] with LLVM/icx (tests/net/ipv6_fragment)
* ``ZEP-2278`` - KW41-Z 802.15.4 driver hangs if full debug is disabled
* ``ZEP-2279`` - echo_server TCP handler corrupt by SYN flood
* ``ZEP-2280`` - add test case for KBUILD_ZEPHYR_APP
* ``ZEP-2285`` - non-boards shows up in board list for docs
* ``ZEP-2286`` - Write a GPIO driver for ESP32
* ``ZEP-2289`` - [DoS] Memory leak from large TCP packets
* ``ZEP-2296`` - ESP32: watchdog driver
* ``ZEP-2297`` - ESP32: Pin mux driver
* ``ZEP-2303`` - Concurrent incoming TCP connections
* ``ZEP-2305`` - linker: implement MMU alignment constraints
* ``ZEP-2306`` - echo server hangs from IPv6 hop-by-hop option anomaly
* ``ZEP-2308`` - (New) Networking API details documentation is missing
* ``ZEP-2310`` - Improve configuration documentation index organization
* ``ZEP-2314`` - Testcase failure :tests/benchmarks/timing_info/testcase.ini#test
* ``ZEP-2316`` - Testcase failure :tests/bluetooth/shell/testcase.ini#test_br
* ``ZEP-2318`` - some kernel objects sections are misaligned
* ``ZEP-2319`` - tests/net/ieee802154/l2 uses semaphore before initialization
* ``ZEP-2321`` - [PTS] All TC's of SM/GATT/GAP failed due to BTP_TIMEOUT error.
* ``ZEP-2326`` - x86: API to validate user buffer
* ``ZEP-2328`` - gen_mmu.py appears to generate incorrect tables in some situations
* ``ZEP-2329`` - bad memory access tests/net/route
* ``ZEP-2330`` - bad memory access tests/net/rpl
* ``ZEP-2331`` - bad memory access tests/net/ieee802154/l2
* ``ZEP-2332`` - bad memory access tests/net/ip-addr
* ``ZEP-2334`` - bluetooth shell build warning when CONFIG_DEBUG=y
* ``ZEP-2335`` - Ensure the Licensing page is up-to-date for the release
* ``ZEP-2340`` - Disabling advertising gets stuck
* ``ZEP-2341`` - Build warnings:override: reassigning to symbol MAIN_STACK_SIZE with LLVM/icx (/tests/net/6lo)
* ``ZEP-2343`` - Coverity static scan issues seen
* ``ZEP-2344`` - Coverity static scan issues seen
* ``ZEP-2345`` - Coverity static scan issues seen
* ``ZEP-2352`` - network API docs don't mention when callbacks are called from a different thread
* ``ZEP-2354`` - ESP32: Random number generator
* ``ZEP-2355`` - Coverity static scan issues seen
* ``ZEP-2358`` - samples:net:echo_server: Failed to send UDP packets
* ``ZEP-2359`` - samples:net:coaps_server: unable to bind with IPv6
* ``ZEP-2360`` - Initial implementation of Bluetooth Mesh
* ``ZEP-2361`` - Provide a POSIX compatibility Layer on top of native APIs
* ``ZEP-2365`` - samples/net/wpanusb/test_15_4 fail on nrf52840_pca10056 and frdm_kw41z
* ``ZEP-2366`` - implement \__kernel attribute
* ``ZEP-2367`` - NULL pointer read in udp, tcp, context net tests
* ``ZEP-2368`` - x86: QEMU: enable MMU at boot by default
* ``ZEP-2370`` - [test] Create a stress test to test preemptive scheduling on zephyr
* ``ZEP-2371`` - [test] Create a stress test to test round robin scheduling with equal priority tasks on zephyr
* ``ZEP-2374`` - Build warnings:override: reassigning to symbol NET_IPV4 with LLVM/icx (/tests/net/dhcpv4)
* ``ZEP-2375`` - Build warnings [-Wpointer-sign] with LLVM/icx (tests/net/udp)
* ``ZEP-2378`` - sample/bluetooth/ipsp: When build the app 'ROM' overflowed
* ``ZEP-2379`` - samples/bluetooth: Bluetooth init failed (err -19)
* ``ZEP-2380`` - TCP is broken by Zephyr commit 3604c391e
* ``ZEP-2382`` - Convert test to use ztest framework
* ``ZEP-2383`` - Net-app API needs to support DTLS
* ``ZEP-2384`` - "Common" bluetooth sample code does not build out of tree
* ``ZEP-2385`` - Update TinyCrypt to 0.2.7
* ``ZEP-2395`` - Assert in http_server example when run over bluetooth on nrf52840
* ``ZEP-2397`` - net_if_ipv6_addr_rm calls k_delayed_work_cancel() on uninitialized k_delayed_work object
* ``ZEP-2398`` - network stack test cases are only tested on x86
* ``ZEP-2403`` - Enabling MMU for qemu_x86 broke active connect support
* ``ZEP-2407`` - [Cortex m series ] Getting a crash on Cortex m3 series when more than 8 preemptive threads with equal priority are scheduled
* ``ZEP-2408`` - design mechanism for kernel object sharing policy
* ``ZEP-2412`` - Bluetooth tester app not working from commit c1e5cb
* ``ZEP-2423`` - samples/bluetooth/ipsp's builtin TCP echo crashes on TCP closure
* ``ZEP-2432`` - ieee802154_shell.c, net_mgmt call leads to a BUS FAULT
* ``ZEP-2433`` - x86: do forensic analysis to determine stack overflow context in supervisor mode
* ``ZEP-2436`` - Unable to see console output in Quark_D200_CRB
* ``ZEP-2437`` - warnings when building applications for quark d2000
* ``ZEP-2444`` - [nrf] Scheduling test API is getting failed in case of nrf51/nrf52 platforms
* ``ZEP-2445`` - nrf52: CPU lock-up when using Bluetooth + Flash driver + CONFIG_ASSERT
* ``ZEP-2447`` - 'make debugserver' fails for qemu_x86_iamcu
* ``ZEP-2451`` - Move Bluetooth IPSP support functions from samples/bluetooth to a separate library
* ``ZEP-2452`` - https server does not build for olimex_stm32_e407
* ``ZEP-2457`` - generated/offsets.h is being regenerated unnecessarily
* ``ZEP-2459`` - Sample application not working with Quark SE C1000
* ``ZEP-2460`` - tests/crypto/ecc_dh fails on qemu_nios2
* ``ZEP-2464`` - "allow IPv6 interface init to work with late IP assignment" patch broke non-late IPv6 assignment
* ``ZEP-2465`` - Static code scan (coverity) issues seen
* ``ZEP-2467`` - Static code scan (coverity) issues seen
* ``ZEP-2468`` - Static code scan (coverity) issues seen
* ``ZEP-2469`` - Static code scan (coverity) issues seen
* ``ZEP-2474`` - Static code scan (coverity) issues seen
* ``ZEP-2480`` - Build warnings [-Wpointer-sign] with LLVM/icx (samples/net/coaps_server)
* ``ZEP-2482`` - Build warnings [-Wpointer-sign] with LLVM/icx (samples/net/telnet)
* ``ZEP-2483`` - samples:net:http_client: Failed to get http requests in IPv6
* ``ZEP-2484`` - samples:net:http_server: Failed to work in IPv6
* ``ZEP-2485`` - Build warnings [-Wpointer-sign] with LLVM/icx (samples/net/coaps_client)
* ``ZEP-2486`` - Build warnings [-Wpointer-sign] with LLVM/icx (samples/net/mbedtls_dtlsserver)
* ``ZEP-2488`` - Build warnings [-Wpointer-sign] and [-Warray-bounds] with LLVM/icx (samples/net/irc_bot)
* ``ZEP-2489`` - bug in _x86_mmu_buffer_validate API
* ``ZEP-2496`` - Build failure on tests/benchmarks/object_footprint
* ``ZEP-2497`` - [TIMER] k_timer_start should take 0 value for duration parameter
* ``ZEP-2498`` - [Display] Minimum Duration argument to k_timer_start should be non Zero positive value
* ``ZEP-2508`` - esp32 linkage doesn't unify ELF sections correctly
* ``ZEP-2510`` - BT: CONFIG_BT_HCI_TX_STACK_SIZE appears to be too low for BT_SPI
* ``ZEP-2514`` - XCC sanitycheck build compile wrong targets
* ``ZEP-2523`` - Static code scan (Coverity) issue seen in file: /samples/net/zoap_server/src/zoap-server.c
* ``ZEP-2525`` - Static code scan (Coverity) issue seen in file: /samples/net/zoap_server/src/zoap-server.c
* ``ZEP-2531`` - Static code scan (Coverity) issue seen in file: /tests/net/lib/dns_resolve/src/main.c
* ``ZEP-2528`` - Static code scan (Coverity) issue seen in file: /samples/net/nats/src/nats.c
* ``ZEP-2534`` - Static code scan (Coverity) issue seen in file: /tests/kernel/irq_offload/src/irq_offload.c
* ``ZEP-2535`` - Static code scan (Coverity) issue seen in file: /tests/net/lib/zoap/src/main.c
* ``ZEP-2537`` - Static code scan (Coverity) issue seen in file: /tests/crypto/ecc_dh/src/ecc_dh.c
* ``ZEP-2538`` - Static code scan (Coverity) issue seen in file: /arch/arm/soc/st_stm32/stm32f1/soc_gpio.c
* ``ZEP-2539`` - Static code scan (Coverity) issue seen in file: /tests/net/ieee802154/l2/src/ieee802154_test.c
* ``ZEP-2540`` - Static code scan (Coverity) issue seen in file: /ext/lib/crypto/tinycrypt/source/ecc_dh.c
* ``ZEP-2541`` - Static code scan (Coverity) issue seen in file: /subsys/bluetooth/host/mesh/cfg.c
* ``ZEP-2549`` - Static code scan (Coverity) issue seen in file: /samples/net/leds_demo/src/leds-demo.c
* ``ZEP-2552`` - ESP32 uart poll_out always return 0
* ``ZEP-2553`` - k_queue_poll not handling -EADDRINUSE (another thread already polling) properly
* ``ZEP-2556`` - ESP32 watchdog WDT_MODE_INTERRUPT_RESET mode fails
* ``ZEP-2557`` - ESP32 : Some GPIO tests are getting failed (tests/drivers/gpio/gpio_basic_api)
* ``ZEP-2558`` - CONFIG_BLUETOOTH_* Kconfig options silently ignored
* ``ZEP-2560`` - samples/net: the sample of zoap_server fails to add multicast address
* ``ZEP-2561`` - samples/net: The HTTP client failed to send the POST request
* ``ZEP-2568`` - [PTS] All TC's of L2CAP/SM/GATT/GAP failed due to BTP_ERROR.
* ``ZEP-2575`` - error:[ '-O: command not found'] with LLVM/icx (samples/hello_world)
* ``ZEP-2576`` - samples/net/sockets/echo, echo_async : fails to send the TCP packets
* ``ZEP-2581`` - CC3220 executable binary format support
* ``ZEP-2584`` - Update mbedTLS to 2.6.0
* ``ZEP-713``  - Implement preemptible regular IRQs on ARC

---

### Doc Releases Release Notes 2.0 (`doc/releases/release-notes-2.0.rst`)

:orphan:

.. _zephyr_2.0:

Zephyr 2.0.0
############

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

Major enhancements with this release include:

* The kernel now supports both 32- and 64-bit architectures.
* We added support for SOCKS5 proxy. SOCKS5 is an Internet protocol that
  exchanges network packets between a client and server through a proxy server.
* Introduced support for 6LoCAN, a 6Lo adaption layer for Controller Area
  Networks.
* We added support for :ref:`Point-to-Point Protocol (PPP) <ppp>`. PPP is a
  data link layer (layer 2) communications protocol used to establish a direct
  connection between two nodes.
* We added support for UpdateHub, an end-to-end solution for large scale
  over-the-air device updates.
* We added support for ARM Cortex-R Architecture (Experimental).

The following sections provide detailed lists of changes by component.

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

The following security vulnerability (CVE) was addressed in this
release:

* Fixes CVE-2019-9506: The Bluetooth BR/EDR specification up to and
  including version 5.1 permits sufficiently low encryption key length
  and does not prevent an attacker from influencing the key length
  negotiation. This allows practical brute-force attacks (aka "KNOB")
  that can decrypt traffic and inject arbitrary ciphertext without the
  victim noticing.

Kernel
******

* New kernel API for per-thread disabling of Floating Point Services for
  ARC, ARM Cortex-M, and x86 architectures.
* New system call to set the clock frequency at runtime.
* Additional support for compatibility with 64-bit architectures.
* Userspace mutexes are now supported through the new k_futex primitive.
* Improvements to the slab allocator.
* Fixed the implementation of k_thread_name_set() with userspace enabled.
* Boosted the default tick rate for tickless kernels to improve the
  precision of timeouts.

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

* ARM:

  * Added initial support for ARM Cortex-R architecture (Experimental)
  * We enhanced the support for Floating Point Services in Cortex-M
    architecture, implementing and enabling lazy-stacking for FPU
    capable threads and fixing stack overflow detection for FPU
    capable supervisor threads
  * Added QEMU support for ARMv8-M Mainline architecture
  * Optimized the IRQ locking time in thread context switch
  * Fixed several critical bugs in User Mode implementation
  * Added test coverage for ARM-specific kernel features
  * Improved support for linking TrustZone Secure Entry functions into
    Non-Secure firmware

* ARC:

  * Added support for ARC HS architecture
  * Added SMP support for ARC HS architecture
  * Added support for ARC SecureShield based TEE (Experimental)
  * Fixed several critical bugs in interrupt and exception handling
  * Enhance the support for Floating Point Services

* POSIX:

  * Fixed race condition with terminated threads which had never been
    scheduled by kernel. On very loaded systems it could cause swap errors.

* x86:

  * Dropped support for the Intel Quark microcontroller family.
  * A new lightweight PCI implementation has been introduced which supports
    MSI and other features required for PCIe devices. The previous PCI
    implementation has been deprecated and will be removed in 2.1.

* RISC-V:

  * Added support for the SiFive HiFive1 Rev B development board.
  * Added support for LiteX VexRiscv soft core.
  * Added support for 64-bit RISC-V, renaming the architecture from "riscv32"
    to "riscv".
  * Added 64-bit QEMU support.
  * Added DeviceTree bindings for RISC-V memory devices, CPU interrupt
    controllers, and platform-local interrupt controllers.

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

* Added native_posix_64: A 64 bit variant of native_posix
* Added support for these ARC boards:

  .. rst-class:: rst-columns

     * emsdp
     * hsdk
     * nsim for hs

* Added support for these ARM boards:

  .. rst-class:: rst-columns

     * atsamr21_xpro
     * cc1352r1_launchxl
     * cc26x2r1_launchxl
     * holyiot_yj16019
     * lpcxpresso55s69
     * mec15xxevb_assy6853
     * mikroe_mini_m4_for_stm32
     * mimxrt1015_evk
     * mps2_an521
     * nrf51_pca10031
     * nrf52811_pca10056
     * nucleo_g071rb
     * nucleo_wb55rg
     * qemu_cortex_r5
     * stm32h747i_disco
     * stm32mp157c_dk2
     * twr_ke18f
     * v2m_musca_b1
     * 96b_avenger96
     * 96b_meerkat96
     * 96b_wistrio

* Added support for these RISC-V boards:

  .. rst-class:: rst-columns

     * hifive1_revb
     * litex_vexriscv
     * qemu_riscv64

* Added support for the gpmrb x86 board

* Added support for these following shields:

  .. rst-class:: rst-columns

     * frdm_cr20a
     * link_board_can
     * sparkfun_sara_r4
     * wnc_m14a2a
     * x_nucleo_iks01a3

* Removed support for these boards:

  .. rst-class:: rst-columns

     * arduino_101
     * arduino_101_sss
     * curie_ble
     * galileo
     * quark_d2000_crb
     * quark_se_c1000_devboard
     * quark_se_c1000_ss_devboard
     * quark_se_c1000_ble
     * tinytile
     * x86_jailhouse

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

* ADC

  * Added API to support calibration
  * Enabled ADC on STM32WB
  * Removed Quark D2000 ADC driver
  * Added NXP ADC12 and SAM0 ADC drivers
  * Added ADC shell

* Audio

  * Added support for two microphones (stereo) in the mpxxdtyy driver

* CAN

  * Added support for canbus Ethernet translator
  * Added 6LoCAN implementation
  * Added MCP2515, NXP FlexCAN, and loopback drivers
  * Added CAN shell

* Clock Control

  * Added NXP Kinetis MCG, SCG, and PCC drivers
  * Added STM32H7, STM32L1X, and STM32WB support
  * Removed Quark SE driver

* Counter

  * Added optional flags to alarm configuration structure and extended set channel alarm flags
  * Added top_value setting configuration structure to API
  * Enabled counter for STM32WB
  * Added NXP GPT, "CMOS" RTC, SiLabs RTCC, and SAM0 drivers
  * Removed Quark D2000 support from QMSI driver

* Display

  * Added ST7789V based LCD driver
  * Renamed ssd1673 driver to ssd16xx
  * Added framebuffer driver with multiboot support
  * Added support for Seeed 2.8" TFT touch shield v2.0

* DMA

  * Added API to retrieve runtime status
  * Added SAM0 DMAC driver
  * Removed Quark SE C1000 support from QMSI driver

* Entropy

  * Added TI CC13xx / CC26xx driver

* ESPI

  * Added Microchip XEC driver

* Ethernet

  * Added LiteEth driver

* Flash

  * Removed Quark SE C1000 driver
  * Removed support for Quark D2000 from QMSI driver
  * Added STM32G0XX and STM32WB support to STM32 driver
  * Added RV32M1 and native POSIX drivers

* GPIO

  * Added stm32f1x SWJ configuration
  * Removed Quark SE C1000 and D2000 support from DesignWare driver
  * Added support for STM32H7, STM32L1X, and STM32WB to STM32 driver
  * Added Microchip XEC and TI CC13x2 / CC26x2 drivers
  * Added HT16K33 LED driver
  * Added interrupt support to SAM0 driver

* Hardware Info

  * Added ESP32 and SAM0 drivers

* I2C

  * Added support for STM32MP1, STM32WB, and STM32L1X to STM32 driver
  * Added STM32F10X slave support
  * Added power management to nrf TWI and TWIM drivers
  * Added TI CC13xx / CC26xx, Microchip MEC, SAM0, and RV32M1 drivers
  * Rewrote DesignWare driver for PCI(e) support

* IEEE 802.15.4

  * Fixed KW41z fault and dBm mapping

* Interrupt Controller

  * Added initial support for ARC TCC
  * Added GIC400, LiteX, and SAM0 EIC drivers
  * Added support for STM32G0X, STM32H7, STM32WB, and STM32MP1 to STM32 driver
  * Removed MVIC driver

* IPM

  * Removed Quark SE driver
  * Added MHU and STM32 drivers

* LED

  * Added Holtek HT16K33 LED driver

* Modem

  * Introduced socket helper layer
  * Introduced command handler and UART interface driver layers
  * Introduced modem context helper driver
  * Added u-blox SARA-R4 modem driver

* Pinmux

  * Added SPI support to STM32MP1
  * Enabled ADC, PWM, I2C, and SPI pins on STM32WB
  * Added Microchip XEC and TI CC13x2 / CC26x2 drivers

* PWM

  * Added NXP PWM driver
  * Added support for STM32G0XX to STM32 driver

* Sensor

  * Added STTS751 temperature sensor driver
  * Added LSM6DSO and LPS22HH drivers
  * Renamed HDC1008 driver to ti_hdc and added support for 1050 version
  * Added LED current, proximity pulse length, ALS, and proximity gain configurations to APDS9960 driver
  * Reworked temperature and acceleration conversions, and added interrupt handling in ADXL362 driver
  * Added BME680 driver and AMS ENS210 drivers

* Serial

  * Added Xilinx ZynqMP PS, LiteUART, and TI CC12x2 / CC26x2 drivers
  * Added support for virtual UARTS over RTT channels
  * Added support for STM32H7 to STM32 driver
  * Removed support for Quark D2000 from QMSI driver
  * Enabled interrupts in LPC driver
  * Implemented ASYNC API in SAM0 driver
  * Added PCI(e) support to NS16550 driver

* SPI

  * Added support for STM32MP1X and STM32WB to STM32 driver
  * Removed support for Quark SE C1000 from DesignWare driver
  * Added TI CC13xx / CC26xx driver
  * Implemented ASYNC API in SAM0 driver

* Timer

  * Added Xilinx ZynqMP PS ttc driver
  * Added support for SMP to ARC V2 driver
  * Added MEC1501 32 KHZ, local APIC timer, and LiteX drivers
  * Replaced native POSIX system timer driver with tickless support
  * Removed default selection of SYSTICK timer for ARM platforms

* USB

  * Added NXP EHCI driver
  * Implemented missing API functions in SAM0 driver

* WiFi

  * Implemented TCP listen/accept and UDP support in eswifi driver

Networking
**********

* Added support for `SOCKS5 proxy <https://en.wikipedia.org/wiki/SOCKS>`__.
  See also `RFC1928 <https://tools.ietf.org/html/rfc1928>`__ for details.
* Added support for 6LoCAN, a 6Lo adaption layer for Controller Area Networks.
* Added support for :ref:`Point-to-Point Protocol (PPP) <ppp>`.
* Added support for UpdateHub, an end-to-end solution for large scale
  over-the-air update of devices.
  See `UpdateHub.io <https://updatehub.io/>`__ for details.
* Added support to automatically register network socket family.
* Added support for ``getsockname()`` function.
* Added SO_PRIORITY support to ``setsockopt()``
* Added support for VLAN tag stripping.
* Added IEEE 802.15.4 API for ACK configuration.
* Added dispatching support to SocketCAN sockets.
* Added user mode support to PTP clock API.
* Added user mode support to network interface address functions.
* Added AF_NET_MGMT socket address family support. This is for receiving network
  event information in user mode application.
* Added user mode support to ``net_addr_ntop()`` and ``net_addr_pton()``
* Added support for sending network management events when DNS server is added
  or deleted.
* Added LiteEth Ethernet driver.
* Added support for ``sendmsg()`` API.
* Added `civetweb <https://civetweb.github.io/civetweb/>`__ HTTP API support.
* Added LWM2M IPSO Accelerometer, Push Button, On/Off Switch and Buzzer object
  support.
* Added LWM2M Location and Connection Monitoring object support.
* Added network management L4 layer. The L4 management events are used
  when monitoring network connectivity.
* Allow net-mgmt API to pass information length to application.
* Removed network management L1 layer as it was never used.
* By default a network interface is set to UP when the device starts.
  If this is not desired, then it is possible to disable automatic start.
* Allow collecting network packet TX throughput times in the network stack.
  This information can be seen in net-shell.
* net-shell Ping command overhaul.
* Accept UDP packet with missing checksum.
* 6lo compression rework.
* Incoming connection handling refactoring.
* Network interface refactoring.
* IPv6 fragmentation fixes.
* TCP data length fixes if TCP options are present.
* SNTP client updates.
* Trickle timer re-init fixes.
* ``getaddrinfo()`` fixes.
* Fixes in DHCPv4, LWM2M, gPTP, and MQTT
* DNS fixes for non-compressed answers.
* mDNS and LLMNR resolver fixes.
* Ethernet ARP fixes.
* OpenThread updates and fixes.
* Network device driver fixes for:

  .. rst-class:: rst-columns

     - Ethernet e1000
     - Ethernet enc28j60
     - Ethernet mcux
     - Ethernet stellaris
     - Ethernet gmac
     - Ethernet stm32
     - WiFi eswifi
     - IEEE 802.15.4 kw41z
     - IEEE 802.15.4 nrf5

Bluetooth
*********

* Host:

  * GATT: Added support for database hashes, Read Using Characteristic
    UUID, static services, disabling the dynamic database, and notifying
    and indicating by UUID
  * GATT: Simplified the bt_gatt_notify_cb() API
  * GATT: Added additional attributes to the Device Information Service
  * GATT: Several protocol and database fixes
  * Settings: Transitioned to new optimized settings model and support for custom backends
  * Completed support for directed advertising and Out-Of-Band (OOB) pairing
  * Added support for fine-grained control of security establishment, including
    forcing a pairing procedure in case of key loss
  * Switched to separate, dedicated pools for discardable events and number of
    completed packets events
  * Extended and improved the Bluetooth shell with several commands
  * BLE qualification up to the 5.1 specification
  * BLE Mesh: Several fixes and improvements

* BLE split software Controller:

  * The split software Controller is now the default
  * Added support for the Data Length Update procedure
  * Improved and documented the ticker packet scheduler for improved conflict resolution
  * Added support for out-of-tree user-defined commands and events,
    Zephyr Vendor Specific Commands, and user-defined protocols
  * Converted several control procedures to be queueable
  * Nordic: Decorrelated address generation from resolution
  * Nordic: Added support for Controller-based privacy, fast encryption
    setup, RSSI, low-latency ULL processing of messages, nRF52811 IC BLE
    radio, PA/LNA on Port 1 GPIO pins, and radio event abort
  * BLE qualification up to the 5.1 specification

* BLE legacy software Controller:

  * BLE qualification up to the 5.1 specification
  * Multiple control procedures fixes and improvements

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

* The devicetree Python scripts have been rewritten to be more robust and
  easier to understand and change. The new scripts are these three files:

  - ``scripts/dts/dtlib.py`` -- a low-level :file:`.dts` parsing
    library

  - ``scripts/dts/edtlib.py`` -- a higher-level library that adds
    information from bindings

  - :zephyr_file:`scripts/dts/gen_defines.py` -- generates a C header from the
    devicetree files for the board

  The new scripts verify ``category: optional/required`` and ``type:`` settings
  given in bindings for nodes, and add some new types, like ``phandle-array``.
  Error messages and other output is now more helpful.

  See the updated documentation in :zephyr_file:`dts/binding-template.yaml`.

  The old scripts are kept around to generate a few deprecated ``#define``\ s.
  They will be removed in the Zephyr 2.2 release.

* Changed ARM Embedded toolchain to default to nano variant of newlib


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

* File Systems: Added support for littlefs

HALs
****

* HALs are now moved out of the main tree as external modules and reside
  in their own standalone repositories.

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

* We've made many updates to component, subsystem, and process
  documentation bringing our documentation up-to-date with code changes,
  additions, and improvements, as well as new supported boards and
  samples.

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

* We have implemented additional tests and significantly expanded the
  amount of test cases in existing tests to increase code coverage.

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

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`18964` - [Coverity CID :203911]Memory - corruptions in /tests/bluetooth/uuid/src/main.c
* :github:`18963` - [Coverity CID :203910]Memory - corruptions in /tests/bluetooth/uuid/src/main.c
* :github:`18959` - [Coverity CID :203907]Parse warnings in /include/bluetooth/conn.h
* :github:`18923` - (BLE) Dynamic TX Power Control
* :github:`18906` - Problem on build when calling objcopy to generate isrList.bin
* :github:`18865` - Fatal Usage Fault When Bluetooth And OpenThread Are Enabled On NRF52840 Multiprotocol Support
* :github:`18828` - Bluetooth: controller: crash terminating link during encryption procedure
* :github:`18821` - Documentation: parent vs child in DeviceTree nodes
* :github:`18819` - Bluetooth: LL split assert upon disconnection
* :github:`18814` - Module Request: LoRaMac-Node
* :github:`18813` - fs: nvs: Cannot delete entries
* :github:`18808` - Docs for gpmrb board incorrectly refer to up_squared board
* :github:`18804` - Channel Selection Algorithm Modification In Zephyr
* :github:`18802` - Bluetooth: UUID: Missing tests and confusing documentation
* :github:`18799` - bt_uuid_create_le() and bt_uuid_create() have endianness issues, and only one of them is needed
* :github:`18795` - FS:NVS: garbage collection when restart
* :github:`18784` - Can not build link_board_can shield
* :github:`18774` - (nRF51) NVS example doesn't work
* :github:`18765` - LwM2M: DNS handling via offload socket API is broken
* :github:`18760` - hello_world sample instructions don't work
* :github:`18739` - k_uptime_get_32() does not behave as documented
* :github:`18732` - net: mDNS name resolving issue between 2 Zephyr nodes
* :github:`18726` - arc: should not rely on that ERET has a copy of ilink
* :github:`18725` - arc: the IRM bit of SEC_STAT is not handled corrected
* :github:`18724` - arc: interrupt stack is not  switched correctly
* :github:`18717` - USB broken on disco l475 iot board
* :github:`18705` - SMP fails to allocate buffer and pairing times out
* :github:`18693` - POSIX: Some headers were missing from PR #16621
* :github:`18687` - [Coverity CID :203623]Memory - illegal accesses in /tests/subsys/settings/fcb_init/src/settings_test_fcb_init.c
* :github:`18686` - [Coverity CID :203622]Parse warnings in /opt/zephyr-sdk-0.10.3/nios2-zephyr-elf/nios2-zephyr-elf/include/c++/8.3.0/bits/refwrap.h
* :github:`18685` - [Coverity CID :203621]Parse warnings in /opt/zephyr-sdk-0.10.3/nios2-zephyr-elf/nios2-zephyr-elf/include/c++/8.3.0/bits/refwrap.h
* :github:`18684` - [Coverity CID :203620]Parse warnings in /opt/zephyr-sdk-0.10.3/nios2-zephyr-elf/nios2-zephyr-elf/include/c++/8.3.0/bits/refwrap.h
* :github:`18683` - [Coverity CID :190988]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/drivers/imx/fsl_elcdif.c
* :github:`18682` - [Coverity CID :190984]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/drivers/imx/fsl_elcdif.c
* :github:`18681` - [Coverity CID :190979]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/drivers/imx/fsl_elcdif.c
* :github:`18680` - [Coverity CID :190959]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/drivers/imx/fsl_elcdif.c
* :github:`18679` - [Coverity CID :198643]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MKE18F16/fsl_clock.c
* :github:`18678` - [Coverity CID :198642]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MKE18F16/fsl_clock.c
* :github:`18677` - [Coverity CID :198641]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MKE18F16/fsl_clock.c
* :github:`18676` - [Coverity CID :190994]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MK64F12/fsl_clock.c
* :github:`18675` - [Coverity CID :190982]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MK64F12/fsl_clock.c
* :github:`18674` - [Coverity CID :190962]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MK64F12/fsl_clock.c
* :github:`18673` - [Coverity CID :190947]Incorrect expression in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/MK64F12/fsl_clock.c
* :github:`18672` - [Coverity CID :198948]Control flow issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/LPC55S69/fsl_clock.c
* :github:`18671` - [Coverity CID :198947]Integer handling issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/LPC55S69/fsl_clock.c
* :github:`18670` - [Coverity CID :182600]Integer handling issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/devices/LPC54114/fsl_clock.c
* :github:`18669` - [Coverity CID :158891]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nxp/mcux/components/phyksz8081/fsl_phy.c
* :github:`18668` - [Coverity CID :203544]Integer handling issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c
* :github:`18667` - [Coverity CID :203513]Integer handling issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c
* :github:`18666` - [Coverity CID :203506]Integer handling issues in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c
* :github:`18665` - [Coverity CID :203436]Memory - illegal accesses in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c
* :github:`18664` - [Coverity CID :203416]Uninitialized variables in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/fs/littlefs/lfs.c
* :github:`18663` - [Coverity CID :203413]Null pointer dereferences in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/fs/littlefs/lfs.c
* :github:`18662` - [Coverity CID :61908]Insecure data handling in /home/aasthagr/zephyrproject-external-coverity-new/zephyrproject/modules/crypto/mbedtls/library/ssl_tls.c
* :github:`18658` - Bluetooth BR/EDR encryption key negotiation vulnerability
* :github:`18654` - cc3220sf_launchxl fails tests/kernel/interrupt/arch.interrupt
* :github:`18645` - Disconnect because of data packets during encryption procedure
* :github:`18615` - sam e70 xplained failed to build hello world
* :github:`18599` - tests/kernel/fifo/fifo_timeout fails on cc3220sf_launchxl
* :github:`18598` - tests/net/trickle failed on multiple plartforms
* :github:`18595` - USB CDC endless loop with BLE on NRF52
* :github:`18593` - tests/arch/arm/arm_zero_latency_irqs fails on cc3220sf_launchxl
* :github:`18592` - (nRF51) The RSSI signal does not rise above -44 dBm
* :github:`18590` - tests/kernel/fatal/kernel.common.stack_sentinel fails on FRDM-KW41Z
* :github:`18587` - tests/kernel/fifo/fifo_timeout/kernel.fifo.timeout fails to run on lpcxpresso54114_m4
* :github:`18584` - BT LL assert on LL/CON/ADV/BV-04-C
* :github:`18580` - Bluetooth: Security fail on initial pairing
* :github:`18574` - Some platforms: “reel_board”, “frdm_k64f” and “sam_e70_xplained”  are be built failure
* :github:`18572` - Bluetooth: GATT: Unable to indicate by UUID
* :github:`18563` - log_strdup missing error messages seen when running wifi sample
* :github:`18547` - Bluetooth: GATT: Fix using variable size storage for CCC
* :github:`18546` - Hard Fault when connecting to BLE device
* :github:`18524` - No disconnection event during "heavy" indication stream
* :github:`18522` - BLE: Mesh: When transport send seg_msg to LPN
* :github:`18521` - BLE: Mesh: when friend send msg to LPN
* :github:`18508` - tests/net/trickle failed on frdm_k64f board
* :github:`18476` - Custom module with west
* :github:`18462` - potential buffer overrun in logging infrastructure
* :github:`18461` - [Coverity CID :203487]Parse warnings in /usr/lib/gcc/x86_64-redhat-linux/8/include/stdint-gcc.h
* :github:`18460` - [Coverity CID :203527]Parse warnings in /usr/include/unistd.h
* :github:`18459` - [Coverity CID :203509]Null pointer dereferences in /tests/subsys/usb/desc_sections/src/desc_sections.c
* :github:`18458` - [Coverity CID :203422]Memory - illegal accesses in /tests/subsys/fs/littlefs/src/testfs_util.c
* :github:`18457` - [Coverity CID :203419]Security best practices violations in /tests/net/traffic_class/src/main.c
* :github:`18456` - [Coverity CID :203401]Security best practices violations in /tests/net/traffic_class/src/main.c
* :github:`18455` - [Coverity CID :203490]Error handling issues in /tests/net/socket/net_mgmt/src/main.c
* :github:`18454` - [Coverity CID :203499]Null pointer dereferences in /tests/net/icmpv6/src/main.c
* :github:`18453` - [Coverity CID :203480]Null pointer dereferences in /tests/net/context/src/main.c
* :github:`18446` - [Coverity CID :203532]Incorrect expression in /tests/kernel/sched/schedule_api/src/user_api.c
* :github:`18445` - [Coverity CID :203507]Error handling issues in /tests/kernel/mutex/sys_mutex/src/main.c
* :github:`18444` - [Coverity CID :203516]Memory - corruptions in /tests/kernel/mem_protect/userspace/src/main.c
* :github:`18443` - [Coverity CID :203454]Error handling issues in /tests/kernel/mem_protect/sys_sem/src/main.c
* :github:`18442` - [Coverity CID :203465]Memory - corruptions in /tests/kernel/mem_protect/protection/src/main.c
* :github:`18439` - [Coverity CID :203437]Incorrect expression in /tests/kernel/fp_sharing/float_disable/src/k_float_disable.c
* :github:`18438` - [Coverity CID :203407]Incorrect expression in /tests/kernel/fp_sharing/float_disable/src/k_float_disable.c
* :github:`18437` - [Coverity CID :203478]Program hangs in /tests/kernel/common/src/sflist.c
* :github:`18436` - [Coverity CID :203424]Control flow issues in /tests/kernel/common/src/sflist.c
* :github:`18434` - [Coverity CID :203486]Memory - corruptions in /tests/bluetooth/uuid/src/main.c
* :github:`18433` - [Coverity CID :203431]Memory - corruptions in /tests/bluetooth/uuid/src/main.c
* :github:`18432` - [Coverity CID :203502]Error handling issues in /tests/bluetooth/tester/src/gap.c
* :github:`18431` - [Coverity CID :203391]Null pointer dereferences in /tests/bluetooth/gatt/src/main.c
* :github:`18430` - [Coverity CID :203540]Incorrect expression in /tests/arch/arm/arm_zero_latency_irqs/src/arm_zero_latency_irqs.c
* :github:`18429` - [Coverity CID :203525]Incorrect expression in /tests/arch/arm/arm_thread_swap/src/arm_thread_arch.c
* :github:`18428` - [Coverity CID :203479]Incorrect expression in /tests/arch/arm/arm_thread_swap/src/arm_thread_arch.c
* :github:`18427` - [Coverity CID :203392]Incorrect expression in /tests/arch/arm/arm_thread_swap/src/arm_thread_arch.c
* :github:`18426` - [Coverity CID :203455]Incorrect expression in /tests/arch/arm/arm_ramfunc/src/arm_ramfunc.c
* :github:`18424` - [Coverity CID :203489]Memory - corruptions in /tests/application_development/gen_inc_file/src/main.c
* :github:`18423` - [Coverity CID :203473]Null pointer dereferences in /subsys/usb/usb_descriptor.c
* :github:`18421` - [Coverity CID :203504]Uninitialized variables in /subsys/net/lib/sockets/sockets_net_mgmt.c
* :github:`18420` - [Coverity CID :203468]Control flow issues in /subsys/net/lib/sockets/sockets_net_mgmt.c
* :github:`18419` - [Coverity CID :203397]Control flow issues in /subsys/net/lib/sockets/sockets_net_mgmt.c
* :github:`18418` - [Coverity CID :203445]Error handling issues in /subsys/net/lib/sockets/getnameinfo.c
* :github:`18417` - [Coverity CID :203501]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_timer.c
* :github:`18416` - [Coverity CID :203475]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_timer.c
* :github:`18415` - [Coverity CID :203420]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_timer.c
* :github:`18414` - [Coverity CID :203496]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_push_button.c
* :github:`18413` - [Coverity CID :203488]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_push_button.c
* :github:`18412` - [Coverity CID :203482]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_push_button.c
* :github:`18411` - [Coverity CID :203450]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_onoff_switch.c
* :github:`18410` - [Coverity CID :203448]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_onoff_switch.c
* :github:`18409` - [Coverity CID :203427]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_onoff_switch.c
* :github:`18408` - [Coverity CID :203533]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_light_control.c
* :github:`18407` - [Coverity CID :203519]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_light_control.c
* :github:`18406` - [Coverity CID :203511]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_buzzer.c
* :github:`18405` - [Coverity CID :203426]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_buzzer.c
* :github:`18404` - [Coverity CID :203414]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_buzzer.c
* :github:`18403` - [Coverity CID :203539]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_accelerometer.c
* :github:`18402` - [Coverity CID :203530]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_accelerometer.c
* :github:`18401` - [Coverity CID :203438]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_accelerometer.c
* :github:`18400` - [Coverity CID :203483]Control flow issues in /subsys/net/lib/conn_mgr/events_handler.c
* :github:`18399` - [Coverity CID :203457]Control flow issues in /subsys/net/l2/ppp/lcp.c
* :github:`18398` - [Coverity CID :203514]Control flow issues in /subsys/net/l2/ppp/ipv6cp.c
* :github:`18397` - [Coverity CID :203512]Memory - corruptions in /subsys/net/l2/ppp/ipv6cp.c
* :github:`18396` - [Coverity CID :203435]Error handling issues in /subsys/net/l2/ppp/fsm.c
* :github:`18395` - [Coverity CID :203471]Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`18394` - [Coverity CID :203464]Memory - corruptions in /subsys/net/l2/ethernet/gptp/gptp_mi.c
* :github:`18393` - [Coverity CID :203541]Integer handling issues in /subsys/net/ip/6lo.c
* :github:`18392` - [Coverity CID :203494]Integer handling issues in /subsys/fs/littlefs_fs.c
* :github:`18391` - [Coverity CID :203403]Memory - corruptions in /subsys/disk/disk_access_usdhc.c
* :github:`18390` - [Coverity CID :203441]Null pointer dereferences in /subsys/bluetooth/mesh/transport.c
* :github:`18389` - [Coverity CID :203396]Null pointer dereferences in /subsys/bluetooth/mesh/access.c
* :github:`18388` - [Coverity CID :203545]Memory - corruptions in /subsys/bluetooth/host/smp.c
* :github:`18387` - [Coverity CID :203536]Memory - corruptions in /subsys/bluetooth/host/smp.c
* :github:`18385` - [Coverity CID :203534]Memory - corruptions in /subsys/bluetooth/host/hci_core.c
* :github:`18384` - [Coverity CID :203495]Control flow issues in /subsys/bluetooth/host/gatt.c
* :github:`18383` - [Coverity CID :203447]Memory - corruptions in /subsys/bluetooth/host/att.c
* :github:`18382` - [Coverity CID :203524]Incorrect expression in /subsys/bluetooth/controller/ticker/ticker.c
* :github:`18381` - [Coverity CID :203393]Control flow issues in /subsys/bluetooth/controller/ll_sw/ull_conn.c
* :github:`18380` - [Coverity CID :203461]Null pointer dereferences in /subsys/bluetooth/controller/ll_sw/ull.c
* :github:`18379` - [Coverity CID :203493]Control flow issues in /soc/arm/st_stm32/stm32h7/soc_m7.c
* :github:`18377` - [Coverity CID :203535]Error handling issues in /samples/net/sockets/civetweb/src/main.c
* :github:`18376` - [Coverity CID :203462]Error handling issues in /samples/net/sockets/civetweb/src/main.c
* :github:`18375` - [Coverity CID :203440]Null pointer dereferences in /samples/net/nats/src/main.c
* :github:`18374` - [Coverity CID :203523]Error handling issues in /samples/drivers/counter/alarm/src/main.c
* :github:`18372` - [Coverity CID :203543]Memory - illegal accesses in /samples/bluetooth/eddystone/src/main.c
* :github:`18371` - [Coverity CID :203542]Error handling issues in /lib/posix/pthread.c
* :github:`18370` - [Coverity CID :203469]Memory - corruptions in /drivers/wifi/eswifi/eswifi_core.c
* :github:`18369` - [Coverity CID :203425]Memory - corruptions in /drivers/wifi/eswifi/eswifi_core.c
* :github:`18368` - [Coverity CID :203411]Memory - corruptions in /drivers/wifi/eswifi/eswifi_core.c
* :github:`18367` - [Coverity CID :203409]Memory - corruptions in /drivers/wifi/eswifi/eswifi_core.c
* :github:`18366` - [Coverity CID :203452]Control flow issues in /drivers/timer/xlnx_psttc_timer.c
* :github:`18365` - [Coverity CID :203434]Control flow issues in /drivers/timer/xlnx_psttc_timer.c
* :github:`18364` - [Coverity CID :203467]Memory - corruptions in /drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`18363` - [Coverity CID :203492]Memory - corruptions in /drivers/net/ppp.c
* :github:`18362` - [Coverity CID :203412]Control flow issues in /drivers/net/ppp.c
* :github:`18361` - [Coverity CID :203515]Uninitialized variables in /drivers/flash/flash_stm32l4x.c
* :github:`18360` - [Coverity CID :203531]Memory - corruptions in /drivers/espi/espi_mchp_xec.c
* :github:`18359` - [Coverity CID :203521]Memory - illegal accesses in /drivers/espi/espi_mchp_xec.c
* :github:`18358` - [Coverity CID :203497]Memory - corruptions in /drivers/espi/espi_mchp_xec.c
* :github:`18357` - [Coverity CID :203485]Memory - illegal accesses in /drivers/espi/espi_mchp_xec.c
* :github:`18356` - [Coverity CID :203430]Integer handling issues in /drivers/espi/espi_mchp_xec.c
* :github:`18355` - [Coverity CID :203466]Memory - illegal accesses in /drivers/can/can_mcux_flexcan.c
* :github:`18354` - [Coverity CID :203449]Memory - illegal accesses in /boards/posix/native_posix/cmdline_common.c
* :github:`18353` - [Coverity CID :203522]Null pointer dereferences in /arch/arm/core/cortex_m/fault.c
* :github:`18352` - devicetree: support multiple values in io-channels
* :github:`18334` - DNS resolution is broken for some addresses in master/2.0-pre
* :github:`18326` - Bluetooth: Mesh: LPN: Remove msg from cache on rejection Enhancement
* :github:`18320` - tests/drivers/can/api/peripheral.can fail on FRDM-K64F
* :github:`18306` - Unable to reconnect paired devices with controller privacy disabled (host privacy enabled)
* :github:`18301` - menuconfig target can corrupt build configuration
* :github:`18298` - Unable to build mesh-demo for BBC micro:bit
* :github:`18292` - tests/net/lib/dns_addremove failed on frdm_k64f board.
* :github:`18284` - tests/kernel/fp_sharing/float_disable and tests/kernel/mutex/mutex_api and tests/kernel/sleep  fails on twr_ke18f
* :github:`18283` - tests/crypto/tinycrypt_hmac_prng and tests/crypto/mbedtls  and tests/posix/fs  build failure on mimxrt1015_evk
* :github:`18281` - tests/kernel/mem_protect/protection fails on LPC54114_m4
* :github:`18272` - xtensa ASM2 has no support for dynamic interrupts
* :github:`18269` - Documentation improvement for macOS
* :github:`18263` - flash sector erase fails on stm32f412
* :github:`18261` - CONFIG_TIMESLICING=n breaks kernel
* :github:`18258` - sys_get_be64() is missing from sys/byteorder.h
* :github:`18253` - Network samples echo_client doesn't work if only IPv4 enabled.
* :github:`18246` - Build failures with current tree
* :github:`18238` - drivers/modem/modem_socket: modem_socket_put() sock_fd parameter not handled correctly
* :github:`18232` - drivers: can: mcux: TX callback and can_detach don't work propperly
* :github:`18231` - MCUBoot not cleaning up properly before booting Zephyr?
* :github:`18228` - stm32h747i_disco: Fix SYS_CLOCK_TICKS_PER_SEC
* :github:`18212` - README file missing for civetweb sample
* :github:`18205` - tests/net/socket/udp fails when code coverage is enabled on qemu_x86
* :github:`18202` - Disable Duplicate scan, no longer available
* :github:`18201` - bug: west flash with --hex-file param used to work w/o path specified
* :github:`18198` - SDK 0.10.2 rv32m1_vega samples/subsys/logging/logger build fails
* :github:`18194` - [zephyr 1.14][MESH/NODE/CFG/HBP/BV-05-C] Zephyr does not send Heartbeat message on friendship termination
* :github:`18188` - [zephyr 1.14] Re-enabling CCC gets broken when used along with Robust Caching
* :github:`18183` - [zephyr 1.14][GATT/SR/GAS/BV-07-C] GATT Server does not inform change-unaware client about DB changes
* :github:`18181` - Some platforms(e.g. sam_e70_xplained) will be flashed failure if the platforms have not generated HEX file although they are built successfully.
* :github:`18178` - BLE Mesh When Provisioning Use Input OOB Method
* :github:`18171` - gen_defines creates identical labels for multicell pwms definition
* :github:`18155` - i2c_ll_stm32_v1: I2C_CR1:STOP is not cleared
* :github:`18154` - Qemu: mps2+: missing documentation
* :github:`18150` - [zephyr 1.14] Host does not change the RPA
* :github:`18141` - arc: the caculation of exception stack is wrong
* :github:`18140` - xtensa passes NULL esf on fatal error
* :github:`18132` - getting_started should indicate upgrade rather than just install west
* :github:`18131` - devicetree should check input against declared type
* :github:`18092` - Assert in BT controller on RPA timeout
* :github:`18090` - [zephyr 1.14][MESH/NODE/FRND/FN/BV-08-C] Mesh Friend queues more messages than indicates it's Friend Cache
* :github:`18080` - LWM2M bootstrap issue
* :github:`18059` - k_busy_wait passed milliseconds instead of microseconds
* :github:`18052` - z_fatal_error missing log_strdup
* :github:`18048` - [zephyr 1.14] Zephyr with privacy does not disconnect device with unresolvable RPA
* :github:`18042` - Only corporate members can join the slack channel
* :github:`18034` - It's impossible to build Zephyr via cmake/make with west 0.6.0 installed
* :github:`18029` - why kconfiglib.py doesn't throw error for file drivers/serial/Kconfig.nrfx
* :github:`18021` - Socket vtable can access null pointer callback function
* :github:`18019` - BT scan via shell fatal error
* :github:`18013` - BLE Mesh On Net Buffer free issue
* :github:`18011` - arc:  the offset generation of accl_regs is wrong
* :github:`18009` - Dead link in documentation
* :github:`18005` - BLE Mesh When Friend Clear Procedure Timeout
* :github:`18002` - Flash using open source stlink, instead of SEGGER jlink?
* :github:`17997` - fix extern "C" use throughout Zephyr
* :github:`17996` - BUILD_ASSERT not active in three of five shippable platforms
* :github:`17990` - BLE Mesh When IV update test procedure
* :github:`17979` - Security level cannot be elevated after re-connection with privacy
* :github:`17977` - BLE Mesh When IV Update Procedure
* :github:`17971` - [zephyr 1.14] Unable to register GATT service that was unregistered before
* :github:`17967` - drivers/pwm/pwm_api test failed on frdm_k64f board.
* :github:`17965` - kernel/sleep/ test failed on reel_board.
* :github:`17962` - BLE Mesh Recommended memory allocation due to who is assigned who releases the strategy
* :github:`17956` - Is POSIX I/O supported on peripheral?
* :github:`17951` - RFC: update FS API for readdir consistency
* :github:`17948` - Bluetooth: privacy: Reconnection issue
* :github:`17944` - [zephyr 1.14]  LE Enhanced Connection Complete indicates Resolved Public once connected to Public peer address
* :github:`17936` - Bluetooth: Mesh: The canceled buffer is not free, causing a memory leak
* :github:`17932` - BLE Mesh When Friend Send Seg Message To LPN
* :github:`17926` - CAN | nrf52 | device tree error: zephyrproject/zephyr/dts/bindings/can/microchip,mcp2515.yaml (in 'reg'): 'category' from !included file overwritten ('required' replaced with 'optional')
* :github:`17923` - SPI1 on nrf52_pca10040 is dead by default
* :github:`17922` - Driver: modem helper should make it easier to implement a modem
* :github:`17920` - Bluetooth: Security problem
* :github:`17907` - BLE Mesh when resend use GATT bearer
* :github:`17899` - tests/kernel/mem_protect/stackprot/kernel.memory_protection fails on nsim_em
* :github:`17897` - k_busy_wait not working when using 32KHz timer driver
* :github:`17891` - fs/nvs: nvs_init can hang if no nvs_ate available
* :github:`17882` - [zephyr 1.14]  Database Out of Sync error is not returned as expected
* :github:`17880` - Unable to re-connect to privacy enabled peer when using stack generated Identity
* :github:`17876` - BME680 sensor sample not building
* :github:`17870` - Incorrect report received lenght and offset in async API
* :github:`17869` - Unlocking nested k_sched_lock() cause forced preemption
* :github:`17864` - cpp_synchronization sample not working on nucleo_l476rg
* :github:`17861` - Tester application lacks BTP Discover All Primary Services handler
* :github:`17857` - GATT: Incorrect byte order for GATT database hash
* :github:`17853` - kernel panic in tests/kernel/sched/schedule_api
* :github:`17851` - riscv/m2gl025: timer tests broken
* :github:`17843` - Bluetooth: controller: v1.14.x release conformance test failures
* :github:`17821` - Mesh Bug on access.c
* :github:`17820` - Mesh  bug report In access.c
* :github:`17816` - LVGL V5.3 build error if CONFIG_LVGL_COLOR_16_SWAP=y
* :github:`17812` - pthread_cond_timedwait interprets timeout wrong
* :github:`17809` - Bluetooth Mesh message cached too early when LPN
* :github:`17802` - [zephyr 1.14] Address type 0x02 is used by LE Create Connection in device privacy mode
* :github:`17800` - Bluetooth: GATT: Write Without Reponse to invalid handle asserts
* :github:`17794` - Timeutil_api test fails with sanitycheck on iotdk board.
* :github:`17790` - MEC1501 configure warnings in eSPI (dts)
* :github:`17789` - Bluetooth: host: conn.c missing parameter copy
* :github:`17787` - openocd unable to flash hello_world to cc26x2r1_launchxl
* :github:`17784` - failing network tests with code coverage enabled in qemu_x86 not failing when run with gdb
* :github:`17783` - network tests failing with code coverage enabled in qemu_x86 (coverage.c)
* :github:`17782` - network tests failing with 'unexpected eof' with code coverage enabled in qemu_x86 (TSS)
* :github:`17778` - Microchip XEC rtos Timer breaks gpios and k_sleep?
* :github:`17772` - Compilation error of soc/arm/nxp_imx/rt/soc.c
* :github:`17764` - Broken link to latest development version of docs
* :github:`17751` - build is broken for mec15xxevb_assy6853
* :github:`17738` - STATIC_ASSERT no longer defined when CONFIG_NEWLIB_LIBC is enabled
* :github:`17732` - cannot use bt_conn_security in connected callback
* :github:`17727` - how to make zephyr as a ble mesh provisioner to other BLE based board having ble mesh
* :github:`17726` - How to make Zephyr as a ble mesh provisioner ?
* :github:`17723` - Advertiser never clears state flags
* :github:`17715` - Missing 'reg-names' string in riscv32-litex-vexriscv.dtsi
* :github:`17703` - Add prop 'clock-frequency' to STM32  targets
* :github:`17697` - usb_dc_nrfx driver gets stuck after USB3CV HID Tests are performed on hid sample
* :github:`17692` - Proper way for joining a multicast group (NRF52840/OpenThread)
* :github:`17690` - samples/subsys/shell/fs does not work?
* :github:`17671` - ADC not supported by nrf52840_pca10059 DTS file
* :github:`17665` - Missing 'label' on most nodes with 'compatible = "pwm-leds"'
* :github:`17664` - Missing 'clocks' on most nodes with 'compatible = "nxp,kinetis-usbd"'
* :github:`17663` - Missing 'label' on most nodes with 'compatible = "fixed-clock"'
* :github:`17662` - Missing 'label' on nodes with 'compatible = "jedec,spi-nor"'
* :github:`17657` - subsis/disk/disk_access_spi_sdhc: response data eaten by idle byte consumption
* :github:`17650` - devicetree: missing preferred instance presence macro
* :github:`17635` - UnicodeDecodeError is raised while executing west build
* :github:`17630` - efr32mg_sltb004a tick clock error
* :github:`17613` - POSIX arch: occasional failures of tests/kernel/sched/schedule_api on CI
* :github:`17608` - NMP timeout when uploading image with mcumgr over BLE under Linux
* :github:`17600` - Enable Mesh Friend support in Bluetooth tester application
* :github:`17595` - two userspace tests fail if stack canaries are enabled in board configuration
* :github:`17591` - ARM: z_arch_except() is too permissive in user mode
* :github:`17590` - ARC: unable to induce kernel_oops or stack check fail errors from user mode
* :github:`17586` - stack canary storage area should be read-only to user mode?
* :github:`17584` - k_mutex is not SMP-safe
* :github:`17581` - linker script packing failure with subsys/fb fonts and native_posix_64
* :github:`17564` - Missing 'stdlib.h' include when C++ standard library is used.
* :github:`17559` - Assertion failed: zephyr toolchain variant invalid
* :github:`17557` - samples/net/wifi fails to build on cc3220sf_launchxl
* :github:`17555` - CONFIG_LOG doesn't work on x86_64 due to no working backends
* :github:`17554` - pyocd flash does not support the -b option for board ID so that the sanitycheck script can’t specified the board ID to flash when the host connected with multiple boards.
* :github:`17550` - SimpleLink WiFi host driver should revert back to using static memory model
* :github:`17547` - incorrect documentation for debugging nsim_em / nsim_sem
* :github:`17543` - dtc version 1.4.5 with ubuntu 18.04 and zephyr sdk-0.10.1
* :github:`17534` - Race condition in GATT API.
* :github:`17532` - List of missing device tree properties with 'category: required' in the binding for the node
* :github:`17525` - L2CAP: On insufficient authentication error received, Zephyr does unauthenticated pairing
* :github:`17511` - _bt_br_channels_area  section missing in sanitycheck whitelist
* :github:`17508` - RFC: Change/deprecation in display API
* :github:`17507` - system timer drivers using the "new" API should not be configured with CONFIG_TICKLESS_KERNEL
* :github:`17497` - Bluetooth: Mesh: How to Write provision and configure data to flash?
* :github:`17488` - CDC_ACM USB on nRF device fails after suspend
* :github:`17487` - v1.14-branch: SDK 0.10.1 support?
* :github:`17486` - nRF52: SPIM: Errata work-around status?
* :github:`17485` - sanitycheck: Over-zealous checking for binary sections
* :github:`17483` - mec15xxevb_assy6853 board documentation is erroneous
* :github:`17480` - holyiot_yj16019 cannot compile IEEE 802.15.4 L2
* :github:`17478` - net/buf test fails for qemu_x86_64
* :github:`17475` - [RTT] compile error when RTT console enabled
* :github:`17463` - Bluetooth: API limits usage of MITM flags in Pairing Request
* :github:`17460` - sample: gui/lvgl
* :github:`17450` - net: IPv6/UDP datagram with unspecified addr and zero hop limit causes Zephyr to quit
* :github:`17439` - sanitycheck: nrf52840-pca10056 (dev kit) picks up sample/drivers items which will fail due to missing HW
* :github:`17427` - net: IPv4/UDP datagram with zero src addr and TTL causes Zephyr to segfault
* :github:`17419` - arch:arc: remove the extra vairables used in irq and exception handling
* :github:`17415` - Settings Module - settings_line_val_read() returning -EINVAL instead of 0 for deleted setting entries
* :github:`17410` - k_work should have a user_data field
* :github:`17408` - LwM2M: engine doesn't support offloaded TLS stack
* :github:`17401` - LwM2M: requires that CONFIG_NET_IPV* be enabled (can't use 100% offloaded IP stack)
* :github:`17399` - LwM2M: Can't use an alternate mbedtls implementation
* :github:`17381` - DTS compatible property processing assumes specific driver exists
* :github:`17379` - Wrong hex file generated for MCUboot
* :github:`17378` - samples: net: echo-server: no return packet
* :github:`17376` - device tree diagnostic failure in enum
* :github:`17368` - Time Slicing cause system sleep short time
* :github:`17366` - Regression: sanitycheck coverage generation defaults will error out for POSIX arch targets
* :github:`17365` - Documentation: sanitycheck coverage generation instructions lead to errors and no coverage report for POSIX boards
* :github:`17363` - SPI driver does not reset master mode fault on STM32
* :github:`17353` - Configuring with POSIX_API disables NET_SOCKETS_POSIX_NAMES
* :github:`17342` - CODEOWNERS is broken (III)
* :github:`17340` - Bluetooth Mesh: Unable to receive messages when RPL is full.
* :github:`17338` - kernel objects address check in elf_helper.py
* :github:`17313` - drivers: usb_dc_mcux_ehci does not compile
* :github:`17307` - device tree bindings disallow strings that begin with integers
* :github:`17294` - DB corruption when adding/removing service
* :github:`17288` - Bluetooth: controller: Fix handling of L2CAP start frame with zero PDU length
* :github:`17284` - unrecognized binary sections: ['_settings_handlers_area']
* :github:`17281` - sanitycheck error on mimxrt1050_evk samples/gui/lvgl/sample.gui.lvgl with no network connection
* :github:`17280` - How to use UART1 for nrf52_pca10040
* :github:`17277` - no code coverage for k_float_disable() in user mode
* :github:`17266` - CDC_ACM USB not recognized by windows as serial port
* :github:`17262` - insufficient code coverage for lib/os/base64.c
* :github:`17251` - w25q: erase operations must be erase-size aligned
* :github:`17250` - After first GC operation the 1st sector had become scratch and the 2nd sector had became write sector.
* :github:`17231` - Posix filesystem wrapper leaks internal FS desc structures
* :github:`17226` - [Coverity CID :61894]Security best practices violations in /home/aasthagr/zephyrproject/modules/crypto/mbedtls/library/rsa.c
* :github:`17225` - [Coverity CID :61905]Insecure data handling in /home/aasthagr/zephyrproject/modules/crypto/mbedtls/library/ssl_cli.c
* :github:`17224` - [Coverity CID :78542]Null pointer dereferences in /home/aasthagr/zephyrproject/modules/crypto/mbedtls/library/rsa.c
* :github:`17223` - [Coverity CID :149311]Control flow issues in /home/aasthagr/zephyrproject/modules/crypto/mbedtls/library/cipher.c
* :github:`17222` - [Coverity CID :173947]Uninitialized variables in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cborattr/src/cborattr.c
* :github:`17221` - [Coverity CID :173979]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/tinycbor/src/cborparser.c
* :github:`17220` - [Coverity CID :173986]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cborattr/src/cborattr.c
* :github:`17219` - [Coverity CID :174014]Incorrect expression in /home/aasthagr/zephyrproject/modules/lib/tinycbor/src/cborparser.c
* :github:`17218` - [Coverity CID :186031]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cmd/fs_mgmt/src/fs_mgmt.c
* :github:`17217` - [Coverity CID :186038]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cmd/img_mgmt/src/img_mgmt.c
* :github:`17216` - [Coverity CID :186052]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cmd/fs_mgmt/src/fs_mgmt.c
* :github:`17215` - [Coverity CID :186054]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cmd/img_mgmt/src/img_mgmt_state.c
* :github:`17214` - [Coverity CID :186060]Control flow issues in /home/aasthagr/zephyrproject/modules/lib/mcumgr/cmd/img_mgmt/src/img_mgmt_state.c
* :github:`17213` - [Coverity CID :186188]Memory - illegal accesses in /home/aasthagr/zephyrproject/modules/lib/open-amp/open-amp/lib/rpmsg/rpmsg.c
* :github:`17212` - [Coverity CID :187076]Control flow issues in /home/aasthagr/zephyrproject/modules/hal/silabs/gecko/emlib/src/em_cmu.c
* :github:`17211` - [Coverity CID :188746]Memory - illegal accesses in /home/aasthagr/zephyrproject/modules/hal/cypress/PDL/3.1.0/drivers/source/cy_syslib.c
* :github:`17210` - [Coverity CID :190643]Error handling issues in /home/aasthagr/zephyrproject/modules/debug/segger/systemview/SEGGER_SYSVIEW.c
* :github:`17209` - [Coverity CID :190927]Uninitialized variables in /home/aasthagr/zephyrproject/modules/lib/open-amp/open-amp/lib/remoteproc/remoteproc.c
* :github:`17208` - [Coverity CID :190941]Insecure data handling in /home/aasthagr/zephyrproject/modules/crypto/mbedtls/library/ssl_tls.c
* :github:`17207` - [Coverity CID :190963]Code maintainability issues in /home/aasthagr/zephyrproject/modules/fs/nffs/src/nffs_restore.c
* :github:`17206` - [Coverity CID :190975]Memory - illegal accesses in /home/aasthagr/zephyrproject/modules/lib/open-amp/open-amp/lib/include/openamp/rpmsg.h
* :github:`17205` - [Coverity CID :190999]Insecure data handling in /home/aasthagr/zephyrproject/modules/lib/open-amp/open-amp/lib/rpmsg/rpmsg_virtio.c
* :github:`17204` - [Coverity CID :191000]Memory - corruptions in /home/aasthagr/zephyrproject/modules/lib/open-amp/open-amp/lib/remoteproc/remoteproc.c
* :github:`17203` - [Coverity CID :198951]Code maintainability issues in /home/aasthagr/zephyrproject/modules/debug/segger/systemview/SEGGER_SYSVIEW.c
* :github:`17202` - [Coverity CID :199436]Uninitialized variables in /subsys/net/lib/sockets/sockets.c
* :github:`17201` - [Coverity CID :199437]Null pointer dereferences in /tests/net/ip-addr/src/main.c
* :github:`17200` - [Coverity CID :199438]Memory - illegal accesses in /drivers/interrupt_controller/exti_stm32.c
* :github:`17190` - net-mgmt should pass info element size to callback
* :github:`17188` - k_uptime_delta returns wrong times
* :github:`17182` - "tests/subsys/usb/device/" fails on reel_board.
* :github:`17177` - ARM: userspace/test_bad_syscall fails on ARMv8-M
* :github:`17176` - deprecated counter_set_alarm is referenced in documentation
* :github:`17172` - insufficient code coverage for lib/os/mempool.c
* :github:`17170` - x86_64 crash with spinning child thread
* :github:`17167` - ARC crash with spinning user thread
* :github:`17166` - arch/x86: eliminate support for CONFIG_REALMODE
* :github:`17158` - Bluetooth: Update PICS for latest PTS 7.4.1
* :github:`17147` - UARTE device has no API when run on nrf52810
* :github:`17114` - drivers: usb_dc_stm32 broken after west update
* :github:`17111` - nucleo_f030r8 build error
* :github:`17095` - Building with Xtensa toolchain fails
* :github:`17092` - Bluetooth: GAP/IDLE/NAMP/BV-01-C requires Read by UUID
* :github:`17065` - Misspelled CONFIG use in is_rodata() for CONFIG_RISCV32
* :github:`17063` - tests/kernel/tickless/tickless_concept (qemu_x86) fails even outside of CI
* :github:`17057` - Bluetooth: Mesh: Implementation doesn't conform to latest errata and 1.0.1 version
* :github:`17055` - net: Incorrect data length after the connection is established
* :github:`17053` - Bluetooth Mesh: Periodic Publishing
* :github:`17043` - compile "hello-world" sample for esp32 board error
* :github:`17041` - [1.14] Bluetooth: Mesh: RPL handling is not in line with the spec
* :github:`17038` - code relocation generating different memory layout cause user mode not working
* :github:`17037` - MQTT with TLS support over SOCKS
* :github:`17031` - Compiler warnings in settings module in Zephyr 1.14
* :github:`17017` - #16827 Breaks Ethernet on FRDM-K64F
* :github:`17015` - #15910 Breaks Ethernet on STM32F7
* :github:`17013` - Bluetooth: Add error reason to pairing failed callbacks
* :github:`17007` - USB mass demo format fails on frdm_k64f
* :github:`16989` - Errors when building application in Eclipse
* :github:`16971` - DFU supported for hci_uart sample ?
* :github:`16946` - characteristic value handle vs characteristic handle
* :github:`16944` - Insufficient test coverage for lib/os/json.c
* :github:`16943` - Missing test coverage for lib/os/crc*.c
* :github:`16934` - drivers: flash: stm32l4: Erase wait time is not enough
* :github:`16931` - logging: Assertion when in panic mode
* :github:`16926` - NXP LPC54102（LPC54114）: question about dual core(M4 and M0) running on flash
* :github:`16924` - Add DNS server added/removed events to net_mgmt
* :github:`16915` - stack_sentinel: rare ASSERTION FAIL [!(z_arch_curr_cpu()->nested != 0U)] @ ZEPHYR_BASE/kernel/thread.c:429  Threads may not be created in ISRs
* :github:`16911` - tests/kernel/sched/schedule_api crash on qemu_x86_64 with SCHED_MULTIQ enabled
* :github:`16907` - native_posix build fails with X86_64 on macOS
* :github:`16901` - No test coverage for CONFIG_ZERO_LATENCY_IRQS
* :github:`16899` - fs/nvs: might loop-up if storage was not erased before first run
* :github:`16898` - bluetooth stack change affects timer behavior
* :github:`16894` - ARM: alignment problems in libc/newlib
* :github:`16893` - Bluetooth: Multiple local IDs, privacy problem
* :github:`16887` - ARM: threads' privilege stack alignment is not optimal
* :github:`16872` - Bluetooth: LL: Peripheral crashes after a while with multiple Centrals
* :github:`16864` - Bluetooth: Mesh: Rx buffer exhaustion causes deadlock
* :github:`16862` - arc: -mfpu=fpuda_all is not set when CONFIG_FLOAT is configured
* :github:`16861` - nRF52: UARTE: Data corruption right after resuming device
* :github:`16830` - Bluetooth: controller: Follow up on ticker conflict resolution
* :github:`16823` - k_busy_wait() on nRF5x boards isn't waiting long enough
* :github:`16803` - Deferred bt_conn_tx causes sysworkq deadlock
* :github:`16799` - Bluetooth: L2CAP: Interpretation of SCID and DCID in Disconnect is wrong
* :github:`16797` - [Zephyr v1.14.0] stm32: MCUboot bootloader results in Hardware exception
* :github:`16793` - kernel timeout_list repeatedly add a thread
* :github:`16787` - [Coverity CID :198945]Null pointer dereferences in /subsys/bluetooth/controller/ll_sw/ull_conn.c
* :github:`16786` - [Coverity CID :198946]Memory - corruptions in /subsys/bluetooth/host/gatt.c
* :github:`16785` - [Coverity CID :198949]Error handling issues in /tests/net/socket/register/src/main.c
* :github:`16779` - [Zephyr v1.14] ARM: fix the start address of MPU guard in stack-fail checking (when building with no user mode)
* :github:`16778` - Build failures in various mimxrt boards
* :github:`16773` - DTS: generated output for each flash-controller
* :github:`16770` - Complete FP support for ARC
* :github:`16761` - nrf52840 usb driver with openthread
* :github:`16760` - K_THREAD_STACK_EXTERN() confuses gen_kobject_list.py
* :github:`16750` - counter:  lack of interrupt when CC=0
* :github:`16749` - IRQ_CONNECT and irq_enable calls in the SiFive UART driver is misconfigured
* :github:`16747` - bluetooth: peripheral: RX buffer size issues
* :github:`16746` - boards: nrf52840_pca10059: Configure NFC pins as GPIOs by default
* :github:`16745` - PTHREAD_MUTEX_DEFINE(): don't store into the _k_mutex section
* :github:`16739` - spi: stm32: pinmux: default configuration does not opt for low power consumption
* :github:`16734` - Bluetooth: GATT: Writing 1 byte to a CCC access invalid memory
* :github:`16733` - soc/stm32: Remove useless package digit for STM32 SoC Kconfig symbols
* :github:`16720` - drivers/loapic_timer.c is buggy, needs cleanup
* :github:`16716` - soc: stm32: Is the setting of NUM_IRQS in the F3 series wrong?
* :github:`16707` - Problem with k_sleep
* :github:`16695` - code coverage: kernel/device.c
* :github:`16687` - basic disco sample fails
* :github:`16678` - LPN establishment of Friendship never completes if there is no response to the initial Friend Poll
* :github:`16676` - Settings enhancements
* :github:`16672` - nrf: spi: Excess current
* :github:`16670` - Memory reports do not work when Nordic proprietary LL is selected
* :github:`16661` - Symmetric multiprocessing (SMP) for ARC HS cores
* :github:`16639` - eth: pinging frdm k64f eventually leads to unresponsive ethernet device
* :github:`16634` - GATT indicate API inconsistent when using characteristic declaration attribute as argument
* :github:`16631` - SDK_VERSION
* :github:`16624` - Building Grub fails when using gcc9
* :github:`16623` - Building with Openthread fails
* :github:`16607` - Building hello_world fails for xtensa: xt-xcc ERROR parsing -Wno-address-of-packed-member:  unknown flag
* :github:`16606` - Fault in CPU stats
* :github:`16604` - Zephyr fails to build with CPU load measurement enabled
* :github:`16603` - Bluetooth: Gatt Discovery: BT_GATT_DISCOVER_PRIMARY returns all services while BT_GATT_DISCOVER_SECONDARY returns none
* :github:`16602` - Bluetooth: GATT Discovery: Descriptor Discovery by range Seg Fault
* :github:`16600` - Bluetooth: Mesh: Proxy SAR timeout is not implemented
* :github:`16594` - net: dns: Zephyr is unable to unpack mDNS answers produced by another Zephyr node
* :github:`16584` - [Coverity CID :198863]Error handling issues in /subsys/net/lib/sntp/sntp.c
* :github:`16583` - [Coverity CID :198864]Parse warnings in /subsys/logging/log_backend_rtt.c
* :github:`16582` - [Coverity CID :198865]Null pointer dereferences in /drivers/usb/device/usb_dc_stm32.c
* :github:`16581` - [Coverity CID :198866]Null pointer dereferences in /subsys/net/lib/dns/llmnr_responder.c
* :github:`16580` - [Coverity CID :198867]Parse warnings in /tests/subsys/fs/nffs_fs_api/common/nffs_test_system_01.c
* :github:`16579` - [Coverity CID :198868]Parse warnings in /drivers/watchdog/wdt_qmsi.c
* :github:`16578` - [Coverity CID :198869]Parse warnings in /subsys/shell/shell_rtt.c
* :github:`16577` - [Coverity CID :198870]Error handling issues in /subsys/net/lib/lwm2m/lwm2m_obj_firmware_pull.c
* :github:`16576` - [Coverity CID :198871]Parse warnings in /drivers/i2c/i2c_qmsi_ss.c
* :github:`16575` - [Coverity CID :198872]Parse warnings in /tests/subsys/settings/nffs/src/settings_setup_nffs.c
* :github:`16574` - [Coverity CID :198873]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`16573` - [Coverity CID :198874]Null pointer dereferences in /drivers/usb/device/usb_dc_stm32.c
* :github:`16572` - [Coverity CID :198875]Memory - corruptions in /drivers/flash/flash_simulator.c
* :github:`16571` - [Coverity CID :198876]Parse warnings in /tests/subsys/fs/multi-fs/src/test_nffs.h
* :github:`16570` - [Coverity CID :198877]Null pointer dereferences in /subsys/net/ip/net_if.c
* :github:`16569` - [Coverity CID :198878]Error handling issues in /samples/net/sockets/echo_server/src/tcp.c
* :github:`16568` - [Coverity CID :198879]Parse warnings in /tests/subsys/fs/fat_fs_dual_drive/src/test_fat_mount.c
* :github:`16567` - [Coverity CID :198880]Possible Control flow issues in /samples/net/lwm2m_client/src/lwm2m-client.c
* :github:`16566` - [Coverity CID :198881]Parse warnings in /drivers/serial/uart_qmsi.c
* :github:`16565` - [Coverity CID :198882]Parse warnings in /drivers/console/rtt_console.c
* :github:`16564` - [Coverity CID :198883]Parse warnings in /drivers/gpio/gpio_qmsi_ss.c
* :github:`16563` - [Coverity CID :198884]Parse warnings in /drivers/counter/counter_qmsi_aon.c
* :github:`16524` - FXOS8700 is not well supported in twr_ke18f
* :github:`16519` - USAGE FAULT occurs when i2c_write is called
* :github:`16518` - USB_UART_DTR_WAIT not working on nrf52840_pca10059
* :github:`16508` - tests/subsys/storage/flash_map  Instruction bus error on frdmk64 board
* :github:`16506` - tests/posix/fs missing ff.h
* :github:`16501` - Code Coverage for qemu_x86 is not getting generated due to a build error
* :github:`16493` - [Coverity CID :198640]Resource leaks in /tests/net/socket/register/src/main.c
* :github:`16492` - [Coverity CID :198644]Incorrect expression in /tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`16487` - tests/kernel/timer/timer_api/kernel.timer  sporadically (high frequency) fails in CI on qemu-xtensa
* :github:`16483` - net: ipv6: udp: Zephyr replies to datagram with illegal checksum 0
* :github:`16478` - Bluetooth: Improper bonded peers handling
* :github:`16470` - Superfluous USB suspend after USB configured
* :github:`16463` - tests/subsys/settings/fcb_init fails on second run
* :github:`16453` - sockets: getaddrinfo: AF_UNSPEC handling was recently broken
* :github:`16432` - Weird link error of the console sample!
* :github:`16428` - samples/gui/lvgl does not work on PCA10056
* :github:`16426` - Missing included dependencies in many header files
* :github:`16419` - Bluetooth: XTAL feature regression
* :github:`16418` - drivers: watchdog: sam0: check if timeout is valid
* :github:`16417` - issues with can filter mode set
* :github:`16416` - sram size for RT1015 and RT1020 needs to be update.
* :github:`16415` - Build errors with C++
* :github:`16414` - Backport west build --pristine
* :github:`16413` - Missing dependency in cmake
* :github:`16412` - on reel_board the consumption increases because TX pin is floating
* :github:`16411` - bad regex for west version check in host-tools.cmake
* :github:`16389` - ninja flash to intel quark d2000 zephyr
* :github:`16387` - STM32wb55 bluetooth samples fail
* :github:`16379` - net: ipv6: udp: Zephyr replies with illegal UDP checksum zero
* :github:`16375` - net: ipv4: udp: Zephyr does not reply to a valid datagram with checksum zero
* :github:`16366` - Build error on QEMU x86 and quark_se_c1000_devboard
* :github:`16365` - lwm2m: enable with CONFIG_NET_RAW_MODE
* :github:`16363` - Error building x_nucleo_iks01a1 sample on nucleo_wb55rg after activating I2C Bus
* :github:`16360` - ARM: Implement configurable MPU-based stack overflow guards
* :github:`16354` - net: ipv6: Zephyr does not reply to fragmented packet
* :github:`16341` - Bluetooth: GATT Server failed to send Service Change Indication
* :github:`16339` - openthread: off-by-one error when calculating ot_flash_offset for settings
* :github:`16327` - doc: networking: overview has out of date info for LwM2M
* :github:`16326` - USB3CV Chapter 9 Tests failures
* :github:`16323` - net: ipv6: tcp: unexpected reply to malformed HBH in TCP/IPv6 SYN
* :github:`16318` - net: Network Offloading: Particle Boron
* :github:`16316` - ST modules organization
* :github:`16313` - LMP Response Timeout / LL Response Timeout (0x22) after ~40s when using LE Secure Connections
* :github:`16307` - cannot move location counter backwards error happen
* :github:`16303` - mbedtls: config-tls-generic.h: MBEDTLS_PLATFORM_NO_STD_FUNCTIONS seems ungrounded
* :github:`16296` - dts generation in correct for 2 registers and no-size
* :github:`16289` - Driver: modem ublox-sara-r4 not compiling
* :github:`16278` - [Zepyhr v1.14.0] Unable to update FW with mcumgr over UART
* :github:`16276` - net: ipv4: Zephyr replies to link-layer broadcast packet
* :github:`16275` - setting_init crashes on qemu_x86 when setting BT_SETTINGS
* :github:`16273` - Calling k_work_submit can reenable interrupts
* :github:`16272` - bluetooth mesh proxy filter
* :github:`16268` - Add 32K RAM support for nRF51822 REVC/microbit board
* :github:`16257` - net: icmpv4: Zephyr sends echo reply with multicast source address
* :github:`16243` - std::vector push_back() not working correctly
* :github:`16240` - USB Bluetooth and DFU classes cannot be enabled simultaneously on nRF52840
* :github:`16238` - k_cycle_get_32() API is useless in some Zephyr configurations
* :github:`16236` - [docs] Windows installation guide, git part, is installed with non-intended configuration
* :github:`16234` - tests/benchmarks/latency_measure can not calculate the real time thread switch for twr_ke18f
* :github:`16229` - tests/kernel/common fails at test_atomic on twr_ke18f board
* :github:`16227` - Zephyr env: unset var in conditional activation
* :github:`16226` - ARM: IsInIsr(): inconsistencies between doc and implementation
* :github:`16225` - tests/kernel/msgq/msgq_api twr_ke18f fails with assert
* :github:`16224` - tests/subsys/storage/flash_map meet mpu hardfault in twr_ke18f board.
* :github:`16216` - tests/kernel/timer/timer_api fails on nrf51_pca10028 board
* :github:`16215` - FIFO queue data seems to get overwritten
* :github:`16211` - NVS: sector erase at startup (2-sectors configuration)
* :github:`16204` - Build STM32 : generate hex file fail
* :github:`16191` - boards/arm/{olimexino_stm32, stm32_min_dev}: USB pinmux setup is skipped
* :github:`16185` - Compile error using entropy.h in C++ code
* :github:`16177` - STM32: Could not compile with CONFIG_PINMUX=n
* :github:`16170` - CI fails because warning in LOG_ERR() in drivers/i2s_ll_stm32.c
* :github:`16164` - [Coverity CID :198584]Uninitialized variables in /drivers/led/ht16k33.c
* :github:`16163` - [Coverity CID :198587]Incorrect expression in /tests/subsys/usb/desc_sections/src/desc_sections.c
* :github:`16162` - [Coverity CID :198588]Control flow issues in /drivers/gpio/gpio_cc13xx_cc26xx.c
* :github:`16161` - [Coverity CID :198589]Control flow issues in /drivers/i2c/i2c_sam0.c
* :github:`16160` - [Coverity CID :198590]Control flow issues in /drivers/i2c/i2c_sam0.c
* :github:`16159` - [Coverity CID :198591]Control flow issues in /drivers/sensor/adxl362/adxl362.c
* :github:`16158` - LwM2M: Fix incorrect last_block handling in the firmware write callback
* :github:`16156` - Remove the LWM2M maximum number of instances limitation
* :github:`16155` - drivers: can: wrong value used for filter mode set
* :github:`16154` - Fix various issues with handling of floating values within the LWM2M subsystem
* :github:`16148` - ARM: Enable building with TRUSTED_EXECUTION_SECURE
* :github:`16145` - question: Using OpenThread API in Zephyr application
* :github:`16143` - posix: clock_settime calculates the base time incorrectly
* :github:`16142` - NET: llmnr responder sends malformed packets
* :github:`16141` - posix: CONFIG_POSIX_API and CONFIG_NET_SOCKETS_POSIX_NAMES don't make sense to use together, and conflict when doing so
* :github:`16138` - is this right for clock announcing in every CORE?
* :github:`16132` - The nRF mesh APP report “Invalid Publish Parameters”
* :github:`16110` - net: arp: request from own hardware but different IP address not dropped
* :github:`16107` - Using bt_gatt_read() with 'by_uuid' method returns 3 extra bytes
* :github:`16103` - nrf5 802.15.4 driver requires Log subsys to be enabled
* :github:`16098` - net: arp: sender hardware address not used by ICMP/TCP/UDP
* :github:`16090` - mpu align support for code relocation on non-XIP system
* :github:`16089` - Mcux Ethernet driver does not detect carrier anymore (it's alway on)
* :github:`16080` - Zephyr UART shell crashes on start if main() is blocked
* :github:`16079` - SAM0/SAMR SERIAL subsystem broken?
* :github:`16078` - Shell subsystem or SERIAL no longer works on SAM0/SAMR
* :github:`16072` - boards/up_squared: k_sleep() too long with local APIC timer
* :github:`16054` - Bluetooth sample app 'peripheral' failing to build for nRF52840
* :github:`16052` - Adafruit Trinket M0 Bossac Offset is Wrong
* :github:`16046` - modules are being processed too late.
* :github:`16042` - NDP should be enhanced with Security, RFC 3971
* :github:`16027` - support for no-flash systems
* :github:`16025` - webusb example app not reading data
* :github:`16012` - Source IP address for DHCP renewal messages is unset
* :github:`16010` - Coverage reporting fails on many tests
* :github:`16006` - The ArgonKey board documentation needs to align to the official information
* :github:`16002` - the spi base reg address in arc_iot.dtsi has an error
* :github:`16001` - ARC iotdk supports MPU and fpu in hardware but not enabled in kconfig
* :github:`16000` - We need a CI check for commas in CODEOWNERS
* :github:`15998` - CODEOWNERS is broken (Again)
* :github:`15997` - Fix compile warning in samples/net/sockets/dumb_http_server
* :github:`15996` - tests/kernel/sched/schedule_api/testcase.yaml#kernel.sched.slice_reset fails on nrf52840_pca10056, nrf52_pca10040, nrf51_pca10028
* :github:`15991` - [Coverity CID :198389]Memory - illegal accesses in /subsys/settings/src/settings_runtime.c
* :github:`15990` - [Coverity CID :198390]Memory - illegal accesses in /subsys/settings/src/settings_runtime.c
* :github:`15989` - [Coverity CID :198391]Memory - illegal accesses in /subsys/settings/src/settings_runtime.c
* :github:`15988` - [Coverity CID :198392]Insecure data handling in /tests/net/socket/getaddrinfo/src/main.c
* :github:`15987` - [Coverity CID :198393]Error handling issues in /tests/net/socket/socket_helpers.h
* :github:`15986` - [Coverity CID :198394]Error handling issues in /tests/net/socket/socket_helpers.h
* :github:`15985` - [Coverity CID :198395]Memory - corruptions in /soc/arm/microchip_mec/mec1501/soc.c
* :github:`15983` - Kernel tests assume SYS_CLOCK_TICKS_PER_SEC=100
* :github:`15981` - ARM: k_float_disable() as system call
* :github:`15975` - Openthread - fault with dual network interfaces
* :github:`15971` - Fail to connect sample bluetooth HID with Tizen OS (BT_HCI_ERR_DIFF_TRANS_COLLISION)
* :github:`15970` - samples: microbit pong demo
* :github:`15964` - ARM: Cortex-M: enhance Sharing Floating-Point Registers Mode
* :github:`15961` - bug:  west: 'west flash' doesn't use specified hex file
* :github:`15941` - Stale 1.3.99 documentation under /latest
* :github:`15924` - Bluetooth: PTS: GATT server tests fail after merge of #15524
* :github:`15922` - BLE mesh:The Provisioner APP can't find the micro:bit which is running the mesh sample
* :github:`15918` - stm32f7 GPIO Ports F & G Disabled by Default
* :github:`15917` - USB disconnect/reconnect
* :github:`15916` - [BLE] Mesh example qemu kernel panic
* :github:`15911` - Stack size is smaller than it should be
* :github:`15909` - stm32f7: DTCM included in sram0
* :github:`15906` - WEST ERROR: extension command build was improperly defined
* :github:`15904` - concerns with use of CONFIG_BT_MESH_RPL_STORE_TIMEOUT in examples
* :github:`15893` - code coverage is not tested in CI
* :github:`15884` - tests/net/socket/getaddrinfo fails on mps2_an385
* :github:`15878` - tests/net/lib/mqtt_publisher/net.mqtt.tls fails to build on sam_e70_xplained
* :github:`15877` - all qemu_x86_64 tests hang on Ubuntu 18.04
* :github:`15864` - disk partitioning should not specified in DTS
* :github:`15844` - Network management API should support user space
* :github:`15842` - cdc_acm: stm32: uart_fifo_fill() can't transmit data out
* :github:`15835` - "#if XIP" block in qemu_x86 DTS always evaluates to false
* :github:`15831` - qemu_x86 DTS does not reflect actual emulated hardware layout
* :github:`15827` - ARM: Update ARM CMSIS to latest  version
* :github:`15823` - Build failure for spi_loopback on atsamr21_xpro
* :github:`15817` - nrf52: HFXO is not turned off as expected
* :github:`15814` - [Coverity CID :186196]Unchecked return value in  samples/sensor/lsm6dsl/src/main.c
* :github:`15794` - mps2_an385 crashes if CONFIG_INIT_STACKS=y and CONFIG_COVERAGE=y
* :github:`15789` - Networking documentation missing
* :github:`15778` - [Coverity CID :198001]Control flow issues in /subsys/bluetooth/host/mesh/settings.c
* :github:`15777` - [Coverity CID :198002]Null pointer dereferences in /subsys/net/l2/ethernet/arp.c
* :github:`15776` - [Coverity CID :198003]Error handling issues in /tests/net/net_pkt/src/main.c
* :github:`15775` - [Coverity CID :198005]Memory - corruptions in /subsys/bluetooth/shell/gatt.c
* :github:`15774` - [Coverity CID :198006]Control flow issues in /subsys/bluetooth/host/settings.c
* :github:`15773` - [Coverity CID :198007]Memory - corruptions in /subsys/bluetooth/host/hci_core.c
* :github:`15772` - [Coverity CID :198009]Memory - corruptions in /subsys/bluetooth/shell/gatt.c
* :github:`15771` - [Coverity CID :198010]Control flow issues in /samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app/src/storage.c
* :github:`15770` - [Coverity CID :198011]Incorrect expression in /tests/subsys/usb/desc_sections/src/desc_sections.c
* :github:`15769` - [Coverity CID :198012]Memory - corruptions in /drivers/flash/flash_simulator.c
* :github:`15768` - [Coverity CID :198013]Control flow issues in /subsys/bluetooth/host/mesh/settings.c
* :github:`15767` - [Coverity CID :198014]Memory - corruptions in /drivers/flash/flash_simulator.c
* :github:`15766` - [Coverity CID :198016]Security best practices violations in /subsys/settings/src/settings_runtime.c
* :github:`15765` - [Coverity CID :198018]Control flow issues in /subsys/bluetooth/host/mesh/settings.c
* :github:`15764` - [Coverity CID :198019]Security best practices violations in /subsys/settings/src/settings_runtime.c
* :github:`15763` - [Coverity CID :198021]Control flow issues in /drivers/clock_control/clock_stm32_ll_mp1x.c
* :github:`15762` - [Coverity CID :198022]Security best practices violations in /subsys/settings/src/settings_runtime.c
* :github:`15759` - usb: cdc_acm: uart_line_ctrl_set(dev, LINE_CTRL_DTR, &dtr) should always return 0 if USB port is not opened by host
* :github:`15751` - Incorrect flash map
* :github:`15749` - [question] errors using custom command in CMakeLists.txt
* :github:`15748` - 'ninja flash' does not work for IMXRT1052 target
* :github:`15736` - Generalize and improve async context for SPI, ADC, etc.
* :github:`15734` - Power management doesn't work with CONFIG_I2C=y on nRF52
* :github:`15733` - Bluetooth: controller: Central Encryption setup overlaps Length Request procedure
* :github:`15728` - tests/benchmarks/timing_info: wrong value for context switch duration
* :github:`15720` - "z_clock_elapsed" implementation seems to be missing #linking #sched
* :github:`15719` - tests/ztests/mock/ : Stuck at test_parameter_tests
* :github:`15714` - samples/bluetooth/peripheral: could not connect with disco_l475_iot1 board
* :github:`15710` - [question] how about the current consumption on NRF52DK running power_mgr sample?
* :github:`15709` - CODEOWNERS ignored in GitHub
* :github:`15706` - tunslip6: main: open: No such file or directory
* :github:`15698` - bluetooth: bt_conn: No proper ID handling
* :github:`15696` - [question] why bt_setting is dependant of printk in menuconfig?
* :github:`15679` - Can GPTP support multiple slave nodes
* :github:`15678` - Watchdog peripheral api docs aren't generated correctly.
* :github:`15675` - DTS question about pinmix/GPIO
* :github:`15672` - net: socket send return error(-110) when http request 100 times
* :github:`15668` - Support request: Issue with documentation warning
* :github:`15664` - Zephyr modules failure report
* :github:`15652` - document the mailing list for nightly build results
* :github:`15639` - [question] how to get the bd_addr from scan callback as shown on nrf-connect app?
* :github:`15637` - Support of device tree gpio-map
* :github:`15627` - Application compiled with CONFIG_POSIX_API doesn't have access to POSIX headers
* :github:`15625` - target_compile_features in CMakeLists.txt triggers an error
* :github:`15622` - NXP RT10XX: Load code to ITCM
* :github:`15612` - bt_set_id_addr() to allow public address as argument
* :github:`15608` - [question] my board won't boot without debugger attached but no issue using nordic SDK
* :github:`15607` - nRF52: 2.4 GHz proprietary RF support
* :github:`15606` - trickle.c can't work for multiple triggerings
* :github:`15605` - Unaligned memory access by ldrd
* :github:`15601` - pwm: nRF default prescalar value is wrong
* :github:`15597` - [question] How to include mesh related header files in my own source file
* :github:`15596` - net: Zephyr's SNTP API time precision is not adequate
* :github:`15594` - net shell "net tcp send" command failed when repeated many times
* :github:`15588` - Does zephyr support different time slices for each thread?
* :github:`15587` - Zephyr was unable to find the toolchain
* :github:`15580` - SAMD21 Adafruit examples no longer run on boards
* :github:`15571` - Fix sanitycheck failures for v2m_musca_b1_nonsecure
* :github:`15570` - Unbonded peripheral gets 'Tx Buffer Overflow' when erasing bond on master
* :github:`15565` - undefined references to 'sys_rand32_get'
* :github:`15558` - support for power-of-two MPUs on non-XIP systems
* :github:`15551` - CMake enables -fmacro-prefix-map on GCC 7
* :github:`15549` - [FCB question] Is it true that fcb storage won't overwrite old records which limits the max num?
* :github:`15546` - tests/kernel/mem_protect/protection/: Reached unreachable code
* :github:`15526` - Unhandled identity in bt_conn_create_slave_le
* :github:`15522` - Extra padding in IPv4 link local ARP packets
* :github:`15520` - tests/ztest/mock: test_multi_value_test:  Unused mocked return value
* :github:`15516` - Implementation of CONFIG_MAX_PTHREAD_COUNT
* :github:`15513` - nRF timer unnecessary configuration?
* :github:`15508` - No space to store CCC cfg
* :github:`15507` - NRF52840: usb composite MSC + HID (with CONFIG_ENABLE_HID_INT_OUT_EP)
* :github:`15504` -  Can I use one custom random static bd_addr before provision?
* :github:`15501` - smp_svr build issue
* :github:`15499` - gpio_intel_apl: gpio_pin_read() pin value doesn't match documentation
* :github:`15497` - USB DFU: STM32: usb dfu mode doesn't work
* :github:`15495` - tests/drivers/spi/spi_loopback/peripheral.spi fails to build on several boards
* :github:`15486` - usb composite MSC + HID (with CONFIG_ENABLE_HID_INT_OUT_EP)
* :github:`15483` - add mpu and fpu support for arc iotdk
* :github:`15481` - object_access in common-rom.ld missed GROUP_LINK_IN(ROMABLE_REGION)
* :github:`15477` - Zephyr network stack will up the Ethernet interface after its driver initialized (regardless of actual status)
* :github:`15472` - DNS resolver sample sends only one A query
* :github:`15465` - Fix build failures for test_newlib &   tests/lib/mem_alloc/libraries.libc.newlib w/ARM gcc
* :github:`15451` - doc: settings Misleading examples
* :github:`15448` - help to use zephyr-ninja flash of st_nucleo_l476rg
* :github:`15447` - sanitycheck --coverage -p qemu_x86: Fatal failures with tests/kernel/pipe/pipe/kernel.pipe
* :github:`15446` - ssanitycheck --coverage -p mps2_an385: Some remaing test cases that are still failing
* :github:`15444` - Error initiating sdhc disk
* :github:`15443` - usb_dc_stm32: Missing semaphore initialization and missing pin remapping configuration
* :github:`15419` - reset and halt function
* :github:`15411` - tests/kernel/critical:  Continuous reboot at test_critical
* :github:`15408` - [Coverity CID :197596]Memory - corruptions in /tests/net/lib/mqtt_packet/src/mqtt_packet.c
* :github:`15391` - [Coverity CID :197613]Possible Control flow issues in /subsys/net/ip/net_core.c
* :github:`15374` - PR 15230 introduces test failure for particle_argon
* :github:`15373` - IPv4 link local packets are not sent with ARP ethernet type
* :github:`15355` - Driver for U-Blox SARA modem (used by Particle Boron)
* :github:`15354` - counter: stm32: Issue with LSE clock source selection
* :github:`15339` - RISC-V: RV32M1: Load access fault when accessing GPIO port E
* :github:`15334` - Unable to reset nRF52840 from nRF9160 on pca10090 DK
* :github:`15331` - CONFIG_CODE_DATA_RELOCATION does not work with Cache enabled MCUs.
* :github:`15316` - printf causing usage fault
* :github:`15315` - doc: simplify cmake examples thanks to cmake's new -B option
* :github:`15305` - add QEMU target for armv8-M with MPU support
* :github:`15282` - Enhance networking tests/net/all tests
* :github:`15279` - mempool alignment might cause a memory block allocated twice
* :github:`15272` - sanitycheck reports build errors as "handler crash"
* :github:`15246` - doc: confusion about dtc version
* :github:`15232` - tests/bluetooth/tester fails build if CONFIG_TEST_USERSPACE=n
* :github:`15193` - tests/net/socket/getaddrinfo tests too little
* :github:`15180` - testing flash driver clients in CI
* :github:`15159` - undefined reference to 'bsearch' #stdlib
* :github:`15156` - GH labels reorg
* :github:`15144` - West: how to set up for external modules
* :github:`15139` - implement sys_sem that can reside in user memory
* :github:`15133` - Is the level2 interrupt supported for ARM cortex-M0P core?
* :github:`15119` - GPIO callback not disabled from an interrupt
* :github:`15116` - nrfx_twim: (nRF52) driver unable to perform i2c_burst_write() correctly
* :github:`15115` - ARM: Cortex-M: enhance non-sharing floating point services
* :github:`15074` - ARM: Fix/Enhance Floating Point for ARM Cortex-M architecture
* :github:`15046` - Native_posix: command line handling: Hint users why an option does not exist
* :github:`15003` - init_iface in net_if.c should check api->init
* :github:`14997` - Convert samples/sensor/bme280/src/main.c to use printk instead of printf
* :github:`14970` - samples/drivers/watchdog: Not showing "Waiting for reset..." for nrf boards
* :github:`14918` - olimexino stm32 CAN errors
* :github:`14904` - Sanitycheck report not clear if built or ran a test
* :github:`14828` - ARM: MPU-based HW thread stack protection not working properly when building with CONFIG_FLOAT
* :github:`14826` - USB reset in suspended state
* :github:`14791` - Bluetooth: GATT Notification callbacks should have conn as argument
* :github:`14769` - kernel/userspace.c: Improve code coverage to 100%
* :github:`14744` - ARM: Core Stack Improvements/Bug fixes for 2.0 release
* :github:`14736` - kernel/include/kswap.h: Improve code coverage to 100%
* :github:`14734` - kernel/include/kernel_structs.h: Improve code coverage to 100%
* :github:`14733` - kernel/work_q.c: Improve code coverage to 100%
* :github:`14731` - kernel/userspace_handler.c: Improve code coverage to 100%
* :github:`14730` - kernel/userspace.c: Improve code coverage to 100%
* :github:`14729` - kernel/timer.c: Improve code coverage to 100%
* :github:`14728` - kernel/timeout.c: Improve code coverage to 100%
* :github:`14727` - kernel/thread_abort.c: Improve code coverage to 100%
* :github:`14726` - kernel/thread.c: Improve code coverage to 100%
* :github:`14725` - kernel/system_work_q.c: Improve code coverage to 100%
* :github:`14724` - kernel/stack.c: Improve code coverage to 100%
* :github:`14723` - kernel/sem.c: Improve code coverage to 100%
* :github:`14722` - kernel/sched.c: Improve code coverage to 100%
* :github:`14721` - kernel/queue.c: Improve code coverage to 100%
* :github:`14720` - kernel/poll.c: Improve code coverage to 100%
* :github:`14719` - kernel/pipes.c: Improve code coverage to 100%
* :github:`14718` - kernel/mutex.c: Improve code coverage to 100%
* :github:`14717` - kernel/msg_q.c: Improve code coverage to 100%
* :github:`14716` - kernel/mempool.c: Improve code coverage to 100%
* :github:`14715` - kernel/mem_slab.c: Improve code coverage to 100%
* :github:`14713` - kernel/mem_domain.c: Improve code coverage to 100%
* :github:`14712` - kernel/mailbox.c: Improve coverage to 100%
* :github:`14711` - kernel/idle.c: Improve code coverage to 100%
* :github:`14710` - kernel/errno.c: Improve code coverage to 100%
* :github:`14709` - kernel/device.c: Improve code coverage to 100%
* :github:`14708` - kernel/include/ksched.h: Improve code coverage to 100%
* :github:`14707` - kernel/include/kernel_offsets.h: Improve code coverage to 100%
* :github:`14706` - kernel/include/kernel_internal.h: Imrpove code coverage to 100%
* :github:`14705` - kernel/smp.c: Improve code coverage to 100%
* :github:`14704` - kernel/int_latency_bench.c: Improve code coverage to 100%
* :github:`14703` - kernel/compiler_stack_protect.c: Improve code coverage to 100%
* :github:`14702` - kernel/atomic_c.c : Improve code coverage to 100%
* :github:`14675` - Bluetooth: Controller privacy support (platforms with HW acceleration)
* :github:`14652` - Gitlint is more strict than checkpatch.pl
* :github:`14633` - undefined reference to 'mbedtls_debug_set_threshold' when MBEDTLS_DEBUG is enabled
* :github:`14605` - mimxrt1060_evk cpp_synchronization meets Hardware exception
* :github:`14604` - BLE disconnection caused by channel map request or connection parameter update request
* :github:`14599` - Can you add a ADC sample?
* :github:`14588` - static IP support on cc3220sf_launchxl
* :github:`14547` - Kconfig shell prompt configuration
* :github:`14517` - LPCXpresso55S69 board support
* :github:`14493` - implement Zephyr futexes
* :github:`14467` - New HTTP API implementation
* :github:`14459` - usb: samples: mass: doesn't build with FLASH overlay
* :github:`14292` - Typo "QPSI" in QSPI macros in some stm32 drivers
* :github:`14283` - tests/drivers/watchdog/wdt_basic_api fails on test_wdt_callback_1() for Ardruino and quark_se_c1000_ss_devboard:arc
* :github:`14123` - Particle boards need a board initialization module for antenna configuration
* :github:`14082` - Update Segger host library to V2.52f
* :github:`14037` - Generic device driver object type
* :github:`14034` - Support for PPP protocol
* :github:`13963` - up_squared: evaluate removal of SBL-related special configurations
* :github:`13935` - tests/crypto/rand32/crypto.rand32.random_hw_xoroshiro: Usage fault "Fatal fault in ISR! Spinning..."
* :github:`13897` - CONFIG_LOG_IMMEDIATE leads to unobvious faults in unrelated rotines due to stack overflow
* :github:`13817` -  tests/ztest/test/mock fails to complete on nios2
* :github:`13799` - usb cdc acm fails when writing big chunks of data on stm32
* :github:`13766` - mimxrt1060_evk tests/kernel/fatal meet many unwanted exceptions
* :github:`13749` - Can CONFIG_SOC_WATCH-related code be removed?
* :github:`13610` - kernel: Non-deterministic and very high ISR latencies
* :github:`13602` - How to get the port number for an ephemeral (randomly assigned) port
* :github:`13574` - Missing documentation for fcb and nffs
* :github:`13560` - STM32 USB: netusb: kernel crash when testing example echo_server with nucleo_f412zg  (ECM on Windows)
* :github:`13444` - Build failure when including both socket.h and posix/time.h
* :github:`13441` - optimize x86 userspace page table memory usage
* :github:`13347` - tests/drivers/watchdog/wdt_basic_api fails on test_wdt_callback_1() for Quark SE / arc
* :github:`13316` - Notification enabled before connection
* :github:`13288` - Disable JTAG debug port for free use GPIO PA15, PB3, PB4 on STM32F1 series
* :github:`13197` - LwM2M: support Connectivity Monitoring object (object id 4)
* :github:`13148` - Build on nucleo_stm32f429zi
* :github:`13097` - openthread default configuration
* :github:`13075` - Review memory protection Kconfig policies for consistency and sanity
* :github:`13065` - CONFIG_BT leads Fatal fault in ISR on esp32
* :github:`13003` - context switch in x86 memory domains needs optimization
* :github:`12942` - openthread: sleepy end device not supported by zephyr router
* :github:`12825` - SystemView Feature Not working
* :github:`12728` - docs: Hard to find guidelines for ext/ maintenance
* :github:`12681` - BLE Split Link Layer
* :github:`12633` - tests/boards/altera_max10/i2c_master failed with "failed to read HPD control" on altera_max10
* :github:`12602` - STM32F415RG Support
* :github:`12553` - List of tests that keep failing sporadically
* :github:`12542` - nrf timers unstable with ticks faster than 100 Hz
* :github:`12478` - tests/drivers/ipm/peripheral.mailbox failing sporadically on qemu_x86_64 (timeout)
* :github:`12261` - i2c_ll_stm32_v1 driver gets stuck
* :github:`12257` - GNU Arm Embedded Toolchain 8-2018-q4-major can't produce hex files on Windows
* :github:`12245` - LWM2M registration timeout
* :github:`12228` - 	How to build images for client or server in bluetooth mesh examples?
* :github:`12160` - settings: NVS back-end
* :github:`12129` - Include: Clean up header file namespace
* :github:`12119` - 64bit architecture support
* :github:`12044` - [Question] [Blutooth Mesh] How proxy client create the proxy PDU
* :github:`12039` - clock_control: API should allow callback to be specified
* :github:`11993` - drivers: Supporting driver-specific extensions to existing generic APIs
* :github:`11922` - ADC generic driver missing features: calibration, reference voltage value
* :github:`11918` - Dynamic pin configuration
* :github:`11740` - LL_ASSERT in event_common_prepare in Zephyr v1.13
* :github:`11712` - Add support for newlib-nano
* :github:`11681` - Mesh Friend does not reply within ReceiveWindow
* :github:`11626` - k_busy_wait exits early on Nordic chips
* :github:`11617` - net: ipv4: udp: broadcast delivery not supported
* :github:`11535` - serial: uart_irq_tx_ready() needs better documentation or correction of the test
* :github:`11455` - cdc_acm uart_fifo_fill sample app doesn't comply with the documentation
* :github:`11107` - clock_control: API should support asynchronous and synchronous variants of turning on clocks
* :github:`10965` - wncm14a2a modem should be moved to a shield configuration
* :github:`10942` - Declaring an API Stable
* :github:`10935` - Support all UARTs on ESP32 WROOM module
* :github:`10915` - ESP 32 failed to boot while running  crypto/rand32 tests
* :github:`10896` - Add STM32 ADC driver
* :github:`10739` - Cannot flash to STM32 Nucleo F446RE with SEGGER JLink
* :github:`10664` - FOTA: nRF52: integration of samples/bluetooth/mesh & smp_srv
* :github:`10657` - tests/net/ieee802154/crypto does not work as expected
* :github:`10603` - Hard to find "todo"
* :github:`10463` - can: stm32: Update to new API
* :github:`10450` - usb/stm32: use dts extracted information to populate clock settings
* :github:`10420` - gcc: "Exec format error" - WSL in Windows 10 1803
* :github:`10150` - Getting LLVM work on ARM
* :github:`9954` - samples/hello_world build failed on Windows/MSYS
* :github:`9898` - 1.14 Release Checklist
* :github:`9762` - Bluetooth mesh reliability issue?
* :github:`9570` - Network stack cleanup: deep TCP cleanup
* :github:`9509` - Unable to upload firmware over serial with mcumgr
* :github:`9333` - Support for STM32 L1-series
* :github:`9247` - Get ST Disco and Eval boards compliant with default configuration guidelines
* :github:`9070` - bluetooth ：BR ：The sample is incomplete
* :github:`9047` - Interrupt APIs.
* :github:`8978` - soc: Intel S1000: add low power memory management support
* :github:`8851` - Allow creation of Zephyr libraries outside of Zephyr tree
* :github:`8734` - USB: DFU timeout on nRF52840 due to long flash erase
* :github:`8728` - Network stack cleanup: Net IF
* :github:`8726` - Network stack cleanup: TCP
* :github:`8725` - Network stack cleanup: Net Context
* :github:`8723` - Network stack cleanup
* :github:`8722` - Network stack cleanup: connection
* :github:`8464` - sdk_version file missing
* :github:`8419` - Bluetooth: tester: LPN Poll issue
* :github:`8404` - Bluetooth: controller: Reuse get_entropy_isr API
* :github:`8275` - when zephyr can support popular IDE develop?
* :github:`8125` - About BMI160 reading issue.
* :github:`8081` - Bluetooth: Deprecate TinyCrypt and use mbedTLS
* :github:`8062` - [Coverity CID :186196] Error handling issues in /samples/sensor/mcp9808/src/main.c
* :github:`7908` - tests/boards/altera_max10/qspi fails on max10
* :github:`7589` - Migrate Websocket to BSD sockets
* :github:`7585` - Migrate HTTP to socket API
* :github:`7503` - LwM2M client: No registration retry after error?
* :github:`7462` - Convert mcr20a to be a shield when that functionality is merged
* :github:`7403` - RAM flash driver emulator
* :github:`7316` - native_posix supersedes ztest mocking
* :github:`6906` - QM (Quality Managed) level qualification
* :github:`6823` - Optimize rendering of Kconfig documentation
* :github:`6817` - Question: Is supported for stack sharing among tasks  in Zephyr? Or any plan?
* :github:`6816` - Question: Is KProbes supported in Zephyr? Or any plan?
* :github:`6773` - Publish doxygen-generated API pages
* :github:`6770` - Multiple Git Repositories
* :github:`6636` - Enable hardware flow control in mcux uart shim driver
* :github:`6605` - Question: Does WAMP protocol has any usecase for Zephyr
* :github:`6545` - ARM Cortex R Architecture support
* :github:`6370` - I can't find adc name which is f429zi board
* :github:`6183` - sensor: Handling sensors with long measurement times
* :github:`6086` - Ideas/requirements for improved TLS support in Zephyr
* :github:`6039` - Implement interrupt driven USART on LPC54114
* :github:`5579` - Address untested options in kernel
* :github:`5529` - Explore Little File System (littlefs) support
* :github:`5460` - scripts: extract_dts_includes: check yaml dts binding property "category: "
* :github:`5457` - Add SDHC card support
* :github:`5423` - [nRF] on-target tests accidentally run twice
* :github:`5365` - Revisit DHCPv4 test, convert to ztest
* :github:`4628` - Sample app enabling sensors on disco_l475_iot1 board
* :github:`4506` - rework GPIO flags
* :github:`4505` - sanitycheck should distinguish compile errors from link errors
* :github:`4375` - Provide a script to find files not owned per the CODEOWNERS file
* :github:`4178` - Openweave Support
* :github:`3936` - BT: bt_conn_create_le(): No way to find out error cause
* :github:`3930` - Need a CPU frequency driver for ESP-32
* :github:`3928` - [TIMER] k_timer_start should take 0 value for duration parameter
* :github:`3846` - to use {k_wakeup} to cancel the delayed startup of one thread
* :github:`3805` - [test] test scheduling of threads along with  networking conditions
* :github:`3767` - reconsider k_mem_pool APIs
* :github:`3759` - reconsider k_mbox APIs
* :github:`3754` - Support static BT MAC address
* :github:`3749` - ESP32: Deep Sleep
* :github:`3722` - Enable Flash Cache for ESP32
* :github:`3710` - 802.15.4 Soft MAC 2015 version support
* :github:`3678` - Implement the Read Static Addresses Command
* :github:`3673` - reconsider k_queue APIs
* :github:`3651` - add tickless idle and kernel support to RISCV32 pulpino
* :github:`3648` - Ability to unpair devices
* :github:`3640` - BLE central scan ignores changes in payload
* :github:`3547` - IP stack: Ideas for optimizations
* :github:`3500` - ESP8266 Architecture Configuration
* :github:`3499` - evaluate Emul8 as a replacement for QEMU in sanitycheck
* :github:`3442` - TCP connection locally isn't possible
* :github:`3426` - Only supports classic Bluetooth compilation options
* :github:`3418` - Bluetooth True Wireless Stereo
* :github:`3417` - BT Phonebook Access Profles
* :github:`3399` - Texas Instruments CC2538 Support
* :github:`3396` - LLDP: Implement local MIB support with advertisement of mandatory TLVs
* :github:`3295` - Advanced Power Management
* :github:`3286` - Native Zephyr IP Stack Advanced Features
* :github:`3155` - xtensa: fix tests/kernel/mem_protect/stackprot
* :github:`3040` - Add support for the Arduino Ethernet Shield V2
* :github:`2994` - The build system crashes when GCCARMEMB_TOOLCHAIN_PATH has a space in it
* :github:`2984` - frdm_k64f bus exception bug due to peculiar RAM configuration
* :github:`2933` - Add zephyr support to openocd upstream
* :github:`2900` - Support for the BBC micro:bit Bluetooth Profile
* :github:`2856` - Customer: Floating Point samples
* :github:`2780` - Set the _Swap() return value on ARC the same way it is now done on ARM ?
* :github:`2766` - BMI160 Oversampling Configuration
* :github:`2682` - Add support for UART A1 for TI CC3200 SoC
* :github:`2623` - nRF52 UART behaviour sensitive to timing of baud rate initialization.
* :github:`2611` - SDP client
* :github:`2587` - Support for BR/EDR SSP out-of-band pairing
* :github:`2586` - Support for LE SC out-of-band pairing
* :github:`2401` - 802.15.4 - LLDN frame support
* :github:`2400` - 802.15.4 - Multipurpose frame support
* :github:`2399` - 802.15.4 - TSCH Radio protocol support
* :github:`2398` - 802.15.4 - Update existing Management commands
* :github:`2397` - 802.15.4 - IE list support
* :github:`2396` - 802.15.4 - Management service: FFD level support
* :github:`2333` - Get IPv6 Ready approval
* :github:`2049` - Enable ARM M4F FPU lazy stacking
* :github:`2046` - Add a driver to support timer functions using the PWM H/W periphral timers
* :github:`1933` - nios2: implement nested interrupts
* :github:`1860` - Add support for getting OOB data
* :github:`1843` - nios2: enable interrupt driven serial console for JTAG UART
* :github:`1766` - nios2: implement asm atomic operations
* :github:`1392` - No module named 'elftools'
* :github:`335` - images for the wiki

---

### Doc Releases Release Notes 2.1 (`doc/releases/release-notes-2.1.rst`)

:orphan:

.. _zephyr_2.1:

Zephyr 2.1.0
############

We are pleased to announce the release of Zephyr kernel version 2.1.0.

Major enhancements with this release include:

* Normalized APIs across all architectures.
* Expanded support for ARMv6-M architecture.
* Added support for numerous new boards and shields.
* Added numerous new drivers and sensors.
* Added new TCP stack implementation (experimental).
* Added BLE support on Vega platform (experimental).
* Memory size improvements to Bluetooth host stack.

The following sections provide detailed lists of changes by component.

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

No security vulnerabilities received.

Kernel
******

* Add arch abstraction for irq_offload()
* Add architecture interface headers and normalized APIs across all arches
* Show faulting CPU on fatal error message
* Improve C++ compatibility
* Modified arch API namespace to allow automatic arch API documentation
  generation
* Use logging for userspace errors

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

* ARC:

  * Increased the exception handling stack size
  * Implement DIRECT IRQ support
  * Implement z_arch_system_halt()

* ARM:

  * Added support for memory protection features (user mode and
    hardware-based stack overflow detection) in ARMv6-M architecture
  * Added QEMU support for ARMv6-M architecture
  * Extended test coverage for ARM-specific kernel features in ARMv6-M
    architecture
  * Enhanced runtime MPU programming in ARMv8-M architecture, making
    the full partitioning of kernel SRAM memory a user-configurable
    feature.
  * Added CMSIS support for Cortex-R architectures.
  * Updated CMSIS headers to version 5.6
  * Added missing Cortex-R CPU device tree bindings.
  * Fixed incorrect Cortex-R device tree specification.
  * Fixed several bugs in ARM architecture implementation

* POSIX:

  * Added support for CONFIG_DYNAMIC_INTERRUPTS (native_posix
    & nrf52_bsim)

* RISC-V:

  * Add support to boot multicore system

* x86:

  * Add basic ACPI and non-trivial memory map support
  * Add SMP support (64-bit mode only)
  * Inline direct ISR functions

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

* Added support for these SoC series:

.. rst-class:: rst-columns

   * Atmel SAMD51, SAME51, SAME53, SAME54
   * Nordic Semiconductor nRF53
   * NXP Kinetis KV5x
   * STMicroelectronics STM32G4

* Added support for these ARM boards:

  .. rst-class:: rst-columns

     * actinius_icarus
     * cc3235sf_launchxl
     * decawave_dwm1001_dev
     * degu_evk
     * frdm_k22f
     * frdm_k82f
     * mec1501modular_assy6885
     * nrf52833_pca10100
     * nrf5340_dk_nrf5340
     * nucleo_g431rb
     * pico_pi_m4
     * qemu_cortex_r0
     * sensortile_box
     * steval_fcu001v1
     * stm32f030_demo
     * stm32l1_disco
     * twr_kv58f220m

* Added support for these following shields:

  .. rst-class:: rst-columns

     * adafruit_2_8_tft_touch_v2
     * dfrobot_can_bus_v2_0
     * link_board_eth
     * ssd1306_128x32
     * ssd1306_128x64
     * waveshare_epaper
     * x_nucleo_idb05a1

* Added CAN support for Olimexino STM32 board

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

* ADC

  * Added support for STM32G4X in STM32 driver
  * Added Microchip XEC ADC driver

* Bluetooth

  * Added RPMsg transport HCI driver

* CAN

  * Added API to read the bus-state and error counters
  * Added API for bus-off recovery
  * Optimizations for the MCP2515 driver
  * Bug fixes

* Clock Control

  * Added support for nRF52833 in nRF driver
  * Added support for STM32G4X in STM32 driver

* Console

  * Removed deprecated function console_register_line_input

* Counter

  * Added support for STM32L1 and STM32G4X in STM32 driver
  * Removed QMSI driver
  * Added Microchip XEC driver

* Display

  * Enhanced SSD1306 driver to support build time selection
  * Enhanced SSD16XX driver to use bytestring property for LUT and parameters

* DMA

  * Added generic STM32 driver
  * Removed QMSI driver

* EEPROM

  * Added EEPROM device driver API
  * Added Atmel AT24 (and compatible) I2C EEPROM driver
  * Added Atmel AT25 (and compatible) SPI EEPROM driver
  * Added native_posix EEPROM emulation driver

* Entropy

  * Added RV32M1 driver
  * Added support for STM32G4X in STM32 driver

* Ethernet

  * Added MAC address configuration and carrier state detection to STM32 driver
  * Added ENC424J600 driver
  * Removed DesignWare driver

* Flash

  * Added deep-power-down mode support in SPI NOR driver
  * Fixed STM32 driver for 2MB parts
  * Added support for STM32G4X in STM32 driver
  * Removed QMSI driver

* GPIO

  * Added support for STM32G4X in STM32 driver
  * Removed QMSI, SCH, and SAM3 drivers

* Hardware Info

  * Added LiteX DNA driver

* I2C

  * Converted remaining drivers to device tree
  * Added support for STM32G4X in STM32 driver
  * Fixed DesignWare driver for 64-bit
  * Removed QMSI driver
  * Added proper error handling in XEC driver

* I2S

  * Refactored STM32 driver

* IEEE 802.15.4

  * Added CC13xx / CC26xx driver

* Interrupt Controller

  * Added support for SAME54 to SAM0 EIC driver
  * Added support for STM32G4X in STM32 driver
  * Converted RISC-V plic to use multi-level irq support

* IPM

  * Added nRFx driver

* Keyboard Scan

  * Added Microchip XEC driver

* LED

  * Removed non-DTS support from LP5562, PCA9633, and LP3943 drivers

* Modem

  * Added simple power management to modem receiver

* Pinmux

  * Added support for STM32G4X in STM32 driver
  * Removed QMSI driver

* PS/2

  * Added Microchip XEC driver

* PWM

  * Added PWM shell
  * Added Microchip XEC driver
  * Removed QMSI driver

* Sensor

  * Fixed raw value scaling and SPI burst transfers in LIS2DH driver
  * Converted various drivers to device tree
  * Fixed fractional part calculation in ENS210 driver
  * Added OPT3001 light sensor driver
  * Added SI7060 temperature sensor driver
  * Added TMP116 driver
  * Implemented single shot mode in SHT3XD driver
  * Added single/double tap trigger support in LIS2DW12 driver

* Serial

  * Added support for SAME54 to SAM0 driver
  * Added support for STM32G4X in STM32 driver
  * Added support for 2 stop bits in nRF UARTE and UART drivers
  * Removed QMSI driver
  * Added ESP32 driver with FIFO/interrupt support

* SPI

  * Added support for nRF52833 in nRFx driver
  * Added support for STM32G4X in STM32 driver
  * Added RV32M1 driver
  * Added Microchip XEC driver
  * Added LiteX driver
  * Removed Intel Quark driver

* Timer

  * Fixed starving clock announcements in SYSTICK and nRF drivers
  * Fixed clamp tick adjustment in tickless mode in various drivers
  * Fixed calculation of absolute cycles in SYSTICK driver
  * Fixed lost ticks from unannounced elapsed in nRF driver
  * Fixed SMP bug in ARC driver
  * Added STM32 LPTIM driver
  * Changed CC13X2/CC26X2 to use RTC instead of SYSTICK for system clock

* USB

  * Added support for nRF52833 in nRFx driver
  * Added support for STM32G4X in STM32 driver
  * Enabled ZLP hardware handling for variable-length data storage

* Video

  * Added MCUX CSI and Aptina MT9M114 drivers
  * Added software video pattern generator driver

* Watchdog

  * Added support for SAME54 to SAM0 driver
  * Converted drivers to use device tree
  * Removed QMSI driver
  * Added STM32 WWDG driver
  * Added Microchip XEC driver

* WiFi

  * Implemented TCP/UDP socket offload with TLS in Inventek eS-WiFi driver

Networking
**********

* Added new TCP stack implementation. The new TCP stack is still experimental
  and is turned off by default. Users wanting to experiment with it can set
  ``CONFIG_NET_TCP2`` Kconfig option.
* Added support for running MQTT protocol on top of a Websocket connection.
* Added support for enabling DNS in LWM2M.
* Added support for resetting network statistics in net-shell.
* Added support for getting statistics about the time it took to receive or send
  a network packet.
* Added support for sending a PPP Echo-Reply packet when a Echo-Request packet
  is received.
* Added CC13xx / CC26xx device drivers for IEEE 802.15.4.
* Added TCP/UDP socket offload with TLS for eswifi network driver.
* Added support for sending multiple SNTP requests to increase reliability.
* Added support for choosing a default network protocol in socket() call.
* Added support for selecting either native IP stack, which is the default, or
  offloaded IP stack. This can save ROM and RAM as we do not need to enable
  network functionality that is not going to be used in the network device.
* Added support for LWM2M client initiated de-register.
* Updated the supported version of OpenThread.
* Updated OpenThread configuration to use mbedTLS provided by Zephyr.
* Various fixes to TCP connection establishment.
* Fixed delivery of multicast packets to all listening sockets.
* Fixed network interface initialization when using socket offloading.
* Fixed initial message id seed value for sent CoAP messages.
* Fixed selection of network interface when using "net ping" command to send
  ICMPv4 echo-request packet.
* Networking sample changes for:

  .. rst-class:: rst-columns

     - http_client
     - dumb_http_server_mt
     - dumb_http_server
     - echo_server
     - mqtt_publisher
     - zperf

* Network device driver changes for:

  .. rst-class:: rst-columns

     - Ethernet enc424j600 (new driver)
     - Ethernet enc28j60
     - Ethernet stm32
     - WiFi simplelink
     - Ethernet DesignWare (removed)

Bluetooth
*********

* Host:

  * Reworked the Host transmission path to improve memory footprint and remove potential deadlocks
  * Document HCI errors for connected callback
  * GATT: Added a ``bt_gatt_is_subscribed()`` function to check if attribute has been subscribed
  * GATT: Added an initializer for GATT CCC structures
  * HCI: Added a function to get the connection handle of a connection
  * Added ability to load CCC settings on demand to reduce memory usage
  * Made the time to run slave connection parameters update procedure configurable
  * Folded consecutive calls to bt_rand into one to reduce overhead
  * Added key displacement feature for key storage
  * Reduced severity of unavoidable warnings
  * Added support C++20 designated initializers
  * Mesh: Add the model extension concept as described in the Mesh Profile Specification
  * Mesh: Added support for acting as a Provisioner

* BLE split software Controller:

  * Numerous bug fixes
  * Fixed several control procedure (LLCP) handling issues
  * Added experimental BLE support on Vega platform.
  * Added a hook for flushing in LLL
  * Implemented the LLL reset functions in a call from ll_reset
  * Made the number of TX ctrl buffers configurable
  * Added support for Zero Latency IRQs

* BLE legacy software Controller:

  * Multiple bug fixes

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

* Deprecated kconfig functions dt_int_val, dt_hex_val, and dt_str_val.
  Use new functions that utilize eDTS info such as dt_node_reg_addr.
  See :zephyr_file:`scripts/kconfig/kconfigfunctions.py` for details.

* Deprecated direct use of the ``DT_`` Kconfig symbols from the generated
  ``generated_dts_board.conf``.  This was done to have a single source of
  Kconfig symbols coming from only Kconfig (additionally the build should
  be slightly faster).  For Kconfig files we should utilize functions from
  :zephyr_file:`scripts/kconfig/kconfigfunctions.py`.  See
  :ref:`kconfig-functions` for usage details.  For sanitycheck yaml usage
  we should utilize functions from
  ``scripts/sanity_chk/expr_parser.py``.  Its possible that a
  new function might be required for a particular use pattern that isn't
  currently supported.

* Various parts of the binding format have been simplified. The format is
  better documented now too.

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

* Random

  * Add cryptographically secure random functions
  * Add bulk fill random functions

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.

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

* A new Getting Started Guide simplifies and streamlines the "out of
  box" experience for developers, from setting up their development
  environment through running the blinky sample.
* Many additions and updates to architecture, build, and process docs including
  sanity check, board porting, Bluetooth, scheduling, timing,
  peripherals, configuration, and user mode.
* Documentation for new boards and samples.
* Improvements and clarity of API documentation.

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

* We have implemented additional tests and significantly expanded the amount
  of test cases in existing tests to increase code coverage.

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

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`21177` - Long ATT MTU reports wrong length field in write callback.
* :github:`21148` - nrf51: uart\_1 does not compile
* :github:`21131` - Bluetooth: host: Subscriptions not removed upon unpair
* :github:`21139` - west: runners: blackmagicprobe: Keyboard Interrupt shouldn't kill the process
* :github:`21126` - drivers: spi\_nrfx\_spim: Incorrect handling of extended SPIM configuration
* :github:`21115` - Request a new repository for the Xtensa HAL
* :github:`21113` - k\_sem\_give reschedules cooperative threads unexpectedly
* :github:`21102` - Slack link at https://www.zephyrproject.org/ is expired
* :github:`21077` - Help: Pull request "Identity/Emails issues"
* :github:`21059` - Bluetooth sent callback delayed more than ATT
* :github:`21049` - Bluetooth: Multiple issues with net\_buf usage
* :github:`21048` - timer case fail on qemu\_xtensa and mps2\_an385
* :github:`21004` - cmd\_data buffer corruption
* :github:`20970` - Bluetooth: Mesh: seg\_tx\_reset in the transport layer
* :github:`20969` - No SOURCES given to target: drivers\_\_gpio
* :github:`20968` - [Coverity CID :206016] Side effect in assertion in tests/kernel/sched/metairq/src/main.c
* :github:`20967` - [Coverity CID :206017] Out-of-bounds read in drivers/ipm/ipm\_nrfx\_ipc.c
* :github:`20966` - [Coverity CID :206018] Side effect in assertion in tests/kernel/sched/metairq/src/main.c
* :github:`20965` - [Coverity CID :206019] Side effect in assertion in tests/kernel/sched/metairq/src/main.c
* :github:`20964` - [Coverity CID :206020] Bad bit shift operation in drivers/ipm/ipm\_nrfx\_ipc.c
* :github:`20963` - [Coverity CID :206021] Side effect in assertion in tests/kernel/sched/metairq/src/main.c
* :github:`20962` - [Coverity CID :206022] Out-of-bounds read in drivers/ipm/ipm\_nrfx\_ipc.c
* :github:`20939` - long duration timeouts can cause loss of time
* :github:`20938` - ATT/L2CAP "deadlock"
* :github:`20936` - tests/kernel/mem\_protect/protection fails on ARMv8-M
* :github:`20933` - x\_nucleo\_iks01a3 shield: STM LSM6DSO sensor does not work after h/w or s/w reset
* :github:`20931` - intel\_s1000\_crb samples can't be built with latest master
* :github:`20926` - ztest\_1cpu\_user\_unit\_test() doesn
* :github:`20892` - our nRF52840 board power management sleep duration
* :github:`20883` - [Coverity CID :205808] Integer handling issues in tests/net/lib/coap/src/main.c
* :github:`20882` - [Coverity CID :205806] Integer handling issues in tests/net/lib/coap/src/main.c
* :github:`20881` - [Coverity CID :205786] Integer handling issues in tests/net/lib/coap/src/main.c
* :github:`20880` - [Coverity CID :205780] Integer handling issues in tests/net/lib/coap/src/main.c
* :github:`20879` - [Coverity CID :205812] Incorrect expression in tests/kernel/spinlock/src/main.c
* :github:`20878` - [Coverity CID :205801] Incorrect expression in tests/kernel/mp/src/main.c
* :github:`20872` - [Coverity CID :205779] Parse warnings in subsys/usb/class/hid/core.c
* :github:`20871` - [Coverity CID :205815] Memory - illegal accesses in subsys/shell/shell.c
* :github:`20868` - [Coverity CID :205814] Null pointer dereferences in subsys/net/ip/6lo.c
* :github:`20867` - [Coverity CID :205803] Integer handling issues in subsys/fs/nvs/nvs.c
* :github:`20866` - [Coverity CID :205795] Integer handling issues in subsys/fs/nvs/nvs.c
* :github:`20846` - [Coverity CID :205775] Memory - corruptions in samples/net/sockets/big\_http\_download/src/big\_http\_download.c
* :github:`20845` - [Coverity CID :205824] Memory - corruptions in samples/net/mqtt\_publisher/src/main.c
* :github:`20842` - [Coverity CID :205787] Memory - corruptions in drivers/usb/device/usb\_dc\_native\_posix\_adapt.c
* :github:`20841` - [Coverity CID :205839] Error handling issues in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20840` - [Coverity CID :205821] Error handling issues in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20839` - [Coverity CID :205813] Error handling issues in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20838` - [Coverity CID :205790] Null pointer dereferences in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20837` - [Coverity CID :205777] Error handling issues in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20836` - [Coverity CID :205776] Error handling issues in drivers/usb/device/usb\_dc\_native\_posix.c
* :github:`20834` - [Coverity CID :205825] API usage errors in boards/posix/native\_posix/hw\_models\_top.c
* :github:`20833` - Bluetooth: Deadlock in Host API from SMP callbacks.
* :github:`20826` - [Coverity CID :205798] API usage errors in boards/posix/native\_posix/hw\_models\_top.c
* :github:`20811` - spi driver
* :github:`20804` - sanitycheck: unimplemented documented option
* :github:`20800` - Ready thread is not swapped in after being woken up in IRQ
* :github:`20797` - echo server qemu\_x86 e1000 crash when coverage is enabled
* :github:`20781` - peripheral\_hr on VEGABoard disconnects from central\_hr after BT\_CONN\_PARAM\_UPDATE\_TIMEOUT
* :github:`20771` - onoff\_level\_lighting\_vnd\_app mcumgr unable to connect to provisioned node
* :github:`20769` - nucleo\_g431rb: Settings subsystem fails to initialise
* :github:`20743` - doc: settings.rst has references to mynewt structures
* :github:`20741` - Reel board Ethernet Support using the Link board ETH
* :github:`20735` - Cannot flash with jlink  on windows.
* :github:`20726` - arm: Specifying sp register in asm's clobber list is deprecated in GCC 9
* :github:`20715` - rtc driver may interrupt in a short time for large timeouts on cc13x2/cc26x2
* :github:`20707` - Define GATT service at run-time
* :github:`20695` - nRF5340: misc fixes for nRF53 porting
* :github:`20692` - samples: CAN: kconfig: CONFIG\_CAN\_AUTO\_BOFF\_RECOVERY does not exist
* :github:`20681` - samples: sensor: lps22hb: Reference to undefined CONFIG\_LPS22HB\_TRIGGER symbol
* :github:`20666` - Unexpected UART Kconfig warnings during build
* :github:`20660` - Bluetooth: host: bt\_conn\_create\_le sometimes fails to stop pre-scan before connecting
* :github:`20658` - The misc-flasher runner is not usable
* :github:`20651` - Bluetooth: disable and restart BT functionality
* :github:`20639` - x\_nucleo\_iks01a3 sample is not working anymore after #20560 has been merged
* :github:`20621` - Invalid baudrate on stm32 usart
* :github:`20620` - Advertiser seen alternating between RPA an ID address with privacy enabled
* :github:`20613` - HCI reset command complete before LL reset done
* :github:`20603` - tests/kernel/critical failed on sam\_e70\_xplained board in v.1.14-branch
* :github:`20598` - tests/lib/mem\_alloc newlibnano target run time error
* :github:`20587` - undefined reference when enabling CONFIG\_STACK\_CANARIES
* :github:`20582` - samples/subsys/logging/syst is broken when building with gcc-arm-none-eabi-7-2018-q2-update
* :github:`20571` - devicetree: fix non-deterministic multi-level interrupt encodings
* :github:`20558` - Build failure for samples/bluetooth/peripheral\_hr/sample.bluetooth.peripheral\_hr\_rv32m1\_vega\_ri5cy on rv32m1\_vega\_ri5cy
* :github:`20545` - imgtool: signing image fails: missing DT\_FLASH\_WRITE\_BLOCK\_SIZE
* :github:`20540` - [Coverity CID :205656]Error handling issues in /tests/net/tcp/src/main.c
* :github:`20539` - [Coverity CID :205637]Resource leaks in /tests/net/socket/tcp/src/main.c
* :github:`20538` - [Coverity CID :205673]Memory - corruptions in /tests/net/ppp/driver/src/main.c
* :github:`20536` - [Coverity CID :205607]Memory - corruptions in /tests/net/ppp/driver/src/main.c
* :github:`20535` - [Coverity CID :205619]Null pointer dereferences in /tests/net/ieee802154/fragment/src/main.c
* :github:`20534` - [Coverity CID :205669]Incorrect expression in /tests/kernel/mem\_protect/stack\_random/src/main.c
* :github:`20533` - [Coverity CID :205667]Error handling issues in /tests/drivers/counter/counter\_basic\_api/src/test\_counter.c
* :github:`20530` - [Coverity CID :205663]Memory - corruptions in /tests/crypto/tinycrypt/src/sha256.c
* :github:`20515` - [Coverity CID :205670]Code maintainability issues in /subsys/settings/src/settings\_nvs.c
* :github:`20514` - [Coverity CID :205633]Memory - illegal accesses in /subsys/settings/src/settings.c
* :github:`20513` - [Coverity CID :205621]Memory - illegal accesses in /subsys/net/lib/websocket/websocket.c
* :github:`20512` - [Coverity CID :143683]Error handling issues in /subsys/fs/fcb/fcb.c
* :github:`20511` - [Coverity CID :205612]Control flow issues in /subsys/disk/disk\_access\_spi\_sdhc.c
* :github:`20510` - [Coverity CID :205660]Incorrect expression in /subsys/debug/tracing/ctf/ctf\_top.c
* :github:`20509` - [Coverity CID :205632]Incorrect expression in /subsys/debug/tracing/ctf/ctf\_top.c
* :github:`20508` - [Coverity CID :205634]Code maintainability issues in /samples/net/sockets/websocket\_client/src/main.c
* :github:`20507` - [Coverity CID :205662]Memory - illegal accesses in /samples/net/sockets/dumb\_http\_server\_mt/src/main.c
* :github:`20506` - [Coverity CID :205672]Null pointer dereferences in /samples/drivers/espi/src/main.c
* :github:`20505` - [Coverity CID :205613]Null pointer dereferences in /samples/drivers/espi/src/main.c
* :github:`20504` - [Coverity CID :205661]Incorrect expression in /drivers/watchdog/wdt\_wwdg\_stm32.c
* :github:`20503` - [Coverity CID :205655]Error handling issues in /drivers/watchdog/wdt\_wwdg\_stm32.c
* :github:`20502` - [Coverity CID :205665]Integer handling issues in /drivers/video/mt9m114.c
* :github:`20501` - [Coverity CID :205643]Integer handling issues in /drivers/video/mt9m114.c
* :github:`20499` - [Coverity CID :205625]Error handling issues in /drivers/sensor/lsm6dso/lsm6dso\_shub.c
* :github:`20498` - [Coverity CID :205628]Error handling issues in /drivers/sensor/amg88xx/amg88xx\_trigger.c
* :github:`20496` - [Coverity CID :205630]Memory - illegal accesses in /drivers/pwm/pwm\_mchp\_xec.c
* :github:`20495` - [Coverity CID :205622]Memory - illegal accesses in /drivers/pwm/pwm\_mchp\_xec.c
* :github:`20494` - [Coverity CID :205617]Memory - corruptions in /drivers/kscan/kscan\_mchp\_xec.c
* :github:`20493` - [Coverity CID :205668]Insecure data handling in /drivers/ethernet/eth\_enc424j600.c
* :github:`20489` - [Coverity CID :205645]Integer handling issues in /drivers/counter/counter\_mchp\_xec.c
* :github:`20488` - [Coverity CID :205614]Integer handling issues in /drivers/clock\_control/nrf\_clock\_calibration.c
* :github:`20487` - [Coverity CID :205648]Memory - corruptions in /arch/arc/core/mpu/arc\_mpu\_v3\_internal.h
* :github:`20480` - i2c driver for cc13xx/cc26xx is configured with incorrect frequency
* :github:`20472` - drivers/flash: nRF flash driver uses absolute addressing instead of relative
* :github:`20450` - Bluetooth: hci\_uart: conn param update request from peripheral ignored
* :github:`20449` - 'west flash' command failed on sam\_e70\_xplained board.
* :github:`20445` - tests/kernel/critical failed on mimxrt1050\_evk board.
* :github:`20444` - sanitycheck error with tests/arch/x86/info.
* :github:`20438` - Kernel timeout API does not document well accepted values
* :github:`20431` - sockets\_tls: missing sendmsg
* :github:`20425` - storage/flash\_map: flash\_area\_get\_sectors can't fetch sectors on devices with non-zero flash base address
* :github:`20423` - drivers/flash: flash\_get\_page\_info\_by\_off uses relative addresses
* :github:`20422` - Device with bonds should not accept new keys without user awareness
* :github:`20417` - BME280 wrong pressure unit?
* :github:`20416` - sample: sensor: fxos8700 issues
* :github:`20406` - misc.app\_dev.libcxx test fails to build for qemu\_x86\_64
* :github:`20371` - Sanitycheck filtering broken
* :github:`20351` - sample vl53l0x fails on disco\_l475\_iot1
* :github:`20332` - Nordic: DocLib links are obsolete
* :github:`20325` - samples/drivers/i2c\_scanner does not work on STM32 NUCLEO and DISCOVERY boards
* :github:`20313` - Zperf documentation points to wrong iPerf varsion
* :github:`20310` - SDHC : Could not enable SPI clock on nucleo\_f091rc
* :github:`20299` - bluetooth: host: Connection not being unreferenced when using CCC match callback
* :github:`20297` - Bluetooth: can't close bt\_driver log output
* :github:`20285` - ST lis2dh sample with motion callback
* :github:`20284` - zephyr-env.sh  Is this supposed to be unsetopt posixargzero ?
* :github:`20274` - Kconfig new libc changes cause echo server cmake error
* :github:`20260` - logging system call
* :github:`20255` - Meta-IRQs making cooperative threads preemptive
* :github:`20250` - hci\_usb: scanning crashes controller if a lot of devices are nearby
* :github:`20246` - Module Request: hal\_unisoc
* :github:`20245` - HTTP parser error with chunked transfer encoding
* :github:`20244` - mesh: demo: BT fails it init
* :github:`20232` - Bluetooth: Kernel panic on gatt discover in shell app
* :github:`20225` - [TOPIC-GPIO] sam\_e70\_xplained fails 2-pin active-low pull test
* :github:`20224` - [TOPIC-GPIO] rv32m1\_vega\_ri5cy fails 2-pin double-edge detection test
* :github:`20223` - [TOPIC-GPIO] efr32mg\_sltb004a fails 2-pin double-edge detection test
* :github:`20205` - ztest testing.ztest does not have a prj.conf with CONFIG\_ZTEST=y
* :github:`20202` - tests/arch/arm/arm\_interrupt failed on sam\_e70\_xplained board.
* :github:`20177` - sanitycheck error with tests/benchmarks/timing\_info.
* :github:`20176` - tests/drivers/pwm/pwm\_api failed on reel\_board.
* :github:`20167` - posix clock: unexpected value for CLOCK\_REALTIME when used with newlib
* :github:`20163` - doc: storage settings not clear
* :github:`20135` - Bluetooth: controller: split: Missing initialization of master terminate\_ack flag
* :github:`20122` - Deadlock in ASAN leak detection on exit
* :github:`20110` - Crash in hci\_driver.c when create\_connection\_cancel is issued after create connection
* :github:`20109` - altera\_nios2 support decision required
* :github:`20105` - tests/subsys/fs/fcb/ Using uninitialised memory/variables
* :github:`20104` - Kconfig is too slow
* :github:`20100` - Slave PTP clock time is updated with large value when Master PTP Clock time has changed
* :github:`20088` - tests/net/icmpv6/ failed on mimxrt1050\_evk board.
* :github:`20086` - Broken-looking duplicated ESPI\_XEC symbol
* :github:`20072` - Incompatible pointer types in Nordic Driver nrfx\_usbd.h
* :github:`20071` - Incompatible pointer types in Nordic Driver
* :github:`20049` - Build warnings in several unit tests
* :github:`20045` - z\_sched\_abort: sched\_spinlock should be released before k\_busy\_wait
* :github:`20042` - Telnet can connect only once
* :github:`20033` - Thread suspend only works if followed by k\_sleep in thread that is performing the suspension
* :github:`20032` - Make it clear in HTML docs what monospaced text is a link
* :github:`20030` - stm32 can: zcan\_frame from fifo uninitialized
* :github:`20022` - sanitycheck is not failing on build warnings
* :github:`20021` - Add a module to Zephyr to include TF-M project and it's related repos
* :github:`20016` - STM32F4: cannot erase sectors from bank2
* :github:`20010` - Cannot flash mimxrt1050\_evk board
* :github:`20007` - tests/net/mld failed on mimxrt1050\_evk board.
* :github:`20000` - Invalid callback parameters in drivers/serial/uart\_nrfx\_uarte.c (using async API)
* :github:`19969` - [TOPIC-GPIO] mcux driver problems with pull configuration
* :github:`19963` - settings test tests/subsys/settings/fcb/raw failing
* :github:`19918` - Incremental builds broken for OpenAMP sample
* :github:`19917` - Bluetooth: Controller: Missing LL\_ENC\_RSP after HCI LTK Negative Reply
* :github:`19915` - tests/net/icmpv6 failed on sam\_e70 board.
* :github:`19914` - tests/net/shell failed on sam\_e70 board.
* :github:`19910` - Bluetooth: Mesh: Thread stack can reduce by use malloc&free function
* :github:`19898` - CONFIG\_NET\_ROUTE\_MCAST and CONFIG\_NET\_ROUTING can't be enabled
* :github:`19889` - Buffer leak in GATT for Write Without Response and Notifications
* :github:`19885` - SMP doesn't work on ARC any longer
* :github:`19877` - Broken partition size
* :github:`19872` - sensor/lis2dh: using runtime scale other than 2g generates strange values
* :github:`19871` - display/ssd1306: allow "reverse display" in kconfig or dts
* :github:`19867` - modem: ublox-sara-r4/u2 build error
* :github:`19848` - stm32wb MPU failure
* :github:`19841` - MIPI Sys-T logging/tracing support
* :github:`19837` - SS register is 0 when taking exceptions on qemu\_x86\_long
* :github:`19833` - missing or empty reg/ranges property when trying to build blink\_led example
* :github:`19820` - Bluetooth: Host: Unable to use whitelist in peripheral only build
* :github:`19818` - Compiler error for counter example (nRF52\_pca10040)
* :github:`19811` - native\_posix stack smashing
* :github:`19802` - Zephyr was unable to find the toolchain after update to zephyr version 1.13.0
* :github:`19795` - bt\_gatt\_attr\_next returns first attribute in table for attributes with static storage.
* :github:`19791` - How to use CMSIS DSP Library on nRF52832 running zephyr LTS Version(V1.14) ?
* :github:`19783` - floating point in C++ on x86\_64 uses SSE
* :github:`19775` - net\_calc\_chksum: Use of un-initialized memory on 64 bit targets
* :github:`19769` - CONFIG\_FLASH\_SIZE should be CONFIG\_FLASH\_END and specified in hex
* :github:`19767` - Bluetooth: Mesh: Provision Random buffer has too small size
* :github:`19762` - tests/net/lib/tls\_credentials failed on sam\_e70\_xplained board.
* :github:`19759` - z\_arch\_switch() passed pointer to NULL outgoing switch handle on dummy thread context switch
* :github:`19748` - k\_sleep(K\_FOREVER) behavior unexpected
* :github:`19734` - "make gdbserver" doesn't work properly for qemu\_x86\_long
* :github:`19724` - Bluetooth: Mesh: Receiving an access message
* :github:`19722` - Settings: settings\_file\_save\_priv() use of uninitialized variable
* :github:`19721` - samples/bluetooth/ipsp does not respond to pings from Linux
* :github:`19717` - Add provisions for supporting multiple CMSIS variants
* :github:`19701` - mem\_pool\_threadsafe sporadic failures impacting CI
* :github:`19700` - nrfx\_uart RX hang on errors
* :github:`19697` - tests/subsys/fs/fat\_fs\_api uses unitialized variables
* :github:`19692` - [TOPIC-GPIO] gpi\_api\_1pin test failures
* :github:`19685` - Samples: BluetoothMesh: not able to connect with device over GATT to provision it
* :github:`19683` - nrf: clock reimplementation breaks test
* :github:`19678` - Noticeable delay between processing multiple client connection requests (200ms+)
* :github:`19660` - missing file reference in samples/sensor/ti\_hdc doc
* :github:`19649` - [TOPIC-GPIO]: Replace GPIO\_INT\_DEBOUNCE with GPIO\_DEBOUNCE
* :github:`19638` - Bluetooth: Mesh: Provisioning Over PB-ADV
* :github:`19629` - tinycbor buffer overflow causing mcumgr image upload failure
* :github:`19612` - ICMPv6 packet is routed to wrong interface when peer is not found in neighbor cache
* :github:`19604` - Bluetooth: ATT does not release all buffers on disconnect
* :github:`19603` - addition to winbond,w25q16.yaml required for SPI CS to be controlled by driver
* :github:`19599` - ARC builds missing z\_arch\_start\_cpu() when !SMP
* :github:`19592` - Request new repository to host the Eclipse plugin for building Zephyr applications
* :github:`19569` - nRF RTC Counter with compile time decision about support of custom top value
* :github:`19560` - Console on CDC USB  crashes when CONFIG\_USB\_COMPOSITE\_DEVICE=y
* :github:`19552` - [TOPIC-GPIO]: Support for legacy interrupt configuration breaks new API contract
* :github:`19550` - drivers/pcie: \`pcie\_get\_mbar()\` should return a \`void \*\` not \`u32\_t\`
* :github:`19549` - kernel/mem\_protection/stackprot fails on NXP RT series platforms on v1.14.1-rc3 release
* :github:`19544` - make usb power settings in "Configuration Descriptor" setable
* :github:`19543` - net: tcp: echo server stops if CONFIG\_POSIX\_MAX\_FDS is not set
* :github:`19539` - Support MQTT over Websocket
* :github:`19537` - debug:object\_tracing: The trace list is not complete once we initialize the object on the trace list
* :github:`19536` - devicetree bindings path misinterpreted
* :github:`19535` - Doubly freed memory in the pipe\_api test
* :github:`19525` -  Can't change the slave latency on a connection.
* :github:`19515` - Bluetooth: Controller: assertion failed
* :github:`19509` - Bluetooth: stm32wb55: Unable to pair with privacy-enabled peer
* :github:`19490` - Bluetooth: split: 'e' assert during disconnect
* :github:`19484` - Bluetooth: split:  bt\_set\_name() asserts due to flash and radio coex
* :github:`19472` - drivers: usb\_dc\_stm32:  shows after some time errors and warnings
* :github:`19459` - Bluetooth: Mesh:  Mesh Model State Binding.
* :github:`19456` - arch/x86: make use of z\_bss\_zero() and z\_data\_copy()
* :github:`19452` - Bluetooth: Mesh: Mesh model implementation?
* :github:`19447` - SEGGER\_RTT.h: No such file or directory
* :github:`19438` - boot flags incorrect after image swapping
* :github:`19437` - tests/kernel/sched/schedule\_api tests fail to build
* :github:`19432` - nrfx: nrf52840\_pca10056 SPIM1 cannot be selected without SPIM3
* :github:`19420` - power: system power management sleep duration
* :github:`19419` - Build automation and testing tools
* :github:`19415` - typo in nucleo\_l496zg.dts
* :github:`19413` - Not able to scan and connect to other ble devices with HCI commands
* :github:`19398` - net: ENC28J60 driver does not respond to ping
* :github:`19385` - compilation error
* :github:`19381` - \`k\_yield()\` exhibits different behavior with \`CONFIG\_SMP\`
* :github:`19376` - Build on a ARM host
* :github:`19374` - net: echo server: TCP add support for multiple connections
* :github:`19370` - bugs in kernel/atomic\_c
* :github:`19367` - net: TCP/IPv4: TCP stops working after dropping segment with incorrect checksum
* :github:`19363` - arc: bug in \_firq\_enter
* :github:`19353` - arch/x86: QEMU doesn't appear to support x2APIC
* :github:`19347` - Bluetooth: BL654 USB dongle not found after flashing
* :github:`19342` - Bluetooth: Mesh: Persistent storage of Virtual Addresses
* :github:`19320` - build error using logger in test case
* :github:`19319` - tests/kernel/spinlock only runs on ESP32
* :github:`19317` - need a minimal log implementation that maps to printk()
* :github:`19307` - \_interrupt\_stack is defined in the kernel, but declared in arch headers
* :github:`19299` - kernel/spinlock: A SMP race condition in SPIN\_VALIDATE
* :github:`19284` - Service Changed indication not being sent in some cases
* :github:`19270` - GPIO: STM32: Migration to new API
* :github:`19267` - Service changed not notified upon reconnection.
* :github:`19265` - Bluetooth: Mesh: Friend Send model message to LPN
* :github:`19263` - Bluetooth: Mesh: Friend Clear Procedure Timeout
* :github:`19250` - NVS: Overwriting an item with a shorter matching item fails
* :github:`19239` - tests/kernel/common failed on iotdk board.
* :github:`19238` - tests/subsys/usb/device failed on reel\_board.
* :github:`19235` - move drivers/timer/apic\_timer.c to devicetree
* :github:`19231` - native\_posix\_64/tests/subsys/fs/fat\_fs\_api/filesystem.fat fails
* :github:`19227` - IOTDK uses QMSI DT binding
* :github:`19226` - Device Tree Enhancements in 2.1
* :github:`19219` - drivers/i2c/i2c\_dw.c is not 64-bit clean
* :github:`19216` - Ext library for WIN1500: different values of AF\_INET
* :github:`19198` - Bluetooth: LL split assert on connect
* :github:`19191` - problem with implementation of sock\_set\_flag
* :github:`19186` - BLE: Mesh: IVI Initiator When ivi in progress timeout
* :github:`19181` - sock\_set\_flag implementation in sock\_internal.h does not work for 64 bit pointers
* :github:`19178` - Segmentation fault when running echo server
* :github:`19177` - re-valuate commit 0951ce2
* :github:`19176` - NET: LLMNR: zephyr drops IPV4 LLMNR packets
* :github:`19167` - Message queues bug when using C++
* :github:`19165` - zephyr\_file generates bad links on branches
* :github:`19164` - compiling native\_posix64 with unistd.h & net/net\_ip.h fail
* :github:`19144` - arch/x86: CONFIG\_BOOT\_TIME\_MEASUREMENT broken
* :github:`19135` - net: ipv4: udp: echo server sends malformed data bytes in reply to broadcast packet
* :github:`19133` - Scheduler change in #17369 introduces crashes
* :github:`19103` - zsock\_accept\_ctx blocks even when O\_NONBLOCK is specified
* :github:`19098` - Failed to flash on ESP32
* :github:`19096` - No error thrown for device tree node with missing required property of type compound
* :github:`19079` - Enable shield sample on stm32mp157c\_dk2
* :github:`19078` - search for board specific shield overlays doesn't always work
* :github:`19066` - Build error with qemu\_x86\_64
* :github:`19065` - Build error with stm32h747i\_disco\_m4
* :github:`19064` - Correct docs for K\_THREAD\_DEFINE
* :github:`19059` - i2c\_ll\_stm32\_v2: nack on write is not handled correctly
* :github:`19051` - [Zephyr v2.0.0 nrf52840] Unable to reconnect to recently bonded peripheral
* :github:`19039` - Bluetooth: Qualification test case GATT/SR/UNS/BI-02-C fails
* :github:`19038` - [zephyr branch 1.14 and master -stm32-netusb]:errors when i view RNDIS Device‘s properties on Windows 10
* :github:`19034` - sanitycheck fail with ninja option with single-core machine
* :github:`19031` - nrfx\_clock.c functions are not available with CONFIG\_NRFX\_CLOCK
* :github:`19015` - Bluetooth: Mesh: Node doesn't respond to "All Proxies" address
* :github:`19013` - [Zephyr 1.14]: NetUsb and Ethernet work together
* :github:`19004` - problems in sanitycheck/CI infrastructure revealed by post-release change
* :github:`18999` - assignment in assert in test of arm\_thread\_arch causes build failures
* :github:`18990` - C++ New allocates memory from kernel heap
* :github:`18988` - BLE Central auto enables indications and notifies
* :github:`18986` - DTS: transition from alias to node label as the standard prefix
* :github:`18973` - z\_arch\_system\_halt() does not block interrupts
* :github:`18961` - [Coverity CID :203912]Error handling issues in /samples/net/sockets/coap\_client/src/coap-client.c
* :github:`18957` - NET\_L2: modem drivers (offloaded) aren't assigned a net\_l2 which causes a crash in net\_if\_up()/net\_if\_down()
* :github:`18956` - memory protection for x86 dependent on XIP
* :github:`18935` - [Zephyr 1.14] drivers: flash: spi\_nor: Problematic write with page boundaries
* :github:`18880` - boards: mec15xxevb\_assy6853: consider moving ARCH\_HAS\_CUSTOM\_BUSY\_WAIT to SoC definition
* :github:`18873` - zsock\_socket() should support proto==0
* :github:`18870` - zsock\_getaddrinfo() returns garbage values if IPv4 address is passed and hints->ai\_family == AF\_INET6
* :github:`18858` - Runner support for stm32flash utility
* :github:`18832` - Doc: contact-us page should use slack invite (not zephyrproject.slack.com)
* :github:`18824` - tests/subsys/usb/device/ failed on sam\_e70 board.
* :github:`18816` - ssd1306 driver can't work with lvgl
* :github:`18807` - Support the Ubuntu Cross Toolchain
* :github:`18803` - LTS - support time
* :github:`18787` - arch/x86: retire loapic\_timer.c driver in favor of new apic\_timer.c
* :github:`18749` - Avenger96 regressed in mainline for U-Boot M4 boot
* :github:`18695` - Watchdog: stm32: Wrong timeout value when watchdog started at boot
* :github:`18657` - drivers/timer/hpet.c should use devicetree, not CONFIG\_\* for MMIO/IRQ data
* :github:`18652` - Optimization flags from CMAKE\_BUILD\_TYPE are not taken into account
* :github:`18592` - (nRF51) The RSSI signal does not rise above -44 dBm
* :github:`18591` - tests/kernel/fifo/fifo\_timeout/kernel.fifo.timeout.poll fails to run on multiple ARM platforms
* :github:`18585` - STM32G4 support
* :github:`18583` - hci\_usb: NRF52840 connecting addtional peripheral fails
* :github:`18540` - MEC1501 ADC is missing in HAL
* :github:`18539` - MEC1501 PWM is missing in HAL
* :github:`18488` - Bluetooth: Mesh: Friend queue message seqnum order
* :github:`18480` - Microchip's MEC1501 HAL is broken (watchdog part)
* :github:`18465` - timeutil\_timegm() has undefined behavior
* :github:`18451` - [Coverity CID :203528]Integer handling issues in /tests/lib/fdtable/src/main.c
* :github:`18449` - [Coverity CID :203458]Integer handling issues in /tests/lib/fdtable/src/main.c
* :github:`18450` - [Coverity CID :203505]Integer handling issues in /tests/lib/fdtable/src/main.c
* :github:`18448` - [Coverity CID :203429]Integer handling issues in /tests/lib/fdtable/src/main.c
* :github:`18440` - [Coverity CID :203439]Memory - corruptions in /tests/kernel/mem\_protect/protection/src/main.c
* :github:`18441` - [Coverity CID :203460]Memory - corruptions in /tests/kernel/mem\_protect/protection/src/main.c
* :github:`18373` - [Coverity CID :203399]API usage errors in /samples/boards/olimex\_stm32\_e407/ccm/src/main.c
* :github:`18341` - settings: test setting FS back-end using littlefs
* :github:`18340` - settings: make NVS the default backend
* :github:`18308` - net: TCP/IPv6 set of fragmented packets causes Zephyr to quit
* :github:`18305` - Native Posix target can not use features with newlib dependencies
* :github:`18297` - Bluetooth: SMP: Pairing issues
* :github:`18282` - tests/kernel/sched/schedule\_api/ fails on LPC54114\_m4
* :github:`18160` - Cleanup dts compatible for "nxp,kinetis-sim" on nxp\_ke1xf
* :github:`18143` - stm32f SPI Slave TX does not work correctly, but occurs OVERRUN err
* :github:`18138` - xtensa arch has two different implementations
* :github:`18105` - BSD socket offload with IPv4 and IPv6 disabled breaks many client-based net samples
* :github:`18031` - samples/shields/x\_nucleo\_iks01a3 test is stucking due to dca45cb commit
* :github:`17998` - STM32 (Nucleo L476RG) SPI pins floating
* :github:`17983` - Bluetooth: Re-establish security before notifications/indications can be sent
* :github:`17949` - stm32 i2c driver has problems with AHB\_PRESCALER, APB1\_PRESCALER, APB2\_PRESCALER
* :github:`17892` - arch/x86: clean up segmentation.h
* :github:`17888` - arch/x86: remove IAMCU ABI support
* :github:`17832` - x86: update mmustructs.h and x86\_mmu.c to support long mode
* :github:`17829` - support default property values in devicetree bindings
* :github:`17805` - [Zepyhr v1.14.0 and master] Unable to run commands of mcumgr tool over UART like reset
* :github:`17781` - Question:Is it possible to connect the device on internet using bluetooth connection?
* :github:`17645` - VSCode debugging Zephyr application
* :github:`17626` - Change sanitycheck to use 'gcovr' instead of 'lcov'
* :github:`17625` - driver: gpio: PCAL9535A: can't write to register (read is possible)
* :github:`17548` - Can't set thread name with k\_thread\_create prevents useful tracing information
* :github:`17546` - Bluetooth: Central Scan fails continuously if last connect attempt failed to complete
* :github:`17454` - Bluetooth: Mesh: Add provisioner support
* :github:`17443` - Kconfig: move arch-specific stack sizes to arch trees?
* :github:`17430` - arch/x86: drivers/interrupt\_controller/system\_apic.c improperly classifies IRQs
* :github:`17361` - \_THREAD\_QUEUED overlaps with x86 \_EXC\_ACTIVE in k\_thread.thread\_state
* :github:`17337` - ArmV7-M mpu sub region alignment
* :github:`17239` - Too many open files crash when running "sanitycheck" with no arguments
* :github:`17234` - CONFIG\_KERNEL\_ENTRY appears to be superfluous
* :github:`17133` - arch/x86: x2APIC EOI should be inline
* :github:`17104` - arch/x86: fix -march flag for Apollo Lake
* :github:`17064` - drivers/serial/uart\_ns16550: CMD\_SET\_DLF should be removed
* :github:`17004` - arch/x86: build errors with newest build-grub.sh scripts
* :github:`16900` - Inline assembly in Arm z\_arch\_switch\_to\_main\_thread missing clobber list
* :github:`16880` - Systematic \*-zephyr-eabi/bin/ld: warning: toolchain\_is\_ok cannot find entry symbol \_start; defaulting to 000::00XXXXX
* :github:`16791` - build system does not see changes in DTS dependencies
* :github:`16723` - nrfx: uart: power management does not include CTS/RTS pins
* :github:`16721` - PCIe build warnings from devicetree
* :github:`16673` - usb\_dc\_stm32: If i remove the cable while writing, the program will freeze.
* :github:`16599` - drivers: usb\_dc\_nrfx: unstable handling of hosts suspend/resume
* :github:`16529` - LTS 1.14.0: sanitycheck: Cannot identify OOT boards and shields
* :github:`16452` - drivers: ethernet: stm32, sam, mcux: LAA bit not set
* :github:`16421` - drivers: rtc: stm32: correct tm\_mon conversion
* :github:`16376` - posix ext: Implement eventfd()
* :github:`16320` - The routing option CONFIG\_NET\_ROUTING needs clarification
* :github:`16223` - stm32: Unable to send 64 byte packet over control endpoint
* :github:`16167` - Implement interrupt driven GPIO on LPC families
* :github:`16097` - STM32 Ethernet driver should be able to detect the carrier state
* :github:`16041` - stm32f407 flash erase error sometimes
* :github:`16035` - facing problem with SDHC driver disk mount, need help to debug better
* :github:`16032` - Socket UDP: Low transmission efficiency
* :github:`16031` - Toolchain abstraction
* :github:`15912` - add Reject as an option to pull request reviews
* :github:`15881` - tests/net/buf fails on qemu\_x86\_64
* :github:`15841` - Support AT86RF233
* :github:`15604` - Suspicious PCI and build\_on\_all default test coverage
* :github:`15603` - Unable to use C++ Standard Library
* :github:`15598` - Standard devicetree connectors for boards
* :github:`15494` - 2.0 Release Checklist
* :github:`15359` - The docs incorrectly state that common.dts integrates with mcuboot
* :github:`15323` - blink\_led sample does not work on most of the nRF boards
* :github:`15196` - logging: Support for blocking deferred logging
* :github:`15027` - doc: PDF generation broken
* :github:`14906` - USB: NXP Device controller does not pass testusb tests
* :github:`14683` - need end-to-end memory protection samples
* :github:`13725` - drivers: ssd1306: When 128x32 is used, only half of the screen is output.
* :github:`13708` - No Arduino interface definition for Nordic dev. kits
* :github:`13417` - tests/drivers/watchdog/wdt\_basic\_api/testcase.yaml: test\_wdt\_no\_callback() failed at "Waiting to restart MCU"
* :github:`13000` - sanitycheck serializes running tests on ARC simulator
* :github:`12969` - settings: loading key-value pairs for given subtree
* :github:`12965` - POSIX subsys: Need more fine-grained enable options
* :github:`12961` - ARM Memory Protection functions not invoked in SWAP for ARMv6/ARMv8-M Baseline
* :github:`12703` - how to configure interrupt signals on shields via device tree?
* :github:`12677` - USB: There are some limitations for users to process descriptors
* :github:`12653` - Sanitycheck should not write results into scripts/sanity\_chk
* :github:`12535` - Bluetooth: suspend private address (RPA) rotating
* :github:`12509` - Fix rounding in \_ms\_to\_ticks()
* :github:`12504` - STM32: add USB\_OTG\_HS example
* :github:`12206` - OpenThread apps want to download and build OpenThread every time!
* :github:`12114` - assertion using nRF5 power clock with BLE and nRF5 temp sensor
* :github:`11743` - logging: add user mode access
* :github:`11717` - qemu\_x86 's SeaBIOS clears the screen every time it runs
* :github:`11655` - Alleged multiple design and implementation issues with logging
* :github:`11501` - RFC: Improve CI and add more status items
* :github:`10748` - Work waiting on pollable objects
* :github:`10701` - API: Prefix (aio\_) conflict between POSIX AsyncIO and Designware AnalogIO Comparator
* :github:`10503` - User defined USB function & usb\_get\_device\_descriptor()
* :github:`10338` - Add PyLint checking of all python scripts in CI
* :github:`10256` - Add support for shield x-nucleo-idb05a1
* :github:`9482` - Enable mpu on lpc54114
* :github:`9249` - Get non ST, STM32 Based boards compliant with default configuration guidelines
* :github:`9248` - Get Olimex boards compliant with default configuration guidelines
* :github:`9245` - Get TI SoC based boards compliant with default configuration guidelines
* :github:`9244` - Get SILABS board compliant with default configuration guidelines
* :github:`9243` - Get NXP SoC based boards compliant with default configuration guidelines
* :github:`9241` - Get ATMEL SoC based boards compliant with default configuration guidelines
* :github:`9240` - Get ARM boards compliant with default configuration guidelines
* :github:`9239` - Get NIOS boards compliant with default configuration guidelines
* :github:`9237` - Get RISCV boards compliant with default configuration guidelines
* :github:`9236` - Get X86 boards compliant with default configuration guidelines
* :github:`9235` - Get XTENSA boards compliant with default configuration guidelines
* :github:`9193` - STM32: Move DMA driver to LL/HAL and get it STM32 generic
* :github:`8758` - All nRF drivers: migrate configuration from Kconfig to DTS
* :github:`7909` - tests/kernel/common.test\_bitfield fails on max10
* :github:`7375` - Codecov does not report coverage of code that is not covered by the native\_posix test suite
* :github:`7213` - DTS should use (one or more) prefixes on all defines
* :github:`6991` - Enhance test reporting and maintain one source for testcase meta data
* :github:`6858` - Default board configuration guidelines
* :github:`6446` - sockets: Accept on non-blocking socket is currently blocking
* :github:`6152` - Inter-applications flash layout exchange mechanism
* :github:`5138` - dts: boards: provide generic dtsi file for 'generic' boards
* :github:`4028` - C++ 11 Support
* :github:`3981` - ESP32 uart driver does not support Interrupt/fifo mode
* :github:`3877` - Use mbedtls from Zephyr instead of openthread
* :github:`652` - Provide a mean to find tests with 0 platforms due to bad filtering
* :github:`3497` - refactor \_NanoFatalErrorHandler
* :github:`3181` - scalable solution for test case stack sizes
* :github:`3124` - Atmel SAM RTC driver
* :github:`3056` - arch-specific inline functions cannot manipulate \_kernel
* :github:`2686` - Add qemu\_cortex\_m0/m0+ board.
* :github:`2490` - Provide sanity test cases for NANO\_ESF/NANO\_ISF structures
* :github:`2144` - clearly document internal kernel interfaces

---

### Doc Releases Release Notes 2.2 (`doc/releases/release-notes-2.2.rst`)

:orphan:

.. _zephyr_2.2:
.. _zephyr_2.2.1:

Zephyr 2.2.1
#############

This is a maintenance release for Zephyr 2.2 with fixes.

See :ref:`zephyr_2.2.0` for the previous version release notes.

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

The following security vulnerabilities (CVE) were addressed in this release:

  * Fix CVE-2020-10028
  * Fix CVE-2020-10060
  * Fix CVE-2020-10063
  * Fix CVE-2020-10066

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

Issues Fixed
************

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

* :github:`23494` - Bluetooth: LL/PAC/SLA/BV-01-C fails if Slave-initiated Feature Exchange is disabled
* :github:`23485` - BT: host: Service Change indication sent regardless of whether it is needed or not.
* :github:`23482` - 2M PHY + DLE and timing calculations on an encrypted link are wrong
* :github:`23070` - Bluetooth: controller: Fix ticker implementation to avoid catch up
* :github:`22967` - Bluetooth: controller: ASSERTION FAIL on invalid packet sequence
* :github:`24183` - [v2.2] Bluetooth: controller: split: Regression slave latency during connection update
* :github:`23805` - Bluetooth: controller: Switching to non conn adv fails for Mesh LPN
* :github:`24086` - Bluetooth: SMP: Existing bond deleted on pairing failure
* :github:`24211` - [v2.2.x] lib: updatehub: Not working on Zephyr 2.x
* :github:`24601` - Bluetooth: Mesh: Config Client's net_key_status pulls two key indexes, should pull one.
* :github:`25067` - Insufficient ticker nodes for vendor implementations
* :github:`25350` - Bluetooth: controller: Data transmission delayed by slave latency
* :github:`25483` - Bluetooth: controller: split: feature exchange not conform V5.0 core spec
* :github:`25478` - settings_runtime_set() not populating bt/cf
* :github:`25447` - cf_set() returns 0 when no cfg is available

.. _zephyr_2.2.0:

Zephyr 2.2.0
############

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

Major enhancements with this release include:

* We added initial support for 64-bit ARMv8-A architecture (Experimental).
* CANopen protocol support through 3rd party CANopenNode stack
* LoRa support was added through integration of the Semtech LoRaWAN endpoint
  stack and addition of a new SX1276 LoRa modem driver.

The following sections provide detailed lists of changes by component.

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

The following security vulnerabilities (CVEs) were addressed in this release:

  * Fix CVE-2020-10019
  * Fix CVE-2020-10021
  * Fix CVE-2020-10023
  * Fix CVE-2020-10024
  * Fix CVE-2020-10026
  * Fix CVE-2020-10027
  * Fix CVE-2020-10028
  * Fix CVE-2020-10058

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

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

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

* Settings

  * SETTINGS_USE_BASE64, encoding values in base64 is marked for removal.

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

* GPIO

  * GPIO API has been reworked to support flags known from Linux DTS GPIO
    bindings. They will typically be defined in the board DTS file

    - GPIO_ACTIVE_LOW, GPIO_ACTIVE_HIGH used to set pin active level
    - GPIO_OPEN_DRAIN, GPIO_OPEN_SOURCE used to configure pin as open drain or
      open source
    - GPIO_PULL_UP, GPIO_PULL_DOWN used to configure pin bias

  * Reading / writing of pin logical level is supported by gpio_pin_get,
    gpio_pin_set functions.
  * Reading / writing of pin physical level is supported by gpio_pin_get_raw,
    gpio_pin_set_raw functions.
  * New set of port functions that operate simultaneously on multiple pins
    that belong to the same controller.
  * Interrupts should be configured by a dedicated
    gpio_pin_interrupt_configure() function. Configuring interrupts via
    gpio_pin_configure() is still supported but this feature will be removed
    in future releases.
  * New set of flags allows to set arbitrary interrupt configuration (if
    supported by the driver) based on pin physical or logical levels.
  * New set of flags to configure pin as input, output or in/out as well as set
    output initial state.
  * Majority of the old GPIO API has been deprecated. While the care was taken
    to preserve backward compatibility due to the scope of the work it was not
    possible to fully achieve this goal. We recommend to switch to the new GPIO
    API as soon as possible.
  * Areas where the deprecated API may behave differently to the original old
    implementation are:

    - Configuration of pin interrupts, especially involving GPIO_INT_ACTIVE_LOW
      and GPIO_POL_INV flags.
    - Behavior of gpio_pin_configure() when invoked without interrupt related
      flags. In the new implementation of this deprecated functionality the
      interrupts remain unmodified. In the original implementation some of the
      GPIO drivers would disable the interrupts.

  * Several drivers that rely on the functionality provided by the GPIO API
    were reworked to honor pin active level. Any external users of these
    drivers will have to update their DTS board files.

    - bluetooth/hci/spi.c
    - display/display_ili9340.c
    - display/ssd1306.c
    - ieee802154/ieee802154_mcr20a.c
    - ieee802154/ieee802154_rf2xx.c
    - lora/sx1276.c
    - wifi/eswifi/eswifi_core.c
    - majority of the sensor drivers

* PWM

  * The pwm_pin_set_cycles(), pwm_pin_set_usec(), and
    pwm_pin_set_nsec() functions now take a flags parameter. The newly
    introduced flags are PWM_POLARITY_NORMAL and PWM_POLARITY_INVERTED
    for specifying the polarity of the PWM signal. The flags parameter
    can be set to 0 if no flags are required (the default is
    PWM_POLARITY_NORMAL).
  * Similarly, the pwm_pin_set_t PWM driver API function function now
    takes a flags parameter. The PWM controller driver must check the
    value of the flags parameter and return -ENOTSUP if any
    unsupported flag is set.

* USB

  * The usb_enable() function, which was previously invoked automatically
    by the USB stack, now needs to be explicitly called by the application
    in order to enable the USB subsystem.
  * The usb_enable() function now takes a parameter, usb_dc_status_callback
    which can be set by the application to a callback to receive status events
    from the USB stack. The parameter can also be set to NULL if no callback is required.

* nRF flash driver

  * The nRF Flash driver has changed its default write block size to 32-bit
    aligned. Previous emulation of 8-bit write block size can be selected using
    the CONFIG_SOC_FLASH_NRF_EMULATE_ONE_BYTE_WRITE_ACCESS Kconfig option.
    Usage of 8-bit write block size emulation is only recommended for
    compatibility with older storage contents.

* Clock control

  * The callback prototype (clock_control_cb_t) has now additional argument
    (clock_control_subsys_t) indicating which clock subsystem got started.

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

* Shell

  * SHELL_CREATE_STATIC_SUBCMD_SET (deprecated), replaced by
    SHELL_STATIC_SUBCMD_SET_CREATE
  * SHELL_CREATE_DYNAMIC_CMD (deprecated), replaced by SHELL_DYNAMIC_CMD_CREATE

* Newtron Flash File System (NFFS) was removed. NFFS was removed since it has
    serious issues, not fixed since a long time. Where it was possible
    NFFS usage was replaced by LittleFS usage as the better substitute.

Kernel
******

* Addressed some race conditions observed on SMP-enabled systems
* Propagate a distinct error code if a workqueue item is submitted that
  has already been completed
* Disable preemption when handing fatal errors
* Fix an issue with the system call stack frame if the system call is
  preempted and then later tries to Z_OOPS()
* add k_thread_stack_space_get() system call for analyzing thread stack
  space. Older methods which had problems in some cases or on some
  architectures like STACK_ANALYZE() are now deprecated.
* Many kernel object APIs now optionally return runtime error values
  instead of relying on assertions. Whether these return values, fail
  assertions, or do no checking at all is controlled by the new
  Kconfig options ASSERT_ON_ERRORS, NO_RUNTIME_CHECKS, RUNTIME_ERROR_CHECKS.
* Cleanups to the arch_cpu_start() API
* Spinlock validation now dumps the address of the incorrectly used spinlock
* Various improvements to the assertion mechanism
* k_poll() may be passed 0 events, in which case it just puts the caller to
  sleep
* Add k_thread_foreach_unlocked() API
* Add an assertion if k_sleep() is called from an ISR
* Numerous 64-bit fixes, mostly related to data type sizes
* k_mutex_unlock() is now correctly a rescheduling point
* Calling k_thread_suspend() on the current thread now correctly invokes
  the scheduler
* Calling k_thread_suspend() on any thread cancels any pending timeouts for
  that thread
* Fix edge case in meta-IRQ preemption of co-operative threads

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

* ARC:

  * Fixed several irq-handling related issues

* ARM:

  * Added initial support for ARMv8-A 64-bit architecture (Experimental)
  * Added support for Direct Dynamic Interrupts in ARM Cortex-M
  * Fixed several critical bugs in ARM Cortex-R architecture port
  * Fixed several critical bugs in Stack Limit checking for ARMv8-M
  * Added QEMU emulation support for ARM Cortex-A53
  * Enhanced QEMU emulation support for ARM Cortex-R architecture
  * Enhanced test coverage for ARM-specific kernel features
  * Added support for GIC SGI and PPI interrupt types
  * Refactored GIC driver to support multiple GIC versions

* POSIX:

  * N/A

* RISC-V:

  * N/A

* x86:

  * Fix an issue with Kconfig values larger than INT_MAX
  * Fix an issue where callee-saved registers could be unnecessarily
    saved on the stack when handling exceptions on x86_64
  * Fix a potential race with saving RFLAGS on context switch on x86_64
  * Enable 64-bit mode and X2APIC for the 'acrn' target
  * Add a poison value of 0xB9 to RIP if a thread is dispatched on multiple
    cores
  * Implement CONFIG_USERSPACE on x86_64
  * Fix an issue where reserved memory could be overwritten when loading the
    Zephyr image on qemu_x86_64
  * x86_64 will now exit QEMU when encountering a fatal error, much like
    32-bit already does
  * Cleanups and improvements to exception debug messages

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

* Added support for these SoC series:

.. rst-class:: rst-columns

   * Atmel SAM4E
   * Atmel SAMV71
   * Broadcom BCM58400
   * NXP i.MX RT1011
   * Silicon Labs EFM32GG11B
   * Silicon Labs EFM32JG12B
   * ST STM32F098xx
   * ST STM32F100XX
   * ST STM32F767ZI
   * ST STM32L152RET6
   * ST STM32L452XC
   * ST STM32G031
   * Intel Apollolake Audio DSP

* Added support for these Xtensa boards:

  .. rst-class:: rst-columns

   * Up Squared board Audio DSP

* Added support for these ARM boards:

  .. rst-class:: rst-columns

   * Atmel SAM 4E Xplained Pro
   * Atmel SAM E54 Xplained Pro
   * Atmel SAM V71 Xplained Ultra
   * Broadcom BCM958401M2
   * Cortex-A53 Emulation (QEMU)
   * Google Kukui EC
   * NXP i.MX RT1010 Evaluation Kit
   * Silicon Labs EFM32 Giant Gecko GG11
   * Silicon Labs EFM32 Jade Gecko
   * ST Nucleo F767ZI
   * ST Nucleo G474RE
   * ST Nucleo L152RE
   * ST Nucleo L452RE
   * ST STM32G0316-DISCO Discovery kit
   * ST STM32VLDISCOVERY

* Removed support for these ARM boards:

  .. rst-class:: rst-columns

     * TI CC2650


* Added support for these following shields:

  .. rst-class:: rst-columns

     * ST7789V Display generic shield
     * TI LMP90100 Sensor Analog Frontend (AFE) Evaluation Board (EVB)

* Removed support for these following shields:

  .. rst-class:: rst-columns

     * Link board CAN

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

* ADC

  * Added LMP90xxx driver with GPIO

* Audio

  * N/A

* Bluetooth

  * Update SPI driver to new GPIO API
  * Minor fixes to H:5 (Three-wire UART) driver

* CAN

  * Support for CAN_2 on STM32, but no simultaneous use of CAN_1 and CAN_2.
  * Support for STM32F3 and STM32F4 series
  * Added SocketCAN support to mcux flexcan driver
  * Fixed bit timing conversion in stm32 driver
  * Introduced can-primary device tree alias

* Clock Control

  * Modified driver for nRF platform to use single device with multiple
    subsystems, one for each clock source.

* Console

  * N/A

* Counter

  * The counter_read() API function is deprecated in favor of
    counter_get_value(). The new API function adds a return value for
    indicating whether the counter was read successfully.
  * Added missing syscalls

* Crypto

  * Added AES GCM, ECB, and CBC support to crypto_mtls_shim
  * Added stm32 CRYP driver

* Debug

  * N/A

* Display

  * Added generic display driver sample
  * Added support for BGR565 pixel format
  * Added support for LVGL v6.1
  * Introduced KSCAN based ft5336 touch panel driver
  * Added support for LVGL touch input device

* DMA

  * dw: renaming cavs drivers into DesignWare
  * stm32: improvements over channels support

* EEPROM

  * Added EEPROM driver for STM32L0 and STM32L1 SoC series
  * Added EEPROM simulator (replacing native_posix EEPROM driver)

* Entropy

  * Added support for sam0
  * Added LiteX PRBS module driver

* ESPI

  * N/A

* Ethernet

  * Support for SiLabs Giant Gecko GG11 Ethernet driver
  * Fixed Ethernet networking for LiteX VexRiscv

* Flash

  * Added Nordic JEDEC QSPI NOR flash driver
  * Unified native_posix flash driver with drivers/flash/flash_simulator
  * fixed: erase native_posix flash in initialization
  * extend MCUX flash drive to support LPC55xxx devices
  * stm32: Replace register accesses for Flash driver to use STM32Cube
  * Nios2: qspi unaligned read support
  * sam0: Add support for SAME54
  * Added the flash driver of the stm32f1x family

* GPIO

  * Updated all drivers to the new API
  * Added LiteX GPIO driver

* Hardware Info

  * N/A

* I2C

  * Enabled interrupts by default in stm32 driver
  * Added I2C shell with scan command
  * Added LiteX I2C controller driver
  * Added STM32G0X support to stm32 driver
  * Added support for bus idle timeout property to mcux lpspi driver
  * Added support for SAME54 to sam0 driver

* I2S

  * N/A

* IEEE 802.15.4

  * Add support for IEEE 802.15.4 rf2xxx driver

* Interrupt Controller

  * Added support for multiple GIC versions
  * Renamed s1000 driver to cavs
  * Added SweRV Programmable Interrupt Controller driver
  * Fixed invalid channel bug for RV32M1 interrupt controller

* IPM

  * N/A

* Keyboard Scan

  * Added ft5336 touch panel driver

* LED

  * N/A

* LED Strip

  * Fixed up ws2812 driver

* LoRa

  * Added APIs and drivers needed to support LoRa technology by reusing the
    LoRaMac-node library.

* Modem

  * Add support for generic GSM modem

* Neural Net

  * N/A

* PCIe

  * N/A

* Pinmux

  * Removed CC2650 driver

* PS/2

  * N/A

 * PTP Clock

   * N/A

* PWM

  * Added RV32M1 timer/PWM driver
  * Added LiteX PWM peripheral driver
  * Added support for intverted PWM signals

* Sensor

  * Fixed DRDY interrupt in lis3mdl driver
  * Added nxp kinetis temperature sensor driver
  * Reworked ccs811 driver
  * Fixed tmp007 driver to use i2c_burst_read
  * Introduced sensor shell module
  * Added ms5607 driver

* Serial

  * nRF UARTE driver support TX only mode with receiver permanently disabled.
  * Enabled shared interrupts support in uart_pl011 driver
  * Implemented configure API in ns16550 driver
  * Removed cc2650 driver
  * Added async API system calls

* SPI

  * Added support for samv71 to sam driver
  * Added support for same54 support to sam0 driver
  * Added PM busy state support in DW driver
  * Added Gecko SPI driver
  * Added mcux flexcomm driver

* Timer

  * Optimized reads of MTIME/MTIMECMP on 64-bit RISC-V
  * Added per-core ARM architected timer driver
  * Added support for same54 to sam0 rtc timer driver

* USB

  * Add support for SAMV71 SoC
  * Add support for SAME54 SoC
  * Extend USB device support to all NXP IMX RT boards

* Video

  * N/A

* Watchdog

  * Added SiLabs Gecko watchdog driver
  * Added system calls
  * Fixed callback call on stm32 wwdg enable

* WiFi

  * Reworked offloading mechanism in eswifi and simplelink drivers

Networking
**********

* Add support to configure OpenThread Sleepy End Device (SED)
* Add 64-bit support to net_buf APIs
* Add support for IEEE 802.15.4 rf2xxx driver
* Add TLS secure renegotiation support
* Add support for Timestamp and Record Route IPv4 options.
  They are only used for ICMPv4 Echo-Request packets.
* Add sample cloud application that shows how to connect to Azure cloud
* Add optional timestamp resource to some of the LWM2M IPSO objects
* Add support to poll() which can now return immediately when POLLOUT is set
* Add support to PPP for enabling connection setup to Windows
* Add signed certificate support to echo-server sample application
* Add support for handling multiple simultaneous mDNS requests
* Add support for SiLabs Giant Gecko GG11 Ethernet driver
* Add support for generic GSM modem which uses PPP to connect to data network
* Add UTC offset and timezone support to LWM2M
* Add RX time statistics support to packet socket
* Update ACK handling in IEEE 802.154 nrf5 driver and OpenThread
* Update MQTT PINGREQ count handling
* Update wpan_serial sample to support more boards
* Update Ethernet e1000 driver debugging prints
* Update OpenThread to use settings subsystem
* Update IPv6 to use interface prefix in routing
* Update socket offloading support to support multiple registered interfaces
* Fix checks when waiting network interface to come up in configuration
* Fix zperf sample issue when running out of network buffers
* Fix PPP IPv4 Control Protocol (IPCP) handling
* Fix native_posix Ethernet driver to read data faster
* Fix PPP option handling
* Fix MQTT to close connection faster
* Fix 6lo memory corruption during uncompression
* Fix echo-server sample application accept handling
* Fix Websocket to receive data in small chunks
* Fix Virtual LAN (VLAN) support to add link local address to network interface
* Various fixes to new TCP stack implementation
* Remove NATS sample application

CAN Bus
*******

* CANopen protocol support through 3rd party CANopenNode stack.
* Added native ISO-TP subsystem.
* Introduced CAN-PRIMARY alias.
* SocketCAN for MCUX flexcan.

Bluetooth
*********

* Host:

  * GAP: Add dynamic LE scan listener API
  * GAP: Pre-allocate connection objects for connectable advertising and
    whitelist initiator.
  * GAP: Fixes for multi-identity support
  * GAP: RPA timeout handling fixes
  * GAP: Add remote version information
  * GATT: Add return value to cfg_write callback
  * L2CAP: move channel processing to the system workqueue
  * L2CAP: multiple fixes for credit-based flowcontrol
  * SMP: Add pairing_accept callback
  * SMP: Fix Security Manager timeout handling

* Mesh:

  * Add support for Mesh Configuration Database
  * Multiple fixes to Friendship feature
  * Add support for sending segmented control messages
  * Add support for sending reliable model publication messages

* BLE split software Controller:

  * Multiple fixes, including all those required to pass qualification
  * Implemented software-deferred privacy for platforms without built-in
    address resolution support
  * Added dynamic TX power control, including a set of vendor-specific commands
    to read and write the TX power
  * Added a Kconfig option, BT_CTLR_PARAM_CHECK, to enable additional parameter
    checking
  * Added basic support for SMI (Stable Modulation Index)
  * Ticker: Implemented dynamic rescheduling
  * Nordic: switched to using a single clock device for clock control
  * openisa: Added encryption and decryption support

* BLE legacy software Controller:

  * Multiple fixes
  * Added dynamic TX power control support

USB Device Stack
****************

* Stack:

  * API: Add support for user device status callback
  * Rework switching to alternate interface
  * Make USB Descriptor power options configurable
  * Derive USB device Serial Number String from HWINFO (required by USB MSC)
  * Move USB transfer functions to appropriate file as preparation for
    the rework
  * Windows OS compatibility: Set USB version to 2.1 when using BOS descriptor
  * Convert VBUS control to new GPIO API

* Classes:

  * CDC ACM: Memory and performance improvements, avoid ZLP during IN transactions
  * DFU: Limit upload length during DFU_UPLOAD to the request buffer size
  * Loopback: Re-trigger usb_write after interface configuration event

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

* The minimum Python version supported by Zephyr's build system and tools is
  now 3.6.
* Renamed :file:`generated_dts_board.h` and :file:`generated_dts_board.conf` to
  :file:`devicetree.h` and :file:`devicetree.conf`, along with various related
  identifiers. Including :file:`generated_dts_board.h` now generates a warning
  saying to include :file:`devicetree.h` instead.

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

* LoRa

  * LoRa support was added through official LoRaMac-node reference
    implementation.

* Logging

  * Improvements in immediate mode: less interrupts locking, better RTT usage,
    logging from thread context.
  * Improved notification about missing log_strdup.

* mbedTLS updated to 2.16.4

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.

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

* settings: include missing API subgoups into the documentation
* Documentation for new boards and samples.
* Improvements and clarity of API documentation.

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

* Added sample for show settings subsystem API usage

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

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

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title

* :github:`23351` - boards: nucle_g474re: west flash doesn't work
* :github:`23321` - Bluetooth: LE SC OOB authentication in central connects using different RPA
* :github:`23310` - GUI: LVGL: possible NULL dereference
* :github:`23281` - UART console input does not work on SAM E5x
* :github:`23268` - Unnecessary privileged stacks with CONFIG_USERSPACE=y
* :github:`23244` - kernel.scheduler fails on frdmkw41z
* :github:`23231` - RISCV Machine Timer consistently interrupts long running system after soft reset
* :github:`23221` - status register value always reads 0x0000 in eth_mcux_phy_setup
* :github:`23209` - Bug in tls_set_credential
* :github:`23208` - Can not flash test images into up_squared board.
* :github:`23202` - Macro value for 10 bit ADC is wrong in MEC driver.
* :github:`23198` - rf2xx driver uses mutex in ISR
* :github:`23173` - west flash --nobuild,   west flash-signed
* :github:`23172` - Common west flash, debug arguments like --hex-file can't be used from command line
* :github:`23169` - "blinky" sample fails to build for BBC MicroBit (DT_ALIAS_LED0_GPIOS_CONTROLLER undefined)
* :github:`23168` - Toolchain docs: describe macOS un-quarantine procedure
* :github:`23165` - macOS setup fails to build for lack of "elftools" Python package
* :github:`23148` - bme280 sample does not compile
* :github:`23147` - tests/drivers/watchdog/wdt_basic_api failed on mec15xxevb_assy6853 board.
* :github:`23121` - Bluetooth: Mesh: Proxy servers only resends segments to proxy
* :github:`23110` - PTS: Bluetooth: GATT/SR/GAS/BV-07-C
* :github:`23109` - LL.TS Test LL/CON/SLA/BV-129-C fails (split)
* :github:`23072` - #ifdef __cplusplus missing in tracking_cpu_stats.h
* :github:`23069` - Bluetooth: controller: Assert in data length update procedure
* :github:`23050` - subsys/bluetooth/host/conn.c: conn->ref is not 0 after disconnected
* :github:`23047` - cdc_acm_composite sample doesn't catch DTR from second UART
* :github:`23035` - dhcpv4_client sample not working on sam e70
* :github:`23023` - Bluetooth: GATT CCC problem (GATT Server)
* :github:`23015` - Ongoing LL control procedures fails with must-expire latency (BT_CTLR_CONN_META)
* :github:`23004` - Can't use west to flash test images into up_squared board.
* :github:`23002` - unknown type name 'class'
* :github:`22999` - pend() assertion can allow user threads to crash the kernel
* :github:`22985` - Check if Zephyr is affected by SweynTooth vulnerabilities
* :github:`22982` - PTS: Test framework: Bluetooth: GATT/SR/GAS/BV-01-C,  GATT/SR/GAS/BV-07-C - BTP Error
* :github:`22979` - drivers: hwinfo: Build fails on some SoC
* :github:`22977` - ARM Cortex-M4 stack offset when not using Floating point register sharing
* :github:`22968` - Bluetooth: controller: LEGACY: ASSERTION failure on invalid packet sequence
* :github:`22967` - Bluetooth: controller: ASSERTION FAIL on invalid packet sequence
* :github:`22945` - Bluetooth: controller: ASSERTION FAIL Radio is on during flash operation
* :github:`22933` - k_delayed_work_submit_to_queue returns error code when resubmitting previously completed work.
* :github:`22931` - GPIO callback is not triggered for tests/drivers/gpio/gpio_basic_api on microchip mec15xxevb_assy6853 board
* :github:`22930` - PTS: Test Framework :Bluetooth: SM/MAS/PKE/BV-01-C INCONCLUSIV
* :github:`22929` - PTS: Test Framework :Bluetooth: SM/SLA/SIP/BV-01-C Error
* :github:`22928` - PTS: Test Framework: Bluetooth: SM/MAS/SIGN/BV-03-C, SM/MAS/SIGN/BI-01-C - INCONCLUSIV
* :github:`22927` - PTS: Test Framework: Bluetooth:  SM/MAS/SIP/BV-02-C-INCONCLUSIV
* :github:`22926` - Bluetooth: Cannot establish security and discover GATT when using Split LL
* :github:`22914` - tests/arch/arm/arm_irq_vector_table crashes for nRF5340
* :github:`22912` - [Coverity CID :208406] Macro compares unsigned to 0 in subsys/net/l2/ppp/ppp_l2.c
* :github:`22902` - eth_mcux_phy_setup called before ENET clock being enabled causes CPU to hang
* :github:`22893` - Problem using 3 instances of SPIM on NRF52840
* :github:`22890` - IP networking does not work on ATSAME70 Rev. B
* :github:`22888` - Can't flash test image into iotdk board.
* :github:`22885` - Sanitycheck timeout all test cases on mec15xxevb_assy6853 board.
* :github:`22874` - sanitycheck: when someone instance get stuck because of concurrent.futures.TimeoutErro exception, it always stuck
* :github:`22858` - WDT_DISABLE_AT_BOOT, if enabled by default, degrades functionality of the watchdog
* :github:`22855` - drivers: enc28j60: waits for wrong interrupt
* :github:`22847` - Test gpio_basic_api hangs on cc3220sf_launchxl
* :github:`22828` - kernel: fatal: interrupts left locked in TEST mode
* :github:`22822` - mesh: typo in condition in comp_add_elem of cfg_srv
* :github:`22819` - #define _current in kernel_structs.h leaks into global namespace
* :github:`22814` - mcuboot doesn't build with zephyr v2.1.0
* :github:`22803` - k_delayed_work_cancel documentation inconsistent with behavior
* :github:`22801` - Bluetooth: Split LL: Reconnection problem
* :github:`22786` - Bluetooth: SM/MAS/PROT/BV-01-C FAIL
* :github:`22784` - system hangs in settings_load() nrf52840 custom board
* :github:`22774` - Set USB version to 2.1 when CONFIG_USB_DEVICE_BOS is set
* :github:`22730` - CONFIG_BT_SETTINGS writes bt/hash to storage twice
* :github:`22722` - posix: redefinition of symbols while porting zeromq to zephyr
* :github:`22720` - armv8-m: userspace: some parts in userspace enter sequence need to be atomic
* :github:`22698` - log_stack_usage: prints err: missinglog_strdup()
* :github:`22697` - nrf52 telnet_shell panic. Mutex using in ISR.
* :github:`22693` - net: config: build break when CONFIG_NET_NATIVE=n
* :github:`22689` - driver: modem: sara-u2  error when connecting
* :github:`22685` - armv8-m: userspace: syscall return sequence needs to be atomic
* :github:`22682` - arm: cortex-a: no default board for testing
* :github:`22660` - gpio: legacy level interrupt disable API not backwards compatible
* :github:`22658` - [Coverity CID :208189] Self assignment in soc/xtensa/intel_apl_adsp/soc.c
* :github:`22657` - [Coverity CID :208191] Dereference after null check in subsys/canbus/isotp/isotp.c
* :github:`22656` - [Coverity CID :208192] Out-of-bounds access in tests/subsys/canbus/isotp/implementation/src/main.c
* :github:`22655` - [Coverity CID :208193] Unchecked return value in tests/bluetooth/mesh/src/microbit.c
* :github:`22654` - [Coverity CID :208194] Arguments in wrong order in tests/subsys/canbus/isotp/implementation/src/main.c
* :github:`22653` - [Coverity CID :208196] Out-of-bounds access in drivers/eeprom/eeprom_simulator.c
* :github:`22652` - [Coverity CID :208197] Pointless string comparison in tests/drivers/gpio/gpio_basic_api/src/main.c
* :github:`22651` - [Coverity CID :208198] Logical vs. bitwise operator in boards/xtensa/up_squared_adsp/bootloader/boot_loader.c
* :github:`22650` - [Coverity CID :208199] Arguments in wrong order in tests/subsys/canbus/isotp/conformance/src/main.c
* :github:`22649` - [Coverity CID :208200] Bad bit shift operation in drivers/interrupt_controller/intc_exti_stm32.c
* :github:`22648` - [Coverity CID :208201] Out-of-bounds write in soc/xtensa/intel_apl_adsp/soc.c
* :github:`22647` - [Coverity CID :208202] Arguments in wrong order in samples/subsys/canbus/isotp/src/main.c
* :github:`22646` - [Coverity CID :208203] Missing break in switch in drivers/interrupt_controller/intc_exti_stm32.c
* :github:`22645` - [Coverity CID :208204] Arguments in wrong order in samples/subsys/canbus/isotp/src/main.c
* :github:`22644` - [Coverity CID :208205] Improper use of negative value in tests/subsys/canbus/isotp/implementation/src/main.c
* :github:`22642` - [Coverity CID :208207] Arguments in wrong order in tests/subsys/canbus/isotp/conformance/src/main.c
* :github:`22641` - [Coverity CID :208208] Arguments in wrong order in tests/subsys/canbus/isotp/implementation/src/main.c
* :github:`22640` - [Coverity CID :208209] 'Constant' variable guards dead code in drivers/gpio/gpio_sx1509b.c
* :github:`22636` - Provide Linux-style IS_ERR()/PTR_ERR()/ERR_PTR() helpers
* :github:`22626` -  tests/drivers/counter/counter_basic_api failed on frdm_k64f board.
* :github:`22624` - tests/kernel/semaphore/semaphore failed on iotdk board.
* :github:`22623` - tests/kernel/timer/timer_api failed on mimxrt1050_evk board.
* :github:`22616` - Zephyr doesn't build if x86_64 SDK toolchain isn't install
* :github:`22584` - drivers: spi: spi_mcux_dspi: bus busy status ignored in async
* :github:`22563` - Common west flash/debug etc. arguments cannot be set in CMake
* :github:`22559` - crash in semaphore tests on ARC nsim_em and nsim_sem
* :github:`22557` - document guidelines/principles related to DT usage in Zephyr
* :github:`22556` - document DT macro generation rules
* :github:`22543` - No way to address a particular FTDI for OpenOCD
* :github:`22542` - GEN_ABSOLUTE_SYM cannot handle value larger than INT_MAX on qemu_x86_64
* :github:`22539` - bt_gatt: unable to save SC: no cfg left
* :github:`22535` - drivers: lora: Make the SX1276 driver independent of loramac module
* :github:`22534` - sanitycheck qemu_x86_coverage problem with SDK 0.11.1
* :github:`22532` - Doc build warning lvgl/README.rst
* :github:`22525` - stm32f7xx.h: No such file or directory
* :github:`22522` - GPIO test code tests/drivers/gpio/gpio_basic_api does not compile for microchip board mec15xxevb_assy6853
* :github:`22519` - sanitycheck failures for native_posix
* :github:`22514` - Bluetooth: gatt: CCC cfg not flushed if device was previously paired
* :github:`22510` - Build warnings in samples/net/cloud/google_iot_mqtt
* :github:`22489` - Request to enable CONFIG_NET_PKT_RXTIME_STATS for SOCK_RAW
* :github:`22486` - Do we have driver for Texas Instruments DRV2605 haptic driver for ERM and LRA actuators?
* :github:`22484` - Linker error when building google_iot_mqtt sample with zephyr-sdk 0.11.1
* :github:`22482` - Unable to use LOG_BACKEND_DEFINE macro from log_backend.h using C++
* :github:`22478` - Bluetooth - peripheral_dis - settings_runtime_set not working
* :github:`22474` - boards that have Kconfig warnings on hello_world.
* :github:`22466` - Add hx711 sensor
* :github:`22462` - onoff: why client must be reinitialized after each transition
* :github:`22455` - How to assign USB endpoint address manually in stm32f4_disco for CDC ACM class driver
* :github:`22452` - not driver found in can bus samples for olimexino_stm32
* :github:`22447` - samples: echo_client sample breaks for UDP when larger than net if MTU
* :github:`22444` - [Coverity CID :207963] Argument cannot be negative in tests/net/socket/websocket/src/main.c
* :github:`22443` - [Coverity CID :207964] Dereference after null check in subsys/canbus/canopen/CO_driver.c
* :github:`22442` - [Coverity CID :207965] Missing break in switch in drivers/i2c/i2c_ll_stm32_v1.c
* :github:`22440` - [Coverity CID :207970] Out-of-bounds access in samples/net/sockets/websocket_client/src/main.c
* :github:`22439` - [Coverity CID :207971] Negative array index read in subsys/net/l2/ppp/ipcp.c
* :github:`22438` - [Coverity CID :207973] Out-of-bounds access in tests/net/socket/websocket/src/main.c
* :github:`22437` - [Coverity CID :207974] Out-of-bounds read in tests/net/socket/websocket/src/main.c
* :github:`22436` - [Coverity CID :207975] Logically dead code in subsys/net/l2/ppp/ipcp.c
* :github:`22435` - [Coverity CID :207977] Logically dead code in subsys/canbus/canopen/CO_driver.c
* :github:`22434` - [Coverity CID :207978] Dereference after null check in subsys/canbus/canopen/CO_driver.c
* :github:`22433` - [Coverity CID :207980] Untrusted loop bound in tests/net/socket/websocket/src/main.c
* :github:`22432` - [Coverity CID :207982] Explicit null dereferenced in tests/lib/onoff/src/main.c
* :github:`22430` - [Coverity CID :207985] Argument cannot be negative in subsys/net/lib/websocket/websocket.c
* :github:`22424` - RFC: API Change: clock_control
* :github:`22417` - Build warnings with atsamr21_xpro
* :github:`22410` - arch: arm64: ARM64 port not working on real target
* :github:`22390` - Unable to build http_get with TLS enabled on cc32xx
* :github:`22388` - Build warnings in http_get on cc3220sf_launchxl
* :github:`22366` - Bug in sockets.c (subsys\net\lib\sockets)
* :github:`22363` - drivers: clock_control: clock_stm32_ll_h7.c Move Power Configuration code
* :github:`22360` - test_mqtt_disconnect in mqtt_pubsub fails
* :github:`22356` - An application hook for early init
* :github:`22343` - stm32f303 - irq conflict between CAN and USB
* :github:`22317` - samples/arc_secure_services fails on nsim_sem
* :github:`22316` - samples/philosophers coop_only scenario times out on nsim_sem and nsim_em
* :github:`22307` - net: ip: net_pkt_pull(): packet corruption when using CONFIG_NET_BUF_DATA_SIZE larger than 256
* :github:`22304` - ARM Cortex-M STMF401RE: execution too slow
* :github:`22299` - The file flash_stm32wbx.c generates compilation error
* :github:`22297` - nucleo_wb55rg:samples/bluetooth/peripheral/sample.bluetooth.peripheral fails to build on master
* :github:`22290` - ARC crashes due to concurrent system calls
* :github:`22280` - incorrect linker routing
* :github:`22275` - arm: cortex-R & M: CONFIG_USERSPACE: intermittent Memory region write access failures
* :github:`22272` - aggregated devicetree source file needs to be restored to build directory
* :github:`22268` - timer not working when duration is too high
* :github:`22265` - Simultaneous BLE pairings getting the same slot in keys structure
* :github:`22259` - Bluetooth: default value 80 on BT_ACL_RX_COUNT clamped to 64
* :github:`22258` - sanitycheck fails to merge OVERLAY_CONFIG properly
* :github:`22257` - test wdt_basic_api failed on nucleo_f746zg
* :github:`22245` - STM32G4xx: Wrong SystemCoreClock variable
* :github:`22243` - stm32g431rb: PLL setting result to slow exccution
* :github:`22210` - Bluetooth -  bt_gatt_get_value_attr_by_uuid
* :github:`22207` - Bluetooth ：Mesh：Provison init should after proxy
* :github:`22204` - CONFIG_BT_DEBUG_LOG vs atomic operations
* :github:`22202` - bt_rand() is called over HCI when BT_HOST_CRYPTO=y, even if BT_CTLR_LE_ENC=n
* :github:`22197` - dts: gen_defines.py bails out on new path property type
* :github:`22188` - drivers: espi: xec : eSPI driver should not send VWire SUS_ACK automatically in all cases
* :github:`22177` - Adafruit M0 boards are not set up to correctly flash in their code partitions
* :github:`22171` - West bossac runner inorrectly tries to include an offset parameter when flashing
* :github:`22128` - frdm_k82f:samples/drivers/spi_fujitsu_fram/sample.drivers.spi.fujitsu_fram fails
* :github:`22107` - mdns support with avahi as client
* :github:`22106` - intermittent emulator exit on samples/userspace/shared_mem on qemu_x86_64
* :github:`22088` - Bluetooth Mesh friendship is cleared due to no Friend response reception
* :github:`22086` - L2CAP/SMP: Race condition possible in native posix central when bonding.
* :github:`22085` - HCI/CCO/BV-07-C & HCI/GEV/BV-01-C failing in EDTT
* :github:`22066` - tests/kernel/mem_pool/mem_pool_threadsafe fails reliably on m2gl025_miv
* :github:`22062` - Adafruit Feather M0 does not flash correctly - incorrect flash code offset and bossa version incompatibility
* :github:`22060` - Build fails with gnuarmemb under windows
* :github:`22051` - Bluetooth Central: Discovery of 128bit primary service fails with later versions of gcc.
* :github:`22048` - Failing LL.TS Data Length Update Tests (split)
* :github:`22037` - qemu_cortex_r5 excludes too many tests
* :github:`22036` - sanitycheck for qemu_cortex_r5 fails
* :github:`22026` - west: openocd runner fails for boards without support/openocd.cfg
* :github:`22014` - RTC prescaler overflow on nRF(52)
* :github:`22010` - Bluetooth 'central' failure on native_posix
* :github:`22003` - 'central' failure on nrf52_pca10040
* :github:`21996` - Native POSIX or QEMU X86 emulation does not detect Bluetooth HCI Vendor-Specific Extensions
* :github:`21989` - websocket: recv_msg always returns full message length on last call
* :github:`21974` - make include hierarchy consistent with expected usage
* :github:`21970` - net: dns: mDNS resolving fails when responder is also enabled
* :github:`21967` - json: json_obj_parse will modify the input string
* :github:`21962` - drivers: usb: usb_dc_stm32: does not compile for stm32f3_disco board
* :github:`21949` - net: TCP: echo server deadlock from TCP packet
* :github:`21935` - SPI - STM32: transceive() should handle null tx buffer
* :github:`21917` - cmake error with CONFIG_COUNTER and CONFIG_BT both enabled (nrf52 board)
* :github:`21914` - net: dns: Answers to multiple mDNS queries sent in parallel aren't properly handled
* :github:`21888` - Print unmet Kconfig dependency
* :github:`21875` - sanitycheck warning for silabs,gecko-spi-usart.yaml
* :github:`21869` - IPv6 neighbors get added too eagerly
* :github:`21859` - Bluetooth LE Disconnect event not received
* :github:`21854` - HCI-UART: Bluetooth ACL data packets with 251 bytes not acknowledged
* :github:`21846` - RFC: API: Counter: counter_read() has no way of indicating failure
* :github:`21837` - net: socket: Add dependency to mbedtls
* :github:`21813` - tests/kernel/timer/timer_api failed on frdm_k64f board.
* :github:`21812` - tests/arch/arm/arm_irq_advanced_features failed on reel_board.
* :github:`21800` - Xtensa doesn't save SCOMPARE1 register on context switch
* :github:`21790` - tests/kernel/timer/timer_api fails on nucleo_g071rb board
* :github:`21789` - Merge topic-gpio back to master
* :github:`21784` - sanitycheck prints some build errors directly to the console
* :github:`21780` - OpenThread fails on nRF52840 Dongle (nrf52840_pca10059)
* :github:`21775` - echo_server and 802154 not build for NRF52811
* :github:`21768` - Make [CONFIG_NET_SOCKETS_SOCKOPT_TLS] dependent on [CONFIG_MBEDTLS] in menuconfig
* :github:`21764` - [SARA-R4] MQTT publisher not working - Impossible to connect to broker
* :github:`21763` - at86rf2xx radio driver does not report whether a TX was ACKed
* :github:`21756` - tests/kernel/obj_tracing failed on mec15xxevb_assy6853 board.
* :github:`21755` - tests/drivers/adc/adc_api  failed on  mec15xxevb_assy6853 board.
* :github:`21745` - tests: counter_basic_api: Failed on stm32 based boards
* :github:`21744` - dumb_http_server_mt with overlay-tls.conf does not connect
* :github:`21735` - ARM: Cortex-M: IRQ lock/unlock() API non-functional but accessible from user mode
* :github:`21716` - nucleo_g431rb: Hello world not working
* :github:`21715` - nucleo_g431rb: Blinky too slow / wrong clock setup?
* :github:`21713` - CDC ACM USB class issue with high transfer rate and ZLP
* :github:`21702` - [Coverity CID :206599] Out-of-bounds access in tests/bluetooth/uuid/src/main.c
* :github:`21700` - [Coverity CID :206606] Out-of-bounds access in tests/bluetooth/uuid/src/main.c
* :github:`21699` - [Coverity CID :206608] Dereference null return value in tests/net/icmpv4/src/main.c
* :github:`21695` - Documentation issues on v1.14-branch block backport
* :github:`21681` - nucleo_g431rb / STM32G4: Flashing works only once
* :github:`21679` - SPI broken on stm32f412 on master
* :github:`21676` - [Coverity CID :206389] Logically dead code in subsys/testsuite/ztest/src/ztest.c
* :github:`21674` - [Coverity CID :206392] Side effect in assertion in tests/kernel/timer/starve/src/main.c
* :github:`21673` - [Coverity CID :206393] Unintentional integer overflow in drivers/sensor/ms5607/ms5607.c
* :github:`21672` - [Coverity CID :206394] Logically dead code in subsys/testsuite/ztest/src/ztest.c
* :github:`21660` - Sample projects do not build for Nucleo WB55RG
* :github:`21659` - at86rf2xx radio driver not (reliably) sending ACKs
* :github:`21650` - _TEXT_SECTION_NAME_2 on ARM Cortex-R
* :github:`21637` - sanitycheck failed issue in parallel running.
* :github:`21629` - error with 'west update' on Windows 10
* :github:`21623` - DT: accept standard syntax for phandle in chosen node
* :github:`21618` - CI failing to complete tests
* :github:`21617` - Allow per module prj.conf
* :github:`21614` - host toolchain for x86 fails on empty CMAKE_C_FLAGS
* :github:`21607` - BME680 Sensor is not building
* :github:`21601` - '!radio_is_ready()' failed
* :github:`21599` - CONFIG_HEAP_MEM_POOL_SIZE and k_malloc, k_free not working in nrf51_pca10028
* :github:`21597` - sht3xd build error on olimexino_stm32
* :github:`21591` - Timeout error for the Microchip board during Sanitycheck
* :github:`21586` - Bluetooth Mesh fail to transmit messages after some time on nRF52840
* :github:`21581` - GNU ARM Embedded link broken in Getting Started
* :github:`21571` - CONFIG_BT_CENTRAL doesnot work fine with nrf51_pca10028
* :github:`21570` - how to select usb mps for SAME70 board
* :github:`21568` - mps2_an385:tests/kernel/tickless/tickless_concept/kernel.tickless.concept  fail
* :github:`21552` - Constant disconnects while attempting BT LE multi-central application.
* :github:`21551` - gpio: xec: GPIO Interrupt is not triggered for range GPIO240_276
* :github:`21546` - SPI broken for STM32L1
* :github:`21536` - tests/subsys/fs/fat_fs_api fails on native_posix_64
* :github:`21532` - can not build the image ,No targets specified and no makefile found
* :github:`21514` - Logging - strange behaviour with RTT on nRF53
* :github:`21510` - re-v
* :github:`21493` - System tick is not running
* :github:`21483` - sanitycheck messages in CI are not informative anymore
* :github:`21475` - sanitycheck: hardware map generation unexpected exit during the first attempt
* :github:`21466` - doc: extract_content.py not copying images in a table
* :github:`21450` - sample.net.cloud.google_iot_mqtt test is failing for frdm_k64f
* :github:`21448` - nrf52840 errata_98 / 89 mixup
* :github:`21443` - "HCI_USB" sample doesn't compile with "nucleo_wb55rg" board
* :github:`21438` - sanitycheck reports "FAILED: N/A" for failed or hung tests
* :github:`21432` - watchdog subsystem has no system calls
* :github:`21431` - missing async uart.h system calls
* :github:`21429` - Impossible to override syscalls
* :github:`21426` - civetweb triggers an error on Windows with Git 2.24
* :github:`21422` - Added nucleo-f767zi board support and would like to share
* :github:`21419` - RFC: API Change: usb: Make users call usb_enable. Provide global status callback.
* :github:`21418` - Crash when suspending system
* :github:`21410` - bt_ctlr_hci: Tx Buffer Overflow on LL/CON/MAS/BV-04-C, LL/CON/SLA/BV-05-C & LL/CON/SLA/BV-06-C
* :github:`21409` - sanitycheck: cmd.exe colorized output
* :github:`21385` - board frdm_kl25z build passed, but can't flash
* :github:`21384` - RFC: API Change: PWM: add support for inverted PWM signals
* :github:`21379` - Bluetooth: Mesh: Node Reset Not Clear Bind Key Information
* :github:`21375` - GATT: gatt_write_ccc_rsp with error (0x0e) removes always beginning from subscriptions head
* :github:`21365` - implicit casts in API headers must be replaced for C++ support
* :github:`21351` - tests/drivers/counter/counter_basic_api  failed on mimxrt1050_evk board.
* :github:`21341` - conditions required for safe call of kernel operations from interrupts
* :github:`21339` - Expired IPv6 router causes an infinite loop
* :github:`21335` - net: TCP: Socket echo server does not accept incoming connections when TLS is enabled
* :github:`21328` - Apparent network context leak with offloading driver (u-blox Sara r4)
* :github:`21325` - Where should the Digital-Input, Output, ADC driver be added?
* :github:`21321` - error update for project civetweb
* :github:`21318` - CONFIG_SYS_POWER_MANAGEMENT Makes Build Fail for nRF5340 and nRF9160
* :github:`21317` - intermittent SMP crashes on x86_64
* :github:`21306` - ARC: syscall register save/restore needs backport to 1.14
* :github:`21301` - Coverage report generated for qemu_x86 board is incomplete
* :github:`21300` - pyocd flash failing on bbc_microbit
* :github:`21299` - bluetooth: Controller does not release buffer on central side after peripheral reset
* :github:`21290` - Compiler warnings in flash.h: invalid conversion from 'const void*' to 'const flash_driver_api*'
* :github:`21281` - logging: msg_free may erroneously call log_free
* :github:`21278` - How to use pwm in nrf52832 for rgb led
* :github:`21275` - kl2x soc fixup is missing I2C_1 labels
* :github:`21257` - tests/net/net_pkt failed on mimxrt1050_evk board.
* :github:`21240` - Error west flash
* :github:`21229` - cc1plus: warning: '-Werror=' argument '-Werror=implicit-int' is not valid for C++
* :github:`21202` - Required upgrade of HAL
* :github:`21186` - Gatt discover callback gives invalid pointer to primary and secondary service UUID.
* :github:`21185` - zero-latency IRQ behavior is not documented?
* :github:`21181` - devicetree should support making properties with defaults required
* :github:`21177` - Long ATT MTU reports wrong length field in write callback.
* :github:`21171` - Module Request: Optiga Trust X
* :github:`21167` - libraries.libc.newlib test fails
* :github:`21165` - Bluetooth: Mesh: Friend Clear message from a Friend node
* :github:`21162` - Sanitycheck corrupted test case names in test-report.xml files
* :github:`21161` - question: openthread with other boards
* :github:`21148` - nrf51: uart_1 does not compile
* :github:`21139` - west: runners: blackmagicprobe: Keyboard Interrupt shouldn't kill the process
* :github:`21131` - Bluetooth: host: Subscriptions not removed upon unpair
* :github:`21126` - drivers: spi_nrfx_spim: Incorrect handling of extended SPIM configuration
* :github:`21123` - sanitycheck halt some test cases with parallel running.
* :github:`21121` - netusb: RNDIS host support
* :github:`21115` - Request a new repository for the Xtensa HAL
* :github:`21105` - Bluetooth API called before finished initialization.
* :github:`21103` - Bluetooth: host: Reduce overhead of GATT subscriptions
* :github:`21099` - echo server qemu_x86 e1000 cannot generate coverage reports
* :github:`21095` - [Coverity CID :206086] Out-of-bounds access in drivers/timer/cortex_m_systick.c
* :github:`21094` - native_posix doesn't call main function that's defined in C++
* :github:`21082` - tests/kernel/timer/timer_api failing on several nRF5x SoCs
* :github:`21074` - Enhance 802.1Qav documentation
* :github:`21058` - BLE: Enable/Disable Automatic sending of Connection Parameter update request on Timeout.
* :github:`21057` - BLE: No Valid Parameter check in send_conn_le_param_update()
* :github:`21045` - log_backend.h missing include for UTIL_CAT in LOG_BACKEND_DEFINE macro
* :github:`21036` - Add SMP function similar to bt_conn_get_info
* :github:`21025` - sam_e70_xplained reboots after 35secs
* :github:`20981` - mempool: MPU fault
* :github:`20974` - file resources exceeded with sanitycheck
* :github:`20953` - usb: nrf: usb on reel board becomes unavailable if USB cable is not connected at first
* :github:`20927` - ztest_1cpu_user_unit_test() doesn't work
* :github:`20915` - doc: Kconfig section in board_porting.rst should be moved or removed
* :github:`20904` - kernel.timer.tickless is failed due to missing TEST_USERSPACE flag
* :github:`20886` - [Coverity CID :205826] Memory - corruptions in tests/subsys/fs/nffs_fs_api/common/nffs_test_utils.c
* :github:`20885` - [Coverity CID :205819] Memory - corruptions in tests/subsys/fs/nffs_fs_api/common/nffs_test_utils.c
* :github:`20884` - [Coverity CID :205799] Memory - corruptions in tests/subsys/fs/nffs_fs_api/common/nffs_test_utils.c
* :github:`20877` - [Coverity CID :205823] Null pointer dereferences in tests/kernel/fifo/fifo_timeout/src/main.c
* :github:`20802` - reschedule not done after mutex unlock
* :github:`20770` - irq locking in logging backend can cause missing interrupts
* :github:`20755` - mcuboot: add as module and verify functionality
* :github:`20749` - samples:sample.net.dns_resolve.mdns:frdmk64f ipv4dns handler has not result
* :github:`20748` - build warnings on lpcxpresso54114_m0/m4 board
* :github:`20746` - Bluetooth: Mesh: Friend node Adding another Friend Update
* :github:`20724` - Packed pointer warning in LL Controller
* :github:`20698` - Bluetooth: host: Skip pre-scan done by bt_conn_create_le if not needed
* :github:`20697` - Confusing warning during cmake
* :github:`20673` - guiconfig not working properly?
* :github:`20640` -  Bluetooth: l2cap do not recover when faced with long packets and run out of buffers
* :github:`20629` - when CONFIG_BT_SETTINGS is enabled, stack stores id in flash memory each power up of device (call to bt_enable)
* :github:`20618` - Can unicast address be relayed when send message over gatt proxy?
* :github:`20576` - DTS overlay files must include full path name
* :github:`20561` - Crypto API: Separate IV from ciphertext based on struct cipher_ctx::flags
* :github:`20535` - [Coverity CID :205619]Null pointer dereferences in /tests/net/ieee802154/fragment/src/main.c
* :github:`20497` - [Coverity CID :205638]Integer handling issues in /drivers/pwm/pwm_mchp_xec.c
* :github:`20490` - [Coverity CID :205651]Uninitialized variables in /drivers/dma/dma_stm32.c
* :github:`20484` - Tests/kernel/gen_isr_table failing when enabling WDT driver
* :github:`20426` - sensors: grove temperature and light drivers out of date
* :github:`20414` - nRF51 issues with the split link layer
* :github:`20411` - samples: lis3mdl trigger not working with x_nucleo_iks01a1
* :github:`20388` - Allow for runtime reconfiguration of SPI master / slave
* :github:`20355` - west build for zephyr/samples/net/sockets/echo_server/ on qemu_xtensa target outputs elf with panic
* :github:`20315` - zperf TCP uploader fails
* :github:`20286` - Problem building for ESP32
* :github:`20278` - Something is wrong when trying ST7789V sample
* :github:`20264` - Bluetooth: Delay advertising events instead of dropping them on collision
* :github:`20256` - settings subsystem sample
* :github:`20217` - Extend qemu_cortex_r5 test coverage
* :github:`20172` - devicetree support for compound elements
* :github:`20161` - Facing issue to setup zephyr on ubuntu
* :github:`20153` - BLE small throughput
* :github:`20140` - CMake: syscall macro's are not generated for out of tree DTS_ROOT
* :github:`20125` - Add system call to enter low power mode and reduce latency for deep sleep entry
* :github:`20026` - sanitycheck corrupts stty in some cases
* :github:`20017` - Convert GPIO users to new GPIO API
* :github:`19982` - Periodically wake up log process thread consume more power
* :github:`19922` - Linear time to give L2CAP credits
* :github:`19869` - Implement tickless capability for xlnx_psttc_timer
* :github:`19761` - tests/net/ieee802154/fragment failed on reel board.
* :github:`19737` - No Function In Zephyr For Reading BLE Channel Map?
* :github:`19666` - remove kernel/include and ``arch/*/include`` from default include path
* :github:`19643` - samples/boards/arc_secure_services fails on nsim_sem
* :github:`19545` - usb: obtain configuration descriptor's bmAttributes and bMaxPower from DT
* :github:`19540` - Allow running and testing network samples in automatic way
* :github:`19492` - sanitycheck: unreliable/inconsistent catch of ASSERTION FAILED
* :github:`19488` - Reference and sample codes to get started with the friendship feature in ble mesh
* :github:`19473` - Missing NULL parameter check in k_pipe_get
* :github:`19361` - BLE Scan fails to start when running in parallel with BLE mesh
* :github:`19342` - Bluetooth: Mesh: Persistent storage of Virtual Addresses
* :github:`19245` - Logging: Assert with LOG_IMMEDIATE
* :github:`19100` - LwM2M sample with DTLS: does not connect
* :github:`19053` - 2.1 Release Checklist
* :github:`18962` - [Coverity CID :203909]Memory - corruptions in /subsys/mgmt/smp_shell.c
* :github:`18867` - zsock_poll() unnecessarily wait when querying for ZSOCK_POLLOUT
* :github:`18852` - west flash fails for cc1352r_launchxl
* :github:`18635` - isr4 repeatedly gets triggered after test passes in tests/kernel/gen_isr_table
* :github:`18583` - hci_usb: NRF52840 connecting addtional peripheral fails
* :github:`18551` - address-of-temporary idiom not allowed in C++
* :github:`18530` - Convert GPIO drivers to new GPIO API
* :github:`18483` - Bluetooth: length variable inconsistency in keys.c
* :github:`18452` - [Coverity CID :203463]Memory - corruptions in /tests/lib/ringbuffer/src/main.c
* :github:`18447` - [Coverity CID :203400]Integer handling issues in /tests/lib/fdtable/src/main.c
* :github:`18410` - [Coverity CID :203448]Memory - corruptions in /subsys/net/lib/lwm2m/ipso_onoff_switch.c
* :github:`18378` - [Coverity CID :203537]Error handling issues in /samples/subsys/nvs/src/main.c
* :github:`18280` - tests/drivers/adc/adc_api fails on frdmkl25z
* :github:`18173` - ARM: Core Stack Improvements/Bug fixes for 2.1 release
* :github:`18169` - dts: bindings: inconsistent file names and base.yaml include of general device controllers
* :github:`18137` - Add section on IRQ generation to doc/guides/dts/index.rst
* :github:`17852` - Cmsis_rtos_v2_apis test failed on iotdk board.
* :github:`17838` - state DEVICE_PM_LOW_POWER_STATE of Device Power Management
* :github:`17787` - openocd unable to flash hello_world to cc26x2r1_launchxl
* :github:`17731` - Dynamically set TX power of BLE Radio
* :github:`17689` - On missing sensor, Init hangs
* :github:`17543` - dtc version 1.4.5 with ubuntu 18.04 and zephyr sdk-0.10.1
* :github:`17310` - boards: shields: use Kconfig.defconfig system for shields
* :github:`17309` - enhancements to device tree generation
* :github:`17102` - RFC: rework GPIO interrupt configuration
* :github:`16935` - Zephyr doc website: Delay search in /boards to the end of the search.
* :github:`16851` - west flash error on zephyr v1.14.99
* :github:`16735` - smp_svr sample does not discover services
* :github:`16545` - west: diagnose dependency version failures
* :github:`16482` - mcumgr seems to compromise BT security
* :github:`16472` - tinycrypt ecc-dh and ecc-dsa should not select entropy generator
* :github:`16329` - ztest teardown function not called if test function is interrupted
* :github:`16239` - Build: C++ compiler warning '-Wold-style-definition'
* :github:`16235` - STM32: Move STM32 Flash driver to CMSIS STM32Cube definitions
* :github:`16232` - STM32: implement pinmux api
* :github:`16202` - Improve help for west build target
* :github:`16034` - Net packet size of 64 bytes doesn't work.
* :github:`16023` - mcuboot: enabling USB functionality in MCUboot crashes zephyr application in slot0
* :github:`16011` - Increase coverage of tests
* :github:`15906` - WEST ERROR: extension command build was improperly defined
* :github:`15841` - Support AT86RF233
* :github:`15729` - flash: should write_protection be emulated?
* :github:`15657` - properly define kernel <--> arch APIs
* :github:`15611` - gpio/pinctrl: GPIO and introduce PINCTRL API to support gpio, pinctrl DTS nodes
* :github:`15593` - How to use gdb to view the stack of a thread
* :github:`15580` - SAMD21 Adafruit examples no longer run on boards
* :github:`15435` - device fails to boot when spi max frequency set above 1000000
* :github:`15278` - CANopen Support
* :github:`15229` - network tests have extremely restrictive whitelist
* :github:`15171` - BLE Throughput
* :github:`14927` - checkpatch: not expected behavior for multiple git commit check.
* :github:`14922` - samples/boards/altera_max10/pio: Error configuring GPIO PORT
* :github:`14753` - nrf52840_pca10056: Leading spurious 0x00 byte in UART output
* :github:`14668` - net: icmp4: Zephyr strips record route and time stamp options
* :github:`14650` - missing system calls in Counter driver APIs
* :github:`14639` - All tests should be SMP-safe
* :github:`14632` - Default for TLS_PEER_VERIFY socket option are set to required, may lead to confusion when running samples against self-signed certs
* :github:`14621` - BLE controller: Add support for Controller(SW deferred)-based Privacy
* :github:`14287` - USB HID Get_Report and Set_Report
* :github:`14206` - user mode documentation enhancements
* :github:`13991` - net: Spurious driver errors due to feeding packets into IP stack when it's not fully initialized (assumed reason)
* :github:`13943` - net: QEMU Ethernet drivers are flaky (seemingly after "net_buf" refactor)
* :github:`13941` - Alternatives for OpenThread settings
* :github:`13894` - stm32f429i_disc1: Add DTS for USB controller
* :github:`13403` - USBD event and composite-device handling
* :github:`13232` - native_posix doc: Add mention of virtual USB
* :github:`13151` - Update documentation on linking Zephyr within a flash partition
* :github:`12968` - dfu/mcuboot: solution for Set pending: don't crash when image slot corrupt
* :github:`12860` - No test builds these files
* :github:`12814` - TCP connet Net Shell function seems to not working when using NET_SOCKETS_OFFLOAD
* :github:`12635` - tests/subsys/fs/nffs_fs_api/common/nffs_test_utils.c fail with Assertion failure on nrf52840
* :github:`12553` - List of tests that keep failing sporadically
* :github:`12537` - potential over-use of k_spinlock
* :github:`12490` - Produced ELF does not follow the linux ELF spec
* :github:`12359` - Default address selection for IPv6 should follow RFC 6724
* :github:`12331` - Proposal to improve the settings subsystem
* :github:`12134` - I cannot see a Zephyr way to change the clock frequency at runtime
* :github:`12130` - Is zephyr targeting high-end phone or pc doing open ended computation on the roadmap?
* :github:`12027` - Make icount work for real on x86_64
* :github:`11751` - Rework exception & fatal error handling framework
* :github:`11519` - Add at least build test for cc1200
* :github:`11490` - setup_ipv6() treats event enums as bitmasks
* :github:`11296` - Possible ways to implement clock synchronisation over BLE
* :github:`11213` - NFFS: Handle unexpected Power Off
* :github:`11172` - ARM Cortex A Architecture support - ARMv8-A
* :github:`10996` - Add device tree support for usb controllers on x86
* :github:`10821` - ELCE: DT, Kconfig, EDTS path forward
* :github:`10534` - Can we get rid of zephyr-env.sh?
* :github:`10423` - log_core.h error on pointer-to-int-cast on 64bit system
* :github:`10339` - gpio: Cleanup flags
* :github:`10305` - RFC: Add pin mask for gpio_port_xxx
* :github:`9947` - CMake build architecture documentation
* :github:`9904` - System timer handling with low-frequency timers
* :github:`9873` - External flash driver for the MX25Rxx
* :github:`9748` - NFFS issue after many writes by btsettings
* :github:`9506` - Ztest becomes unresponsive while running SMP tests
* :github:`9349` - Support IPv6 privacy extension RFC 4941
* :github:`9333` - Support for STM32 L1-series
* :github:`9330` - network: clean up / implement supervisor to manage net services
* :github:`9194` - generated syscall header files don't have ifndef protection
* :github:`8833` - OpenThread: Minimal Thread Device (MTD) option is not building
* :github:`8539` - Categorize Kconfig options in documentation
* :github:`8262` - [Bluetooth] MPU FAULT on sdu_recv
* :github:`8242` - File system (littlefs & FAT) examples
* :github:`8236` - DTS Debugging is difficult
* :github:`7305` - CMake improvements to modularize gperf targets
* :github:`6866` - build: requirements: No module named yaml and elftools
* :github:`6562` - Question: Is QP™ Real-Time Frameworks/RTOS or libev supported in Zephyr? Or any plan?
* :github:`6521` - Scheduler needs spinlock-based synchronization
* :github:`6496` - Question: Is dynamical module loader supported in Zephyr? Or any plan?
* :github:`6389` - OpenThread: otPlatRandomGetTrue() implementation is not up to spec, may lead to security issues
* :github:`6327` - doc: GPIO_INT config option dependencies aren't clear
* :github:`6293` - Refining Zephyr's Device Driver Model
* :github:`6157` - SMP lacks low-power idle
* :github:`6084` - api: pinmux/gpio: It isn't possible to set pins as input and output simultaneously
* :github:`5943` - OT: utilsFlashWrite does not take into account the write-block-size
* :github:`5695` - C++ Support doesn't work
* :github:`5436` - Add LoRa Radio Support
* :github:`5027` - Enhance Testing and Test Coverage
* :github:`4973` - Provide Linux-style ERR_PTR/PTR_ERR/IS_ERR macros
* :github:`4951` - Prevent full rebuilds on Kconfig changes
* :github:`4917` - Reintroduce generic "outputexports" target after CMake migration
* :github:`4830` - device tree: generate pinmux
* :github:`3943` - x86: scope SMAP support in Zephyr
* :github:`3866` - To optimize the layout of the meta data of mem_slab & mem_pool
* :github:`3810` - application/kernel rodata split
* :github:`3717` - purge linker scripts of macro-based meta-language
* :github:`3701` - xtensa: scope MPU enabling
* :github:`3636` - Define region data structures exposed by linker script
* :github:`3490` - Move stm32 boards dts file to linux dts naming rules
* :github:`3488` - Dissociate board names from device tree file names
* :github:`3469` - Unify flash and code configuration across targets
* :github:`3429` - Add TSL2560 ambient light sensor driver
* :github:`3428` - Add HTU21D humidity sensor driver
* :github:`3427` - Add MPL3115A2 pressure sensor driver
* :github:`3397` - LLDP: Implement local MIB support for optional TLVs
* :github:`3276` - Dynamic Frequency Scaling
* :github:`3156` - xtensa: Support C++
* :github:`3098` - extend tests/kernel/arm_irq_vector_table to other platforms
* :github:`3044` - How to create a Zephyr ROM library
* :github:`2925` - cross-platform support for interrupt tables/code in RAM or ROM
* :github:`2814` - Add proper support for running Zephyr without a system clock
* :github:`2807` - remove sprintf() and it's brethen
* :github:`2664` - Running SanityCheck in Windows
* :github:`2338` - ICMPv6 "Packet Too Big" support
* :github:`2307` - DHCPv6
* :github:`1903` - Wi-Fi Host Stack
* :github:`1897` - Thread over BLE
* :github:`1583` - NFFS requires 1-byte unaligned accesses to flash
* :github:`1511` - qemu_nios2 should use the GHRD design
* :github:`1468` - Move NATS support from sample to a library + API
* :github:`1205` - C++ usage

---

### Doc Releases Release Notes 2.3 (`doc/releases/release-notes-2.3.rst`)

:orphan:

.. _zephyr_2.3:

Zephyr 2.3.0
############

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

Major enhancements with this release include:

* A new Zephyr CMake package has been introduced, reducing the need for
  environment variables
* A new Devicetree API, based on hierarchical macros, has been introduced. This
  new API allows the C code to access virtually all nodes and properties in a
  clean, organized fashion
* The kernel timeout API has been overhauled to be flexible and configurable,
  with future support for features like 64-bit and absolute timeouts in mind
* A new k_heap/sys_heap heap allocator has been introduced, with much better
  performance than the existing k_mem_pool/sys_mem_pool
* Zephyr now integrates with the TF-M (Trusted Firmware M) PSA-compliant
  framework
* The Bluetooth Low Energy Host now supports LE Advertising Extensions
* The CMSIS-DSP library is now included and integrated

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* CVE-2020-10022: UpdateHub Module Copies a Variable-Sized Hash String
  into a fixed-size array.
* CVE-2020-10059: UpdateHub Module Explicitly Disables TLS
  Verification
* CVE-2020-10061: Improper handling of the full-buffer case in the
  Zephyr Bluetooth implementation can result in memory corruption.
* CVE-2020-10062: Packet length decoding error in MQTT
* CVE-2020-10063: Remote Denial of Service in CoAP Option Parsing Due
  To Integer Overflow
* CVE-2020-10068: In the Zephyr project Bluetooth subsystem, certain
  duplicate and back-to-back packets can cause incorrect behavior,
  resulting in a denial of service.
* CVE-2020-10069: An unchecked parameter in bluetooth data can result
  in an assertion failure, or division by zero, resulting in a denial
  of service attack.
* CVE-2020-10070: MQTT buffer overflow on receive buffer
* CVE-2020-10071: Insufficient publish message length validation in MQTT

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

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>`_.

A single high-priority bug is currently open:

* :github:`23364` - Bluetooth: bt_recv deadlock on supervision timeout with
  pending GATT Write Commands

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

* HWINFO

  * The identifier data structure for hwinfo drivers is clarified.  Drivers are
    responsible for ensuring that the identifier data structure is a sequence
    of bytes. The returned ID value is not supposed to be interpreted based on
    vendor-specific assumptions of byte order and should express the identifier
    as a raw byte sequence.
    The changes have an impact on users that use the hwinfo API to identify
    their devices.
    The sam0 driver byte swaps each 32 bit word of the 128 bit identifier to
    big endian.
    The nordic driver byte swaps the entire 64 bit word to big endian.

* I2C

  * Added a new API for recovering an I2C bus from situations where the I2C
    master and one or more I2C slaves are out of synchronization (e.g. if the
    I2C master was reset in the middle of an I2C transaction or if a noise
    pulse was induced on the SCL line).

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

* Kernel

  * k_uptime_delta_32(), use k_uptime_delta()
  * Timeout values

    * All timeout values are now encapsulated k_timeout_t opaque structure when
      passing them to the kernel. If you want to revert to the previous s32_t
      type for the timeout parameter, please enable
      CONFIG_LEGACY_TIMEOUT_API

* Bluetooth

  * BT_LE_SCAN_FILTER_DUPLICATE, use BT_LE_SCAN_OPT_FILTER_DUPLICATE instead
  * BT_LE_SCAN_FILTER_WHITELIST, use BT_LE_SCAN_OPT_FILTER_WHITELIST instead
  * bt_le_scan_param::filter_dup, use bt_le_scan_param::options instead
  * bt_conn_create_le(), use bt_conn_le_create() instead
  * bt_conn_create_auto_le(), use bt_conn_le_create_auto() instead
  * bt_conn_create_slave_le(), use bt_le_adv_start() instead with
    bt_le_adv_param::peer set to the remote peers address.
  * BT_LE_ADV_* macros, use BT_GAP_ADV_* enums instead

* Boards

  * nrf51_pca10028 has been renamed to nrf51dk_nrf51422
  * nrf51_pca10031 has been renamed to nrf51dongle_nrf51422
  * nrf52810_pca10040 has been renamed to nrf52dk_nrf52810
  * nrf52_pca10040 has been renamed to nrf52dk_nrf52832
  * nrf52833_pca10100 has been renamed to nrf52833dk_nrf52833
  * nrf52811_pca10056 has been renamed to nrf52840dk_nrf52811
  * nrf52840_pca10056 has been renamed to nrf52840dk_nrf52840
  * nrf52840_pca10059 has been renamed to nrf52840dongle_nrf52840
  * nrf9160_pca10090 has been renamed to nrf9160dk_nrf9160
  * nrf52840_pca10090 has been renamed to nrf9160dk_nrf52840
  * nrf52_pca20020 has been renamed to thingy52_nrf52832
  * nrf5340_dk_nrf5340 has been renamed to nrf5340pdk_nrf5340
  * efr32_slwstk6061a has been renamed to efr32_radio_brd4250b

* Devicetree

  * The C macros generated from the devicetree in previous releases are now
    deprecated in favor of a new ``<devicetree.h>`` API.
  * See :ref:`dt-from-c` for a high-level guide to the new API, and
    :ref:`devicetree_api` for an API reference.
  * Use of the legacy macros now requires explicitly enabling
    ``CONFIG_LEGACY_DEVICETREE_MACROS``. See `the Zephyr v2.3 legacy devicetree
    macro page`_ for more information, including a link to a migration guide to
    the new API.

.. _the Zephyr v2.3 legacy devicetree macro page:
   https://docs.zephyrproject.org/2.3.0/guides/dts/legacy-macros.html#dt-legacy-macros

* Other

  * ``MACRO_MAP`` has been deprecated. Use ``FOR_EACH`` instead.
  * ``BUILD_ASSERT_MSG`` has been deprecated. Use ``BUILD_ASSERT`` instead.

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

* The ``INLINE`` macro in ``util.h`` has been removed.
* ``STACK_ANALYZE``, ``stack_analyze`` and ``stack_unused_space_get`` have been
  removed.


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

* Bluetooth Mesh

  * The net_idx parameter has been removed from the Health Client model
    APIs since it can be derived (by the stack) from the app_idx parameter

* Networking

  * The NET_DEVICE_INIT(), NET_DEVICE_INIT_INSTANCE(), NET_DEVICE_OFFLOAD_INIT()
    and ETH_NET_DEVICE_INIT() macros changed and take a device power management
    function pointer parameter. If networking PM is not implemented for the
    specific network device, the device_pm_control_nop value can be used.

* Video

  * The video_dequeue() API call now takes a k_timeout_t for the timeout
    parameter. This reverts to s32_t if CONFIG_LEGACY_TIMEOUT_API is enabled.

* Floating Point Services

  * FLOAT and FP_SHARING Kconfig options have been renamed to FPU and FPU_SHARING,
    respectively.

Kernel
******

* A new general purpose memory allocator, sys_heap/k_heap, has been added
  to Zephyr with more conventional API/behavior, better space
  efficiency and higher performance than the pre-existing mem_pool.
  The older mem_pool APIs are, by default, wrappers around this new
  heap backend and will be deprecated in an upcoming release.  The
  original implementation remains available for this release via
  disabling CONFIG_MEM_POOL_HEAP_BACKEND.
* The timeout arguments to all kernel calls are now a "k_timeout_t"
  type instead of a 32 bit millisecond count.  These can be
  initialized in arbitrary time units (ns/us/ms, ticks), be
  interpreted relative to either current time or system start, and be
  expressed in 64 bit quantities.  This involves a minor change to the
  API, so the original API is still available in a completely
  source-compatible way via CONFIG_LEGACY_TIMEOUT_API.
* Simplified dummy thread implementation and properly name idle threads
* Centralized new thread priority check
* Refactored device structures and introduced struct init_entry which is
  a generic init end-point. SYS_INIT() generates only a struct init_entry via
  calling INIT_ENTRY_DEFINE(). Also removed struct deviceconfig leaving
  struct device to own everything now.

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

* ARC:

  * Changed to automatic generation of privilege stack for ARC MPU V2 to
    avoid the potential waste of memory When USERSPACE is configured
  * Enhanced runtime programming for the MPU v3 by making the gap-filling
    of kernel memory a user-configurable feature
  * Refactored the thread switch code in epilogue of irq and exception
  * Refactored the assembly codes for better maintenance
  * Fixed the behavior of ARC timer driver
  * Fixed the behavior of ARC SMP
  * Fixed the wrong configurations of ARC boards in Kconfig and DTS

* ARM:

  * CMSIS has been moved out of the main tree and now resides in its
    own standalone module repository
  * Updated CMSIS version to 5.7.0
  * Added CMSIS-DSP library integration
  * Added semihosting console support
  * Cleanups and improvements to the Cortex-M exception vector table
  * Fixed the behavior of Cortex-M spurious IRQ handler
  * Fixed parsing of Cortex-M MemManage Stacking Errors
  * Fixed the arch_cpu_idle() implementation for Cortex-M and Cortex-R
  * Renamed Cortex-R architecture port to cortex_a_r in preparation for the
    AArch32 Cortex-A architecture port
  * Added processor exception handling and reporting framework for Cortex-R
  * Added nested interrupt support on AArch32 Cortex-R and AArch64 Cortex-A
  * Refactored Cortex-R interrupt system to remove fake multi-level interrupt
    controller abstraction scheme


* POSIX:

  * Added support for building on ARM hosts

* RISC-V:

  * Added support for hard floating point for RISC-V
  * Added march and mabi options to Kconfig
  * Fixed compilation warning for platforms without PLIC

* x86:

  * Instrumented code for timing information
  * Added ability for SoC to add MMU regions
  * x86 FPU sharing symbols renamed
  * early_serial: extended to support MMIO UART

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

* Added support for these SoC series:

  * Broadcom Viper BCM58402
  * Infineon XMC4500 SoC
  * Nordic nRF52820 SoC
  * NXP LPC55S16 SoC
  * SiLabs EFR32BG13P SoC
  * STM32L5 series of Ultra-low-power MCUs

* Added support for these ARM boards:

  * 96Boards AeroCore 2
  * Adafruit Feather nRF52840 Express
  * Adafruit Feather STM32F405 Express
  * Black STM32 F407VE Development Board
  * Black STM32 F407ZG Pro Development Board
  * Broadcom BCM958402M2
  * EFR32 BRD4104A (SLWRB4104A)
  * Infineon XMC45-RELAX-KIT
  * nRF52820 emulation on nRF52833 DK
  * nrf9160 INNBLUE21
  * nrf9160 INNBLUE22
  * NXP LPCXpresso55S16
  * SEGGER IP Switch Board
  * ST Nucleo H743ZI
  * ST Nucleo F303RE
  * ST Nucleo L552ZE-Q

* Made these changes in other boards

  * ``up_squared`` now defaults to the x86_64 architecture
  * ``intel_s1000`` now supports SMP

* Added support for these following shields:

  * Espressif ESP-8266 Module
  * MikroElektronika ADC Click
  * MikroElectronica Eth Click
  * ST X-NUCLEO-IKS02A1: MEMS Inertial and Environmental Multi sensor shield

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

* ADC

  * Added support for STM32G4, STM32L1 and STM32H7 series
  * Enabled internal voltage reference source on stm32
  * Added Microchip MCP320x driver

* Audio

  * N/A

* Bluetooth

  * Added an RX thread on stm32wb hci wrapper
  * Improved BLE support for rv32m1_vega:

    - Added Resolvable Private Address support
    - Enabled power saving support
    - Added 2 Mbps PHY support
    - Enabled controller-based privacy

* CAN

  * Converted can-primary alias to zephyr,can-primary chosen property
  * Converted loopback driver to use a thread to send frames

* Clock Control

  * Enabled MSI range config in PLL mode on stm32
  * Fixed AHB clock computation based on core on stm32h7

* Console

  * Fixed USB initialization
  * Added semihosting console

* Counter

  * Added support on stm32h7 and stm32l0
  * Fixed alarm tick count on stm32
  * Added Maxim DS3231 driver
  * Added NXP Kinetis LPTMR driver

* Crypto

  * Added driver for nRF ECB
  * Added CAP_NO_IV_PREFIX capability to stm32 driver

* DAC

  * Added stm32l0 series support
  * Added DAC shell
  * Added NXP Kinetis DAC and DAC32 drivers

* Debug

  * N/A

* Display

  * Added power management support to st7789v driver
  * Reworked controller memory initialization in ssd16xx driver
  * Updated st7789v driver to set x-offset and y-offset properties properly

* DMA

  * Enabled use of DMAMUX on stm32l4+ and stm32wb
  * Various fixes on stm32 dma management

* EEPROM

  * N/A

* Entropy

  * Removed Kconfig HAS_DTS_ENTROPY
  * Implemented ISR specific get entropy call in gecko driver

* ESPI

  * Various fixes in Microchip driver

* Ethernet

  * Added SAM E54 max queue count referencing
  * Added SAM0 family support to gmac driver
  * Added sam4e support to queue in gmac
  * Added network power management support to mcux
  * Added VLAN support to enc28j60
  * Added VLAN support to stm32
  * Added Ethernet cable link status support to gmac
  * Added support for i.MXRT1060 family to mcux
  * Added support for getting manual MAC address from devicetree
  * Added support for enabling random MAC address from devicetree
  * Various fixes to setup and cache handling in gmac
  * Fixed how unique MAC address is determined in mcux
  * Fixed Ethernet cable link detection in gecko
  * Fixed stm32 when receiving data during initialization

* Flash

  * Added logs on stm32
  * Fixed wrong bank erasing on stm32g4
  * Various fixes in nrf_qspi_nor driver
  * Added driver for AT456 compatible SPI flash chips
  * Enabled support for SAMV71

* GPIO

  * Added mcp23s17 driver
  * Added STM32L5 support to stm32 driver
  * Added interrupt support to sx1509b driver
  * Fixed interrupt handling in sifive, intel_apl, mchp_xec, mcux_igpio driver
  * Various fixes in intel_apl driver
  * Added MCP23S17 driver
  * Fixed port 1 interrupts in mcux lpc driver

* Hardware Info

  * Fixed ESP32 implementation
  * Updated byte order in all drivers

* I2C

  * Added support to stm32h7
  * Added write/read and bus recovery commands to shell
  * Added bus recovery function to gpio bitbang driver
  * Fixed fast and fast+ mode bus speeds in several drivers
  * Added mcux flexcomm driver

* I2S

  * Added I2S master DMA support and clock output to stm32 driver
  * Enabled SAMV71

* IEEE 802.15.4

  * Added Decawave DW1000 driver
  * Added "no auto start" option and local MAC address support to rf2xx
  * Added support for Frame Pending Bit (FPB) handling in nrf5
  * Added CSMA CA transmit capability to nrf5
  * Added PAN coordinator mode support to nrf5
  * Added support for promiscuous mode to nrf5
  * Added support for energy scan function to nrf5
  * Fixed RX timestamp handling in nrf5
  * Various fixes to rf2xx

* Interrupt Controller

  * Fixed PLIC register space
  * Added support for STM32L5 series
  * Added GIC V3 driver
  * Fixed ICFGRn access and config in GIC driver
  * Optimized the arc v2 interrupt unit driver

* IPM

  * Added CAVS DSP Intra-DSP Communication (IDC) driver

* Keyboard Scan

  * Added interrupt support to the ft5336 touch controller driver
  * Added SDL mouse driver

* LED

  * N/A

* LED Strip

  * N/A

* LoRa

  * Added a LoRa shell
  * Replaced counter driver usage with k_timer calls
  * Various fixes in sx1276 driver

* Modem

  * Added support for GSM 07.10 muxing protocol to generic GSM modem
  * Added support for modem commands that do not have a line ending
  * Added automatic detection of ublox-sara-r4 modem type
  * Added automatic setting of APN for ublox-sara-r4
  * Added sendmsg() support to ublox-sara-r4
  * Fixed UDP socket closing in ublox-sara-r4
  * Fixed RSSI calculation for Sara U201
  * Fixed TCP context release and RX socket src/dst port assignment in wncm14a2a
  * Changed PPP driver connection to generic GSM modem

* PECI

  * Added Microchip XEC driver

* Pinmux

  * Fixed compilation errors in rv32m1_vega pinmux

* PS/2

  * Tuned PS2 driver to support several mice brands

* PWM

  * Added support to stm32h7
  * Enhanced mcux ftm driver to configure pwm in ticks and allow configuring the clock prescaler
  * Added mcux tpm driver
  * Fixed nrfx driver to wait until PWM is stopped before restarting it

* Sensor

  * Added support for Analog Devices ADXL345 3-axis I2C accelerometer
  * Added Infineon DPS310 driver
  * Fixed temperature conversion in SI7006 driver
  * Added Honeywell MPR driver
  * Added BQ27421 driver
  * Added weighted average filter to NXP Kinetis temperature driver
  * Enabled single shot mode in ENS210 driver
  * Added forced sampling mode to BME280 driver
  * Added IIS2MDC magnetometer driver
  * Added IIS2DLPC accelerometer driver
  * Added ISM330DHCX IMU driver
  * Added MEC tachometer driver
  * Fixed I2C and SPI bus communication in LIS2DH driver

* Serial

  * Added uart_mux driver that is used in GSM 07.10 muxing protocol
  * Added support for parity setting from dts on stm32
  * Added support for stm32l5
  * Various fixes in ns16550 driver
  * Added XMC driver
  * Added interrupt and runtime configuration support to Xilinx driver
  * Fixed interrupt support in sifive driver
  * Enhanced nrfx driver TX only mode support
  * Added SAMV71 support to sam driver

* SPI

  * Added support for DMA client on stm32
  * Increased clock frequency in mcux flexcomm driver
  * Added power management support to cc13xx_cc26xx driver

* Timer

  * Various fixes in stm32_lptim driver
  * Removed RTC1 dependency from nrf driver
  * Various fixes in arcv2_timer0 driver
  * Fixed TICKLESS=n processing in nrf_rtc and stm32_lptim drivers
  * Added CAVS DSP wall clock timer driver
  * Implemented tickless support in xlnx_psttc_timer driver

* USB

  * Added experimental USB Audio implementation.
  * Added support to stm32wb
  * Fixed PMA leak at reset on stm32
  * Various fixes in usb_dc_nrfx driver
  * Refactored usb_dc_mcux_ehci driver

* Video

  * Added dedicated video init priority
  * Various fixes in sw_generator and mcux_csi
  * Fixed video buffer alignment

* Watchdog

  * Added support on stm32g0
  * Disabled iwdg at boot on stm32

* WiFi

  * Added scan completion indication to eswifi
  * Added support to ESP8266 and ESP32


Networking
**********

* Converted networking to use new k_timeout_t infrastructure
* Enhanced new TCP stack support
* Added minimal support for TFTP client (RFC 1350)
* Added support for network device driver power management
* Added support for socketpair() BSD socket API
* Added support for QEMU user networking (SLIRP)
* Added support to disable automatic network attachment in OpenThread
* Added support for Frame Pending Bit handling in OpenThread
* Added support for RX frame handling in OpenThread
* Added support for TX started notification in OpenThread
* Added support for HW CSMA CA in OpenThread
* Added support for promiscuous mode in OpenThread
* Added support for reading OPAQUE resources with OMA TLV in LWM2M
* Added config to enable PAN coordinator mode in IEEE 802.15.4
* Added config to enable promiscuous mode in IEEE 802.15.4
* Added support for subscribe in Azure cloud sample
* Added support for queue mode in lwm2m_client sample
* Added support to allow change of the QEMU Ethernet interface name
* Added support for PPP IPCP to negotiate used DNS servers
* Added support for setting hostname in DHCPv4 request
* Fixed binding AF_PACKET socket type multiple times
* Fixed LLDPDU data in sent LLDP packets
* Fixed and enhance Google IoT sample application documentation
* Fixed MQTT cloud sample when polling incoming messages
* Fixed LWM2M socket error handling, and pending and reply handling during start
* Fixed LWM2M retransmission logic
* Fixed LWM2M Cell ID resource initialization
* Fixed COAP pending and reply handling
* Fixed wpan_serial sample application and enable USB during initialization
* Fixed HTTP client payload issue on HTTP upload
* Fixed MQTT Websocket incoming data handling and accept packets only in RX
* Fixed MQTT Publish message length validation
* Fixed IEEE 802.15.4 received frame length validation
* IEEE 802.15.4: avoided ACK processing when not needed
* IEEE 802.15.4: Now allows energy detection scan unconditionally

Bluetooth
*********

* Host:

  * Support for LE Advertising Extensions has been added.
  * The Host is now 5.2 compliant, with support for EATT, L2CAP ECRED mode and
    all new GATT PDUs.
  * New application-controlled data length and PHY update APIs.
  * Legacy OOB pairing support has been added.
  * Multiple improvements to OOB data access and pairing.
  * The Host now uses the new thread analyzer functionality.
  * Multiple bug fixes and improvements

* BLE split software Controller:

  * The Controller is now 5.2 compliant.
  * A new HCI USB H4 driver has been added, which can interact with BlueZ's
    counterpart Host driver.
  * PHY support is now configurable.
  * Only control procedures supported by the peer are now used.
  * The Nordic nRF52820 IC is now supported
  * OpenISA/RV32M1:

    * 2 Mbps PHY support.
    * Radio deep sleep mode support.
    * Controller-based privacy support.

* BLE legacy software Controller:

  * The legacy Controller has been removed from the tree.

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

* Zephyr CMake package

  * The Zephyr main repository now includes a Zephyr CMake package.
    This allows for registering Zephyr in the CMake user package registry and
    allows for easier integration into Zephyr applications, by using the CMake
    function, ``find_package(Zephyr ...)``.
    Registering the Zephyr CMake package in the CMake user package registry
    removes the need for setting of ``ZEPHYR_BASE``, sourcing ``zephyr-env.sh``,
    or running ``zephyr-env.cmd``.
  * A new ``west`` extension command, ``west zephyr-export`` is introduced for easy
    registration of Zephyr CMake package in the CMake user package registry.
  * Zephyr Build Configuration CMake package hook.
    Zephyr offers the possibility of configuring the Zephyr build system through
    a Zephyr Build Configuration package. A single Zephyr workspace
    ``ZephyrBuildConfig.cmake`` will be loaded if present in the Zephyr
    workspace. This allows users to configure the Zephyr build system on a per
    workspace setup, as an alternative to using a ``.zephyrrc`` system wide file.

* Devicetree

  * A new :ref:`devicetree_api` was added. This API is not generated, but is
    still included via ``<devicetree.h>``.

    See `the Zephyr v2.3 legacy devicetree macro page`_ for more information,
    including a link to a migration guide to the new API.

    The :ref:`dt-howtos` page has been extended for the new API, and a new
    :ref:`dt-from-c` API usage guide was also added.

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

* Disk

  * Add stm32 sdmmc disk access driver, supports stm32f7 and stm32l4

* Random

  * Removed the ``rand32_timestamp`` driver.

* POSIX subsystem:

  * socketpair() function implemented.
  * eventfd() function (Linux-like extension) implemented.

* Power management:

  * Add system and device power management support on TI CC13x2/CC26x2.

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.

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

* New API overview page added.
* Reference pages have been cleaned up and organized.
* The Devicetree documentation has been expanded significally.
* The project roles have been overhauled in the Contribution Guidelines pages.
* The documentation on driver-specific APIs has been simplified.
* Documentation for new APIs, boards and samples.

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

* Added samples for USB Audio Class.
* Added sample for using POSIX read()/write() with network sockets.

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

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

* :github:`25991` - [net][net.socket.select][imx-rt series] test fails  (k_uptime_get_32() - tstamp <= FUZZ is false)
* :github:`25990` - tests/net/socket/select failed on sam_e70_xplained board.
* :github:`25960` - tests/net/socket/socketpair failed on mimxrt1050_evk and sam_e70_xplained.
* :github:`25948` - Function i2c_transfer stops execution for I2C_SAM0
* :github:`25944` - driver: timer: stm32_lptim: Extra ticks count
* :github:`25926` - k_cycle_get_32() returns 0 in native_posix
* :github:`25925` -  tests: net: socket: socketpair: fails due to empty message header name
* :github:`25920` - Compilation error when CONFIG_BOOTLOADER_MCUBOOT=y specified
* :github:`25904` - kernel: k_queue_get return NULL before timeout
* :github:`25901` - timer: nrf_rtc_timer: Subtraction underflow causing 8 minute time skips
* :github:`25895` - driver: timer: stm32_lptim: backup domain is reset
* :github:`25893` - Application syscalls in usermode gives bus fault with stacking error
* :github:`25887` - legacy timeout API does not work as expected
* :github:`25880` - stm32wb: Unable to use BLE and USB host simultaneously.
* :github:`25870` - tests/kernel/timer/timer_api fails conversion tests with large offset
* :github:`25863` - Where is the definition of SystemInit()?
* :github:`25859` - mesh example not working with switched off dcdc?
* :github:`25847` - Problems using math functions and double.
* :github:`25824` - Unpacked bt_l2cap_le_conn_rsp struct is causing corrupt L2CAP connection request responses on some platforms
* :github:`25820` - kernel: k_timer_start(timer, K_FOREVER, K_NO_WAIT) expires immediately
* :github:`25811` - K22F USB Console/Shell
* :github:`25797` - [Coverity CID :210607] Uninitialized scalar variable in tests/net/socket/socketpair/src/test_socketpair_happy_path.c
* :github:`25796` - [Coverity CID :210579] Uninitialized scalar variable in tests/net/socket/socketpair/src/test_socketpair_happy_path.c
* :github:`25795` - [Coverity CID :210564] Uninitialized scalar variable in tests/lib/cmsis_dsp/distance/src/u32.c
* :github:`25793` - [Coverity CID :210561] Resource leak in tests/net/socket/socketpair/src/test_socketpair_unsupported_calls.c
* :github:`25791` - [Coverity CID :210614] Explicit null dereferenced in tests/lib/cmsis_dsp/distance/src/f32.c
* :github:`25789` - [Coverity CID :210586] Explicit null dereferenced in tests/lib/cmsis_dsp/distance/src/f32.c
* :github:`25788` - [Coverity CID :210581] Dereference before null check in subsys/net/lib/sockets/socketpair.c
* :github:`25787` - [Coverity CID :210571] Explicit null dereferenced in tests/subsys/openthread/radio_test.c
* :github:`25785` - [Coverity CID :210549] Explicit null dereferenced in tests/subsys/openthread/radio_test.c
* :github:`25780` - [Coverity CID :210612] Negative array index read in samples/net/sockets/socketpair/src/socketpair_example.c
* :github:`25779` - [Coverity CID :209942] Pointer to local outside scope in subsys/net/ip/tcp2.c
* :github:`25774` - [Coverity CID :210615] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25773` - [Coverity CID :210613] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25772` - [Coverity CID :210609] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25771` - [Coverity CID :210608] Incompatible cast in tests/lib/cmsis_dsp/fastmath/src/f32.c
* :github:`25770` - [Coverity CID :210605] Incompatible cast in tests/lib/cmsis_dsp/filtering/src/misc_f32.c
* :github:`25769` - [Coverity CID :210603] Incompatible cast in tests/lib/cmsis_dsp/filtering/src/misc_f32.c
* :github:`25768` - [Coverity CID :210601] Incompatible cast in tests/lib/cmsis_dsp/fastmath/src/f32.c
* :github:`25767` - [Coverity CID :210600] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25766` - [Coverity CID :210592] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25765` - [Coverity CID :210591] Incompatible cast in tests/lib/cmsis_dsp/filtering/src/misc_f32.c
* :github:`25764` - [Coverity CID :210590] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25763` - [Coverity CID :210577] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25762` - [Coverity CID :210576] Incompatible cast in tests/lib/cmsis_dsp/filtering/src/misc_f32.c
* :github:`25761` - [Coverity CID :210574] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25760` - [Coverity CID :210572] Incompatible cast in tests/lib/cmsis_dsp/distance/src/f32.c
* :github:`25759` - [Coverity CID :210569] Incompatible cast in tests/lib/cmsis_dsp/bayes/src/f32.c
* :github:`25758` - [Coverity CID :210567] Incompatible cast in tests/lib/cmsis_dsp/fastmath/src/f32.c
* :github:`25757` - [Coverity CID :210565] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25756` - [Coverity CID :210563] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25755` - [Coverity CID :210560] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25754` - [Coverity CID :210556] Incompatible cast in tests/lib/cmsis_dsp/matrix/src/unary_f64.c
* :github:`25753` - [Coverity CID :210555] Incompatible cast in tests/lib/cmsis_dsp/support/src/barycenter_f32.c
* :github:`25752` - [Coverity CID :210551] Incompatible cast in tests/lib/cmsis_dsp/matrix/src/unary_f32.c
* :github:`25751` - [Coverity CID :210545] Incompatible cast in tests/benchmarks/cmsis_dsp/basicmath/src/f32.c
* :github:`25737` - [Coverity CID :210585] Unchecked return value in samples/net/sockets/socketpair/src/socketpair_example.c
* :github:`25736` - [Coverity CID :210583] Unchecked return value from library in samples/net/sockets/socketpair/src/socketpair_example.c
* :github:`25731` - [Coverity CID :210568] Argument cannot be negative in tests/net/socket/socketpair/src/test_socketpair_happy_path.c
* :github:`25730` - [Coverity CID :210553] Unchecked return value in tests/drivers/gpio/gpio_basic_api/src/test_deprecated.c
* :github:`25727` - [Coverity CID :210611] Logically dead code in subsys/net/lib/sockets/socketpair.c
* :github:`25702` - BSD socket sendmsg() did not verify params in usermode
* :github:`25701` - MPU FAULT in nvs test on nrf52840dk_nrf52840
* :github:`25698` - IPv6 prefix could be added multiple times to prefix timer list
* :github:`25697` - Example of Thread creation in documentation does not compile
* :github:`25694` - IPv6 RA prefix option invalid length
* :github:`25673` - Unable to use SPI1 when enabled without SPI0 on cc13xx/cc26xx
* :github:`25670` - Possible Null pointer dereferences in /subsys/logging/log_msg.c
* :github:`25666` - tests: kernel: mem_protect: syscalls: test_string_nlen fails
* :github:`25656` - shields: Can't use multiple shields anymore
* :github:`25635` - ARM: TLS pointer may not be set correctly
* :github:`25621` - ESWiFi does not populate info about remote when invoking callback
* :github:`25614` - fix longstanding error in pthread_attr_t definition
* :github:`25613` - USB: CDC adds set line coding callback
* :github:`25612` - ARM: Cortex-M: CPU is not reporting Explicit MemManage Stacking Errors correctly
* :github:`25597` - west sign fails to find header size or padding
* :github:`25585` - QEMU special key handling is broken on qemu_cortex_a53
* :github:`25578` - nrf: clock control: nrf5340: using CLOCK_CONTROL_NRF_K32SRC_RC results in build failure
* :github:`25568` - nrf: clock_control: Fatal error during initialization
* :github:`25561` - bluetooth: GATT lockup on split packets
* :github:`25555` - Unable to connect to Thread network (NRF52840DK)
* :github:`25527` - sample and writeup for socketpair
* :github:`25526` - Sanity Check Fails:
* :github:`25522` - settings: FCB back-end does not try to add record after the last compression attempt.
* :github:`25519` - wrong debug function cause kinds of building error
* :github:`25511` - arc em_starterkit_em11d failed in tests/kernel/timer/timer_api
* :github:`25510` - arc EMSDP failed in tests/kernel/gen_isr_table
* :github:`25509` - OpenThread SED set link mode fail
* :github:`25493` - devicetree: nRF5340 application core DTSI is missing cryptocell node
* :github:`25489` - drivers: modem_cmd_handler: uninitialized variable used
* :github:`25483` - Bluetooth: controller: split: feature exchange not conform V5.0 core spec
* :github:`25480` - Unconditional source of shield configs can mess up configuration
* :github:`25478` - settings_runtime_set() not populating bt/cf
* :github:`25477` - dts: arm: Incorrect GIC interrupt spec order for AArch64 SoCs
* :github:`25471` - disco_l475_iot1 don't write last small block
* :github:`25469` - Fix devicetree documentation for new API
* :github:`25468` - FRDM_K82F DTS missing information for ADC-0
* :github:`25452` - Some USB samples targeting stm32 are malfunctioning
* :github:`25448` - serial: uart_nrfx_uarte: poll & async TX infinite hang
* :github:`25447` - cf_set() returns 0 when no cfg is available
* :github:`25442` - Does Zephyr support USB host mode ?
* :github:`25437` - tests/lib/heap: sanitycheck timeout on STM32 boards
* :github:`25433` - Add vendor specific class custom usb device sample
* :github:`25427` - STM32 Ethernet driver build failure with CONFIG_ASSERT=1
* :github:`25408` - STM32 Ethernet Driver: Fix driver crash caused by RX IRQ trigger
* :github:`25390` - driver: timer: arm arch timer PPI configuration to be taken from dt
* :github:`25386` - boards: shields: esp_8266: There isn't CI tests enabled
* :github:`25379` - Bluetooth mesh example not working
* :github:`25378` - Installation problems
* :github:`25369` - tests/drivers/gpio/gpio_basic_api: test_gpio_deprecated step fails on STM32 boards
* :github:`25366` - tests/drivers/counter/counter_basic_api: instable test status on STM32 boards
* :github:`25363` - tests/drivers/counter/counter_basic_api: Assertion failed on STM32 boards
* :github:`25354` - Fails to compile when SYS_PM_DIRECT_FORCE_MODE is true
* :github:`25351` - test:mimxrt1050_evk:tests/subsys/usb/bos/: run failure
* :github:`25350` - Bluetooth: controller: Data transmission delayed by slave latency
* :github:`25349` - The b_l072z_lrwan1 board (STM32L0) doesn't support flashing of firmware larger than bank 0
* :github:`25348` - test:mimxrt10xx_evk:tests/kernel/mem_protect/stackprot: get unexpected Stacking error
* :github:`25346` - Timestamp in LOG jumps 00:08:32
* :github:`25337` - LED pins always configured as PWM outputs
* :github:`25334` - SPI won't build on microbit with I2C
* :github:`25332` - lib: updatehub: Don't build after conversion from DT_FLASH_AREA to FLASH_AREA macros
* :github:`25331` - test_timer_remaining() fails with assertion in timer_api test
* :github:`25319` - MMU and USERSPACE not working on upsquared
* :github:`25312` - samples:mimxrt1010_evk:samples/net/openthread/ncp: build error
* :github:`25289` - mcuboot incompatible with Nordic QSPI flash driver
* :github:`25287` - test/benchmarks/latency_measure fails on nucleo_f429zi and nucleo_f207zg
* :github:`25284` - spi: stm32: dma_client: Cannot use RX only configuration
* :github:`25276` - OpenThread not work after upgrade to latest version
* :github:`25272` - tests/drivers/gpio/gpio_basic_api failed on mec15xxevb_assy6853 board.
* :github:`25270` - fix userspace permissions in socketpair tests
* :github:`25263` - Can anyone tell me how can i use external qspi flash "mx25r64"(custom board with nrf52840 soc) for mcuboot slot1 and i'm using zephyr 2.2.0
* :github:`25260` - drivers: uart_ns16550: device config_info content mutated
* :github:`25251` - Post DT API migration review
* :github:`25247` - const qualifier lost on some device config_info casts
* :github:`25246` - SHELL_DEFAULT_TERMINAL_WIDTH should be configurable in Kconfig
* :github:`25241` - tests.drivers.spi_loopback stm32wb55x fails transferring multiple buffers with dma
* :github:`25240` - Building usb audio sample hangs the pre-processor
* :github:`25234` - kernel.timer.tickless test fails on atsamd21_xpro
* :github:`25233` - bad logic in test_busy_wait of tests/kernel/context
* :github:`25232` - driver: wifi: esp_offload.c: Missing new timeout API conversion
* :github:`25230` - Lib: UpdateHub: Missing new timeout API conversion
* :github:`25224` - benchmark.kernel.latency test fails on atsame54_xpro
* :github:`25221` - arch.arm.irq_advanced_features test fails on atsamd21_xpro
* :github:`25216` - cc13xx and cc26xx handler for IRQ invoked multiple times
* :github:`25210` - CI seems to be stuck for my pull request
* :github:`25204` - soc: apollo_lake: Disabling I2C support is not possible
* :github:`25200` - Build error in Sample App for OpenThread NCP
* :github:`25196` - tests: portability: cmsis_rtos_v2: hangs on nRF52, 53 and 91 nRF platforms
* :github:`25194` - tests: kernel: context: seems to be failing on Nordic platforms
* :github:`25191` - tests/drivers/console: drivers.console.semihost can't work
* :github:`25190` - West - init/update module SHA with --depth = 1
* :github:`25185` - Adding CONFIG_BT_SETTINGS creates errors on bt_hci_core & bt_gatt
* :github:`25184` - lldp: lldp_send includes bug
* :github:`25183` - west build error after while "getting started" on ESP32
* :github:`25180` - tests: drivers/i2s/i2s_api: Build failed on 96b_argonkey
* :github:`25179` - tests/kernel/timer/timer_api failed on iotdk board.
* :github:`25178` -  tests/kernel/sched/schedule_api failed on iotdk board.
* :github:`25177` - tests/drivers/counter/maxim_ds3231_api failed on frdm_k64f.
* :github:`25176` - tests/kernel/context failed on multiple platforms.
* :github:`25174` - qemu test failures when running sanitycheck
* :github:`25169` - soc/arm/infineon_xmc/4xxx/soc.h not found
* :github:`25161` - samples/cfb/display flickers with SSD1306
* :github:`25141` - Cannot use C++ on APPLICATION level initialization
* :github:`25140` - Unable to obtain dhcp lease
* :github:`25139` - USB HID mouse sample high input delay
* :github:`25130` - Bluetooth: controller: Incorrect version information
* :github:`25128` - Missing ``python3-dev`` dependency
* :github:`25123` - DAC is not described in soc of STM32L4xx series
* :github:`25109` - Flash tests fail on posix
* :github:`25101` - driver: gpio: mchp: GPIO initialization value doesn't get reflected when using new flags
* :github:`25091` - drivers: eSPI: Incorrect handling of OOB registers leads to report wrong OOB packet len
* :github:`25084` - LLDP: missing net_pkt_set_lldp in lldp_send
* :github:`25083` - Networking samples are not able to connect with the TCP under qemu_x86 after 9b055ec
* :github:`25067` - Insufficient ticker nodes for vendor implementations
* :github:`25057` - errors when running sanitycheck with tests/subsys/storage/stream/stream_flash
* :github:`25036` - kernel: pipe: read_avail / write_avail syscalls
* :github:`25032` - build failure on lpcxpresso55s16_ns
* :github:`25017` - [CI] m2gl025_miv in Shippable CI systematically fails some tests
* :github:`25016` - BT_LE_ADV_NCONN_NAME doesn't actually advertise name
* :github:`25015` - Bluetooth Isochronous Channels Support
* :github:`25012` - checkpatch.pl doesn't match the vendor string properly
* :github:`25010` - disco_l475_iot1 don't confirm MCUBoot slot-1 image
* :github:`24978` - RFC: use compatible name for prefix for device-specific API
* :github:`24970` - ieee802154 l2: no length check in frame validation
* :github:`24965` - RF2XX radio driver does automatic retransmission and OpenThread as well
* :github:`24963` - Slower OpenThread PSKc calculation
* :github:`24943` - Add a harness property to boards in sanitycheck's hardware_map
* :github:`24928` - Running Zephyr Bot tests on local machine
* :github:`24927` - stm32: Fix docs boards for doc generation
* :github:`24926` - Remove all uses of CONFIG_LEGACY_TIMEOUT_API  from the tree before 2.3
* :github:`24915` - accelerometer example no longer works for microbit
* :github:`24911` - arch: arm: aarch32: When CPU_HAS_FPU for Cortex-R5 is selected, prep_c.c uses undefined symbols
* :github:`24909` - ``find_package`` goes into an infinite loop on windows
* :github:`24903` - Python detection when building documentation fails
* :github:`24889` - stm32f469i discovery board and samples/display/lvgl fails
* :github:`24869` - qemu_x86: with icount enabled, crash in test_syscall_torture
* :github:`24853` - os: Precise data bus error with updatehub
* :github:`24842` - Support Building on Aarch64
* :github:`24840` - Unable to connect to OpenThread network after upgrade
* :github:`24805` - On x86, misalligned SSE accesses can occur when multithreading is enabled
* :github:`24784` - nRF: Busy wait clock is skewed vs. timer clock
* :github:`24773` - devicetree: allow generation of properties that don't have a binding
* :github:`24751` - What is purpose of the CONFIG_ADC_X
* :github:`24744` - k_thread_join() taking a very long time on qemu_cortex_m3
* :github:`24733` - Misconfigured environment
* :github:`24727` - Unable allocate buffer to send mesh message
* :github:`24722` - OnePlus 7T & peripheral_hr on NRF52 conn failure
* :github:`24720` - Build failure on intel_s1000_crb board for test case:” tests/kernel/smp”
* :github:`24718` - adc: stm32g4: Fix ADC instances naming
* :github:`24713` - ztest_test_fail() doesn't always work
* :github:`24706` - mcumgr: fail to upgrade nRF target using nRF Connect
* :github:`24702` - tests/drivers/counter/counter_basic_api failed on frdm_k64f board.
* :github:`24701` - tests/lib/cmsis_dsp/transform failed on frdm_k64f board.
* :github:`24695` - Board IP Can Not Be Set Manually
* :github:`24692` - FindPython3 has unexpected behavior on Windows
* :github:`24674` - Cannot generate code coverage report for unit tests using sanitycheck
* :github:`24665` - z_cstart memory corruption (ARM CortexM)
* :github:`24661` - sanitycheck incorrect judgement with tests/drivers/gpio/gpio_basic_api.
* :github:`24660` - tests/benchmarks/sys_kernel failed on nrf platforms
* :github:`24659` - tests/portability/cmsis_rtos_v2 failed on reel_board.
* :github:`24653` - device_pm: clarify and document usage
* :github:`24646` - Bluetooth: hci_uart broken on master
* :github:`24645` - naming consistency for kernel object initializer macros
* :github:`24642` - kernel: pipe: simple test fails for pipe write / read of 3 bytes
* :github:`24641` - inconsistent timer behavior on native platforms
* :github:`24635` - tests/counter/counter_basic_api fails on mps2_an385
* :github:`24634` - Invalid pin reported in gpio callback
* :github:`24626` - USB re-connection fails on SAM E70
* :github:`24612` - mimxrt1020_evk: total freeze
* :github:`24601` - Bluetooth: Mesh: Config Client's net_key_status pulls two key indexes, should pull one.
* :github:`24585` - How to read/write an big(>16K) file in littlefs shell sample on native posix board?
* :github:`24579` - Couldn't get test results from device serial on mimxrt1050_evk board.
* :github:`24576` - scripts/subfolder_list.py: Support long paths
* :github:`24571` - #include <new> is not available
* :github:`24564` - NRF51822 BLE ~400uA idle current consumption
* :github:`24554` - hal_infineon: Add new module for Infineon XMC HAL layer
* :github:`24553` - samples/subsys/shell/fs/ fail on native posix board
* :github:`24539` - How to complete userspace support for driver-specific API
* :github:`24534` - arch_mem_domain_max_partitions_get() returns equal number for all architectures
* :github:`24533` - devicetree: are some defines missing from the bindings?
* :github:`24509` - Ethernet Sample Echo Failed in Nucleo_f429zi - bisected
* :github:`24505` - Bluetooth: Mesh: Configuration Client: Add support for Model Subscription Get
* :github:`24500` - Failed to run the sample "Native Posix Ethernet"
* :github:`24497` - frdm_k64f fatal error while using flash and TLS features together
* :github:`24490` - SPI-NOR driver not found in spi_flash sample
* :github:`24485` - kernel: pipe: should return if >= min_xfer bytes transferred and timeout is K_FOREVER
* :github:`24484` - The file system shell example failed to build
* :github:`24479` - nrf-uarte problems with uart_irq_tx_disable() in handler
* :github:`24464` - drivers: espi: XEC: Incorrect eSPI channel status handling leading to missed interrupts and callbacks
* :github:`24462` - File not truncated to actual size after calling fs_close
* :github:`24457` - Common Trace Format - Failed to produce correct trace output
* :github:`24442` - samples/subsys/mgmt/mcumgr/smp_svr: should enable BT and FS for nrf52 boards
* :github:`24439` - LPCXpresso55S69_ns target : build failed
* :github:`24437` - smp_svr samle doesn't build for any target
* :github:`24431` - http_client assumes request payload is non-binary
* :github:`24426` - syscall for pipe(2)
* :github:`24409` - When the delay parameter of k_delayed_work_submit is K_FOREVER, the system will crash
* :github:`24399` - drivers: sam0_rtc_timer: DT_INST changes have broken this driver
* :github:`24390` - nsim_sem_normal target is broken
* :github:`24382` - disco_l475_iot1 not working with samples/net/wifi
* :github:`24376` - SPI (test) is not working for LPCXpresso54114
* :github:`24373` - NULL-pointer dereferencing in GATT when master connection fails
* :github:`24369` - tests/drivers/counter/counter_basic_api failure on nRF51-DK
* :github:`24366` - syscall for socketpair(2)
* :github:`24363` - nsim_hs_smp target doesn't work at all
* :github:`24359` - k_heap / sys_heap needs overview documentation
* :github:`24357` - NVS sample on STM32F4 fails even if the dts definition is correct
* :github:`24356` - MCUboot (and other users of DT_FLASH_DEV_NAME) broken with current zephyr master
* :github:`24355` - tests/drivers/uart/uart_basic_api configure and config_get fail because not implemented
* :github:`24353` - minnowboard hangs during boot of samples/hello_world
* :github:`24347` - Application Cortex M Systick driver broken by merge of #24012
* :github:`24340` - #24308 Broke python3 interpreter selection
* :github:`24339` - arm_gic_irq_set_priority - temporary variable overflow
* :github:`24325` - broken link in MinnowBoard documentation
* :github:`24324` - ST Nucleo F767ZI Ethernet Auto Negotiation problem
* :github:`24322` - IRQ_CONNECT and IRQ_DIRECT_CONNECT throw compile error with CONFIG_CPLUSPLUS
* :github:`24311` - LPN not receiving any message from Friend node after LPN device reset
* :github:`24306` - How to set up native posix board to allow connections to the Internet?
* :github:`24304` - Application crash #nrf52840 #ble
* :github:`24299` -  tests/subsys/storage/flash_map failed on frdm_k64f board.
* :github:`24294` - Problem using TMP116 sensor with platformio
* :github:`24291` - The button interrupt enters the spurious handler
* :github:`24283` - os:   Illegal use of the EPSR-disco_l475_iot1
* :github:`24282` - echo_client sample return: Cannot connect to TCP remote (IPv6): 110
* :github:`24278` - Function of "ull_conn_done" in "ull_conn.c"
* :github:`24277` - tests/kernel/workq/critical times out on ARC
* :github:`24276` - tests/kernel/context hangs on ARC in test_kernel_cpu_idle
* :github:`24275` - tests/kernel/mem_protect/syscalls fails on ARC in test_syscall_torture
* :github:`24252` - Python detection macro in cmake fails to detect highest installed version
* :github:`24243` - MCUBoot not working on disco_l475_iot1
* :github:`24241` - Build error when using MCHP ACPI HAL macros
* :github:`24237` - Fail to pass samples/subsys/nvs
* :github:`24227` - build hello_world sample failed for ESP32 board.
* :github:`24226` - [master]Bluetooth: samples/bluetooth/central_hr can't connect with samples/bluetooth/peripheral_hr
* :github:`24216` - Shell: Allow selecting command without subcommands
* :github:`24215` - Couldn't flash image into up_squared using misc.py script.
* :github:`24212` - lib: updatehub: Improve memory footprint
* :github:`24207` - tests/subsys/fs/fcb fails on nRF52840-DK
* :github:`24197` - Reduce snprintf and snprintk footprint
* :github:`24195` - question regarding c++
* :github:`24194` - Bluetooth: Mesh: Unknown message received by the node
* :github:`24193` - Issue with launching examples on custom board (after succesfull build)
* :github:`24187` - Remove the BLE Legacy Controller from the tree
* :github:`24183` - [v2.2] Bluetooth: controller: split: Regression slave latency during connection update
* :github:`24181` - Snprintk used at many place while dummy build if CONFIG_PRINTK is undef
* :github:`24180` - Parameter deprecation causes scanner malfunction on big-endian systems
* :github:`24178` - CI: extra_args from sanitycheck ``*.yaml`` do not propagate to cmake
* :github:`24176` - Where can I read PDR (packet delivery ratio)? Or number of TX/ACK packets?
* :github:`24162` - eSPI KConfig overrides espi_config API channel selection in eSPI driver
* :github:`24158` - gap in support for deprecated Nordic board names
* :github:`24156` - MQTT Websocket transport interprets all received data as MQTT messages
* :github:`24145` - File system shell example mount littleFS issue on nrf52840_pca10056
* :github:`24144` - deadlock potential in nrf_qspi_nor
* :github:`24136` - tests/benchmarks/latency_measure failed on mec15xxevb_assy6853 board.
* :github:`24122` - [nrf_qspi_nor] LittleFS file system fails to mount if LFS rcache buffer is not word aligned
* :github:`24108` - https GET request is failed for big file download.
* :github:`24104` - west sign usage help is missing key information
* :github:`24103` - USB Serial Number reverses bytes in hw identifier
* :github:`24101` - Bluetooth: Mesh: Transport Segment send failed lead to seg_tx un-free
* :github:`24098` - drivers: flash: flash_stm32: usage fault
* :github:`24089` - Zephyr/Openthread/MBEDTLS heap size/usage
* :github:`24086` - Bluetooth: SMP: Existing bond deleted on pairing failure
* :github:`24081` - le_adv_ext_report is not generating an HCI event
* :github:`24072` - tests/kernel/timer/timer_api failed on nucleo_stm32l152re board
* :github:`24068` - UART driver for sifive does not compile when configuring PORT_1
* :github:`24067` - cross-platform inconsistency in I2C bus speeds
* :github:`24055` - Add support for openocd on stm32g0 and stm32g4 targets
* :github:`24041` - [Coverity CID :209368] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24040` - [Coverity CID :209369] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24039` - [Coverity CID :209370] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24038` - [Coverity CID :209371] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24037` - [Coverity CID :209372] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24036` - [Coverity CID :209373] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24035` - [Coverity CID :209374] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24034` - [Coverity CID :209375] Side effect in assertion in tests/kernel/interrupt/src/prevent_irq.c
* :github:`24033` - [Coverity CID :209376] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24032` - [Coverity CID :209377] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24031` - [Coverity CID :209378] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24027` - [Coverity CID :209382] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24026` - [Coverity CID :209383] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`24016` - Fully support DTS on nrf entropy driver
* :github:`24014` - Bluetooth: Mesh: Friend node not cache for lpn which receiveing unknown app_idx
* :github:`24009` - Bluetooth: Mesh: Friend node not cache ALL_Node Address or different app_idx
* :github:`24008` - Build failure on intel_s1000_crb board.
* :github:`24003` - Couldn't generated code coverage report using sanitycheck
* :github:`24001` - tests/kernel/timer/timer_api failed on reel_board and mec15xxevb_assy6853.
* :github:`23998` - Infinite Reboot loop in Constructor C++
* :github:`23997` - flash sector erase fails on stm32l475
* :github:`23989` - Switching among different PHY Modes
* :github:`23986` - Possible use of uninitialized variable in subsys/net/ip/utils.c
* :github:`23980` - Nordic USB driver: last fragment sometimes dropped for OUT control endpoint
* :github:`23961` - CCC does not get cleared when CONFIG_BT_KEYS_OVERWRITE_OLDEST is enabled
* :github:`23953` - Question: How is pdata.tsize initialized in zephyr/subsys/usb/usb_transfer.c?
* :github:`23947` - soc: arm: atmel: sam4e: Enable FPU
* :github:`23946` - ARM soft FP ABI support is broken
* :github:`23945` - west flash don't flash right signed file when system build both hex and bin files
* :github:`23930` - Question: Cortex-M7 revision r0p1 errata
* :github:`23928` - Flash device FLASH_CTRL not found
* :github:`23922` - cmake 3.17 dev warning from FindPythonInterp.cmake
* :github:`23919` - sanitycheck samples/drivers/entropy/sample.drivers.entropy fails
* :github:`23907` - Shell overdo argument parsing in some cases
* :github:`23897` - Typo in linker.ld for NXP i.MX RT
* :github:`23893` - server to client ble coms: two characteristics with notifications failing to notify the right characteristics at the client
* :github:`23877` - syscall use of output buffers may be unsafe in some situations
* :github:`23872` - cmake find_package(ZephyrUnittest...) doesn't work
* :github:`23866` - sample hci_usb fails with zephyr 2.2.0 (worked with zephyr 2.1.0)
* :github:`23865` - nrf52840 and pyocd cannot program at addresses above 512k
* :github:`23853` - samples/boards/nrf/battery does not build
* :github:`23850` - Template with C linkage in util.h:52
* :github:`23824` - ARM Cortex-M7 MPU setting
* :github:`23805` - Bluetooth: controller: Switching to non conn adv fails for Mesh LPN
* :github:`23803` - nrf52840 ble error
* :github:`23800` - tests/drivers/counter/counter_cmos failed on up_squared platform
* :github:`23799` -  tests/subsys/logging/log_immediate failed on reel_board
* :github:`23777` - Problem with applying overlay for custom board in blinky example
* :github:`23763` - net: sockets: Wrong binding when connecting to ll address
* :github:`23762` - stm32: Revert nucleo_l152re to work at full speed
* :github:`23750` - eSPI API needs to be updated since it's passing parameters by value
* :github:`23718` - Getting started with zephyr OS
* :github:`23712` - Error in mounting the SD card
* :github:`23703` - Openthread on Zephyr cannot get On-Mesh Prefix address
* :github:`23694` - TEMP_KINETIS is forced enabled on frdm_k64f if SENSORS is enabled. But ADC is missing
* :github:`23692` - drivers: ublox-sara-r4: Add support for pin polarity
* :github:`23678` - drivers/flash: stm32: Error in device name
* :github:`23677` - SPI slave driver doesn't work correctly on STM32F746ZG; needs spi-fifo to be enabled in DT
* :github:`23674` - Openthread stop working after "Update OpenThread revision #23632"
* :github:`23673` - spi-nor driver fails to check for support of 32 KiBy block erase
* :github:`23669` -  ipv4 rx fragments: is zephyr support?
* :github:`23662` - Building blinky sample program goes wrong
* :github:`23637` - Wrong channel computation in stm32 pwm driver
* :github:`23624` - posix: clock: clock_gettime fault on userspace with CLOCK_REALTIME
* :github:`23623` - stm32 can2 not work properly
* :github:`23622` - litex_vexriscv: k_busy_wait() never returns if called with interrupts locked
* :github:`23618` - cmake: Export compile_commands.json for all generated code
* :github:`23617` - kernel: k_cpu_idle/atomic_idle() not tested for tick-less kernel
* :github:`23611` - Add QuickLogic EOS S3 HAL west module
* :github:`23600` - Differences in cycles between k_busy_wait and k_sleep
* :github:`23595` - RF2XX driver Openthread ACK handling
* :github:`23593` - Nested interrupt test is broken for RISC-V
* :github:`23588` - [Coverity CID :208912] Dereference after null check in tests/net/icmpv4/src/main.c
* :github:`23587` - [Coverity CID :208913] Resource leak in tests/net/socket/af_packet/src/main.c
* :github:`23586` - [Coverity CID :208914] Self assignment in drivers/peci/peci_mchp_xec.c
* :github:`23585` - [Coverity CID :208915] Out-of-bounds access in tests/net/icmpv4/src/main.c
* :github:`23584` - [Coverity CID :208916] Out-of-bounds read in drivers/sensor/adxl345/adxl345.c
* :github:`23583` - [Coverity CID :208917] Dereference after null check in tests/net/icmpv4/src/main.c
* :github:`23582` - [Coverity CID :208918] Side effect in assertion in tests/arch/arm/arm_interrupt/src/arm_interrupt.c
* :github:`23581` - [Coverity CID :208919] Out-of-bounds read in drivers/sensor/adxl345/adxl345.c
* :github:`23580` - [Coverity CID :208920] Resource leak in tests/net/socket/af_packet/src/main.c
* :github:`23579` - [Coverity CID :208921] Improper use of negative value in tests/net/socket/af_packet/src/main.c
* :github:`23577` - [Coverity CID :208923] Out-of-bounds read in drivers/sensor/adxl345/adxl345.c
* :github:`23576` - [Coverity CID :208924] Dereference after null check in tests/net/icmpv4/src/main.c
* :github:`23575` - [Coverity CID :208925] Unsigned compared against 0 in samples/drivers/espi/src/main.c
* :github:`23573` - [Coverity CID :208927] Dereference after null check in tests/net/icmpv4/src/main.c
* :github:`23571` - drivers: timer: nrf52: Question: Does nRF52840 errata 179 affect nrf_rtc_timer driver?
* :github:`23562` - build warnings when updating to master from 2.2.0
* :github:`23555` - STM32 SDMMC disk access driver (based on stm32 cube HAL)
* :github:`23544` - tests/kernel/mem_protect/syscalls failed on iotdk board.
* :github:`23541` - xilinx_zynqmp: k_busy_wait() never returns if called with interrupts locked
* :github:`23539` -  west flash --runner jlink returns KeyError: 'jlink'
* :github:`23529` - Convert STM32 drivers to new DT macros
* :github:`23528` - k64f dts flash0/storage_partition 8KiB -> 64KiB
* :github:`23507` - samples/subsys/shell/shell_module doesn't work on qemu_x86_64
* :github:`23504` - Build system dependency issue with syscalls
* :github:`23496` - Issue building & flashing a hello world project on nRF52840
* :github:`23494` - Bluetooth: LL/PAC/SLA/BV-01-C fails if Slave-initiated Feature Exchange is disabled
* :github:`23485` - BT: host: Service Change indication sent regardless of whether it is needed or not.
* :github:`23482` - 2M PHY + DLE and timing calculations on an encrypted link are wrong
* :github:`23476` - tests/kernel/interrupt failed on ARC
* :github:`23475` - tests/kernel/gen_isr_table failed on iotdk board.
* :github:`23473` - tests/posix/common failed on multiple ARM platforms.
* :github:`23468` - bluetooth: host: Runtime HCI_LE_Create_Connection timeout
* :github:`23467` - Import from linux to zephyr?
* :github:`23459` - tests: drivers: uart: config api has extra dependency in test 2
* :github:`23444` - drivers: hwinfo: shell command "hwinfo devid" output ignores endianness
* :github:`23441` - RFC: API change: Add I2C bus recovery API
* :github:`23438` - Cannot reset Bluetooth mesh device
* :github:`23435` - Missing documentation for macros in util.h
* :github:`23432` - Add PECI subsystem user space handlers
* :github:`23425` - Remote opencd
* :github:`23420` - PPP management don't build
* :github:`23418` - Building hello_world failed
* :github:`23415` - gen_defines does not resolve symbol values for devicetree.conf
* :github:`23414` - tests/benchmarks/timing_info  failed on mec15xxevb_assy6853 board.
* :github:`23395` - UART Console input does not work on SiFive HiFive1 on echo sample app
* :github:`23387` - [Question] Why does not zephyr use a toolchain file with cmake as -DCMAKE_TOOLCHAIN_FILE=.. ?
* :github:`23386` - SAM GMAC should support PHY link status detection
* :github:`23373` - ARM: Move CMSIS out of main tree
* :github:`23372` - arm: aarch32: spurious IRQ handler calling z_arm_reserved with wrong arguments' list
* :github:`23360` - Possible NULL dereference in  zephyr/arch/arm/include/aarch32/cortex_m/exc.h
* :github:`23353` - nrf51_ble400.dts i2c pins inverted
* :github:`23346` - bl65x_dvk boards do not reset after flashing
* :github:`23339` - tests/kernel/sched/schedule_api failed on mps2_an385 with v1.14 branch.
* :github:`23337` - USB DFU device + Composite Device with ACM Serial - Windows Fails
* :github:`23324` - TinyCBOR is not linked to application files unless CONFIG_MCUMGR is selected
* :github:`23311` - Sanitycheck flash error on frdm_k64f board.
* :github:`23309` - Sanitycheck generated incorrect acrn.xml on acrn platform
* :github:`23299` - Some bugs or dead codes cased by possible NULL pointers
* :github:`23295` - [Coverity CID :208676] Overlapping buffer in memory copy in subsys/usb/class/mass_storage.c
* :github:`23294` - [Coverity CID :208677] Unchecked return value in drivers/sensor/lis3mdl/lis3mdl_trigger.c
* :github:`23284` - driver: ethernet: Add support for a second Ethernet controller in the MCUX driver
* :github:`23280` - Bluetooth: hci_usb fails to connect to two devices with slow advertising interval
* :github:`23278` - uart_basic_api test fails for SAM family devices
* :github:`23274` - power: subsystem: Application hangs when logging is enabled after entering deep sleep
* :github:`23247` - Bluetooth LE: Add feature to allow profiles to change ADV data at RPA updates
* :github:`23246` - net: tx_bufs are not freed when NET_TCP_BACKLOG_SIZE is too high
* :github:`23226` - Bluetooth: host: Peer not resolved when host resolving is used
* :github:`23225` - Bluetooth: Quality of service: Adaptive channel map
* :github:`23222` - Bluetooth: host: Unable to pair when privacy feature is disabled by application
* :github:`23207` - tests/kernel/mem_pool/mem_pool_concept failed on mec15xxevb_assy6853 board.
* :github:`23193` - Allow overriding get_mac() function in ieee802154 drivers
* :github:`23187` - nrf_rtc_timer.c  timseout setting mistake.
* :github:`23184` - mqtt_connect fails with return -2
* :github:`23156` - App determines if Bluetooth host link request is allowed
* :github:`23153` - Binding AF_PACKET socket second time will fail with multiple network interfaces
* :github:`23133` - boards: adafruit_feather_m0: don't throw compiler warnings on using custom sercom config
* :github:`23117` - Unable to flash hello_world w/XDS-110 & OpenOCD
* :github:`23107` - Convert SAM SoC drivers to DT_INST
* :github:`23106` - timer_api intermittent failures on Nordic nRF
* :github:`23070` - Bluetooth: controller: Fix ticker implementation to avoid catch up
* :github:`23026` - missing ISR locking in UART driver?
* :github:`23001` - Implement SAM E5X GMAC support
* :github:`22997` - Add GMAC device tree definition
* :github:`22964` - Define a consistent naming convention for device tree defines
* :github:`22948` - sanitycheck --build-only followed by --test-only fails
* :github:`22911` - [Coverity CID :208407] Unsigned compared against 0 in drivers/modem/modem_pin.c
* :github:`22910` - [Coverity CID :208408] Unsigned compared against 0 in drivers/modem/modem_pin.c
* :github:`22909` - [Coverity CID :208409] Unchecked return value in tests/drivers/gpio/gpio_basic_api/src/test_deprecated.c
* :github:`22908` - [Coverity CID :208410] Unsigned compared against 0 in drivers/modem/modem_pin.c
* :github:`22907` - si7006 temperature conversion offset missing
* :github:`22903` - mcuboot/samples/zephyr (make test-good-rsa) doesn't work
* :github:`22887` - Atomic operations on pointers
* :github:`22860` - Highly accurate synchronized clock distribution for BLE mesh network
* :github:`22780` - Sanitycheck hardware map integration caused some tests failure.
* :github:`22777` - Sanitycheck hardware map integration failed with some tests timeout.
* :github:`22745` - schedule_api  fails with slice testing on frdmkw41z board on v2.2.0_rc1
* :github:`22738` - crashes in tests/kernel/mem_protect/userspace case pass_noperms_object on x86_64
* :github:`22732` - IPv6 address and prefix timeout failures
* :github:`22701` - Implement I2C driver for lpcxpresso55s69
* :github:`22679` - MQTT publish causes unnecessary TCP segmentation
* :github:`22670` - Implement GIC-based ARM interrupt tests
* :github:`22643` - [Coverity CID :208206] Unsigned compared against 0 in samples/sensor/fxos8700-hid/src/main.c
* :github:`22625` - tests/subsys/canbus/isotp/conformance fails on frdm_k64f and twr_ke18f boards
* :github:`22622` - tests/drivers/gpio/gpio_basic_api failed on multiple ARM platforms
* :github:`22561` - tests/kernel/mem_protect/syscalls fails test_string_nlen on nsim_sem
* :github:`22555` - Add support to device tree generation support for DT_NODELABEL_<node-label>_<FOO> generation
* :github:`22554` - Add support to device tree generation support for DT_PATH_<path>_<FOO> generation
* :github:`22541` - hal_nordic: nrf_glue.h change mapped assert function
* :github:`22521` - intermittent crash in tests/portability/cmsis_rtos_v2 on qemu_x86
* :github:`22502` - USB transfer warnings
* :github:`22452` - not driver found in can bus samples for olimexino_stm32
* :github:`22441` - [Coverity CID :207967] Invalid type in argument to printf format specifier in samples/drivers/spi_flash/src/main.c
* :github:`22431` - [Coverity CID :207984] Sizeof not portable in drivers/counter/counter_handlers.c
* :github:`22429` - [Coverity CID :207989] Dereference after null check in drivers/sensor/sensor_shell.c
* :github:`22421` - mbed TLS: Inconsistent Kconfig option names
* :github:`22356` - An application hook for early init
* :github:`22348` - LIS2DH SPI Support
* :github:`22270` - wrong total of testcases when sanitycheck is run with a single test
* :github:`22264` - drivers: serial: nrf_uart & nrf_uarte infinite hang
* :github:`22222` - Enabling OpenThread SLAAC
* :github:`22158` - flash_img: support arbitrary flash devices
* :github:`22083` - stm32: spi: Infinite loop of RXNE bit check
* :github:`22078` - stm32: Shell module sample doesn't work on nucleo_l152re
* :github:`22034` - Add support for USB device on STM32L1 series
* :github:`21984` - i2c_4 not working on stm32f746g_disco
* :github:`21955` - usb: tests/subsys/usb/device fails on all NXP RT boards
* :github:`21932` - Current consumption on nrf52_pca10040, power_mgr sample
* :github:`21917` - cmake error with CONFIG_COUNTER and CONFIG_BT both enabled (nrf52 board)
* :github:`21899` - STM32F769I-DISCO > microSD + FatFS > failed in "samples/subsys/fs/fat_fs" > CMD0 and 0x01
* :github:`21877` - tests/drivers/uart/uart_async_api fails on qemu_cortex_m0
* :github:`21833` - SRAM not sufficient when building BT Mesh developer guide build on BBC Micro-bit
* :github:`21820` - docs: "Crypto Cipher" API isn't available in the docs
* :github:`21755` - tests/drivers/adc/adc_api  failed on  mec15xxevb_assy6853 board.
* :github:`21706` - Link to releases in README.rst give a 404 error
* :github:`21701` - [Coverity CID :206600] Logically dead code in drivers/crypto/crypto_mtls_shim.c
* :github:`21677` - [Coverity CID :206388] Unrecoverable parse warning in subsys/cpp/cpp_new.cpp
* :github:`21675` - [Coverity CID :206390] Unrecoverable parse warning in subsys/cpp/cpp_new.cpp
* :github:`21514` - Logging - strange behaviour with RTT on nRF53
* :github:`21513` - NULL parameter checks in Zephyr APIs
* :github:`21500` - RFC: k_thread_join()
* :github:`21469` - ARC SMP is mostly untested in sanitycheck
* :github:`21455` - driver: subsys: sdhc: USAGE FAULT trace and no cs control
* :github:`21441` - Add UART5 on B-port to H7 pinmux
* :github:`21426` - civetweb triggers an error on Windows with Git 2.24
* :github:`21390` - BLE Incomplete Connect results in subsquent encryption failures
* :github:`21372` - cc26x2r1_launchxl build passed, but can't flash
* :github:`21369` - devicetree: clearly define constraints on identifier/property name conflicts
* :github:`21321` - error update for project civetweb
* :github:`21305` - New Kernel Timeout API
* :github:`21253` - 2.2 Release Checklist
* :github:`21201` - ARM: Core Stack Improvements/Bug fixes for 2.2 release
* :github:`21200` - Replace IWDG_STM32_START_AT_BOOT by WDT_DISABLE_AT_BOOT
* :github:`21158` - Giving Semaphore Limit+1 can cause limit+1 takes
* :github:`21156` - Interrupts do not work on UP Squared board
* :github:`21107` - LL_ASSERT and 'Imprecise data bus error' in LL Controller
* :github:`21093` - put sys_trace_isr_enter/sys_trace_isr_exit to user care about ISR instead of every ISR
* :github:`21088` - Bluetooth: Mesh: Send Model Message shouldn't require explicit NetKey Index
* :github:`21068` - Conflicting documentation for device initialization
* :github:`20993` - spinlock APIs need documentation
* :github:`20991` - test_timer_duration_period fails with stm32 lptimer
* :github:`20945` - samples/synchronization fails on nsim_hs_smp and nsim_sem_normal
* :github:`20876` - [Coverity CID :205820] Memory - corruptions in tests/crypto/tinycrypt/src/cmac_mode.c
* :github:`20875` - [Coverity CID :205840] Memory - corruptions in tests/benchmarks/mbedtls/src/benchmark.c
* :github:`20874` - [Coverity CID :205805] Memory - corruptions in tests/benchmarks/mbedtls/src/benchmark.c
* :github:`20873` - [Coverity CID :205782] Memory - corruptions in tests/benchmarks/mbedtls/src/benchmark.c
* :github:`20835` - [Coverity CID :205797] Control flow issues in drivers/flash/spi_nor.c
* :github:`20825` - stm32: dma: enable dma with peripheral using DMAMUX
* :github:`20699` - Each board should have a list of Kconfig options supported
* :github:`20632` - call to bt_gatt_hids_init influences execution time of work queue
* :github:`20604` - log will be discarded before logging_thread scheduled once
* :github:`20585` - z_clock_announce starvation with timeslicing active
* :github:`20492` - [Coverity CID :205653]Control flow issues in /drivers/dma/dma_stm32_v1.c
* :github:`20491` - [Coverity CID :205644]Control flow issues in /drivers/dma/dma_stm32_v1.c
* :github:`20348` - Convert remaining entropy to Devicetree
* :github:`20330` - devicetree Arduino bindings do not support identification of bus controllers
* :github:`20301` - tests/drivers/watchdog/wdt_basic_api failed on mec15xxevb_assy6853 board.
* :github:`20259` - Bluetooth: Mesh: Network management
* :github:`20137` - posix: undefined reference with --no-gc-sections
* :github:`20136` - kernel: undefined reference with --no-gc-sections
* :github:`20068` - Application doesn't start when SHELL-UART is enabled and UART is not connected on STM32F0
* :github:`19869` - Implement tickless capability for xlnx_psttc_timer
* :github:`19852` - Add support for GPIO AF remap on STM32F1XX
* :github:`19837` - SS register is 0 when taking exceptions on qemu_x86_long
* :github:`19813` - tests/crypto/rand32 failed on sam_e70 board on v1.14 branch.
* :github:`19763` - tests/subsys/usb/device/ failed on mimxrt1050_evk board.
* :github:`19614` - Make zephyr_library out of hal_stm32 and hal_st
* :github:`19550` - drivers/pcie: ``pcie_get_mbar()`` should return a ``void *`` not ``u32_t``
* :github:`19487` - tests/kernel/fifo/fifo_usage GPF crash on qemu_x86_long
* :github:`19456` - arch/x86: make use of z_bss_zero() and z_data_copy()
* :github:`19353` - arch/x86: QEMU doesn't appear to support x2APIC
* :github:`19307` - _interrupt_stack is defined in the kernel, but declared in arch headers
* :github:`19285` - devicetree: fixed non-alias reference to specific nodes
* :github:`19235` - move drivers/timer/apic_timer.c to devicetree
* :github:`19219` - drivers/i2c/i2c_dw.c is not 64-bit clean
* :github:`19144` - arch/x86: CONFIG_BOOT_TIME_MEASUREMENT broken
* :github:`19075` - k_delayed_work_submit() does not handle long delays correctly
* :github:`19067` - non-overlapping MPU gap-filling needs to be optional
* :github:`19038` - [zephyr branch 1.14 and master -stm32-netusb]:errors when i view RNDIS Device‘s properties on Windows 10
* :github:`18956` - memory protection for x86 dependent on XIP
* :github:`18940` - Counter External Trigger
* :github:`18808` - Docs for gpmrb board incorrectly refer to up_squared board
* :github:`18787` - arch/x86: retire loapic_timer.c driver in favor of new apic_timer.c
* :github:`18657` - drivers/timer/hpet.c should use devicetree, not CONFIG_* for MMIO/IRQ data
* :github:`18614` - same70 hsmci interface
* :github:`18568` - Support for Particle Photon
* :github:`18435` - [Coverity CID :203481]API usage errors in /tests/crypto/tinycrypt/src/test_ecc_utils.c
* :github:`18425` - [Coverity CID :203498]Memory - corruptions in /tests/application_development/gen_inc_file/src/main.c
* :github:`18422` - [Coverity CID :203415]Memory - illegal accesses in /subsys/shell/shell_telnet.c
* :github:`18389` - [Coverity CID :203396]Null pointer dereferences in /subsys/bluetooth/mesh/access.c
* :github:`18386` - [Coverity CID :203443]Memory - corruptions in /subsys/bluetooth/host/rfcomm.c
* :github:`18263` - flash sector erase fails on stm32f412
* :github:`18207` - tests/bluetooth/hci_prop_evt fails with code coverage enabled in qemu_x86
* :github:`18124` - synchronization example fails to build for SMP platforms
* :github:`18118` - samples/subsys/console doesn't work with qemu_riscv32
* :github:`18106` - Only 1 NET_SOCKET_OFFLOAD driver can be used
* :github:`18085` - I2C log level ignored
* :github:`18050` - BT Host - Advertisement extensions support
* :github:`18047` - BT Host: Advertising Extensions - Advertiser
* :github:`18046` - BT Host: Advertising Extensions - Scanner
* :github:`18044` - BT Host: Advertising Extensions - Periodic Advertisement Synchronisation (Rx)
* :github:`18042` - Only corporate members can join the slack channel
* :github:`17892` - arch/x86: clean up segmentation.h
* :github:`17888` - arch/x86: remove IAMCU ABI support
* :github:`17775` - Microchip XEC rtos timer should be using values coming from DTS
* :github:`17755` - ARC privilege mode stacks waste memory due to alignment requirements
* :github:`17735` - abolish Z_OOPS() in system call handlers
* :github:`17543` - dtc version 1.4.5 with ubuntu 18.04 and zephyr sdk-0.10.1
* :github:`17508` - RFC: Change/deprecation in display API
* :github:`17443` - Kconfig: move arch-specific stack sizes to arch trees?
* :github:`17430` - arch/x86: drivers/interrupt_controller/system_apic.c improperly classifies IRQs
* :github:`17415` - Settings Module - settings_line_val_read() returning -EINVAL instead of 0 for deleted setting entries
* :github:`17361` - _THREAD_QUEUED overlaps with x86 _EXC_ACTIVE in k_thread.thread_state
* :github:`17324` - failing bluetooth tests with code coverage enabled in qemu_x86
* :github:`17323` - failing network tests with code coverage enabled in qemu_x86
* :github:`17240` - add arc support in Zephyr's openthread
* :github:`17234` - CONFIG_KERNEL_ENTRY appears to be superfluous
* :github:`17166` - arch/x86: eliminate support for CONFIG_REALMODE
* :github:`17135` - Cannot flash LWM2M example for ESP32
* :github:`17133` - arch/x86: x2APIC EOI should be inline
* :github:`17104` - arch/x86: fix -march flag for Apollo Lake
* :github:`17064` - drivers/serial/uart_ns16550: CMD_SET_DLF should be removed
* :github:`16988` - Packet isn't received by server during stepping
* :github:`16902` - CMSIS v2 emulation assumes ticks == milliseconds
* :github:`16886` - Bluetooth Mesh: Receive segmented message multiple times
* :github:`16721` - PCIe build warnings from devicetree
* :github:`16720` - drivers/loapic_timer.c is buggy, needs cleanup
* :github:`16649` - z_init_timeout() ignores fn parameter
* :github:`16587` - build failures with gcc 9.x
* :github:`16436` - Organize generated include files
* :github:`16385` - watch dog timer causes the reboot on SAME70 board
* :github:`16330` - LPCXpresso55S69 secure/non-secure configuration
* :github:`16196` - display_mcux_elcdif driver full support frame buffer features
* :github:`16122` - Detect first block in LWM2M firmware updates.
* :github:`16096` - Sam gmac Ethernet driver should be able to detect the carrier state
* :github:`16072` - boards/up_squared: k_sleep() too long with local APIC timer
* :github:`15903` - Documentation missing for SPI and ADC async operations
* :github:`15680` - "backport v1.14 branch" label: update description and doc
* :github:`15565` - undefined references to ``sys_rand32_get``
* :github:`15504` -  Can I use one custom random static bd_addr before provision?
* :github:`15499` - gpio_intel_apl: gpio_pin_read() pin value doesn't match documentation
* :github:`15463` - soc/x86/apollo_lake/soc_gpio.h: leading zeros on decimal constants
* :github:`15449` - tests/net/ieee802154/crypto: Assertion Failure:  ds_test(dev) is false
* :github:`15343` - tests/kernel/interrupt: Assertion Failure in test_prevent_interruption
* :github:`15304` - merge gen_kobject_list.py and gen_priv_stacks.py
* :github:`15202` - tests/benchmarks/timing_info measurements are suddenly higher than previous values on nrf52_pca10040
* :github:`15181` - ztest issues
* :github:`15177` - samples/drivers/crypto:  CBC and CTR mode not supported
* :github:`14972` - samples: Create README.rst
* :github:`14790` - google_iot_mqtt sample does not work with qemu_x86 out of the box
* :github:`14763` - PCI debug logging cannot work with PCI-enabled NS16550
* :github:`14749` - Verify all samples work as intended
* :github:`14647` - IP: Zephyr replies to broadcast ethernet packets in other subnets on the same wire
* :github:`14591` - Infineon Tricore architecture support
* :github:`14540` - kernel: message queue MACRO not compatible with C++
* :github:`14302` - USB MSC fails USB3CV tests
* :github:`14173` - Configure QEMU to run independent of the host clock
* :github:`14122` - CONFIG_FLOAT/CONFIG_FP_SHARING descriptions are confusing and contradictory
* :github:`14099` - Minnowboard doesn't build tests/kernel/xip/
* :github:`13963` - up_squared: evaluate removal of SBL-related special configurations
* :github:`13821` - tests/kernel/sched/schedule_api: Assertion failed for test_slice_scheduling
* :github:`13783` - tests/kernel/mem_protect/stackprot failure in frdm_k64f due to limited privilege stack size
* :github:`13569` - ZTEST: Add optional float/double comparison support
* :github:`13468` - tests/drivers/watchdog/wdt_basic_api/testcase.yaml: Various version of "Waiting to restart MCU"
* :github:`13353` - z_timeout_remaining should subtract z_clock_elapsed
* :github:`12872` - Update uart api tests with configure/configure_get apis
* :github:`12775` - USB audio isochronous endpoints
* :github:`12553` - List of tests that keep failing sporadically
* :github:`12478` - tests/drivers/ipm/peripheral.mailbox failing sporadically on qemu_x86_64 (timeout)
* :github:`12440` - Device discovery of direct advertising devices is not working
* :github:`12385` - Support touch button
* :github:`12264` - kernel: poll: outdated check for expired timeout
* :github:`11998` - intermittent failures in tests/kernel/common: test_timeout_order: (poll_events[ii].state not equal to K_POLL_STATE_SEM_AVAILABLE)
* :github:`11928` - nRF UART nrfx drivers (nRF UARTE 0) won't build
* :github:`11916` - ISR table (_sw_isr_table) generation is fragile and can result in corrupted binaries
* :github:`11745` - logging: never leaves panic mode on fatal thread exception
* :github:`11261` - ARM Cortex-M4 (EFR32FG1P) MCU fails to wake up from sleep within _sys_soc_suspend()
* :github:`11149` - subsys/bluetooth/host/rfcomm.c: Missing unlock
* :github:`11016` - nRF52840-PCA10056/59: Cannot bring up HCI0 when using HCI_USB sample
* :github:`9994` - irq_is_enabled not available on nios2
* :github:`9962` - Migrate sensor drivers to device tree
* :github:`9953` - wrong behavior in pthread_barrier_wait()
* :github:`9741` - tests/kernel/spinlock:kernel.multiprocessing.spinlock_bounce crashing on ESP32
* :github:`9711` - RFC: Zephyr should provide a unique id interface
* :github:`9608` - Bluetooth: different transaction collision
* :github:`9566` - Unclear definition of CONFIG_IS_BOOTLOADER
* :github:`8139` - Driver for BMA400 accelerometer
* :github:`7868` - Support non-recursive single-toolchain multi-image builds
* :github:`7564` - dtc: define list of acceptable warnings (and silent them with --warning -no<warnign-name> option)
* :github:`6648` - Trusted Execution Framework: practical use-cases (high-level overview)
* :github:`6015` - PWM on 32bit arch can get 0 pulse_cycle because of 64bit calculation
* :github:`5857` - net: TCP retransmit queue implementation is broken
* :github:`5408` - Improve docs & samples on device tree overlay
* :github:`4985` - TEE support for ARMv8-M
* :github:`4911` - Filesystem support for qemu
* :github:`4832` - disco_l475_iot1: Provide 802.15.4 Sub-GHz
* :github:`4475` - Add support for Rigado BMD-3XX-EVAL boards
* :github:`4412` - Replace STM32 USB driver with DWC
* :github:`4326` - Port Zephyr to Cypress PSoC 6 MCU's
* :github:`3909` - Add Atmel SAM QDEC Driver
* :github:`3730` - ESP32: DAC Driver support
* :github:`3729` - ESP32 ADC Driver Support
* :github:`3727` - ESP32: SPI Driver Support
* :github:`3726` - ESP32: DMA Driver Support
* :github:`3694` - i2c: Drivers are not thread safe
* :github:`3668` - timeslice reset is not tested for interrupt-induced swaps
* :github:`3564` - Requires more UART samples for STM32 Nucleo/similar boards
* :github:`3285` - Allow taking advantage of HW-based AES block cipher
* :github:`3232` - Add ksdk dma shim driver
* :github:`3076` - Add support for DAC (Digital to Analog Converter) drivers
* :github:`2585` - Support for LE legacy out-of-band pairing
* :github:`2566` - Create a tool for finding out stack sizes automatically.
* :github:`1900` - Framework for Trusted Execution Environment
* :github:`1894` - Secure Key Storage
* :github:`1333` - Provide build number in include/generated/version.h

---

### Doc Releases Release Notes 2.4 (`doc/releases/release-notes-2.4.rst`)

:orphan:

.. _zephyr_2.4:

Zephyr 2.4.0
############

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

Major enhancements with this release include:

* Introduced initial support for virtual memory management.

* Added Bluetooth host support for periodic advertisement and isochronous
  channels.

* Enabled the new TCP stack, TCP2, by default. This stack was introduced in
  Zephyr v2.1.0 to improve network protocol testability with open source tools.

* Introduced a new toolchain abstraction with initial implementations for GCC
  and LLVM/Clang, and groundwork for future support of commercial toolchains.

* Moved to using C99 integer types and deprecate Zephyr integer types.  The
  Zephyr types can be enabled by Kconfig DEPRECATED_ZEPHYR_INT_TYPES option.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* CVE-2020-10060: UpdateHub Might Dereference An Uninitialized Pointer
* CVE-2020-10064: Improper Input Frame Validation in ieee802154 Processing
* CVE-2020-10066: Incorrect Error Handling in Bluetooth HCI core
* CVE-2020-10072: all threads can access all socket file descriptors
* CVE-2020-13598: FS: Buffer Overflow when enabling Long File Names in FAT_FS and calling fs_stat
* CVE-2020-13599: Security problem with settings and littlefs
* CVE-2020-13601: Under embargo until 2020/11/18
* CVE-2020-13602: Remote Denial of Service in LwM2M do_write_op_tlv

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

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
***********

* Moved to using C99 integer types and deprecate Zephyr integer types.  The
  Zephyr types can be enabled by Kconfig DEPRECATED_ZEPHYR_INT_TYPES option.

* The ``<sys/util.h>`` header has been promoted to a documented API with
  :ref:`experimental stability <api_lifecycle>`. See :ref:`util_api` for an API
  reference.

* The :c:func:`wdt_feed` function will now return ``-EAGAIN`` if
  issuing a feed would stall the caller.  Application code may need to
  ignore this diagnostic result or initiate another feed operation
  later.

* ``<drivers/uart.h>`` has seen its callbacks normalized.
  :c:type:`uart_callback_t` and :c:type:`uart_irq_callback_user_data_t`
  had their signature changed to add a struct device pointer as first parameter.
  :c:type:`uart_irq_callback_t` has been removed. :c:func:`uart_callback_set`,
  :c:func:`uart_irq_callback_user_data_set` and :c:func:`uart_irq_callback_set`
  user code have been modified accordingly.

* ``<drivers/dma.h>`` has seen its callback normalized. It had its signature
  changed to add a struct device pointer as first parameter. Such callback
  signature has been generalized through the addition of dma_callback_t.
  'callback_arg' argument has been renamed to 'user_data. All user code have
  been modified accordingly.

* ``<drivers/ipm.h>`` has seen its callback normalized.
  :c:type:`ipm_callback_t` had its signature changed to add a struct device
  pointer as first parameter. :c:func:`ipm_register_callback` user code have
  been modified accordingly. The context argument has been renamed to user_data
  and all drivers have been modified against it as well.

* The :c:func:`fs_open` function now accepts open flags that are passed as
  a third parameter.
  All custom file system front-ends require change to the implementation
  of ``open`` callback to accept the new parameter.
  To maintain original behaviour within user code, two argument invocations
  should be converted to pass a third argument ``FS_O_CREATE | FS_O_RDWR``.

* The struct device got 3 attributes renamed: ``config_info`` to ``config``,
  ``driver_api`` to ``api`` and finally ``driver_data`` to ``data``.
  This renaming was done to get rid of legacy names, for which the reasons
  do no longer apply.

* All device instances got a const qualifier. So this applies to all APIs
  manipulating ``struct device *`` (ADC, GPIO, I2C, ...). In order to avoid
  const qualifier loss on ISRs, all ISRs now take a ``const *void`` as a
  parameter as well.

* The ``_gatt_`` and ``_GATT_`` infixes have been removed for the HRS, DIS
  and BAS APIs and the Kconfig options.

* ``<include/bluetooth/gatt.h>`` callback :c:func:`bt_gatt_attr_func_t` used by
  :c:func:`bt_gatt_foreach_attr` and :c:func:`bt_gatt_foreach_attr_type` has
  been changed to always pass the original pointer of attributes along with its
  resolved handle.

* Established the unrestricted alignment of flash reads for all drivers.

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

* The full set of ``k_mem_pool`` and ``sys_mem_pool`` APIs
  are considered deprecated as of this release. The replacements are
  the ``k_heap`` and ``sys_heap`` APIs. These APIs are not tagged with
  ``__deprecated`` in the 2.4 release, but will be in 2.5. They will be
  removed completely in Zephyr 2.6 LTS. The set of APIs now deprecated is as
  follows:

  * ``k_mbox_data_block_get()``
  * ``k_pipe_block_put()``
  * ``K_MEM_POOL_DEFINE()``
  * ``k_mem_pool_alloc()``
  * ``k_mem_pool_free()``
  * ``k_mem_pool_free_id()``
  * ``SYS_MEM_POOL_DEFINE()``
  * ``sys_mem_pool_init()``
  * ``sys_mem_pool_alloc()``
  * ``sys_mem_pool_free()``
  * ``sys_mem_pool_try_expand_inplace()``

* The Kconfig option ``CONFIG_MULTITHREADING`` to disable multi-threading was
  deprecated due to lack of maintainership. This means that single-threaded
  mode with the scheduler disabled is deprecated; normal multi-threaded mode is
  still fully supported.

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

* Other

  * The deprecated ``MACRO_MAP`` macro has been removed from the
    :ref:`util_api`. Use ``FOR_EACH`` instead.
  * The CONFIG_NET_IF_USERSPACE_ACCESS is removed as it is no longer needed.

* Build system

  * The set of ``*_if_kconfig()`` CMake functions have been removed. Use
    ``_ifdef(CONFIG_ ...)`` instead.

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

* USB

  * HID class callbacks now takes a parameter ``const struct device*`` which
    is the HID device for which callback was called.

* Bluetooth

  * The ``_gatt_`` infix has been removed from all GATT service APIs.

* Bluetooth HCI Driver

  * bt_hci_evt_is_prio() removed, use bt_hci_evt_get_flags() instead when
    CONFIG_BT_RECV_IS_RX_THREAD is defined and call bt_recv and bt_recv_prio
    when their flag is set, otherwise always call bt_recv().

Kernel
******

* Initial support for virtual memory management

  * API definitions in ``include/sys/mem_manage.h``.
  * Supporting architectures will implement ``arch_mem_map()`` and enable
    ``CONFIG_MMU``.
  * The kernel is linked at its physical memory location in RAM.
  * The size of the address space is controlled via ``CONFIG_KERNEL_VM_SIZE``
    with memory mapping calls allocating virtual memory growing downward
    from the address space limit towards the system RAM mappings.
  * This infrastructure is still under heavy development.

* Device memory mapped I/O APIs

  * Namedspaced as DEVICE_MMIO and specified in a new
    ``include/sys/device_mmio.h`` header.
  * This is added to facilitate the specification and the storage location of
    device driver memory-mapped I/O regions based on system configuration.

    * Maintained entirely in ROM for most systems.
    * Maintained in RAM with hooks to memory-mapping APIs for MMU or PCI-E
      systems.

* Updates for Memory Domain APIs

  * All threads now are always a member of a memory domain. A new
    memory domain ``k_mem_domain_default`` introduced for initial threads
    like the main thread.
  * The ``k_mem_domain_destroy()`` and ``k_mem_domain_remove_thread()`` APIs
    are now deprecated and will be removed in a future release.
  * Header definitions moved to ``include/app_memory/mem_domain.h``.

* Thread stack specification improvements

  * Introduced a parallel set of ``K_KERNEL_STACK_*`` APIs for specifying
    thread stacks that will never host user threads. This will conserve memory
    as ancillary data structures (such as privilege mode elevation stacks) will
    not need to be created, and certain alignment requirements are less strict.

  * Internal interfaces to the architecture code have been simplified. All
    thread stack macros are now centrally defined, with arches declaring
    support macros to indicate the alignment of the stack pointer, the
    stack buffer base address, and the stack buffer size.

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

* ARC

  * Added ARC MetaWare toolchain support
  * General arch improvements for stacks & memory domains
  * API improvements for cache flush and cache invalidate
  * Debugging help: show all registers on exception
  * Fix for fast irq (one register bank configuration)
  * Fix for undefined shift behavior (CID 211523)

* ARM

  * AARCH32

    * Added support for ARM Cortex-M1 architecture.
    * Implemented the timing API in Cortex-M architecture using the Data
      Watchpoint and Trace (DWT) unit.
    * The interrupt vector relaying feature support was extended to Cortex-M
      Mainline architecture variants.
    * Cortex-M fault handling implementation was enhanced by adding an option to
      generate and supply the full register state to the kernel fatal error
      handling mechanism.
    * Fixed Cortex-M boot sequence for single-threaded applications
      (CONFIG_MULTITHREADING=n).
    * Added thread safety to Non-Secure entry function calls in ARMv8-M
      architecture.
    * Fixed stack randomization for main thread.
    * Fixed exception vector table alignment in Cortex-M architecture
    * Increased test coverage in QEMU for ARMv6-M architecture variant.
    * Removed the implementation of arch_mem_domain_* APIs for Cortex-M

  * AARCH64

    * Re-implemented thread context-switch to use the _arch_switch() API

* POSIX

* RISC-V

* x86

  * x86 MMU paging support has been overhauled to meet CONFIG_MMU requirements.

    * ``arch_mem_map()`` is implemented.
    * Restored support for 32-bit non-PAE paging. PAE use is now controlled
      via the ``CONFIG_X86_PAE`` option
    * Initial kernel page tables are now created at build time.
    * Page tables are no longer strictly identity-mapped

  * Added ``zefi`` infrastructure for packaging the 64-bit Zephyr kernel into
    an EFI application.

  * Added a GDB stub implementation that works over serial for x86 32-bit.

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

* Added support for these SoC series:

  * ARM Cortex-M1/M3 DesignStart FPGA
  * Atmel SAM4L
  * Nordic nRF52805
  * NXP i.MX RT685, i.MX8M Mini, and LPC11U6x
  * ARC QEMU support for EM and HS family

* Made these changes in other SoC series:

  * STM32L4/STM32WB: Added support for Low Power Mode.
  * STM32H7/STM32WB/STM32MP1: Added Dual Core concurrent register access
    protection using HSEM.
  * Increased cpu frequency for ARC nsim_hs_smp.

* Changes for ARC boards:

  * ARC QEMU boards for ARC EM and HS
  * ARC MetaWare toolchain support, including mdb runner for various ARC boards
  * gcov coverage support for ARC QEMU
  * New nSIM configuration, corresponding to em7d_v22 EMSK board
  * Enabled SMP on HSDK board, including dual core and quad core configurations.
  * Switched from legacy ARC-nSIM UART to ns16550 UART model and driver.
  * Fixed EMSDP secure config for emsdp_em7d_esp.

* Added support for these ARM boards:

  * Adafruit ItsyBitsy M4 Express
  * Arduino Nano 33 IOT
  * ARM Cortex-M1/M3 DesignStart FPGA reference designs running on the Digilent
    Arty A7 development board
  * Atmel SAM4L-EK board
  * Circuit Dojo nRF9160 Feather
  * EOS S3 Quick Feather
  * Laird Connectivity Pinnacle 100 Modem Development board (pinnacle_100_dvk)
  * nRF21540 DK (nrf21540dk_nrf52840)
  * nRF52805 emulation on nRF52 DK (nrf52dk_nrf52805)
  * nRF5340 DK
  * Nuvoton npcx7m6fb and pfm m487 boards
  * NXP i.MX RT685 EVK, i.MX8M Mini EVK, LPCXpresso LPC11U68
  * OLIMEX-STM32-H103
  * Ruuvitag board
  * Seagate FaZe board
  * Seeeduino XIAO
  * Serpente board
  * Silicon Labs BRD4180A (a.k.a. SLWRB4180A) Mighty Gecko Radio Board
  * ST B_L4S5I_IOT01A Discovery kit
  * ST NUCLEO-H745ZI-Q
  * Waveshare Open103Z
  * WeAct Studio Black Pill V2.0

* Made these changes in other boards:

  * b_l072z_lrwan1: Added flash, LoRa, USB, EEPROM, RNG
  * nRF boards: enabled HW Stack Protection by default on boards maintained by Nordic
  * nucleo_l552ze_q: Added non secure target and TFM support
  * STM32 boards: Enabled MPU on all boards with at least 64K flash
  * lpcxpresso55s69: Added TFM support

* Added support for these following shields:

  * Adafruit WINC1500 Wifi
  * ARM Ltd. V2C-DAPLink for DesignStart FPGA
  * Atmel AT86RF2XX Transceivers
  * Buydisplay 2.8" TFT Touch Shield with Arduino adapter
  * DAC80508 Evaluation Module

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

* ADC

  * Added chip select flags to SPI ADC drivers.

* Audio

  * N/A

* Bluetooth

  * L2CAP RX MTU is now controlled by CONFIG_BT_L2CAP_RX_MTU when
    CONFIG_BT_ACL_FLOW_CONTROL is disabled, previously this was controlled
    by CONFIG_BT_RX_BUF_LEN. If CONFIG_BT_RX_BUF_LEN has been changed from its
    default value then CONFIG_BT_L2CAP_RX_MTU should be set to
    CONFIG_BT_RX_BUF_LEN - 8.

* CAN

  * Added chip select flags to SPI CAN drivers.
  * Fixed MCP2515 driver to wait to reset.

* Clock Control

  * STM32: Various changes including Flash latency wait states computation,
    configuration option additions for H7 series, and fixes on F0/F3 PREDIV1
    support
  * Added LPC11U6X driver.

* Console

  * Added IPM driver.

* Counter

  * STM32: Added support on F0/F2 series.
  * Added MCUX PIT counter driver for Kinetis K6x and K8x SoCs.

* Crypto

  * N/A

* DAC

  * STM32: Added support for F0/F2/G4/L1 series.

* Debug

  * N/A

* Display

  * Enhanced SSD16XX driver to support loading WS from OTP.
  * Added chip select flags to SPI display drivers.

* DMA

  * STM32: Number of changes including k_malloc removal, driver priority init
    increase, get_status API addition and various cleanups.
  * Added MCUX EDMA driver for i.MX RT and Kinetis K6x SoCs.
  * Added MCUX LPC driver for LPC and i.MX RT6xx SoCs.

* EEPROM

  * Added driver supporting the on-chip EEPROM found on NXP LPC11U6X MCUs.
  * Fixed at2x cs gpio flags extraction from DT.

* Entropy

  * STM32: Added support for ISR mode. Added support on F7/H7/L0 series.

* ESPI

  * Enhanced XEC driver to support KBC status operations, ACPI_EC1 interface,
    and slaves with long initializations.
  * Fixed XEC driver frequency override during IO selection.

* Ethernet

  * Added VLAN support to Intel e1000 driver.
  * Added Ethernet support to stm32h7 based boards (with IT based TX).
  * Moved stm32 driver to device tree configuration.
  * Added support for setting fixed configuration and read from device tree
    for ENET ETH interface and PHY in mcux driver.
  * Added support for device that do not use SMI for PHY setup in mcux driver.
  * Added support for multiport gPTP in native_posix driver. This allows gPTP
    bridging testing.
  * Fixed MAC registers in enc28j60 driver to the latest Microchip reference manual.

* Flash

  * The driver selected by ``CONFIG_SPI_FLASH_W25QXXDV`` has been
    removed as it is unmaintained and all its functionality is available
    through ``CONFIG_SPI_NOR``.  Out of tree uses should convert to the
    supported driver using the ``jedec,spi-nor`` compatible.
  * Enhanced nRF QSPI NOR flash driver (nrf_qspi_nor) so it supports unaligned read offset, read length and buffer offset.
  * Added SFDP support in spi_nor driver.
  * Fixed regression in nRF flash driver (soc_flash_nrf) with :kconfig:option:`CONFIG_BT_CTLR_LOW_LAT` option.
  * Introduced NRF radio scheduler interface in nRF flash driver (soc_flash_nrf).
  * STM32: Factorized support for F0/F1/F3. Added L0 support. Various fixes.

* GPIO

  * Added driver for the Xilinx AXI GPIO IP.
  * Added LPC11U6X driver.

* Hardware Info

  * Added Atmel SAM4L driver.

* I2C

  * Introduced new driver for NXP LPC11U6x SoCs.  See
    :kconfig:option:`CONFIG_I2C_LPC11U6X`.

  * Introduced new driver for emulated I2C devices, where I2C operations
    are forwarded to a module that emulates responses from hardware.
    This enables testing without hardware and allows unusual conditions
    to be synthesized to test driver behavior.  See
    :kconfig:option:`CONFIG_I2C_EMUL`.

  * STM32: V1: Reset i2c device on read/write error.
  * STM32: V2: Added dts configurable Timing option.
  * Fixed MCUX LPI2C driver transfer status after NACK.

* I2S

  * Added LiteX controller driver.

* IEEE 802.15.4

  * Allow user to disable auto-start of IEEE 802.15.4 network interface.
    By default the IEEE 802.15.4 network interface is automatically started.
  * Added support for setting TX power in rf2xx driver.
  * Added Nordic 802.15.4 multiprotocol support, see :kconfig:option:`CONFIG_NRF_802154_MULTIPROTOCOL_SUPPORT`.
  * Added Kconfig :kconfig:option:`CONFIG_IEEE802154_VENDOR_OUI_ENABLE` option for defining OUI.

* Interrupt Controller

  * Enhanced GICV3 driver to support SGI API.
  * Added NPCX MIWU driver.

* IPM

  * Added Intel ADSP driver.

* Keyboard Scan

  * Enhanced FT5336 driver to support additional part number variants.

* LED

  * Added TI LP503X controller driver.
  * Introduced led_set_color, let_get_info, and channel-dedicated syscalls
  * Added shell support.

* LED Strip

  * Enhanced APA102 driver to support SPI chip select.

* LoRa

  * Made various enhancements and fixes in SX1276 driver.

* Modem

  * Added option to query the IMSI and ICCID from the SIM.
  * Added support for offloaded Sierra Wireless HL7800 modem.

* PECI

  * N/A

* Pinmux

  * Added LPC11U6X driver.
  * Added NPCX driver.

* PS/2

  * N/A

* PWM

  * STM32: Refactored using Cube LL API.
  * Added SAM9 TCC based driver.

* Sensor

  * Added API function ``sensor_attr_get()`` for getting a sensor's
    attribute.
  * Added support for wsen-itds accelerometer sensor.
  * Added chip select flags to SPI sensor drivers.
  * Added IIS2DH accelerometer driver.
  * Added MAX17055 fuel-gauge sensor driver.
  * Added SI7055 temperature sensor driver.
  * Enhanced FXOS8700 driver to support magnetic vector magnitude function.
  * Added SM351LT magnetoresistive sensor driver.
  * Added VCNL4040 proximity and light sensor driver.
  * Refactored LIS2DH and LSM6DSL drivers to support multiple instances.

* Serial

  * Added driver for the Xilinx UART Lite IP.
  * Added NXP IUART driver for i.MX8M Mini.
  * Implemented uart_config_get API in MCUX UART driver.
  * Added LPC11U6X driver.

* SPI

  * The SPI driver subsystem has been updated to use the flags specified
    in the cs-gpios devicetree properties rather than the
    SPI_CS_ACTIVE_LOW/HIGH configuration options.  Devicetree files that
    specify 0 for this field will probably need to be updated to specify
    GPIO_ACTIVE_LOW.  SPI_CS_ACTIVE_LOW/HIGH are still used for chip
    selects that are not specified by a cs-gpios property.
  * Added driver for the Xilinx AXI Quad SPI IP.
  * STM32: Various fixes around DMA mode.
  * Extended MCUX Flexcomm driver to support slave mode.
  * Added optional delays to MCUX DSPI and LPSPI drivers.

* Timer

  * N/A

* USB

  * The usb_enable() function, which, for some samples, was invoked
    automatically on system boot up, now needs to be explicitly called
    by the application in order to enable the USB subsystem. If your
    application relies on any of the following Kconfig options, then
    it shall also enable the USB subsystem:

    * :kconfig:option:`CONFIG_USB_DEVICE_NETWORK_ECM`
    * :kconfig:option:`CONFIG_USB_DEVICE_NETWORK_EEM`
    * :kconfig:option:`CONFIG_USB_DEVICE_NETWORK_RNDIS`
    * :kconfig:option:`CONFIG_TRACING_BACKEND_USB`
    * ``CONFIG_USB_UART_CONSOLE``

  * USB device support has got its own work queue
    which is used by CDC ACM class by default.

  * CDC ACM Class was slightly reworked.

  * Suspend and resume support in CDC ACM and HID classes
    has been corrected.

  * Atmel SAM0 USB device driver (usb_dc_sam0) was revised.
    All drivers now use common macros for getting indexes and direction
    from an endpoint.

* Video

  * N/A

* Watchdog

  * Added MCUX WWDT driver for LPC SoCs.
  * Enhanced Gecko driver to support Gecko Series 2 SoC.

* WiFi

  * Added IPv6 support to Simplelink driver.
  * Added DNS offloading support to eswifi driver.
  * Fixed esp driver offload protocol parsing.
  * Fixed esp driver GPIO reset control logic.
  * Fixed eswifi driver offloading packet parsing.

Networking
**********

* The new TCP stack is enabled by default. The legacy TCP stack is not yet
  removed and can be used if needed.
* The network interface is made a kernel object. This allows better access
  control handling when usermode is enabled.
* The kernel stacks are used in network related threads to save memory when
  usermode is enabled.
* Network statistics collection can be enabled in key points of the network
  stack. This can be used to get information where time is spent in RX or TX.
* The BSD socket sendmsg() can now be used with AF_PACKET type sockets.
* Added support for enabling OpenThread reference device.
* Added support for enabling MQTT persistent sessions.
* Added "net tcp recv" command to net shell to enable TCP RX in manual testing.
* Added ObjLnk resource type support to LWM2M.
* Added userspace support to MQTT publisher, echo-server and echo-client
  sample applications.
* Added support to rejecting received and unsupported PPP options.
* Added support for select() when using socket offloading.
* Added support for IPv6 multicast packet routing.
* Added support to SOCK_DGRAM type sockets for AF_PACKET family.
* Added support for using TLS sockets when using socket offloading.
* Added additional checks in IPv6 to ensure that multicasts are only passed to the
  upper layer if the originating interface actually joined the destination
  multicast group.
* Allow user to specify TCP port number in HTTP request.
* Allow application to initialize the network config library instead of network
  stack calling initialization at startup. This enables better control of
  network resources but requires application to call net_config_init_app()
  manually.
* Allow using wildcards in CoAP resource path description.
* Allow user to specify used network interface in net-shell ping command.
* Allow user to select a custom mbedtls library in OpenThread.
* Removed dependency to :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` from offloaded
  WiFi device drivers.
* Print more gPTP status information in gptp net shell.
* Fixed the network traffic class statistics collection.
* Fixed WiFi shell when doing a scan.
* Fixed IPv6 routes when nexthop is link local address of the connected peer.
* Fixed IPv6 Router Solicitation message handling.
* Fixed BSD socket lib and set errno to EBADF if socket descriptor is invalid.
* Fixed received DNS packet parsing.
* Fixed DNS resolving by ignoring incoming queries while we are resolving a name.
* Fixed CoAP zero length option parsing.
* Fixed gPTP port numbering to start from 1.
* Fixed gPTP BMCA priority vector calculation.
* Fixed multiple interface bound socket recv() for AF_PACKET sockets.
* Fixed PPP Term-Req and Term-Ack packet length when sending them.
* Fixed PPP ipv6cp and ipcp Configure-Rej handling.
* Fixed PPP option parsing and negotiation handling.
* Fixed PPP ipcp option handling when the protocol goes down.
* Fixed PPP ipv6cp and ipcp network address removal when connection goes down.
* Added support to rejecting received and unsupported PPP options.
* Added initial support for PAP authentication in PPP.
* Fixed a race PPP when ppp_fsm_open() was called in CLOSED state.
* Fixed LWM2M FOTA socket closing.
* Fixed LWM2M block transfer retransmissions.
* Fixed LWM2M opaque data transfer in block mode.
* Fixed LWM2M Security and Server object instance matching.
* Fixed LWM2M updating lifetime on Register Update event.
* Fixed MQTT double CONNACK event notification on server reject.

Bluetooth
*********

* Host

  * Added basic support for Isochronous Channels (also known as LE Audio).
  * Added support for Periodic Advertising (both Advertising and Scanning
    procedures).
  * The application can now specify preferences for the PHY update procedure PHY
    choices.
  * A new "bond_deleted" callback has been introduced.
  * Added a new callback for GATT (un)subscription.
  * Added support for the application to provide subscription information to the
    stack prior to reconnection (``bt_gatt_resubscribe``).
  * The application can now request for the CCC descriptor to be discovered
    automatically by the stack when subscribing to a characteristic.
  * Fixed a regression introduced in 2.3 along the EATT feature, where the ATT
    throughput could not reach the expected values.
  * Fixed a deadlock in the RX thread that was observed multiple times in
    scenarios involving high throughput and a sudden disconnection.
  * Fixed a race condition upon advertising resume.
  * The GATT notify multiple feature is now disabled by default.
  * The advertiser can now be requested to restart even when a connection
    object is not available.
  * The L2CAP security level will now be elevated automatically when a
    connection is rejected for security reasons.
  * When LE Secure Connections are the only option enabled, the security level
    will now be elevated to Level 4 automatically.
  * Fixed CCC restoring when using settings lazy loading.
  * Fixed recombination of ACL L2CAP PDUs when the header itself is split across
    multiple HCI ACL packets.
  * GATT no longer assumes the position of the CCC descriptor and instead
    discovers it.
  * Multiple additional fixes.

* Mesh

  * Added support for storage of model data in a key-value fashion.
  * Added support for a network loopback.
  * Multiple qualification-related fixes.

* BLE split software Controller

  * The advanced scheduling algorithms that were supported in the legacy
    Controller have been ported to the split one.
  * Preliminary support for Advertising Extensions, restricted to
    non-connectable advertising for now.
  * Very early support for Periodic Advertising. This should be considered an
    early experimental draft at this stage.
  * Added full support for the Nordic nRF5340 IC, not just the engineering
    sample.
  * Added support for the Nordic nRF52805 IC.
  * Several fixes to scheduling and window calculation, some of which had an
    impact in the cooperation between the flash driver and the Controller.
  * Fixed an null pointer dereference in the ticker code.

* HCI Driver

  * A new BT_QUIRK_NO_AUTO_DLE has been added for Controllers that do not follow
    the recommendation of auto-initating the data length update procedure. This
    is in fact the case of the split software Controller.

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

* Improved support for additional toolchains:

  * Better toolchain abstractions.
  * Support for the ARC MetaWare toolchain.

* Devicetree

  * Added new devicetree macros that provide a default value if the property
    or cell accessor doesn't contain the requested data.

  * Added support for inferring bindings for ``/zephyr,user`` devicetree node
    to allow applications an easy way to specify application specific
    devicetree properties without having a binding.

* Support for multiple SOC and ARCH roots.
  The :ref:`SOC_ROOT <application>` and ``ARCH_ROOT`` variables used to specify
  support files for out of tree SoCs and architectures now accept multiple
  paths, separated by semicolons. As a result, the ``SOC_DIR`` Kconfig variable
  is no longer supported.

  Uses like ``source $(SOC_DIR)/<path>`` must be changed to
  ``rsource <relative>/<path>`` or similar.

* BOARD, SOC, DTS, and ARCH roots can now be specified in each module's
  :file:`zephyr/module.yml` file; see :ref:`modules_build_settings`.

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

* Disk

* Management

  * MCUmgr

    * Moved mcumgr into its own directory.
    * UDP port switched to using kernel stack.
    * smp: added missing socket close in error path.

  * Added support for Open Supervised Device Protocol (OSDP), see :kconfig:option:`CONFIG_OSDP`.

  * updatehub

    * Added download block check.
    * Added support to flash integrity check using SHA-256 algorithm.
    * Moved updatehub from lib to subsys/mgmt directory.
    * Fixed out-of-bounds access and add flash_img_init return value check.
    * Fixed getaddrinfo resource leak.

* Settings

  * If a setting read is attempted from a channel that doesn't support reading return an error rather than faulting.
  * Disallow modifying the content of a static subtree name.

* Random

* POSIX subsystem

* Power management

* Logging

  * Fixed immediate logging with multiple backends.
  * Switched logging thread to use kernel stack.
  * Allow users to disable all shell backends at one using :kconfig:option:`CONFIG_SHELL_LOG_BACKEND`.
  * Added Spinel protocol logging backend.
  * Fixed timestamp calculation when using NEWLIB.

* LVGL

  * Library has been updated to the new major release v7.0.2.

  * It is important to note that v7 introduces multiple API changes and new
    configuration settings, so applications developed on v6 or previous versions
    will likely require some porting work. Refer to `LVGL 7 Release notes
    <https://github.com/lvgl/lvgl/releases/tag/v7.0.0>`_ for more information.

  * LVGL Kconfig option names have been aligned with LVGL. All LVGL
    configuration options ``LV_[A-Z0-9_]`` have a matching Zephyr Kconfig
    option named as ``CONFIG_LVGL_[A-Z0-9_]``.

  * LVGL Kconfig constants have been aligned with upstream suggested defaults.
    If your application relies on any of the following Kconfig defaults consider
    checking if the new values are good or they need to be adjusted:

    * :kconfig:option:`CONFIG_LVGL_HOR_RES_MAX`
    * :kconfig:option:`CONFIG_LVGL_VER_RES_MAX`
    * :kconfig:option:`CONFIG_LVGL_DPI`
    * :kconfig:option:`CONFIG_LVGL_DISP_DEF_REFR_PERIOD`
    * :kconfig:option:`CONFIG_LVGL_INDEV_DEF_READ_PERIOD`
    * :kconfig:option:`CONFIG_LVGL_INDEV_DEF_DRAG_THROW`
    * :kconfig:option:`CONFIG_LVGL_TXT_LINE_BREAK_LONG_LEN`
    * :kconfig:option:`CONFIG_LVGL_CHART_AXIS_TICK_LABEL_MAX_LEN`

  * Note that ROM usage is significantly higher on v7 for minimal
    configurations. This is in part due to new features such as the new drawing
    system. LVGL maintainers are currently investigating ways for reducing the
    library footprint when some options are not enabled, so you should wait for
    future releases if higher ROM usage is a concern for your application.

* Shell

  * Switched to use kernel stacks.
  * Fixed select command.
  * Fixed prompting dynamic commands.
  * Change behavior when more than ``CONFIG_SHELL_ARGC_MAX`` arguments are
    passed.  Before 2.3 extra arguments were joined to the last argument.
    In 2.3 extra arguments caused a fault.  Now the shell will report that
    the command cannot be processed.

* Storage

  * Added flash SHA-256 integrity check.

* Tracing

  * Tracing backed API now checks if init function exists prio to calling it.

* Debug

  * Core Dump

    * Added the ability to do core dump when fatal error is encountered.
      This allows dumping the CPU registers and memory content for offline
      debugging.
    * Cortex-M, x86, and x86-64 are supported in this release.
    * A data output backend utilizing the logging subsystem is introduced
      in this release.

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.

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

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

  * nvs: Do full chip erase when flashing.
  * nrf: onoff_level_lighting_vnd_app: Fixed build with mcumgr.
  * drivers: flash_shell: new commands write_unaligned and write_pattern.
  * bluetooth: hci_spi: Fixed cmd_hdr and acl_hdr usage.
  * Removed zephyr nfc sample.
  * drivers: Fixed uninitialized spi_cfg in spi_fujitsu_fram sample.
  * Updated configuration for extended advertising in Bluetooth hci_uart and hci_rpmsg examples.

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

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

* :github:`28665` - boards b_l4s5i_iot01a: invertion of user LEDS polarity
* :github:`28659` - [Coverity CID :214346] Out-of-bounds access in subsys/net/ip/tcp2.c
* :github:`28654` - [lwm2m stm32F429] No registration with server possible
* :github:`28653` - Bluetooth: Mesh: TX Power Dynamic Control
* :github:`28639` - tests: kernel: sleep: is failing for nRF51
* :github:`28638` - bq274xx sample unable to build
* :github:`28635` - nrf: qspi: devicetree opcode properties are ignored
* :github:`28628` - samples/tfm_integration/tfm_ipc: regression on nucleo_l552_ze
* :github:`28627` - tests: kernel: fatal: exception: stack_sentinel test is failing for nRF platforms
* :github:`28625` - tests: net: tcp2: llegal use of the EPSR
* :github:`28621` - tests: kernel: mem_protect: syscalls: wrong FAULTY_ADDRESS for nucleo_l073rz
* :github:`28605` - Build failure - (64-bit platforms) acrn/bcm958402m2_a72/native_posix_64/... on a number of sanitycheck tests w/TCP2
* :github:`28604` - mcumgr smp_svr sample not working over shell or serial transport
* :github:`28603` - tests: kernel: timer: timer_api: Failed on nucleo_l073rz
* :github:`28602` - TCP2:frdm_k64f/mimxrt1064_evk  tests/net/tcp2 regression failure in RC2
* :github:`28577` - possible bug / regression in new TCP stack
* :github:`28571` - Erroneous call to ull_disable_mark in ull_adv::disable()
* :github:`28565` - sensor: lsm6dsl: incompatible pointer type (warning)
* :github:`28559` - Unable to extend the flash sync API part of the BLE Controller
* :github:`28552` - up_squared: samples/portability/cmsis_rtos_v1/philosophers/ failed.
* :github:`28549` - up_squared: tests/kernel/threads/thread_apis/ failed
* :github:`28548` - up_squared:  tests/arch/x86/pagetables/ failed.
* :github:`28547` - up_squared: tests/subsys/debug/coredump failed.
* :github:`28540` - littlefs: MPU FAULT and failed to run
* :github:`28538` - Atmel SAM4L have two pinctrl with wrong map
* :github:`28492` - Could not build Zephyr application for swervolf_nexys board in simulation
* :github:`28480` - ``tests/lib/devicetree/legacy_api/libraries.devicetree.legacy`` fails to build on pinnacle_100_dvk
* :github:`28471` - Central not working properly on nRF5340-DK
* :github:`28465` - Building OpenThread NCP: build system has concurrency issue
* :github:`28460` - Generated ExternalProject include directories
* :github:`28453` - qemu 5.1 hangs on a number tests on x86_64
* :github:`28443` - drivers: sensor: hts221 compilation issue linked to DT property drdy_gpios
* :github:`28434` - Shell Tab Completion Candidates results in segmentation fault
* :github:`28414` - kernel/timeout: next_timeout() is returning negative number of ticks
* :github:`28413` - [Coverity CID :214280] Unintentional integer overflow in tests/posix/common/src/nanosleep.c
* :github:`28412` - [Coverity CID :214279] 'Constant' variable guards dead code in tests/drivers/clock_control/nrf_lf_clock_start/src/main.c
* :github:`28411` - [Coverity CID :214281] Unchecked return value in subsys/mgmt/osdp/src/osdp.c
* :github:`28397` - gcc 10.x compile warning/error for array subscript is outside the bounds in cmsis_rtos_v2/thread.c
* :github:`28394` - nanosleep test failed on ARC series targets
* :github:`28390` - drivers: sensor: lsm6dsl compilation issue when sensor defined in board (I2C) and in test (SPI)
* :github:`28385` - drivers.clock.nrf_lf_clock_start_xtal_no_wait.wait_in_thread fails on nrf9160dk_nrf9160
* :github:`28384` - Bluetooth: L2CAP: Bad CoC SDU segment handling
* :github:`28380` - drivers: peci: xec: Cannot recover PECI bus after PECI transfer fails
* :github:`28375` - gcc 10.x compile warning/error for array subscript 0 is outside the bounds in tests/bluetooth/tester/src/gap.c
* :github:`28371` - gcc 10.x compile warning/error for array subscript 0 is outside the bounds in subsys/bluetooth/mesh/prov.c
* :github:`28361` - USB audio samples fails if ASSERT=y
* :github:`28360` - drivers: nrf_802154: SWI IRQ priority is not read correctly
* :github:`28347` - Possible use-after-free of rx_msg->tx_block in kernel/mailbox.c
* :github:`28344` - cdc_acm sample with CONFIG_NO_OPTIMIZATIONS=y crashes on nrf52840 dev board
* :github:`28343` - Bluetooth peripheral sample auto disconnects "ST B_L4S5I_IOT01A Discovery kit"
* :github:`28341` - No SRAM available to link echo_server for atsamr21 with ieee802154.overlay
* :github:`28337` - Cannot flash Atmel boards using west
* :github:`28332` - What is the airspeed velocity of an unladen swallow running Zephyr?
* :github:`28331` - Shell on CDC ACM UART stopped working after PR #24873
* :github:`28326` - Sample boards nrf mesh onoff not working
* :github:`28325` - bluetooth: null pointer dereference for non-connectable extended advertising
* :github:`28324` - GATT notifications aren't working for CUD characteristics
* :github:`28319` - tests: kernel: context: fails because timer expiration is shorter than excepted
* :github:`28317` - Asymmetric nrfx spi_transceive tx/rx lengths outputs error
* :github:`28307` - Can't build bootloader/mcuboot while ``CONF_FILE`` contains multiple files.
* :github:`28305` - Device not found (SX1276 with nRF52840)
* :github:`28303` - nucleo_l4r5zi uses wrong pinmux setting
* :github:`28295` - kernel.common: lpcxpresso55s16_ns test failure
* :github:`28294` - arch.interrupt.gen_isr_table.arm_mainline: lpcxpresso55s16_ns failed
* :github:`28289` - tests: arch: arm: arm_sw_vector_relay: fails on nucleo_f091rc
* :github:`28283` - LWM2M: Invalid ACK when server is using message ID 0
* :github:`28282` - Slave host auto-initiate stalls if master does not support extended reject indications, and procedure collision occurs
* :github:`28280` - tests/kernel/tickless/tickless_concept: disco_l475_iot1 build issue
* :github:`28275` - drivers: bluetooth: hci_spi: hci driver is init before spi causing an error on device_get_binding
* :github:`28270` - Errors in the HL7800.c file
* :github:`28267` - up_squared(acrn):running tests/kernel/workq/work_queue_api/ failed
* :github:`28266` - up_squared(acrn):running tests/kernel/sched/schedule_api/ failed
* :github:`28265` - up_squared(acrn):running tests/kernel/timer/timer_api/ failed
* :github:`28264` - up_squared(acrn):running tests/kernel/timer/timer_monotonic/ failed
* :github:`28262` - up_squared(acrn):running tests/kernel/tickless/tickless_concept/ failed
* :github:`28261` - up_squared(acrn):running tests/kernel/common/ failed
* :github:`28260` - up_squared(acrn):running tests/portability/cmsis_rtos_v2/ failed
* :github:`28259` - up_squared(acrn):running tests/subsys/debug/coredump/ failed
* :github:`28258` - up_squared(acrn):running tests/drivers/counter/counter_cmos/ failed
* :github:`28256` - mimxrt1050_evk: running samples/subsys/fs/fat_fs/ failed
* :github:`28255` - mimxrt1050_evk:running samples/drivers/display/ failed
* :github:`28251` - Tests of the cmsis_dsp library fails on nrf52840dk_nrf52840 platform
* :github:`28248` - bt_gatt_notify() causes "unable to alllocate TX buffer"
* :github:`28240` - nordic spim: does not work with SPI-SDHC infrastructure
* :github:`28234` - ipv6: multicast group: wrong filtering
* :github:`28230` - "make zephyr_generated_headers" produces incorrect result (SHELL:") after recent cmake refactor
* :github:`28229` - Possible NULL dereference in subsys/net/ip/net_context.c.
* :github:`28223` - LEDs in the board nRF52840dk_nRF52840 dont work with Lora
* :github:`28218` - Possible NULL dereference in subsys/logging/log_msg.c.
* :github:`28216` - socket: send fails instead of blocking when there are no more net buffers
* :github:`28211` - "High" current drawn when ussing RTT log back-end with CONFIG_LOG_IMMEDIATE and CONFIG_LOG_BACKEND_RTT_MODE_DROP
* :github:`28206` - mimxrt685_cm33: many cases has no console output seems hangs in kernel init.
* :github:`28205` - kernel.timer.tickless: frdmk64f failure
* :github:`28203` - Cannot flash TI boards using west
* :github:`28202` - Adafruit TFT touch shield cap touch flipped sides left-to-right
* :github:`28197` - samples/net/sockets/echo_client/sample.net.sockets.echo_client.nrf_openthread fails to build
* :github:`28196` - samples/boards/intel_s1000_crb/audio/sample.board.intel_s1000_crb.audio Fails to build
* :github:`28193` - include/drivers/flash: API stands mistakenly unrestricted alignment of writes.
* :github:`28185` - Problem using SX1276 with nRF52840dk
* :github:`28184` - tests: drivers: spi: spi_loopback: fails on board nucleo_wb55rg
* :github:`28181` - MQTT not working with MOSQUITTO broker:
* :github:`28174` - [Coverity CID :214213] Improper use of negative value in tests/net/socket/af_packet/src/main.c
* :github:`28173` - [Coverity CID :214210] Side effect in assertion in tests/arch/arm/arm_interrupt/src/arm_interrupt.c
* :github:`28172` - [Coverity CID :214227] Resource leak in subsys/mgmt/hawkbit/hawkbit.c
* :github:`28171` - [Coverity CID :214224] Unsigned compared against 0 in subsys/storage/flash_map/flash_map.c
* :github:`28169` - [Coverity CID :214220] Explicit null dereferenced in subsys/mgmt/hawkbit/hawkbit.c
* :github:`28167` - [Coverity CID :214209] Dereference after null check in subsys/mgmt/osdp/src/osdp.c
* :github:`28166` - [Coverity CID :214211] Unused value in drivers/entropy/entropy_stm32.c
* :github:`28165` - [Coverity CID :214215] Out-of-bounds access in subsys/mgmt/mcumgr/smp_shell.c
* :github:`28164` - [Coverity CID :214225] Buffer not null terminated in subsys/net/lib/lwm2m/ipso_generic_sensor.c
* :github:`28163` - [Coverity CID :214223] Untrusted value as argument in subsys/net/lib/sockets/sockets_tls.c
* :github:`28162` - [Coverity CID :214221] Untrusted value as argument in subsys/net/lib/sockets/sockets_tls.c
* :github:`28161` - [Coverity CID :214219] Uninitialized scalar variable in subsys/net/lib/sockets/sockets_tls.c
* :github:`28160` - [Coverity CID :214212] Negative array index read in subsys/net/lib/dns/resolve.c
* :github:`28157` - benchmark.data_structures fails(bus error) on mimxrt1020/60/64/frdmk64f  platform
* :github:`28156` - twr_kv58f220m: libraries.cmsis_dsp.transform.cf64 test fails
* :github:`28154` - reel_board:running samples/subsys/usb/console/ failed
* :github:`28153` - reel_board: running samples/subsys/shell/fs/ failed
* :github:`28152` - frdm_k64f: running samples/subsys/canbus/canopen/ failed
* :github:`28151` - gPTP should allow user setting of priority1 and priority2 fields used in BMCA
* :github:`28150` - mec15xxevb_assy6853:running samples/boards/mec15xxevb_assy6853/power_management/ failed
* :github:`28149` - mec15xxevb_assy6853:running samples/drivers/ps2/ failed
* :github:`28148` - mec15xxevb_assy6853:running samples/drivers/espi/ failed
* :github:`28146` - mec15xxevb_assy6853:running samples/drivers/kscan/ failed
* :github:`28145` - nRF52840 Dongle cannot scan LE Coded PHY devices
* :github:`28139` - tests: benchmarks: data_structure_perf: rbtree_perf: uninitialized root struct
* :github:`28138` - No more able to flash board on windows
* :github:`28134` - mcuboot: specifying -DCONF_FILE results in failure
* :github:`28133` - using nrf52dk_nrf52832 with serial disabled
* :github:`28131` - Crash while serving large files via HTTP with TCP2
* :github:`28118` - timers strange rounding errors
* :github:`28114` - subsys: OSDP forces SERIAL=y
* :github:`28112` - timer/scheduler problem (STM32F407)
* :github:`28108` - EEPROM shell MPU Fault when performing a write command with more than 9 bytes
* :github:`28104` - sanitycheck overloaded by tests/subsys/logging/log_immediate with large -j values
* :github:`28099` - subsys: power: device implicit depends on CONFIG_SYS_POWER_MANAGEMENT
* :github:`28097` - cmake: fails to filter options for target language
* :github:`28095` - Doc: Getting Started Guide: reel board blinky gif is outdated
* :github:`28092` - Make SPI speed of SDHC card configurable
* :github:`28090` - bluetooth: build error with extended advertising
* :github:`28083` - Align MWDT and LD linker scripts
* :github:`28069` - eswifi: build failure
* :github:`28068` - Crash in USB device when turning HFXO off
* :github:`28061` - nrf52840 can't boot up after power plug in,unless it was connected to JLINKRTTVIEWER with a JTAG
* :github:`28059` - sample for sensor lps22hh is not filtered out for bare nrf52dk_nrf52832
* :github:`28057` - TCP2: client side receives EOF before all pending data is fed into it
* :github:`28053` - Eclipse broken build ability
* :github:`28052` - metairq_dispatch sample fails on nrf platforms
* :github:`28049` - nucleo_wb55rg: test/spi/spi_loopback build failure
* :github:`28045` - [mimxrt1050_evk] uart_fifo_fill only  send 1 byte
* :github:`28040` - sanitycheck reports test timeouts as "exited with 2"
* :github:`28036` - samples/drivers/flash_shell/sample.drivers.flash.shell fails to build on nucleo_wb55rg
* :github:`28033` - rand32_ctr_drbg.c fails to build
* :github:`28032` - eth_enc424j600 fails to build
* :github:`28031` - samples/subsys/mgmt/mcumgr/smp_svr/sample.mcumg.smp_svr.bt fails to build
* :github:`28020` - call k_malloc or k_mem_slab_alloc allowed or not
* :github:`28017` - tests/bluetooth/init/bluetooth.init.test_controller_dbg_ll_sw_split fails to build on a few boards
* :github:`28016` - tests/boards/intel_s1000_crb/main/boards.s1000_crb.main fails to build
* :github:`28013` - tests/misc/test_build/buildsystem.kconfig.utf8_in_values fails on faze
* :github:`28012` - tests/net/lib/mqtt_subscriber/net.mqtt.subscriber fails to build on cc3220sf_launchxl
* :github:`28006` - Module: mbedtls broken following driver instances const-ification
* :github:`28003` - Module: segger broken following driver instances const-ification
* :github:`28000` - sam_e70_xplained:Test cases run failed at tests/net/lib/dns_packet/.
* :github:`27985` - change in device initialization behavior
* :github:`27982` - TCP2: Apparent issues with client-side connections (hangs when server (apparently) closes connection).
* :github:`27964` - usb: Standard requests are not filtered.
* :github:`27963` - tests: net: socket: af_packet: failed on nucleo_f746zg
* :github:`27958` - USB: GET_STATUS(Device) is improperly handled
* :github:`27943` - tests/kernel/sched/schedule_api fails on nsim_hs_smp
* :github:`27935` - hci_uart not acknowledging data correctly / losing packets
* :github:`27934` - Tests ignore custom board config overlays
* :github:`27931` - Address resolving when eswifi is used causes MPU FAULT
* :github:`27929` - Address resolving when eswifi is used causes MPU FAULT
* :github:`27928` - Settings api hangs
* :github:`27921` - Bluetooth: Dynamic TX power is overwritten every procedure
* :github:`27915` - Samples:LoRa  send;sx126x with NRF52840dk ,no data from SPI miso
* :github:`27887` - Event counter may get out of sync when multiple events collide in ticker
* :github:`27880` - build errors for some samples/ on lpcxpresso55s69_cpu1
* :github:`27876` - TCP2: Apparent issues with server-side connections (>1 connection doesn't work properly)
* :github:`27874` - Nordic timer failures with synchronized periodic timers
* :github:`27867` - up_squared: couldn't get test result from serial of each test.
* :github:`27855` - i2c bitbanging on nrf52840
* :github:`27849` - tests: lib: cmsis_dsp: transform: malloc out of memory
* :github:`27847` - tests/lib/sprintf fails on native_posix_64
* :github:`27843` - spi_nor.c: Wrong buffers for rx_set
* :github:`27838` - [Coverity CID :212961] Side effect in assertion in tests/kernel/threads/thread_apis/src/test_threads_cancel_abort.c
* :github:`27837` - [Coverity CID :212956] Out-of-bounds access in tests/kernel/mem_protect/mem_map/src/main.c
* :github:`27836` - [Coverity CID :212960] Logically dead code in samples/net/sockets/echo_client/src/echo-client.c
* :github:`27835` - [Coverity CID :212962] Macro compares unsigned to 0 in include/sys/mem_manage.h
* :github:`27834` - [Coverity CID :212959] Macro compares unsigned to 0 in include/sys/mem_manage.h
* :github:`27833` - [Coverity CID :212958] Out-of-bounds access in arch/x86/core/x86_mmu.c
* :github:`27832` - [Coverity CID :212957] Out-of-bounds access in arch/x86/core/x86_mmu.c
* :github:`27821` - frdm_k64f:running test cases /tests/subsys/power/power_mgmt/ error
* :github:`27820` - reel_board:running failed in tests/drivers/gpio/gpio_api_1pin/
* :github:`27813` - samples without sample.yaml
* :github:`27811` - intermittent failure of tests/net/socket/select on qemu_x86
* :github:`27803` - samples: update to support new devicetree flag defaults
* :github:`27792` - Default clock settings for STM32F7 violates operating conditions
* :github:`27791` - DT_DRV_COMPAT in spi_flash_w25qxxdv.c named incorrectly
* :github:`27785` - memory domain arch implementation not correct with respect to SMP on ARC
* :github:`27783` - Add support for mbedTLS Server Name Indication (SNI) at configuration
* :github:`27771` - iotdk: cpu_stats function doesn't work as expected
* :github:`27768` - Usage fault when running with CONFIG_NO_OPTIMIZATIONS=y
* :github:`27765` - Sanitycheck: non-existing test case shows up in .xml file.
* :github:`27753` - drivers: sensor: lis2dh: compilation issue struct lis2dh_config' has no member named 'spi_conf'
* :github:`27745` - Zephyr with host stack and hci driver only ?
* :github:`27738` - em_starterkit_7d sanitycheck test failure on tests\kernel\mem_protect\syscalls test
* :github:`27734` - vl53l0x driver gives wrong offset calibration value
* :github:`27727` - mcumgr serial interface does not work with CDC_ACM UART
* :github:`27721` - Concurrent file descriptor allocations may return the same descriptor
* :github:`27718` - Updatehub might dereference an uninitialized pointer
* :github:`27712` - warnings when compiling smp_svr with newlibc on 2.3.0
* :github:`27706` - Cannot debug specific files
* :github:`27693` - Crash on ARM when BT LE scan response packet too big
* :github:`27648` - [Coverity CID :212430] Unchecked return value in tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c
* :github:`27647` - [Coverity CID :212429] Negative array index write in tests/subsys/fs/fs_api/src/test_fs_dir_file.c
* :github:`27646` - [Coverity CID :212428] Unchecked return value in tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c
* :github:`27645` - [Coverity CID :212424] Unchecked return value in tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c
* :github:`27644` - [Coverity CID :212141] Improper use of negative value in tests/lib/fdtable/src/main.c
* :github:`27643` - [Coverity CID :212427] Invalid type in argument to printf format specifier in samples/drivers/jesd216/src/main.c
* :github:`27642` - [Coverity CID :212143] Unused value in samples/drivers/flash_shell/src/main.c
* :github:`27641` - [Coverity CID :212142] Unused value in samples/drivers/flash_shell/src/main.c
* :github:`27640` - [Coverity CID :212426] Unrecoverable parse warning in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27639` - [Coverity CID :212425] Out-of-bounds access in drivers/ethernet/eth_mcux.c
* :github:`27637` - Bluetooth: controller: Possible corruption in AD data
* :github:`27636` - sensor: shell float output broken w/ CONFIG_NEWLIB_LIBC=y
* :github:`27634` - wifi simple_link driver build error
* :github:`27613` - CONFIG_ASSERT not working on nrf5340dk_nrf5340_cpunet in hci_rpmsg sample
* :github:`27612` - RFC: API Change: usb: Device argument to USB HID ops
* :github:`27610` - UART_ERROR_FRAMING
* :github:`27600` - JSON Api refuse to decode null value
* :github:`27599` - bluetooth shell deadlock on USB shell UART
* :github:`27597` - build system fails to propagate devicetree change to Kconfig
* :github:`27592` - threads without name show up as junk names in SystemView
* :github:`27587` - New socket close() implementation broke build of platforms using socket offloading
* :github:`27582` - BT Identity address is overwritten when using extended advertising
* :github:`27580` - west install error
* :github:`27576` - sample.drivers.sample.drivers.peci failed to run
* :github:`27574` - mec15xxevb_assy6853:arch.arm.arch.arm.no.multithreading failed to run
* :github:`27572` - mec15xxevb_assy6853:crypto.tinycrypt.hmac_prng.hmac_prng failed to build,
* :github:`27571` - up_squared:tests/portability/cmsis_rtos_v2/thread_api failed
* :github:`27569` - mimxrt1050_evk:samples.usb.cdc-acm-composite failed
* :github:`27566` - nRF52832: MCUBoot cannot read signed SMP Server Sample binary
* :github:`27560` - APIs for dynamically creating thread stacks
* :github:`27558` - "west update" only certain vendor
* :github:`27548` - CMake and west doesn't accept multiple overlay files during build
* :github:`27547` - samples/boards/reel_board/mesh_badge fails booting with error in i2c_nrfx_twim
* :github:`27544` - TrustZone: NSC_ALIGN gets redefined
* :github:`27533` - kernel crashes with small CONFIG_TIMESLICE_SIZE
* :github:`27531` - Zephyr testing via emulators
* :github:`27529` - sanitycheck: incorrect correct calculation of total_skipped when --subset is set:
* :github:`27526` - poll(2) returning -1 errno ENOMEM
* :github:`27523` - [RFC] drivers: display: Implementing driver for sharp memory display
* :github:`27522` - shell: Output can get corrupted when printing from thread before command completes
* :github:`27511` - coverage: qemu platforms: sanitycheck generates many ``unexpected eof`` failures when enable coverage
* :github:`27505` - spi: mchp: Unintended data is transmitted when tx and rx operations are performed simultaneously
* :github:`27503` - testcases under zephyr/tests/application_development take a very long time to dump coverage data
* :github:`27495` -  Include full register state in ARM Cortex M Exception Stack Frame (ESF)
* :github:`27488` - Bluetooth Mesh samples don't build
* :github:`27482` - Bluetooth stops responding when calling k_delayed_work_submit. v2.3.0
* :github:`27473` - RT1050/60/64-evk board user LED does not work
* :github:`27465` - How recursively build boards on Zephyr?
* :github:`27464` - LOG_BACKEND_NET does not work for certain application/ip configurations
* :github:`27463` - Cannot build samples/net/sockets/echo for cc3220sf_launchxl
* :github:`27448` - fatal error: device_imx.h: No such file or directory
* :github:`27446` - Unable to flash cc1352r (no xds) with openocd in Zephyr SDK
* :github:`27444` - spi sdhc CS signal not working
* :github:`27434` - Bluetooth: L2CAP: buffer use after free
* :github:`27428` - Cannot compile network logging backend with IPv6-only
* :github:`27421` - libraries.cmsis_dsp.matrix.binary_q15: buffer allocation failure on twr_kv58f220m
* :github:`27420` - drivers.uart: config test failure on uart_mcux.c (was twr_kv58f220m platform)
* :github:`27414` - Bluetooth: Controller: First advertisement does not preempt continuous scanner
* :github:`27404` - IS_ENABLED not working with C++ (was: Is DT_INST_FOREACH_STATUS_OKAY broken on v2.3?)
* :github:`27403` - uart_fifo_read can only read one character
* :github:`27399` - [RFC] API change - Switch all struct device to constant
* :github:`27397` - [RFC] API change - Device structure attribute renaming
* :github:`27396` - samples/subsys/logging/logger timeout when sanitycheck enable coverage, it needs a filter
* :github:`27392` - tests/kernel/device/kernel.device.pm fails to build on cc1352r1_launchxl
* :github:`27380` - Cannot use mcuboot with i.MXRT1060 due to a problem with the vector table address
* :github:`27379` - Macro Z_ARC_MPU_SIZE_ALIGN seems to be missing
* :github:`27377` - up_squared(acrn):samples/philosophers/ caused the acrn platform crashed.
* :github:`27375` - "west zephyr-export" dumps stack if cmake is not installed
* :github:`27373` - CivetWeb Support for STM32H7 Series
* :github:`27370` - Constant asserts from nrf5 clock calibration
* :github:`27366` - tests: net: regression on many tests
* :github:`27363` - mec15xxevb_assy6853:kernel.device.pm failed
* :github:`27362` - cannot move to 1M baud rate in bt_shell
* :github:`27353` - west flash ignores --bin-file parameter and uses hex file when nrfjprog is used internally
* :github:`27348` - When using CONFIG_NVS it triggers BUS FAULT during startup on "nucleo_wb55rg" board
* :github:`27340` - <wrn> bt_driver: Discarding event 0x3e
* :github:`27339` - up_squared: Zephyr does not boot via grub anymore
* :github:`27338` - Bluetooth: host: GATT service request is not able to trigger the authentication procedure while in SC only mode
* :github:`27331` - Fails to upload over BLE using Zephyr with SMP Server Sample
* :github:`27330` - include in prj.conf
* :github:`27329` - [Coverity CID :211587] Unchecked return value in tests/drivers/clock_control/clock_control_api/src/test_clock_control.c
* :github:`27328` - [Coverity CID :211586] Resource leak in tests/posix/fs/src/test_fs_open_flags.c
* :github:`27327` - [Coverity CID :211585] Argument cannot be negative in tests/posix/fs/src/test_fs_open_flags.c
* :github:`27326` - [Coverity CID :211584] Logically dead code in drivers/wifi/eswifi/eswifi_core.c
* :github:`27325` - [Coverity CID :211583] Unchecked return value in drivers/wifi/eswifi/eswifi_socket.c
* :github:`27324` - [Coverity CID :211572] Out-of-bounds read in soc/xtensa/sample_controller/include/_soc_inthandlers.h
* :github:`27323` - [Coverity CID :211551] Out-of-bounds read in soc/xtensa/sample_controller/include/_soc_inthandlers.h
* :github:`27322` - [Coverity CID :211546] Out-of-bounds read in soc/xtensa/sample_controller/include/_soc_inthandlers.h
* :github:`27321` - [Coverity CID :211539] Out-of-bounds read in soc/xtensa/sample_controller/include/_soc_inthandlers.h
* :github:`27320` - [Coverity CID :211537] Out-of-bounds read in soc/xtensa/sample_controller/include/_soc_inthandlers.h
* :github:`27319` - [Coverity CID :211523] Bad bit shift operation in arch/arc/core/mpu/arc_mpu_v2_internal.h
* :github:`27318` - Decouple TLS socket from net_context
* :github:`27303` - RFC: downgrade i2c eeprom_slave driver to test
* :github:`27293` - Test nrf52840dk_nrf52840 tests/net/socket/net_mgmt/net.socket.mgmt build failure
* :github:`27288` - linker relocation feature fails for out of tree projects
* :github:`27282` - Drivers in app folder
* :github:`27280` - drivers: bluetooth: hci: spi: CS DT config not working because CS gpio_dt_flags are not set in the spi_cs_config struct
* :github:`27268` - usb: mcux RT1060 EVK - when using on-chip memory, USB fails
* :github:`27266` - samples: bluetooth: hci_spi: Invalid cmd_hdr and acl_hdr usage
* :github:`27249` - Is there any development plan for supporting RPL stack ？
* :github:`27239` - samples/subsys/canbus/isotp/sample.subsys.canbus.isotp fails on FRDM-K64F
* :github:`27238` - tests/net/socket/af_packet fails on FRDM-K64F
* :github:`27237` - Out_of_tree example broken
* :github:`27227` - shell crashes on qemu_x86 board upon the Tab button press
* :github:`27220` - Bluetooth: L2CAP: l2cap_change_security() not considering bt_conn::sec_level when handling BT_L2CAP_LE_ERR_AUTHENTICATION
* :github:`27219` - thousands of lines of log spam in buildkite output
* :github:`27212` - drivers: clock_control: stm32h7 cannot choose system frequency higher than 400MHz
* :github:`27211` - sanitycheck: add option to only build/run on emulated targets
* :github:`27205` - tests/kernel/timer/timer_api test fails on twr_ke18f
* :github:`27202` - tests/kernel/threads/thread_apis failure on lpcxpresso55s16_ns
* :github:`27181` - New drivers out of device tree
* :github:`27177` - Unable to build samples/bluetooth/st_ble_sensor for steval_fcu001v1 board
* :github:`27173` - [v2.1] Unable to build Zephyr 2.1 for Upsquared board running ACRN
* :github:`27172` - shell: logging: CONFIG_SHELL_LOG_BACKEND is forced if CONFIG_LOG is chosen
* :github:`27166` -  tests/kernel/sched/schedule_api need add ram limitaion as some platform not support
* :github:`27164` -  tests/lib/mem_alloc failed on up_squared board.
* :github:`27162` - reel_board:tests/net/ieee802154/l2 failed.
* :github:`27161` - shell:  shell_start() and shell_stop() can cause deadlock
* :github:`27154` - bt_conn_le_param_update doesn't return an error when setting the timeout >30sec, stops device from sleeping on nrf52840
* :github:`27151` - sanitycheck: samples: net: echo_server: Doesn't run all configurations from atmel_rf2xx shield
* :github:`27150` - [Coverity CID :211513] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`27149` - [Coverity CID :211508] Unchecked return value in tests/kernel/mem_protect/futex/src/main.c
* :github:`27148` - [Coverity CID :211506] Operands don't affect result in tests/drivers/clock_control/nrf_onoff_and_bt/src/main.c
* :github:`27147` - [Coverity CID :211505] Operands don't affect result in tests/drivers/clock_control/nrf_onoff_and_bt/src/main.c
* :github:`27145` - [Coverity CID :211511] Dereference after null check in subsys/net/ip/net_if.c
* :github:`27144` - [Coverity CID :211501] Explicit null dereferenced in subsys/net/ip/tcp2.c
* :github:`27143` - [Coverity CID :211512] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27142` - [Coverity CID :211509] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27141` - [Coverity CID :211507] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27140` - [Coverity CID :211504] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27139` - [Coverity CID :211503] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27138` - [Coverity CID :211502] Out-of-bounds read in drivers/wifi/eswifi/eswifi_socket_offload.c
* :github:`27130` - samples/drivers/spi_flash has no README
* :github:`27120` - exception happened when running CI
* :github:`27118` - Bluetooth: HCI: Missing implementation of hci_driver.h functions
* :github:`27112` - [v2.3.0] mcumgr fs download crashes
* :github:`27090` - LE Coded PHY scanning on nRF9160DK fails
* :github:`27081` - missing ``python3-devel`` dependency (was python3-psutil)
* :github:`27080` - uarte_instance_init() in NRF UARTE driver does not disable UART prior to setting PSEL pin values
* :github:`27079` - espi: driver: mchp:  eSPI driver indicates flash channel is ready to eSPI host even before the channel negotiation takes place
* :github:`27078` - drivers: espi: mchp: Cannot perform multiple transactions over eSPI OOB channel
* :github:`27074` - doc: coding_guidelines: broken links to MISRA-C example suite
* :github:`27071` - USB: CDC-ACM uart console hijacks usb_enable call preventing user applications from registering callbacks
* :github:`27057` - NUCLEO-H745ZI-Q add cortex-m4 ethernet support
* :github:`27056` - Local header found before system header of same name
* :github:`27055` - BlueZ with ESP32 boards supported or not?
* :github:`27037` - No network interface found when running wifi sample
* :github:`27010` - net: ieee802154: wrong header generation
* :github:`27003` - CMakeLists.txt newline check is too strict
* :github:`27002` - checkpatch.pl incorrect ERROR:POINTER_LOCATION
* :github:`26998` - [Coverity CID :211479] Unchecked return value in tests/kernel/mutex/mutex_api/src/test_mutex_apis.c
* :github:`26997` - [Coverity CID :211474] Unchecked return value in tests/kernel/mutex/mutex_api/src/test_mutex_apis.c
* :github:`26996` - [Coverity CID :211340] Side effect in assertion in tests/kernel/smp/src/main.c
* :github:`26995` - [Coverity CID :211478] Logically dead code in samples/net/sockets/big_http_download/src/big_http_download.c
* :github:`26994` - [Coverity CID :210616] Resource leak in lib/updatehub/updatehub.c
* :github:`26993` - [Coverity CID :210593] Out-of-bounds access in lib/updatehub/updatehub.c
* :github:`26992` - [Coverity CID :210547] Unchecked return value in lib/updatehub/updatehub.c
* :github:`26991` - [Coverity CID :210072] Resource leak in subsys/mgmt/smp_udp.c
* :github:`26990` - i2c transfers are timing out with SSD1306 display
* :github:`26989` - [Coverity CID :211477] Unchecked return value in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`26988` - [Coverity CID :211473] Unchecked return value in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`26986` - [Coverity CID :211480] Printf arg count mismatch in arch/x86/zefi/zefi.c
* :github:`26985` - [Coverity CID :211476] Extra argument to printf format specifier in arch/x86/zefi/zefi.c
* :github:`26984` - sys/device_mmio.h API design should accept generic DT node identifiers
* :github:`26983` - MPU FAULT in nRF52840-DK
* :github:`26981` - Problem with PPP + GSM MUX with SIMCOM7600E
* :github:`26970` - usb: overflow of USB transfers leads to clogging
* :github:`26966` - Example OTA-DFU for Android/IOS app
* :github:`26961` - occasional sanitycheck failures in samples/subsys/settings
* :github:`26954` - devicetree: warning: braces around scalar initializer
* :github:`26953` - settings: ISO C++ forbids converting a string constant to 'char*'
* :github:`26948` - cmake failure when using ZEPHYR_MODULES without west
* :github:`26941` - Meta-IRQ documentation references
* :github:`26939` - MCUMGR - smp shell server sends responses to wrong port
* :github:`26937` - Kconfig choice Warning
* :github:`26924` - Bluetooth: Mesh: no space to store ccc cfg
* :github:`26923` - [RFC] API change - Normalize DMA, IPM and UART callbacks signatures including the caller's device pointer.
* :github:`26919` - ipv6: promiscuous mode: packet flood over 802.15.4 adapter
* :github:`26914` - gen_kobject_list.py dosn't generate correct gperf info for ARC MetaWare toolchain
* :github:`26910` - sanitycheck always treats warnings as errors
* :github:`26900` - Bluetooth: host: bt_conn_recv() assumes ACL data is >= 2 bytes
* :github:`26896` - STM32: mcu goes to sleep inadvertently when using PM.
* :github:`26868` - qemu_x86_64 icount support with SMP
* :github:`26862` - Bluetooth: GATT: CCC is not properly stored
* :github:`26848` - kernel: undefined reference with --no-gc-sections
* :github:`26833` - RFC: subsys: fs: Support file open flags to fs and POSIX API
* :github:`26832` - [mcux_counter_rtc][frdm_k82f] counter_basic_api hangs
* :github:`26828` - Build Error - Network communication between Zephyr app on QEMU and Host OS
* :github:`26826` - i2c_nrfx_twi_transfer hangs when SDA/SCL are set to pins 0,1
* :github:`26818` - drivers: uart_console.c: usb_enable() broken
* :github:`26814` - net_ipv6_send_rs behaviour doesn't comply with RFC4291
* :github:`26812` - NXP: tests/drivers/dma/loop_transfer fails on FRDM-K64F
* :github:`26807` - Bluetooth HCI USB sample is not working
* :github:`26805` - test: drivers: i2c: i2c_slave_api:
* :github:`26804` - Bluetooth mesh repeated provision/gatt bearer connection crash
* :github:`26803` - Cortex-M7 Thumb-2 Instructions Alignment
* :github:`26801` - UART API has ifdefs around API functions
* :github:`26796` - Interrupts on Cortex-M do not work with CONFIG_MULTITHREADING=n
* :github:`26793` - kernel: work: triggers immediately with longer timeouts
* :github:`26788` - cmake build system works wrong with cmake version 3.15.5
* :github:`26782` - boards: mchp: mec15xxevb_assy6853:  Cannot set gpios as alternate function when enabling multiple instances of a driver
* :github:`26769` - "west flash -r openocd --serial <serial_num>" ignores serial_num and flashes wrong board
* :github:`26766` - Build failure on nucleo_wb55rg for tests/kernel/profiling/profiling_api/kernel.common.profiling
* :github:`26764` - Build failure on intel_s1000_crb for samples/drivers/flash_shell/sample.drivers.flash.shell
* :github:`26759` - Build error -  Nothing found at GNUARMEMB_TOOLCHAIN_PATH
* :github:`26758` - Missing documentation of report targets (ram/rom report, puncover)
* :github:`26746` - Change sanitycheck to used pickled EDT
* :github:`26731` - Single channel selection - Bluetooth - Zephyr
* :github:`26729` - FCB flash_area_write fails on nRF52840DK when using mx25r64 storage
* :github:`26725` - USB suspend-resume process is not properly handled
* :github:`26723` - NULL handler in work queue entry can be called resulting in silent reboot
* :github:`26720` - lib: sockets: getaddrinfo don't work without newlib C on ARM
* :github:`26717` - Big HTTP Download - Upgrade
* :github:`26708` - RFC: API Change: watchdog: wdt_feed error codes
* :github:`26701` - Invalid handling of large cycle count in rtc timer
* :github:`26700` - waveshare_open103z board can't build tests/mem_protect
* :github:`26695` - net: TCP2: connect() returns 0 without waiting for handshake completion
* :github:`26689` - Couldn't get test result from serial on up_squared board.
* :github:`26685` - sanitycheck "--only-failed" is broken
* :github:`26683` - Transition from non-secure to kernel causes "Stacking error"
* :github:`26679` - sanitycheck passes tests if the emulator exits unexpectedly
* :github:`26676` - MDB runner is not capturing real board's output
* :github:`26665` - Implement reset for ARC development boards
* :github:`26664` - frdm_kw41z: tests/drivers/pwm/pwm_api fails in test_pwm_cycle()
* :github:`26663` - sanitycheck reports failing tests with em_starterkit_em7d_v22 board
* :github:`26651` - Updatehub: frdm_k64f resets in a loop
* :github:`26647` - build generates unaligned function reference in v2.3
* :github:`26643` - Nucleo board Slow Code execution at power up - need to always reset
* :github:`26628` - Couldn't find Definition for CTE transmit and enable command for Connectionless AoA/AoD implementation in Zephyr
* :github:`26627` - tests/benchmarks/sys_kernel failed on up_squared.
* :github:`26626` - tests/portability/cmsis_rtos_v1 failed on reel_board.
* :github:`26625` - tests/net/utils failed on multiple arm platforms.
* :github:`26624` - Noridc52840 hci_usb bug on linux when " discoverable on " by bluetoothctl
* :github:`26621` - System can't recover after assertion failed in kernel/mem_domain.c
* :github:`26619` - tests/unit/rbtree fails
* :github:`26617` - devicetree: sam0 gclk
* :github:`26607` - STM32F0 nucleo PWM output not working
* :github:`26602` - GH Action: Automate removal of tag "Waiting for response"
* :github:`26600` - net.util test is broken on MPU-enabled ARM platforms
* :github:`26596` - west: rimage support in ``west sign`` poorly documented
* :github:`26595` - tests/kernel/obj_tracing thread counting issue with 1.14 branch.
* :github:`26587` - DT_CALL_WITH_ARG macro missing
* :github:`26586` - K_TIMER_DEFINE macro causing build error
* :github:`26582` - What happened to DT_HAS_NODE macro?
* :github:`26575` - devicetree: need save/restore support for devicetree data
* :github:`26568` - tests: net: socket: af_packet: is ethernet cable now mandatory to run this test ?
* :github:`26555` - uart: uart_nrfx_uarte: async init does not cleanup previous sync rx
* :github:`26551` - sam0 devicetree failing to compile
* :github:`26536` - The CONFIG_BT_L2CAP_RX_MTU setting is not reflected correctly in the build
* :github:`26529` - How to support Nordic ble5.0 on Android 7.0？
* :github:`26527` - mimxrt1050_evk:Couldn't flash image by using west flash command.
* :github:`26524` - Problem with hci_uart and L2CAP CoC connections
* :github:`26519` - samples: net: sockets: dumb_http_server: instabllity on nucleo_f767zi
* :github:`26518` - NRF temperature sensor driver race condition
* :github:`26509` - net_l2_ppp.ppp_link_terminated: SARA U201 modem
* :github:`26508` - CI: simulated BT tests not run if BT tests are changed
* :github:`26506` - how does hci_usb (hci_usb fw : \ncs\v1.3.0\zephyr\samples\bluetooth\hci_usb) set mac and send/receive files ?
* :github:`26505` - An example of using the microphone in Thingy 52
* :github:`26499` - usermode: random: backport random syscall
* :github:`26476` - ARM Cortex-A: architecture timer continuously firing in tick-less mode
* :github:`26467` - Bluetooth: Race-condition on persistent connectable advertiser
* :github:`26466` - Bluetooth: host: Do auto-postponement of advertising also when application requests advertising
* :github:`26455` - bme280 connect to rt1020_evk
* :github:`26450` - Bad disconnect reason when client connects with wrong address type
* :github:`26438` - Bluetooth: Reconnection to paired/bonded peripheral fails
* :github:`26435` - Suspicious source code with subsys/random/random32_entropy_device: seg fault risk
* :github:`26434` - nrf9160 uart_tx can return -ENOTSUP, which is not documented behavior
* :github:`26428` - LPSPI support for i.MX RT106x
* :github:`26427` - Linker problems with zephyr-sdk-0.11.2: undefined reference to 'gettimeofday'
* :github:`26424` - master west.yml references pull in hal_stm32
* :github:`26419` - Cannot request update when writing to external flash
* :github:`26415` - CONFIG_FS_LOG_LEVEL_OFF option doesn't work with LittleFS
* :github:`26413` - disco_l475_iot1: flash storage corruption caused by partition overlap
* :github:`26410` - RFC: soc: Initial Nuvoton NPCX port
* :github:`26407` - fs: nvs: Incorrect handling of corrupt ate's in nvs_gc
* :github:`26406` - On x86, the main stack overflows when CONFIG_NET_IPV6 and CONFIG_DEBUG are enabled
* :github:`26403` - Compile Error when trying to build samples/synchronization
* :github:`26397` - storage: flash_map: Only works on limited compatibles
* :github:`26391` - stm32f746g: sample subsys/usb/hid-cdc does not work
* :github:`26377` - Problems getting I2C to work on NXP i.MX RT1020 EVK
* :github:`26372` - qspi driver does not work if multithreading is disabled
* :github:`26369` - C++ compilation warning for Z_TIMEOUT_TICKS
* :github:`26363` - samples: subsys: canbus: canopen: objdict: CO_OD.h is not normally made.
* :github:`26362` - arc gdb failed to load core dump file
* :github:`26361` - [Coverity CID :211051] Explicit null dereferenced in tests/lib/ringbuffer/src/main.c
* :github:`26360` - [Coverity CID :211048] Side effect in assertion in tests/drivers/uart/uart_async_api/src/test_uart_async.c
* :github:`26359` - [Coverity CID :211047] Dereference null return value in tests/net/ipv6/src/main.c
* :github:`26358` - [Coverity CID :211044] Unchecked return value in tests/subsys/settings/fcb_init/src/settings_test_fcb_init.c
* :github:`26357` - [Coverity CID :211046] Unchecked return value in boards/posix/native_posix/timer_model.c
* :github:`26356` - [Coverity CID :211043] Logical vs. bitwise operator in subsys/net/lib/lwm2m/lwm2m_rw_oma_tlv.c
* :github:`26355` - [Coverity CID :211045] Macro compares unsigned to 0 in kernel/timeout.c
* :github:`26354` - [Coverity CID :211040] Macro compares unsigned to 0 in kernel/timeout.c
* :github:`26353` - [Coverity CID :211039] Out-of-bounds access in drivers/gpio/gpio_nrfx.c
* :github:`26352` - [Coverity CID :211049] Macro compares unsigned to 0 in arch/x86/core/x86_mmu.c
* :github:`26343` - Gatt Bearer Issue
* :github:`26337` - BT scan: filter duplicates yields duplicates
* :github:`26333` - Bluetooth: Split LL: Cannot store Bluetooth keys
* :github:`26313` - nucleo_h745zi_q_m7 pwm device tree bug
* :github:`26303` - Bluetooth: Windows 10 cannot reconnect on direct advertising from Zephyr
* :github:`26302` - Test gen_isr_tables from ./tests/kernel/gen_isr_table/ fails on nrf9160dk_nrf9160
* :github:`26296` - Store logs in persistent storage (ext. flash, SD card)
* :github:`26295` - Enable persistent storage (ext flash/SD card) as logger backend
* :github:`26294` - Test suite output is hard to read
* :github:`26291` - canopen: error when CAN_MCP2515_MAX_FILTER > 8
* :github:`26290` - gfhgf
* :github:`26284` - device.h doxygen
* :github:`26281` - Question: Does NRF52840-DK support both OpenThread and BLE at the same time
* :github:`26280` - test_kernel_systicks from tests/portability/cmsis_rtos_v1 fails on nrf platforms
* :github:`26279` - littlefs: Unable to erase external flash.
* :github:`26278` - [v2.2] bt_att: Unhandled ATT code 0x1d
* :github:`26271` - k_sleep/k_msleep ends too early on UP_squared board
* :github:`26267` - drivers: SPI: CS output type not honored
* :github:`26266` - Cast and shift operator priority issue may lead to wrong memory size result in fat_fs example
* :github:`26265` - Zephyr os bluetooth peripheral example indication. When i flash code to my board custom configuration for indication will shown and after i click button for indication it device will disconnect from phone. My board is nrf52832.
* :github:`26264` - tests/benchmarks/latency_measure failed on up_squared board.
* :github:`26263` - reel_board:tests/posix/common failed.
* :github:`26259` - Add AT86RF233 REB Xplained Pro Extension shield
* :github:`26256` - NRF51822 BLE Micro module: hangs on k_msleep() (RTC counter not working)
* :github:`26255` - k_uptime_ticks() returns pointer instead of value
* :github:`26252` - bluetooth: controller: Cannot receive long packets
* :github:`26248` - A timer with 24-hour timeout fires immediately
* :github:`26242` - qemu_x86 and qemu_cortex_m3 time handling broken with CONFIG_QEMU_ICOUNT
* :github:`26235` - multi vlan support networking
* :github:`26234` - Question: how can a NRF52840-DK's clock be set to 64MHz
* :github:`26232` - Segger Embedded Studio doesn't find the right python
* :github:`26220` - OpenThread L2 does not implement ``enable`` API function
* :github:`26209` - sanitycheck tries to run random *samples*, without being asked for
* :github:`26200` - BT_LE_ADV_OPT_EXT_ADV causes bt_le_adv_start to return -22
* :github:`26197` - tracking provenance of utility code
* :github:`26185` - Sample posix:eventfd fails on all platforms
* :github:`26177` - Bluetooth: Mesh: Friend node unexpected un-reference buffer
* :github:`26174` - Add STM32H7 Series Ethernet Driver Support
* :github:`26172` - Zephyr Master/Slave not conforming with Core Spec. 5.2 connection policies
* :github:`26169` - Enable -O0 for only one \*.c file
* :github:`26168` - arch-level memory-mapping interface
* :github:`26167` - Extend the sensor API with function for getting the value of a sensor attribute
* :github:`26165` - Clock not initialized in LPC Flexcomm UART driver
* :github:`26150` - storage/stream: flash_img_bytes_written() might returns more than number of payload bytes written.
* :github:`26149` - building native_posix against musl-libc
* :github:`26139` - west: nrfjprog and jlink runner leave SW-DP registers in enabled state
* :github:`26136` - CMake Error in Windows Environment
* :github:`26131` - nrf52840_mdk: add support for nrf stock bootloader
* :github:`26119` - Compilation error when enabling MPU on STM32 L0 boards
* :github:`26112` - bug: cmake loops when passing overlay file with left slashes in file path
* :github:`26107` - driver MMIO virtual address space mapping
* :github:`26106` - mcumgr: smp_bt: wrong notify MTU calculation with CONFIG_BT_GATT_NOTIFY_MULTIPLE
* :github:`26105` - Test kernel.memory_protection.stack_random fails on nrf52dk_nrf52832
* :github:`26104` - Asynchronous input via UART
* :github:`26096` - cmake finds a DTC from Zephyr-SDK version, it tries to execute it, and it fails
* :github:`26095` - Requirements.txt pip version conflict
* :github:`26080` - gPTP time sync fails if having more than one port
* :github:`26076` - bug: cortex-m0: vector table base address is set to zero when soc has control over where to put vector table.
* :github:`26071` - Bluetooth: host: ATT sent callback lost
* :github:`26070` - Bluetooth: ATT request not processed
* :github:`26065` - sanitycheck reports failing tests with timeout as passing
* :github:`26064` - tests/kernel/timer/timer_api failed on mec15xxevb_assy6853 board.
* :github:`26059` - Potentially incorrect interrupt handling in nRF SoC .dtsi for GPIO
* :github:`26049` - False multiple define of irq with IRQ_CONNECT
* :github:`26039` - tests: kernel: timer: timer_api: regression on STM32 boards
* :github:`26038` - build zephyr with llvm fail
* :github:`26037` - RFC: API Change: Bluetooth Mesh
* :github:`26034` - menuconfig target aborts when Kconfig warnings are present
* :github:`26033` - NET_SOCKETS_OFFLOAD conflicts with POSIX_API
* :github:`26030` - RV32M1_RI5CY: tests/kernel/threads/thread_apis and thread_init fails
* :github:`26021` - Problems compiling for Measuring Time
* :github:`26017` - Build error in shell with gcc 10.1 (tests/drivers/uart/uart_basic_api)
* :github:`25991` - [net][net.socket.select][imx-rt series] test fails  (k_uptime_get_32() - tstamp <= FUZZ is false)
* :github:`25990` - tests/net/socket/select failed on sam_e70_xplained board.
* :github:`25989` - STM32_LPTIM_TIMER wrongly depends on DEVICE_POWER_MANAGEMENT
* :github:`25988` - [Coverity CID :210687] Argument cannot be negative in tests/net/socket/socketpair/src/test_socketpair_happy_path.c
* :github:`25987` - [Coverity CID :210685] Pointless string comparison in tests/lib/devicetree/legacy_api/src/main.c
* :github:`25986` - [Coverity CID :210684] Explicit null dereferenced in tests/kernel/mbox/mbox_api/src/test_mbox_api.c
* :github:`25985` - [Coverity CID :210683] Pointless string comparison in tests/lib/devicetree/legacy_api/src/main.c
* :github:`25984` - [Coverity CID :210686] Unchecked return value in lib/os/mempool.c
* :github:`25983` - [Coverity CID :210682] Unchecked return value in lib/os/mempool.c
* :github:`25982` - [Coverity CID :210020] Explicit null dereferenced in drivers/usb/device/usb_dc_mcux_ehci.c
* :github:`25981` - Support storing mcuboot images on serial flash accessed through Nordic QSPI
* :github:`25979` - Need root LICENSE files in hal_stm32 module
* :github:`25965` - hci_uart not responding at higher baudrates on NRF52810
* :github:`25964` - Bluetooth: <err> bt_att: ATT Timeout
* :github:`25958` - Concept Overview for improving support for serial flash devices via SPI and QSPI
* :github:`25956` - Including header files from modules into app
* :github:`25952` - STM32 LPTIM driver doesn't restart counter after sleeping K_TICKS_FOREVER
* :github:`25945` - devicetree: support generating symbols for -gpios properties w/o compatible
* :github:`25942` - Bluetooth: Scanning + Non-connectable advertising broken on nRF5340
* :github:`25926` - k_cycle_get_32() returns 0 in native_posix
* :github:`25920` - Compilation error when CONFIG_BOOTLOADER_MCUBOOT=y specified
* :github:`25919` - dhcpv4 or rx ethernet packets not working on nucleo_f429zi
* :github:`25892` - arc emsdp board work wrong with emsdp_em7d_esp config
* :github:`25869` - 2.3: Missing release notes
* :github:`25865` - Device Tree Memory Layout
* :github:`25859` - mesh example not working with switched off dcdc?
* :github:`25853` - modem_ublox_sara_r4: Cannot connect to UDP remote
* :github:`25833` - [lpcxpresso55s69_cpu1] no applications and build guide, hello world can not build
* :github:`25827` - Devicetree: add accessors with defaults
* :github:`25794` - [Coverity CID :210554] Uninitialized scalar variable in tests/net/iface/src/main.c
* :github:`25792` - [Coverity CID :210552] Resource leak in tests/net/pm/src/main.c
* :github:`25790` - [Coverity CID :210594] Dereference after null check in subsys/testsuite/ztest/src/ztest_mock.c
* :github:`25786` - [Coverity CID :210558] Dereference before null check in drivers/sensor/sensor_shell.c
* :github:`25784` - [Coverity CID :210546] Dereference after null check in tests/net/promiscuous/src/main.c
* :github:`25783` - [Coverity CID :210051] Dereference after null check in subsys/net/ip/tcp2.c
* :github:`25782` - [Coverity CID :210035] Dereference before null check in drivers/sensor/bq274xx/bq274xx.c
* :github:`25781` - [Coverity CID :210031] Dereference before null check in drivers/modem/gsm_ppp.c
* :github:`25778` - [Coverity CID :210604] Out-of-bounds access in tests/kernel/mem_protect/protection/src/main.c
* :github:`25777` - [Coverity CID :210589] Out-of-bounds access in tests/kernel/mem_protect/protection/src/main.c
* :github:`25776` - [Coverity CID :210573] Out-of-bounds access in tests/kernel/mem_protect/userspace/src/main.c
* :github:`25750` - [Coverity CID :210066] Unintentional integer overflow in include/sys/time_units.h
* :github:`25749` - [Coverity CID :210033] Unintentional integer overflow in drivers/sensor/mpr/mpr.c
* :github:`25748` - [Coverity CID :210606] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`25747` - [Coverity CID :210596] Assign instead of compare in subsys/logging/log_output_syst.c
* :github:`25746` - [Coverity CID :210584] Assign instead of compare in subsys/logging/log_output_syst.c
* :github:`25745` - [Coverity CID :210052] Side effect in assertion in tests/kernel/fpu_sharing/generic/src/pi.c
* :github:`25744` - [Coverity CID :210045] Side effect in assertion in tests/kernel/fpu_sharing/generic/src/pi.c
* :github:`25743` - [Coverity CID :209944] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`25742` - [Coverity CID :209943] Pointless string comparison in tests/lib/devicetree/src/main.c
* :github:`25741` - [Coverity CID :210618] Unchecked return value in drivers/wifi/esp/esp.c
* :github:`25740` - [Coverity CID :210617] Argument cannot be negative in tests/net/pm/src/main.c
* :github:`25739` - [Coverity CID :210610] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`25738` - [Coverity CID :210602] Unchecked return value in tests/drivers/uart/uart_basic_api/src/test_uart_fifo.c
* :github:`25735` - [Coverity CID :210582] Unchecked return value in tests/net/socket/getaddrinfo/src/main.c
* :github:`25734` - [Coverity CID :210580] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`25733` - [Coverity CID :210575] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`25732` - [Coverity CID :210570] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`25729` - [Coverity CID :210056] Unchecked return value in subsys/net/ip/tcp2.c
* :github:`25728` - [Coverity CID :210050] Unchecked return value in tests/subsys/settings/littlefs/src/settings_setup_littlefs.c
* :github:`25726` - [Coverity CID :210598] Missing break in switch in subsys/net/l2/ieee802154/ieee802154_frame.c
* :github:`25725` - [Coverity CID :210578] Structurally dead code in kernel/mem_domain.c
* :github:`25724` - [Coverity CID :210566] Missing break in switch in subsys/net/l2/ieee802154/ieee802154_frame.c
* :github:`25723` - [Coverity CID :210559] Unsigned compared against 0 in subsys/net/ip/tcp2.c
* :github:`25722` - [Coverity CID :210058] Logically dead code in samples/net/sockets/big_http_download/src/big_http_download.c
* :github:`25721` - [Coverity CID :209945] Logically dead code in tests/net/tcp2/src/main.c
* :github:`25720` - [Coverity CID :210073] Arguments in wrong order in drivers/modem/wncm14a2a.c
* :github:`25713` - Miss shift i2c slave address in i2c_sifive
* :github:`25710` - FS: Buffer Overflow when enabling Long File Names in FAT_FS and calling fs_stat
* :github:`25704` - lib: updatehub: Corrupted updated when receiving CoAP duplicate packages
* :github:`25693` - ESP WiFi MPU Fault causes zephyr fatal error
* :github:`25682` - [v2.2] Shell freezes with cout printf, prink on float
* :github:`25678` - enhance k_mutex to be ISR safe
* :github:`25672` - Bluetooth: Mesh: scan_start fails with synchronous bt_enable
* :github:`25664` - nRF Boards: unify static partition size for Bootloader
* :github:`25658` - Issue to run sample on nucleo_g474re
* :github:`25652` - smp_svr fails for nrf5340
* :github:`25645` - USB RNDIS driver can't work with Windows 10 (10.0.18363)
* :github:`25601` - UART input does not work on mps2_an{385,521}
* :github:`25599` - scanf() not functional with newlib out of the box
* :github:`25566` - LSPI of NXP i.MX RT Other interrupts treated as transfer completion
* :github:`25554` - lib: posix: nanosleep
* :github:`25501` - shields: mikroe_eth_click config should be made conditional
* :github:`25499` - Out of tree board: No sources given to target
* :github:`25474` - ipv6 client-server between ble's failed
* :github:`25458` - Multiple issues with timing benchmark
* :github:`25453` - tests/posix/common fails on nucleo_wb55rg
* :github:`25444` - No IPv6 routes from BLE IPSP node (NRF52840DK)
* :github:`25398` - UpSquared Grub build docs don't work on Ubuntu 20.04
* :github:`25358` - net: config: application starts with 3s delay when CONFIG_NET_CONFIG_SETTINGS=y
* :github:`25328` - mesh_demo is failing
* :github:`25327` - Move to C99 integer types and deprecate zephyr specific types
* :github:`25317` - RFC: Unstable API Change: uart_async: Call UART_RX_RDY event after rx_disable()
* :github:`25312` - samples:mimxrt1010_evk:samples/net/openthread/ncp: build error
* :github:`25311` - samples:frdmkw64f:bluetooth/peripheral_hr| peripheral_ht: could not get ADC device
* :github:`25308` - I2C simulation in native_posix
* :github:`25299` - SYSTICK: Inconsistency between dts status and Kconfig
* :github:`25295` - sanitycheck: race when running sanitycheck on native_posix producing false negatives.
* :github:`25294` - Nordic mcuboot + smp_svr + QSPI smp_shell incompatibility
* :github:`25293` - Add USB Device Support to STM32411E-DISCO
* :github:`25283` - sam0: watchdog: Times out twice as fast as expected
* :github:`25268` - sanitycheck doesn't report native_posix failures properly
* :github:`25258` - drivers: i2c_nios2: device config_info content mutated
* :github:`25257` - drivers: audio: dma_nios2_msgdma: device config_info content mutated
* :github:`25256` - drivers: audio: tlv320dac310x: device config_info content mutated
* :github:`25255` - drivers: i2c: gecko: device config_info content mutated
* :github:`25231` - net.offload test fails on atsame54_xpro
* :github:`25229` - net.neighbour test fails on atsame54_xpro
* :github:`25228` - net.util test fails on atsame54_xpro
* :github:`25227` - net.icmpv6 test fails on atsame54_xpro
* :github:`25226` - net.vlan test fails on atsame54_xpro
* :github:`25215` - enable modules to append to $DTS_ROOT
* :github:`25189` - Wrong flash size set in the XIP boot header for NXP imxrt SoCs
* :github:`25171` - Can only run the flash_simulator test once on native_posix
* :github:`25165` - LE Coded Phy code rate switch [s2/s8]
* :github:`25156` - Unable to use --use-elf option in 'west flash' to correctly flash the .elf file
* :github:`25148` - tests: gpio: Add check to validate initial values of gpio output
* :github:`25140` - Unable to obtain dhcp lease
* :github:`25104` - whitelist in {sample,testcase}.yaml precludes a test from being run with sanitycheck
* :github:`25101` - driver: gpio: mchp: GPIO initialization value doesn't get reflected when using new flags
* :github:`25098` - MCUX I2C bus errors leave state machine in busy state
* :github:`25076` - Remove potential I2C deadlock on NRFX implementation
* :github:`25063` - USB Console + USB CDC_ACM co-existing
* :github:`25051` - tests/drivers/gpio/gpio_api_1pin failed on reel_board.
* :github:`25022` - hsdk:There is no case’s information in serial log for ARC(R) HS Development Kit after one case was been flashed into the board.
* :github:`25021` - Problems getting open62541 to run on Zephyr
* :github:`24960` - The example "blinky" didn't work on MIMXRT1050-EVK
* :github:`24939` - LSPI of NXP i.MX RT timing delay issue
* :github:`24918` - Segger RTT using j-link doesn't work on NXP i.MX RT
* :github:`24916` - echo_client sample return: Cannot connect to TCP remote (IPv6): 60 (frdm_k64f <--> native_posix)
* :github:`24910` - kernel: stack sentinel crashes
* :github:`24859` - os: Add memory partition overlap assert check is not made for x86 boards
* :github:`24844` - Setting esp-idf path to match Espressif's documentation
* :github:`24770` - Low throughput with the zperf sample using stm32f746g_disco
* :github:`24767` - Ethernet support for STM32H747
* :github:`24750` - need API to get list of succeed initialization device or add initialization status flag in struct device
* :github:`24747` - tests/lib/heap fails on ARC nsim_sem nsim_em
* :github:`24745` - Mitigate changes in peripheral enable state after Kconfig replaced by DT status
* :github:`24730` - C standard library <time.h> functions and structures not available when using POSIX API
* :github:`24703` - hal_nuvoton: Add new module for Nuvoton numicro M480 HAL layer
* :github:`24700` - mimxrt1050_evk:tests/drivers/kscan/kscan_api failed.
* :github:`24632` - Devices vs. drivers
* :github:`24627` - tests/subsys/usb/device fails on SAM E54
* :github:`24625` - lib: drivers: clock: rtc:  rtc api to maintain calendar time through reboot
* :github:`24619` - CONFIG_USERSPACE=y CONFIG_XIP=n causes .bin space to be wasted
* :github:`24546` - Implement MDB runner for ARC
* :github:`24499` - devicetree:  node name for SPI buses should be 'spi' warning
* :github:`24429` - LPC55S69 flash faults when reading unwritten areas
* :github:`24372` - Json: array of objects is not properly handled
* :github:`24318` - Postpone driver initialization
* :github:`24301` - Support for multi core STM32 H75/H77 boards
* :github:`24300` - tests/net/trickle failed on frdm_k64f and sam_e70_xplained with v1.14 branch.
* :github:`24293` - subsys: shell: bug: shell_fprintf() before shell_enable() causes shell deadlock
* :github:`24233` - adxl362_trigger.c adxl362_init_interrupt function :const struct adxl362_config \*cfg  not found gpio_cs_port
* :github:`24224` - Possible uninitialized variable in zephyr\subsys\logging\log_msg.c
* :github:`24221` - Do not run cron workflow on forks
* :github:`24217` - Shell: provide mechanism to call any command while in select command
* :github:`24191` - obj_tracing: Local IPC variables are not removed from obj tracing list after function return
* :github:`24147` - nrf5340 pdk: BOARDS_ENABLE_CPUNET does not allow proper NET MCU configuration
* :github:`24134` - [NXP i.MX RT Flash]: evkmimxrt1020 does not boot with a new flash chip
* :github:`24133` - Question: Context save/restore after deep sleep using device driver
* :github:`24111` - drivers: flash: littlefs: add sync to flash API & update LittleFS to use it
* :github:`24092` - Unable to change recv() buffer size in frdm_k64f board.
* :github:`24076` - [v1.14] UARTE high current consumption on NRF
* :github:`24030` - [Coverity CID :209379] Unchecked return value in tests/kernel/mem_protect/sys_sem/src/main.c
* :github:`24029` - [Coverity CID :209380] Unchecked return value in tests/kernel/poll/src/test_poll.c
* :github:`24028` - [Coverity CID :209381] Unrecoverable parse warning in include/bluetooth/bluetooth.h
* :github:`23961` - CCC does not get cleared when CONFIG_BT_KEYS_OVERWRITE_OLDEST is enabled
* :github:`23949` - Question: Is there any example for BR/EDR profile/protocols (like A2DP, AVDTP, RFCOMM)?
* :github:`23887` - drivers: modem: question: Should modem stack include headers to put into zephyr/include?
* :github:`23886` - drivers: modem_socket: Question:  socket ID appears to be the same for all sockets
* :github:`23873` - GNA subsystem does not provide any system calls
* :github:`23825` - edtlib.py fails to find bindings when DTS_ROOT is a relative path
* :github:`23808` - ARM bus fault with code coverage
* :github:`23802` - up_squared(acrn):tests/kernel/timer/timer_api/ failed.
* :github:`23801` - up_squared(acrn):tests/kernel/sched/schedule_api failed.
* :github:`23800` - tests/drivers/counter/counter_cmos failed on up_squared platform
* :github:`23775` - k_poll() documentation is wrong or unclear
* :github:`23713` - CMake integration with libmetal errors-out with the bleeding edge CMake release
* :github:`23702` - STACK_POINTER_RANDOM is not working on ARM for the main thread
* :github:`23672` - dts: sam0: question: Is it possible to clean up samd.dtsi devicetree warning?
* :github:`23629` - support inverted PWM on STM32
* :github:`23599` - zephyr/samples/application_development/code_relocation execution stop at z_arm_bus_fault
* :github:`23578` - [Coverity CID :208922] Uninitialized pointer read in tests/posix/common/src/pthread.c
* :github:`23574` - [Coverity CID :208926] Side effect in assertion in tests/kernel/interrupt/src/nested_irq.c
* :github:`23546` - Kconfig: default value not assigned when inheriting Kconfig values in range
* :github:`23514` - Allocate executable memory for ESP32
* :github:`23474` - tests/subsys/usb/device failed on reel_board.
* :github:`23443` - esp32 needs i2c_transfer call  to turn on the display
* :github:`23423` - Mitigation in case system [created] threads hang/non-responsive
* :github:`23419` - posix: clock: No thread safety clock_[get/set]time
* :github:`23366` - ARM: Core Stack Improvements/Bug fixes for 2.3 release
* :github:`23364` - Bluetooth: bt_recv deadlock on supervision timeout with pending GATT Write Commands
* :github:`23349` - Question: How to add external soc, board, DTS, drivers and libs?
* :github:`23322` - flash, spi-nor: Configuration of jedec spi nor flash device driver
* :github:`23319` - hci interface stopped working after few hours/days
* :github:`23248` - Add secure version of strcpy
* :github:`23246` - net: tx_bufs are not freed when NET_TCP_BACKLOG_SIZE is too high
* :github:`23243` - test/kernel/gen_isr_table fails in v2.2.0-rc3 on lpcxpresso54114_m4 board
* :github:`23215` - fujitsu FRAM read error on stm32_olimexino
* :github:`23211` - need a proper arch_system_halt() for x86_64
* :github:`23178` - usb: endpoint buffer leak upon SET_CONFIGURATION, SET_INTERFACE
* :github:`23177` - Bluetooth: Mesh: Access structure member with a possible NULL pointer
* :github:`23149` - [v1.14] sam_e70_xplained:tests/drivers/watchdog/wdt_basic_api failed with v1.14 branch.
* :github:`23139` - USB Mass storage - Unexpected USB restart from host
* :github:`23138` - Codegen for an C structure that stores pinmux definitions
* :github:`23134` - BT: Host: Notification dropped instead of truncated if bigger than ATT_MTU-3
* :github:`23111` - drivers:usb:device:sam0:  Descriptor tables are filled with zeros in attach()
* :github:`23052` - nrf52840_pca10056: Spurious RTS pulse and incorrect line level with hardware flow control disabled
* :github:`23040` - samples: net/wifi: net ping shell causes USAGE FAULT once wifi is connected
* :github:`23039` - SystemView does not work with C++ enabled
* :github:`22996` - scripts/footprint/size_report doesn't work on qemu_x86_64
* :github:`22980` - bluetooth: logging: Build assertion prevents immediate logging when using legacy LL
* :github:`22975` - tests/kernel/gen_isr_table: filtered in CI only for Cortex-M Mainline
* :github:`22974` - Add cancel function to onoff service
* :github:`22955` - tests/kernel/interrupt fails intermittently on qemu_cortex_m0
* :github:`22906` - Slow read/write speed of microSD card via SPI and FatFS
* :github:`22892` - Kconfig warning when serial disable on PCA10059
* :github:`22873` - Bluetooth: RSSI Read command can be configured out even when mandatory
* :github:`22872` - Hello world application for mps2_an521 board when build as a secure/non-secure with Trusted Firmware is crashing on qemu
* :github:`22865` - drivers: enc28j60: sample: dumb_http_server: TX failed errors
* :github:`22758` - RFC: Require system clock stability on startup
* :github:`22751` - STM32F407 I2C driver hangs
* :github:`22722` - posix: redefinition of symbols while porting zeromq to zephyr
* :github:`22704` - Implement watchdog driver for lpcxpresso55s69
* :github:`22637` - 2.3 Release Checklist
* :github:`22594` - NXP S32K144 MCU support
* :github:`22562` - West: Allow configuring ``west sign`` similar to west runners
* :github:`22466` - Add hx711 sensor
* :github:`22391` - Resuming from suspend should check device usage count in device idle PM
* :github:`22344` - convert espi sample to devicetree
* :github:`22340` - Security problem with settings and littlefs
* :github:`22322` - Clang linking error
* :github:`22301` - k_msgq_put() semantics definition
* :github:`22151` - hal_nordic: nrfx: doxygen: Reference to missing nrfx/templates
* :github:`22145` - RISCV arch_irq_connect_dynamic() broken with PLIC interrupts
* :github:`22144` - arch: arm64: interrupt test is failing
* :github:`22140` - Exiting deep sleep without button help; nrf52832
* :github:`22091` - Blink-Led example doesn't build on Nucleo_L476RG, STM32F4_DISCOVERY, Nucleo_F302R8, Nucleo_F401RE
* :github:`22077` - W25Q32fv supported in spi_flash examples ?
* :github:`22063` - fs/NVS: NVS is not compatible with flash memories which have 0x00 as erased
* :github:`22060` - Build fails with gcc-arm-none-eabi-9-2019-q4-major
* :github:`21994` - Bluetooth: controller: split: Fix procedure complete event generation
* :github:`21848` - sanitycheck duplicate tests Testing/Ztest
* :github:`21843` - CONFIG_INIT_STACKS issue on x86_64
* :github:`21819` - Shell fails when dynamic command has empty subcommand
* :github:`21801` - Logger sample's performance estimates are incorrect
* :github:`21798` - Bluetooth: host: Allow GATT client to restore subscription info without resubscribing
* :github:`21772` - Adding I2C devices to device tree with the same address on different busses generates excessive warnings.
* :github:`21762` - [v1.14] stm32: k_sleep() actual sleep times are different than its input
* :github:`21754` - Arduino Due shell does not accept input (UART0)
* :github:`21725` - device power management by device
* :github:`21711` - sam0 i2c slave
* :github:`21708` - Multiple partitions for LittleFS
* :github:`21707` - Timing violation for all sensor drivers
* :github:`21670` - Keep device structures in ROM
* :github:`21635` - sht3xd error -5 on olimexino_stm32
* :github:`21616` - LWM2M: unable to get plain text from incoming message
* :github:`21611` - IS25LP032D-JNLE Flash support
* :github:`21554` - ldscript:datas section is not properly aligned in ROM
* :github:`21549` - i2c_sam0 interrupt latency is excessive
* :github:`21511` - re-visit k_thread_abort wrt SMP
* :github:`21498` - Zephyr Peripheral not responding to Terminate command from central
* :github:`21455` - driver: subsys: sdhc: USAGE FAULT trace and no cs control
* :github:`21452` - drivers: ethernet: unify the initiaization
* :github:`21445` - drivers/i2c: add I2C slave support for nrfx
* :github:`21436` - refactor and augment CPU cache management APIs
* :github:`21399` - NUCLEO-H745ZI-Q Support
* :github:`21378` - The program cannot be downloaded to nrf52840, only to pca10056
* :github:`21240` - Error west flash
* :github:`21234` - drivers: usb_dc_sam0: usb detach and reattach does not work
* :github:`21233` - i2c_sam0 driver does not execute a STOP condition
* :github:`21232` - i2c_sam0 LOWTOUT is not functional
* :github:`21229` - cc1plus: warning: '-Werror=' argument '-Werror=implicit-int' is not valid for C++
* :github:`21187` - Can not ping or run http server via ethernet when gPTP is enabled
* :github:`21114` - Invalid interaction between the RTC and the I2C drivers for the sam0
* :github:`21111` - Reschedule points are currently undocumented
* :github:`21092` - i2c-sam0 sleeps waiting for interrupt
* :github:`21053` - net: 6lo: Use context 0 as default when CID-bit is not set
* :github:`21016` - Unexpected ethernet network traffic after power up
* :github:`20987` - Console showing frequent usb warnings:  <wrn> usb_device: Failed to write endpoint buffer 0x82
* :github:`20978` - Add bond_deleted callback
* :github:`20870` - [Coverity CID :205816] Control flow issues in subsys/settings/src/settings_file.c
* :github:`20844` - [Coverity CID :205781] Integer handling issues in lib/os/printk.c
* :github:`20806` - nrf: clock control: clock control on/off routines are refcounted
* :github:`20780` - Feature Request: Half-duplex UART shell backend
* :github:`20750` - shell: shell_execute_cmd introduce new line
* :github:`20734` - Are cooperative threads cooperative in SMP?
* :github:`20729` - Coverage reporting hangs for C++ tests on X86 qemu
* :github:`20712` - nRF clock_control_on() is nonblocking
* :github:`20693` - tests: watchdog: test_wdt_callback_1() implementation vs API specification
* :github:`20687` - Clarification: How to enable on-board nor-flash following the board porting guide?
* :github:`20671` - ARC: remove scheduler code from arch layer
* :github:`20663` - kernel objects are being included always, regardless of usage
* :github:`20595` - tests/arch/arm/arm_thread_swap failed on frdm_k64f board.
* :github:`20589` - RV32M1 SPI loopback needs DEBUG_OPTIMIZATIONS
* :github:`20541` - [Coverity CID :205639]Security best practices violations in /tests/subsys/settings/functional/src/settings_basic_test.c
* :github:`20520` - [Coverity CID :205652]Memory - corruptions in /tests/crypto/tinycrypt/src/ecc_dsa.c
* :github:`20519` - [Coverity CID :205616]Memory - corruptions in /tests/crypto/tinycrypt/src/ecc_dsa.c
* :github:`20517` - [Coverity CID :205640]Control flow issues in /subsys/testsuite/ztest/src/ztest.c
* :github:`20516` - [Coverity CID :205609]Control flow issues in /subsys/testsuite/ztest/src/ztest.c
* :github:`20500` - [Coverity CID :205629]Control flow issues in /drivers/timer/cc13x2_cc26x2_rtc_timer.c
* :github:`20418` - CONFIG_HEAP_MEM_POOL_SIZE should not be limited
* :github:`20297` - Bluetooth: can't close bt_driver log output
* :github:`20012` - Support peripheral deallocation at runtime
* :github:`19824` - Build sample net app for ACRN (nuc i7dnhe)
* :github:`19739` - stty: standard input: Inappropriate ioctl for device
* :github:`19701` - mem_pool_threadsafe sporadic failures impacting CI
* :github:`19684` - doc: [message_queues.rst] unclear about data_item structure type
* :github:`19670` - samples/drivers/spi_fujitsu_fram crashs due to uninitialized variables
* :github:`19661` - missing files in xtensa/xt-sim doc
* :github:`19550` - drivers/pcie: ``pcie_get_mbar()`` should return a ``void *`` not ``u32_t``
* :github:`19483` - Add support for Open Supervised Device Protocol (OSDP)
* :github:`19414` - UART and prf not working
* :github:`19376` - Build on a ARM host
* :github:`19348` - net: TCP/IPv6 set of fragmented packets causes Zephyr QEMU to double free
* :github:`19063` - can we increase qemu_riscv32/64 RAM sizes
* :github:`18960` - [Coverity CID :203908]Error handling issues in /lib/libc/newlib/libc-hooks.c
* :github:`18843` - Usage Fault with CONFIG_NO_OPTIMIZATIONS even on samples/hello_world
* :github:`18815` - UART API documentation
* :github:`18629` - Some tests fail to reach test_main() on cc1352r1_launchxl
* :github:`18570` - Dynamic interrupt does not work with multi-level interrupts
* :github:`18345` - Is there a way to get the bytes that shell receives?
* :github:`18157` - adding an offset to the zephyr code via dts overlay breaks linking + the image size changes
* :github:`18045` - BT Host: Advertising Extensions - Periodic Advertisement
* :github:`17814` - Zephyr support for NXP i.MX8M SoC
* :github:`17688` - Unable to Read data from SCC811
* :github:`17624` - SRAM size configurations aren't always consistent
* :github:`17372` - sanitycheck does not parse extra_args with spaces correctly
* :github:`16968` - silabs/gecko/emlib/src/em_gpio.c:111:35: warning: ?: using integer constants in boolean context [-Werror=int-in-bool-context]
* :github:`16886` - Bluetooth Mesh: Receive segmented message multiple times
* :github:`16809` - TCP2 integration
* :github:`16790` - adxl362 sample isn't build by sanitycheck
* :github:`16661` - Symmetric multiprocessing (SMP) for ARC HS cores
* :github:`16638` - Filesystem API is missing fs_open() flags
* :github:`16439` - flash: unify read alignment requirements
* :github:`16387` - STM32wb55 bluetooth samples fail
* :github:`16363` - Error building x_nucleo_iks01a1 sample on nucleo_wb55rg after activating I2C Bus
* :github:`16210` - ARM: initialization sequence might be not using all of interrupt stack
* :github:`16031` - Toolchain abstraction
* :github:`15968` - rom_report very imprecise
* :github:`15845` - _RESET_VECTOR different from 0x00 gives invalid .elf size on nios2
* :github:`15286` - HF clock's m16src_grd and BLE stack
* :github:`15246` - doc: confusion about dtc version
* :github:`14591` - Infineon Tricore architecture support
* :github:`14587` - IPv6 support in cc3220sf_launchxl
* :github:`14520` - invalid locking in shell
* :github:`14302` - USB MSC fails USB3CV tests
* :github:`14269` - Enforce usage of K_THREAD_STACK_SIZEOF macro in k_thread_create()
* :github:`14173` - Configure QEMU to run independent of the host clock
* :github:`13819` - mimxrt10xx: Wrong I2C transfer status
* :github:`13813` - Test suite mslab_threadsafe fails randomly
* :github:`13737` - Where can I find tutorial to make my own device driver for a device under I2C bus?
* :github:`13651` - ARC does not set thread->stack_info correctly
* :github:`13637` - Introduce supervisor-only stack declaration macros
* :github:`13276` - Do we need to update fatfs
* :github:`12987` - Fix workaround of using 'mmio-sram' compat for system memory (DRAM) in DTS
* :github:`12935` - Zephyr usurps "STRINGIFY" define
* :github:`12705` - Implement select() call for socket offloading and SimpleLink driver
* :github:`12025` - OS Pwr Manager doesn't put nrf52 into LPS_1
* :github:`11976` - APIs that support a callback should provide both the device pointer and a generic pointer
* :github:`11974` - rework eeprom driver to clearly indicate it is a test stub
* :github:`11908` - Power Manager does not handle K_FOREVER properly
* :github:`11890` - Reimplement getaddrinfo() to call SlNetUtil_getaddrinfo() in new SimpleLink SDK v 2.30+
* :github:`10628` - tests/kernel/common and tests/posix/fs crash on ESP32
* :github:`10436` - Mess with ssize_t, off_t definitions
* :github:`9893` - MISRA C Review switch statement usage
* :github:`9808` - remove single thread support
* :github:`9596` - tests/subsys/logging/log_core fails on ESP32 with no console output
* :github:`8469` - Zephyr types incompatibilities (e.g. u32_t vs uint32_t)
* :github:`8364` - mcumgr: unable to properly read big files
* :github:`8360` - CI should enforce that extract_dts_includes.py does not trigger warnings
* :github:`8262` - [Bluetooth] MPU FAULT on sdu_recv
* :github:`8257` - Unify TICKLESS_IDLE & TICKLESS_KERNEL
* :github:`7951` - doc: naming convention for requirements ids
* :github:`7385` - i2c_esp32 can write past checked buffer length
* :github:`6783` - Clean up wiki.zephyrproject.org content
* :github:`6184` - drivers: ISR-friendly driver APIs
* :github:`5934` - esp32: Output frequency is different from that configured on I2C and PWM drivers
* :github:`5443` - Deprecate # CONFIG`_ is not set
* :github:`4404` - Align k_poll with waiters
* :github:`3423` - Optimize MCUX shim drivers to reduce memory footprint
* :github:`3180` - implement direct interrupts on ARC
* :github:`3165` - xtensa: switch to clang-based frontend
* :github:`3066` - Improve Multi Core support
* :github:`2955` - Use interrupt-driven TX in hci_uart sample

---

### Doc Releases Release Notes 2.5 (`doc/releases/release-notes-2.5.rst`)

:orphan:

.. _zephyr_2.5:

Zephyr 2.5.0
#############

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

Major enhancements with this release include:

* Introduced support for the SPARC processor architecture and the LEON
  processor implementation.
* Added Thread Local Storage (TLS) support
* Added support for per thread runtime statistics
* Added support for building with LLVM on X86
* Added new synchronization mechanisms using Condition Variables
* Add support for demand paging, initial support on X86.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* CVE-2021-3323: Under embargo until 2021-04-14
* CVE-2021-3321: Under embargo until 2021-04-14
* CVE-2021-3320: Under embargo until 2021-04-14

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

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
***********

* Removed SETTINGS_USE_BASE64 support as its been deprecated for more than
  two releases.

* The :c:func:`lwm2m_rd_client_start` function now accepts an additional
  ``flags`` parameter, which allows to configure current LwM2M client session,
  for instance enable bootstrap procedure in the current session.

* LwM2M execute now supports arguments. The execute callback
  :c:type:`lwm2m_engine_execute_cb_t` is extended with an ``args`` parameter
  which points to the CoAP payload that comprises the arguments, and an
  ``args_len`` parameter to indicate the length of the ``args`` data.

* Changed vcnl4040 dts binding default for property 'proximity-trigger'.
  Changed the default to match the HW POR state for this property.

* The :c:func:`clock_control_async_on` function will now take ``callback`` and
  ``user_data`` as arguments instead of structure which contained list node,
  callback and user data.

* The :c:func:`mqtt_keepalive_time_left` function now returns -1 if keep alive
  messages are disabled by setting ``CONFIG_MQTT_KEEPALIVE`` to 0.

* The ``CONFIG_LEGACY_TIMEOUT_API`` mode has been removed.  All kernel
  timeout usage must use the new-style k_timeout_t type and not the
  legacy/deprecated millisecond counts.

* The :c:func:`coap_pending_init` function now accepts an additional ``retries``
  parameter, allowing to specify the maximum retransmission count of the
  confirmable message.

* The ``CONFIG_BT_CTLR_CODED_PHY`` is now disabled by default for builds
  combining both Bluetooth host and controller.

* The :c:func:`coap_packet_append_payload` function will now take a pointer to a
  constant buffer as the ``payload`` argument instead of a pointer to a writable
  buffer.

* The :c:func:`coap_packet_init` function will now take a pointer to a constant
  buffer as the ``token`` argument instead of a pointer to a writable buffer.

* A new :ref:`regulator_api` API has been added to support controlling power
  sources.  Regulators can also be associated with devicetree nodes, allowing
  drivers to ensure the device they access has been powered up.  For simple
  GPIO-only regulators a devicetree property ``supply-gpios`` is defined as a
  standard way to identify the control signal in nodes that support power
  control.

* :c:type:`fs_tile_t` objects must now be initialized by calling
  :c:func:`fs_file_t_init` before their first use.

* :c:type:`fs_dir_t` objects must now be initialized by calling
  :c:func:`fs_dir_t_init` before their first use.

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

* Nordic nRF5340 PDK board deprecated and planned to be removed in 2.6.0.
* ARM Musca-A board and SoC support deprecated and planned to be removed in 2.6.0.

* DEVICE_INIT was deprecated in favor of utilizing DEVICE_DEFINE directly.

* DEVICE_AND_API_INIT was deprecated in favor of DEVICE_DT_INST_DEFINE and
  DEVICE_DEFINE.

* Bluetooth

  * Deprecated the :c:func:`bt_set_id_addr` function, use :c:func:`bt_id_create`
    before calling :c:func:`bt_enable` instead. When ``CONFIG_PRIVACY`` is
    enabled a valid IRK has to be supplied by the application for this case.

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

* Bluetooth

  * The deprecated BT_LE_SCAN_FILTER_DUPLICATE define has been removed,
    use BT_LE_SCAN_OPT_FILTER_DUPLICATE instead.
  * The deprecated BT_LE_SCAN_FILTER_WHITELIST define has been removed,
    use BT_LE_SCAN_OPT_FILTER_WHITELIST instead.
  * The deprecated bt_le_scan_param::filter_dup argument has been removed,
    use bt_le_scan_param::options instead.
  * The deprecated bt_conn_create_le() function has been removed,
    use bt_conn_le_create() instead.
  * The deprecated bt_conn_create_auto_le() function has been removed,
    use bt_conn_le_create_auto() instead.
  * The deprecated bt_conn_create_slave_le() function has been removed,
    use bt_le_adv_start() instead with bt_le_adv_param::peer set to the remote
    peers address.
  * The deprecated BT_LE_ADV_* macros have been removed,
    use the BT_GAP_ADV_* enums instead.
  * The deprecated bt_conn_security function has been removed,
    use bt_conn_set_security instead.
  * The deprecated BT_SECURITY_* defines NONE, LOW, MEDIUM, HIGH, FIPS have been
    removed, use the L0, L1, L2, L3, L4 defines instead.
  * The deprecated BT_HCI_ERR_AUTHENTICATION_FAIL define has been removed,
    use BT_HCI_ERR_AUTH_FAIL instead.

* Kernel

  * The deprecated k_mem_pool API has been removed entirely (for the
    past release it was backed by a k_heap, but maintained a
    compatible API).  Now all instantiated heaps must be
    sys_heap/k_heaps.  Note that the new-style heap is a general
    purpose allocator and does not make the same promises about block
    alignment/splitting.  Applications with such requirements should
    look at porting their logic, or perhaps at the k_mem_slab utility.

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

Kernel
******

* Added support for per thread runtime statistics
* Added new synchronization mechanisms using Condition Variables
* Thread Local Storage (TLS)

  * Introduced thread local storage support for the following architectures:

    * ARC
    * Arm Cortex-M
    * Arm Cortex-R
    * AArch64
    * RISC-V
    * Sparc
    * x86 and x86_64
    * Xtensa

  * This allows variables declared with ``__thread`` keyword to be allocated
    on a per-thread basis, and every thread has its own copy of these
    variables.
  * Enable via :kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE`.
  * ``errno`` can be stored inside TLS if :kconfig:option:`CONFIG_ERRNO_IN_TLS`
    is enabled (together with :kconfig:option:`CONFIG_ERRNO`). This allow user
    threads to access the value of ``errno`` without making a system call.

* Memory Management

  * Added page frame management for physical memory to keep track of
    the status of each page frame.
  * Added :c:func:`k_mem_map` which allows applications to increase
    the data space available via anonymous memory mappings.
  * Added :c:func:`k_mem_free_get` which returns the amount of
    physical anonymous memory remaining.
  * Paging structure must now be pre-allocated so that there is no need
    to do memory allocations when mapping memory. Because of this,
    :c:func:`arch_mem_map` may no longer fail.

* Demand Paging

  * Introduced the framework for demand paging and infrastructure for
    custom eviction algorithms and implementation of backing stores.
  * Currently the whole kernel is pinned and remaining physical memory
    can be used for paging.

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

* ARC

  * Fixed execution on ARC HS with one interrupt bank and fast interrupts (FIRQ)
    enabled
  * Hardened SMP support
  * Improved mdb west runner to support simulation on SMP nSIM-based
    configurations
  * Improved mdb west runner to support nSIM-based configurations execution
    on real HW (FPGA-based)
  * Added documentation page with Zephyr support status on ARC processor
  * Added coverage support for nSIM-based configurations
  * Switched to upstream OpenOCD for ARC
  * Various minor fixes/improvements for ARC MWDT toolchain infrastructure

* ARM

  * AARCH32

    * Introduced the functionality for chain-loadable Zephyr
      firmware images to force the initialization of internal
      architecture state during early system boot (Cortex-M).
    * Changed the default Floating Point Services mode to
      Shared FP registers mode.
    * Enhanced Cortex-M Shared FP register mode by implementing
      dynamic lazy FP register stacking in threads.
    * Added preliminary support for Cortex-R7 variant.
    * Fixed inline assembly code in Cortex-M system calls.
    * Enhanced and fixed Cortex-M TCS support.
    * Enabled interrupts before switching to main in single-thread
      Cortex-M builds (CONFIG_MULTITHREADING=n).
    * Fixed vector table relocation in non-XIP Cortex-M builds.
    * Fixed exception exit routine for fatal error exceptions in
      Cortex-R.
    * Fixed interrupt nesting in ARMv7-R architecture.


  * AARCH64

    * Fixed registers printing on error and beautified crash dump output
    * Removed CONFIG_SWITCH_TO_EL1 symbol. By default the execution now drops
      to EL1 at boot
    * Deprecated booting from EL2
    * Improved assembly code and errors catching in EL3 and EL1 during the
      start routine
    * Enabled support for EL0 in the page tables
    * Fixed vector table alignment
    * Introduced support to boot Zephyr in NS mode
    * Fixed alignment fault in z_bss_zero
    * Added PSCI driver
    * Added ability to generate image header
    * Improved MMU code and driver

* RISC-V

  * Added support for PMP (Physical Memory Protection).
    Integrate PMP in Zephyr allow to support userspace (with shared
    memory) and stack guard features.

* SPARC

  * Added support for the SPARC architecture, compatible with the SPARC V8
    specification and the SPARC ABI.
  * FPU is supported in both shared and unshared FP register mode.

* x86

  * Enabled soft float support for Zephyr SDK
  * ``CONFIG_X86_MMU_PAGE_POOL_PAGES`` is removed as paging structure
    must now be pre-allocated.
  * Mapping of physical memory has changed:

    * This allows a smaller virtual address space thus requiring a smaller
      paging structure.
    * Only the kernel image is mapped when :kconfig:option:`CONFIG_ACPI` is not enabled.
    * When :kconfig:option:`CONFIG_ACPI` is enabled, the previous behavior to map
      all physical memory is retained as platforms with ACPI are usually not
      memory constrained and can accommodate bigger paging structure.

  * Page fault handler has been extended to support demand paging.

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

* Added support for these SoC series:

  * Cypress PSoC-63
  * Intel Elkhart Lake

* Made these changes in other SoC series:

* Changes for ARC boards:

  * Added icount support for ARC QEMU boards
  * Added MWDT compiler options for HSDK board
  * Added missing taps into JTAG chain for the dual-core configuration of the
    HSDK board

* Added support for these ARM boards:

  * Cypress CY8CKIT_062_BLE board

* Added support for these x86 boards:

  * Elkhart Lake CRB board
  * ACRN configuration on Elkhart Lake CRB board
  * Slim Bootloader configuration on Elkhart Lake CRB board

* Added support for these SPARC boards:

  * GR716-MINI LEON3FT microcontroller development board
  * Generic LEON3 board configuration for GRLIB FPGA reference designs
  * SPARC QEMU for emulating LEON3 processors and running kernel tests

* Added support for these NXP boards:

  * LPCXpresso55S28
  * MIMXRT1024-EVK

* Added support for these STM32 boards and SoCs :

  * Cortex-M Trace Reference Board V1.2 (SEGGER TRB STM32F407)
  * MikroE Clicker 2 for STM32
  * STM32F103RCT6 Mini
  * ST Nucleo F303K8
  * ST Nucleo F410RB
  * ST Nucleo H723ZG
  * ST Nucleo L011K4
  * ST Nucleo L031K6
  * ST Nucleo L433RC-P
  * ST STM32L562E-DK Discovery
  * STM32F105xx and STM32F103xG SoC variants
  * STM32G070xx SoC variants
  * STM32G474xB/C SoC variants
  * STM32L071xx SoC variants
  * STM32L151xC and STM32L152xC SoC variants

* Made these global changes in STM32 boards and SoC series:

  * Pin control configuration is now done through devicetree and existing
    macros to configure pins in pinmux.c files are tagged as deprecated.
    The new pin settings are provided thanks to .dtsi files distributed in
    hal_stm32 module.
  * Generic LL headers, also distributed in hal_stm32 module, are now available
    to abstract series references in drivers.
  * Hardware stack protection is now default on all boards with enabled MPU
    (SRAM > 64K ), excluding F0/G0/L0 series.
  * West flash STM32CubeProgrammer runner was added as a new option for STM32
    boards flashing (to be installed separately).

* Made these changes in other boards:

  * CY8CKIT_062_WIFI_BT_M0: was renamed to CY8CKIT_062_WIFI_BT.
  * CY8CKIT_062_WIFI_BT_M4: was moved into CY8CKIT_062_WIFI_BT.
  * CY8CKIT_062_WIFI_BT: Now M0+/M4 are at same common board.
  * nRF5340 DK: Selected TF-M as the default Secure Processing Element
    (SPE) when building Zephyr for the non-secure domain.
  * SAM4E_XPRO: Added support to SAM-BA ROM bootloader.
  * SAM4S_XPLAINED: Added support to SAM-BA ROM bootloader.
  * Extended LPCXpresso55S69 to support dual-core.
  * Enhanced MIMXRT1064-EVK to support QSPI flash storage and LittleFS.
  * Updated MIMXRT685-EVK to increase the core clock frequency.
  * Updated NXP i.MX RT, Kinetis, and LPC boards to enable hardware stack
    protection by default.
  * Fixed Segger RTT and SystemView support on NXP i.MX RT boards.
  * Demand paging is turned on by default for ``qemu_x86_tiny``.
  * Updated zefi.py to use cross-compiler while building Zephyr.
  * Enabled code coverage report for ``qemu_x86_64``.
  * Removed support for legacy APIC timer driver.
  * Added common memory linker for x86 SoCs.
  * Enabled configuration to reserve the first megabyte in x86 SoCs.

* Added support for these following shields:

  * Inventek es-WIFI shield
  * Sharp memory display generic shield

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

* ADC

  * Added support for ADC on STM32G0 Series.
  * Introduced the ``adc_sequence_options::user_data`` field.

* CAN

  * We reworked the configuration API.
    A user can now specify the timing manually (define prop segment,
    phase segment1, phase segment2, and prescaler) or use a newly introduced
    algorithm to calculate optimal timing values from a bitrate and sample point.
    The bitrate and sample point can be specified in the devicetree too.
    It is possible to change the timing values at runtime now.

  * We reworked the zcan_frame struct due to undefined behavior.
    The std_id (11-bit) and ext_id (29-bit) are merged to a single id
    field (29-bit). The union of both IDs was removed.

  * We made the CANbus API CAN-FD compatible.
    The zcan_frame data-field can have a size of >8 bytes now.
    A flag was introduced to mark a zcan_frame as CAN-FD frame.
    A flag was introduced that enables a bitrate switch in CAN-FD frames.
    The configuration API supports an additional timing parameter for the CAN-FD
    data-phase.

  * drivers are converted to use the new DEVICE_DT_* macros.

* Clock Control

  * Added NXP LPC driver.

* DAC

  * STM32: Enabled support for G0 and H7 series.
  * Added TI DACx3608 driver.

* DMA

  * kmalloc was removed from STM32 DMAMUX driver initialization.

* EEPROM

  * Marked the EEPROM API as stable.
  * Added support for AT24Cxx devices.

* Ethernet

  * Added support for Distributed Switch Architecture (DSA) devices.
    Currently only ip_k66f board supports DSA.
  * Added support for w5500 Ethernet controller.
  * Reworked the NXP MCUX driver to use DT_INST_FOREACH.

* Flash

  * CONFIG_NORDIC_QSPI_NOR_QE_BIT has been removed.  The
    quad-enable-requirements devicetree property should be used instead.
  * MPU_ALLOW_FLASH_WRITE is now default on STM32 boards when MPU is enabled.
  * Add driver for STM32H7 and STM32L1 SoC series.
  * Add QSPI NOR Flash controller support for STM32 family.
  * Added NXP LPC legacy flash driver.
  * Added NXP FlexSPI flash driver for i.MX RT SoCs.
  * Added support for nRF53 Series SoCs in the nRF QSPI NOR flash driver
    (nrf_qspi_nor).

* GPIO

  * Added Cypress PSoC-6 driver.
  * Added Atmel SAM4L driver.

* Hardware Info

  * Added Cypress PSoC-6 driver.

* I2C

  * Added driver support for lmx6x, it8xxx2, and npcx7 platforms.
  * Added Atmel SAM4L TWIM driver.
  * Added I2C slave support in the microchip i2c driver.
  * Reversed 2.4 decision to downgrade I2C eeprom slave driver to a
    test.  It's a driver again.

* I2S

* IEEE 802.15.4

  * nRF:

    * Added IEEE 802.15.4 support for nRF5340.
    * Added support for failed rx notification.

  * cc13xx/cc26xx:

    * Added multi-protocol radio support.
    * Added sub-ghz support.
    * Added raw mode support.

* Interrupt Controller

  * Added Cypress PSoC-6 Cortex-M0+ interrupt multiplexer driver.

* memc

  * Added FMC/SDRAM memory controller for STM32 family

* Modem

  * Improved RX with HW flow control in modem interface API.
  * Improved reading from interface in command handler.
  * Fixed race condition when waiting on cmd reply.
  * Added support for Quectel bg95 modem.
  * Constified modem command structures to reduce RAM usage.

  * hl7800:

    * Fixed buffer handling issues.
    * Fixed setting DNS address.
    * Fixed file open in fw update.
    * Fixed cases where socket would not close.

  * sara-r4:

    * Added sanity timeout for @ prompt.
    * Fixed redundant wait after sendto.
    * Improved offload_sendmsg() support.
    * Added Kconfig to configure RSSI work.
    * Added direct CMD to catch @ when sending data.
    * Sanitize send_socket_data() semaphore handling.

  * bg96:

    * Fixed UDP packet management.

  * GSM:

    * Added start/stop API support so that application can turn off
      the GSM/PPP modem if needed to save power.
    * Avoid wrapping each byte in muxing headers in PPP.
    * Added support to remove PPP IPv4 ipcp address on network down.

* PECI

* Pinmux

  * STM32 pinmux driver has been reworked to allow pin configuration using
    devicetree definitions. The previous C macros are now deprecated.

* PWM

  * Added support for generating PWM signal based on RTC in the pwm_nrf5_sw
    driver.
  * Added optional API for capturing the PWM pulse width and period.
  * Added PWM capture driver for the NXP Kinetis Pulse Width Timer (PWT).
  * Removed the DesignWare and PCA9685 controller drivers.

* Sensor

  * Fixed current conversion to milliamps in the MAX17055 driver.
  * Added multi-instance support to the FXOS8700, IIS2DLPC, and IIS2ICLX
    drivers.
  * Added Invensense ICM42605 driver.
  * Added NXP MCUX ACMP driver.
  * Fixed gyro units in the FXAS21002 driver.
  * Fixed pressure and temperature registers in the DPS310 driver.
  * Added I2C support to the BMI160 driver.
  * Added IIS2ICLX driver.
  * Aligned ST sensor drivers to stmemsc HAL i/f v1.03.
  * Fixed temperature units in the IIS2MDC driver.
  * Added emulator for Bosch BMI160 accelerometer.
  * Added device power management support to the LIS2MDL driver.

* Serial

  * Added ASYNC API support on STM32 family.

* SPI

  * Enhanced NXP MCUX Flexcomm driver to support DMA.

* Timer

* USB

  * Reworked nrfx driver to use mem_slab for event elements and
    and static memory for OUT endpoints.
  * Fixed ZLP handling for nrfx driver.
  * Added support for USB Device mode on STM32F105xx parts.

* Video

* Watchdog

  * Added NXP i.MX RT driver.

* WiFi

  * eswifi:

    * Added uart bus interface. This enables all Inventek modules with
      IWIN AT Commands firmware.

  * esp:

    * Fixed thread-safety access on esp_socket operations.
    * Fixed scheduling each RX packet on separate work thread.
    * Fixed initializing socket work structures only once.
    * Reworked +IPD and +CIPRECVDATA handling.
    * Stopped locking scheduler when sending data.
    * Added DHCP/Static IP Support.
    * Added support using DNS servers.
    * Enhanced CWMODE support.
    * Added support for configuring hostname.
    * Added support for power-gpios to enable ESP module.
    * Added support 32-bit length in +IPD.
    * Added support for reconfiguring UART baudrate after initial communication.
    * Improved packet allocation failure handling by closing stream sockets.

Networking
**********

* CoAP:

  * Fixed discovery response formatting according to RFC6690.
  * Randomized initial ACK timeout.
  * Reworked pending retransmission logic.
  * Fixed long options encoding.

* DHCPv4:

  * Added start/bound/stop network management events for DHCPv4.
  * Fixed timeout scheduling with multiple network interfaces.
  * Fixed timeout on entry to bound state.
  * Fixed invalid timeout on send failure.
  * Fixed bounds checking in timeout.
  * Fixed endian issue.
  * Added randomization to message interval.
  * Limited message interval to a maximum of 64 seconds.

* DNS:

  * Added resolving literal IP addresses even when DNS is disabled.
  * Added support for DNS Service Discovery (dns-sd).
  * Fixed getaddrinfo() to respect socket type hints.

* HTTP:

  * Added chunked encoding body support to HTTP client API.

* IPv6:

  * Tweaked IPv6 DAD and RS timeout handling.
  * Fixed multiple endian issues.
  * Fixed unaligned access to IPv6 address.

* LwM2M:

  * Added dimension discovery support.
  * Implemented bootstrap discovery.
  * Fixed message find based on pending/reply.
  * Reworked bootstrap DELETE operation.
  * Added path generation macro.
  * Added a way to notify the application on network error.
  * Added a callback to notify socket errors to applications.
  * Send Registration Update on lifetime changes.
  * Fixed PULL FW update in case of URI parse errors.
  * Fixed separate response handling.
  * Start notify sequence numbers on 0.
  * Enhanced packing of TLV integers more efficiently.
  * Improved token generation.
  * Fixed the bootstrap to be optional.

* Misc:

  * Allow user to select pre-emptive or co-operative RX/TX threads.
  * Refactored RX and TX thread priorities.
  * Only start the network logging backend if the autostarting is enabled.
  * Added support for simultaneous UDP/TCP and raw sockets in applications.
  * Enabled solicit node multicast group registration for Bluetooth IPSP
    connections.
  * Added net_buf_remove API to manipulate data at the end of network buffers.
  * Added checks to syslog-net that ensure immediate logging mode is not set as
    the network logging is not compatible with it.
  * Implemented SO_RCVTIMEO socket receive timeout option.
  * Added support to update unique hostname on link address changes.
  * Added locking to IPv6, CAN and packet socket bind calls.
  * Added network management events monitor support.

* MQTT:

  * Reset client state before notifying application with MQTT_EVT_DISCONNECT event.

* OpenThread:

  * Added support for RCP (Radio Co-Processor) mode.
  * Made radio workqueue stack size configurable.
  * Added joining thread multicast addresses which are added to Zephyr.
  * Added SRP Kconfig options.
  * Enabled CSL and TREL config options.
  * Added option to enable software CSMA backoff.
  * Added support to configure platform info.
  * Added Kconfigs to change values in Zephyr.
  * Removed unused defines from platform configuration.

* Samples:

  * Added TagoIO IoT Cloud HTTP post sample.
  * Fixed the return code in MQTT Docker tests.
  * Added support to allow DHCPv4 or manually set addresses in zperf sample.
  * Use IPv4 instead of IPv6 in coap-server to support Docker based testing.
  * Added connection manager support to dumb_http_server_mt sample.
  * Added support for large file in dumb_http_server_mt sample.
  * Added support for running the gptp sample X seconds to support Docker based testing.
  * Added Docker based testing to http_client sample.
  * Refractored code structure and reduced RAM usage of civetweb sample.
  * Added suspend/resume shell commands to gsm_modem sample.
  * Added Docker based testing support to network logging sample.

* TCP:

  * The new TCP stack is enabled by default. Legacy TCP stack is deprecated but
    still available and scheduled for removal in next 2.6 release.
  * Added support to queue received out-of-order TCP data.
  * Added connection termination if the TCP handshake is not finalized.
  * Enhanced received TCP RST packet handling.
  * Fixed TCP connection from Windows 10.

* TLS:

  * Use Maximum Fragment Length (MFL) extension by default.
  * Added ALPN extension option to TLS.
  * Fixed TLS context leak on socket allocation failure.

Bluetooth
*********

* Host

  * When privacy has been enabled in order to advertise towards a
    privacy-enabled peer the BT_LE_ADV_OPT_DIR_ADDR_RPA option must now
    be set, same as when privacy has been disabled.

* Mesh

  * The ``bt_mesh_cfg_srv`` structure has been deprecated in favor of a
    standalone Heartbeat API and Kconfig entries for default state values.


* BLE split software Controller

* HCI Driver

USB
***

* USB synchronous transfer

  * Fixed possible deadlock in usb_transfer_sync().
  * Check added to prevent starting new transfer if an other transfer is
    already ongoing on same endpoint.

* USB DFU class

  * Made USB DFU class compatible with the target configuration that does not
    have a secondary image slot.
  * Support to use USB DFU within MCUBoot with single application slot mode.
  * Separate PID for DFU mode added to avoid problems caused by the host OS
    caching the remaining descriptors when switching to DFU mode.
  * Added timer for appDETACH state and revised descriptor handling to
    meet specification requirements.

* USB HID class

  * Reworked transfer handling after suspend and resume events.

* Samples

  * Reworked disk and FS configuration in MSC sample. MSC sample can be
    built with none or one of two supported file systems, LittleFS or FATFS.
    Disk subsystem can be flash or RAM based.

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

* Improved support for additional toolchains:

* Devicetree

  * Support for legacy devicetree macros via
    ``CONFIG_LEGACY_DEVICETREE_MACROS`` was removed. All devicetree-based code
    should be using the new devicetree API introduced in Zephyr 2.3 and
    documented in :ref:`dt-from-c`. Information on flash partitions has moved
    to :ref:`flash_map_api`.
  * It is now possible to resolve at build time the device pointer associated
    with a device that is defined in devicetree, via ``DEVICE_DT_GET``.  See
    :ref:`dt-get-device`.
  * Enhanced support for enumerated property values via new macros:

    - :c:macro:`DT_ENUM_IDX_OR`
    - :c:macro:`DT_ENUM_TOKEN`
    - :c:macro:`DT_ENUM_UPPER_TOKEN`

  * New hardware specific macros:

    - :c:macro:`DT_GPIO_CTLR_BY_IDX`
    - :c:macro:`DT_GPIO_CTLR`
    - :c:macro:`DT_MTD_FROM_FIXED_PARTITION`

  * Miscellaneous new node-related macros:

    - :c:macro:`DT_GPARENT`
    - :c:macro:`DT_INVALID_NODE`
    - :c:macro:`DT_NODE_PATH`
    - :c:macro:`DT_SAME_NODE`

  * Property access macro changes:

    - :c:macro:`DT_PROP_BY_PHANDLE_IDX_OR`: new macro
    - :c:macro:`DT_PROP_HAS_IDX` now expands to a literal 0 or 1, not an
      expression that evaluates to 0 or 1

  * Dependencies between nodes are now exposed via new macros:

    - :c:macro:`DT_DEP_ORD`, :c:macro:`DT_INST_DEP_ORD`
    - :c:macro:`DT_REQUIRES_DEP_ORDS`, :c:macro:`DT_INST_REQUIRES_DEP_ORDS`
    - :c:macro:`DT_SUPPORTS_DEP_ORDS`, :c:macro:`DT_INST_SUPPORTS_DEP_ORDS`

* West

  * Improve bossac runner. It supports now native ROM bootloader for Atmel
    MCUs and extended SAM-BA bootloader like Arduino and Adafruit UF2. The
    devices supported depend on bossac version inside Zephyr SDK or in users
    path. The recommended Zephyr SDK version is 0.12.0 or newer.

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

* File systems

  * API

    * Added :c:func:`fs_file_t_init` function for initialization of
      :c:type:`fs_file_t` objects.

    * Added :c:func:`fs_dir_t_init` function for initialization of
      :c:type:`fs_dir_t` objects.

  * ``CONFIG_FS_LITTLEFS_FC_MEM_POOL`` has been deprecated and
    should be replaced by :kconfig:option:`CONFIG_FS_LITTLEFS_FC_HEAP_SIZE`.

* Management

  * MCUmgr

    * Added support for flash devices that have non-0xff erase value.
    * Added optional verification, enabled via
      :kconfig:option:`CONFIG_IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT`, of an uploaded
      Direct-XIP binary, which will reject any binary that is not able to boot
      from base address of offered upload slot.

  * updatehub

    * Added support to Network Manager and interface overlays at UpdateHub
      sample. Ethernet is the default interface configuration and overlays
      can be used to change default configuration
    * Added WIFI overlay
    * Added MODEM overlay
    * Added IEEE 802.15.4 overlay [experimental]
    * Added BLE IPSP overlay as [experimental]
    * Added OpenThread overlay as [experimental].

* Settings

* Random

* POSIX subsystem

* Power management

  * Use a consistent naming convention using **pm_** namespace.
  * Overhaul power states. New states :c:enum:`pm_state` are more
    meaningful and ACPI alike.
  * Move residency information and supported power states to devicetree
    and remove related Kconfig options.
  * New power state changes notification API :c:struct:`pm_notifier`
  * Cleanup build options.

* LVGL

  * Library has been updated to minor release v7.6.1

* Storage

  * flash_map: Added API to get the value of an erased byte in the flash_area,
    see ``flash_area_erased_val()``.

* DFU

 * boot: Reworked using MCUBoot's bootutil_public library which allow to use
   API implementation already provided by MCUboot codebase and remove
   zephyr's own implementations.

* Crypto

  * mbedTLS updated to 2.16.9

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.

MCUBoot
*******

* bootloader

  * Added hardening against hardware level fault injection and timing attacks,
    see ``CONFIG_BOOT_FIH_PROFILE_HIGH`` and similar kconfig options.
  * Introduced Abstract crypto primitives to simplify porting.
  * Added ram-load upgrade mode (not enabled for zephy-rtos yet).
  * Renamed single-image mode to single-slot mode,
    see ``CONFIG_SINGLE_APPLICATION_SLOT``.
  * Added patch for turning off cache for Cortex M7 before chain-loading.
  * Fixed bootstrapping in swap-move mode.
  * Fixed issue causing that interrupted swap-move operation might brick device
    if the primary image was padded.
  * Fixed issue causing that HW stack protection catches the chain-loaded
    application during its early initialization.
  * Added reset of Cortex SPLIM registers before boot.
  * Fixesd build issue that occurs if CONF_FILE contains multiple file paths
    instead of single file path.
  * Added watchdog feed on nRF devices. See ``CONFIG_BOOT_WATCHDOG_FEED`` option.
  * Removed the flash_area_read_is_empty() port implementation function.
  * Initialize the ARM core configuration only when selected by the user,
    see ``CONFIG_MCUBOOT_CLEANUP_ARM_CORE``.
  * Allow the final data chunk in the image to be unaligned in
    the serial-recovery protocol.
  * Kconfig: allow xip-revert only for xip-mode.
  * ext: tinycrypt: update ctr mode to stream.
  * Use minimal CBPRINTF implementation.
  * Configure logging to LOG_MINIMAL by default.
  * boot: cleanup NXP MPU configuration before boot.
  * Fix nokogiri<=1.11.0.rc4 vulnerability.
  * bootutil_public library was extracted as code which is common API for
    MCUboot and the DFU application, see ``CONFIG_MCUBOOT_BOOTUTIL_LIB``

* imgtool

  * Print image digest during verify.
  * Add possibility to set confirm flag for hex files as well.
  * Usage of --confirm implies --pad.
  * Fixed 'custom_tlvs' argument handling.
  * Add support for setting fixed ROM address into image header.
  * Fixed verification with protected TLVs.


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

* Synchronized Trusted-Firmware-M module to the upstream v1.2.0 release.

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

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

  * A sample was added to demonstrate how to use the ADC driver API.
  * Sanitycheck script was renamed to twister

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

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

* :github:`32221` - Sporadic kernel panics on stm32g4 flash erase/writes
* :github:`32203` - Cannot set static address when using hci_usb or hci_uart on nRF5340 attached to Linux Host
* :github:`32181` - samples: tests: Tests from samples/boards/nrf/nrfx fail
* :github:`32179` - samples: tests: Tests from samples/subsys/usb/audio fail
* :github:`32112` - intel_adsp_cavs15: a part of testcases run failed with same error
* :github:`31819` - intel_adsp_cavs15: signing not correct thus download firmware failed
* :github:`31675` - [Coverity CID :216790] Division or modulo by zero in tests/drivers/can/timing/src/main.c
* :github:`31607` - Bluetooth: host: bt_conn_auth_cb callbacks are not called when pairing to BLE 4.1 central in BT_SECURITY_L4 mode.
* :github:`28685` - Bluetooth: Characteristic unsubscribe under indication load results in ATT timeout
* :github:`26495` - Make k_poll work with KERNEL_COHERENCE
* :github:`21033` - Read out heap space used and unallocated
* :github:`19655` - Milestones toward generalized representation of timeouts
* :github:`12028` - Enable 16550 UART driver on x86_64
* :github:`32206` - CMSIS-DSP support seems broken on link
* :github:`32194` - Source files missing specification of SPDX-License-Identifier in comments
* :github:`32167` - Bluetooth: controller: conformance testcase failures
* :github:`32153` - Use of deprecated macro's in dma_iproc_pax_v1, and dma_iproc_pax_v2
* :github:`32152` - DEVICE_AND_API_INIT and DEVICE_INIT deprecation marking is not working
* :github:`32151` - Use of deprecated macro's in icm42605
* :github:`32143` - AArch64 idle loop corrupts IRQ state with CONFIG_TRACING
* :github:`32142` - dtc: Unrecognized check name "unique_unit_address_if_enabled"
* :github:`32136` - z_unpend1_no_timeout non-atomic
* :github:`32095` - guiconfig search fails
* :github:`32078` - build error with llvm: samples/subsys/fs/littlefs
* :github:`32070` - How to manage power consumption when working with peripheral_hr sample on NRF52832
* :github:`32067` - Bluetooth: Mesh: Devkey and addr not stored correctly
* :github:`32064` - Minimal libc malloc() is unprotected
* :github:`32059` - Getting Started - Windows - Toolchain not found
* :github:`32048` - doc: power management: Remove references to previous PM states terminology
* :github:`32046` - LMP90xxx ADC driver fails to initialise more than one instance
* :github:`32045` - boards: Inaccurate values for ram/flash in nrf5340dk_nrf5340_cpuapp.yaml
* :github:`32040` - BT_AUDIO_UNICAST selection rejected in nightly tests
* :github:`32033` - Bluetooth mesh : LPN doesn't receive messages from Friend
* :github:`32030` - dma: stm32: remove dump stream info in irq
* :github:`32015` - Thread local storage is broken when adding more thread variables
* :github:`32014` - Is there a sample that uses SAADC (analog to digital converter)?
* :github:`32007` - Wrong clock value at USART1 in STM32F2 dtsi file
* :github:`32005` - stm32: async uart tests fail
* :github:`32002` - Cannot build encrypted images on Zephyr
* :github:`31996` - tests/bluetooth/init/bluetooth.init.test_ctlr_peripheral_iso fails to build on a few platforms
* :github:`31994` - drivers: flash: stm32h7: fix int/long int warnings
* :github:`31989` - nrfx_uarte serial driver does not go to low power mode after setting off state
* :github:`31976` - dma: loop_transfer issue on nucleo_wb55rg
* :github:`31973` - Stm32 uart async driver changes offset after callback
* :github:`31952` - Linking fails with latest master on ARM64 platform
* :github:`31948` - tests: drivers: spi: spi_loopback: became skipped whereas it used to be run
* :github:`31947` - Cleanup devicetree warnings generated by dtc
* :github:`31946` - arm,arm-timer dts compatible should be arm,armv8-timer
* :github:`31944` - flashing not working with openocd runner
* :github:`31938` - Invalid SPDX license identifier used in file
* :github:`31937` - sample.bluetooth.peripheral_hr_rv32m1_vega_ri5cy does not build
* :github:`31930` - uart_nrfx_uarte: ``CONFIG_UART_ASYNC_API`` with ``CONFIG_PM_DEVICE`` breaks
* :github:`31928` - usb loopback not work on nrf52840
* :github:`31924` - IVSHMEM with ACRN not working
* :github:`31921` - west flash not working with pyocd
* :github:`31920` - BME280: Use of deprecated ``CONFIG_DEVICE_POWER_MANAGEMENT``
* :github:`31911` - Bluetooth: Mesh: Network buffer overflow on too long proxy messages
* :github:`31907` - settings: Unhandled error in NVS backend
* :github:`31905` - Question : Friend & Low power node with nRF52840
* :github:`31876` - west signing seems to be broken on windows
* :github:`31867` - samples/scheduler/metairq_dispatc failed on iotdk boards
* :github:`31858` - xtensa crt1.S hard coding
* :github:`31853` - Devicetree API - Getting GPIO details from pin
* :github:`31847` - BT ISO channel. error value set, but not returned.
* :github:`31836` - Correct values of _msg_len arg in BT_MESH_MODEL_PUB_DEFINE macro
* :github:`31835` - Type conflict (uint32_t) vs. (uint32_t:7) leads to overflow (276 vs. 20)
* :github:`31822` - tests: drivers: timer: Test drivers.timer.nrf_rtc_timer.stress fails on nrf52 platforms
* :github:`31817` - mec15xxevb_assy6853: tests/boards/mec15xxevb_assy6853/i2c_api/ failed
* :github:`31807` - USB DFU Broken for STM32L4
* :github:`31800` - west build; west build --board=qemu_x86   fails with "unknown BOARD"
* :github:`31797` - need 2.5 release notes on switch to k_heap from mem_pool
* :github:`31791` - samples: hello-world: extra slash in path
* :github:`31789` - samples/scheduler/metairq_dispatch: Regression after 30916 (sched: timeout: Do not miss slice timeouts)
* :github:`31782` - adc: test and sample failed on STM32
* :github:`31778` - Calling k_sem_give causes MPU Fault on nRF52833
* :github:`31769` - Twister:  AttributeError: 'NoneType' object has no attribute 'serial_pty'
* :github:`31767` - twister: rename variable p
* :github:`31749` - fs: fs_opendir can corrupt fs_dir_t object given via zdp parameter
* :github:`31741` - tests:subsys_canbus_isotp: mimxrt1060 meet recv timeout
* :github:`31735` - intel_adsp_cavs15: use twister to run kernel testcases has no output
* :github:`31733` - Unable to build socket can with frdm_k64f
* :github:`31729` - test: build fatal related testcase failed on qemu_cortex_m0 and run failed on qemu_nios2
* :github:`31727` - system_off fails to go into soft_off (deep sleep) state on cc1352r1_launchxl
* :github:`31726` - RISC-V MIV SoC clock rate is specified 100x too slow
* :github:`31721` - tests: nrf: posix: portability.posix.common.tls.newlib fails on nrf9160dk_nrf9160
* :github:`31704` - tests/bluetooth/init/bluetooth.init.test_ctlr_tiny Fails to build on nrf52dk_nrf52832
* :github:`31696` - UP² Celeron version (not the Atom one) has no console
* :github:`31693` - Bluetooth: controller: Compilation error when Encryption support is disabled
* :github:`31684` - intel_adsp_cavs15: Cannot download firmware of kernel testcases
* :github:`31681` - [Coverity CID :216796] Uninitialized scalar variable in tests/subsys/power/power_mgmt/src/main.c
* :github:`31680` - [Coverity CID :216795] Unchecked return value in tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c
* :github:`31679` - [Coverity CID :216794] Pointless string comparison in tests/lib/devicetree/api/src/main.c
* :github:`31678` - [Coverity CID :216793] Division or modulo by zero in tests/ztest/error_hook/src/main.c
* :github:`31677` - [Coverity CID :216792] Out-of-bounds access in tests/net/lib/dns_addremove/src/main.c
* :github:`31676` - [Coverity CID :216791] Side effect in assertion in tests/lib/p4workq/src/main.c
* :github:`31674` - [Coverity CID :216788] Explicit null dereferenced in tests/ztest/error_hook/src/main.c
* :github:`31673` - [Coverity CID :216787] Wrong sizeof argument in tests/kernel/mem_heap/mheap_api_concept/src/test_mheap_api.c
* :github:`31672` - [Coverity CID :216786] Side effect in assertion in tests/kernel/threads/thread_apis/src/test_threads_cancel_abort.c
* :github:`31671` - [Coverity CID :216785] Side effect in assertion in tests/lib/p4workq/src/main.c
* :github:`31670` - [Coverity CID :216783] Side effect in assertion in tests/lib/p4workq/src/main.c
* :github:`31669` - [Coverity CID :215715] Unchecked return value in tests/subsys/fs/littlefs/src/testfs_mount_flags.c
* :github:`31668` - [Coverity CID :215714] Unchecked return value in tests/subsys/fs/fs_api/src/test_fs_mount_flags.c
* :github:`31667` - [Coverity CID :215395] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31666` - [Coverity CID :215394] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31665` - [Coverity CID :215393] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31664` - [Coverity CID :215390] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31663` - [Coverity CID :215389] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31662` - [Coverity CID :215388] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31661` - [Coverity CID :215387] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31660` - [Coverity CID :215385] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31659` - [Coverity CID :215384] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31658` - [Coverity CID :215383] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31657` - [Coverity CID :215382] Operands don't affect result in tests/net/lib/dns_sd/src/main.c
* :github:`31656` - [Coverity CID :215380] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31655` - [Coverity CID :215378] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31654` - [Coverity CID :215377] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31653` - [Coverity CID :215375] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31652` - [Coverity CID :215374] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31651` - [Coverity CID :215371] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31650` - [Coverity CID :215370] Argument cannot be negative in tests/net/lib/dns_sd/src/main.c
* :github:`31649` - [Coverity CID :215369] Out-of-bounds access in tests/net/lib/dns_sd/src/main.c
* :github:`31648` - [Coverity CID :216800] Operands don't affect result in lib/os/heap.c
* :github:`31647` - [Coverity CID :216789] Wrong sizeof argument in include/kernel.h
* :github:`31646` - [Coverity CID :215712] Assignment of overlapping memory in lib/os/cbprintf_complete.c
* :github:`31645` - [Coverity CID :215711] Wrong sizeof argument in include/kernel.h
* :github:`31644` - [Coverity CID :216798] Unused value in subsys/net/lib/sockets/socketpair.c
* :github:`31643` - [Coverity CID :215372] Logically dead code in subsys/net/lib/sockets/sockets_tls.c
* :github:`31642` - [Coverity CID :216784] Uninitialized scalar variable in drivers/can/can_common.c
* :github:`31640` - mcuboot build is broken
* :github:`31631` - x86: ehl_crb_sbl: Booting fails with Slim Bootloader
* :github:`31630` - Incorrect configuration override option for west flash
* :github:`31629` - mcumgr-cli image upload is failing on shell channel after MCUBOOT_BOOTUTIL library was introduced
* :github:`31627` - tests/subsys/power/power_mgmt/subsys.power.device_pm  fails to build on nrf5340dk_nrf5340_cpunet &  nrf5340pdk_nrf5340_cpunet
* :github:`31616` - test: ipc: Test from samples/subsys/ipc/rpmsg_service fails on nrf5340dk_nrf5340_cpuapp
* :github:`31614` - drivers: clock_control: Kconfig.stm32xxx PLL div range for each serie
* :github:`31613` - Undefined reference errors when using External Library with k_msgq_* calls
* :github:`31609` - CoAP discovery response does not follow CoRE link format specification
* :github:`31599` - 64 bit race on timer counter in cavs_timer
* :github:`31584` - Twister: json reports generation takes too much time
* :github:`31582` - STM32F746ZG: No pwm signal output when running /tests/drivers/pwm/pwm_api
* :github:`31579` - sam_e70_xplained: running tests/subsys/logging/log_core failed
* :github:`31573` - Wrong log settings in can_stm32 driver
* :github:`31569` - lora: sx126x: interrupt pin permanently enabled
* :github:`31567` - lora: SX126x  modems consume excess power until used for first time
* :github:`31566` - up_squared: Couldn't get testcase log from console for all testcases.
* :github:`31562` - unexpected sign-extension in Kconfig linker symbols on 64-bit platforms
* :github:`31560` - Fix incorrect usage of default in dts bindings
* :github:`31555` - tests:drivers_can_api: mimxrt1060 can api test meet assert failure
* :github:`31551` - lorawan: setting datarate does not allow sending larger packets
* :github:`31549` - tests/kernel/lifo/lifo_usage/kernel.lifo.usage fails on m2gl025_miv
* :github:`31546` - DTS device dependency is shifting memory addresses between builds
* :github:`31543` - Documentation: Spelling
* :github:`31531` - STM32 can driver don't set prescaler
* :github:`31528` - introduction of demand paging support causing qemu failures on x86_64, qemu_x86_64_nokpti
* :github:`31524` - littlefs: Too small heap for file cache.
* :github:`31517` - UP² broken (git bisect findings inside)
* :github:`31511` - AArch32 exception exit routine behaves incorrectly on fatal exceptions
* :github:`31510` - Some drivers return invalid z_timer_cycle_get_32() value
* :github:`31508` - up_squared:  tests/kernel/sched/deadline/ failed.
* :github:`31505` - qemu_cortex_m0: Cmake build failure
* :github:`31504` - qemu_cortex_m0: Cmake build failure
* :github:`31502` - it8xxx2_evb should not define TICKLESS_CAPABLE
* :github:`31488` - build failure w/twister and SDK 0.12.1 related to
* :github:`31486` - make htmldocs-fast not working in development workspace
* :github:`31485` - west flash --runner=jlink  should raise error when CONFIG_BUILD_OUTPUT_BIN=n
* :github:`31472` - tests: kernel: poll: timeout with FPU enabled
* :github:`31467` - samples: bluetooth: peripheral_hids: Pairing fails on the nucleo_wb55rg board.
* :github:`31444` - Error in include/net/socket_select.h
* :github:`31439` - nrf5340dk_nrf5340_cpunet configuring incomplete
* :github:`31436` - compliance script broken
* :github:`31433` - samples/bluetooth/hci_pwr_ctrl stack overflow on nRF52DK_nRF52832
* :github:`31419` - tests/ztest/error_hook failed on ARC boards
* :github:`31414` - samples/net/mqtt_publisher link error: undefined reference to ``z_impl_sys_rand32_get``
* :github:`31400` - Extending ``zephyr,code-partition`` with ``zephyr,code-header-size``
* :github:`31386` - sam_e70b_xplained: running tests/drivers/watchdog/wdt_basic_api/ timeout for v1.14-branch
* :github:`31385` - ARC version of sys_read32 only reads uint16_t on Zephyr v2.4
* :github:`31379` - Update CAN-API Documentation
* :github:`31370` - Question about serial communication using virtual COM
* :github:`31362` - kconfiglib.py _save_old() may rename /dev/null -- replacing /dev/null with a file
* :github:`31358` -  ``west build`` might destroy your repository, as it is defaulting doing pristine.
* :github:`31344` - iotdk: running tests/ztest/error_hook/ failed
* :github:`31343` -  sam_e70_xplained: running tests/net/socket/af_packet/ failed
* :github:`31342` - sam_e70_xplained: running tests/net/ptp/clock/ failed
* :github:`31340` - sam_e70_xplained: running tests/subsys/logging/log_core/ failed
* :github:`31339` - nsim_em: running tests/ztest/error_hook/ failed
* :github:`31338` - mimxrt1050_evk: running tests/kernel/fpu_sharing/float_disable/ failed
* :github:`31333` - adding a periodic k_timer causes k_msleep to never return in tests/kernel/context
* :github:`31330` - Getting started guide outdated: Step 4 - Install a toolchain
* :github:`31327` - ci compliance failures due to intel_adsp_cavs25 sample
* :github:`31316` - Issue in UDP management for BG96
* :github:`31308` - Cannot set static address when using hci_usb or hci_uart on nRF5340 attached to Linux Host
* :github:`31301` - intel_adsp_cavs15: run kernel testcases failed.
* :github:`31289` - Problems building grub2 bootloader for Zephyr
* :github:`31285` - LOG resulting in incorrect output
* :github:`31282` - Kernel: Poll: Code Suspected Logic Problem
* :github:`31272` - CANOpen Sample compilation fails
* :github:`31262` - tests/kernel/threads/tls/kernel.threads.tls.userspace failing
* :github:`31259` - uart.h: Clarification required on uart_irq_tx_ready uart_irq_rx_ready
* :github:`31258` - watch dog (WWDT) timeout calculation for STM32 handles biggest timeout and rollover wrong
* :github:`31235` - Cortex-M: vector table relocation is incorrect with XIP=n
* :github:`31234` - twister: Add choice for tests sorting into subsets
* :github:`31226` - tests/drivers/dma/loop_transfer does not use ztest
* :github:`31219` - newlib printk float formatting not working
* :github:`31207` - Non-existent event in asynchronous UART API
* :github:`31206` - coap.c : encoding of options with lengths larger than 268 is not proper
* :github:`31203` - fatal error: setjmp.h: No such file or directory
* :github:`31194` - twister: using unsupported fixture without defined harness causes an infinite loop during on-target test execution
* :github:`31168` - Wrong linker option syntax for printf and scanf with float support
* :github:`31158` - Ethernet (ENC424J600) with dumb_http_server_mt demo does not work
* :github:`31153` - twister build of samples/audio/sof/sample.audio.sof fails on most platforms
* :github:`31145` - Litex-vexriscv address misaligned with dumb_http_server example
* :github:`31143` - samples: audio: sof: compilation issue, include file not found.
* :github:`31137` - Seems like the rule ".99 tag to signify major work started, minor+1 started " not used anymore ?
* :github:`31134` - LittleFS: Error Resizing the External QSPI NOR Flash in nRF52840dk
* :github:`31114` - Bluetooth: Which coding (S2 vs S8) is used during advertising on Coded PHY?
* :github:`31100` - Recvfrom not returning -1 if UDP and len is too small for packet.
* :github:`31091` - usb: usb_transfer_sync deadlocks on disconnect/cancel transfer
* :github:`31086` - bluetooth: Resume peripheral's advertising after disconnection when using new bt_le_ext_adv_* API
* :github:`31085` - networking / openthread: ipv6 mesh-local all-nodes multicast (ff03::1) packets are dropped by zephyr ipv6 stack
* :github:`31079` - Receiving extended scans on an Adafruit nRF 52840
* :github:`31071` - board: arm: SiliconLabs: add support to development kit efm32pg_stk3401a
* :github:`31069` - net: buf: remove data from end of buffer
* :github:`31067` - usb: cdc_acm: compilation error without UART
* :github:`31055` - nordic: west flash no longer supports changing ``CONFIG_GPIO_PINRESET`` when flashing
* :github:`31053` - LwM2M FOTA pull not working with modem (offloaded socket) driver using UART
* :github:`31044` - sample.bluetooth.peripheral_hr build fails on rv32m1_vega_ri5cy
* :github:`31110` - How can I overwrite west build in command?
* :github:`31028` - Cannot READ_BIT(RCC->CR, RCC_CR_PLL1RDY) on STM32H743 based board
* :github:`31027` - Google tests run twice
* :github:`31020` - CI build failed on intel_adsp_cavs18 when submitted a PR
* :github:`31019` - Bluetooth: Mesh: Thread competition leads to failure to open or close the scanning.
* :github:`31018` - up_squared: tests/kernel/pipe/pipe_api failed.
* :github:`31014` - Incorrect timing calculation in can_mcux_flexcan
* :github:`31008` - error: initializer element is not constant .attr = K_MEM_PARTITION_P_RX_U_RX
* :github:`30999` - updatehub with openthread build update pkg failed
* :github:`30997` - samples: net: sockets: echo_client: posix tls example
* :github:`30989` - driver : STM32 Ethernet : Pin definition for PH6
* :github:`30979` - up_squared_adsp: Twister can not capture testcases log correctly
* :github:`30972` - USB: SET_ADDRESS logic error
* :github:`30964` - Sleep calls are off on qemu_x86
* :github:`30961` - esp32 broken by devicetree device updates
* :github:`30955` - Bluetooth: userchan: k_sem_take failed with err -11
* :github:`30938` - samples/net/dhcpv4_client does not work with sam_e70_xplained
* :github:`30935` - tests: net: sockets: tcp: add a tls tests
* :github:`30921` - west flash failed with an open ocd error
* :github:`30918` - up_squared:  tests/kernel/mem_protect/mem_protect failed.
* :github:`30893` - Remove LEGACY_TIMEOUT_API
* :github:`30872` - Convert Intel GNA driver to devicetree
* :github:`30871` - "warning: compound assignment with 'volatile'-qualified left operand is deprecated" when building with C++20
* :github:`30870` - Convert Intel DMIC to devicetree
* :github:`30869` - Convert designware PWM driver to devicetree
* :github:`30862` - Nordic system timer driver incompatible with LEGACY_TIMEOUT_API
* :github:`30860` - legacy timeout ticks mishandled
* :github:`30857` - SDRAM not working on STM32H747I-DISCO
* :github:`30850` - iotdk: couldn't flash image into iotdk board using west flash.
* :github:`30846` - devicetree: unspecified phandle-array elements cause errors
* :github:`30822` - designator order for field 'zcan_filter::rtr' does not match declaration order in 'const zcan_filter'
* :github:`30819` - twister: --generate-hardware-map crashes and deletes map
* :github:`30810` - tests: kernel: kernel.threads.armv8m_mpu_stack_guard fails on nrf9160dk
* :github:`30809` - new testcase is failing after 3f134877 on mec1501modular_assy6885
* :github:`30808` - Blueooth: Controller Response COMMAND DISALLOWED
* :github:`30805` - Build error at tests/kernel/queue in mec15xxevb_assy6853(qemu) platform
* :github:`30800` - STM32 usb clock from PLLSAI1
* :github:`30792` - Cannot build network echo_server for nucleo_f767zi
* :github:`30752` - ARC: passed tests marked as failed when running sanitycheck on nsim_* platforms
* :github:`30750` - Convert i2s_cavs to devicetree
* :github:`30736` - Deadlock with usb_transfer_sync()
* :github:`30730` - tests: nrf: Tests in tests/drivers/timer/nrf_rtc_timer are flaky
* :github:`30723` - libc: malloc() returns unaligned pointer, causes CPU exception
* :github:`30713` - doc: "Variable ZEPHYR_TOOLCHAIN_VARIANT is not defined"
* :github:`30712` - "make zephyr_generated_headers" regressed again - ";" separator for Z_CFLAGS instead of spaces
* :github:`30705` - STM32 PWM driver generates signal with wrong frequency on STM32G4
* :github:`30702` - Shell module broken on LiteX/VexRiscv after release zephyr-v2.1.0
* :github:`30698` - OpenThread Kconfigs should more closely follow Zephyr Kconfig recommendations
* :github:`30688` - Using openthread based  lwm2m_client cannot ping the external network address unless reset once
* :github:`30686` - getaddrinfo() does not respect socket type
* :github:`30685` - reel_board: tests/kernel/fatal/exception/ failure
* :github:`30683` - intel_adsp_cavs15:running tests/kernel/sched/schedule_api failed
* :github:`30679` - puncover  worst-case stack analysis does not work
* :github:`30673` - cmake: zephyr_module.cmake included before ZEPHYR_EXTRA_MODULES is evaluated
* :github:`30663` - Support for TI's TMP117 Temperature Sensor.
* :github:`30657` - BT Mesh: Friendship ends if LPN publishes to a VA it is subscribed to
* :github:`30651` - sanitycheck samples/video/capture/sample.video.capture fails to build on mimxrt1064_evk
* :github:`30649` - Trouble with gpio callback on frdm k64f
* :github:`30638` - nrf pwm broken
* :github:`30636` - TCP stack locks irq's for too long
* :github:`30634` - frdm_kw41z: Current master fails compilation in drivers/pwm/pwm_mcux_tpm.c
* :github:`30624` - BLE : ATT Timeout occurred during multilink central connection
* :github:`30591` - build RAM usage printout uses prebuilt and not final binary
* :github:`30582` - Doxygen doesn't catch errors in argument names in callback functions that are @typedef'd
* :github:`30574` - up_squared: tests/kernel/semaphore/semaphore failed.
* :github:`30573` - up_squared: slowdown on test execution and timing out on multiple tests
* :github:`30566` - flashing issue with ST Nucleo board H745ZI-Q
* :github:`30557` - i2c slave driver removed
* :github:`30554` - tests/kernel/fatal/exception/sentinel test is failing for various nrf platforms
* :github:`30553` - kconfig.py exits with error when using multiple shields
* :github:`30548` - reel_board: tests/net/ieee802154/l2/ build failure
* :github:`30547` - reel_board: tests/net/ieee802154/fragment/ build failure
* :github:`30546` - LwM2M Execute arguments currently not supported
* :github:`30541` - l2m2m: writing to resources with pre_write callback fails
* :github:`30531` - When using ccache, compiler identity stored in ToolchainCapabilityDatabase is always the same
* :github:`30526` - tests: drivers: timer: Tests from drivers.timer.nrf_rtc_timer.basic fail on all nrf platforms
* :github:`30517` - Interrupt nesting is broken on ARMv7-R / LR_svc corrupted.
* :github:`30514` - reel_board: tests/benchmarks/sys_kernel/ fails
* :github:`30513` - reel_board: tests/benchmarks/latency_measure/ fails
* :github:`30509` - k_timer_remaining_get returns incorrect value on long timers
* :github:`30507` - nrf52_bsim fails on some tests after merging 29810
* :github:`30488` - Bluetooth: controller: swi.h should use CONFIG_SOC_NRF5340_CPUNET define
* :github:`30486` - updatehub demo for nrf52840dk
* :github:`30483` - Sanitycheck: When platform is nsim_hs_smp, process "west flash"  become defunct, the grandchild "cld" process can't be killed
* :github:`30480` - Bluetooth: Controller: Advertising can only be started 2^16 times
* :github:`30477` - frdm_k64f: testcase  samples/subsys/canbus/canopen/ failed to be ran
* :github:`30476` - frdm_k64f: testcase samples/net/cloud/tagoio_http_post/ failed to be ran
* :github:`30475` - frdm_k64f: testcase tests/kernel/fatal/exception/ failed to be ran
* :github:`30473` - mimxrt1050_evk: testcase tests/kernel/fatal/exception/ failed to be ran
* :github:`30472` - sam_e70_xplained: the samples/net/civetweb/http_server/. waits for interface unitl timeout
* :github:`30470` - sam_e70_xplained: tesecase tests/subsys/log_core failed to run
* :github:`30468` - mesh: cfg_svr.c app_key_del passes an incorrect parameter
* :github:`30467` - replace device define macros with devicetree-based macro
* :github:`30446` - fxas21002 gyroscope reading is in deg/s
* :github:`30435` - NRFX_CLOCK_EVT_HFCLKAUDIO_STARTED not handled in clock_control_nrf.c
* :github:`30434` - Memory map executing test case failed when code coverage enabled in x86_64 platform
* :github:`30433` - zephyr client automatic joiner failed on nRF52840dk
* :github:`30432` - No network interface was found when running socketcan sample
* :github:`30426` - Enforce all checkpatch warnings and move to 100 characters per line
* :github:`30423` - Devicetree: Child node of node on SPI bus itself needs reg property - Bug?
* :github:`30418` - Logging: Using asserts with LOG in high pri ISR context blocks output
* :github:`30408` - tests/kernel/sched/schedule_api is failing after 0875740 on m2gl025_miv
* :github:`30397` - tests:latency_measure is not counting semaphore results on the ARM boards
* :github:`30394` - TLS tests failing with sanitycheck (under load)
* :github:`30393` - kernel.threads.tls.userspace fails with SDK 0.12.0-beta on ARM Cortex-M
* :github:`30386` - Building confirmed images does not work
* :github:`30384` - Scheduler doesn't activate sleeping threads on native_posix
* :github:`30380` - Improve the use of CONFIG_KERNEL_COHERENCE
* :github:`30378` - Bluetooth: controller: tx buffer overflow error
* :github:`30364` - TCP2 does not implement queing for incoming packets
* :github:`30362` - adc_read_async callback parameters are dereferenced pointers, making use of CONTAINER_OF impossible
* :github:`30360` - reproducible qemu_x86_64 SMP failures
* :github:`30356` - DAC header file not included in stm32 soc.h
* :github:`30354` - Regression with 'local-mac-address' enet DTS property parsing (on i.MX K6x)
* :github:`30349` - Memory protection unit fault when running socket CAN program
* :github:`30344` - Bluetooth: host: Add support for multiple advertising sets for legacy advertising
* :github:`30338` - BT Mesh LPN max. poll timeout calculated incorrectly
* :github:`30330` - tests/subsys/usb/bos/usb.bos fails with native_posix and llvm/clang
* :github:`30328` - Openthread build issues with clang/llvm
* :github:`30322` - tests: benchmarks: latency_measure: timing measurement values are all 0
* :github:`30316` - updatehub with openthread
* :github:`30315` - Build failure: zephyr/include/generated/devicetree_unfixed.h:627:29: error: 'DT_N_S_leds_S_led_0_P_gpios_IDX_0_PH_P_label' undeclared
* :github:`30308` - Add optional user data field to device structure
* :github:`30307` - up_squared:  tests/kernel/device/ failed.
* :github:`30306` - up_squared: tests/kernel/mem_protect/userspace failed.
* :github:`30305` - up_squared:  tests/kernel/mem_protect/mem_protect failed.
* :github:`30304` - NRF52832 consumption too high 220uA
* :github:`30298` - regression/change in master: formatting floats and doubles
* :github:`30276` - Sanitycheck: can't find mdb.pid
* :github:`30275` - up_squared: tests/kernel/common failed (timeout error)
* :github:`30261` - File no longer at this location
* :github:`30257` - test: kernel: Test kernel.common.stack_protection_arm_fpu_sharing.fatal fails on nrf52 platforms
* :github:`30253` - tests: kernel: Test kernel.memory_protection.gap_filling fails on nrf5340dk_nrf5340_cpuapp
* :github:`30372` - WEST Support clean build
* :github:`30373` - out of tree （board soc doc subsystem ...)
* :github:`30240` - Bluetooth: Mesh: PTS Test failed in friend node
* :github:`30235` - MbedTLS X509 certificate not parsing
* :github:`30232` - CMake 3.19 doesn't work with Zephyr (tracking issue w/upstream CMake)
* :github:`30230` - printk and power management incompatibility
* :github:`30229` - BinaryHandler has no pid file
* :github:`30224` - stm32f4_disco: User button press is inverted
* :github:`30222` - boards: arm: nucleo_wb55rg: fails to build basic samples
* :github:`30219` - drivers: gpio: gpio_cc13xx_cc26xx: Add drive strength configurability
* :github:`30213` - usb: tests: Test usb.device.usb.device.usb_disable fails on nrf52840dk_nrf52840
* :github:`30211` - spi nor sfdp runtime: nph offset
* :github:`30207` - Mesh_demo with a nRF52840 not working
* :github:`30205` - Missing error check of function i2c_write_read() and dac_write_value()
* :github:`30194` - qemu_x86 crashes when printing floating point.
* :github:`30193` - reel_board: running tests/subsys/power/power_mgmt_soc failed
* :github:`30191` - Missing checks of return values of settings_runtime_set()
* :github:`30189` - Missing error check of function sensor_trigger_set()
* :github:`30187` - usb: stm32: MCU fall in deadlock when calling sleep API during USB transfer
* :github:`30183` - undefined reference to ``ring_buf_item_put``
* :github:`30179` - out of tree （board soc doc subsystem ...）
* :github:`30178` - Is there any plan to support NXP RT600 HIFI4 DSP in the zephyr project?
* :github:`30173` - OpenThread SED cannot join the network after "Update nRF5 ieee802154 driver to v1.9"
* :github:`30157` - SW based BLE Link Layer Random Advertise delay not as expected
* :github:`30153` - BSD recv() can not received huge package(may be 100kB) sustain .
* :github:`30148` - STM32G474: Write to flash Bank 2 address 0x08040000 does not work in 256K flash version
* :github:`30141` - qemu_x86 unexpected thread behavior
* :github:`30137` - TCP2: Handling of RST flag from server makes poll() call unable to return indefinitely
* :github:`30135` - LWM2M: Firmware URI writing does not work anymore
* :github:`30134` - tests: drivers: uart: Tests from tests/drivers/uart/uart_mix_fifo_poll fails on nrf platforms
* :github:`30133` - sensor: driver: lis2dh interrupt definitions
* :github:`30130` - nrf_radio_power_set() should use bool
* :github:`30129` - TCP2 send test
* :github:`30126` - xtensa-asm2-util.s hard coding
* :github:`30120` - sanitycheck fails for tests/bluetooth/init/bluetooth.init.test_ctlr_per_sync
* :github:`30117` - Cannot compile Zephyr project with standard macros INT8_C, UINT8_C, UINT16_C
* :github:`30106` - Refactor zcan_frame.
* :github:`30100` - twister test case selection numbers don't make any sense
* :github:`30099` - sanitycheck --build-only gets stuck
* :github:`30098` - > very few are even tested with CONFIG_NO_OPTIMIZATIONS. What is the general consensus about this?
* :github:`30094` - tests: kernel: fpu_sharing: Tests in tests/kernel/fpu_sharing fail on nrf platforms
* :github:`30075` - dfu: mcuboot: fail to build with CONFIG_BOOTLOADER_MCUBOOT=n and CONFIG_IMG_MANAGER=y
* :github:`30072` - tests/net/socket/socketpair appears to mis-use work queue APIs
* :github:`30066` - CI test build with RAM overflow
* :github:`30057` - LLVM built application crash
* :github:`30037` - Documentation: Fix getting started guide for macOS around homebrew install
* :github:`30031` - stm32f4 usb - bulk in endpoint does not work
* :github:`30029` - samples: net: cloud: tagoio_http_post: Undefined initialization levels used.
* :github:`30028` - sam_e70_xplained: MPU fault with CONFIG_NO_OPTIMIZATIONS=y
* :github:`30027` - sanitycheck failures on ``tests/bluetooth/init/bluetooth.init.test_ctlr_peripheral_ext``
* :github:`30022` - The mailbox message.info in the receiver thread is not updated.
* :github:`30014` - STM32F411RE PWM support
* :github:`30010` - util or toolchain: functions for reversing bits
* :github:`29999` - nrf52840 Slave mode is not supported on SPI_0
* :github:`29997` - format specifies type 'unsigned short' but the argument has type 'int' error in network stack
* :github:`29995` - Bluetooth: l2cap: L2CAP/LE/REJ/BI-02-C test failure
* :github:`29994` - High bluetooth ISR latency with CONFIG_BT_MAX_CONN=2
* :github:`29992` - dma tests fail with stm32wb55 and stm32l476  nucleo boards
* :github:`29991` - Watchdog Example not working as expected on a Nordic chip
* :github:`29977` - nrf9160: use 32Mhz HFCLK
* :github:`29969` - sanitycheck fails on tests/benchmarks/latency_measure/benchmark.kernel.latency
* :github:`29968` - sanitycheck fails a number of bluetooth tests on NRF
* :github:`29967` - sanitycheck fails to build samples/bluetooth/peripheral_hr/sample.bluetooth.peripheral_hr_rv32m1_vega_ri5cy
* :github:`29964` - net: lwm2m: Correctly Support Bootstrap-Delete Operation
* :github:`29963` - RFC: dfu/boot/mcuboot: consider usage of boootloader/mcuboot code
* :github:`29961` - Add i2c driver tests for microchip evaluation board
* :github:`29960` - Checkpatch compliance errors do not fail CI
* :github:`29958` - mcuboot hangs when CONFIG_BOOT_SERIAL_DETECT_PORT value not found
* :github:`29957` - BLE Notifications limited to 1 per connection event on Zephyr v2.4.0 Central
* :github:`29954` - intel_adsp_cavs18 fails with heap errors on current Zephyr
* :github:`29953` - Add the sofproject as a module
* :github:`29951` - ieee802154: cc13xx_cc26xx: raw mode support
* :github:`29945` - Missing error check of function sensor_sample_fetch() and sensor_channel_get()
* :github:`29943` - Missing error check of function isotp_send()
* :github:`29937` - XCC Build offsets.c ：FAILED
* :github:`29936` - XCC Build isr_tables.c fail
* :github:`29925` - pinctrl error for disco_l475_iot1 board:
* :github:`29921` - USB DFU with nrf52840dk (PCA10056)
* :github:`29916` - ARC: tests fail on nsim_hs with one register bank
* :github:`29913` - Question : Bluetooth mesh using long range
* :github:`29908` - devicetree: Allow all GPIO flags to be used by devicetree
* :github:`29896` - new documentation build warning
* :github:`29891` - mcumgr image upload (with smp_svr) does not work over serial/shell on the nrf52840dk
* :github:`29884` - x_nucleo_iks01a2 device tree overlay issue with stm32mp157c_dk2 board
* :github:`29883` - drivers: ieee802154: cc13xx_cc26xx: use multi-protocol radio patch
* :github:`29879` - samples/net/gptp compile failed on frdm_k64f board in origin/master (work well in origin/v2.4-branch)
* :github:`29877` - WS2812 SPI LED strip driver produces bad SPI data
* :github:`29869` - Missing error check of function entropy_get_entropy()
* :github:`29868` - Bluetooth: Mesh: DST not checked on send
* :github:`29858` - [v1.14, v2.4] Bluetooth: Mesh: RPL cleared on LPN disconnect
* :github:`29855` - Bluetooth: Mesh: TTL max not checked on send
* :github:`29853` - multiple PRs fail doc checks
* :github:`29842` - 'imgtool' absent in requirements.txt
* :github:`29833` - Test DT_INST_PROP_HAS_IDX() inside the macros for multi instances
* :github:`29831` - flash support for stm32h7 SoC
* :github:`29829` - On-PR CI needs to build a subset of tests for a subset of platforms regardless of the scope of the PR changes
* :github:`29826` - SNTP doesn't work on v2.4.0 on eswifi
* :github:`29822` - Redundant error check of function usb_set_config() in subsys/usb/class/usb_dfu.c
* :github:`29809` - gen_isr_tables.py does not check that the IRQ number is in bounds
* :github:`29805` - SimpleLink does not compile (simplelink_sockets.c)
* :github:`29796` - Zephyr API for writing to flash for STM32G474 doesn't work as expected
* :github:`29793` - Ninja generated error when setting PCAP option in west
* :github:`29791` - spi stm32 dma: spi
* :github:`29790` - The zephyr-app-commands macro does not honor :generator: option
* :github:`29782` - smp_svr: Flashing zephyr.signed.bin does not seem to work on nrf52840dk
* :github:`29780` - nRF SDK hci_usb sample disconnects after 40 seconds with extended connection via coded PHY
* :github:`29776` - Check vector number and pointer to ISR in "_isr_wrapper" routine for aarch64
* :github:`29775` - TCP socket stream
* :github:`29773` - sam_e70_xplained: running samples/net/sockets/civetweb/ failed
* :github:`29772` - sam_e70_xplained:running testcase tests/subsys/logging/log_core failed
* :github:`29771` - samples: net: sockets: tcp: tcp2 server not accepting with ipv6 bsd sockets
* :github:`29769` - mimxrt1050_evk: build error at tests/subsys/usb/device/
* :github:`29762` - nRF53 Network core cannot start LFClk when using empty_app_core
* :github:`29758` - edtlib not reporting proper matching_compat for led nodes (and other children nodes)
* :github:`29740` - OTA using Thread
* :github:`29737` - up_squared: tests/subsys/power/power_mgmt failed.
* :github:`29733` - SAM0 will wake up with interrupted execution after deep sleep
* :github:`29732` - issue with ST Nucleo H743ZI2
* :github:`29730` - drivers/pcie: In Kernel Mode pcie_conf_read crashes when used with newlib
* :github:`29722` - West flash is not able to flash with openocd
* :github:`29721` - drivers/sensor/lsm6dsl: assertion/UB during interrupt handling
* :github:`29720` - samples/display/lvgl/sample.gui.lvgl fails to build on several boards
* :github:`29716` - Dependency between userspace and memory protection features
* :github:`29713` - nRF5340 - duplicate unit-address
* :github:`29711` - Add BSD socket option SO_RCVTIMEO
* :github:`29710` - drivers: usb_dc_mcux_ehci: driver broken, build error at all USB test and samples
* :github:`29707` - xtensa  xt-xcc -Wno-unused-but-set-variable  not work
* :github:`29706` - xtensa xt-xcc inline warning
* :github:`29705` - reel_board: tests/kernel/sched/schedule_api/ fails on multiple boards
* :github:`29704` - [Coverity CID :215255] Dereference before null check in tests/subsys/fs/fs_api/src/test_fs.c
* :github:`29703` - [Coverity CID :215261] Explicit null dereferenced in subsys/emul/emul_bmi160.c
* :github:`29702` - [Coverity CID :215232] Dereference after null check in subsys/emul/emul_bmi160.c
* :github:`29701` - [Coverity CID :215226] Logically dead code in soc/xtensa/intel_adsp/common/bootloader/boot_loader.c
* :github:`29700` - [Coverity CID :215253] Unintentional integer overflow in drivers/timer/stm32_lptim_timer.c
* :github:`29699` - [Coverity CID :215249] Unused value in drivers/modem/ublox-sara-r4.c
* :github:`29698` - [Coverity CID :215248] Dereference after null check in drivers/modem/hl7800.c
* :github:`29697` - [Coverity CID :215243] Unintentional integer overflow in drivers/timer/stm32_lptim_timer.c
* :github:`29696` - [Coverity CID :215241] Buffer not null terminated in drivers/modem/hl7800.c
* :github:`29695` - [Coverity CID :215235] Dereference after null check in drivers/modem/hl7800.c
* :github:`29694` - [Coverity CID :215233] Logically dead code in drivers/modem/hl7800.c
* :github:`29693` - [Coverity CID :215224] Parse warning in drivers/modem/hl7800.c
* :github:`29692` - [Coverity CID :215221] Unchecked return value in drivers/regulator/regulator_fixed.c
* :github:`29690` - NUCLEO-H745ZI-Q + OpenOCD - connect under reset
* :github:`29684` - Can not make multiple BLE IPSP connection to the same host
* :github:`29683` - BLE IPSP sample doesn't work on raspberry pi 4 with nrf52840_mdk board
* :github:`29681` - Add NUCLEO-H723ZG board support
* :github:`29677` - stm32h747i_disco add ethernet support
* :github:`29675` - Remove pinmux dependency on STM32 boards
* :github:`29667` - RTT Tracing is not working using NXP mimxrt1064_evk
* :github:`29657` - enc28j60 on nRF52840 stalls during enc28j60_init_buffers in zephyr 2.4.0
* :github:`29654` - k_heap APIs have no tests
* :github:`29649` - net: context: add net_context api to check if a port is bound
* :github:`29639` - Bluetooth: host: Security procedure failure can terminate GATT client request
* :github:`29637` - 5g is microwave and 4LTE is radio or static?
* :github:`29636` - Bluetooth: Controller: Connection Parameter Update indication timeout
* :github:`29634` - Build error: (Bluetooth: Mesh: split prov.c into two separate modules #28457)
* :github:`29632` - GPIO interrupt support for IO expander
* :github:`29631` - kernel: provide aligned variant of k_heap_alloc
* :github:`29629` - Creating a k_thread as runtime instantiated kernel object using k_malloc causes general protection fault
* :github:`29616` - Lorawan subsystem stack: missing MLE_JOIN parameter set
* :github:`29611` - usb/class/dfu: void wait_for_usb_dfu() terminates before DFU operation is completed
* :github:`29608` - question: create runtime instantiated kernel objects in kernel mode
* :github:`29594` - x86_64: RBX being clobbered in the idle thread
* :github:`29590` - ARM: FPU: using Unshared FP Services mode can still result in corrupted floating point registers
* :github:`29589` - Creating a k_thread and k_sem as runtime instantiated kernel object causes general protection fault
* :github:`29574` - question: about CONFIG_NET_BUF_POOL_USAGE
* :github:`29567` - Using openthread based echo_client and lwm2m_client cannot ping the external network address
* :github:`29549` - doc: Zephyr module feature ``depends`` not documented.
* :github:`29544` - Bluetooth: Mesh: Friend node unable relay message for lpn
* :github:`29541` - CONFIG_THREAD_LOCAL_STORAGE=y build fails with ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
* :github:`29538` - eswifi recvfrom() not properly implemented on disco_l475_iot1
* :github:`29534` - reel_board:running tests/kernel/workq/work_queue_api/ failed
* :github:`29533` - mec15xxevb_assy6853:running testcase tests/kernel/workq/work_queue_api/ failed.
* :github:`29532` - mec15xxevb_assy6853:running testcase tests/portability/cmsis_rtos_v2/ failed.
* :github:`29530` - display: nrf52840: adafruit_2_8_tft_touch_v2 shield not working with nrf-spim driver
* :github:`29519` - kernel: provide aligned variants for allocators
* :github:`29518` - sleep in qemu to short
* :github:`29499` - x86 thread stack guards persist after thread exit
* :github:`29497` - Warning in CR2
* :github:`29491` - usb: web USB sample fails Chapter9 USB3CV tests.
* :github:`29478` - fs: fs_open can corrupt fs_open_t object given via zfp parameter
* :github:`29468` - usb: ZEPHYR FATAL ERROR when running USB test for Nordic.
* :github:`29467` - nrf_qspi_nor.c Incorrect value used for checking start of RAM address space
* :github:`29446` - pwm: stm32: output signal delayed
* :github:`29444` - Network deadlock
* :github:`29442` - build failure w/sanitycheck for samples/bluetooth/hci_usb_h4/sample.bluetooth.hci_usb_h4
* :github:`29440` - Missing hw-flow-control; in hci_uart overlay files
* :github:`29435` - SDCard via SD/SDIO/MMC interfaces
* :github:`29430` - up_squared_adsp: Sanitycheck can not run test case on Up_Squared_ADSP board
* :github:`29429` - net: dns: enable dns service discovery for mdns service
* :github:`29418` - ieee802154: cc13xx_cc26xx: bug in rf driver library
* :github:`29412` - sanitycheck: skipped tests marked as failed due to the reason SKIPPED (SRAM overflow)
* :github:`29398` - ICMPv6 error sent with incorrect link layer addresses
* :github:`29386` - unexpected behavior when doing syscall with 7 or more arguments
* :github:`29382` - remove memory domain restriction on system RAM for memory partitions on MMU devices
* :github:`29376` - sanitycheck: "TypeError: 'NoneType' object is not iterable"
* :github:`29373` - Some altera DTS bindings have the wrong vendor prefix
* :github:`29368` - STM32: non F1 -pinctrl.dtsi generation files: Limit mode to variants
* :github:`29367` - usb: drivers: add USB support for UP squared
* :github:`29364` - cdc_acm_composite fails USB3CV test for Nordic platform.
* :github:`29363` - shell: inability to print 64-bit integers with newlib support
* :github:`29357` - RFC: API Change: Bluetooth: Update indication callback parameters
* :github:`29347` - Network deadlock because of mutex locking order
* :github:`29346` - west boards doesn't display the arcitecture.
* :github:`29330` - mec15xxevb_assy6853:running samples/boards/mec15xxevb_assy6853/power_management Sleep entry latency is higher than expected
* :github:`29329` - tests: kernel.workqueue.api tests fail on multiple platforms
* :github:`29328` - mec15xxevb_assy6853:running tests/kernel/workq/work_queue_api/ failed
* :github:`29327` - mec15xxevb_assy6853:region ``SRAM`` overflowed during build
* :github:`29319` - up_squared:  tests/kernel/timer/timer_api failed.
* :github:`29317` - mimxrt1015: kernel_threads_sched: application meet size issue
* :github:`29315` - twr_kv58f220m: all application build failure
* :github:`29312` - [RFC] [BOSSA] Improve offset parameter
* :github:`29310` - ble central Repeat read and write to three peripherals error USAGE FAULT
* :github:`29309` - ADC1 doesn't read correctly on STM32F7
* :github:`29308` - GPIO bit banging i2c init before gpio clock init in stm32f401 plantform,cause same gpio can't work.
* :github:`29307` - samples/bluetooth/mesh-demo unable to send vendor button message
* :github:`29300` - K_THREAD_DEFINE() uses const in a wrong way
* :github:`29298` - xlnx_psttc_timer driver has an imprecise z_clock_set_timeout() implementation
* :github:`29287` - spi: SPI_LOCK_ON does not hold the lock for multiple spi_transceive until spi_release
* :github:`29284` - compilation issues for MinnowBoard/ UpSquared on documentation examples
* :github:`29283` - quickfeather not listed in boards
* :github:`29274` - Can't get Coded PHY type(S2 or S8)
* :github:`29272` - nordic qspi: readoc / writeoc selection may not work
* :github:`29263` - tests/kernel/mem_protect/obj_validation fails build on some boards after recent changes
* :github:`29261` - boards: musca_b1: post build actions with TF-M might not be done in right order
* :github:`29259` - sanitycheck: sanitycheck defines test expected to fail as FAILED
* :github:`29258` - net: Unable to establish TCP connections from Windows hosts
* :github:`29257` - Race condition in k_queue_append and k_queue_alloc_append
* :github:`29248` - board: nrf52840_mdk: support for qspi flash missing
* :github:`29244` - k_thread_resume can cause k_sem_take with K_FOREVER to return -EAGAIN and crash
* :github:`29239` - i2c: mcux driver does not prevent simultaneous transactions
* :github:`29235` - Endless build loop after adding pinctrl dtsi
* :github:`29223` - BLE one central connect multiple peripherals
* :github:`29220` - ARC: tickless idle exit code destroy exception status
* :github:`29202` - core kernel depends on minimal libc ``z_prf()``
* :github:`29195` - west fails with custom manifest
* :github:`29194` - Sanitycheck block after passing some test
* :github:`29183` - DHCPv4 retransmission interval gets too large
* :github:`29175` - x86 fails all tests if CONFIG_X86_KPTI is disabled
* :github:`29173` - uart_nrfx_uart fails uart_async_api_test
* :github:`29166` - sanitycheck ``--test-only --device-testing --hardware-map`` shouldn't run tests on all boards from ``--build-only``
* :github:`29165` - shell_print doesn't support anymore %llx when used with newlib
* :github:`29164` - net: accept() doesn't return an immediately usable descriptor
* :github:`29162` - Data Access Violation when LOG_* is called on ISR context
* :github:`29155` - CAN BUS support on Atmel V71
* :github:`29150` - CONFIG_BT_SETTINGS_CCC_LAZY_LOADING never loads CCC
* :github:`29148` - MPU: twr_ke18f: many kernel application fails when allocate dynamic MPU region
* :github:`29146` - canisotp: mimxrt1064_evk: no DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL defined cause tests failure
* :github:`29145` - net: frdmk64f many net related applications meet hardfault, hal driver assert
* :github:`29139` - tests/kernel/fatal/exception failed on nsim_sem_mpu_stack_guard board
* :github:`29120` - STM32: Few issues on pinctrl generation script
* :github:`29113` - Build failure with OSPD
* :github:`29111` - Atmel SAM V71 UART_0 fail
* :github:`29109` - HAL STM32 Missing ETH pin control configurations in DT files
* :github:`29101` - Bluetooth: assertion fail with basic repeated extended advertisement API
* :github:`29099` - net: dns: dns-sd: support for dns service discovery
* :github:`29098` - ATT timeout worker not canceled by destroy, and may operate on disposed object
* :github:`29095` - zefi.py has incorrect assertions
* :github:`29092` - tests/drivers/uart/uart_async_api fails on nrf52840dk_nrf52840 (and additional platforms)
* :github:`29089` - doc: boards: cc1352r_sensortag: fix minor rst issue
* :github:`29083` - Bluetooth: Host: Inconsistent permission value during discovery procedure
* :github:`29078` - nRF52840 doesn't start legacy advertisment after extended advertisment
* :github:`29074` - #27901 breaks mikroe_* shields overlay
* :github:`29070` - NXP LPC GPIO driver masked set does not use the mask
* :github:`29068` - chosen zephyr,code-partition has no effect on ELF linking start address
* :github:`29066` - kernel: k_sleep doesn't handle relative or absolute timeouts >INT_MAX
* :github:`29062` - samples/bluetooth/peripheral_hr/sample.bluetooth.peripheral_hr_rv32m1_vega_ri5cy fails to build on  rv32m1_vega_ri5cy
* :github:`29059` - HAL: mchp: Missing PCR ids to control PM for certain HW blocks
* :github:`29056` - tests/bluetooth/init/bluetooth.init.test_ctlr_dbg fails to build on nrf51dk_nrf51422
* :github:`29050` - Ugrade lvgl library
* :github:`29048` - Removing pwr-gpio of rt1052 from devicetree will cause build error
* :github:`29047` - Boards: nucleo_stm32g474re does not build
* :github:`29043` - dirvers: eth_stm32_hal: No interrupt is generated on the MII interface.
* :github:`29042` - CONFIG_SHELL_HELP=n fails to compile
* :github:`29034` - error in samples/subsys/usb/cdc_acm
* :github:`29025` - [Coverity CID :214882] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29024` - [Coverity CID :214878] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29023` - [Coverity CID :214877] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29022` - [Coverity CID :214876] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29021` - [Coverity CID :214874] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29020` - [Coverity CID :214873] Argument cannot be negative in tests/posix/eventfd/src/main.c
* :github:`29019` - [Coverity CID :214871] Side effect in assertion in tests/kernel/sched/preempt/src/main.c
* :github:`29018` - [Coverity CID :214881] Unchecked return value in subsys/mgmt/ec_host_cmd/ec_host_cmd_handler.c
* :github:`29017` - [Coverity CID :214879] Explicit null dereferenced in subsys/emul/spi/emul_bmi160.c
* :github:`29016` - [Coverity CID :214875] Dereference after null check in subsys/emul/spi/emul_bmi160.c
* :github:`29015` - [Coverity CID :214880] Out-of-bounds access in subsys/net/ip/tcp2.c
* :github:`29014` - [Coverity CID :214872] Bad bit shift operation in drivers/ethernet/eth_w5500.c
* :github:`29008` - BLE Connection fails to establish between two nRF52840-USB Dongles with Zephyr controller
* :github:`29007` - OOT manifest+module discovery/builds fail
* :github:`29003` - memory corruption in pkt_alloc
* :github:`28999` - STM32: Transition to device tree based pinctrl configuration
* :github:`28990` - Docs: Dead links to sample source directories
* :github:`28979` - Automatic reviewer assignment for PR does not seem to work anymore
* :github:`28976` - sanitycheck failing all tests for nsim_em7d_v22
* :github:`28970` - clarify thread life-cycle documentation
* :github:`28956` - API-less devices aren't findable
* :github:`28955` - undesired kernel debug log
* :github:`28953` - winc1500 driver blocks on listen
* :github:`28948` - hci_usb: ACL transfer not restarted after USB Suspend - Resume
* :github:`28942` - ARC: nsim_hs_smp: huge zephyr.hex file generated on build
* :github:`28941` - Civetweb: create separate directory
* :github:`28938` - EFR32BGx Bluetooth Support
* :github:`28935` - support code coverage in unit tests
* :github:`28934` - pinmux: stm32: port remaining pinctrl DT serial definitions for STM32 based boards
* :github:`28933` - mcuboot: Brick when using BOOT_SWAP_USING_MOVE and reset happens during images swap
* :github:`28925` - west failed due to empty value in self.path
* :github:`28921` - MCUboot / smp_svr sample broken in 2.4.0
* :github:`28916` - net_if_down doesn't clear address
* :github:`28912` - Incorrect macro being used to init a sflist
* :github:`28908` - The same buffers are shared by the 2 Ethernet controllers in the eth_mcux driver
* :github:`28898` - lwm2m_client can't start if mcuboot is enabled
* :github:`28897` - SPI does not work for STM32 min dev board
* :github:`28893` - Double-dot in path's may cause problems with gcc under Windows
* :github:`28887` - Bluetooth encryption request overrides ongoing phy update
* :github:`28881` - tests/kernel/mem_protect/sys_sem: qemu_x86_64 intermittent failure
* :github:`28876` - -p doesn't run a pristine build
* :github:`28872` - Support ESP32 as Bluetooth controller
* :github:`28870` - Peripheral initiated connection parameter update is ignored
* :github:`28867` - ARM Cortex-M4: Semaphores could not be used in ISRs with priority 0?
* :github:`28865` - Doc: Generate documentation using dts bindings
* :github:`28854` - ``CONFIG_STACK_POINTER_RANDOM`` may be undefined
* :github:`28847` - code_relocation sample does not work on windows
* :github:`28844` - Double quote prepended when exporting CMAKE compile option using zephyr_get_compile_options_for_lang()
* :github:`28833` - STM32: SPI DMA Driver - HW CS handling not compatible with spi_nor (Winbond W25Q)
* :github:`28826` - nRF QSPI flash driver broken for GD25Q16
* :github:`28822` - Improve STM32 LL HAL usage
* :github:`28809` - Enable bt_gatt_notify() to overwrite notified value before sending rather than queue values
* :github:`28794` - RFC: API Change: k_work
* :github:`28791` - STM32: Clock recovery system (CRS) support
* :github:`28787` - lwm2m-client sample can't be build with openthread and DTLS
* :github:`28785` - shell: It should be possible to get list of commands without pressing tab
* :github:`28777` - Memory pool issue
* :github:`28775` - Update to TFM v1.2 release
* :github:`28774` - build failure: several bluetooth samples fail to build on nrf51dk_nrf51422
* :github:`28773` - Lower Link Layer code use upper link layer function have " undefined reference to"
* :github:`28758` - ASSERTION FAIL [conn->in_retransmission == 1] with civetweb sample application
* :github:`28745` - Bug in drivers/modem/hl7800.c
* :github:`28739` - Bluetooth: Mesh: onoff_level_lighting_vnd sample fails provisioning
* :github:`28735` - NULL pointer access in zsock_getsockname_ctx with TCP2
* :github:`28723` - Does not respect python virtualenv
* :github:`28722` - Bluetooth: provide ``struct bt_conn`` to ccc_changed callback
* :github:`28714` - Bluetooth: PTS upper tester: GAP/CONN/NCON/BV-02-C Fails because of usage of NRPA
* :github:`28709` - phandle-array doesn't allow array of just phandles
* :github:`28706` - west build -p auto -b nrf52840dk_nrf52840 error: HAS_SEGGER_RTT
* :github:`28701` - ASSERTION FAIL [!radio_is_ready()]
* :github:`28699` - Bluetooth: controller: Speed up disconnect process when slave latency is used
* :github:`28694` - k_wakeup follwed by k_thread_resume call causes system freeze
* :github:`28693` - FCB support for non-0xFF flash erase values
* :github:`28691` - tests: arch: arm: arm_thread_swap: fails with bus fault
* :github:`28688` - Bluetooth: provide ``struct bt_gatt_indicate_params`` to ``bt_gatt_indicate_func_t``
* :github:`28670` - drivers: flash: bluetooth: stm32wb: attempt to erase internal flash before enabling Bluetooth cause fatal error
* :github:`28664` - Decide whether to enable HW_STACK_PROTECTION by default
* :github:`28650` - GCC-10.2 link issue w/g++ on aarch64
* :github:`28629` - tests: kernel: common: and common.misra are failing on nrf52840dk
* :github:`28620` - 6LowPAN ipsp: ping host -> µc failes, ping µc -> host works. after that: ping host -> µc works
* :github:`28613` - cannot set GDB watchpoints on QEMU x86 with icount enabled
* :github:`28590` - up_squared_adsp:running tests/kernel/smp/ failed
* :github:`28589` - up_squared_adsp:running tests/kernel/workq/work_queue/ failed
* :github:`28587` - Data corruption while serving large files via HTTP with TCP2
* :github:`28556` - mec15xxevb_assy6853:running tests/kernel/sched/schedule_api/ failed
* :github:`28547` - up_squared: tests/subsys/debug/coredump failed using twister command.
* :github:`28544` - Null pointer dereference in ll_adv_aux_ad_data_set
* :github:`28533` - soc: ti_simplelink: cc13xx-cc26xx: kconfig for subghz 802.15.4
* :github:`28509` - series-push-hook.sh: Don't parse then-master-to-latest-master commits after rebase to lastest
* :github:`28504` - dfu: dfu libraries might fails to compile on redefined functions while building MCUBoot
* :github:`28502` - USB DFU class: support MCUBoot CONFIG_SINGLE_APPLICATION_SLOT
* :github:`28493` - Sanitycheck on ARC em_starterkit_em7d has many tests timeout
* :github:`28483` - Fix nanosleep(2) for sub-microsecond durations
* :github:`28473` - Mcuboot fails to compile when using single image and usb dfu
* :github:`28469` - Unable to capture adc signal at 8ksps when using nrf52840dk board.
* :github:`28462` - SHIELD not handled correct in CMake when using custom board
* :github:`28461` - ``HCI_CMD_TIMEOUT`` when setting ext adv data in the hci_usb project
* :github:`28456` - TOOLCHAIN_LD_FLAGS setting of -mabi/-march aren't propagated to linker invocation on RISC-V
* :github:`28442` - How handle IRQ_CONNECT const requirement?
* :github:`28406` - Condition variables
* :github:`28383` - bq274xx sample is not working
* :github:`28363` - ssd16xx: off-by-one with non-multiple-of-eight heights
* :github:`28355` - Document limitations of net_buf queuing functions
* :github:`28309` - Sample/subsys/fs/littlefs with board=nucleo_f429zi  don't work
* :github:`28299` - net: lwm2m: Improve token handling
* :github:`28298` - Deep sleep(system off) is not working with LVGL and display driver
* :github:`28296` - test_essential_thread_abort: lpcxpresso55s16_ns test failure
* :github:`28278` - PWM silently fails when changing output frequency on stm32
* :github:`28220` - flash: revise API to remove block restrictions on write operations
* :github:`28177` - gPTP gptp_priority_vector struct field ordering is wrong
* :github:`28176` - [Coverity CID :214217] Out-of-bounds access in tests/kernel/mem_protect/mem_map/src/main.c
* :github:`28175` - [Coverity CID :214214] Uninitialized pointer read in tests/benchmarks/data_structure_perf/rbtree_perf/src/rbtree_perf.c
* :github:`28170` - [Coverity CID :214222] Unrecoverable parse warning in include/ec_host_cmd.h
* :github:`28168` - [Coverity CID :214218] Unused value in subsys/mgmt/osdp/src/osdp.c
* :github:`28159` - [Coverity CID :214216] Logically dead code in drivers/pwm/pwm_stm32.c
* :github:`28155` - sam_e70_xplained:running samples/net/sockets/civetweb/ failed
* :github:`28124` - Linking external lib against POSIX API
* :github:`28117` - CoAP/LWM2M: Clean Packet Retransmission Concept
* :github:`28113` - Embed precise Zephyr version & platform name in sanitycheck output .xml
* :github:`28094` - samples: drivers: spi_flash_at45: Not work for boards without internal flash driver
* :github:`28092` - Make SPI speed of SDHC card configurable
* :github:`28014` - tests: kernel: mem_protect: sys_sem: failed when CONFIG_FPU is activated
* :github:`27999` - Add QSPI tests for microchip mec1521 board, drivers are in zephyr/drivers/spi, to be tested on mec15xxevb_assy6853
* :github:`27997` - Errors in copy paste lengthy script into Shell Console
* :github:`27981` - Low UART utilization for hci_uart
* :github:`27957` - flash signed binaries: key path and version
* :github:`27914` - frdm_k64f async uart api
* :github:`27892` - [v2.1.x] lib: updatehub: Improve download on slow networks and security fix
* :github:`27890` - [v2.2.x] lib: updatehub: Improve download on slow networks and security fix
* :github:`27881` - Zephyr requirements.txt fails to install on Python 3.9rc1
* :github:`27879` - Make i2c_slave callbacks public in the documentation
* :github:`27856` - Support per thread runtime statistics
* :github:`27846` - Weird ADC outliers on nrf52
* :github:`27841` - samples: disk: unable to access sd card
* :github:`27829` - sys_mutex and futex missing documentation
* :github:`27809` - Cannot enable MPU for nucleo_l552ze_q_ns
* :github:`27785` - memory domain arch implementation not correct with respect to SMP on ARC
* :github:`27716` - Bluetooth: Mesh: Devices relay their own messages (even with relay disabled!)
* :github:`27677` - RFC: Get rid of shell UART device selection in Kconfig
* :github:`27672` - [v2.2] BLE Transaction Collision
* :github:`27633` - arm64 SMP
* :github:`27628` - stm32: i2c bus failure when using USB
* :github:`27622` - Power management for modems using PPP
* :github:`27600` - JSON Api refuse to decode null value
* :github:`27596` - logging: backend inconsistency with console and shell
* :github:`27583` - sanitycheck does not fail on SRAM overflow, add option to make it fail on those cases.
* :github:`27574` - mec15xxevb_assy6853:arch.arm.arch.arm.no.multithreading failed to run
* :github:`27573` - coverage: When enable coverage, some testcases need more time
* :github:`27570` - up_squared:logging.add.logging.add.async failed
* :github:`27561` - drivers: gpio: pca9555 : Add GPIO driver enable interrupt support
* :github:`27559` - How to use stm32cubeIDE to build and debug?
* :github:`27525` - Including STM32Cube's USB PD support to Zephyr
* :github:`27510` - [v1.14] Bluetooth: controller: Fix uninit conn context after invalid channel map
* :github:`27506` - driver: peci: mchp: Ping command is failing due to improper tx wait timeout.
* :github:`27490` - arch/common/isr_tables.c compilation fails with CONFIG_NUM_IRQS=0
* :github:`27487` - storage/stream: should use only flash driver public API
* :github:`27468` - BT Host: Periodic Advertisement delayed receive
* :github:`27467` - BT Host: Periodic Advertiser List
* :github:`27466` - BT Host: Periodic Advertisement Sync Transfer (PAST)
* :github:`27457` - Add support for Nordic nrfx PDM driver for Nordic Thingy52
* :github:`27423` - RFC: API change: clock_control: Change parameters of clock_control_async_on
* :github:`27417` - CivetWeb Enable WebSocket
* :github:`27396` - samples/subsys/logging/logger timeout when sanitycheck enable coverage, it needs a filter
* :github:`27369` - spi: stm32: dma: rx transfer error when spi_write called
* :github:`27367` - Sprintf -  error while sending data to SD card
* :github:`27350` - ADC: adc shell failure when mismatch with dts device label
* :github:`27332` - [v2.3.x] lib: updatehub: Improve download on slow networks and security fix
* :github:`27299` - espi: xec: Whenever eSPI host indicates we are entering DnX mode, notification doesn't reach application
* :github:`27279` - CMSIS RTOS v1 Signals Implementation Issue
* :github:`27231` - Sending data to .csv file on SD card - ERROR CS control inhibited (no GPIO device)
* :github:`27195` - Sanitycheck: BinaryHandler can't kill children processes
* :github:`27176` - [v1.14] Restore socket descriptor permission management
* :github:`27174` - TCP Server don't get the right data from the client
* :github:`27146` - [Coverity CID :211510] Unchecked return value in lib/posix/semaphore.c
* :github:`27122` - Implement watchdog driver for mimxrt1050_evk
* :github:`27068` - ESP-IDF Bootloader bootloop
* :github:`27055` - BlueZ with ESP32 boards supported or not?
* :github:`27047` - zefi.py assumes host GCC is x86
* :github:`27031` - Zephyr OpenThread Simulation
* :github:`27020` - civetweb issues
* :github:`27006` - unsynchronized newlib uintptr_t and PRIxPTR definition on xtensa
* :github:`26987` - [Coverity CID :211475] Unintended sign extension in drivers/sensor/wsen_itds/itds.c
* :github:`26975` - Control never returns from stm32_i2c_msg_write(), when SCL is pulled low permanently (hardware fault occurs)
* :github:`26961` - occasional sanitycheck failures in samples/subsys/settings
* :github:`26949` - sanitycheck gets overwhelmed by console output
* :github:`26912` - arm: cortex_r: config_userspace: hang during early power-up
* :github:`26873` - WIFI_ESP: sockets left opened after unexpected reset of ESP
* :github:`26829` - GSM modem example on stm32f103 bluepill
* :github:`26819` - drivers: modem: SARA modem driver leaks sockets
* :github:`26807` - Bluetooth HCI USB sample is not working
* :github:`26799` - Introduce p99
* :github:`26794` - arc: smp: different sanitycheck results of ARC hsdk's 2 cores and 4 cores configuration
* :github:`26732` - Advertise only on single bluetooth channel
* :github:`26722` - uarte_nrfx_poll_out() in NRF UARTE driver does not work with hardware flow control
* :github:`26665` - Implement reset for ARC development boards
* :github:`26656` - SAM0 USB transfer slot leak
* :github:`26637` - How to identify sensor device?
* :github:`26584` - Multicast emission is only possible for ipv4 starting with 224.
* :github:`26533` - Support newlib for Aarch64 architecture
* :github:`26522` - Reported "Supported shields" list includes boards
* :github:`26515` - timers: platforms using cortex_m_systick does not enter indefinite wait on SLOPPY_IDLE
* :github:`26500` - sanitycheck reports failing tests with test_slice_scheduling()
* :github:`26488` - Bluetooth: Connection failure using frdm_kw41z shield
* :github:`26486` - possible SMP race with k_thread_join()
* :github:`26477` - GPIO sim driver
* :github:`26443` - sanitycheck shall generate results and detailed information about tests and environment in json format.
* :github:`26409` - Clearing of previously initialized data during IPv6 interface init causes infinite loop, memory corruption in timer ISR
* :github:`26383` - OpenThread NCP radio-only
* :github:`26372` - qspi driver does not work if multithreading is disabled
* :github:`26330` - tcp: low bulk receive performance due to window handling
* :github:`26315` - ieee802154: cc13xx_cc26xx: sub_ghz support
* :github:`26312` - drivers: ieee802154: cc13xx_cc26xx: adopt hal/ti rf driverlib
* :github:`26275` - USB MSC fails 'Command Set Test' from USB3CV.
* :github:`26272` - Cannot use alternative simulation runner with sanitycheck
* :github:`26227` - icount support for qemu_arc_{em,hs}
* :github:`26225` - x86_64 doesn't seem to be handling spurious interrupts properly
* :github:`26219` - sys/util: add support for mapping lists with per-element terminal symbols
* :github:`26172` - Zephyr Master/Slave not conforming with Core Spec. 5.2 connection policies
* :github:`26163` - qemu_arc_{em,hs} keeps failing in CI on tests/kernel/lifo/lifo_usage
* :github:`26142` - cmake warning: "Policy CMP0077 is not set"
* :github:`26084` - 2.4 Release Checklist
* :github:`26072` - refactor struct device to reduce RAM demands
* :github:`26051` - shell: uart: Allow a change in the shell initalisation to let routing it through USB UART
* :github:`26050` - devicetree: provide access to node ordinal
* :github:`26026` - RFC: drivers: pwm: add functions for capturing pwm pulse width and period
* :github:`25956` - Including header files from modules into app
* :github:`25927` - ARM: Core Stack Improvements/Bug fixes for 2.4 release
* :github:`25918` - qemu_nios2 crash when enabled icount
* :github:`25832` - [test][kernel][lpcxpresso55s69_ns] kernel cases meet ESF could not be retrieved successfully
* :github:`25604` - USB: enable/disable a class driver at runtime
* :github:`25600` - wifi_eswifi: Unable to start TCP/UDP client
* :github:`25592` - Remove checks on board undocumented DT strings
* :github:`25597` - west sign fails to find header size or padding
* :github:`25508` - tests: add additonal power management tests
* :github:`25507` - up_squared:tests/portability/cmsis_rtos_v2 failed.
* :github:`25482` - outdated recommendations for SYS_CLOCK_TICKS_PER_SEC
* :github:`25466` - log build errors are not helpful
* :github:`25434` - nRF5340 Bluetooth peripheral_hr sample high power consumption
* :github:`25413` - soc: ti_simplelink: kconfig: ble: placeholder for hal_ti
* :github:`25409` - Inconsistent naming of Kconfig options related to stack sizes of various Zephyr components
* :github:`25395` - Websocket Server API
* :github:`25379` - Bluetooth mesh example not working
* :github:`25314` - Bluetooth: controller: legacy: Backport conformance test related changes
* :github:`25302` - lwm2m client sample bootstrap server support
* :github:`25182` - Raspberry Pi 4B Support
* :github:`25173` - k_sem_give(struct k_sem \*sem) should report failure when the semaphore is full
* :github:`25164` - Remove ``default:`` functionality from devicetree bindings
* :github:`25015` - Bluetooth Isochronous Channels Support
* :github:`25010` - disco_l475_iot1 don't confirm MCUBoot slot-1 image
* :github:`24803` - ADC driver test hangs on atsame54_xpro
* :github:`24652` - sanitycheck doesn't keep my cores busy
* :github:`24453` - docs: Allow to use the exact current zephyr version number in place of /latest/ in documentation URLs
* :github:`24358` - deprecate and remove old k_mem_pool / sys_mem_pool APIs
* :github:`24338` - UICR & FICR missing from nRF52* devicetree files
* :github:`24211` - [v2.2.x] lib: updatehub: Not working on Zephyr 2.x
* :github:`23917` - Kconfig: problems with using backslash-escapes in "default" value of "string" option
* :github:`23874` - Test case to check registers data
* :github:`23866` - sample hci_usb fails with zephyr 2.2.0 (worked with zephyr 2.1.0)
* :github:`23729` - hifive1_revb fails to work with samples/subsys/console/getline
* :github:`23314` - Bluetooth: controller: Use defines for 625 us and 1250 us
* :github:`23302` - Poor TCP performance
* :github:`23212` - ARC: SMP: Enable use of ARConnect Inter-core Debug Unit
* :github:`23210` - mimxrt1050_evk:tests/net/iface failed with v1.14 branch.
* :github:`23063` - CMSIS v2 osThreadJoin does not work if thread exits with osThreadExit
* :github:`23062` - thread_num / thread_num_dynamic are never decremented in CMSIS v2 thread.c
* :github:`22942` - Missing TX power options for nRF52833
* :github:`22771` - z_x86_check_stack_bounds() doesn't work right for nested IRQs on x86-64
* :github:`22703` - Implement ADC driver for lpcxpresso55s69
* :github:`22411` - AArch64 / Cortex-A port improvements / TODO
* :github:`22333` - drivers: can: Check bus-timing values at compile-time
* :github:`22247` - Discussion: Supporting the Arduino ecosystem
* :github:`22198` - BMA280 Sample Code
* :github:`22185` - Add Thread Local Storage (TLS) support
* :github:`22060` - Build fails with gcc-arm-none-eabi-9-2019-q4-major
* :github:`21991` - memory domain locking may not be entirely correct
* :github:`21495` - x86_64: interrupt stack overflows are not caught
* :github:`21462` - x86_64 exceptions are not safely preemptible, and stack overflows are not caught
* :github:`21273` - devicetree: improved support for enum values
* :github:`21238` - Improve Zephyr HCI VS extension detection
* :github:`21216` - Ztest "1cpu" cases don't retarget interrupts on x86_64
* :github:`21179` - Reduce RAM consumption for civetweb HTTP sample
* :github:`20980` - ESP32 flash error with segment count error using esptool.py from esp-idf
* :github:`20925` - tests/kernel/fp_sharing/float_disable crashes on qemu_x86 with CONFIG_KPTI=n
* :github:`20821` - Do USE\_\(DT\_\)CODE\_PARTITION and FLASH_LOAD_OFFSET/SIZE need to be user-configurable?
* :github:`20792` - sys_pm: fragility in residency policy
* :github:`20775` - sys_pm_ctrl: fragility in managing state control
* :github:`20686` - tests/kernel/fp_sharing/float_disable failed when code coverage is enabled on qemu_x86.
* :github:`20518` - [Coverity CID :205647]Memory - illegal accesses in /tests/arch/x86/info/src/memmap.c
* :github:`20337` - sifive_gpio: gpio_basic_api test fails
* :github:`20262` - dt-binding for timers
* :github:`20118` - Zephyr BLE stack to work on the CC2650 Launchpad
* :github:`19850` - Bluetooth: Mesh: Modular settings handling
* :github:`19530` - Enhance sanitycheck/CI for separating build phase from testing
* :github:`19523` - Can't build fade-led example for any Nordic board
* :github:`19511` - net: TCP: echo server blocks after a packet with zero TCP options
* :github:`19497` - log subsystem APIs need to be clearly namespaced as public or private
* :github:`19467` - Error building samples with PWM
* :github:`19448` - devicetree: support disabled devices
* :github:`19435` - how to change uart tx rx pins in zephyr
* :github:`19380` - Potential bugs re. 'static inline' and static variables
* :github:`19244` - BLE throughput of DFU by Mcumgr is too slow
* :github:`19138` - zassert prints to UART even when RTT is selected
* :github:`19100` - LwM2M sample with DTLS: does not connect
* :github:`19003` - bluetooth : Mesh: adv thread can be replace by other methods.
* :github:`18927` - settings: deprecate base64 encoding
* :github:`18778` - soc: arm: nordic_nrf: Defining DT\_..._DEV_NAME
* :github:`18728` - sam_e70_xplained:tests/subsys/logging/log_core failed.
* :github:`18608` - PCA9685 PWM driver is broken
* :github:`18607` - DesignWare PWM driver is broken
* :github:`18601` - LwM2M client sample: an overlay for OpenThread support
* :github:`18551` - address-of-temporary idiom not allowed in C++
* :github:`18529` - fs/fcb: consider backport of mynewt fixes
* :github:`18276` - irq_connect_dynamic() is not tested on all arches
* :github:`17893` - dynamic threads don't work on x86 in some configurations
* :github:`17787` - openocd unable to flash hello_world to cc26x2r1_launchxl
* :github:`17743` - cross compiling for RISCV32 fails as compiler flags are not supplied by board but must be in target.cmake
* :github:`17645` - VSCode debugging Zephyr application
* :github:`17545` - Licensing and reference to public domain material
* :github:`17300` - [Zephyr v1.14.0] mcumgr: stm32: Strange Build warnings when counter is enabled
* :github:`17023` - userspace: thread indexes are not released when dynamic threads lose all references
* :github:`17014` - reentrancy protection in counter drivers?
* :github:`16766` - net: net_pkt_copy don't work as expected when data was pulled from destination
* :github:`16544` - drivers: spi: spi_mcux_lpspi: inconsistent chip select behaviour
* :github:`16438` - fs/FCB fs/NVS : requires unaligned flash read-out length capabilities,
* :github:`16237` - disco_l475_iot1: samples/bluetooth/ipsp ko since 3151d26
* :github:`16195` - k_uptime_delta(): Defective by design
* :github:`15944` - stm32: New Driver for FMC/FSMC
* :github:`15713` - MCUMGR_LOG build error
* :github:`15570` - Unbonded peripheral gets 'Tx Buffer Overflow' when erasing bond on master
* :github:`15372` - logging can't dump exceptions without losing data with CONFIG_LOG_PRINTK
* :github:`14591` - Infineon Tricore architecture support
* :github:`14571` - TCP: sending lots of data deadlocks with slow peer
* :github:`14300` - Bluetooth connection using central and peripheral samples in nrf52840
* :github:`13955` - stm32: Implement async uart api
* :github:`13591` - tests/blutooth/tester: ASSERTION FAIL due to Recursive spinlock when running bt tester on qemu-cortex-m3
* :github:`13396` - Cannot connect to Galaxy S8 via BLE
* :github:`13244` - How to encrypt advertise packet with zephyr and nrf52832 ？
* :github:`12368` - File descriptors: Compile fails with non-POSIX out-of-tree libc
* :github:`12353` - intel_s1000: SPI Flash Erase command doesn't work when booting from flash
* :github:`12239` - BLE400 / nRF51822 (nRF51) PWM clock too low (servo-motor example)
* :github:`12150` - Power management on nRF52 boards
* :github:`11912` - net: SimpleLink: Create real cross-platform port
* :github:`11770` - Multiprotocol feature for BLE/Thread
* :github:`10904` - Requirements for driver devices generation using device tree
* :github:`10857` - Migrating from CMSIS-Core to DeviceTree results in loss of type information
* :github:`10460` - Bluetooth: settings: No space to store CCC config after successful pairing
* :github:`10158` - Have support for probot with Zephyr
* :github:`10022` - Porting Modbus Library: Need some guidance
* :github:`9944` - sockets: Connect doesn't send new SYN in case the first connection attempt fails
* :github:`9883` - DTS processing generates unit_address_vs_reg warning on entries with 'reg'
* :github:`9875` - Bluetooth: Host LE Extended Advertising
* :github:`9783` - LwM2M: Cannot create object instance without specifying instance number
* :github:`9509` - Unable to upload firmware over serial with mcumgr
* :github:`9406` - Generate DTS 'compatible' based compilation flags
* :github:`9403` - is Support C++ standard library?
* :github:`9087` - driver: CAN interface should be compatible with CAN-FD interface
* :github:`8499` - Device Tree support overhaul
* :github:`8393` - ``CONFIG_MULTITHREADING=n`` builds call ``main()`` with interrupts locked
* :github:`8008` - net: Sockets (and likely net_context's) should not be closed behind application's back
* :github:`7939` - Connections to TI CC254x break after conn_update
* :github:`7404` - arch: arm: MSP initialization during early boot
* :github:`7331` - Precise time sync through BLE mesh.
* :github:`6857` - need to improve filtering and coverage in sanitycheck
* :github:`6818` - Question: Is  Lightweight OpenMP implementation supported in Zephyr? Or any plan?
* :github:`6648` - Trusted Execution Framework: practical use-cases (high-level overview)
* :github:`6199` - STM32: document dts porting rules
* :github:`6040` - Implement flash driver for LPC54114
* :github:`5626` - Building samples failed
* :github:`4420` - net: tcp: RST handling is weak
* :github:`3675` - LE Adv. Ext.: Extended Scan with PHY selection for non-conn non-scan un-directed without aux packets
* :github:`3674` - LE Adv. Ext.: Non-Connectable and Non-Scannable Undirected without auxiliary packet
* :github:`3893` - Enhance k_stack_push() to check k_stack->top to avoid corruption
* :github:`3719` - Multiple consoles support.
* :github:`3441` - IP stack: No TCP send window handling
* :github:`3102` - Make newlib libc the default c library
* :github:`2247` - LE Controller: Change hal/ into a set of drivers

---

### Doc Releases Release Notes 2.6 (`doc/releases/release-notes-2.6.rst`)

:orphan:

.. _zephyr_2.6:

Zephyr 2.6.0
############

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

Major enhancements with this release include:

* Logging subsystem overhauled
* Added support for 64-bit ARCv3
* Split ARM32 and ARM64, ARM64 is now a top-level architecture
* Added initial support for Arm v8.1-m and Cortex-M55
* Removed legacy TCP stack support which was deprecated in 2.4
* Tracing subsystem overhaul including expansion for tracing points and
  added support for Percepio Tracealyzer
* Device runtime power management (PM), former IDLE runtime, was
  completely overhauled.
* Added an example standalone Zephyr application in its own Git repository:
  https://github.com/zephyrproject-rtos/example-application

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-3581: Under embargo until 2021-09-04

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
***********

* Driver APIs now return ``-ENOSYS`` if optional functions are not implemented.
  If the feature is not supported by the hardware ``-ENOTSUP`` will be returned.
  Formerly ``-ENOTSUP`` was returned for both failure modes, meaning this change
  may require existing code that tests only for that value to be changed.

* The :c:func:`wait_for_usb_dfu` function now accepts a ``k_timeout_t`` argument instead of
  using the ``CONFIG_USB_DFU_WAIT_DELAY_MS`` macro.

* Added disconnect reason to the :c:func:`disconnected` callback of :c:struct:`bt_iso_chan_ops`.

* Align error handling of :c:func:bt_l2cap_chan_send and
  :c:func:`bt_iso_chan_send` so when an error occur the buffer is not unref.

* Added :c:func:`lwm2m_engine_delete_obj_inst` function to the LwM2M library API.

Deprecated in this release

* :c:macro:`DT_CLOCKS_LABEL_BY_IDX`, :c:macro:`DT_CLOCKS_LABEL_BY_NAME`,
  :c:macro:`DT_CLOCKS_LABEL`, :c:macro:`DT_INST_CLOCKS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_CLOCKS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_CLOCKS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_CLOCKS_CTLR` and variants.

* :c:macro:`DT_PWMS_LABEL_BY_IDX`, :c:macro:`DT_PWMS_LABEL_BY_NAME`,
  :c:macro:`DT_PWMS_LABEL`, :c:macro:`DT_INST_PWMS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_PWMS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_PWMS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_PWMS_CTLR` and variants.

* :c:macro:`DT_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_IO_CHANNELS_LABEL_BY_NAME`,
  :c:macro:`DT_IO_CHANNELS_LABEL`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_IO_CHANNELS_LABEL` were deprecated in favor of utilizing
  :c:macro:`DT_IO_CHANNELS_CTLR` and variants.

* :c:macro:`DT_DMAS_LABEL_BY_IDX`,
  :c:macro:`DT_DMAS_LABEL_BY_NAME`,
  :c:macro:`DT_INST_DMAS_LABEL_BY_IDX`, and
  :c:macro:`DT_INST_DMAS_LABEL_BY_NAME` were deprecated in favor of utilizing
  :c:macro:`DT_DMAS_CTLR` and variants.

* USB HID specific macros in ``<include/usb/class/usb_hid.h>`` are deprecated
  in favor of new common HID macros defined in ``<include/usb/class/hid.h>``.

* USB HID Kconfig option USB_HID_PROTOCOL_CODE is deprecated.
  USB_HID_PROTOCOL_CODE does not allow to set boot protocol code for specific
  HID device. USB HID API function usb_hid_set_proto_code() can be used instead.

* USB HID class API is changed by removing get_protocol/set_protocol and
  get_idle/set_idle callbacks. These callbacks are redundant or do not provide
  any additional value and have led to incorrect usage of HID class API.

* The ``CONFIG_OPENOCD_SUPPORT`` Kconfig option has been deprecated in favor
  of ``CONFIG_DEBUG_THREAD_INFO``.

* Disk API header ``<include/disk/disk_access.h>`` is deprecated in favor of
  ``<include/storage/disk_access.h>``.

* :c:func:`flash_write_protection_set()`.

* The ``CONFIG_NET_CONTEXT_TIMESTAMP`` is removed as it was only able to work
  with transmitted data. The same functionality can be achieved by setting
  ``CONFIG_NET_PKT_RXTIME_STATS`` and ``CONFIG_NET_PKT_TXTIME_STATS`` options.
  These options are also able to calculate the RX & TX times more accurately.
  This means that support for the SO_TIMESTAMPING socket option is also removed
  as it was used by the removed config option.

* The device power management (PM) APIs and data structures have been renamed
  from ``device_pm_*`` to ``pm_device_*`` since they are not device APIs but PM
  subsystem APIs. The same applies to enumerations and definitions, they now
  follow the ``PM_DEVICE_*`` convention. Some other API calls such as
  ``device_set_power_state`` and ``device_get_power_state`` have been renamed to
  ``pm_device_state_set`` and ``pm_device_state_get`` in order to align with
  the naming of other device PM APIs.

* The runtime device power management (PM) APIs is now synchronous by default
  and the asynchronous API has the **_async** sufix. This change aligns the API
  with the convention used in Zephyr. The affected APIs are
  ``pm_device_put`` and ``pm_device_get``.

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

  * :c:func:`k_work_pending()` replace with :c:func:`k_work_is_pending()`
  * :c:func:`k_work_q_start()` replace with :c:func:`k_work_queue_start()`
  * :c:struct:`k_delayed_work` replace with :c:struct:`k_work_delayable`
  * :c:func:`k_delayed_work_init()` replace with
    :c:func:`k_work_init_delayable`
  * :c:func:`k_delayed_work_submit_to_queue()` replace with
    :c:func:`k_work_schedule_for_queue()` or
    :c:func:`k_work_reschedule_for_queue()`
  * :c:func:`k_delayed_work_submit()` replace with :c:func:`k_work_schedule()`
    or :c:func:`k_work_reschedule()`
  * :c:func:`k_delayed_work_pending()` replace with
    :c:func:`k_work_delayable_is_pending()`
  * :c:func:`k_delayed_work_cancel()` replace with
    :c:func:`k_work_cancel_delayable()`
  * :c:func:`k_delayed_work_remaining_get()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:func:`k_delayed_work_expires_ticks()` replace with
    :c:func:`k_work_delayable_expires_get()`
  * :c:func:`k_delayed_work_remaining_ticks()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:macro:`K_DELAYED_WORK_DEFINE` replace with
    :c:macro:`K_WORK_DELAYABLE_DEFINE`

==========================

Removed APIs in this release

* Removed support for the old zephyr integer typedefs (u8_t, u16_t, etc...).

* Removed support for k_mem_domain_destroy and k_mem_domain_remove_thread

* Removed support for counter_read and counter_get_max_relative_alarm

* Removed support for device_list_get

============================

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

Kernel
******

* Added :c:func:`k_mem_unmap()` so anonymous memory mapped via :c:func:`k_mem_map()`
  can be unmapped and virtual address reclaimed.

* Added the ability to gather more statistics for demand paging, including execution
  time histograms for eviction algorithms and backing stores.

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

* ARC

  * Added new ARCv3 64bit ISA support and corresponding HS6x processor support
  * Hardened SMP support
  * Various minor fixes/improvements for ARC MWDT toolchain infrastructure
  * Refactor of ARC Kconfig

* ARM

  * AARCH32

    * Added support for null pointer dereferencing detection in Cortex-M.
    * Added initial support for Arm v8.1-m and Cortex-M55.
    * Added support for preempting threads while they are performing secure calls in Cortex-M.
    * Added support for memory region generation by the linker based on device tree node information in Cortex-M.
    * Cleaned up definitions of SoC-specific memory regions in the common Cortex-M linker script.
    * Added support for clearing NXP MPU region configuration during Zephyr early boot stage.
    * Disallowed fpu hard ABI when building Non-Secure applications with TF-M on Cortex-M33.
    * Enhanced register information dump in fault exceptions in Cortex-R.
    * Fixed spurious interrupt handling in Cortex-R.

  * AARCH64

    * SMP support
    * MMU dynamic mappings with page table sharing.
    * Userspace (unprivileged) thread support.
    * Standalone SMCCC support.
    * XIP support.
    * ARM64 is now a top-level standalone architecture.
    * Support for Cortex-R82 and Armv8-R AArch64 MPU.
    * Cache management support.
    * Revamped boot code.
    * Full FPU context switching.

* x86

  * Added SoC configuration for Lakemont SoC.
  * Removed kconfig ``CONFIG_CPU_MINUTEIA`` as there is no user of this option.
  * Renamed kconfig ``CONFIG_SSE*`` to ``CONFIG_X86_SSE*``.
  * Extended the pagetable generation script to allow specifying additional
    memory mapping during build.
  * x86-32

    * Added support for kernel image to reside in virtual address space, allowing
      code execution and data manipulation via virtual addresses.

Bluetooth
*********

* Audio

  * Split up ISO handling from audio handling, and moved the latter to its
    own directory.
  * Added the Volume Offset Control Service and client.
  * Added the Audio Input Control Service and client.
  * Added the Volume Control Service and client.

* Host

  * Added basic support for Direction Finding.
  * Added support for CTE connectionless transimission and reception over
    periodic advertising.
  * Refactored the HCI and ECC handling implementations.
  * Stopped auto updating the device name in the adv data.
  * Added support for logging security keys to be used by an air sniffer.
  * Fixed a bonding issue where the local bond data was not being updated after
    the remote device had removed it when the peer was not using the IRK stored
    in the bonding information.
  * Implemented the directory listing object to OTS.
  * Added a function to access the ``bt_conn_iso`` object.
  * Added a new configuration option for writeable device name.
  * Added a new configuration option for minimum encryption key size.
  * Added support for keypress notifications as an SMP responder.
  * Added a new option, ``BT_LE_ADV_OPT_FORCE_NAME_IN_AD``, which forces the
    device name to appear in the adv packet instead of the scan response.
  * Added a security level check when sending a notification or indication.
  * Added the ability to send HCI monitor traces over RTT.
  * Refactored the Bluetooth buffer configuration for simplicity. See the
    commit message of 6483e12a8ac4f495b28279a6b84014f633b0d374 for more info.
    Note however that the aforementioned commit message has two typos;

    * ``BT_CTLR_TX_BUFFER`` should be ``BT_CTLR_TX_BUFFERS``
    * ``BT_CTLR_TX_BUFFERS_SIZE`` should be ``BT_CTLR_TX_BUFFER_SIZE``
  * Added support for concurrent advertising with multiple identities.
  * Changed the logic to disable scanning before setting the random address.
  * Fixed a crash where an ATT timeout occurred on a disconnected ATT channel.
  * Changed the pairing procedure to fail pairing when both sides have the same
    public key.
  * Fixed an issue where GATT requests could deadlock the RX thread.
  * Fixed an issue where a fixed passkey that was previously set could not be
    cleared.
  * Fixed an issue where callbacks for "security changed" and "pairing failed"
    were not always called.
  * Changed the pairing procedure to fail early if the remote device could not
    reach the required security level.
  * Fixed an issue where GATT notifications and Writes Without Response could
    be sent out of order.
  * Changed buffer ownership of ``bt_l2cap_chan_send``.
    The application must now release the buffer for all returned errors.

* Mesh

  * Added CDB handle key refresh phase.
  * Added the ability to perform replay checks on SeqAuth.
  * Added the sending of a Link Close message when closing a link.
  * Added a Proxy callback structure for Node ID enabling and disabling.
  * Added a check for the response address in the Configuration Client.
  * Introduced a new acknowledged messages API.
  * Reworked the periodic publication timer and poll timeout scheduling logic.
  * Added reporting configured ``LPNTimeout`` in ``cfg_srv``.
  * Ensured that provisioning output count number is at least 1.
  * Ensured to encrypt initial friend poll with friend credentials.
  * Stopped resetting the PB ADV reliable timer on retransmission.

* Bluetooth LE split software Controller

  * Removed support for the nRF5340 PDK. Use the nRF5340 DK instead.
  * Added basic support for Direction Finding.
  * Added support for CTE connectionless transimission and reception over
    periodic advertising.
  * Added support for antenna switching in the context of Direction Finding.
  * Added an invalid ACL data length check.
  * Added basic support for the ISO Adaptation Layer.
  * Added experimental support for Broadcast Isochronous Groups and Streams.
  * Added partial experimental support for Connected Isochronous Groups and
    Streams.
  * Implemented extended connection creation and cancellation.
  * Changed the policy to ignore connection requests from an already-connected
    peer.
  * Added a control procedure locking system.
  * Added GPIO PA/LNA support for the Nordic nRF53x SoC series.
  * Added FEM support for the nRF21540 IC.
  * Added a new radio API to configure the CTE RX path.

* HCI Driver

  * Added support for the Espressif ESP32 platform.

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

* Added support for these SoC series:

  * STM32F205xx
  * STM32G03yxx, STM32G05yxx, STM32G070xx and STM32G0byxx
  * STM32G4x1, STM32G4x3 and STM32G484xE
  * STM32WL55xx
  * Nuvoton npcx7m6fc, and npcx7m6fc
  * Renesas R-Car Gen3
  * Silicon Labs EFR32FG13P
  * ARM MPS3-AN547
  * ARM FVP-AEMv8A
  * ARM FVP-AEMv8R
  * NXP LS1046A
  * X86 Lakemont

* Removed support for these SoC series:

   * ARM Musca-A

* Made these changes in other SoC series:

  * Added Cypress PSoC-6 pinctrl support.
  * STM32 L4/L5/WB series were updated for better power management support (CONFIG_PM=y).
  * Backup SRAM added on a selection of STM32 series (F2/F4/F7/H7)
  * Set TRACE_MODE to asynchronous and enable trace output pin on STM32 SoCs

* Changes for ARC boards:

  * Added nSIM and QEMU simulation boards (nsim_hs6x and qemu_arc_hs6x)
    with ARCv3 64bit HS6x processors
  * Enabled MPU on qemu_arc_hs and qemu_arc_em boards
  * Added cy8c95xx GPIO expander support to HSDK board

* Added support for these ARM boards:

   * Actinius Icarus
   * Actinius Icarus SoM
   * Laird Connectivity BL654 Sensor Board
   * Laird Connectivity Sentrius BT6x0 Sensor
   * EFR32 Radio BRD4255A Board
   * MPS3-AN547
   * RAK4631
   * Renesas R-Car H3ULCB
   * Ronoth LoDev (based on AcSIP S76S / STM32L073)
   * nRF9160 Thing Plus
   * ST Nucleo F030R8
   * ST Nucleo G0B1RE
   * ST Nucleo H753ZI
   * ST Nucleo L412RP-P
   * ST Nucleo WL55JC
   * ST STM32G071B Discovery
   * Thingy:53
   * u-blox EVK-BMD-30/35: BMD-300-EVAL, BMD-301-EVAL, and BMD-350-EVAL
   * u-blox EVK-BMD-330: BMD-330-EVAL
   * u-blox EVK-BMD-34/38: BMD-340-EVAL and BMD-341-EVAL
   * u-blox EVK-BMD-34/38: BMD-345-EVAL
   * u-blox EVK-BMD-360: BMD-360-EVAL
   * u-blox EVK-BMD-34/48: BMD-380-EVAL
   * u-blox EVK-ANNA-B11x
   * u-blox EVK NINA-B11x
   * u-blox EVK-NINA-B3
   * u-blox EVK NINA-B40x

* Added support for these ARM64 boards:

   * fvp_base_revc_2xaemv8a
   * fvp_baser_aemv8r
   * nxp_ls1046ardb

* Removed support for these ARM boards:

   * ARM V2M Musca-A
   * Nordic nRF5340 PDK

* Removed support for these X86 boards:

   * up_squared_32
   * qemu_x86_coverage
   * minnowboard

* Made these changes in other boards:

  * cy8ckit_062_ble: Refactored to configure by pinctrl.
  * cy8ckit_062_ble: Added support to SCB[uart] with interrupt.
  * cy8ckit_062_ble: Added support to SCB[spi].
  * cy8ckit_062_ble: Added board revision schema.
  * cy8ckit_062_wifi_bt: Refactored to configure by pinctrl.
  * cy8ckit_062_wifi_bt: Added support to SCB[uart] with interrupt.
  * lpcxpresso55s16: Board renamed from lpcxpresso55s16_ns to
    lpcxpresso55s16 since the board does not have Trusted Firmware M
    (TF-M) support.
  * lpcxpresso55s28: Removed lpcxpresso55s28_ns config since the board
    does not have Trusted Firmware M (TF-M) support.
  * mimxrt685_evk: Added support for octal SPI flash storage, LittleFS, I2S, OS
    timer, and power management.
  * mimxrt1060_evk: Added support for QSPI flash storage, LittleFS, and
    mcuboot.
  * mimxrt1064_evk: Added support for mcuboot.

* Added support for these following shields:

  * FTDI VM800C Embedded Video Engine Board
  * Generic ST7735R Display Shield
  * NXP FRDM-STBC-AGM01
  * Semtech SX1272MB2DAS LoRa Shield

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

* ADC

  * Added support on TI CC32xx.
  * Added support on ITE IT8xxx2.
  * Added support for DMA and HW triggers in the MCUX ADC16 driver.
  * Added ADC emulator.
  * Moved definitions of ADC acquisition time macros so that those macros can be used in dts files.

* Bluetooth

  * The Kconfig option ``CONFIG_BT_CTLR_TO_HOST_UART_DEV_NAME`` was removed.
    Use the :ref:`zephyr,bt-c2h-uart chosen node <devicetree-chosen-nodes>`
    directly instead.

* CAN

  * A driver for CAN-FD based on the Bosch M_CAN IP was added. The driver
    currently supports STM32G4 series MCUs. Additional support for Microchip
    SAM and NXP chips is in progress.

  * The CAN ISO-TP subsystem was enhanced to allow padding and fixed
    addressing.

* Clock Control

  * On STM32 series, system clock configuration has been moved from Kconfig to DTS.
    Usage of existing Kconfig dedicated symbols (CONFIG_CLOCK_STM32_FOO) is now
    deprecated.
  * Added clock control driver for Renesas R-Car platform

* Console

  * Added ``UART_CONSOLE_INPUT_EXPIRED`` and ``UART_CONSOLE_INPUT_EXPIRED_TIMEOUT``
    Kconfig options to notify the power management module that UART console is
    in use now and forbid it to enter low-power states.

* Counter

   * Added support for ESP32 Counter

* DAC

   * Added support for Microchip MCP4725

* Disk

  * Added SDMMC support on STM32L4+

* Display

  * Added support for ST7735R

* Disk

  * Moved disk drivers (``disk_access_*.c``) to ``drivers/disk`` and renamed
    according to their function.
  * Fixed CMD6 support in USDHC driver.
  * Fixed clock frequency switching after initialization in ``sdmmc_spi.c`` driver.

* DMA

  * Added support on STM32G0 and STM32H7

* EEPROM

  * Added support for EEPROM emulated in flash.

* ESPI

  * Added support for Microchip eSPI SAF

* Ethernet

  * Added simulated PTP clock to e1000 Ethernet controller. This allows simple PTP
    clock testing with Qemu.
  * Separated PTP clock from gPTP support in mcux and gmac drivers. This allows
    application to use PTP clock without enabling gPTP support.
  * Converted clock control to use DEVICE_DT_GET in mcux driver.
  * Changed to allow changing MAC address in gmac driver.
  * Driver for STM32H7 is now using specific memory layout to fit DMA constraints
    for RAM accesses.

* Flash

  * flash_write_protection_set() has been deprecated and will be removed in
    Zephyr 2.8. Responsibility for write/erase protection management has been
    moved to the driver-specific implementation of the flash_write() and
    flash_erase() API calls. All in-tree flash drivers have been updated,
    and the protect implementation removed from their API tables.
    During the deprecation period user code invoking
    flash_write_protection_set() will have no effect, but the flash_write() and
    flash_erase() driver shims will wrap their calls with calls to the protect
    implementation if it is present in the API table.
    Out-of-tree drivers must be updated before the wrapping in the shims is
    removed when the deprecation period ends.
  * Added QSPI support on STM32F7.

* GPIO

  * :c:struct:`gpio_dt_spec`: a new structure which makes it more convenient to
    access GPIO configuration in the :ref:`devicetree <dt-guide>`.
  * New macros for initializing ``gpio_dt_spec`` values:
    :c:macro:`GPIO_DT_SPEC_GET_BY_IDX`, :c:macro:`GPIO_DT_SPEC_GET_BY_IDX_OR`,
    :c:macro:`GPIO_DT_SPEC_GET`, :c:macro:`GPIO_DT_SPEC_GET_OR`,
    :c:macro:`GPIO_DT_SPEC_INST_GET_BY_IDX`,
    :c:macro:`GPIO_DT_SPEC_INST_GET_BY_IDX_OR`,
    :c:macro:`GPIO_DT_SPEC_INST_GET`, and :c:macro:`GPIO_DT_SPEC_INST_GET_OR`
  * New helper functions for using ``gpio_dt_spec`` values:
    :c:func:`gpio_pin_configure_dt`, :c:func:`gpio_pin_interrupt_configure_dt`
  * Remove support for ``GPIO_INT_*`` flags in :c:func:`gpio_pin_configure()`.
    The feature has been deprecated in the Zephyr 2.2 release. The interrupt
    flags are now accepted by :c:func:`gpio_pin_interrupt_configure()`
    function only.
  * STM32 GPIO driver now supports clock gating using PM_DEVICE and PM_DEVICE_RUNTIME
  * Added GPIO driver for Renesas R-Car platform

* Hardware Info

  * Added support on Silicon Labs Gecko SoCs

* I2C

  * Added support on STM32F2

* I2S

  * Added support for NXP LPC devices

* IEEE 802.15.4

  * Fixed various issues in IEEE 802.15.4 L2 driver.

  * nrf5:

    * Made HW Radio Capabilities runtime.
    * Enabled CSMA-CA on serialized host.
    * Changed driver to load EUI64 from UICR.

  * rf2xx:

    * Added support for tx mode direct.
    * Added support for tx mode CCA.
    * Added support to enable promiscuous mode.
    * Added support to enable pan coordinator mode.

* Interrupt Controller

  * Moved shared interrupt controller configuration to be based
    on devicetree.

* LED

  * Add support for LED GPIO
  * Added power management support for LED PWM

* LoRa

  * Added support for SX1272

* Modem

  * Converted wncm14a2a, quectel-bg9x, hl7800 and ublox-sara-r4 drivers to use
    new DT device macros.
  * Changed GSM modem to optionally do a factory reset when booting.
  * Added autostarting support to GSM modem.
  * Added wait for RDY instead of polling AT in BG9X.
  * Fixed PDP context management for BG9X.
  * Added TLS offload support to ublox-sara-r4.
  * Made reset pin optional in ublox-sara-r4.
  * Fixed potential buffer overrun in hl7800.
  * Fixed build errors on 64-bit platforms.
  * Added support for dialup modem in PPP driver.

* PWM

  * Added support on STM32F2 and STM32L1.
  * Added support on Silicon Labs Gecko SoCs.

* Sensor

  * Added support for STM32 internal (CPU) temperature sensor.
  * Refactored multiple ST sensor drivers to use gpio_dt_spec macros and common
    stmemc routines, support multiple instances, and configure ODR/range
    properties in device tree.
  * Added SBS 1.1 compliant fuel gauge driver.
  * Added MAX17262 fuel gauge driver.
  * Added BMP388 pressure sensor driver.
  * Added Atmel SAM QDEC driver.
  * Added TI FDC2X1X driver.
  * Added support for MPU9250 to existing MPU6050 6-axis motion tracking driver.
  * Refactored BME280 temperature/pressure sensor driver.
  * Added BMI270 IMU driver.
  * Added Nuvoton tachometer sensor driver.
  * Added MAX6675 cold-junction-compensated K-thermocouple to digital
    converter.

* Serial

  * Extended Cypress PSoC-6 SCB[uart] driver to support interrupts.
  * Added UART driver for Renesas R-Car platform

* SPI

  * Added Cypress PSoC-6 SCB[spi] driver.
  * Default SPI_SCK configuration is now pull-down for all STM32 to minimize power
    consumption in stop mode.

* Timer

  * Added x86 APIC TSC_DEADLINE driver.
  * Added support for NXP MCUX OS Timer.
  * Added support for Nuvoton NPCX system timer.
  * Added CMT driver for Renesas R-Car platform.

* USB

  * Added support on STM32H7
  * Added attached event delay to usb_dc_nrfx driver

* Watchdog

  * Added support for TI CC32xx watchdog.

* WiFi

  * Converted eswifi and esp drivers to new DT device macros

  * esp:

    * Fixed hostname configuration.
    * Removed POSIX API dependency.
    * Renamed offloading driver from esp to esp_at.
    * Added esp32 wifi driver support.

Networking
**********

* CoAP:

  * Fixed coap_find_options() to return 0 when options are empty.

* DHCPv4:

  * Fixed DHCPv4 dependency to network event management options.

* DNS:

  * Added locking to DNS library prevent concurrent access.
  * Added 10ms delay when rescheduling query timeout handler in DNS. This allows
    applications to run and handle the timeout gracefully.
  * Added support for reconfiguring DNS resolver when DNS servers are changed.
    This is supported by DHCPv4 and PPP.

* HTTP:

  * Added support for storing numeric HTTP error code in client API.

* IPv4:

  * Added IGMPv2 support to IPv4.
  * Removed IPv4 multicast address check when selecting source address during TX.

* LwM2M:

  * Fixed query buffer size so that it is large enough to encode all query strings.
  * Added data validation callback.
  * Fixed Register/Update to use link_format writer.
  * Added application/link-format content writer.
  * Removed .well-known/core handling.
  * Introduced attribute handling helper functions.
  * Removed obsolete LWM2M_IPSO_TIMESTAMP_EXTENSIONS option.
  * Added IPSO Buzzer, Push Button, On/Off Switch, Accelerometer, Pressure Sensor,
    Humidity, Generic Sensor and Temperature object implementation to support
    object model in version 1.1
  * Unified reusable resources creation.
  * Added support for object versioning.
  * Changed to allow cancel-observe to match path.
  * Made pmin and pmax attributes optional.
  * Added API function to delete object instance.
  * Fixed Registration Update send on object creation.
  * Changed to only parse TLV from the first block.
  * Changed to trigger registration update only when registered.

* Misc:

  * Added UDP packet sending support to net-shell.
  * Fixed source network interface setting when sending and when there are
    multiple network interfaces.
  * Changed connection managed to ignore not used network interfaces.
  * Added locking to network interface API function calls.
  * Changed to allow application to disable IPv4 or IPv6 support for a network interface.
  * Added support for virtual network interfaces.
  * Added support for IPv4/v6 tunneling network interface.
  * Added net events notification for PPP dead and running states.
  * Added PPP LCP MRU option support.
  * Added PPP IPCP IP and DNS address peer options support.
  * Added support for network packet capturing and sending data to external system
    for analysis.
  * Enabled running without TX or RX threads. By default, one RX thread and
    no TX thread is created. If userspace support is enabled, then one RX and one
    TX thread are created. This improves the network transmit latency when a
    packet is sent from application.
  * Changed to push highest priority net_pkt directly to driver when sending and if
    there is at least one TX thread.
  * Changed to use k_fifo instead of k_work in RX and TX processing. This prevents
    k_work from accessing already freed net_pkt struct. This also improves the latency
    of network packets when the data is passed between different network threads.
  * Changed to check network interface status when sending and return ENETDOWN to the
    application if data cannot be sent.
  * Fixed echo-server sample application and set netmask properly when VLAN is
    enabled.

* OpenThread:

  * Added microseconds timer API support.
  * Changed to switch radio off when stopping diagnostics.
  * Enabled CSL delayed transmissions.
  * Added CSL transmitter and receiver API support.
  * Changed to init NCP after USB communication is established.
  * Aligned with the new NCP API.
  * Aligned with the new CLI API.
  * Introduced new OpenThread options.
  * Added Link Metrics API support.
  * Selected ECDSA when SRP is enabled.
  * Made child related options only visible on FTD.
  * Changed OT shell not to execute OT commands when shell is not ready.

* Socket:

  * Added SO_PROTOCOL and SO_TYPE get socket option.
  * Added MSG_WAITALL receive socket option flag.
  * Added MSG_TRUNC socket option flag.
  * Added support for close method for packet sockets.
  * Added locking to socket API function calls.
  * Added support for SO_BINDTODEVICE socket option.
  * Added support for SO_SNDTIMEO socket option.
  * Made NET_SOCKETS_POSIX_NAMES be on by default. This allows application to use
    normal BSD socket API calls without adding the zsock prefix.
  * Added sample application to use SO_TXTIME socket option.

* TCP:

  * Implemented ISN calculation according to RFC6528 in TCP. This is optional and
    enabled by default, and can be disabled if needed.
  * Removed legacy TCP stack support.
  * Changed TCP to use private work queue in order not to block system work queue.

* TLS:

  * Fixed userspace access to TLS socket.
  * Added socket option support for setting and getting DTLS handshake timeout.

USB
***

* Reworked USB classes configuration. Various minor fixes in USB DFU class.

* USB HID class

  * Removed get_protocol/set_protocol from USB HID class API.
  * Allowed boot interface Protocol Code to be set per device.
  * Rework idle report implementation.

* Samples

  * Allowed to build USB Audio sampe for different platforms.
  * Added SD card support to USB MSC sample.
  * Reworked USB HID sample.

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

* Improved support for additional toolchains:
  * Support for the Intel oneApi toolchain.

* Devicetree

  - :c:macro:`DT_COMPAT_GET_ANY_STATUS_OKAY`: new macro
  - the ``96b-lscon-3v3`` and ``96b-lscon-1v8`` :ref:`compatible properties
    <dt-important-props>` now have ``linaro,`` vendor prefixes, i.e. they are
    now respectively :dtcompatible:`linaro,96b-lscon-3v3` and
    :dtcompatible:`linaro,96b-lscon-1v8`.

    This change was made to bring Zephyr's devicetrees into compliance with an
    upstream Linux regular expression used to validate compatible properties.
    This regular expression requires a letter as the first character.

* West (extensions)

  * This section only covers west :ref:`west-extensions` maintained in the
    zephyr repository. For release notes on west's built-in features, see
    :ref:`west-release-notes`.

  * Changes to the runners backends used for :ref:`flashing and debugging
    commands <west-build-flash-debug>`:

    * bossac runner: added legacy mode option into extended SAM-BA
      bootloader selection. This extends compatibility between Zephyr and
      some Arduino IDE bootloaders.

    * jlink runner: Zephyr thread awareness is now available in GDB by default
      for application builds with :kconfig:option:`CONFIG_DEBUG_THREAD_INFO` set to ``y``
      in :ref:`kconfig`. This applies to ``west debug``, ``west debugserver``,
      and ``west attach``. JLink version 7.11b or later must be installed on the
      host system, with JLink 7.20 or later strongly recommended.

    * jlink runner: default ``west flash`` output is less verbose. The old
      behavior is still available when run as ``west --verbose flash``.

    * jlink runner: when flashing, this runner now prefers a ``.hex`` file
      generated by the build system to a ``.bin``. Unlike ``.bin``, the HEX
      format includes information on the image's address range in flash, so
      this works better when flashing Zephyr images linked for locations other
      than the target's boot address, e.g. images meant to be run by
      bootloaders. The ``.bin`` file is still used as a fallback if a HEX File
      is not present.

    * openocd runner: support for ``west debug`` and ``west attach`` has been
      fixed. Previously with this runner, ``west debug`` behaved like ``west
      attach`` should, and ``west attach`` behaved like ``west debugserver``
      should.

    * pyocd runner: board-specific pyOCD configuration files in YAML can now be
      placed in :file:`support/pyocd.yaml` inside the board directory. See
      ``boards/arm/reel_board/support/pyocd.yaml`` for an example,
      and the pyOCD documentation for details on its configuration format.

  * ``west spdx``: new command which can be used to generate SPDX software
    bills of materials for a Zephyr application build. See :ref:`west-spdx`.


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

* Disk

  * Disk drivers (``disk_access_*.c``) are moved to ``drivers/disk`` and renamed
    according to their function. Driver's Kconfig options are revised and renamed.
    SDMMC host controller drivers are selected when the corresponding node
    in devicetree is enabled. Following application relevant Kconfig options
    are renamed: ``CONFIG_DISK_ACCESS_RAM`` -> `CONFIG_DISK_DRIVER_RAM`,
    ``CONFIG_DISK_ACCESS_FLASH`` -> `CONFIG_DISK_DRIVER_FLASH`,
    ``CONFIG_DISK_ACCESS_SDHC`` -> `CONFIG_DISK_DRIVER_SDMMC`.

* Management

  * MCUmgr

    * Fixed an issue with the file system management failing to
      open files due to missing initializations of :c:type:`fs_file_t`
      structures.
    * Fixed an issue where multiple SMP commands sent one after the other would
      corrupt CBOR payload.
    * Fixed problem where mcumgr over shell would stall and wait for
      retransmissions of frames.

* CMSIS subsystem

  * Moved CMSIS portability layer headers to include/portability/cmsis_os.h
    and include/portability/cmsis_os2.h

* Power management

  * ``device_pm_control_nop`` has been removed in favor of ``NULL`` when device
    PM is not supported by a device. In order to make transition easier for
    out-of-tree users a macro with the same name is provided as an alias to
    ``NULL``. The macro is flagged as deprecated to make users aware of the
    change.

  * Devices set as busy are no longer suspended by the system power management.

  * The time necessary to exit a sleep state and return to the active state was
    added in ``zephyr,power-state`` binding and accounted when the system
    changes to a power state.

  * Device runtime power management (PM), former IDLE runtime, was
    completely overhauled.

    * Multiple threads can wait an operation (``pm_device_get_async`` and
      ``pm_device_put_async``) to finish.
    * A new API ``pm_device_wait`` was added so that drivers can easily
      wait for an async request to finish.
    * The API can be used in  :ref:`pre-kernel <api_term_pre-kernel-ok>` stages.
    * Several concurrence issues related with atomics access and the usage
      of the polling API have been fixed. Condition variables are now used to
      handle notification.

* Logging

  * Introduced logging v2 which allows logging any variable types (including
    floating point variables). New version does not require transient string
    duplication (``log_strdup()``). Legacy mode remains and is still the default
    but user API is not changed and modes are interchangeable.
    ``CONFIG_LOG2_MODE_DEFERRED`` or ``CONFIG_LOG2_MODE_IMMEDIATE`` enable
    logging v2. Logging backend API is extended to support v2 and the most
    popular backends (UART, shell) are updated.

* Shell

  * Added ``CONFIG_SHELL_BACKEND_DUMMY_BUF_SIZE`` option that allows to set
    size of the dummy backend buffer; changing this parameter allows to work
    around issue, where output from command, shell that is gathered by the dummy
    backend, gets cut to the size of buffer.

* Storage

  * Added persistent write progress to stream_flash.

* Task Watchdog

  * This new subsystem was added with this release and allows supervision of
    individual threads. It is based on a regularly updated kernel timer,
    whose ISR is never actually called in regular system operation.

    An existing hardware watchdog can be used as an optional fallback if the
    task watchdog itself gets stuck.

* Tracing

  * ``CONFIG_TRACING_CPU_STATS`` was removed in favor of
    ``CONFIG_THREAD_RUNTIME_STATS`` which provides per thread statistics. The
    same functionality is also available when Thread analyzer is enabled with
    the runtime statistics enabled.
  * Expanded and overhauled tracing hooks with more coverage and support for
    tracing all kernel objects and basic power management operations.
  * Added support for Percepio Tracealyzer, a commercial tracing tool which now
    has built-in support for Zephyr. We now have the Percepio tracerecorder
    integrated as a module.
  * Expanded support for the new hooks in SEGGER Systemview and enhanced the
    description file with support for all APIs.

* Debug
  * SEGGER Systemview and RTT SDK updated to version v3.30

* OS

  * Reboot functionality has been moved to ``subsys/os`` from ``subsys/power``.
    A consequence of this movement is that the ``<power/reboot.h>`` header has
    been moved to ``<sys/reboot.h>``. ``<power/reboot.h>`` is still provided
    for compatibility, but it will produce a warning to inform users of the
    relocation.

HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.


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

* Synchronized Trusted-Firmware-M module to the upstream v1.3.0 release.
* Configured QEMU to run Zephyr samples and tests in CI on mps2_an521_nonsecure
  (Cortex-M33 Non-Secure) with TF-M as the secure firmware component.
* Added Kconfig options for selecting the desired TF-M profile and build type
* Added Kconfig options for enabling the desired TF-M secure partitions
* Added a new sample to run the PSA tests with Zephyr
* Added a new sample to run the TF-M regression tests using the Zephyr build system
* Added support for new platforms

   * BL5340 DVK
   * STM32L562E DK

* NOTE: Trusted-Firmware-M can not currently be used with mbedtls 2.26.0 when
  PSA APIs are enabled in mbedtls (``MBEDTLS_USE_PSA_CRYPTO`` and
  ``MBEDTLS_PSA_CRYPTO_C``). If both TF-M and mbedtls are required, mbedtls
  must be used without the PSA APIs. This will be resolved in a future
  update to mbedtls.

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

* Documentation look and feel has been improved by using a new stylesheet.
* Doxygen is now run by Sphinx using the ``doxyrunner`` custom extension. The
  new extension centralizes multiple scattered workarounds that existed before
  in a single place.
* Doxygen now runs with ``WARN_AS_ERROR`` enabled.
* Documentation known warnings are now filtered using a custom Sphinx extension:
  ``warnings_filter``. This extension removes the need of post-processing
  the Sphinx output and allows to use the ``-W`` option (treat warnings as
  errors) which has been enabled by default.
* External content, e.g. samples and boards documentation is now handled by
  the ``external_content`` extension.
* Sphinx is now run in parallel mode by default (``-j auto``).
* The documentation helper ``Makefile`` has been moved from the repository root
  to the ``doc`` folder.

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

* Twister's ``dt_compat_enabled_with_alias()`` test case filter was deprecated
  in favor of a new ``dt_enabled_alias_with_parent_compat()`` filter. The old
  filter is still supported, but it may be removed in a future release.

  To update, replace uses like this:

  .. code-block:: yaml

     filter: dt_compat_enabled_with_alias("gpio-leds", "led0")

  with:

  .. code-block:: yaml

     filter: dt_enabled_alias_with_parent_compat("led0", "gpio-leds")

* Add a feature which handles pytest script in twister and provide an example.
* Provide test execution time per ztest testcase.
* Added and refined some testcases, most of them are negative testcases, to
  improve the test code coverage:

   * Testcases of x86's regular/direct interrupts and offload job from ISR.
   * Testcases of SMP, and enabled SMP for existed testing of semaphore, condvar, etc.
   * Testcases of memory protection, userspace and memory heap.
   * Testcases of data structure include stack, queue, ringbuffer and rbtree.
   * Testcases of IPC include pipe, poll, mailbox, message queue.
   * Testcases of synchronization include mutex, semaphore, atomic operations.
   * Testcases of scheduling and thread.
   * Testcases of testing for arch_nop() and errno.
   * Testcases of libc and posix API.
   * Testcases of log and sensor subsystem.

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

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

* :github:`35962` - drivers using deprecated Kconfigs
* :github:`35955` - Bluetooth: Controller: Regression in connection setup
* :github:`35949` - can: mcan: sjw-data devicetree configuration is not written correctly
* :github:`35941` - subsys: tracing: sysview: No SEGGER_SYSVIEW.h in path
* :github:`35926` - Shell tab-completion with more than two levels of nested dynamic commands fails
* :github:`35924` - Help with Configuring Custom GPIO Pins
* :github:`35916` - drivers: TI cc13xx_cc26xx: build error when PM is enabled (serial, entropy, spi, i2c modules)
* :github:`35911` - shield sample sensorhub does not produce and meaningful data
* :github:`35910` - LIS2MDL reporting wrong temperature
* :github:`35896` - frdm_k64f: build failure missing dt-bindings/clock/kinetis_sim.h: No such file or directory
* :github:`35890` - Build system ignores explicit ZephyrBuildConfiguration_ROOT variable
* :github:`35882` - Fixed width documentation makes DT bindings docs unreadable
* :github:`35876` - Bluetooth: host: CCC store not correctly handled for multiple connections
* :github:`35871` - LPS22HH sensor reporting wrong pressure data
* :github:`35840` - Bluetooth: host: L2CAP enhanced connection request conformance test issues
* :github:`35838` - Bluetooth: ISO: BIG termination doesn't fully unref the connection
* :github:`35826` - LORAWAN Compatibility with nrf52832 and sx1262
* :github:`35813` - Zephyr Native Posix Build Uses Linux Build Machine Headers out of Sandbox
* :github:`35812` - ESP32 Factory app partition is not bootable
* :github:`35781` - Missing response parameter for HCI_LE_Set_Connectionless_IQ_Sampling_Enable HCI command
* :github:`35772` - Support C++ exceptions on NIOS2
* :github:`35764` - tests: kernel: threads: no multithreading: fails with CONFIG_STACK_SENTINEL=y
* :github:`35762` - SAMPLES: shell_module gives no console output on qemu_leon3
* :github:`35756` - ESP32 Ethernet Support
* :github:`35737` - drivers: can: mcan: sjw not initialized when CAN_FD_MODE is enabled
* :github:`35714` - samples: subsys: testusb: I want to know how to test in window10.
* :github:`35713` - tests: kernel.scheduler.multiq: test_k_thread_suspend_init_null failure
* :github:`35694` - No console output from NIOS2 Max10
* :github:`35693` - gpio_mcux_lpc.c uses devicetree instance numbers incorrectly
* :github:`35686` - Bluetooth: Crash in bt_gatt_dm_attr_chrc_val when BLE device is disconnected during discovery process
* :github:`35681` - Unable to get ouput for samples/subsys/logging/logger and samples/philosophers
* :github:`35677` - samples/subsys/console/getchar and samples/subsys/console/getline build breaks for arduino_nano_33_ble
* :github:`35655` - Arm64: Assertion failed when CONFIG_MP_CPUS >= 3.
* :github:`35653` - ARC MWDT toolchain put __start and __reset at different address
* :github:`35633` - Out of bound read: Multiple Coverity sightings in generated code
* :github:`35631` - [Coverity CID: 205610] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`35630` - [Coverity CID: 205657] Out-of-bounds read in /zephyr/include/generated/syscalls/sample_driver.h (Generated Code)
* :github:`35629` - [Coverity CID: 207968] Out-of-bounds read in /zephyr/include/generated/syscalls/counter.h (Generated Code)
* :github:`35628` - [Coverity CID: 207976] Out-of-bounds read in /zephyr/include/generated/syscalls/counter.h (Generated Code)
* :github:`35627` - [Coverity CID: 208195] Out-of-bounds read in /zephyr/include/generated/syscalls/gpio.h (Generated Code)
* :github:`35626` - [Coverity CID: 210588] Out-of-bounds read in /zephyr/include/generated/syscalls/dac.h (Generated Code)
* :github:`35625` - [Coverity CID: 211042] Out-of-bounds read in /zephyr/include/generated/syscalls/socket.h (Generated Code)
* :github:`35624` - [Coverity CID: 214226] Out-of-bounds read in /zephyr/include/generated/syscalls/uart.h (Generated Code)
* :github:`35623` - [Coverity CID: 215223] Out-of-bounds read in /zephyr/include/generated/syscalls/net_ip.h (Generated Code)
* :github:`35622` - [Coverity CID: 215238] Out-of-bounds read in /zephyr/include/generated/syscalls/net_ip.h (Generated Code)
* :github:`35621` - [Coverity CID: 219477] Out-of-bounds read in /zephyr/include/generated/syscalls/pwm.h (Generated Code)
* :github:`35620` - [Coverity CID: 219482] Out-of-bounds read in /zephyr/include/generated/syscalls/pwm.h (Generated Code)
* :github:`35619` - [Coverity CID: 219496] Out-of-bounds read in /zephyr/include/generated/syscalls/ztest_error_hook.h (Generated Code)
* :github:`35618` - [Coverity CID: 219506] Out-of-bounds read in /zephyr/include/generated/syscalls/log_ctrl.h (Generated Code)
* :github:`35617` - [Coverity CID: 219568] Out-of-bounds read in /zephyr/include/generated/syscalls/net_if.h (Generated Code)
* :github:`35616` - [Coverity CID: 219586] Out-of-bounds read in /zephyr/include/generated/syscalls/net_if.h (Generated Code)
* :github:`35615` - [Coverity CID: 219648] Uninitialized scalar variable in /zephyr/include/generated/syscalls/test_syscalls.h (Generated Code)
* :github:`35614` - [Coverity CID: 219725] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`35613` - [Coverity CID: 225900] Out-of-bounds access in tests/net/lib/dns_addremove/src/main.c
* :github:`35612` - [Coverity CID: 229325] Out-of-bounds read in /zephyr/include/generated/syscalls/log_msg2.h (Generated Code)
* :github:`35611` - [Coverity CID: 230223] Out-of-bounds read in /zephyr/include/generated/syscalls/log_msg2.h (Generated Code)
* :github:`35610` - [Coverity CID: 232755] Out-of-bounds read in /zephyr/include/generated/syscalls/log_ctrl.h (Generated Code)
* :github:`35609` - [Coverity CID: 235917] Out-of-bounds read in /zephyr/include/generated/syscalls/log_msg2.h (Generated Code)
* :github:`35608` - [Coverity CID: 235923] Out-of-bounds read in /zephyr/include/generated/syscalls/log_msg2.h (Generated Code)
* :github:`35607` - [Coverity CID: 235933] Out-of-bounds read in /zephyr/include/generated/syscalls/gpio.h (Generated Code)
* :github:`35606` - [Coverity CID: 235951] Out-of-bounds read in /zephyr/include/generated/syscalls/log_ctrl.h (Generated Code)
* :github:`35605` - [Coverity CID: 236005] Out-of-bounds read in /zephyr/include/generated/syscalls/log_ctrl.h (Generated Code)
* :github:`35604` - [Coverity CID: 236129] Unused value in drivers/adc/adc_lmp90xxx.c
* :github:`35603` - [Coverity CID: 236130] Wrong sizeof argument in drivers/adc/adc_lmp90xxx.c
* :github:`35596` - Bluetooth: Cannot connect if extended advertising is enabled in ``prj.conf``
* :github:`35586` - Timer based example on docu using nrf52-dk compile error.
* :github:`35580` - Fault when logging
* :github:`35569` - tests/lib/mem_alloc failed with arcmwdt toolchain
* :github:`35567` - some mwdt compiler options can't be recognized by zephyr_cc_option
* :github:`35561` - Issue with fat_fs example on nucleo_f767zi
* :github:`35553` - all menuconfig interfaces contain sound open firmware/SOF text
* :github:`35543` - samples: subsys: display: lvgl: is run on nucleo_f429zi and nucleo_f746zg but should be skipped
* :github:`35541` - sockets_tls: when using dtls with sara-r4 modem, handshake hangs if no reply
* :github:`35540` - tests: ztest: error_hook: fails on nucleo_g071rb and nucleo_l073rz
* :github:`35539` - tests: drivers: spi: spi_loopback: test failed since #34731 is merged
* :github:`35524` - tests: samples: led: LED PWM sample fails on nrf platforms
* :github:`35522` - doc: Current section is not shown in the side pane nor the page top cookie
* :github:`35512` - OpenThread can't find TRNG driver on nRF5340
* :github:`35509` - tests: timer: Unstable tests using timer at nrf platforms
* :github:`35489` - samples: net: gsm_modem: build fails if CONFIG_GSM_MUX=y
* :github:`35480` - pm: device_runtime: ``pm_device_request`` can block forever
* :github:`35479` - address is not a known kernel object exception with arcmwdt toolchain
* :github:`35476` - bluetooth: controller assertion when scanning with multiple active connections
* :github:`35474` - The dma-stm32 driver don't build for STM32F0 MCUs
* :github:`35444` - drivers: sensor: sbs-gauge: The sbs-gauge cannot be read from sensor shell
* :github:`35401` - Enabling POSIX_API leads to SSL handshake error
* :github:`35395` - STM32F4: Infinite reboot loop due to Ethernet initialization
* :github:`35390` - net.socket.tls.tls_ext: frdm_k64f test failure
* :github:`35383` - Can't setup ISO Broadcast Demo on nrf53dk
* :github:`35380` - sys: timeutil: inconsistent types for local times
* :github:`35363` - bt_gatt_discover() retunrs incorrect handle (offset by -1)
* :github:`35360` - Power consumption nRF52
* :github:`35352` - [Coverity CID: 215376] Out-of-bounds access in drivers/sensor/lis2dh/lis2dh_trigger.c
* :github:`35351` - [Coverity CID: 219472] Unrecoverable parse warning in tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`35350` - [Coverity CID: 236055] Out-of-bounds access in subsys/modbus/modbus_core.c
* :github:`35349` - [Coverity CID: 236057] Unrecoverable parse warning in tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`35348` - [Coverity CID: 236060] Out-of-bounds access in subsys/net/l2/ppp/ppp_l2.c
* :github:`35347` - [Coverity CID: 236064] Dereference null return value in subsys/bluetooth/controller/ll_sw/ull.c
* :github:`35346` - [Coverity CID: 236069] Out-of-bounds access in tests/lib/c_lib/src/main.c
* :github:`35345` - [Coverity CID: 236074] Out-of-bounds access in tests/lib/c_lib/src/main.c
* :github:`35344` - [Coverity CID: 236075] Out-of-bounds access in subsys/bluetooth/controller/hci/hci.c
* :github:`35343` - [Coverity CID: 236079] Untrusted divisor in subsys/bluetooth/controller/hci/hci.c
* :github:`35342` - [Coverity CID: 236085] Dereference after null check in samples/userspace/prod_consumer/src/app_a.c
* :github:`35341` - twister: Hardware map creation is buggy (+ inaccurate docs)
* :github:`35338` - USB: ethernet CDC ECM/EEM support is broken
* :github:`35336` - tests: samples: power: samples/subsys/pm/device_pm/sample.power.ospm.dev_idle_pm fails on nrf52 platforms
* :github:`35329` - samples: gsm_modem: Compilation failed, likely related to logging changes
* :github:`35327` - Sensor Code for CC3220sf
* :github:`35325` - Shell: Kernel: Reboot: echo is abruptly terminated
* :github:`35321` - Improve STM32: Serial Driver,Handle uart mode per instance
* :github:`35307` - ARM64 system calls are entered with interrupts masked
* :github:`35305` - Linking order when using both TF-M and Mbed TLS
* :github:`35299` - PM suspend IPC message sporadically not being  delivered
* :github:`35297` - STM32 SPI - wrong behavior after PR 34731
* :github:`35286` - New logging breaks eclipse
* :github:`35278` - LittleFs Sample will not build for qemu_riscv64 sample target
* :github:`35263` - device_pm_control_nop is used in dac_mcp4725.c
* :github:`35242` - intel_adsp_cavs15: run kernel common testcases failed on ADSP
* :github:`35241` - intel_adsp_cavs15: run interrupt testcases failed on ADSP
* :github:`35236` - tests: doc: Document generation process FAILS with valid module ``samples:``
* :github:`35223` - Coverity [CID 221772]: Wrong operator used in logging subsystem, multiple violations
* :github:`35220` - tests: dma: memory-to-memory transfer fails on stm32f746zg nucleo board
* :github:`35219` - tests: driver: dma test case loop_transfer fails on stm32 with dmamux
* :github:`35215` - tests/kernel/msgq/msgq_usage failed on hsdk board
* :github:`35209` - tests/kernel/mem_heap/mheap_api_concept failed on hsdk board
* :github:`35204` - PPI channel assignment for Bluetooth controller is incorrect for nRF52805
* :github:`35202` - smp atomic_t global_lock will never be cleared when a thread oops with global_lock is set
* :github:`35200` - tests/kernel/smp failed on hsdk board
* :github:`35199` - Queues: there is no documentation about queue's implementation.
* :github:`35198` - subsys.pm.device_pm: frdm_k64f leave idel fails
* :github:`35197` - Zephyr Project Development with 2 Ethernet Interfaces Supported (eth0, and eth1)
* :github:`35195` - doc, coding guidelines: broken CERT-C links
* :github:`35191` - GIT Checkout of Master Branch is 2.6.0rc1 versus west update as 2.5.99
* :github:`35189` - Coding Guidelines: Resolve the issues under Rule 21.2
* :github:`35187` - Version selection not working
* :github:`35176` - strtol crashes
* :github:`35175` - quectel-bg9x crashes in modem_rssi_query_work
* :github:`35169` - esp32:    uart_poll_in never ready for UART2 only
* :github:`35163` - [Coverity CID: 236009] Wrong sizeof argument in tests/lib/cbprintf_package/src/test.inc
* :github:`35162` - [Coverity CID: 235972] Wrong sizeof argument in tests/lib/cbprintf_package/src/test.inc
* :github:`35161` - [Coverity CID: 235962] Unused value in tests/kernel/mem_protect/mem_map/src/main.c
* :github:`35160` - [Coverity CID: 235930] Unused value in kernel/mmu.c
* :github:`35159` - [Coverity CID: 232698] Uninitialized scalar variable in samples/net/sockets/txtime/src/main.c
* :github:`35158` - [Coverity CID: 224630] Uninitialized scalar variable in subsys/net/ip/igmp.c
* :github:`35157` - [Coverity CID: 221380] Uninitialized scalar variable in subsys/bluetooth/controller/ll_sw/ull_iso.c
* :github:`35156` - [Coverity CID: 235979] Unchecked return value in drivers/sensor/iis2mdc/iis2mdc_trigger.c
* :github:`35155` - [Coverity CID: 235677] Unchecked return value in drivers/gpio/gpio_cy8c95xx.c
* :github:`35154` - [Coverity CID: 233524] Unchecked return value in include/drivers/dma.h
* :github:`35153` - [Coverity CID: 236006] Structurally dead code in tests/subsys/logging/log_api/src/test.inc
* :github:`35152` - [Coverity CID: 235986] Structurally dead code in tests/subsys/logging/log_api/src/test.inc
* :github:`35151` - [Coverity CID: 235943] Reliance on integer endianness in include/sys/cbprintf_cxx.h
* :github:`35150` - [Coverity CID: 225136] Out-of-bounds write in tests/kernel/sched/deadline/src/main.c
* :github:`35149` - [Coverity CID: 234410] Out-of-bounds read in tests/kernel/sched/preempt/src/main.c
* :github:`35148` - [Coverity CID: 236015] Out-of-bounds access in tests/subsys/logging/log_api/src/mock_backend.c
* :github:`35147` - [Coverity CID: 236012] Out-of-bounds access in subsys/bluetooth/audio/vcs_client.c
* :github:`35146` - [Coverity CID: 235994] Out-of-bounds access in tests/kernel/interrupt/src/interrupt_offload.c
* :github:`35145` - [Coverity CID: 235984] Out-of-bounds access in include/sys/cbprintf_cxx.h
* :github:`35144` - [Coverity CID: 235944] Out-of-bounds access in subsys/bluetooth/audio/vcs_client.c
* :github:`35143` - [Coverity CID: 235921] Out-of-bounds access in include/sys/cbprintf_cxx.h
* :github:`35142` - [Coverity CID: 235914] Out-of-bounds access in subsys/bluetooth/audio/vcs.c
* :github:`35141` - [Coverity CID: 235913] Out-of-bounds access in subsys/bluetooth/audio/vcs.c
* :github:`35140` - [Coverity CID: 231072] Out-of-bounds access in tests/kernel/sched/preempt/src/main.c
* :github:`35139` - [Coverity CID: 229646] Out-of-bounds access in subsys/bluetooth/audio/vocs.c
* :github:`35138` - [Coverity CID: 229545] Out-of-bounds access in tests/subsys/canbus/isotp/conformance/src/main.c
* :github:`35137` - [Coverity CID: 225993] Out-of-bounds access in tests/subsys/canbus/isotp/conformance/src/main.c
* :github:`35136` - [Coverity CID: 235916] Operands don't affect result in drivers/adc/adc_stm32.c
* :github:`35135` - [Coverity CID: 235911] Negative array index write in tests/subsys/logging/log_api/src/mock_backend.c
* :github:`35134` - [Coverity CID: 222151] Negative array index write in tests/subsys/logging/log_msg2/src/main.c
* :github:`35133` - [Coverity CID: 232501] Missing varargs init or cleanup in subsys/logging/log_msg2.c
* :github:`35132` - [Coverity CID: 236003] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35131` - [Coverity CID: 235998] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35130` - [Coverity CID: 235997] Logically dead code in drivers/adc/adc_stm32.c
* :github:`35129` - [Coverity CID: 235990] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35128` - [Coverity CID: 235970] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35127` - [Coverity CID: 235965] Logically dead code in tests/subsys/logging/log_api/src/test.inc
* :github:`35126` - [Coverity CID: 235961] Logically dead code in tests/subsys/logging/log_api/src/test.inc
* :github:`35125` - [Coverity CID: 235956] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35124` - [Coverity CID: 235955] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35123` - [Coverity CID: 235954] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35122` - [Coverity CID: 235952] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35121` - [Coverity CID: 235950] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35120` - [Coverity CID: 235934] Logically dead code in subsys/bluetooth/audio/vcs.c
* :github:`35119` - [Coverity CID: 235932] Logically dead code in samples/sensor/adxl372/src/main.c
* :github:`35118` - [Coverity CID: 235919] Logically dead code in samples/sensor/bmg160/src/main.c
* :github:`35117` - [Coverity CID: 235945] Incorrect sizeof expression in include/sys/cbprintf_cxx.h
* :github:`35116` - [Coverity CID: 235987] Incompatible cast in include/sys/cbprintf_cxx.h
* :github:`35115` - [Coverity CID: 236000] Improper use of negative value in tests/lib/cbprintf_package/src/test.inc
* :github:`35114` - [Coverity CID: 221976] Division or modulo by zero in tests/drivers/can/timing/src/main.c
* :github:`35113` - [Coverity CID: 235985] Dereference before null check in subsys/bluetooth/audio/vcs_client.c
* :github:`35112` - [Coverity CID: 235983] Dereference after null check in samples/sensor/max17262/src/main.c
* :github:`35111` - [Coverity CID: 234630] Dereference after null check in tests/net/dhcpv4/src/main.c
* :github:`35110` - [Coverity CID: 220616] Arguments in wrong order in tests/subsys/canbus/isotp/conformance/src/main.c
* :github:`35108` - tests: drivers: pwm: pwm_api: failed on nucleo_f207zg
* :github:`35107` - Atmel SAM E70 / Cortex-M7 fails to boot if CONFIG_NOCACHE_MEMORY=y
* :github:`35104` - arch.interrupt.gen_isr_table.arm_mainline: fails on lpcxpresso55s16_ns
* :github:`35102` - testing.ztest.error_hook: fails on lpcxpresso55s16_ns
* :github:`35100` - libraries.libc.sprintf_new: fails on lpcxpresso55s16_ns and lpcxpresso55s69_ns
* :github:`35099` - benchmark.kernel.application.fp.arm: Illegal load of EXC_RETURN into PC on lpcxpresso55s16_ns and lpcxpresso55s69_ns
* :github:`35097` - arch.interrupt: fails on NXP Cortex-M0+ platforms
* :github:`35091` - enc424j600 does not work
* :github:`35089` - stm32h7: systematic crash at each second boot with NETWORKING=y
* :github:`35083` - dts: stm32mp1: SPI2 mixup with SAI2, SPI3 mixup with SAI3
* :github:`35082` - intel_adsp_cavs15: All the testcases run failed on ADSP
* :github:`35079` - acrn_ehl_crb: build warnings for old APIC_TIMER configs
* :github:`35076` - acrn_ehl_crb does not work with CPUs >1
* :github:`35075` - .west/config west.yml and zephyr versioning during project development
* :github:`35073` - timer: cortex_m_systick: uptime drifting in tickless mode
* :github:`35060` - tests/kernel/common: test_nop failed on ARMV7_M_ARMV8_M_MAINLINE
* :github:`35058` - Bluetooth: deadlock when canceling db_hash.work from settings commit handler
* :github:`35051` - CONFIG_LOG2 fails for floating point output with warning and bad output
* :github:`35048` - mcuboot with enabled  serial recovery does not compile
* :github:`35046` - Tracing shows k_busy_wait() being executed very often on nRF platforms
* :github:`35043` - NXP: Build error : ModuleNotFoundError: No module named 'elftools'
* :github:`35041` - Crash in net-shell when invoking "net dns" command
* :github:`35036` - STM32: Wrong uart_event_tx len calculation
* :github:`35033` - samples/boards: stm32 pm blinky fails when run with twister
* :github:`35028` - frdm_k64f: failed to run tests/subsys/pm/power_mgmt/
* :github:`35027` - frdm_k64f: failed to run testcase tests/drivers/adc/adc_emul/
* :github:`35026` - sam_e70b_xplained: failed to run testcases tests/drivers/adc/adc_emul/
* :github:`35013` - Bluetooth: Controller: Out-of-Bound ULL context access during connection completion
* :github:`34999` - Using BT_ISO bluetooth hci_usb sample, and  enable, but still shows no command supported
* :github:`34989` - Implement arch_page_phys_get() for ARM64
* :github:`34979` - MIMRT685-EVK board page has broken links
* :github:`34978` - misleading root folder size in footprint reports
* :github:`34969` - Documentation still mentions deprecated macro DT_INST_FOREACH_STATUS_OKAY
* :github:`34964` - net regression: Connection to Zephyr server non-deterministically leads to client timeout, ENOTCONN on server side
* :github:`34962` - tfm: cmake: Toolchain not being passed into psa-arch-tests
* :github:`34950` - xtensa arch ：The source code version is too old
* :github:`34948` - SoF module is not pointing at Zehpyr repo
* :github:`34935` - LwM2M: Block transfer with TLV format does not work
* :github:`34932` - drvers/flash/nrf_qspi_nor: high power consumption on nrf52840
* :github:`34931` - dns resolve timeout leads to CPU memory access violation error
* :github:`34925` - tests/lib/cbprintf_package fails to build
* :github:`34923` - net.socket.get_addr_info: frdm_k64f test fails
* :github:`34917` - arch.interrupt.arm| arch.interrupt.extra_exception_info: lpcxpresso55s28 series: test failure
* :github:`34915` - arch.interrupt.gen_isr_table.arm_mainline:lpcxpresso55s16_ns/lpcxpresso55s28: interrupt 57 does not work
* :github:`34911` - tests/kernel/mem_protect/mem_protect: frdm_k82f/frdm_k64f unexpected fatal error
* :github:`34909` - dma_loopback:lpcxpresso55s28_ns driver test failure
* :github:`34904` - uart_mcux_lpuart: Enable driver to work with ``CONFIG_MULTITHREADING=n``
* :github:`34903` - doc: Target name is wrong for rcar_h3ulcb board
* :github:`34891` - mcumgr timeout due to smp_shell_process stalling
* :github:`34880` - Convert SoF Module to new kwork API
* :github:`34865` - CONFIG_NET_SOCKETS_PACKET interferes with other network traffic (gptp, IP)
* :github:`34862` - CAN ISO-TP implementation not using local work queue
* :github:`34852` - Some bluetooth advertising packages never get transmitted over-air (Bluetooth Mesh application)
* :github:`34844` - qemu_cortex_a53_smp:  tests/ztest/error_hook failed after enabling the FPU context switching support
* :github:`34840` - CONFIG_MULTITHREADING=n is not tested on hardware platforms
* :github:`34838` - tests/subsys/logging/log_msg2 failes on qemu_cortex_a53
* :github:`34837` - Unstable multi connections between NRF52840
* :github:`34827` - tests: power management: test_power_state_trans fails on nrf boards
* :github:`34796` - x86 jlink runner fails on M1 macs
* :github:`34794` - LIS2DH Hard Fault when INT2 is not defined
* :github:`34788` - APIC timer does not support SMP
* :github:`34777` - semaphore and condvar_api tests fails after ARM64 FPU context switch commit on qemu_cortex_a53_smp
* :github:`34772` - Mixed usage of signed/unsigned integer by the logging subsystem
* :github:`34757` - west update: Default behavior should fetch only --depth 1
* :github:`34753` - Building and Debugging Zephyr for Native Platform on Linux using VSCode and/or QtCreator
* :github:`34748` - Native posix: Segmentation fault in case of allocations without explicit heap assignment
* :github:`34739` - tests/arch/arm/arm_no_multithreading/arch.arm.no_multithreading fails to build on a number of platforms
* :github:`34734` - Can handler doesn't compile with CONFIG_USERSPACE
* :github:`34722` - nvs: possibility of losing data
* :github:`34716` - flash: spi_nor: build fails when CONFIG_SPI_NOR_SFDP_RUNTIME is enabled
* :github:`34696` - Unable to select LOG_DICTIONARY_SUPPORT when TEST_LOGGING_DEFAULTS=y
* :github:`34690` - net: process_rx_packet() work handler violates requirements of Workqueue Threads implementation
* :github:`34687` - intel_adsp_cavs15: run tests/kernel/semaphore/semaphore/ failed on ADSP
* :github:`34683` - MCUboot not confirm image when using 'west flash'
* :github:`34672` - stm32h7: issue with CONFIG_UART_ASYNC_API=y
* :github:`34670` - smp_svr sample configured for serial port with shell management enabled does not work
* :github:`34669` - uart_read_fifo() reads only 2 chars on nucleo STM32L43KC and nRF52840-DK
* :github:`34668` - i2c_ite_it8xxx2.c fails to build - possibly related to device_pm_control_nop changes
* :github:`34667` - posix_apis:mimxrt685_evk_cm33 timeout in test_posix_realtime
* :github:`34662` - many udp networking cases fail on nxp platforms
* :github:`34658` - TF-M integration samples do not work with GNU ARM Embedded having GCC v10.x.x
* :github:`34656` - STM32 ADC - read of multiple channels in a sequence
* :github:`34644` - CAN - Bus Driver Sample
* :github:`34635` - BME280 build error
* :github:`34633` - STM32: Mass conversion of boards to dts based clock control configuration
* :github:`34624` - Coding guidelines 15.7 PR causes tests failures
* :github:`34605` - flash_stm32h7x.c fails to build
* :github:`34601` - sample: bluetooth: beacon: USAGE FAULT after few seconds on board b_l4s5i_iot01a
* :github:`34597` - Mismatch between ``ot ping`` and ``net ping``
* :github:`34593` - Using hci_usb with Bluez 5.55 or 5.58
* :github:`34585` - mec15xxevb_assy6853: test_timeout_order in tests/kernel/common assertion failed
* :github:`34584` - kernel: workqueue thread is occasionally not invoked when kernel is run in cooperative mode only
* :github:`34583` - twister failing: fails platform native_posix, test lib/cmsis_dsp/filtering
* :github:`34581` - Unable to work with SX1276 Lora module.
* :github:`34570` - IPC samples running secure but configured nonsecure (AN521)
* :github:`34568` - Compilation error with zephyr 2.3.0
* :github:`34563` - net: lib: sockets: Unable to select() file descriptors with number >= 32
* :github:`34558` - Compilation error with Log v2 and CONFIG_LOG_PRINTK
* :github:`34541` - per-adv-sync-create doesn't work on nRF52840, ./tests/bluetooth/shell/
* :github:`34538` - STM32 temperature sensor
* :github:`34534` - west sign regression when HEX file not exists
* :github:`34527` - Cpp compiling error: expected primary-expression before 'char'.    _Generic macros problem
* :github:`34526` - logging tests fails to build on a number of platforms
* :github:`34515` - samples: net: syslog_net: hard fault when running on frdm_k64f
* :github:`34505` - mimxrt1050_evk:failed to run testcases tests/net
* :github:`34503` - up_squared and ehl_crb: test fails from timeout in application_development.cpp.libcxx.exceptions
* :github:`34500` - thingy52 lis2dh12 sensor values too large
* :github:`34495` - logger: Logger API cannot be compiled with C++
* :github:`34492` - Logging still broken with SOF
* :github:`34482` - net_tunnel_virtual:frdm_k64f: build failure
* :github:`34474` - MPS2-AN385 SRAM does not match what the documentation page says
* :github:`34473` - Add Requirements repository with infrastructure and placeholder requirements
* :github:`34469` - nrf53: nrf5340dk_nrf5340_cpunet not executing.
* :github:`34463` - LwM2M bootstrap DELETE operation not working
* :github:`34462` - samples: net: sockets: packet: reception stops working after a while
* :github:`34461` - Unable to use PWM pins with STM Nucleo H743ZI
* :github:`34443` - Document font display is incomplete
* :github:`34439` - Logging subsystem causes build to fail with LLVM
* :github:`34434` - subsys: testsuite: ztest framework breaks if run in cooperative mode only
* :github:`34426` - RFC: API Change: USB HID remove get_protocol/set_protocol/get_idle/set_idle callbacks
* :github:`34423` - twister build issue with arm64
* :github:`34419` - significant build time increase with new logging subsystem
* :github:`34416` - Configuration HAS_DTS has no function, preventing compile for vendors without device tree
* :github:`34409` - mDNS response on link local when using DHCPv4 and AutoIP/Static IP
* :github:`34403` - Logging disable function causes Zephyr hard lockup
* :github:`34402` - spi: spi_nrfx_spim: wrong clock frequency selected
* :github:`34397` - Update getting started docs to reflect gdb python requirements
* :github:`34387` - Error message in include/linker/kobject-text.ld is unclear
* :github:`34382` - fs/nvs: if closing ATE has to high offset NVS iterates up to the end of flash.
* :github:`34372` - CPU Lockups when using own Log Backend
* :github:`34369` - Driver esp for wifi got a dead lock.
* :github:`34368` - Cmake's Python path breaks after using west build --pristine
* :github:`34363` - k_work: incorrect return values for synchronous cancel
* :github:`34355` - LittleFS sample code catch an "undefined symbol 'ITCM_ADDR' referenced in expression" in linker step
* :github:`34345` - samples/net/civetweb/websocket_server fails to build
* :github:`34342` - No output on SWO pin (STM32L4)
* :github:`34341` - SWO logging and DWT timing collision
* :github:`34329` - lwm2m: pmin and pmax attributes should be optional
* :github:`34325` - hal: microchip: Missing Wake bit definitions
* :github:`34309` - unable to connect to azure iot hub via mqtt protocol
* :github:`34308` - SPI transceive function only transmitting first tx_buffer on Sifive's MCU
* :github:`34304` - intel_adsp_cavs15: run tests/kernel/queue/ failed on ADSP
* :github:`34295` - TensorFlow Lite Micro Module
* :github:`34280` - Add USB to LPCXpresso55S69 board
* :github:`34275` - drivers: led_pwm: Improper label assignment
* :github:`34272` - twister: Add memory footprint info to json report
* :github:`34270` - NVS read after consecutive restarts.
* :github:`34265` - BME280 Pressure calculation
* :github:`34264` - CI: twister: Add  merged report from all sub-builds to buildkite build artifacts
* :github:`34262` - Unable to find detailed documentation on pinmux driver development
* :github:`34249` - Unable to initialize on STM32F103RE + Quectel EC21 using BG9x driver
* :github:`34246` - LoRa driver sending opcode of commands without parameters
* :github:`34234` - UART NS16550 Underflow Issue During Clearing Port
* :github:`34233` - OpenThread build issues
* :github:`34231` - uzlib (decompression library)
* :github:`34229` - C++ Exception Support in qemu_riscv32 emulation
* :github:`34225` - BBC micro:bit v1.5 LSM303AGR-ACCEL
* :github:`34216` - Using nrfx_gpiote library with spi(nrf52840)
* :github:`34214` - codes reference weak variable are optimized out
* :github:`34209` - BLE Mesh Provisioning generates value 0 outside of Specification for Blink, Beep, or Vibrate
* :github:`34206` - Question: Is zephyrproject actively maintaining the windows-curses sub-project?
* :github:`34202` - MPU Fault when running central coded bluetooth and ENC28J60 dhcpv4_client
* :github:`34201` - Fatal error when perform "bt phy-update" if there is not any connections at ./tests/bluetooth/shell
* :github:`34197` - samples: telnet: Tab completion not working in telnet shell
* :github:`34196` - st_lis2mdl: LSM303AGR-MAGN not detected
* :github:`34190` - Newbie: Simple C++ List App Builds for QEMU but not Native Posix Emulation
* :github:`34184` - video samples fail to build
* :github:`34178` - apds9960 sensor sample does not build on STM32
* :github:`34165` - SNTP fails to close the used socket
* :github:`34154` - AArch64 PR reviews and merges are lagging behind
* :github:`34152` - intel_adsp_cavs15: run tests/kernel/smp/ failed on ADSP
* :github:`34149` - Invalid link in Zephyr document to ACRN page
* :github:`34145` - Convert NXP kinetis boards to have pindata in devicetree
* :github:`34134` - USB do not works if bootloader badly use the device before
* :github:`34117` - ehl_crb: tests/kernel/context tests failed
* :github:`34116` - mec15xxevb_assy6853: tests/kernel/mutex/sys_mutex/
* :github:`34107` - Convert tests/benchmarks/mbedtls/src/benchmark.c to new kwork API
* :github:`34106` - Convert tests/kernel/pending/src/main.c to new kwork API
* :github:`34104` - Convert tests/benchmarks/footprints/src/workq.c to new kwork API
* :github:`34103` - Convert drivers/console/uart_mux.c to new kwork API
* :github:`34102` - Convert drivers/serial/uart_sam0.c to new kwork API
* :github:`34101` - Convert subsys/mgmt to new kwork API
* :github:`34100` - Convert subsys/shell/shell_telnet to new kwork API
* :github:`34099` - Convert subsys/tracing/cpu_stats.c to new kwork API
* :github:`34098` - Convert samples/drivers/led_sx1509b_intensity to new kwork API
* :github:`34097` - Convert samples/boards/reel_board/mesh_badge to new kwork API
* :github:`34096` - Convert samples nrf clock_skew to new kwork API
* :github:`34095` - Convert CAN to new kwork API
* :github:`34094` - Convert ubsys/ipc/rpmsg_service/rpmsg_backend.c to new kwork API
* :github:`34093` - Convert bluetooth to new kwork API
* :github:`34092` - Convert usb to new kwork API
* :github:`34091` - Convert uart_stm32.c to new kwork API
* :github:`34090` - Convert video_sw_generator.c to new kwork API
* :github:`34082` - Bullets are broken in documentation
* :github:`34076` - Unrecognized characters generated during document construction
* :github:`34068` - DOC BUILD FAIL
* :github:`34046` - Failed to build arm64 architecture related board
* :github:`34045` - samples: subsys: mgmt: smp_srv: UDP sample does not boot on frdm_k64f
* :github:`34026` - RISCV32 QEMU illegal instruction exception / floating point support
* :github:`34023` - test_prevent_interruption has wrong data type for key
* :github:`34014` - Toolchain Compile Error  of RISC-V(rv32m1-vega board)
* :github:`34011` - NRF52840 DTS questions
* :github:`34010` - [Coverity CID: 220531] Copy into fixed size buffer in tests/net/socket/misc/src/main.c
* :github:`34009` - [Coverity CID: 220532] Unrecoverable parse warning in subsys/bluetooth/controller/ll_sw/ull_peripheral_iso.c
* :github:`34008` - [Coverity CID: 220533] Improper use of negative value in tests/net/socket/misc/src/main.c
* :github:`34007` - [Coverity CID: 220534] Out-of-bounds access in tests/arch/arm/arm_no_multithreading/src/main.c
* :github:`34006` - [Coverity CID: 220535] Dereference before null check in subsys/net/l2/virtual/virtual.c
* :github:`34005` - [Coverity CID: 220536] Pointer to local outside scope in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`34004` - [Coverity CID: 220537] Uninitialized pointer read in tests/net/virtual/src/main.c
* :github:`34003` - [Coverity CID: 220538] Logically dead code in subsys/net/l2/virtual/virtual.c
* :github:`34002` - [Coverity CID: 220539] Improper use of negative value in tests/net/socket/misc/src/main.c
* :github:`34001` - [Coverity CID: 220540] Uninitialized scalar variable in samples/drivers/flash_shell/src/main.c
* :github:`34000` - [Coverity CID: 220541] Dereference before null check in subsys/net/lib/capture/capture.c
* :github:`33986` - TCP stack doesn't handle data received in FIN_WAIT_1
* :github:`33983` - example-application module: add trivial driver
* :github:`33981` - example-application module: add board zxa_board_stub
* :github:`33978` - MCP2515 wrong BRP value
* :github:`33977` - Question: How best to contribute drivers upstream?
* :github:`33974` - The stm32wb55rc MCU does not operate on zephyr
* :github:`33969` - Hardfault error caused by ARM Cortex m0 non-4-byte alignment
* :github:`33968` - ESP32 Porting GSM Module Compile Error
* :github:`33967` - The printed total size differs from calculated from .json
* :github:`33966` - STM32: I-cache & D-cache
* :github:`33965` - example-application module: add trivial project
* :github:`33956` - tests: kernel: fpu: Several tests related to fpu fail on nrf5340dk_nrf5340_cpuappns
* :github:`33954` - I2C scan in UART shell is not detecting any I2C devices on ESP32
* :github:`33951` - periodic_adv not working with nRF5340 DK
* :github:`33950` - periodic_adv not working with nRF5340 DK
* :github:`33929` - subsys: logging: Sample app doesn't build if using Werror and logging with latest SDK
* :github:`33925` - Rework hl7800 driver to use new work queue APIs
* :github:`33923` - GSM modem automatic operation selection mode problems
* :github:`33911` - test:twr_ke18f: tests/kernel/sched/schedule_api - kernel_threads_sched_userspace cases meet out our space
* :github:`33904` - having issue compile a shell program and it is bug likely
* :github:`33898` - intel_adsp_cavs15: running testcases failed tests/kernel/workq/work on adsp
* :github:`33897` - Bluetooth: extended advertising can't restart after connection
* :github:`33896` - Device tree: STM32L4 defines can1 node for chips which do not support CAN peripheral
* :github:`33895` - Device tree: STM32L412 and STM32L422 are missing nodes
* :github:`33890` - Continuous Integration check patch false warnings
* :github:`33884` - CORTEX_M_DEBUG_NULL_POINTER_EXCEPTION_DETECTION_NONE is way too long
* :github:`33874` - twister: Add skip as error feature
* :github:`33868` - Bluetooth: controller: connectable advertisement disable race condition
* :github:`33866` - uart: TX_DONE occurs before transmission is complete.
* :github:`33860` - DEPRECATED, a replacement suggestion should be found somewhere
* :github:`33858` - tests: ztest: test trigger_fault_access from tests/ztest/error_hook fails on em_starterkit_em7d_v22
* :github:`33857` - atomic xtensa  build fail
* :github:`33843` - ESP32 example does not connect to WiFi
* :github:`33840` - [Coverity CID: 220301] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33839` - [Coverity CID: 220302] Uninitialized scalar variable in subsys/net/lib/lwm2m/lwm2m_rw_link_format.c
* :github:`33838` - [Coverity CID: 220304] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33837` - [Coverity CID: 220305] Logically dead code in drivers/gpio/gpio_nrfx.c
* :github:`33836` - [Coverity CID: 220306] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33835` - [Coverity CID: 220309] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33834` - [Coverity CID: 220310] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33833` - [Coverity CID: 220311] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33832` - [Coverity CID: 220312] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33831` - [Coverity CID: 220313] Logically dead code in subsys/bluetooth/services/ots/ots_obj_manager.c
* :github:`33830` - [Coverity CID: 220314] Untrusted value as argument in subsys/bluetooth/services/ots/ots_dir_list.c
* :github:`33829` - [Coverity CID: 220315] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33828` - [Coverity CID: 220316] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33827` - [Coverity CID: 220317] Unchecked return value in tests/kernel/pipe/pipe_api/src/test_pipe_contexts.c
* :github:`33826` - [Coverity CID: 220318] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33825` - [Coverity CID: 220319] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33824` - [Coverity CID: 220320] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33823` - [Coverity CID: 220321] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33822` - [Coverity CID: 220413] Explicit null dereferenced in tests/lib/sprintf/src/main.c
* :github:`33821` - [Coverity CID: 220414] Unused value in tests/subsys/logging/log_backend_fs/src/log_fs_test.c
* :github:`33820` - [Coverity CID: 220415] Uninitialized scalar variable in tests/posix/common/src/pthread.c
* :github:`33819` - [Coverity CID: 220417] Out-of-bounds access in subsys/modbus/modbus_core.c
* :github:`33818` - [Coverity CID: 220418] Destination buffer too small in subsys/modbus/modbus_raw.c
* :github:`33817` - [Coverity CID: 220419] Unchecked return value in subsys/bluetooth/host/gatt.c
* :github:`33816` - [Coverity CID: 220420] Out-of-bounds access in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33815` - [Coverity CID: 220421] Incorrect sizeof expression in tests/lib/cbprintf_package/src/main.c
* :github:`33814` - [Coverity CID: 220422] Extra argument to printf format specifier in tests/lib/sprintf/src/main.c
* :github:`33813` - [Coverity CID: 220423] Out-of-bounds access in subsys/net/l2/ppp/ppp_l2.c
* :github:`33812` - [Coverity CID: 220424] Out-of-bounds access in drivers/watchdog/wdt_mcux_imx_wdog.c
* :github:`33811` - [Coverity CID: 220425] Destination buffer too small in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33810` - [Coverity CID: 220426] Out-of-bounds access in tests/lib/c_lib/src/main.c
* :github:`33809` - [Coverity CID: 220427] Unchecked return value in tests/posix/common/src/pthread.c
* :github:`33808` - [Coverity CID: 220428] Out-of-bounds access in subsys/bluetooth/audio/vocs.c
* :github:`33807` - [Coverity CID: 220429] Out-of-bounds access in subsys/net/l2/ppp/ppp_l2.c
* :github:`33806` - [Coverity CID: 220430] Operands don't affect result in tests/lib/c_lib/src/main.c
* :github:`33805` - [Coverity CID: 220431] Extra argument to printf format specifier in tests/lib/sprintf/src/main.c
* :github:`33804` - [Coverity CID: 220432] Out-of-bounds access in subsys/net/l2/ethernet/ethernet.c
* :github:`33803` - [Coverity CID: 220433] Printf arg count mismatch in tests/lib/sprintf/src/main.c
* :github:`33802` - [Coverity CID: 220434] Resource leak in tests/lib/mem_alloc/src/main.c
* :github:`33801` - [Coverity CID: 220435] Extra argument to printf format specifier in tests/lib/sprintf/src/main.c
* :github:`33800` - [Coverity CID: 220436] Explicit null dereferenced in tests/lib/sprintf/src/main.c
* :github:`33799` - [Coverity CID: 220437] Wrong size argument in tests/lib/mem_alloc/src/main.c
* :github:`33798` - [Coverity CID: 220438] Out-of-bounds access in subsys/bluetooth/audio/vocs_client.c
* :github:`33797` - [Coverity CID: 220439] Destination buffer too small in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33796` - [Coverity CID: 220440] Out-of-bounds access in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33795` - [Coverity CID: 220441] Untrusted loop bound in subsys/modbus/modbus_client.c
* :github:`33794` - [Coverity CID: 220442] Pointless string comparison in tests/lib/c_lib/src/main.c
* :github:`33793` - [Coverity CID: 220443] Out-of-bounds access in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33792` - [Coverity CID: 220444] Out-of-bounds access in subsys/modbus/modbus_raw.c
* :github:`33791` - [Coverity CID: 220445] Unchecked return value in subsys/logging/log_backend_fs.c
* :github:`33790` - [Coverity CID: 220446] Printf arg count mismatch in tests/lib/sprintf/src/main.c
* :github:`33789` - [Coverity CID: 220447] Out-of-bounds access in subsys/modbus/modbus_raw.c
* :github:`33788` - [Coverity CID: 220448] Out-of-bounds access in tests/subsys/modbus/src/test_modbus_raw.c
* :github:`33787` - [Coverity CID: 220449] Unused value in tests/subsys/logging/log_backend_fs/src/log_fs_test.c
* :github:`33786` - [Coverity CID: 220450] Untrusted loop bound in subsys/modbus/modbus_client.c
* :github:`33785` - [Coverity CID: 220451] Resource leak in tests/lib/mem_alloc/src/main.c
* :github:`33784` - [Coverity CID: 220452] Out-of-bounds access in subsys/net/l2/ethernet/ethernet.c
* :github:`33783` - [Coverity CID: 220453] Extra argument to printf format specifier in tests/lib/sprintf/src/main.c
* :github:`33768` - Rpmsg initialisation on nRF53 may fail
* :github:`33765` - Regular loss of a few connection intervals
* :github:`33761` - Documentation: K_WORK_DEFINE usage is not shown in workqueue doc
* :github:`33754` - xtensa sys timer Interrupt bug？
* :github:`33745` - ``west attach`` silently downgrades to ``debugserver`` for openocd runner
* :github:`33729` - flash_write() in STM32L0 MCU throws hard fault
* :github:`33727` - mec15xxevb_assy6853: multiple tests failed due to assertion failure at kernel/sched.c:841
* :github:`33726` - test:mimxrt1010_evk:  tests/kernel/sched/schedule_api - kernel_threads_sched_userspace cases meet out our space
* :github:`33721` - STM32 serial driver configure api doesn't set correct datalength when even or odd parity is used.
* :github:`33712` - kernel/poll: no error happened when mutil-threads poll a same event at a same time.
* :github:`33702` - cfb sample build error for esp32 when SSD1306 is enabled
* :github:`33697` - dts:dt-bindings No OCTOSPIM dt-bindings available for stm32h723
* :github:`33693` - cmake -E env: unknown option '-Wno-unique_unit_address_if_enabled'
* :github:`33667` - tests: kernel: timer: Test timeout_abs from tests/kernel/timer/timer_api hangs causing test scenarios to fail
* :github:`33665` - tests: kernel: timer_api fails with hard fault in CONFIG_TICKLESS_KERNEL
* :github:`33662` - Make twister dig deeper in directory structure to find additional .yaml files
* :github:`33658` - Question: How is NUM_IRQS determined for example for STM32F401xC
* :github:`33655` - Add support for board: Nucleo-L412RB-P
* :github:`33646` - Expose net_ipv4_create, net_ipv6_create, and net_udp_create in standard header
* :github:`33645` - Random MAC after RESET - NRF52832
* :github:`33641` - API Meeting Minutes
* :github:`33635` - subsys/ipc/openamp sample on QEMU not working when debugging
* :github:`33633` - NXP imx rt1064 evk: Application does not boot when flash/flexSPI driver is enabled
* :github:`33629` - tests: subsys: logging:  Tests from /tests/subsys/logging/log_backend_fs fail on nrf52840dk
* :github:`33625` - NVS: replace dev_name parameter by device reference in nvs_init()
* :github:`33612` - Add support to get adv address of a per_adv_sync object and lookup per_adv_sync object from adv address
* :github:`33610` - ARC: add ARCv3 HS6x support
* :github:`33609` - Question about memory usage of the binary zephyr.exe
* :github:`33600` - Master is broken at build-time when SRAM is mapped at an high address
* :github:`33593` - acrn_ehl_crb: general tests and samples execution slowdown
* :github:`33591` - wordlist (kobject hash) is not generated correctly when using high addresses for SRAM on 64-bit platforms
* :github:`33590` - nrf: Debugging any test fails when CORTEX_M_DEBUG_NULL_POINTER_EXCEPTION_DETECTION_DWT is enabled
* :github:`33589` - SSD1306 driver no longer works for I2C displays
* :github:`33583` - nRF SPI CS control: CS set / release delay is longer than configured
* :github:`33572` -  <err> esp_event: SYSTEM_EVENT_STA_DISCONNECTED for wifi sample for esp32 board
* :github:`33568` - Test tests/arch/x86/info fails for ehl_crb
* :github:`33567` - sof: framework is redefnining MAX, MIN to version with limited capabilities
* :github:`33559` - pin setting error on frdm_kl25z boards
* :github:`33558` - qemu_cortex_a53_smp and qemu_x86_64 failed in tests/kernel/condvar/condvar while enabling for SMP
* :github:`33557` - there is no network interface to work with for  wifi sample for esp32 board
* :github:`33551` - tests: SMP: Two threads synchronize failed using mutex or semaphore while both doing irq_lock()
* :github:`33549` - xt-xcc unknown field 'obj' specified in initializer
* :github:`33548` - xt-xcc does not support deprecated attribute
* :github:`33545` - ehl_crb: tests/arch/x86/info failed.
* :github:`33544` - ehl_crb: portability.posix.common.posix_realtime failed.
* :github:`33543` - ehl_crb: tests/subsys/edac/ibecc failed.
* :github:`33542` - reel_board: samples/subsys/usb/hid/ timeout failure
* :github:`33539` - ehl_crb: tests/kernel/mem_heap/mheap_api_concept failed.
* :github:`33529` - adafruit_feather_nrf52840 dts not setting I2C controller compat (was: SSD1306 DTS properties not being generated in devicetree_unfixed.h)
* :github:`33526` - boards:  Optimal way to have customized dts for my project.
* :github:`33525` - ST Nucleo G071RB board support issue
* :github:`33524` - minor: kswap.h is included twice in kernel/init.c
* :github:`33523` - Bossac runner flashes at an incorrect offset
* :github:`33516` - socket: tcp application crashes when there are no more net buffers in case of reception
* :github:`33515` - arm64/mmu: Are you sure it's OK to use atomic_cas before the MMU is initialized?
* :github:`33512` - build: build target is always out-of-date
* :github:`33509` - samples: tests: watchdog: samples/subsys/task_wdt breaks nrf platforms performace
* :github:`33505` - WS2812 SPI LED driver with DMA on nrf52 bad SPI data
* :github:`33498` - west: Question on ``west flash --hex-file`` behavior with build.dir-fmt
* :github:`33491` - fwrite() function will cause the program to crash when wrong parameters passed
* :github:`33488` - Ring buffer makes it hard to discard items
* :github:`33479` - disk_access_spi_sdhc: Missing stop/end bit
* :github:`33475` - Need to add device node for UART10 in dts/arm/st/h7/stm32h723.dtsi
* :github:`33464` - SYS_INIT initialize priority "2-9" ordering error
* :github:`33459` - Divide zero exception is not enabled in ARC
* :github:`33457` - Fail to build ARC zephyr with MetaWare toolchain
* :github:`33456` - lorawan: unconfirmed messages leave stack in busy state
* :github:`33426` - a few failures with CONFIG_HCI_ACL_DATA_SIZE in nightly builds
* :github:`33424` - tests: ztest: Test from tests/ztest/error_hook fails on nrf5340dk_nrf5340_cpuappns
* :github:`33423` - tests: portability: tests/portability/cmsis_rtos_v2 fails on nrf5340dk_nrf5340_cpuappns
* :github:`33422` - samples/subsys/usb/dfu/sample.usb.dfu fails on multiple platforms in daily build
* :github:`33421` - Add BT_LE_FEAT_BIT_PER_ADV checks for periodic advertising commands
* :github:`33403` - trigger_fault_divide_zero test case didn't run divide instruction
* :github:`33381` - West debug does not work with Bluetooth shell and nRF52840 DK
* :github:`33378` - Extended advertising switch on / switch off loop impossible
* :github:`33374` - Network interface routines are not thread safe
* :github:`33371` - mec15xxevb_assy6853: tests/drivers/gpio/gpio_basic_api/ failed
* :github:`33365` - Add STM32H7 Series USB Device Support
* :github:`33363` - Properly indicate ISR number in SystemView
* :github:`33356` - Using AT HOST  fails build
* :github:`33353` - work: k_work_schedule from running work item does not schedule
* :github:`33352` - Arduino Nano 33 BLE sense constantly resetting.
* :github:`33351` - uart peripheral outputs 7 bits when configured in 8 bits + parity on stm32
* :github:`33348` - ip/dhcpv4 is not thread-safe in SMP/preemptive thread configurations
* :github:`33342` - disco_l475_iot1: Multiple definitions of z_timer_cycle_get_32, etc.
* :github:`33339` - API/functions to get remaining free heap size
* :github:`33330` - Poll on DTLS socket returns -EAGAIN if bind & receive any data.
* :github:`33326` - The gpio-map for adafruit_feather_stm32f405 looks like it contains conflicts
* :github:`33324` - Using bluetooth hci_usb sample, and set periodic adv enable, but bluez still shows no command supported
* :github:`33322` - Questions on ztest : 1) Can twister/ztests run on windows? 2) Project structure
* :github:`33319` - Kernel doesn't validate lock state on swap
* :github:`33318` - [Coverity CID: 219722] Resource leak in tests/lib/mem_alloc/src/main.c
* :github:`33317` - [Coverity CID: 219727] Improper use of negative value in tests/lib/cbprintf_package/src/main.c
* :github:`33316` - [Coverity CID: 219724] Side effect in assertion in tests/kernel/queue/src/test_queue_contexts.c
* :github:`33315` - [Coverity CID: 219723] Side effect in assertion in tests/kernel/queue/src/test_queue_contexts.c
* :github:`33314` - [Coverity CID: 219726] Side effect in assertion in tests/kernel/lifo/lifo_usage/src/main.c
* :github:`33313` - [Coverity CID: 219728] Untrusted array index read in subsys/bluetooth/host/iso.c
* :github:`33312` - [Coverity CID: 219721] Untrusted array index read in subsys/bluetooth/host/iso.c
* :github:`33311` - [Coverity CID: 219729] Logically dead code in lib/os/cbprintf_packaged.c
* :github:`33303` - __ASSERT does not display message or register info in v2.5.0
* :github:`33291` - Using both NET_SOCKETS_SOCKOPT_TLS and POSIX_API fails build
* :github:`33280` - drivers: serial: nrf uarte: The application receives one more byte that was received over UART
* :github:`33273` - The z_smp_reacquire_global_lock() internal API is not used any where inside zephyr code base
* :github:`33269` - ILI9341 (ILI9XXX) set orientation function fails to update the display area correctly
* :github:`33265` - Power Management Overhaul
* :github:`33261` - gatt_notify too slow on Broadcast
* :github:`33253` - STM32G4 with USB-C PD: Some pins cannot be used as input by default
* :github:`33239` - lib/rbtree: Remove dead case in rb_remove()
* :github:`33238` - tests: drivers: pwm api fails on many boards
* :github:`33233` - uart9 missing from <st/h7/stm32h7.dtsi>
* :github:`33218` - Incorrect documentation CONFIG_LOG_STRDUP_MAX_STRING
* :github:`33213` - Configuring a project with a sub-project (e.g. nRF5340) and an overlay causes an infinite configuring loop
* :github:`33212` - GUI configuration system (ninja menuconfig) exists with an error when the windows key is pressed
* :github:`33208` - cbprintf: Package size calculation is using best case alignment
* :github:`33207` - twister: Add option to load list with quarantined tests
* :github:`33203` - Bluetooth: host: ISO: Missing terminate reason in ISO disconnected callback
* :github:`33200` - USB CDC ACM sample application fails to compile
* :github:`33196` - I2C doesn't work on STM32F103RE
* :github:`33185` - TCP traffic with IPSP sample not working on 96Boards Nitrogen
* :github:`33176` - tests: kernel: Multiple test cases from tests/kernel/workq/work_queue are failing
* :github:`33173` - tests/kernel/workq/work_queue fails on sam_e70_xplained
* :github:`33171` - Create Renesas HAL
* :github:`33169` - STM32 SPI Driver - Transmit (MOSI) Only - Infinite Loop on Tranceive
* :github:`33168` - CONFIG_HEAP_MEM_POOL_SIZE=64 doesn't work
* :github:`33164` - Newlib has no synchronization
* :github:`33153` - west flash cannot find OpenOCD
* :github:`33149` - subsys: canbus: canopen EDSEditor / libedssharp version that works with Zephyr's CANopenNode
* :github:`33147` - Not able to build blinky or set toolchain to zephyr
* :github:`33142` - fs_mount for FAT FS does not distingush between no file system and other errors
* :github:`33140` - STM32H7: Bus fault when reading corrupt flash sectors
* :github:`33138` - invalid west cmake diagnostics when using board alias
* :github:`33137` - Enabling DHCP without NET_MGMT shouldn't be allowed
* :github:`33127` - Improve documentation user experience
* :github:`33122` - Device-level Cache API
* :github:`33120` - iotdk: running testcase tests/kernel/mbox/mbox_api/ failed
* :github:`33114` - tests: mbox_api: testcase test_mbox_data_get_null has some bugs.
* :github:`33104` - Updating Zephyr to fix Work Queue Problems
* :github:`33101` - DNS resolver misbehaves if receiving response too late
* :github:`33100` - tcp2 not working with ppp
* :github:`33097` - Coverity ID links in associated GitHub issues are broken
* :github:`33096` - [Coverity CID :215373] Unchecked return value in subsys/net/lib/lwm2m/lwm2m_rd_client.c
* :github:`33095` - [Coverity CID :215379] Out-of-bounds write in subsys/mgmt/osdp/src/osdp_cp.c
* :github:`33094` - [Coverity CID :215381] Resource leak in samples/net/mdns_responder/src/service.c
* :github:`33093` - [Coverity CID :215391] Unchecked return value from library in samples/net/mdns_responder/src/service.c
* :github:`33092` - [Coverity CID :215392] Logically dead code in subsys/mgmt/osdp/src/osdp_cp.c
* :github:`33091` - [Coverity CID :219474] Logically dead code in subsys/bluetooth/controller/ll_sw/ull_scan.c
* :github:`33090` - [Coverity CID :219476] Dereference after null check in subsys/bluetooth/controller/ll_sw/ull_conn.c
* :github:`33089` - [Coverity CID :219556] Self assignment in drivers/espi/host_subs_npcx.c
* :github:`33088` - [Coverity CID :219558] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33087` - [Coverity CID :219559] Out-of-bounds access in tests/arch/arm/arm_interrupt/src/arm_interrupt.c
* :github:`33086` - [Coverity CID :219561] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33085` - [Coverity CID :219562] Out-of-bounds access in tests/bluetooth/tester/src/gatt.c
* :github:`33084` - [Coverity CID :219563] Dereference after null check in arch/x86/core/multiboot.c
* :github:`33083` - [Coverity CID :219564] Untrusted value as argument in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`33082` - [Coverity CID :219566] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33081` - [Coverity CID :219572] Untrusted value as argument in tests/net/lib/coap/src/main.c
* :github:`33080` - [Coverity CID :219573] Untrusted value as argument in samples/net/sockets/coap_client/src/coap-client.c
* :github:`33079` - [Coverity CID :219574] Side effect in assertion in tests/subsys/edac/ibecc/src/ibecc.c
* :github:`33078` - [Coverity CID :219576] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33077` - [Coverity CID :219579] Out-of-bounds read in drivers/ipm/ipm_nrfx_ipc.c
* :github:`33076` - [Coverity CID :219583] Operands don't affect result in drivers/clock_control/clock_control_npcx.c
* :github:`33075` - [Coverity CID :219588] Out-of-bounds access in tests/bluetooth/tester/src/gatt.c
* :github:`33074` - [Coverity CID :219590] Unchecked return value in subsys/bluetooth/mesh/proxy.c
* :github:`33073` - [Coverity CID :219591] Untrusted divisor in drivers/sensor/bme680/bme680.c
* :github:`33072` - [Coverity CID :219593] Logically dead code in tests/arch/x86/pagetables/src/main.c
* :github:`33071` - [Coverity CID :219595] Dereference before null check in subsys/net/ip/net_context.c
* :github:`33070` - [Coverity CID :219596] Out-of-bounds read in tests/kernel/interrupt/src/dynamic_isr.c
* :github:`33069` - [Coverity CID :219597] Untrusted value as argument in tests/net/lib/coap/src/main.c
* :github:`33068` - [Coverity CID :219598] Out-of-bounds access in tests/bluetooth/tester/src/gatt.c
* :github:`33067` - [Coverity CID :219600] Unchecked return value in drivers/watchdog/wdt_wwdg_stm32.c
* :github:`33066` - [Coverity CID :219601] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33065` - [Coverity CID :219603] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33064` - [Coverity CID :219608] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33063` - [Coverity CID :219609] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33062` - [Coverity CID :219610] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33061` - [Coverity CID :219611] Dereference after null check in subsys/net/ip/tcp2.c
* :github:`33060` - [Coverity CID :219613] Uninitialized scalar variable in lib/cmsis_rtos_v1/cmsis_signal.c
* :github:`33059` - [Coverity CID :219615] Out-of-bounds access in tests/arch/arm/arm_irq_advanced_features/src/arm_zero_latency_irqs.c
* :github:`33058` - [Coverity CID :219616] Untrusted value as argument in subsys/net/lib/coap/coap_link_format.c
* :github:`33057` - [Coverity CID :219619] Untrusted divisor in subsys/bluetooth/controller/hci/hci.c
* :github:`33056` - [Coverity CID :219620] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33055` - [Coverity CID :219621] Uninitialized scalar variable in tests/net/socket/getaddrinfo/src/main.c
* :github:`33054` - [Coverity CID :219622] Untrusted value as argument in subsys/net/lib/coap/coap.c
* :github:`33053` - [Coverity CID :219623] Out-of-bounds read in drivers/ipm/ipm_nrfx_ipc.c
* :github:`33051` - [Coverity CID :219625] Unchecked return value in subsys/bluetooth/mesh/proxy.c
* :github:`33050` - [Coverity CID :219628] Untrusted value as argument in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`33049` - [Coverity CID :219629] Operands don't affect result in drivers/clock_control/clock_control_npcx.c
* :github:`33048` - [Coverity CID :219631] Out-of-bounds read in drivers/espi/espi_npcx.c
* :github:`33047` - [Coverity CID :219634] Out-of-bounds access in tests/net/lib/dns_addremove/src/main.c
* :github:`33046` - [Coverity CID :219636] Untrusted value as argument in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`33045` - [Coverity CID :219637] Untrusted value as argument in tests/net/lib/coap/src/main.c
* :github:`33044` - [Coverity CID :219638] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33043` - [Coverity CID :219641] Out-of-bounds access in tests/bluetooth/tester/src/gatt.c
* :github:`33042` - [Coverity CID :219644] Side effect in assertion in tests/subsys/edac/ibecc/src/ibecc.c
* :github:`33040` - [Coverity CID :219646] Untrusted value as argument in subsys/net/lib/coap/coap.c
* :github:`33039` - [Coverity CID :219647] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33038` - [Coverity CID :219649] Operands don't affect result in kernel/sem.c
* :github:`33037` - [Coverity CID :219650] Out-of-bounds access in samples/bluetooth/central_ht/src/main.c
* :github:`33036` - [Coverity CID :219651] Logically dead code in subsys/bluetooth/mesh/net.c
* :github:`33035` - [Coverity CID :219652] Unchecked return value in drivers/gpio/gpio_stm32.c
* :github:`33034` - [Coverity CID :219653] Unchecked return value in drivers/modem/hl7800.c
* :github:`33033` - [Coverity CID :219654] Out-of-bounds access in tests/net/lib/dns_addremove/src/main.c
* :github:`33032` - [Coverity CID :219656] Uninitialized scalar variable in tests/kernel/threads/thread_stack/src/main.c
* :github:`33031` - [Coverity CID :219658] Untrusted value as argument in samples/net/sockets/coap_client/src/coap-client.c
* :github:`33030` - [Coverity CID :219659] Side effect in assertion in tests/subsys/edac/ibecc/src/ibecc.c
* :github:`33029` - [Coverity CID :219660] Untrusted divisor in drivers/sensor/bme680/bme680.c
* :github:`33028` - [Coverity CID :219661] Unchecked return value in subsys/bluetooth/host/gatt.c
* :github:`33027` - [Coverity CID :219662] Inequality comparison against NULL in lib/os/cbprintf_packaged.c
* :github:`33026` - [Coverity CID :219666] Out-of-bounds access in tests/bluetooth/tester/src/gatt.c
* :github:`33025` - [Coverity CID :219667] Untrusted value as argument in tests/net/lib/coap/src/main.c
* :github:`33024` - [Coverity CID :219668] Dereference after null check in drivers/espi/host_subs_npcx.c
* :github:`33023` - [Coverity CID :219669] Untrusted value as argument in subsys/mgmt/updatehub/updatehub.c
* :github:`33022` - [Coverity CID :219672] Untrusted value as argument in samples/net/sockets/coap_server/src/coap-server.c
* :github:`33021` - [Coverity CID :219673] Untrusted value as argument in samples/net/sockets/coap_client/src/coap-client.c
* :github:`33020` - [Coverity CID :219675] Macro compares unsigned to 0 in kernel/include/mmu.h
* :github:`33019` - [Coverity CID :219676] Unchecked return value in drivers/modem/wncm14a2a.c
* :github:`33018` - [Coverity CID :219677] Logically dead code in drivers/timer/npcx_itim_timer.c
* :github:`33009` - kernel: k_heap failures on small heaps
* :github:`33001` - stm32: window watchdog (wwdg): setup of prescaler not valid for newer series
* :github:`33000` - stm32: window watchdog (wwdg): invalid interrupts priority for CM0 Series Socs
* :github:`32996` - SPI speed when using SDHC via SPI in Zephyr
* :github:`32994` - Question: Possible simplification in mutex.h?
* :github:`32975` - Where should a few include/ headers live
* :github:`32969` - Wrong board target in microbit v2 documentation
* :github:`32966` - frdm_k64f: Run some testcases timeout failed by using twister
* :github:`32963` - USB device is not supported by qemu_x86 platform
* :github:`32961` - [Coverity CID :219478] Unchecked return value in subsys/bluetooth/controller/ll_sw/ull_filter.c
* :github:`32960` - [Coverity CID :219479] Out-of-bounds access in subsys/net/l2/bluetooth/bluetooth.c
* :github:`32959` - [Coverity CID :219480] Out-of-bounds read in lib/os/cbprintf_nano.c
* :github:`32958` - [Coverity CID :219481] Out-of-bounds access in subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv_aux.c
* :github:`32957` - [Coverity CID :219483] Improper use of negative value in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32956` - [Coverity CID :219484] Out-of-bounds access in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32955` - [Coverity CID :219485] Logically dead code in subsys/bluetooth/controller/ll_sw/ull.c
* :github:`32954` - [Coverity CID :219486] Unrecoverable parse warning in tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`32953` - [Coverity CID :219487] Resource leak in tests/net/socket/getaddrinfo/src/main.c
* :github:`32952` - [Coverity CID :219488] Unrecoverable parse warning in tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`32951` - [Coverity CID :219489] Structurally dead code in tests/drivers/dma/loop_transfer/src/test_dma_loop.c
* :github:`32950` - [Coverity CID :219490] Unsigned compared against 0 in drivers/wifi/esp/esp.c
* :github:`32949` - [Coverity CID :219491] Resource leak in tests/net/socket/af_packet/src/main.c
* :github:`32948` - [Coverity CID :219492] Out-of-bounds access in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32947` - [Coverity CID :219493] Unchecked return value in tests/kernel/workq/work/src/main.c
* :github:`32946` - [Coverity CID :219494] Logically dead code in boards/xtensa/intel_s1000_crb/pinmux.c
* :github:`32945` - [Coverity CID :219495] Pointless string comparison in tests/lib/devicetree/api/src/main.c
* :github:`32944` - [Coverity CID :219497] Logically dead code in subsys/bluetooth/host/gatt.c
* :github:`32943` - [Coverity CID :219498] Out-of-bounds access in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32942` - [Coverity CID :219499] Argument cannot be negative in tests/net/socket/af_packet/src/main.c
* :github:`32941` - [Coverity CID :219501] Unchecked return value in subsys/net/l2/bluetooth/bluetooth.c
* :github:`32940` - [Coverity CID :219502] Improper use of negative value in tests/net/socket/af_packet/src/main.c
* :github:`32939` - [Coverity CID :219504] Logically dead code in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`32938` - [Coverity CID :219508] Unchecked return value in lib/libc/minimal/source/stdlib/malloc.c
* :github:`32937` - [Coverity CID :219508] Unchecked return value in lib/libc/minimal/source/stdlib/malloc.c
* :github:`32936` - [Coverity CID :219509] Side effect in assertion in tests/net/socket/tcp/src/main.c
* :github:`32935` - [Coverity CID :219510] Improper use of negative value in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32934` - [Coverity CID :219511] Uninitialized scalar variable in tests/kernel/mbox/mbox_api/src/test_mbox_api.c
* :github:`32933` - [Coverity CID :219512] Unrecoverable parse warning in tests/kernel/mem_protect/mem_protect/src/mem_domain.c
* :github:`32932` - [Coverity CID :219513] Logically dead code in drivers/wifi/esp/esp.c
* :github:`32931` - [Coverity CID :219514] Out-of-bounds access in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32930` - [Coverity CID :219515] Side effect in assertion in subsys/bluetooth/controller/ll_sw/ull_sched.c
* :github:`32929` - [Coverity CID :219516] Improper use of negative value in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32928` - [Coverity CID :219518] Macro compares unsigned to 0 in subsys/bluetooth/mesh/transport.c
* :github:`32927` - [Coverity CID :219519] Unchecked return value in drivers/ethernet/eth_sam_gmac.c
* :github:`32926` - [Coverity CID :219520] Unsigned compared against 0 in drivers/wifi/esp/esp.c
* :github:`32925` - [Coverity CID :219521] Unchecked return value in tests/kernel/workq/work/src/main.c
* :github:`32924` - [Coverity CID :219522] Unchecked return value in tests/subsys/dfu/mcuboot/src/main.c
* :github:`32923` - [Coverity CID :219523] Side effect in assertion in subsys/bluetooth/controller/ll_sw/ull_adv_sync.c
* :github:`32922` - [Coverity CID :219524] Logically dead code in drivers/wifi/esp/esp.c
* :github:`32921` - [Coverity CID :219525] Unchecked return value in tests/subsys/settings/functional/src/settings_basic_test.c
* :github:`32920` - [Coverity CID :219526] Operands don't affect result in tests/boards/mec15xxevb_assy6853/qspi/src/main.c
* :github:`32919` - [Coverity CID :219527] Resource leak in tests/net/socket/getaddrinfo/src/main.c
* :github:`32918` - [Coverity CID :219528] Arguments in wrong order in tests/drivers/pwm/pwm_loopback/src/main.c
* :github:`32917` - [Coverity CID :219529] Unchecked return value in subsys/bluetooth/controller/ll_sw/ull_filter.c
* :github:`32916` - [Coverity CID :219530] Dereference before null check in drivers/modem/ublox-sara-r4.c
* :github:`32915` - [Coverity CID :219531] Improper use of negative value in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32914` - [Coverity CID :219532] Out-of-bounds access in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32913` - [Coverity CID :219535] Dereference after null check in drivers/sensor/icm42605/icm42605.c
* :github:`32912` - [Coverity CID :219536] Dereference before null check in drivers/ieee802154/ieee802154_nrf5.c
* :github:`32911` - [Coverity CID :219537] Out-of-bounds access in samples/boards/nrf/system_off/src/retained.c
* :github:`32910` - [Coverity CID :219538] Illegal address computation in subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv_aux.c
* :github:`32909` - [Coverity CID :219540] Side effect in assertion in subsys/bluetooth/controller/ll_sw/ull_sched.c
* :github:`32908` - [Coverity CID :219541] Unused value in subsys/bluetooth/controller/ticker/ticker.c
* :github:`32907` - [Coverity CID :219542] Dereference null return value in subsys/bluetooth/mesh/heartbeat.c
* :github:`32906` - [Coverity CID :219543] Out-of-bounds access in samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/smp_svr.c
* :github:`32905` - [Coverity CID :219544] Logically dead code in drivers/wifi/esp/esp.c
* :github:`32904` - [Coverity CID :219545] Side effect in assertion in subsys/bluetooth/controller/ll_sw/ull_adv_aux.c
* :github:`32903` - [Coverity CID :219546] Unchecked return value in tests/kernel/workq/work/src/main.c
* :github:`32902` - [Coverity CID :219547] Improper use of negative value in tests/drivers/timer/nrf_rtc_timer/src/main.c
* :github:`32898` - Bluetooth: controller: Control PDU buffer leak into Data PDU buffer pool
* :github:`32877` - acrn:  test case of kernel.timer and kernel.timer.tickless failed
* :github:`32875` - Benchmarking Zephyr vs. RIOT-OS
* :github:`32867` - tests/kernel/sched/schedule_api does not start with stm32wb55 on nucleo
* :github:`32866` - bt_le_ext_adv_create returns -5 with 0x2036 opcode status 1
* :github:`32862` - MCUboot, use default UART_0 value for RECOVERY_UART_DEV_NAME
* :github:`32860` - Periodic advertising/synchronization on nRF52810
* :github:`32853` - lwm2m: uninitialized variable in this function
* :github:`32839` - tests/kernel/timer/timer_api/test_timeout_abs still fails on multiple platforms
* :github:`32835` - twister: integration_platforms stopped working as it should
* :github:`32828` - tests: posix: Test case portability.posix.common.tls.newlib.posix_realtime fails on nrf9160dk_nrf9160
* :github:`32827` - question: Specify size of malloc arena
* :github:`32818` - Function z_swap_next_thread() missing coverage in sched.c
* :github:`32817` - Supporting fedora in the getting started docs
* :github:`32816` - ehl_crb: tests/kernel/timer/timer_api/timer_api/test_sleep_abs (kernel.timer.tickless) failed.
* :github:`32809` - Fail to build ARC zephyr with MetaWare toolchain
* :github:`32800` - Race conditions with setting thread attributes after ``z_ready_thread``?
* :github:`32798` - west flash fails for reel board
* :github:`32778` - Cannot support both HID boot report keyboard and mouse on a USB HID device
* :github:`32774` - Sensor BMI160: set of undersampling mode is not working
* :github:`32771` - STM32 with Ethernet crashes when receiving packets early
* :github:`32757` - Need openthread merge
* :github:`32755` - mcumgr: shell output gets truncated
* :github:`32745` - Bluetooth PAST shell command
* :github:`32742` - Bluetooth: GAP: LE connection complete event handling priority
* :github:`32741` - ARM32 / ARM64 separation
* :github:`32735` - Subsys: Logging: Functions purely to avoid compiling error affects test coverage
* :github:`32724` - qemu timer change introducing new CI failures
* :github:`32723` - kernel/sched: Only send IPI to abort a thread if the hardware supports it
* :github:`32721` - samples/bluetooth/periodic_adv/, print random address after every reset
* :github:`32720` - ./samples/microbit/central_eatt builds failed at v2.5.0 release
* :github:`32718` - NUCLEO-F446RE: Enable CAN Module
* :github:`32715` - async uart api not working on stm32 with dmamux
* :github:`32705` - KERNEL_COHERENCE on xtensa doesn't quite work yet
* :github:`32702` - RAM overflow with bbc:microbit for samples/bluetooth/peripheral...
* :github:`32699` - Setting custom BOARD_ROOT raises FileNotFoundError
* :github:`32697` - sam_e70b_xplained: running tests/kernel/timer/timer_api failed
* :github:`32696` - intel_adsp_cavs15: run testcases failed of tests/kernel/common
* :github:`32695` - intel_adsp_cavs15: cannot get output of some testcases
* :github:`32691` - Function z_find_first_thread_to_unpend() missing coverage in sched.c
* :github:`32688` - up_squared: tests/kernel/timer/timer_api failed.
* :github:`32679` - twister with --device-testing sometimes overlaps tests
* :github:`32677` - z_user_string_nlen() might lead to non-recoverable errors, despite suggesting the opposite
* :github:`32657` - canopen sample wont respond on pdo mapping with CO_ODs from objdict.eds
* :github:`32656` - reel_board: tests/lib/devicetree/devices/ build failure
* :github:`32655` - reel_board: tests/kernel/timer/timer_api/ failure
* :github:`32644` - Cannot build any project with system-wide DTC
* :github:`32619` - samples: usb: audio: Samples for usb audio fail building
* :github:`32599` - bbc_microbit build failure is blocking CI
* :github:`32589` - ehl_crb: tests/kernel/context fails sporadically
* :github:`32581` - shell/usb cdc_acm: shell does not work on CDC_ACM
* :github:`32579` - Corrupt CBOR payloads in MCUMGR when sending multiple commands together
* :github:`32572` - tests/kernel/timer/timer_api/test_timeout_abs fails on stm32 boards
* :github:`32566` - lwm2m: Long endpoint names are truncated due to short buffer
* :github:`32537` - Fatal error syscall_list.h
* :github:`32536` - Codec phy connection ASSERTION FAIL [event.curr.abort_cb]
* :github:`32515` - zephyr/kernel/thread.c:382 failed
* :github:`32514` - frdm_k64f:running testcase tests/subsys/debug/coredump/ and tests/subsys/debug/coredump_backends/ failed
* :github:`32513` - intel_adsp_cavs15: run testcases of fifo failed
* :github:`32512` - intel_adsp_cavs15: run testcases of queue failed
* :github:`32511` - Zephyr build fail with LLVM on Ubuntu for target ARC
* :github:`32509` - west build -p auto -b nrf52840dk_nrf52840 samples/bluetooth/hci_uart FAILED with  zephyr-v2.5.0
* :github:`32506` - k_sleep: Invalid return value when using absolute timeout.
* :github:`32499` - k_sleep duration is off by 1 tick
* :github:`32497` - No checks of buffer size in l2cap_chan_le_recv
* :github:`32492` - AArch64: Rework secure states (NS vs S) discussion
* :github:`32485` - CONFIG_NFCT_PINS_AS_GPIOS not in Kconfig.soc for nRF53
* :github:`32478` - twister: Twister cannot properly handle runners errors (flashing)
* :github:`32475` - twister error building mcux acmp driver
* :github:`32474` - pm: review post sleep wake up application notification scheduling
* :github:`32469` - Twister: potential race conditions.
* :github:`32468` - up_squared: tests/kernel/smp  failed.
* :github:`32467` - x86_64: page fault with access violation error complaining supervisor thread not allowed to rwx
* :github:`32459` - the cbprintf unit tests don't actually test all variations
* :github:`32457` - samples: drivers: espi: Need to handle failures in temperature retrieval
* :github:`32448` - C++ exceptions do not work on multiple platforms
* :github:`32445` - 2021 GSoC Project Idea: Transplantation for embarc_mli
* :github:`32444` - z_cstart bug
* :github:`32433` - pwm_stm32: warning: non-portable use of "defined"
* :github:`32431` - RTC driver support on STM32F1 series
* :github:`32429` - Only one PWM Channel supported in STM32L4 ?
* :github:`32420` - bbc_microbit_v2 build error for lis2dh
* :github:`32414` - [Coverity CID :218733] Explicit null dereferenced in tests/ztest/error_hook/src/main.c
* :github:`32413` - [Coverity CID :216799] Out-of-bounds access in tests/net/lib/dns_addremove/src/main.c
* :github:`32412` - [Coverity CID :216797] Dereference null return value in tests/net/6lo/src/main.c
* :github:`32411` - [Coverity CID :218744] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32410` - [Coverity CID :218743] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32409` - [Coverity CID :218742] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32408` - [Coverity CID :218741] Out-of-bounds access in subsys/bluetooth/host/att.c
* :github:`32407` - [Coverity CID :218740] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32406` - [Coverity CID :218737] Out-of-bounds write in subsys/bluetooth/host/gatt.c
* :github:`32405` - [Coverity CID :218735] Out-of-bounds access in subsys/bluetooth/host/att.c
* :github:`32404` - [Coverity CID :218734] Out-of-bounds access in subsys/bluetooth/host/smp.c
* :github:`32403` - [Coverity CID :218732] Out-of-bounds access in subsys/bluetooth/host/att.c
* :github:`32402` - [Coverity CID :218731] Out-of-bounds access in subsys/bluetooth/shell/gatt.c
* :github:`32401` - [Coverity CID :218730] Operands don't affect result in subsys/bluetooth/host/conn.c
* :github:`32400` - [Coverity CID :218729] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32399` - [Coverity CID :218728] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32398` - [Coverity CID :218727] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`32397` - [Coverity CID :218726] Out-of-bounds access in subsys/bluetooth/host/att.c
* :github:`32385` - clock_control: int is returned on enum return value
* :github:`32382` - Clock issues for STM32F103RE custom board
* :github:`32376` - samples: driver: watchdog: Sample fails on disco_l475_iot1
* :github:`32375` - Networking stack crashes when run in cooperative scheduling mode only
* :github:`32365` - samples: hci_rpmsg build fail for nrf5340
* :github:`32344` - sporadic failure in tests/kernel/mem_protect/userspace/kernel.memory_protection.userspace
* :github:`32343` - openthread manual joiner hangs
* :github:`32342` - review use of cpsid in aarch32 / CONFIG_PM
* :github:`32331` - Use of unitialized variables in can_set_bitrate()
* :github:`32321` - /tmp/ccTlcyeD.s:242: Error: Unrecognized Symbol type  " "
* :github:`32320` - drivers: flash: stm32: Flush ART Flash cache after erase operation
* :github:`32314` - 2021 GSoC Project Idea: Enable Interactive Zephyr Test Suite
* :github:`32291` - Zephyr don't build sample hello world for Particle Xenon
* :github:`32289` - USDHC: Fails after reset
* :github:`32279` - Question about flasing Adafruit Feather Sense with Zephyr
* :github:`32270` - TCP connection stalls
* :github:`32269` - shield: cmake: Shield conf is not loaded during build
* :github:`32265` - STM32F4 stuck handling I2C interrupt
* :github:`32261` - problem with CONFIG_STACK_SENTINEL
* :github:`32260` - STM32 counter driver error in estimating alarm time
* :github:`32258` - power mgmt: pm_devices: Get rid of z_pm_core_devices array
* :github:`32257` - Common DFU partition enumeration API
* :github:`32256` - Bluetooth mesh : Long friendship establishment after reset
* :github:`32252` - Building anything for nrf5340pdk_nrf5340_cpuappns/mps2_an521_ns(any non-secure platforms) pulls external git trees
* :github:`32237` - twister failing locally - fails to link native_posix w/lld
* :github:`32234` - Documentation: How to update Zephyr itself (with west)
* :github:`32233` - Often disconnect timeouts when running the BLE peripheral HR sample on Nitrogen96
* :github:`32224` - Treat devicetree binding deprecation usage as build error when running w/twister
* :github:`32212` - Tx power levels are not similar on ADV and CONN modes when set manually (nRF52)
* :github:`32206` - CMSIS-DSP support seems broken on link
* :github:`32205` - [misc] AArch64 improvements and fixes
* :github:`32203` - Cannot set static address when using hci_usb or hci_uart on nRF5340 attached to Linux Host
* :github:`32201` - arch_switch() on ARM64 isn't quite right
* :github:`32197` - arch_switch() on SPARC isn't quite right
* :github:`32195` - ARMv8-nofp support
* :github:`32193` - Plan to support raspberry pi Pico?
* :github:`32158` - twister: inconsistent total testcases number with same configuration
* :github:`32145` - ``kernel threads`` and ``kernel stacks`` deadlock in many scenarios
* :github:`32137` - Provide test execution times per ztest testcase
* :github:`32118` - drivers/flash/soc_flash_nrf: nRF anomaly 242 workaround is not implemented
* :github:`32098` -  Implement a driver for the   Microphone / audio sensor (MP23ABS1) in Sensotile.Box
* :github:`32084` - Custom Log Backend breaks performance
* :github:`32075` - net: lwm2m: Testing Strategy for LWM2M Engine
* :github:`32072` - tests/kernel/common seems to fail on nrf52833dk_nrf52833
* :github:`32071` - devicetree: ``bus:`` does not work in ``child-binding``
* :github:`32052` - p4wq has a race with work item re-use
* :github:`32023` - samples: bluetooth: peripheral_hids: Unable to communicate with paired device after board reset
* :github:`32000` - 2021 GSoC Call for Project Ideas - deadline Feb.19, 2021 12:00PM PST
* :github:`31985` - riscv: Long execution time when TICKLESS_KERNEL=y
* :github:`31982` - tests: kernel: queue: regression introduced by FPU sharing PR #31772
* :github:`31980` - Communicating with BMI160 chip over SPI
* :github:`31969` - test_tcp_fn:net2 mximxrt1060/1064/1050 fails on test_client_invalid_rst with semaphore timed out
* :github:`31964` - up_squared: tests/kernel/timer/timer_api failed.
* :github:`31922` - hci_usb: HCI ACL packet with size divisible by 64 not sent
* :github:`31856` - power: ``device_pm_get_sync`` not thread-safe
* :github:`31854` - undefined reference to ``sys_arch_reboot``
* :github:`31829` - net: lwm2m: Update IPSO objects to version 1.1
* :github:`31799` - uart_configure does not return -ENOTSUP for stm32 uart with 9 bit data length.
* :github:`31774` - Add an application power management sample (PM_POLICY_APP)
* :github:`31762` - ivshmem application in acrn
* :github:`31761` - logging:buffer_write with len=0 causes kernel panic
* :github:`31757` - GCC compiler option should include '-mcpu=hs38' for HSDK
* :github:`31742` - Bluetooth: BLE 5 data throughput to Linux host
* :github:`31721` - tests: nrf: posix: portability.posix.common.tls.newlib fails on nrf9160dk_nrf9160
* :github:`31711` - UART failure with CONFIG_UART_ASYNC_API
* :github:`31613` - Undefined reference errors when using External Library with k_msgq_* calls
* :github:`31588` - Bluetooth: Support for multiple connectable advertising sets with different identities.
* :github:`31585` - BMD345: Extended BLE range with PA/LNA
* :github:`31503` - drivers: i2c: i2c_nrfx_twim  Power Consumption rises after I2C data transfer
* :github:`31416` - ARC MPU version number misuse ver3, should be ver4
* :github:`31348` - twister: CI: Run twister daily builds with "--overflow-as-errors"
* :github:`31323` - Compilation warning regards the SNTP subsys
* :github:`31299` - tests/kernel/mbox/mbox_usage failed on hsdk board
* :github:`31284` - [stm32] PM restore console after sleep mode
* :github:`31280` - devicetree: Add a macro to easily get optionnal devicetree GPIO properties
* :github:`31254` - Bluetooth: Extended advertising with one advertising set fails after the first time
* :github:`31248` - i2c shell functions non-functional on nRF53
* :github:`31217` - Multi-threading flash access is not supported by flash_write_protection_set()
* :github:`31191` - Samples: TF-M: Enable NS test app(s)
* :github:`31179` - ``iso bind`` for slave not working as intended
* :github:`31169` - kconfig configuration (prj.conf) based on zephyr version
* :github:`31164` - Problem to build lorawan from samples
* :github:`31150` - tests/subsys/canbus/isotp/conformance: failing on nucleo_f746zg
* :github:`31149` - tests/subsys/canbus/isotp/implementation: failing on nucleo_f746zg
* :github:`31103` - CMSIS RTOS v2 API implementation bugs in osEventFlagsWait
* :github:`31058` - SWO log backend clock frequency is off on some CPUs
* :github:`31036` - BMI 160 i2c version not working. I modified to i2c in kconfig to make it use i2c.
* :github:`31031` - samples/bluetooth/mesh is not helpful
* :github:`30991` - Unable to add new i2c sensor to nrf/samples
* :github:`30943` - MPU fault with STM32L452
* :github:`30936` - tests: sockets: tcp: add a tls test
* :github:`30929` - PDM Driver for nrf52840dk
* :github:`30841` - How to disable reception of socket CAN frames
* :github:`30771` - Logging: Fault instruction address in the logging thread
* :github:`30770` - mps2_an521: no input to shell from Windows qemu host
* :github:`30618` - Add arduino header/spi support for HSDK board
* :github:`30544` - nrf5340 pwm "Unsupported board: pwm-led0 devicetree alias is not defined"
* :github:`30540` - CONFIG_TRACING not working after updating from v2.1.0 to 2.2.0
* :github:`30520` - recv() call to Ublox Sara R4 cant return 0
* :github:`30465` - Spurious interrupts not handled in ARMv7-R code with GICv2.
* :github:`30441` - hci_uart uses wrong BT_BUF_ACL_SIZE on dual chip solutions + multicore
* :github:`30429` - Thread Border Router with NRC/RCP sample and nrf52840dk not starting
* :github:`30416` - No restore possible with mesh shell app from /tests using qemu_x86 on RaspberryPi3
* :github:`30395` - Add possibility to use alternative list of platforms default for CI runs.
* :github:`30355` - Multiple vlan interfaces on same interface not working
* :github:`30353` - RFC: Logging subsystem overhaul
* :github:`30325` - Stack overflow with http post when using civetweb
* :github:`30204` - Support for Teensy 4.0 and 4.1
* :github:`30195` - Missing error check of device_get_binding() and flash_area_open()
* :github:`30192` - mec15xxevb_assy6853: running tests/subsys/power/power_mgmt_soc failed
* :github:`30162` - Build zephyr with Metaware toolchain for HSDK fails
* :github:`30121` - Make log subsystem power aware
* :github:`30101` - tests should not be silently skipped due to insufficient RAM
* :github:`30074` - Occasional Spinlocks on zephyr 2.4.0 (ASSERTION FAIL [z_spin_lock_valid(l)] @ WEST_TOPDIR/zephyr/include/spinlock.h:92)
* :github:`30055` - Memory corruption for newlib-nano with float printf and disabled heap
* :github:`29946` - SD card initialization is wrong
* :github:`29915` - eth: stm32h747i_disco: sem timeout and hang on debug build
* :github:`29798` - test spi loopback with dma fails on nucleo_f746zg
* :github:`29733` - SAM0 will wake up with interrupted execution after deep sleep
* :github:`29722` - West flash is not able to flash with openocd
* :github:`29689` - tests: drivers: gpio: gpio_basic_api: correct dts binding
* :github:`29610` - documentation says giving a semaphore can release IRQ lock
* :github:`29599` - gPTP: frdm_k64f : can not converge time
* :github:`29581` - LoRaWAN sample for 96b_wistrio - Tx timeout
* :github:`29545` - samples: tfm_integration: tfm_ipc: No module named 'cryptography.hazmat.primitives.asymmetric.ed25519'
* :github:`29526` - generic page pool for MMU-based systems
* :github:`29476` - Samples: TF-M: Add PSA FF API Sample
* :github:`29349` - Using float when driver init in RISC-V arch might cause system to get stuck.
* :github:`29224` - PTS: Test framework: Bluetooth: GATT/SR/GAC/BI-01-C - FAIL
* :github:`29107` - Bluetooth: hci-usb uses non-standard interfaces
* :github:`29038` - drivers/usb/device/usb_dc_native_posix_adapt.c sees weird commands and aborts
* :github:`28901` - implement searchable bitfields
* :github:`28900` - add support for memory un-mapping
* :github:`28873` - z_device_ready() lies
* :github:`28803` - Use generic config option for early platfrom init (AKA "warm boot")
* :github:`28722` - Bluetooth: provide ``struct bt_conn`` to ccc_changed callback
* :github:`28597` - Bluetooth: controller: Redesign the implementation/use of NODE_RX_TYPE_DC_PDU_RELEASE
* :github:`28551` - up_squared: samples/boards/up_squared/gpio_counter failed.
* :github:`28535` - RFC: Add lz4 Data Compresssion library Support
* :github:`28438` - Example downstream manifest+module repo in zephyrproject-rtos
* :github:`28249` - driver: espi: mchp: eSPI OOB driver does not support callbacks for incoming OOB messages from eSPI master.
* :github:`28105` - sporadic "Attempt to resume un-suspended thread object" faults on x86-64
* :github:`28096` - fatfs update to latest upstream version
* :github:`27855` - i2c bitbanging on nrf52840
* :github:`27697` - Add support for passing -nogui 1 to J-Link Commander on MS Windows
* :github:`27692` - Allow to select between advertising packet/scan response for BT LE device name
* :github:`27525` - Including STM32Cube's USB PD support to Zephyr
* :github:`27484` - sanitycheck: Ease error interception from calling script
* :github:`27415` - Decide if we keep a single thread support (CONFIG_MULTITHREADING=n) in Zephyr
* :github:`27356` - deep review and redesign of API for work queue functionality
* :github:`27203` - tests/subsys/storage/flash_map failure on twr_ke18f
* :github:`27048` - Improve out-of-tree driver experience
* :github:`27033` - Update terminology related to I2C
* :github:`27032` - zephyr network stack socket APIs are not thread safe
* :github:`27000` - Avoid oppressive language in code base
* :github:`26952` - SMP support on ARM64 platform
* :github:`26889` - subsys: power: Need syscall that allows to force sleep state
* :github:`26760` - Improve caching configuration and move it to be cross architecture
* :github:`26728` - Allow k_poll for multiple message queues
* :github:`26495` - Make k_poll work with KERNEL_COHERENCE
* :github:`26491` - PCIe: add API to get BAR region size
* :github:`26363` - samples: subsys: canbus: canopen: objdict: CO_OD.h is not normally made.
* :github:`26246` - Printing 64-bit values in LOG_DBG
* :github:`26172` - Zephyr Master/Slave not conforming with Core Spec. 5.2 connection policies
* :github:`26170` - HEXDUMP log gives warning when logging function name.
* :github:`26118` - Bluetooth: controller: nRF5x: refactor radio_nrf5_ppi.h
* :github:`25956` - Including header files from modules into app
* :github:`25865` - Device Tree Memory Layout
* :github:`25775` - [Coverity CID :210075] Negative array index write in samples/net/cloud/mqtt_azure/src/main.c
* :github:`25719` - sanitycheck log mixing between tests
* :github:`25601` - UART input does not work on mps2_an{385,521}
* :github:`25440` - Bluetooth: controller: ensure deferred PDU populations complete on time
* :github:`25389` - driver MMIO address range management
* :github:`25313` - samples:mimxrt1010_evk:samples/subsys/usb/audio: build error no usbd found
* :github:`25187` - Generic ethernet packet filtering based on link (MAC) address
* :github:`24986` - Convert dma_nios2_msgdma to DTS
* :github:`24731` - Bluetooth: controller: Network privacy not respected when address resolution is disabled
* :github:`24625` - lib: drivers: clock: rtc:  rtc api to maintain calendar time through reboot
* :github:`24228` - system power states
* :github:`24142` - NRF5340 PA/LNA support
* :github:`24119` - STM32: SPI: Extend power saving SPI pin config to all stm32 series
* :github:`24113` - STM32 Flash: Device tree updates
* :github:`23727` - RFC: clarification and standardization of ENOTSUP/ENOSYS error returns
* :github:`23520` - JLink Thread-Aware Debugging (RTOS Plugin)
* :github:`23465` - Zephyr Authentication - ZAUTH
* :github:`23449` - "make clean" doesn't clean a lot of generated files
* :github:`23225` - Bluetooth: Quality of service: Adaptive channel map
* :github:`23165` - macOS setup fails to build for lack of "elftools" Python package
* :github:`22965` - 4 byte addressing in spi_nor driver for memory larger than 128Mb.
* :github:`22956` - nios2: k_busy_wait() never returns if called with interrupts locked
* :github:`22731` - Improve docker CI documentation
* :github:`22620` - adapt cpu stats tracing to tracing infrastructure
* :github:`22078` - stm32: Shell module sample doesn't work on nucleo_l152re
* :github:`22061` - Ethernet switch support
* :github:`22060` - Build fails with gcc-arm-none-eabi-9-2019-q4-major
* :github:`22027` - i2c_scanner does not work on olimexino_stm32
* :github:`21993` - Bluetooth: controller: split: Move the LLL event prepare/resume queue handling into LLL
* :github:`21840` - need test case for CONFIG_MULTIBOOT on x86
* :github:`21811` - Investigate using Doxygen-generated API docs vs. Sphinx/Breath API docs
* :github:`21809` - Update document generating tools to newer versions
* :github:`21783` - rename zassert functions
* :github:`21489` - Allow to read any types during discovery
* :github:`21484` - Option for safe k_thread_abort
* :github:`21342` - z_arch_cpu_halt() should enter deep power-down where supported
* :github:`21293` - adding timeout the I2C read/write functions for the stm32 port
* :github:`21136` - ARC: Add support for reduced register file
* :github:`21061` - Document where APIs can be called from using doxygen
* :github:`21033` - Read out heap space used and unallocated
* :github:`20707` - Define GATT service at run-time
* :github:`20576` - DTS overlay files must include full path name
* :github:`20366` - Make babbelsim testing more easily available outside of CI
* :github:`19655` - Milestones toward generalized representation of timeouts
* :github:`19582` - zephyr_library: missing 'kernel-mode' vs 'app-mode' documentation
* :github:`19340` - ARM: Cortex-M: Stack Overflows when building with NO_OPTIMIZATIONS
* :github:`19244` - BLE throughput of DFU by Mcumgr is too slow
* :github:`19224` - deprecate spi_flash_w25qxxdv
* :github:`18934` - Update Documentation To Reflect No Concurrent Multi-Protocol
* :github:`18554` - Tracking Issue for C++ Support as of release 2.1
* :github:`18509` - Bluetooth:Mesh:Memory allocation is too large
* :github:`18351` - logging: 32 bit float values don't work.
* :github:`17991` - Cannot generate coverage reports on qemu_x86_64
* :github:`17748` - stm32: clock-control: Remove usage of SystemCoreClock
* :github:`17745` - stm32: Move clock configuration to device tree
* :github:`17571` - mempool is expensive for cyclic use
* :github:`17486` - nRF52: SPIM: Errata work-around status?
* :github:`17375` - Add VREF, TEMPSENSOR, VBAT internal channels to the stm32 adc driver
* :github:`17353` - Configuring with POSIX_API disables NET_SOCKETS_POSIX_NAMES
* :github:`17314` - doc: add tutorial for using mbed TLS
* :github:`16539` - include/ directory and header cleanup
* :github:`16150` - Make more LWM2M parameters configurable at runtime
* :github:`15855` - Create a reliable footprint tracking benchmark
* :github:`15854` - Footprint Enhancements
* :github:`15738` - Networking with QEMU for mac
* :github:`15497` - USB DFU: STM32: usb dfu mode doesn't work
* :github:`15134` - samples/boards/reel_board/mesh_badge/README.rst : No compilation or flash instructions
* :github:`14996` - enhance mutex tests
* :github:`14973` - samples: Specify the board target required for the sample
* :github:`14806` - Assorted pylint warnings in Python scripts
* :github:`14591` - Infineon Tricore architecture support
* :github:`14581` - Network interfaces should be able to declare if they work with IPv4 and IPv6 dynamically
* :github:`14442` - x86 SOC/CPU definitions need clean up.
* :github:`14309` - Automatic device dependency tracking
* :github:`19760` - Provide command to check board supported features
* :github:`13553` - Ways to reduce Bluetooth Mesh message loss
* :github:`13469` - Shell does not show ISR stack usage
* :github:`13436` - Enabling cooperative scheduling via menuconfig may result in an invalid configuration
* :github:`13091` - sockets: Implement MSG_WAITALL flag
* :github:`12718` - Generic MbedTLS setup doesn't use MBEDTLS_ENTROPY_C
* :github:`12098` - Not possible to print 64 bit decimal values with minimal libc
* :github:`12028` - Enable 16550 UART driver on x86_64
* :github:`11820` - sockets: Implement (POSIX-compatible) timeout support
* :github:`11529` - Get configuration of a running kernel in console
* :github:`11449` - checkpatch warns on .dtsi files about line length
* :github:`11207` - ENOSYS has ambiguous meaning.
* :github:`10621` - RFC: Enable device by using dts, not Kconfig
* :github:`10499` - docs: References to "user threads" are confusing
* :github:`10494` - sockets: Implement MSG_TRUNC flag for recv()
* :github:`10436` - Mess with ssize_t, off_t definitions
* :github:`10268` - Clean up remaining SPI_DW defines in soc.h
* :github:`10042` - MISRA C - Do not cast an arithimetic type to void pointer
* :github:`10041` - MISRA C - types that indicate size and signedness should be used instead of basic numerical types
* :github:`10030` - MISRA C - Document Zephyr's code guideline based on MISRA C 2012
* :github:`9954` - samples/hello_world build failed on Windows/MSYS
* :github:`9895` - MISRA C Add 'u' or 'U' suffix for all unsigned integer constants
* :github:`9894` - MISRA C Make external identifiers distinct according with C99
* :github:`9889` - MISRA C  Avoid implicit conversion between integers and boolean expressions
* :github:`9886` - MISRA C Do not mix signed and unsigned types
* :github:`9885` - MISRA C Do not have dead code
* :github:`9884` - MISRA-C Check return value of a non-void function
* :github:`9882` - MISRA-C - Do not use reserved names
* :github:`9778` - Implement zephyr specific SEGGER_RTT_LOCK and SEGGER_RTT_UNLOCK macros
* :github:`9626` - Add support for the FRDM-KL28Z board
* :github:`9507` - pwm: No clear semantics to stop a PWM leads to diverse implementations
* :github:`9284` - Issues/experience trying to use TI ARM code gen tools in Zephyr
* :github:`8958` - Bluetooth: Proprietary vendor specific opcode discovery
* :github:`8400` - test kernel XIP case seems not well defined
* :github:`8393` - ``CONFIG_MULTITHREADING=n`` builds call ``main()`` with interrupts locked
* :github:`7317` - Add generation of SPDX TagValue documents to each build
* :github:`7297` - STM32: Drivers: Document series support for each driver
* :github:`7246` - esp32 fails to build with xtensa-esp32-elf-gcc: error: unrecognized command line option '-no-pie'
* :github:`7216` - Stop using gcc's "-include" flag
* :github:`7214` - Defines from DTS and Kconfig should be available simultaneously
* :github:`7151` - boards: Move existing boards to "default configuration guidelines"
* :github:`6925` - Provide Reviewer Guidelines as part of the documentation
* :github:`6291` - userspace: support MMU-based memory virtualization
* :github:`6066` - LwM2M: support object versioning in register / discover operations
* :github:`5517` - Expand toolchain/SDK support
* :github:`5325` - Support interaction with console in twister
* :github:`5116` - [Coverity CID: 179986] Null pointer dereferences in /subsys/bluetooth/host/mesh/access.c
* :github:`4911` - Filesystem support for qemu
* :github:`4569` - LoRa:  support LoRa
* :github:`1418` - kconfig options need some cleanup and reorganisation
* :github:`1415` - Problem with forcing new line in generated documentation.
* :github:`1392` - No module named 'elftools'
* :github:`3933` - LWM2M: Create application/link-format writer object to handle discovery formatting
* :github:`3931` - LWM2M: Data Validation Callback
* :github:`3723` - WiFi support for ESP32
* :github:`3675` - LE Adv. Ext.: Extended Scan with PHY selection for non-conn non-scan un-directed without aux packets
* :github:`3674` - LE Adv. Ext.: Non-Connectable and Non-Scannable Undirected without auxiliary packet
* :github:`3634` - ARM: implement NULL pointer protection
* :github:`3514` - Bluetooth: controller: LE Advertising Extensions
* :github:`3487` - Keep Zephyr Device tree Linux compatible
* :github:`3420` - Percepio Tracealyzer Support
* :github:`3280` - Paging Support
* :github:`2854` - Modbus RTU Support
* :github:`2542` - battery: Add standard APIs for Battery Charging and Fuel Gauge Handling (Energy Management)
* :github:`2470` - Supervisory and Monitoring Task
* :github:`2381` - SQL Database
* :github:`2336` - IPv4 - Multicast Join/Leave Support

---

### Doc Releases Release Notes 2.7 (`doc/releases/release-notes-2.7.rst`)

:orphan:

.. _zephyr_2.7:

Zephyr 2.7.0
############

We are pleased to announce the release of Zephyr RTOS version 2.7.0 (LTS2).

Major enhancements since v2.6.0 include:

* Bluetooth Audio, Direction Finding, and Mesh improvements
* Support for Bluetooth Advertisement PDU Chaining
* Added support for armclang / armlinker toolchain
* Added support for MWDT C / C++ toolchain
* Update to CMSIS v5.8.0 (Core v5.5.0, DSP v1.9.0)
* Support for M-Profile Vector Extensions (MVE) on ARMv8.1-M
* Improved thread safety for Newlib and C++ on SMP-capable systems
* IEEE 802.15.4 Software Address Filtering
* New Action-based Power Management API
* USB Device Framework now includes all Chapter 9 defines and structures
* Generic System Controller (``syscon``) driver and emulator
* Linker Support for Tightly-Coupled Memory in RISC-V
* Additional Blocking API calls for LoRa
* Support for extended PCI / PCIe capabilities, improved MIS-X support
* Added Support for Service Type Enumeration (STE) with mDNS / DNS Service Discovery
* Added Zephyr Thread Awareness for OpenOCD to West
* EEPROM now can be emulated in flash
* Added both Ethernet MDIO and Ethernet generic PHY drivers

Additional Major enhancements since v1.14.0 (LTS1) include:

* The kernel now supports both 32- and 64-bit architectures
* We added support for SOCKS5 proxy
* Introduced support for 6LoCAN, a 6Lo adaption layer for Controller Area Networks
* We added support for Point-to-Point Protocol (PPP)
* We added support for UpdateHub, an end-to-end solution for over-the-air device updates
* We added support for ARM Cortex-R Architecture
* Normalized APIs across all architectures
* Expanded support for ARMv6-M architecture
* Added support for numerous new boards and shields
* Added numerous new drivers and sensors
* Added BLE support on Vega platform
* Memory size improvements to Bluetooth host stack
* We added initial support for 64-bit ARMv8-A architecture
* CANopen protocol support through 3rd party CANopenNode stack
* LoRa support was added along with the SX1276 LoRa modem driver
* A new Zephyr CMake package has been introduced
* A new Devicetree API which provides access to virtually all DT nodes and properties
* The kernel timeout API has been overhauled
* A new k_heap/sys_heap allocator, with improved performance
* Zephyr now integrates with the TF-M (Trusted Firmware M) PSA-compliant framework
* The Bluetooth Low Energy Host now supports LE Advertising Extensions
* The CMSIS-DSP library is now included and integrated
* Introduced initial support for virtual memory management
* Added Bluetooth host support for periodic advertisement and isochronous channels.
* Added a new TCP stack which improves network protocol testability
* Introduced a new toolchain abstraction with initial support for GCC and LLVM/Clang
* Moved to using C99 integer types and deprecate Zephyr integer types
* Introduced support for the SPARC architecture and the LEON implementation
* Added Thread Local Storage (TLS) support
* Added support for per thread runtime statistics
* Added support for building with LLVM on X86
* Added new synchronization mechanisms using Condition Variables
* Add support for demand paging, initial support on X86
* Logging subsystem overhauled
* Added support for 64-bit ARCv3
* Split ARM32 and ARM64, ARM64 is now a top-level architecture
* Added initial support for Arm v8.1-m and Cortex-M55
* Removed legacy TCP stack support which was deprecated in 2.4
* Tracing subsystem overhaul / added support for Percepio Tracealyzer
* Device runtime power management (PM) completely overhauled
* Automatic SPDX SBOM generation has been added to West
* Added an example standalone Zephyr application

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-3510: `Zephyr project bug tracker GHSA-289f-7mw3-2qf4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-289f-7mw3-2qf4>`_.


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
***********

Deprecated in this release

* :c:macro:`DT_ENUM_TOKEN` and :c:macro:`DT_ENUM_UPPER_TOKEN`,
  were deprecated in favor of utilizing
  :c:macro:`DT_STRING_TOKEN` and :c:macro:`DT_STRING_UPPER_TOKEN`

* :c:macro:`BT_CONN_ROLE_MASTER` and :c:macro:`BT_CONN_ROLE_SLAVE`
  have been deprecated in favor of
  :c:macro:`BT_CONN_ROLE_CENTRAL` and :c:macro:`BT_CONN_ROLE_PERIPHERAL`

* :c:macro:`BT_LE_SCAN_OPT_FILTER_WHITELIST`
  has been deprecated in favor of
  :c:macro:`BT_LE_SCAN_OPT_FILTER_ACCEPT_LIST`

* The following whitelist functions have been deprecated:
  :c:func:`bt_le_whitelist_add`
  :c:func:`bt_le_whitelist_rem`
  :c:func:`bt_le_whitelist_clear`
  in favor of
  :c:func:`bt_le_filter_accept_list_add`
  :c:func:`bt_le_filter_accept_list_remove`
  :c:func:`bt_le_filter_accept_list_clear`

Modified in this release

* The following Bluetooth macros and structures in :file:`hci.h` have been
  modified to align with the inclusive naming in the v5.3 specification:

  * ``BT_LE_FEAT_BIT_SLAVE_FEAT_REQ`` is now ``BT_LE_FEAT_BIT_PER_INIT_FEAT_XCHG``
  * ``BT_LE_FEAT_BIT_CIS_MASTER`` is now ``BT_LE_FEAT_BIT_CIS_CENTRAL``
  * ``BT_LE_FEAT_BIT_CIS_SLAVE`` is now ``BT_LE_FEAT_BIT_CIS_PERIPHERAL``
  * ``BT_FEAT_LE_SLAVE_FEATURE_XCHG`` is now ``BT_FEAT_LE_PER_INIT_FEAT_XCHG``
  * ``BT_FEAT_LE_CIS_MASTER`` is now ``BT_FEAT_LE_CIS_CENTRAL``
  * ``BT_FEAT_LE_CIS_SLAVE`` is now ``BT_FEAT_LE_CIS_PERIPHERAL``
  * ``BT_LE_STATES_SLAVE_CONN_ADV`` is now ``BT_LE_STATES_PER_CONN_ADV``
  * ``BT_HCI_OP_LE_READ_WL_SIZE`` is now ``BT_HCI_OP_LE_READ_FAL_SIZE``
  * ``bt_hci_rp_le_read_wl_size`` is now ``bt_hci_rp_le_read_fal_size``
  * ``bt_hci_rp_le_read_wl_size::wl_size`` is now ``bt_hci_rp_le_read_fal_size::fal_size``
  * ``BT_HCI_OP_LE_CLEAR_WL`` is now ``BT_HCI_OP_LE_CLEAR_FAL``
  * ``BT_HCI_OP_LE_ADD_DEV_TO_WL`` is now ``BT_HCI_OP_LE_REM_DEV_FROM_FAL``
  * ``bt_hci_cp_le_add_dev_to_wl`` is now ``bt_hci_cp_le_add_dev_to_fal``
  * ``BT_HCI_OP_LE_REM_DEV_FROM_WL`` is now ``BT_HCI_OP_LE_REM_DEV_FROM_FAL``
  * ``bt_hci_cp_le_rem_dev_from_wl`` is now ``bt_hci_cp_le_rem_dev_from_fal``
  * ``BT_HCI_ROLE_MASTER`` is now ``BT_HCI_ROLE_CENTRAL``
  * ``BT_HCI_ROLE_SLAVE`` is now ``BT_HCI_ROLE_PERIPHERAL``
  * ``BT_EVT_MASK_CL_SLAVE_BC_RX`` is now ``BT_EVT_MASK_CL_PER_BC_RX``
  * ``BT_EVT_MASK_CL_SLAVE_BC_TIMEOUT`` is now ``BT_EVT_MASK_CL_PER_BC_TIMEOUT``
  * ``BT_EVT_MASK_SLAVE_PAGE_RSP_TIMEOUT`` is now ``BT_EVT_MASK_PER_PAGE_RSP_TIMEOUT``
  * ``BT_EVT_MASK_CL_SLAVE_BC_CH_MAP_CHANGE`` is now ``BT_EVT_MASK_CL_PER_BC_CH_MAP_CHANGE``
  * ``m_*`` structure members are now ``c_*``
  * ``s_*`` structure members are now ``p_*``

* The ``CONFIG_BT_PERIPHERAL_PREF_SLAVE_LATENCY`` Kconfig option is now
  :kconfig:option:`CONFIG_BT_PERIPHERAL_PREF_LATENCY`
* The ``CONFIG_BT_CTLR_SLAVE_FEAT_REQ_SUPPORT`` Kconfig option is now
  :kconfig:option:`CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT`
* The ``CONFIG_BT_CTLR_SLAVE_FEAT_REQ`` Kconfig option is now
  :kconfig:option:`CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG`

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

Removed APIs in this release

* Removed support for the deprecated ``DEVICE_INIT`` and ``DEVICE_AND_API_INIT`` macros.
* Removed support for the deprecated ``BUILD_ASSERT_MSG`` macro.
* Removed support for the deprecated ``GET_ARG1``, ``GET_ARG2`` and ``GET_ARGS_LESS_1`` macros.
* Removed support for the deprecated Kconfig ``PRINTK64`` option.
* Removed support for the deprecated ``bt_set_id_addr`` function.
* Removed support for the Kconfig ``USB`` option. Option ``USB_DEVICE_STACK``
  is sufficient to enable USB device support.

* Removed ``CONFIG_OPENTHREAD_COPROCESSOR_SPINEL_ON_UART_ACM`` and
  ``CONFIG_OPENTHREAD_COPROCESSOR_SPINEL_ON_UART_DEV_NAME`` Kconfig options
  in favor of chosen node ``zephyr,ot-uart``.
* Removed ``CONFIG_BT_UART_ON_DEV_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,bt-uart``.
* Removed ``CONFIG_BT_MONITOR_ON_DEV_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,bt-mon-uart``.
* Removed ``CONFIG_MODEM_GSM_UART_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,gsm-ppp``.
* Removed ``CONFIG_UART_MCUMGR_ON_DEV_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,uart-mcumgr``.
* Removed ``CONFIG_UART_CONSOLE_ON_DEV_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,console``.
* Removed ``CONFIG_UART_SHELL_ON_DEV_NAME`` Kconfig option
  in favor of direct use of chosen node ``zephyr,shell-uart``.

============================

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

* Bluetooth

  * Added :c:struct:`multiple` to the :c:struct:`bt_gatt_read_params` - this
    structure contains two members: ``handles``, which was moved from
    :c:struct:`bt_gatt_read_params`, and ``variable``.

* Networking

  * Added IPv4 address support to the multicast group join/leave monitor. The
    address parameter passed to the callback function was therefore changed from
    ``in6_addr`` to ``net_addr`` type.

Kernel
******


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

* ARC

  * Add SMP support to ARCv3 HS6x
  * Add MWDT C library support
  * Add basic C++ support with MWDT toolchain
  * Add MPUv3 and MPUv6 support
  * Remove dead PM code from ARC core interrupt controller driver
  * Add updating arc connect debug mask dynamically


* ARM

  * AARCH32

     * Updated CMSIS version to 5.8.0
     * Added support for FPU in QEMU for Cortex-M, allowing to build and execute
       tests in CI with FPU and FPU_SHARING options enabled.
     * Added MPU support for Cortex-R


  * AARCH64


* RISC-V

  * Added support to RISC-V CPU devicetree compatible bindings
  * Added support to link with ITCM & DTCM sections


* x86


Bluetooth
*********

* Updated all APIs and internal implementation to be conformant with the new
  inclusive terminology in version 5.3 of the Bluetooth Core Specification

* Audio

  * Added the Microphone Input Control Service and client.
  * Changed the connected isochronous API to use a group-based opaque struct
  * Split the configuration options into connected and broadcast groups
  * Added support for a new sent callback to be notified when an SDU has been
    transmitted

* Direction Finding

  * Added configurability for conditional CTE RX support
  * Added support for CTE periodic advertising chain transmissions

* Host

  * Added support for setting more than 251 bytes of advertising data
  * Added new callbacks on ATT MTU update
  * Added a new call to retrieve the handle of an advertising set
  * Fixed key overwrite algorithm when working with multiple connections
  * Added configuration support for GATT security re-establishment
  * Added support for writing a long device name
  * OTS: Added object name write capability

* Mesh

  * Added return value for opcode callback
  * Added support for OOB Public Key in the provisionee role
  * Added a new API to manually store pending RPL entries
  * Added support for application access to mesh messages
  * Refactored the Mesh Model Extensions

* Bluetooth LE split software Controller

  * Added support for advertising PDU chaining, implementing advertising trains
    for Direction Finding
  * Added support for adding or removing the ACAD field in Common Extended
    Header Format to support BIGInfo
  * Refactored the legacy, extended and periodic advertising time reservation
    slot calculations
  * Implemented CSA#2 in Extended Advertising and Broadcast ISO sub-events
  * Added support for Extended Active Scanning
  * Added support for advertising on the S2 and S8 coding schemes
  * Added support for the Periodic Advertising channel map update indication

* HCI Driver

  * Removed all ``CONFIG_BT_*_ON_DEV_NAME`` Kconfig options, use Devicetree
    instead

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

* Added support for these SoC series:

  * Added STM32U5 basic SoC support

* Removed support for these SoC series:


* Made these changes in other SoC series:

  * Added Atmel SAM0 pinctrl support
  * Added Atmel SAM4L USBC device controller
  * Added Atmel GMAC support for MDIO driver
  * Added Atmel GMAC support to use generic PHY driver
  * Added Atmel SAM counter (TC) Driver
  * Added Atmel SAM DAC (DACC) driver
  * Enabled Atmel SAM ``clock-frequency`` support from devicetree
  * Free Atmel SAM TRACESWO pin when unused
  * Enabled Cypress PSoC-6 Cortex-M4 support
  * Added low power support to STM32L0, STM32G0 and STM32WL series
  * STM32: Enabled ART Flash accelerator by default when available (F2, F4, F7, H7, L5)
  * STM32: Added Kconfig option to enable STM32Cube asserts (CONFIG_USE_STM32_ASSERT)
  * NXP FRDM-K82F: Added arduino_i2c and arduino_spi aliases
  * NXP i.MX RT series: Added support for flash controller with XIP
  * NXP i.MX RT series: Added TRNG support
  * NXP i.MX RT1170: Added LPSPI driver support
  * NXP i.MX RT1170: Added ADC driver support
  * NXP i.MX RT1170: Enabled Segger RTT/SystemView
  * NXP i.MX RT1170: Added MCUX FlexCan support
  * NXP i.MX RT1064: Added watchdog driver support
  * NXP i.MX RT1064: Added DMA driver support
  * NXP i.MX RT600: Added arduino serial port
  * NXP i.MX RT600: Add mcuboot flash partitions
  * NXP i.MX RT600: Added counter support
  * NXP i.MX RT600: Added PWM support
  * NXP i.MX RT600: Added disk driver support
  * NXP i.MX RT600: Added USB driver support
  * NXP i.MX RT600: Added LPADC driver support
  * NXP i.MX RT600: Added CTimer Counter support
  * NXP KE1xF: Added SoC Power Management support
  * NXP LPC55s69: Added USB driver support
  * NXP LPC55s69: Added ctimer driver support
  * NXP LPC55s69: Added I2S driver support


* Changes for ARC boards:

  * Implement 'run' command for SMP nSIM simulation board
  * Enable upstream verification on QEMU ARCv3 HS6x board (qemu_arc_hs6x)
  * Implement creg GPIO driver and add it to hsdk and em_starterkit boards


* Changes for ARM boards:

  * Added SPI support on Arduino standard SPI when possible

* Added support for these ARM boards:

  * Dragino NBSN95 NB-IoT Sensor Node
  * Seeedstudio LoRa-E5 Dev Board
  * ST B_U585I_IOT02A Discovery kit
  * ST Nucleo F446ZE
  * ST Nucleo U575ZI Q
  * ST STM32H735G Discovery
  * PJRC Teensy 4 Board

* Added support for these ARM64 boards:


* Removed support for these ARM boards:


* Removed support for these X86 boards:


* Made these changes in other boards:

  * arduino_due: Added support for TC driver
  * atsame54_xpro: Added support for PHY driver
  * sam4l_ek: Added support for TC driver
  * sam4e_xpro: Added support for PHY driver
  * sam4e_xpro: Added support for TC driver
  * sam4s_xplained: Added support for TC driver
  * sam_e70_xplained: Added support for DACC driver
  * sam_e70_xplained: Added support for PHY driver
  * sam_e70_xplained: Added support for TC driver
  * sam_v71_xult: Added support for DACC driver
  * sam_v71_xult: Added support for PHY driver
  * sam_v71_xult: Added support for TC driver
  * sam_v71_xult: Enable pwm on LED0
  * cy8ckit_062_ble: Added arduino's nexus map


* Added support for these following shields:

  * 4.2inch epaper display (GDEW042T2)
  * X-NUCLEO-EEPRMA2 EEPROM memory expansion board

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

* ADC

  * Added STM32WL ADC driver
  * STM32: Added support for oversampling
  * Added driver for Microchip MEC172x

* Audio

  * Added DMIC driver for nRF PDM peripherals

* Bluetooth


* CAN

  * Renesas R-Car driver added


* Clock Control


* Console


* Counter

  * Add Atmel SAM counter (TC) Driver
  * Added STM32WL RTC counter driver

* Crypto

  * STM23: Add support for SOCs with AES hardware block (STM32G0, STM32L5 and STM32WL)

* DAC

  * Added Atmel SAM DAC (DACC) driver
  * Added support for Microchip MCP4725
  * Added support for STM32F3 series

* Disk

  * Added SDMMC support on STM32L4+
  * STM32 SDMMC now supports SDIO enabled devices
  * Added USDHC support for i.MX RT685

* Display

  * Added support for ST7735R

* DMA

  * Added Atmel SAM XDMAC reload support
  * Added support on STM32F3, STM32G0, STM32H7 and STM32L5
  * STM32: Reviewed bindings definitions, "st,stm32-dma-v2bis" introduced.


* EEPROM

  * Added support for EEPROM emulated in flash.

* Entropy

  * Added support for STM32F2, STM32G0, STM32WB and STM32WL

* ESPI

  * Added support for Microchip eSPI SAF

* Ethernet

  * Added Atmel SAM/SAM0 GMAC devicetree support
  * Added Atmel SAM/SAM0 MDIO driver
  * Added MDIO driver
  * Added generic PHY driver


* Flash

  * Added STM32F2, STM32L5 and STM32WL Flash driver support
  * STM32: Max erase time parameter was moved to device tree
  * Added quad SPI support for STM32F4

* GPIO


* Hardware Info


* I2C


* I2S

  * Added Atmel SAM I2S driver support to XDMAC reload
  * Added driver for nRF I2S peripherals

* IEEE 802.15.4

* IPM

  * STM32: Add HSEM based IPM driver for STM32H7 series

* Interrupt Controller


* LED


* LoRa

  * lora_send now blocks until the transmission is complete. lora_send_async
    can be used for the previous, non-blocking behaviour.
  * Enabled support for STM32WL series

* MEMC

  * Added STM32F4 support


* Modem

  * Added gsm_ppp devicetree support

* PCI/PCIe

  * Fixed an issue that MSI-X was used even though it is not available.
  * Improved MBAR retrieval for MSI-X.
  * Added ability to retrieve extended PCI/PCIe capabilities.

* Pinmux

  * Added Atmel SAM0 pinctrl support
  * STM32: Deprecated definitions like 'STM32F2_PINMUX_FUNC_PA0_UART4_TX'
    are now removed.


* PWM

  * Property "st,prescaler" of binding "st,stm32-pwm" now defaults to "0".
  * Added driver for ITE IT8XXX2 series
  * Added driver for NXP LPC devices
  * Added driver for Telink B91

* Sensor

  * Refactored various drivers to use ``_dt_spec``.
  * Refactored various drivers to support multiple instances.
  * Enhanced TI HDC20XX driver to support DRDY/INT pin.
  * Updated temperature conversion formula in TI HDC20XX driver.
  * Enhanced MS5607 pressure sensor driver to support I2C.
  * Fixed temperature compensation in MS5607 pressure sensor driver.
  * Refactored ST LIS2DW12 driver to move range, power, and trigger
    configuration from Kconfig to dts.
  * Enhanced TI BQ274XX fuel gauge driver to support power management.
  * Aligned ST sensor drivers to use STMEMC HAL I/F v2.00.
  * Added Sensirion SGP40 multipixel gas sensor driver.
  * Added Sensirion SHTCX humidity sensor driver.
  * Added Sensirion SHT4X temperature and humidity sensor driver.
  * Added SiLabs SI7270 hall effect magnetic position and temperature sensor
    driver.
  * Added ST I3G4250D gyroscope driver.
  * Added TI INA219 and INA23X current/power monitor drivers.
  * Added TI LM75 and LM77 temperature sensor drivers.
  * Added TI HDC20XX humidity and temperature sensor driver.

* Serial

  * Added kconfig to disable runtime re-configuration of UART
    to reduce footprint if so desired.
  * Added ESP32-C3 polling only UART driver.
  * Added ESP32-S2 polling only UART driver.
  * Added Microchip XEC UART driver.

* SPI


* Timer


* USB

  * Added Atmel SAM4L USBC device controller driver
  * Added support for NXP LPC USB controller
  * Adapted drivers use new USB framework header

* Watchdog

  * Added STM32L5 watchdog support


* WiFi


Networking
**********

* 802.15.4 L2:

  * Fixed a bug, where the net_pkt structure contained invalid LL address
    pointers after being processed by 802.15.4 L2.
  * Added an optional destination address filtering in the 802.15.4 L2.

* CoAP:

  * Added ``user_data`` field to the :c:struct:`coap_packet` structure.
  * Fixed processing of out-of-order notifications.
  * Fixed :c:func:`coap_packet_get_payload` function.
  * Converted CoAP test suite to ztest API.
  * Improved :c:func:`coap_packet_get_payload` function to minimize number
    of RNG calls.
  * Fixed retransmissions in the ``coap_server`` sample.
  * Fixed observer removal in the ``coap_server`` sample (on notification
    timeout).

* DHCPv4:

  * Fixed a bug, where DHPCv4 library removed statically configured gateway
    before obtaining a new one from the server.

* DNS:

  * Fixed a bug, where the same IP address was used to populate the result
    address info entries, when multiple IP addresses were obtained from the
    server.

* DNS-SD:

  * Added Service Type Enumeration support (``_services._dns_sd._udp.local``)

* HTTP:

  * Switched the library to use ``zsock_*`` API, to improve compatibility with
    various POSIX configurations.
  * Fixed a bug, where ``HTTP_DATA_FINAL`` notification was triggered even for
    intermediate response fragments.

* IPv6:

  * Multiple IPv6 fixes, addressing failures in IPv6Ready compliance tests.

* LwM2M:

  * Added support for notification timeout reporting to the application.
  * Fixed a bug, where a multi instance resource with only one active instance
    was incorrectly encoded on reads.
  * Fixed a bug, where notifications were generated on changes to non-readable
    resources.
  * Added mutex protection  for the state variable of the ``lwm2m_rd_client``
    module.
  * Removed LWM2M_RES_TYPE_U64 type, as it's not possible to encode it properly
    for large values.
  * Fixed a bug, where large unsigned integers were incorrectly encoded in TLV.
  * Multiple fixes for FLOAT type processing in the LwM2M engine and encoders.
  * Fix a bug, where IPSO Push Button counter resource was not triggering
    notification on incrementation.
  * Fixed a bug, where Register failures were reported as success to the
    application.

* Misc:

  * Added RX/TX timeout on a socket in ``big_http_download`` sample.
  * Introduced :c:func:`net_pkt_remove_tail` function.
    Added IEEE 802.15.4 security-related flags to the :c:struct:`net_pkt`
    structure.
  * Added bridging support to the Ethernet L2.
  * Fixed a bug in mDNS, where an incorrect address type could be set as a
    response destination.
  * Added an option to suppress ICMP destination unreachable errors.
  * Fixed possible assertion in ``net nbr`` shell command.
  * Major refactoring of the TFTP library.

* MQTT:

  * Added an option to register a custom transport type.
  * Fixed a bug in :c:func:`mqtt_abort`, where the function could return without
    releasing a lock.

* OpenThread:

  * Update OpenThread module up to commit ``9ea34d1e2053b6b2a80e1d46b65a6aee99fc504a``.
    Added several new Kconfig options to align with new OpenThread
    configurations.
  * Added OpenThread API mutex protection during initialization.
  * Converted OpenThread thread to a dedicated work queue.
  * Implemented missing :c:func:`otPlatAssertFail` platform function.
  * Fixed a bug, where NONE level OpenThread logs were not processed.
  * Added possibility to disable CSL sampling, when used.
  * Fixed a potential bug, where invalid error code could be returned by the
    platform radio layer to OpenThread.
  * Reworked UART configuration in the OpenThread Coprocessor sample.

* Socket:

  * Added microsecond accuracy in :c:func:`zsock_select` function.
  * Reworked :c:func:`zsock_select` into a syscall.
  * Fixed a bug, where :c:func:`poll` events were not signalled correctly
    for socketpair sockets.
  * Fixed a bug, where socket mutex could be used after being initialized by a
    new owner after being deallocated in :c:func:`zsock_close`.
  * Fixed a possible assert after enabling CAN sockets.
  * Fixed IPPROTO_RAW usage in packet socket implementation.

* TCP:

  * Fixed a bug, where ``unacked_len`` could be set to a negative value.
  * Fixed possible assertion failure in :c:func:`tcp_send_data`.
  * Fixed a bug, where [FIN, PSH, ACK] was not handled properly in
    TCP_FIN_WAIT_2 state.

* TLS:

  * Reworked TLS sockets to use secure random generator from Zephyr.
  * Fixed busy looping during DTLS handshake with offloaded sockets.
  * Fixed busy looping during TLS/DTLS handshake on non blocking sockets.
  * Reset mbed TLS session on timed out DTLS handshake, to allow a retry without
    closing a socket.
  * Fixed TLS/DTLS :c:func:`sendmsg` implementation for larger payloads.
  * Fixed TLS/DTLS sockets ``POLLHUP`` notification.

* WebSocket:

  * Fixed :c:func:`poll` implementation for WebSocket, which did not work
    correctly with offloaded sockets.
  * Fixed :c:func:`ioctl` implementation for WebSocket, which did not work
    correctly with offloaded sockets.

USB
***

* Added new header file where all defines and structures from Chapter 9
  (USB Device Framework) should be included.
* Revised configuration of USB device support.
  Removed Kconfig option ``CONFIG_USB`` and introduced Kconfig option
  ``CONFIG_USB_DEVICE_DRIVER`` to enable USB device controller drivers,
  which is selected when option ``CONFIG_USB_DEVICE_STACK`` is enabled.
* Enhanced verification of the control request in device stack, classes, and samples.
* Added support to store alternate interface setting.
* Added ``zephyr_udc0`` nodelabel to all boards with USB support to allow
  generic USB device support samples to be build.
* Reworked descriptors, config, and data definitions macros in CDC ACM class.
* Changed CDC ACM UART implementation to get configuration from devicetree.
  With this change, many ``CONFIG_*_ON_DEV_NAME`` options were removed and
  applications revised. See :ref:`usb_device_cdc_acm` for more information.

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

* Devicetree API

  * New "for-each" macros which work like existing APIs, but take variable
    numbers of arguments: :c:macro:`DT_FOREACH_CHILD_VARGS`,
    :c:macro:`DT_FOREACH_CHILD_STATUS_OKAY_VARGS`,
    :c:macro:`DT_FOREACH_PROP_ELEM_VARGS`,
    :c:macro:`DT_INST_FOREACH_CHILD_VARGS`,
    :c:macro:`DT_INST_FOREACH_STATUS_OKAY_VARGS`,
    :c:macro:`DT_INST_FOREACH_PROP_ELEM_VARGS`

  * Other new "for-each" macros: :c:macro:`DT_FOREACH_STATUS_OKAY`,
    :c:macro:`DT_FOREACH_STATUS_OKAY_VARGS`

  * New macros for converting strings to C tokens: :c:macro:`DT_STRING_TOKEN`,
    :c:macro:`DT_STRING_UPPER_TOKEN`

  * New :ref:`devicetree-pinctrl-api` helper macros

* Devicetree tooling

  * Errors are now generated when invalid YAML files are discovered while
    searching for bindings. See :ref:`dt-where-bindings-are-located` for
    information on the search path.

  * File names ending in ``.yml`` are now considered YAML files when searching
    for bindings.

  * Errors are now generated if invalid node names are used. For example, the
    node name ``node?`` now generates an error message ending in ``node?: Bad
    character '?' in node name``. The valid node names are documented in
    "2.2.2 Node Names" of the Devicetree specification v0.3.

  * Warnings are now generated if a :ref:`compatible property
    <dt-important-props>` in the ``vendor,device`` format uses an unknown
    vendor prefix. This warning does not apply to the root node.

    Known vendor prefixes are defined in
    :file:`dts/bindings/vendor-prefixes.txt` files, which may appear in any
    directory in :ref:`DTS_ROOT <dts_root>`.

    These may be upgraded to errors using the edtlib Python APIs; Zephyr's CI
    now generates such errors.

* Devicetree bindings

  * Various bindings had incorrect vendor prefixes in their :ref:`compatible
    <dt-important-props>` properties; the following changes were made to fix
    these.

    .. list-table::
       :header-rows: 1

       - * Old compatible
         * New compatible
       - * ``nios,i2c``
         * :dtcompatible:`altr,nios2-i2c`
       - * ``cadence,tensilica-xtensa-lx4``
         * :dtcompatible:`cdns,tensilica-xtensa-lx4`
       - * ``cadence,tensilica-xtensa-lx6``
         * :dtcompatible:`cdns,tensilica-xtensa-lx6`
       - * ``colorway,lpd8803``
         * :dtcompatible:`greeled,lpd8803`
       - * ``colorway,lpd8806``
         * :dtcompatible:`greeled,lpd8806`
       - * ``grove,light``
         * :dtcompatible:`seeed,grove-light`
       - * ``grove,temperature``
         * :dtcompatible:`seeed,grove-temperature`
       - * ``max,max30101``
         * :dtcompatible:`maxim,max30101`
       - * ``ublox,sara-r4``
         * :dtcompatible:`u-blox,sara-r4`
       - * ``xtensa,core-intc``
         * :dtcompatible:`cdns,xtensa-core-intc`
       - * ``vexriscv,intc0``
         * :dtcompatible:`vexriscv-intc0`

    Out of tree users of these bindings will need to update their
    devicetrees.

    You can support multiple versions of Zephyr with one devicetree by
    including both the old and new values in your nodes' compatible properties,
    like this example for the LPD8803::

        my-led-strip@0 {
                compatible = "colorway,lpd8803", "greeled,lpd8803";
                ...
        };

  * Other new bindings in alphabetical order: :dtcompatible:`andestech,atcgpio100`,
    :dtcompatible:`arm,gic-v3-its`, :dtcompatible:`atmel,sam0-gmac`,
    :dtcompatible:`atmel,sam0-pinctrl`, :dtcompatible:`atmel,sam-dac`,
    :dtcompatible:`atmel,sam-mdio`, :dtcompatible:`atmel,sam-usbc`,
    :dtcompatible:`cdns,tensilica-xtensa-lx7`,
    :dtcompatible:`espressif,esp32c3-uart`,
    :dtcompatible:`espressif,esp32-intc`,
    :dtcompatible:`espressif,esp32s2-uart`, :dtcompatible:`ethernet-phy`,
    :dtcompatible:`fcs,fxl6408`, :dtcompatible:`ilitek,ili9341`,
    :dtcompatible:`ite,it8xxx2-bbram`, :dtcompatible:`ite,it8xxx2-kscan`,
    :dtcompatible:`ite,it8xxx2-pinctrl-conf`, :dtcompatible:`ite,it8xxx2-pwm`,
    :dtcompatible:`ite,it8xxx2-pwmprs`, :dtcompatible:`ite,it8xxx2-watchdog`,
    :dtcompatible:`lm75`, :dtcompatible:`lm77`, :dtcompatible:`meas,ms5607`,
    :dtcompatible:`microchip,ksz8863`, :dtcompatible:`microchip,mcp7940n`,
    :dtcompatible:`microchip,xec-adc-v2`, :dtcompatible:`microchip,xec-ecia`,
    :dtcompatible:`microchip,xec-ecia-girq`,
    :dtcompatible:`microchip,xec-gpio-v2`,
    :dtcompatible:`microchip,xec-i2c-v2`, :dtcompatible:`microchip,xec-pcr`,
    :dtcompatible:`microchip,xec-uart`, :dtcompatible:`nuvoton,npcx-bbram`,
    :dtcompatible:`nuvoton,npcx-booter-variant`,
    :dtcompatible:`nuvoton,npcx-ps2-channel`,
    :dtcompatible:`nuvoton,npcx-ps2-ctrl`, :dtcompatible:`nuvoton,npcx-soc-id`,
    :dtcompatible:`nxp,imx-ccm-rev2`, :dtcompatible:`nxp,lpc-ctimer`,
    :dtcompatible:`nxp,lpc-uid`, :dtcompatible:`nxp,mcux-usbd`,
    :dtcompatible:`nxp,sctimer-pwm`, :dtcompatible:`ovti,ov2640`,
    :dtcompatible:`renesas,rcar-can`, :dtcompatible:`renesas,rcar-i2c`,
    :dtcompatible:`reserved-memory`, :dtcompatible:`riscv,sifive-e24`,
    :dtcompatible:`sensirion,sgp40`, :dtcompatible:`sensirion,sht4x`,
    :dtcompatible:`sensirion,shtcx`, :dtcompatible:`silabs,si7055`,
    :dtcompatible:`silabs,si7210`, :dtcompatible:`snps,creg-gpio`,
    :dtcompatible:`st,i3g4250d`, :dtcompatible:`st,stm32-aes`,
    :dtcompatible:`st,stm32-dma`, :dtcompatible:`st,stm32-dma-v2bis`,
    :dtcompatible:`st,stm32-hsem-mailbox`, :dtcompatible:`st,stm32-nv-flash`,
    :dtcompatible:`st,stm32-spi-subghz`,
    :dtcompatible:`st,stm32u5-flash-controller`,
    :dtcompatible:`st,stm32u5-msi-clock`, :dtcompatible:`st,stm32u5-pll-clock`,
    :dtcompatible:`st,stm32u5-rcc`, :dtcompatible:`st,stm32wl-hse-clock`,
    :dtcompatible:`st,stm32wl-subghz-radio`, :dtcompatible:`st,stmpe1600`,
    :dtcompatible:`syscon`, :dtcompatible:`telink,b91`,
    :dtcompatible:`telink,b91-flash-controller`,
    :dtcompatible:`telink,b91-gpio`, :dtcompatible:`telink,b91-i2c`,
    :dtcompatible:`telink,b91-pinmux`, :dtcompatible:`telink,b91-power`,
    :dtcompatible:`telink,b91-pwm`, :dtcompatible:`telink,b91-spi`,
    :dtcompatible:`telink,b91-trng`, :dtcompatible:`telink,b91-uart`,
    :dtcompatible:`telink,b91-zb`, :dtcompatible:`ti,hdc2010`,
    :dtcompatible:`ti,hdc2021`, :dtcompatible:`ti,hdc2022`,
    :dtcompatible:`ti,hdc2080`, :dtcompatible:`ti,hdc20xx`,
    :dtcompatible:`ti,ina219`, :dtcompatible:`ti,ina23x`,
    :dtcompatible:`ti,tca9538`, :dtcompatible:`ti,tca9546a`,
    :dtcompatible:`ti,tlc59108`,
    :dtcompatible:`xlnx,gem`, :dtcompatible:`zephyr,bbram-emul`,
    :dtcompatible:`zephyr,cdc-acm-uart`, :dtcompatible:`zephyr,gsm-ppp`,
    :dtcompatible:`zephyr,native-posix-udc`

* West (extensions)

    * openocd runner: Zephyr thread awareness is now available in GDB by default
      for application builds with :kconfig:option:`CONFIG_DEBUG_THREAD_INFO` set to ``y``
      in :ref:`kconfig`. This applies to ``west debug``, ``west debugserver``,
      and ``west attach``. OpenOCD version later than 0.11.0 must be installed
      on the host system.


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

* Disk


* Management


* CMSIS subsystem


* Power management

  * The APIs to set/clear/check if devices are busy from a power management
    perspective have been moved to the PM subsystem. Their naming and signature
    has also been adjusted to follow common conventions. Below you can find the
    equivalence list.

    * ``device_busy_set`` -> ``pm_device_busy_set``
    * ``device_busy_clear`` -> ``pm_device_busy_clear``
    * ``device_busy_check`` -> ``pm_device_is_busy``
    * ``device_any_busy_check`` -> ``pm_device_is_any_busy``

  * The device power management callback (``pm_device_control_callback_t``) has
    been largely simplified to work based on *actions*, resulting in simpler and
    more natural implementations. This principle is also used by other OSes like
    the Linux Kernel. As a result, the callback argument list has been reduced
    to the device instance and an action (e.g. ``PM_DEVICE_ACTION_RESUME``).
    Other improvements include specification of error codes, removal of some
    unused/unclear states, or guarantees such as avoid calling a device for
    suspend/resume if it is already at the right state. All these changes
    together have allowed simplifying multiple device power management callback
    implementations.

  * Introduced a new API to allow devices capable of wake up the system
    register themselves was wake up sources. This permits applications to
    select the most appropriate way to wake up the system when it is
    suspended. Devices marked as wake up source are not suspended by the kernel
    when the system is idle. It is possible to declare a device wake up capable
    direct in devicetree like this example::

        &gpio0 {
                compatible = "zephyr,gpio-emul";
                gpio-controller;
                wakeup-source;
        };

    * Removed  ``PM_DEVICE_STATE_FORCE_SUSPEND`` device power state.because it
      is an action and not a state.

    * Removed ``PM_DEVICE_STATE_RESUMING`` and ``PM_DEVICE_STATE_SUSPENDING``.
      They were transitional states and only used in device runtime. Now the
      subsystem is using device flag to keep track of a transition.

    * Implement constraint API as weak symbols so applications or platform
      can override them. Platforms can have their own way to
      set/release constraints in their drivers that are not part of
      Zephyr code base.


* Logging

* MODBUS

  * Changed server handler to copy Transaction and Protocol Identifiers
    to response header.

* Random

  * xoroshiro128+ PRNG deprecated in favor of xoshiro128++

* Shell


* Storage


* Task Watchdog


* Tracing


* Debug

* OS


HALs
****

* HALs are now moved out of the main tree as external modules and reside in
  their own standalone repositories.


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

* Renamed psa_level_1 sample to psa_crypto. Extended the use of the PSA Cryptography
  1.0 API in the sample code to demonstrate additional crypto functionality.
* Added a new sample to showcase the PSA Protecter Storage service.

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

* Kconfig options need to be referenced using the ``:kconfig:option:`` Sphinx role.
  Previous to this change, ``:option:`` was used for this purpose.
* Doxygen alias ``@config{}`` has been deprecated in favor of ``@kconfig{}``.

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


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

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

* :github:`39443` - Be more inclusive
* :github:`39419` - STM32WL55 not found st/wl/stm32wl55jcix-pinctrl.dtsi
* :github:`39413` - warnings when using newlibc and threads
* :github:`39409` - runners: canopen: program download fails with slow flash access and/or congested CAN nets
* :github:`39389` - http_get, big_http_download samples fails to build
* :github:`39388` - GSM Modem sample fails to build
* :github:`39378` - Garbage IQ Data Reports are generated if some check in hci_df_prepare_connectionless_iq_report fails
* :github:`39294` - noticing stm32 clock domain naming changes
* :github:`39291` - Bluetooth: Periodic advertising
* :github:`39284` - mdns + dns_sd: fix regression that breaks ptr queries
* :github:`39281` - Undefined references to k_thread_abort related tracing routines
* :github:`39270` - example-application CI build fails
* :github:`39263` - Bluetooth: controller: DF: wrong handling of max_cte_count
* :github:`39260` - [backport v2.7-branch] backport of #38292 failed
* :github:`39240` - ARC Kconfig allows so select IRQ configuration which isn't supported in SW
* :github:`39206` - lwm2m: send_attempts field does not seem to be used?
* :github:`39205` - drivers: wifi: esp_at: cannot connect to open (unsecure) WiFi networks
* :github:`39195` - USB: netusb: example echo_server not working as expected
* :github:`39190` - tests/subsys/logging/log_core_additional/logging.add.log2 fails
* :github:`39188` - tests/bluetooth/mesh/bluetooth.mesh.ext_adv fails
* :github:`39185` - tests/subsys/logging/log_core_additional/logging.add.user fails on several platforms
* :github:`39180` - samples/subsys/mgmt/osdp/peripheral_device & samples/subsys/mgmt/osdp/control_panel fail to build
* :github:`39170` - Can not run correctly on NXP MIMXRT1061 CVL5A.
* :github:`39135` - samples/compression/lz4 build failed (lz4.h: No such file or directory)
* :github:`39132` - subsys/net/ip/tcp2: Missing feature to decrease Receive Window size sent in the ACK messge
* :github:`39123` - ztest:  Broken on NRF52840 Platform
* :github:`39115` - sensor: fdc2x1x: warnings and compilation errors when PM_DEVICE is used
* :github:`39086` - CMake warning during build - depracated roule CMP0079
* :github:`39085` - Ordering of device_map() breaks PCIe config space mapping on ARM64
* :github:`39075` - IPv6 address not set on loopback interface
* :github:`39051` - Zephyr was unable to find the toolchain. Is the environment misconfigured?
* :github:`39036` - Multicast packet forwarding not working for the coap_server sample and Openthread
* :github:`39022` - [backport v2.7-branch] backport of #38834 failed
* :github:`39011` - Bluetooth: Mesh: Model extensions walk stops before last model
* :github:`39009` - Nordic PWM causing lock up due to infinte loop
* :github:`39008` - tests: logging.add.user: build failure on STM32H7 targets
* :github:`38999` - [backport v2.7-branch] backport of #38407 failed
* :github:`38996` - There is no way to leave a ipv6 multicast group
* :github:`38994` - ARP: Replies are sent to multicast MAC address rather than senders MAC address.
* :github:`38970` - LWM2M Client Sample with DTLS enabled fail to connect
* :github:`38966` - Please add STM32F412VX
* :github:`38961` - tests: kernel: sched: schedule_api: instable on disco_l475_iot1
* :github:`38959` - ITE RISCV I2C driver returning positive values for error instead of negative values
* :github:`38943` - west: update hal_espressif failure
* :github:`38938` - Bluetooth tester application should be able return L2CAP ECFC credits on demand
* :github:`38930` - Low Power mode not functional on nucleo_l073rz
* :github:`38924` - twister: cmake: Misleading error in Twister when sdk-zephyr 0.13.1 not used
* :github:`38904` - [backport v2.7-branch] backport of #38860 failed
* :github:`38902` - i2c_nrfx_twim: Error 0x0BAE0002 if sensor is set in trigger mode and reset with nrf device
* :github:`38899` - There is no valid date setting function in the RTC driver of the LL Library of STM32
* :github:`38893` - g0b1re + spi_flash_at45 + flash_shell: First write always fails with ``CONFIG_PM_DEVICE``
* :github:`38886` - devicetree/memory.h probably should not exist as-is
* :github:`38877` - Running the zephyr elf natively on an arm a53 machine (ThunderX2) with KVM emulation
* :github:`38870` - stm32f1: Button callback not fired
* :github:`38853` - Bluetooth: host: bt_unpair failed because function [bt_conn_set_state] wont work as expected
* :github:`38849` - drivers: i2c: nrf: i2c error with burst write
* :github:`38829` - net_buf issue leads to unwanted elem free
* :github:`38826` - tests/lib/cmsis_dsp: malloc failed on 128K SRAM targets
* :github:`38818` - driver display display_st7789v.c build error
* :github:`38815` - kernel/mem_domain: Remove dead case in check_add_partition()
* :github:`38807` - stm32: Missing header in power.c files
* :github:`38804` - tests\kernel\threads\thread_stack test fail with ARC
* :github:`38799` - BLE central_ht only receives 7 notifications
* :github:`38796` - Failure building the zephyr\tests\subsys\cpp\libcxx project
* :github:`38791` - Example code_relocation not compiling.
* :github:`38790` - SD FatFS Sample Build Failure
* :github:`38784` - stm32: pm: Debug mode not functional on G0
* :github:`38782` - CONFIG_BT_CTLR_DATA_LENGTH_MAX=250 causes pairing compatibility issues with many devices
* :github:`38769` - mqtt: the size of a mqtt payload is limited
* :github:`38765` - samples: create an OLED example
* :github:`38764` - CBPRINTF_FP_SUPPORT does not work after NEWLIB_LIBC enabled
* :github:`38761` - Does zephyr_library_property defines -DTRUE in command-line?
* :github:`38756` - Twister: missing testcases with error in report
* :github:`38745` - Bluetooth when configured for extended advertising does not limit advertisement packet size if a non-extended avertisement is used
* :github:`38737` - drivers: syscon: missing implementation
* :github:`38735` - nucleo_wb55rg: Flash space left to M0 binary is not sufficient anymore
* :github:`38731` - test-ci: ptp_clock_test :  test failure on frdm_k64f platform
* :github:`38727` - [RFC] Add hal_gigadevice to support GigaDevice SoC Vendor
* :github:`38716` - modem: HL7800: does not work with IPv6
* :github:`38702` - Coap server not properly removing observers
* :github:`38701` - Observable resource of coap server seems to not support a restart of an observer
* :github:`38700` - Observable resource of coap server seems to not support 2 observers simultaneously
* :github:`38698` - stm32f4_disco: Socket CAN sample not working
* :github:`38697` - The coap_server sample is missing the actual send in the retransmit routine
* :github:`38694` - Disabling NET_CONFIG_AUTO_INIT does not require calling net_config_init() manually in application as mentioned in Zephyr Network Configuration Library documentation
* :github:`38692` - samples/tfm_integration: Compilation fails ("unexpected keyword argument 'rom_fixed'")
* :github:`38691` - MPU fault with mcumgr bluetooth FOTA started whilst existing FOTA is in progress
* :github:`38690` - Wrong initialisation priority on different display drivers (eg. ST7735r) cause exception when using lvgl.
* :github:`38688` - bt_gatt_unsubscribe does not remove subscription from internal list/returning BT_GATT_ITER_STOP causes bt_gatt_subscribe to return -ENOMEM / -12
* :github:`38675` - DTS binding create devicetree_unfixed.h build error at v2.7.0
* :github:`38673` - DNS-SD library does not support ``_services._dns-sd._udp.local`` meta-query for service enumeration
* :github:`38668` -  ESP32‘s I2S
* :github:`38667` - ST LSM6DSO polling mode does not work on nRF52dk_nrf52832
* :github:`38655` - Failing Tests for Regulator API
* :github:`38653` - drivers: modem: gsm_ppp: Add support for Quectel modems
* :github:`38646` - SIMD Rounding bug while running Assembly addps instruction on Zephyr
* :github:`38641` - Arm v8-M '_ns' renaming was applied inconsistently
* :github:`38635` - USDHC driver broken on RT10XX after 387e6a676f86c00d1f9ef018e4b2480e0bcad3c8 commit
* :github:`38622` - subsys/usb: CONFIG_USB_DEVICE_STACK resulted in 10kb increase in firmware size
* :github:`38621` - Drivers: spi: stm32: Transceive lock forever
* :github:`38620` - STM32 uart driver prevent system to go to deep sleep
* :github:`38617` - HL7800 PSM not working as intended
* :github:`38613` - BLE connection parameters updated with inconsistent values
* :github:`38612` - Fault with assertions enabled prevents detailed output because of ISR() assertion check in shell function
* :github:`38602` - modem gsm
* :github:`38601` - nucleo_f103rb: samples/posix/eventfd/ failed since "retargetable locking" addition
* :github:`38593` - using RTT console to print along with newlib C library in Zephyr
* :github:`38591` - nucleo_f091rc: Linking issue since "align __data_ram/rom_start/end linker" (65a2de84a9d5c535167951bf1cf610c4f7967ea5)
* :github:`38586` - olimexino_stm32: "no DEVICE_HANDLE_ENDS inserted" builld issue (samples/subsys/usb/audio/headphones_microphone)
* :github:`38581` - tests-ci : kernel: scheduler: multiq test failed
* :github:`38582` - tests-ci : kernel: scheduler:  test failed
* :github:`38578` - STM32L0X ADC hangs
* :github:`38572` - Builds with macOS SDK are failing
* :github:`38571` - bug: drivers: ethernet: build as static library breaks frdm_k64f gptp sample application
* :github:`38563` - ISO broadcast cannot send with callback if CONFIG_BT_CONN=n
* :github:`38560` - log v2 with 64-bit integers and threads causes invalid 64-bit value output
* :github:`38559` - Shell log backend may hang on qemu_x86_64
* :github:`38558` - CMake warning: CMP0079
* :github:`38554` - tests-ci : kernel: scheduler:  test failed
* :github:`38552` - stm32: g0b1: garbage output in log and suspected hard fault when configuring modem
* :github:`38536` - samples: tests: display: Sample for display.ft800 causes end in timeout
* :github:`38535` - drivers: modem: bg9x: Kconfig values compiled into ``autoconf.h`` even if it isn't being used
* :github:`38534` - lwm2m: add api to inspect observation state of resource/object
* :github:`38532` - samples: audio: tests: Twister fails on samples/drivers/audio/dmic
* :github:`38527` - lwm2m: re-register instead of removing observer on COAP reset answer to notification
* :github:`38520` - Bluetooth:Host:Scan: "bt_le_per_adv_list_add" function doesn't work
* :github:`38519` - stm32: g0b1re: Log/Shell subsys with serial uart buggy after #38432
* :github:`38516` - subsys: net: ip: packet_socket: always returning of NET_CONTINUE caused access to unreferred pkt and causing a crash/segmentation fault
* :github:`38514` - mqtt azure sample failing with net_tcp "is waiting on connect semaphore"
* :github:`38512` - stm32f7: CAN: STM32F645VE CAN signal seems upside down.
* :github:`38500` - tests/kernel/device/kernel.device.pm fails to build on TI platforms
* :github:`38498` - net: ipv6: nbr_lock not initialized with CONFIG_NET_IPV6_ND=n
* :github:`38480` - Improve samples documentation
* :github:`38479` - "west flash" command exiting with error
* :github:`38477` - json: JSON Library Orphaned, Request to Become a Maintainer
* :github:`38474` - command exited with status 63: nrfjprog --ids
* :github:`38463` - check_compliance gives very many Kconfig warnings
* :github:`38452` - Some STM32 series require CONFIG_PM_DEVICE if CONFIG_PM=y
* :github:`38442` - test-ci: can: twr_ke18f: all can driver test fails with BUS Fault
* :github:`38438` - test-ci: test_flash_map:twr_ke18f: test failure
* :github:`38437` - stm32: g0b1re: Serial UART timing issue after MCU entered deep sleep
* :github:`38433` - gpio_pin_set not working on STM32 with CONFIG_PM_DEVICE_RUNTIME
* :github:`38428` - http_client response callback always reports final_data == HTTP_DATA_FINAL
* :github:`38427` - mimxrt1050_evk and mimxrt1020_evk boards fail to boot some sample applications
* :github:`38421` - HardFault regression detected on Cortex-M0+ following Cortex-R introduction
* :github:`38418` - twister: Remove toolchain-depandat filter for native_posix
* :github:`38417` - Add support for WeAct-F401CC board
* :github:`38414` - Build of http client fails if CONFIG_POSIX_API=y
* :github:`38405` - samples/philosophers/sample.kernel.philosopher.stacks fails on xtensa
* :github:`38403` - Cleanup ``No SOURCES given to Zephyr library`` warnings
* :github:`38402` - module: MCUboot module missing fixes available upstream
* :github:`38401` - Builds fail due to a proxy error by launchpadlibrarian
* :github:`38400` - mec15xxevb_assy6853: arm_ramfunc and arm_sw_vector_relay tests timeout after the build
* :github:`38398` - DT_N_INST error for TMP116 sample
* :github:`38396` - RISC-V privilege SoC initialisation code skips the __reset vector
* :github:`38382` - stm32 uart finishes Tx before going to PM
* :github:`38365` - drivers: gsm_ppp: gsm_ppp_stop fails to lock tx_sem after some time
* :github:`38362` - soc: ti cc13x2-cc26x2: PM standby + radio interaction regression
* :github:`38354` - stm32: stm32f10x JTAG realated gpio repmap didn't works
* :github:`38351` - Custom radio protocol
* :github:`38349` - XCC compilation fails on Intel cAVS platforms
* :github:`38348` - Bluetooth: Switch to inclusive terminology from the 5.3 specification
* :github:`38340` - Bluetooth:DirectionFinding: Disabling the MPU causes some compilation errors
* :github:`38332` - stm32g0: power hooks should be define as weak
* :github:`38323` - Can not generate code coverage report by running samples/subsys/tracing
* :github:`38316` - Synchronize multiple DF TX devices in the DF Connectionless RX Example "Periodic Advertising list"
* :github:`38309` - ARC context switch to interrupted thread busted with CONFIG_ARC_FIRQ=y and CONFIG_NUM_IRQ_PRIO_LEVELS=1
* :github:`38303` - The current BabbleSim tests build system based on bash scripts hides warnings
* :github:`38290` - net_buf_add_mem() hard-faults when adding buffer from external SDRAM
* :github:`38279` - Bluetooth: Controller: assert LL_ASSERT(!radio_is_ready()) in lll_conn.c
* :github:`38277` - soc: stm32h7: Fails to boot with LDO power supply, if soc has SMPS support.
* :github:`38276` - LwM2M: RD Client: Wrong state if registration fails
* :github:`38273` - Support UART4 on STM32F303Xe
* :github:`38272` - "west flash" stopped working
* :github:`38271` - Expose emulator_get_binding function
* :github:`38264` - Modbus over RS485 on samd21g18a re-gpios turning on 1 byte too early
* :github:`38259` - subsys/shell: ``[JJ`` escape codes in logs after disabling colors
* :github:`38258` - newlib: first malloc call may fail on Xtensa depending on image size
* :github:`38246` - samples: drivers: flash_shell: fails on arduino_due due to compilation issue
* :github:`38245` - board: bl654_usb project: samples/basic/blinky does not blink LED
* :github:`38240` - Connected ISO does not disconnect gracefully
* :github:`38237` - [backport v2.6-branch] backport of #37479 failed
* :github:`38235` - Please add stm32h723Xe.dtsi to dts/arm/st/h7/
* :github:`38234` - Newlib retargetable lock init fails on qemu_xtensa
* :github:`38233` - Build newlib function read() and write() failed when enable userspace
* :github:`38219` - kernel: Z_MEM_SLAB_INITIALIZER MACRO not compatible with C++
* :github:`38216` - nxp_adsp_imx8 fails to build a number of tests
* :github:`38214` - xtensa builds fail in CI due to running out of ram to link
* :github:`38207` - Use of unaligned noinit data hangs qemu_arc_hs
* :github:`38202` - mbedtls and littlefs on a STM32L4
* :github:`38197` - Invalid NULL check for ``iso`` in bt_iso_connected
* :github:`38196` - net nbr command might crash
* :github:`38191` - Unable to connect multiple MQTT clients
* :github:`38186` - i.MX RT10xx boards fail to initialize when Ethernet is enabled
* :github:`38181` - tests/drivers/uart/uart_basic_api/drivers.uart.cdc_acm fails to build
* :github:`38177` - LORA Module crashes SHT3XD sensor.
* :github:`38173` - STM32WB: Low power modes entry blocked by C2 when CONFIG_BLE=n
* :github:`38172` - modem_context_sprint_ip_addr returns pointer to stack array
* :github:`38170` - Shell argument in second position containing a question mark is ignored
* :github:`38168` - aarch32: flags value collision between base IRQ layer and GIC interrupt controller driver
* :github:`38162` - Upgrade to 2.6 GPIO device_get_binding("GPIO_0") now returns null
* :github:`38154` - Error building example i2c_fujitsu_fram
* :github:`38153` - Zephyr Native POSIX select() implementation too frequent wakeup on pure timeout based use
* :github:`38145` - [backport v2.6-branch] backport of #37787 failed
* :github:`38144` - [backport v2.6-branch] backport of #37787 failed
* :github:`38141` - Wrong output from printk() with CONFIG_CBPRINTF_NANO=y
* :github:`38138` - [Coverity CID: 239554] Out-of-bounds read in /zephyr/include/generated/syscalls/log_msg2.h (Generated Code)
* :github:`38137` - [Coverity CID: 239555] Unchecked return value in subsys/mgmt/hawkbit/hawkbit.c
* :github:`38136` - [Coverity CID: 239557] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`38135` - [Coverity CID: 239560] Out-of-bounds access in subsys/modbus/modbus_core.c
* :github:`38134` - [Coverity CID: 239563] Logically dead code in subsys/bluetooth/host/id.c
* :github:`38133` - [Coverity CID: 239564] Side effect in assertion in subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c
* :github:`38132` - [Coverity CID: 239565] Unchecked return value in drivers/sensor/adxl372/adxl372_trigger.c
* :github:`38131` - [Coverity CID: 239568] Out-of-bounds access in subsys/modbus/modbus_core.c
* :github:`38130` - [Coverity CID: 239569] Out-of-bounds access in subsys/bluetooth/host/id.c
* :github:`38129` - [Coverity CID: 239572] Out-of-bounds read in /zephyr/include/generated/syscalls/kernel.h (Generated Code)
* :github:`38127` - [Coverity CID: 239579] Logically dead code in drivers/flash/nrf_qspi_nor.c
* :github:`38126` - [Coverity CID: 239581] Out-of-bounds access in subsys/modbus/modbus_core.c
* :github:`38125` - [Coverity CID: 239582] Unchecked return value in drivers/display/ssd1306.c
* :github:`38124` - [Coverity CID: 239583] Side effect in assertion in subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c
* :github:`38123` - [Coverity CID: 239584] Improper use of negative value in subsys/logging/log_msg2.c
* :github:`38122` - [Coverity CID: 239585] Side effect in assertion in subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c
* :github:`38121` - [Coverity CID: 239586] Side effect in assertion in subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c
* :github:`38120` - [Coverity CID: 239588] Unchecked return value in subsys/bluetooth/host/id.c
* :github:`38119` - [Coverity CID: 239592] Dereference before null check in subsys/ipc/rpmsg_multi_instance/rpmsg_multi_instance.c
* :github:`38118` - [Coverity CID: 239597] Explicit null dereferenced in tests/net/context/src/main.c
* :github:`38117` - [Coverity CID: 239598] Unchecked return value in drivers/sensor/adxl362/adxl362_trigger.c
* :github:`38116` - [Coverity CID: 239601] Untrusted loop bound in subsys/bluetooth/host/sdp.c
* :github:`38115` - [Coverity CID: 239605] Logically dead code in drivers/flash/nrf_qspi_nor.c
* :github:`38114` - [Coverity CID: 239607] Missing break in switch in subsys/usb/class/dfu/usb_dfu.c
* :github:`38113` - [Coverity CID: 239609] Out-of-bounds access in subsys/random/rand32_ctr_drbg.c
* :github:`38112` - [Coverity CID: 239612] Out-of-bounds read in /zephyr/include/generated/syscalls/log_ctrl.h (Generated Code)
* :github:`38111` - [Coverity CID: 239615] Out-of-bounds access in subsys/net/lib/sockets/sockets_tls.c
* :github:`38110` - [Coverity CID: 239619] Out-of-bounds access in subsys/net/lib/sockets/sockets_tls.c
* :github:`38109` - [Coverity CID: 239623] Out-of-bounds access in subsys/net/lib/sockets/sockets_tls.c
* :github:`38108` - nxp: usb driver build failure due to d92d1f162af3ba24963f1026fc0a304f1a44d1f3
* :github:`38104` - kheap buffer own section attribute causing memory overflow in ESP32
* :github:`38101` - bt_le_adv_update_data() assertion fail
* :github:`38093` - preempt_cnt not reset in each test case in tests/lib/ringbuffer/libraries.data_structures
* :github:`38090` - LPS22HH: int32_t overflow in pressure calculations
* :github:`38082` - Hawkbit (http request) and MQTT can't seem to work together
* :github:`38078` - RT6XX I2S test fails after d92d1f162af3ba24963f1026fc0a304f1a44d1f3
* :github:`38069` - stm32h747i_disco M4 not working following merge of 9fa5437447712eece9c88e728ac05ac10fb01c4a
* :github:`38065` - Bluetooth: Direction Finding: Compiler warning when included in other header files
* :github:`38059` - automount configuration in nrf52840dk_nrf52840.overlay causes error: mount point already exists!! in subsys/fs/littlefs sample
* :github:`38054` - Bluetooth: host: Local Host terminated but send host number of completed Packed
* :github:`38047` - twister: The --board-root parameter doesn't appear to work
* :github:`38046` - twister: The --device-serial only works at 115200 baud
* :github:`38044` - tests: newlib: Scenarios from tests/lib/newlib/thread_safety fail on nrf9160dk_nrf9160_ns
* :github:`38031` - STM32WB - Problem with data reception on LPUART when PM and LPTIM are enabled
* :github:`38026` - boards: bl654_usb: does not support samples/bluetooth/hci_uart
* :github:`38022` - thread: k_float_enable() API can't build on x86_64 platforms, fix that API and macro documentation
* :github:`38019` - nsim_sem_mpu_stack_guard board can't run
* :github:`38017` - [Coverity CID: 237063] Untrusted value as argument in tests/net/lib/coap/src/main.c
* :github:`38016` - [Coverity CID: 238375] Uninitialized pointer read in subsys/bluetooth/mesh/shell.c
* :github:`38015` - [Coverity CID: 237072] Uninitialized pointer read in subsys/bluetooth/controller/ll_sw/ull_adv_aux.c
* :github:`38014` - [Coverity CID: 237071] Unexpected control flow in subsys/bluetooth/host/keys.c
* :github:`38013` - [Coverity CID: 237070] Unchecked return value in subsys/bluetooth/shell/gatt.c
* :github:`38012` - [Coverity CID: 236654] Unchecked return value in subsys/bluetooth/host/gatt.c
* :github:`38011` - [Coverity CID: 236653] Unchecked return value in drivers/sensor/bmi160/bmi160_trigger.c
* :github:`38010` - [Coverity CID: 236652] Unchecked return value in drivers/sensor/fxas21002/fxas21002_trigger.c
* :github:`38009` - [Coverity CID: 236651] Unchecked return value in drivers/sensor/bmg160/bmg160_trigger.c
* :github:`38008` - [Coverity CID: 236650] Unchecked return value in drivers/sensor/fxos8700/fxos8700_trigger.c
* :github:`38007` - [Coverity CID: 236649] Unchecked return value in drivers/sensor/adt7420/adt7420_trigger.c
* :github:`38006` - [Coverity CID: 236648] Unchecked return value in drivers/sensor/sx9500/sx9500_trigger.c
* :github:`38005` - [Coverity CID: 236647] Unchecked return value in drivers/sensor/bmp388/bmp388_trigger.c
* :github:`38004` - [Coverity CID: 238360] Result is not floating-point in drivers/sensor/sgp40/sgp40.c
* :github:`38003` - [Coverity CID: 238343] Result is not floating-point in drivers/sensor/sgp40/sgp40.c
* :github:`38002` - [Coverity CID: 237060] Out-of-bounds access in subsys/bluetooth/host/gatt.c
* :github:`38001` - [Coverity CID: 238371] Negative array index read in tests/lib/cbprintf_package/src/test.inc
* :github:`38000` - [Coverity CID: 238347] Negative array index read in tests/lib/cbprintf_package/src/test.inc
* :github:`37999` - [Coverity CID: 238383] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37998` - [Coverity CID: 238381] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37997` - [Coverity CID: 238380] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37996` - [Coverity CID: 238379] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37995` - [Coverity CID: 238378] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37994` - [Coverity CID: 238377] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37993` - [Coverity CID: 238376] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37992` - [Coverity CID: 238374] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37991` - [Coverity CID: 238373] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37990` - [Coverity CID: 238372] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37989` - [Coverity CID: 238370] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37988` - [Coverity CID: 238369] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37987` - [Coverity CID: 238368] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37986` - [Coverity CID: 238367] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37985` - [Coverity CID: 238366] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37984` - [Coverity CID: 238364] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37983` - [Coverity CID: 238363] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37982` - [Coverity CID: 238362] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37981` - [Coverity CID: 238361] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37980` - [Coverity CID: 238359] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37979` - [Coverity CID: 238358] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37978` - [Coverity CID: 238357] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37977` - [Coverity CID: 238356] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37976` - [Coverity CID: 238355] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37975` - [Coverity CID: 238354] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37974` - [Coverity CID: 238353] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37973` - [Coverity CID: 238352] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37972` - [Coverity CID: 238351] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37971` - [Coverity CID: 238350] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37970` - [Coverity CID: 238349] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37969` - [Coverity CID: 238348] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37968` - [Coverity CID: 238346] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37967` - [Coverity CID: 238345] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37966` - [Coverity CID: 238344] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37965` - [Coverity CID: 238342] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37964` - [Coverity CID: 238341] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37963` - [Coverity CID: 238340] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37962` - [Coverity CID: 238339] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37961` - [Coverity CID: 238337] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37960` - [Coverity CID: 238336] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37959` - [Coverity CID: 238335] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37958` - [Coverity CID: 238334] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37957` - [Coverity CID: 238333] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37956` - [Coverity CID: 238332] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37955` - [Coverity CID: 238331] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37954` - [Coverity CID: 238330] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37953` - [Coverity CID: 238328] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37952` - [Coverity CID: 238327] Logically dead code in tests/bluetooth/tester/src/mesh.c
* :github:`37951` - [Coverity CID: 238365] Logical vs. bitwise operator in drivers/i2s/i2s_nrfx.c
* :github:`37950` - [Coverity CID: 237067] Division or modulo by zero in tests/benchmarks/latency_measure/src/heap_malloc_free.c
* :github:`37949` - [Coverity CID: 238382] Dereference before null check in subsys/bluetooth/mesh/cfg_cli.c
* :github:`37948` - [Coverity CID: 238338] Dereference before null check in subsys/bluetooth/mesh/cfg_cli.c
* :github:`37947` - [Coverity CID: 237069] Dereference before null check in subsys/bluetooth/host/att.c
* :github:`37946` - [Coverity CID: 237066] Calling risky function in tests/lib/c_lib/src/main.c
* :github:`37945` - [Coverity CID: 237064] Calling risky function in tests/lib/c_lib/src/main.c
* :github:`37944` - [Coverity CID: 237062] Calling risky function in tests/lib/c_lib/src/main.c
* :github:`37940` - Unconsistent UART ASYNC API
* :github:`37927` - tests-ci: net-lib: test/net/lib : build missing drivers__net and application has no console output
* :github:`37916` - [Coverity CID :219656] Uninitialized scalar variable in file /tests/kernel/threads/thread_stack/src/main.c
* :github:`37915` - led_pwm driver not generating correct linker symbol
* :github:`37896` - samples: bluetooth: mesh: build failed for native posix
* :github:`37876` - Execution of twister in makefile environment
* :github:`37865` - nRF Battery measurement issue
* :github:`37861` - tests/lib/ringbuffer failed on ARC boards
* :github:`37856` - tests: arm: uninitialized FPSCR
* :github:`37852` - RISC-V machine timer time-keeping question
* :github:`37850` - Provide macros for switching off Zephyr kernel version
* :github:`37842` - TCP2 statemachine gets stuck in TCP_FIN_WAIT_2 state
* :github:`37839` - SX1272 LoRa driver is broken and fails to build
* :github:`37838` - cmake 3.20 not supported (yet) by recent Ubuntu
* :github:`37830` - intel_adsp_cavs15: run queue testcases failed on ADSP
* :github:`37827` - stm32h747i_disco M4 not working, if use large size(>1KB) global array
* :github:`37821` - pm: ``pm_device_request`` incorrectly returns errors
* :github:`37797` - Merge vendor-prefixes.txt from all modules with build.settings.dts_root in zephyr/module.yml
* :github:`37790` - Bluetooth: host: Confusion about periodic advertising interval
* :github:`37786` - Example for tca9546a multiplexor driver
* :github:`37784` - MPU6050 accel and gyro values swapped
* :github:`37781` - nucleo_l496zg lpuart1 driver not working
* :github:`37779` - adc sam0 interrupt mapping, RESRDY maps to second interrupt in samd5x.dtsi
* :github:`37772` - samples: subsys: usb: mass: Use &flash0 storage_partition for USB mass storage
* :github:`37768` - tests/lib/ringbuffer/libraries.data_structures fails to build on number of platforms due to CONFIG_SYS_CLOCK_TICKS_PER_SEC=100000
* :github:`37765` - cmake: multiple ``No SOURCES given to Zephyr library:`` warnings
* :github:`37746` - qemu_x86_64 fails samples/hello_world/sample.basic.helloworld.uefi in CI
* :github:`37735` - Unsigned types are incorrectly serialized when TLV format is used in LWM2M response
* :github:`37734` - xtensa xcc build spi_nor.c fail
* :github:`37720` - net: dtls: received close_notify alerts are not properly handled by DTLS client sockets
* :github:`37718` - Incompatible (u)intptr_t type and PRIxPTR definitions
* :github:`37709` - x86 PCIe ECAM does not work as expected
* :github:`37701` - stm32:  conflicts with uart serial DMA
* :github:`37696` - Modbus TCP: wrong transaction id in response
* :github:`37694` - Update CMSIS-DSP version to 1.9.0 (CMSIS 5.8.0)
* :github:`37693` - Update CMSIS-Core version to 5.5.0 (CMSIS 5.8.0)
* :github:`37691` - samples/subsys/canbus/isotp/sample.subsys.canbus.isotp fails to build on mimxrt1170_evk_cm7
* :github:`37687` - Support MVE on ARMv8.1-M
* :github:`37684` - Add State Machine Framework to Zephyr
* :github:`37676` - tests/kernel/device/kernel.device.pm (and tests/subsys/pm/power_mgmt/subsys.pm.device_pm) fails to build on mec172xevb_assy6906 & mec1501modular_assy6885
* :github:`37675` - tests/kernel/device/kernel.device.pm fails on bt510/bt6x0
* :github:`37672` - Board qemu_x86 is no longer working with shell
* :github:`37665` - File system: wrong type for ssize_t in fs.h for CONFIG_ARCH_POSIX
* :github:`37660` - Changing zephyr,console requires a clean build
* :github:`37658` - samples: boards/stm32/backup_sram : needs backup sram enabled in DT to properly display memory region
* :github:`37652` - bluetooth: tests/bluetooth/bsim_bt/bsim_test_advx reported success but still reported failed.
* :github:`37637` - Infinite configuring loop for samples\drivers\led_ws2812 sample
* :github:`37619` - RT6xx TRNG reports error on first request after reset
* :github:`37611` - Bluetooth: host: Implement L2CAP ecred reconfiguration request as initiator
* :github:`37610` - subsys/mgmt/hawkbit: Unable to parse json if the payload is split into 2 packets
* :github:`37600` - Invalidate TLB after ptables swap
* :github:`37597` - samples: bluetooth: scan_adv
* :github:`37586` - get_maintainer.py is broken
* :github:`37581` - Bluetooth: controller: radio: Change CTE configuration method
* :github:`37579` - PWM: Issue compiling project when CONFIG_PWM and CONFIG_PWM_SAM is used with SAME70
* :github:`37571` - Bluetooth: Extended advertising assertion
* :github:`37556` - Schedule or timeline of LE audio in zephyr
* :github:`37547` - Bluetooth: Direction Finding: Channel index of received CTE packet is incorrect
* :github:`37544` - Change partition name using .overlay
* :github:`37543` - Using STM32Cube HAL function results in linker error
* :github:`37536` - _pm_devices() skips the very first device in the list and suspend() is not called.
* :github:`37530` - arc smp build failed with mwdt toolchain.
* :github:`37527` - Replace mqtt-azure example with azure-sdk-for-c
* :github:`37526` - ehl_crb:  edac tests are failing
* :github:`37520` - Is zephyr can run syscall or extrenal program
* :github:`37519` - friend.c:unseg_app_sdu_decrypt causes assert: net_buf_simple_tailfroom(buf) >= len when payload + opcode is 10 or 11 bytes long
* :github:`37515` - drivers: flash_sam: Random failures when writing large amount of data to flash
* :github:`37502` - OPENTHREAD_CUSTOM_PARAMETERS does not seem to work
* :github:`37495` - mcuboot: Booting an image flashed on top of a Hawkbit updated ones results in hard fault
* :github:`37491` - wrong documentation format on DMA peripheral API reference
* :github:`37482` - 'cmd.exe' is not recognized as an internal or external command, operable program or batch file.
* :github:`37475` - twister: wrong test statuses in json report
* :github:`37472` - Corrupted timeout on poll for offloaded sockets
* :github:`37467` - Bluetooth: host: Incorrect advertiser timeout handling when using Limited Discoverable flag
* :github:`37465` - samples/bluetooth/iso_receive fails on nrf5340dk target
* :github:`37462` - Bluetooth: Advertising becomes scannable even if BT_LE_ADV_OPT_FORCE_NAME_IN_AD is set
* :github:`37461` - Schedule of LE audio in zephyr
* :github:`37460` - tests/kernel/sched/schedule_api/kernel.scheduler and tests/kernel/fifo/fifo_timeout/kernel.fifo.timeout failed on nsim_hs_smp board
* :github:`37456` - script: Unaccounted size in ram/rom reports
* :github:`37454` - Sensor driver: sht4x, sgp40, invalid include path
* :github:`37446` - Sensor driver: ST LPS22HH undeclared functions and variables
* :github:`37444` - MSI-X: wrong register referenced in map_msix_table()
* :github:`37441` - Native POSIX Flash Storage Does not Support Multiple Instances
* :github:`37436` - Delayed startup due to printing over not ready console
* :github:`37412` - IQ samples are not correct during the "reference period" of CTE signal
* :github:`37409` - Allow dual controller on usb
* :github:`37406` - ISO disconnect complete event doesn't reach the application
* :github:`37400` - esp32 build
* :github:`37396` - DHCP issue with events not triggering on network with microsoft windows DHCP server
* :github:`37395` - stm32h747i_disco board M4 core not working
* :github:`37391` - Bluetooth: 4 Bits of IQ Samples Are Removed (Direction Finding Based on CTE)
* :github:`37386` - bt_vcs_register() enhancement for setting default volume and step
* :github:`37379` - drivers: adc for stm32h7 depends on the version for oversampling
* :github:`37376` - samples/subsys/usb/dfu/sample.usb.dfu fails on teensy41/teensy40
* :github:`37375` - tests/drivers/adc/adc_api/drivers.adc fails to build on nucleo_h753zi
* :github:`37371` - logging.log2_api_deferred_64b_timestamp tests fails running on several qemu platforms
* :github:`37367` - Bluetooth: Host: Support setting long advertising data
* :github:`37365` - STM32 :DTCM: incorrect buffer size utilization
* :github:`37346` - STM32WL LoRa increased the current in "suspend_to_idle" state
* :github:`37338` - west flash to teensy 41 fail, use blinky with west build
* :github:`37332` - Increased power consumption for STM32WB55 with enabled PM and Bluetooth
* :github:`37327` - subsys/mgmt/hawkbit: hawkbit run can interrupt a running instance
* :github:`37319` - West 0.11.0 fails in Zephyr doc build under other manifest repo & renamed Zephyr fork
* :github:`37309` - ARC: add MPU v6 (and others) support
* :github:`37307` - Use XOSHIRO random number generator on NXP i.MX RT platform
* :github:`37306` - revert commit with bogus commit message
* :github:`37305` - Bluetooth Direction Finding Support of "AoA RX 1us"
* :github:`37304` - k_timer_status_sync can lock forever on qemu_x86_64
* :github:`37303` - tests: drivers: i2s: drivers.i2s.speed scenario fails on nrf platforms
* :github:`37294` - RTT logs not found with default west debug invocation on jlink runner
* :github:`37293` - Native POSIX MAC addresses are not random and are duplicate between multiple instances
* :github:`37272` - subsys/mgmt/hawkbit: Falsely determine that an update is installed successfully
* :github:`37270` - stm32l4 System Power Management issue
* :github:`37264` - tests-ci : can: isotp: implemmentation test  report FATAL ERROR when do not connect can loopback test pins
* :github:`37265` - tests-ci : kernel: scheduler: multiq test failed
* :github:`37266` - tests-ci : kernel: memory_protection: userspace test Timeout
* :github:`37267` - tests-ci : kernel: threads: apis test Timeout
* :github:`37263` - lib: timeutil: conversion becomes less accurate as time progresses
* :github:`37260` - STM32WL does not support HSE as RCC source and HSEDiv
* :github:`37258` - symmetric multiprocessing failed in user mode
* :github:`37254` - Run Coverity / Generate GitHub Issues
* :github:`37253` - west flash is failed with openocd  for on macOS
* :github:`37236` - ESP32 will not start when CONFIG_ASSERT=y is enabled
* :github:`37231` - BME280 faulty measurement after power cycle
* :github:`37228` - Bluetooth SMP does not complete pairing
* :github:`37226` - PM: soc: Leftover in conversion of PM hooks to __weak
* :github:`37225` - subsys/mgmt/hawkbit & sample: Bugs/improvements
* :github:`37222` - k_queue data corruption, override user data after reserved heading word
* :github:`37221` - nRF5340: SPIM4 invalid clock frequency selection
* :github:`37213` - ESP32: can't write to SD card over SPI (CRC error)
* :github:`37207` - drivers: serial: convert uart_altera_jtag_hal to use devicetree
* :github:`37206` - counter: stm32: Missing implementation of set_top_value
* :github:`37205` - openocd: Configure thread awareness by default
* :github:`37202` - esp32c3 build error
* :github:`37189` - Bug "Key 'name', 'cmake-ext' and 'kconfig-ext' were not defined" when build a zephyr application
* :github:`37188` - Get an error  of "Illegal load of EXC_RETURN into PC" when print log in IO interrupt callback
* :github:`37182` - cmsis_v1 osSignalWait doesn't clear the signals properly when any signal mask is set
* :github:`37180` - Led driver PCA9633 does nok take chip out from sleep
* :github:`37175` - nucleo-f756zg: rtos aware debugging not working
* :github:`37174` - Zephyr's .git directory is 409 MiB, can it be squashed?
* :github:`37173` - drivers: clock_control: stm32: AHB prescaler usable for almost all stm32 series
* :github:`37170` - LwM2M lwm2m_rd_client_stop() not working when called during bootstrapping/registration
* :github:`37160` - [Moved] Bootloader should provide the version of zephyr, mcuboot and a user defined version to the application
* :github:`37159` - osThreadTerminate does not decrease the instances counter
* :github:`37153` - USB serial number is not unique for STM32 devices
* :github:`37145` - sys: ring_buffer: ring_buf_peek() and ring_buf_size_get()
* :github:`37140` - Twister: Cmake error wrongly counted in the report
* :github:`37135` - Extend the HWINFO API to provide variable length unique ID
* :github:`37134` - Add support for the Raspberry Pi Compute Module 4
* :github:`37132` - Assert on enabling Socket CAN
* :github:`37120` - Documentation on modules
* :github:`37119` - tests: kernel tests hardfault on nucleo_l073rz
* :github:`37115` - tests/bluetooth/shell fails to builds on a lot of platforms
* :github:`37109` - Zephyr POSIX layer uses swapping with an interrupt lock held
* :github:`37105` - mcumgr: BUS FAULT when starting dfu with mcumgr CLI
* :github:`37104` - tests-ci : kernel: scheduler: multiq test failed
* :github:`37075` - PlatformIO: i cannot use the Wifi Shield ESP8266 to build the sample wifi project with the Nucleo F429ZI
* :github:`37070` - NXP mcux ADC16 reading 65535
* :github:`37057` - PWM-blinky for Silabs MCU
* :github:`37038` - stm32f4 - DMA tx interrupt doesn't trigger
* :github:`37032` - document: API reference missing: In clock of zephyr document
* :github:`37029` - drivers: sensor: sensor_value_to_double requieres non const sensor_value pointer
* :github:`37028` - ipv6 multicast addresses vanish after iface down/up sequence
* :github:`37024` - Compile error if we only use VCS without VOCS and AICS
* :github:`37023` - zephyr_prebuilt.elf and zephyr.elf has inconsistent symbol address in RISC-V platform
* :github:`37007` - Problem with out of tree driver
* :github:`37006` - tests: kernel: mem_protect: stack_random: enable qemu_riscv32
* :github:`36998` - TF-M: does not allow PSA Connect to proceed with IRQs locked
* :github:`36990` - Memory misalignment ARM Cortex-M33
* :github:`36971` - ESP32: wifi station sample does not get IP address by DHCP4
* :github:`36967` - Bluetooth: public API to query controller public address
* :github:`36959` - Direction Finding - CTE transmitted in connectionless mode has wrong length
* :github:`36953` - <err> lorawan: MlmeConfirm failed : Tx timeout
* :github:`36948` - Cluttering of logs on USB Console in Zephyr when CDC Shell is enabled
* :github:`36947` - Tensorflow: Dedicated tflite-micro repository
* :github:`36929` - Failure to build OpenThread LwM2M client on nrf52840dk
* :github:`36928` - Disconnecting ISO mid-send giver error in hci_num_completed_packets
* :github:`36927` - LWM2M: Writing to Write-Only resource causes notification
* :github:`36926` - samples/boards/nrf/system_off wouldn't compile on Particle Xenon board
* :github:`36924` - embARC Machine Learning Inference Library from Synopsys
* :github:`36917` - Runtime device PM is broken on STM32
* :github:`36909` - Shell log` commands crash the system if CONFIG_SHELL_LOG_BACKEND is not defined
* :github:`36896` - tests: net: select: still failing occasionally due to FUZZ
* :github:`36891` - Significant TCP perfomance regression
* :github:`36889` - string.h / strcasestr() + strtok()
* :github:`36885` - Update ISO API to better support TWS
* :github:`36882` - MCUMGR: fs upload fail for first time file upload
* :github:`36873` - USB AUDIO Byte alignment issues
* :github:`36869` - Direction Finding Connectionless porting to nrf52811
* :github:`36866` - CONFIG_NO_OPTIMIZATIONS=y MPU fault on Zephyr 2.6
* :github:`36865` - k_work_q seems to check uninitialized flag on start
* :github:`36859` - Possible Advertising PDU Corruption if bt_enable called in SYS_INIT function
* :github:`36858` - Static object constructors execute twice on the NATIVE_POSIX target
* :github:`36857` - i2c_samd0.c burst write not compatible with ssd1306.c
* :github:`36851` - FS logging backend assumes littlefs
* :github:`36823` - Build excludes paths to standard C++ headers when using GNUARMEMB toolchain variant
* :github:`36819` - qemu_leon3 samples/subsys/portability/cmsis_rtos_v2 samples failing
* :github:`36814` - Wrong format type for uint32_t
* :github:`36811` - Clarify ``Z_`` APIs naming conventions and intended scope
* :github:`36802` - MCUboot doesn't work with encrypted images on external flash
* :github:`36796` - Build failure: samples/net/civetweb/http_server using target stm32h735g_disco
* :github:`36794` - Build failure: tests/drivers/adc using stm32l562e_dk
* :github:`36790` - sys: ring_buffer: correct space calculation when tail is less than head
* :github:`36789` - [ESP32] samples blinky / gpio / custom board
* :github:`36783` - drivers: modem: hl7800 gpio init failed with interrupt flags
* :github:`36782` - drivers: serial: nrfx: Enforced pull-ups on RXD and CTS conflict on many custom boards
* :github:`36781` - source_periph incorrectly set in dma_stm32
* :github:`36778` - firmware update using mcumgr displays information for only slot 0 and not slot 1.
* :github:`36770` - doc：Missing description for deadline scheduling
* :github:`36769` - Zephyr assumes Interrupt Line config space register is RW, while ACRN hardwired it to 0.
* :github:`36767` - tests-ci :arch.arm.irq_advanced_features.arm_irq_target_state : test failed
* :github:`36768` - tests-ci :coredump.logging_backend : test failed
* :github:`36765` - [PCI] ACRN sets Interrupt Line config space register to 0 and ReadOnly.
* :github:`36764` - Bluetooth Require paired after disconnected work with iphone
* :github:`36755` - NTP client faults module when it fails
* :github:`36748` - Zephyr IP Stack Leaks when using PROMISCUOUS socket along with POSIX sockets based implementation.
* :github:`36747` - Adding Board Support for STEVAL-STWINKT1B
* :github:`36745` - Zephyr IP Stack Limited to 1514 bytes on the wire - no ICMPs beyond this limit
* :github:`36739` - coap_packet_get_payload() returns the wrong size
* :github:`36737` - Cortex M23: "swap_helper.S:223: Error: invalid offset, value too big (0x0000009C)"
* :github:`36736` - kernel: SMP global lock (and therefore irq_lock) works incorrectly on SMP platforms
* :github:`36718` - st_ble_sensor sample references wrong attribute
* :github:`36716` - zephyr - ADC - ATSAMD21G18A
* :github:`36713` - nrf5 ieee802154 driver does not compile and breaks CI
* :github:`36711` - Enable "template repository" for zephyrproject-rtos/example-application
* :github:`36696` - Json on native_posix_64 board
* :github:`36695` - net: ieee802154: cc13xx_26xx: Sub-GHz RF power saving
* :github:`36692` - Release Notes for 2.6.0 not useful (BLE API changes)
* :github:`36679` - Bluetooth - notifications not sending (bonded, CONFIG_BT_MAX_CONN=4, after disconnection then reconnection)
* :github:`36678` - Zephyr Throws Exception for Shell "log status" command when Telnet is shell backend and log is UART backend
* :github:`36668` - LittleFS example overwrite falsh memory
* :github:`36667` - logger: Filesystem backend doesn't work except for first time boot
* :github:`36665` - l2cap cids mixed up in request
* :github:`36661` - xtensa xcc does not support "-Warray-bounds"
* :github:`36659` - samples/net/sockets small bugs
* :github:`36655` - twister:  sometimes the twister fails because the error ``configparser.NoSectionError: No section: 'manifest'``
* :github:`36652` - deadlock in pthread implementation on SMP platforms
* :github:`36646` - sample.shell.shell_module.minimal_rtt fails to build on mimxrt1170_evk_cm4/mimxrt1170_evk_cm7
* :github:`36644` - Toolchain C++ headers can be included when libstdc++ is not selected
* :github:`36631` - Turn on GPIO from DTS
* :github:`36625` - compilation fails while building samples/net/openthread/coprocessor for Arduino nano 33 ble
* :github:`36613` - LoRaWAN - Provide method to register a callback for received data
* :github:`36609` - could not mount fatfs on efm32pg_stk3402a
* :github:`36608` - Unable to compile USB console example with uart_mux
* :github:`36606` - Regression in udp socket performance from zephyr v2.3.0 to v2.6.0
* :github:`36600` - Bluetooth: Peripheral: Bond issue when using secure connection
* :github:`36598` - Lora driver TX done wait/synchronous call
* :github:`36593` - Failing IPv6 Ready compliance (RFC 2460)
* :github:`36590` - NVS sector size above 65535 not supported
* :github:`36578` - net: ip: Assertion fails when tcp_send_data() with zero length packet
* :github:`36575` - Modbus RTU Client on ESP32
* :github:`36572` - kernel: Negative mutex lock_count value
* :github:`36570` - Use a custom role for Kconfig configuration options
* :github:`36569` - '.. only:' is not working as expected in documentation
* :github:`36568` - net: lib: sockets: Assertion fails when zsock_close()
* :github:`36565` - ehl_crb: Only boot banner is printed but not the test related details for multiple tests due to PR #36191 is not backported to v2.6.0 release
* :github:`36553` - LoRaWAN Sample: join accept but "Join failed"
* :github:`36552` - Bluetooth v2.6.0 connectable advertising leak/loss
* :github:`36540` - LoRaWAN otaa.app_key belongs to mib_req.Param.AppKey
* :github:`36524` - HSE clock doesn't initialize and blinky doesn't run on custom board when moving from zephyr v2.3.0 to v2.6.0
* :github:`36520` - tests/kernel/timer/timer_api/kernel.timer.tickless fails to build on npcx9m6f_evb
* :github:`36500` - espressif: cannot install toolchain on Darwin-arm64
* :github:`36496` - bluetooth: only the first Extended Advertising Report with data status "incomplete, more data to  come" is issued
* :github:`36495` - dtc generates missing #address-cells in interrupt provider warning
* :github:`36486` - LOG2 - self referential macro
* :github:`36467` - runner mdb-hw not work with arc hsdk board
* :github:`36466` - tests/kernel/mem_protect/mem_protect failed with arcmwdt toolchain
* :github:`36465` - samples/compression/lz4 failed with arcmwdt toolchian
* :github:`36462` - [bluetooth stack][limited_discoverable_advertising timeout] Some problems about the lim_adv_timeout
* :github:`36448` - samples: subsys: fs: fat_fs: adafruit_2_8_tft_touch_v2: buildkite compilation failed when no i2c defined
* :github:`36447` - net: socket: socketpair: Poll call resetting all events
* :github:`36435` - RFC: API Change: Mesh: Add return value for opcode callback
* :github:`36427` - test: kernel.common.nano32: zephyr-v2.6.0-286-g46029914a7ac: mimxrt1060_evk: test fails
* :github:`36419` - test-ci: net.ethernet_mgmt: zephyr-v2.6.0-286-g46029914a7ac: frdm_k64f: test fails
* :github:`36418` - test-ci: net.socket.tls: zephyr-v2.6.0-286-g46029914a7ac: frdm_k64f: test fail
* :github:`36417` - tests-ci :coredump.logging_backend : zephyr-v2.6.0-286-g46029914a7ac: lpcxpresso55s28: test failed
* :github:`36416` - tests-ci :arch.arm.irq_advanced_features.arm_irq_target_state : zephyr-v2.6.0-286-g46029914a7ac: lpcxpresso55s28: test failed
* :github:`36414` - ESP32 with samples/net/wifi gives: net_if: There is no network interface to work with!
* :github:`36412` - Blinky on ESP32: Unsupported board: led0 devicetree alias is not defined"
* :github:`36410` - board: cc1352r_sensortag: add dts entry for hdc2080
* :github:`36408` - ARM_MPU on boards ``stm32_min_dev_*`` without MPU enabled
* :github:`36398` - [Video API] Erroneous function pointer validation
* :github:`36390` - net: ip: Negative TCP unacked_len value
* :github:`36388` - ARM: Architecture Level user guide
* :github:`36382` - segfault when hardware isn't emulated
* :github:`36381` - Bluetooth ASSERTION FAIL [evdone] Zephyr v2.6.0
* :github:`36380` - missing auto-dependency on CONFIG_EMUL
* :github:`36357` - tests: samples: watchdog: sample.subsys.task_wdt fails on nrf platforms
* :github:`36356` - Network fails to transmit STM32H747DISC0 board zephyr v2.6.0
* :github:`36351` - nRF: we do not always guarantee that SystemInit is inlined
* :github:`36347` - Zephyr Wifi IoT device - whats a good board to start with?
* :github:`36344` - Zephyr 2.6.0 st_ble_sensor sample is broken when compiled for nucleo_wb55rg
* :github:`36339` - samples/subsys/logging/dictionary doesn't build under MS Windows environment
* :github:`36329` - Support for CC3120 WiFi module
* :github:`36324` - add project groups to upsteam west manifest
* :github:`36323` - Don't set TFM_CMAKE_BUILD_TYPE_DEBUG by default on LPC55S69-NS if DEBUG_OPTIMIZATIONS
* :github:`36319` - Help: Asking for Help Tips page gets 404 error
* :github:`36318` - [Coverity CID: 236600] Unused value in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36317` - [Coverity CID: 236599] Unused value in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36316` - [Coverity CID: 236597] Unused value in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36315` - [Coverity CID: 236604] Untrusted value as argument in subsys/net/lib/lwm2m/lwm2m_engine.c
* :github:`36314` - [Coverity CID: 236610] Uninitialized pointer read in subsys/bluetooth/mesh/proxy.c
* :github:`36313` - [Coverity CID: 236602] Unchecked return value in drivers/modem/gsm_ppp.c
* :github:`36312` - [Coverity CID: 236608] Out-of-bounds access in subsys/bluetooth/audio/mics_client.c
* :github:`36311` - [Coverity CID: 236598] Out-of-bounds access in subsys/bluetooth/audio/mics_client.c
* :github:`36310` - [Coverity CID: 236607] Missing break in switch in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36309` - [Coverity CID: 236606] Missing break in switch in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36308` - [Coverity CID: 236601] Missing break in switch in drivers/ieee802154/ieee802154_nrf5.c
* :github:`36307` - [Coverity CID: 236605] Logically dead code in subsys/bluetooth/audio/mics.c
* :github:`36306` - [Coverity CID: 236596] Logically dead code in subsys/bluetooth/audio/mics.c
* :github:`36305` - [Coverity CID: 236595] Logically dead code in samples/drivers/eeprom/src/main.c
* :github:`36304` - [Coverity CID: 236609] Explicit null dereferenced in subsys/bluetooth/audio/mics_client.c
* :github:`36303` - [Coverity CID: 236603] Dereference after null check in subsys/bluetooth/audio/vcs_client.c
* :github:`36301` - soc: cypress: Port Zephyr to Cypress CYW43907
* :github:`36298` - TF-M integration: add a brief user guide
* :github:`36291` - ADC and math library functions use for stm32l496
* :github:`36289` - eswifi gets a deadlock on b_l4s5i_iot01a target
* :github:`36282` - Overwrite mode for RTT logging
* :github:`36278` - ARM: Cortex-M: SysTick priority is not initialized if the SysTick is not used
* :github:`36276` - NULL pointer access in check_used_port()
* :github:`36270` - TF-M: introduce uniformity in Non-Secure target names
* :github:`36267` - net: ieee802154: software address filtering
* :github:`36263` - up_squared: kernel.memory_protection.mem_map.x86_64 failed.
* :github:`36256` - SPI4 & 3 MISO not working on nRF5340
* :github:`36255` - tests/subsys/logging/log_core failed on hsdk board
* :github:`36254` - Zephyr shell subsystem not work with ARC hardware boards.
* :github:`36250` - tests/subsys/cpp/cxx - doesn't compile on native_posix when CONFIG_EXCEPTIONS=y
* :github:`36247` - samples: usb: testusb: Problems with using with cdc-acm
* :github:`36242` - Zephyr Upstream + sdk-nrf BLE NUS SHELL LOG/CBPRINTF build problem.
* :github:`36238` - net_if.c: possible mutex deadlock
* :github:`36237` - fs_open returns 0 on existing file with FS_O_CREATE | FS_O_WRITE
* :github:`36197` - BOSSA flashing on Arduino Nano 33 BLE (NRF52840)
* :github:`36185` - CMP0116 related warnings
* :github:`36172` - net: ieee802154: LL src/dst address is lost from received net_pkt (when using 6LO)
* :github:`36163` - nvs no longer supports the use of id=0xffff
* :github:`36131` - Occasionally unable to scan for extended advertisements when connected
* :github:`36117` - toolchain: The added abstraction for llvm, breaks builds with off-tree llvm based toolchains
* :github:`36107` - ehl_crb: Multiple tests are failing and board is not booting up.
* :github:`36101` - tfm related build rebuild even if nothing changes
* :github:`36100` - pb_gatt buf_send does not call callback
* :github:`36095` - drivers: pwm: sam: compilation failure for sam_v71b_xult
* :github:`36094` - BLE wrong connections intervals on multible connections
* :github:`36093` - Fix dt_compat_enabled_with_label behavior (or usage)
* :github:`36089` - intel_adsp_cavs25: support more than 2 DSP cores
* :github:`36088` - intel_adsp_cavs25: secondary boot fails in arch_start_cpu()
* :github:`36084` - Arduino Nano 33 BLE: USB gets disconnected after flashing
* :github:`36078` - coredump.logging_backend: lpcxpresso55s28: test failure assertion fail
* :github:`36077` - net: lib: coap: Impossible to get socket info from incoming packet
* :github:`36075` - drivers: can: stm32fd: can2 does not work
* :github:`36074` - LoRaWAN: sx126x: infinite loop on CRC error
* :github:`36061` - Undefined reference to ``z_priq_rb_lessthan(rbnode*, rbnode*)`` when using k_timer_start in cpp file.
* :github:`36057` - Zephyr Shell Console and Logging Targeting Isolated Different Device Interfaces
* :github:`36048` - Cannot establish ISO CIS connection properly after ACL disconnected several times
* :github:`36038` - iotdk: the testcase samples/modules/nanopb can't build
* :github:`36037` - bt_init returning success when Bluetooth initialization does not get finalized.
* :github:`36035` - struct devices should be allocated in ROM, not RAM
* :github:`36033` - Mere warnings slow down incremental documentation build from seconds to minutes
* :github:`36030` - West warnings (and others?) are ignored when building documentation
* :github:`36028` - More Description in Example Documentation
* :github:`36026` - wolfssl / wolfcrypt
* :github:`36022` - Wrong channel index in connectionless IQ samples report
* :github:`36014` - stm32g050: Missing closing parenthesis for soc prototype
* :github:`36013` - arm: qemu: run cmsis-dsp tests on the qemu target with FPU
* :github:`35999` - Unexpected Bluetooth disconnection and removal of bond
* :github:`35992` - stm32f303k8 device tree missing DACs
* :github:`35986` - POSIX: multiple definition of posix_types
* :github:`35983` - [backport v1.14-branch] backport of #35935 failed
* :github:`35978` - ESP32 SPI send data hangup
* :github:`35972` - C++ exceptions do not work when building with GNU Arm Embedded
* :github:`35971` - ehl_crb: test_nop  is failing under tests/kernel/common/
* :github:`35970` - up_squared: samples/boards/up_squared/gpio_counter/ is failing
* :github:`35964` - shell_uart hangs when putting UART into PM_LOW_POWER_STATE / PM_DEVICE_STATE_LOW_POWER
* :github:`35962` - drivers using deprecated Kconfigs
* :github:`35955` - Bluetooth: Controller: Regression in connection setup
* :github:`35949` - can: mcan: sjw-data devicetree configuration is not written correctly
* :github:`35945` - SPI4 on nRF5340 not working when using k_sleep() in main
* :github:`35941` - subsys: tracing: sysview: No SEGGER_SYSVIEW.h in path
* :github:`35939` - enc424j600 driver unusable/broken on stm32l552
* :github:`35931` - Bluetooth: controller: Assertion in ull_master.c
* :github:`35930` - nRF Dongle as BLE Central Unstable Connectivity at Long-ish Range
* :github:`35926` - Shell tab-completion with more than two levels of nested dynamic commands fails
* :github:`35916` - drivers: TI cc13xx_cc26xx: build error when PM is enabled (serial, entropy, spi, i2c modules)
* :github:`35908` - Stopping DHCP with network interface goes down leaves networking state in a broken state
* :github:`35897` - Bluetooth: PTS Tester on native posix
* :github:`35890` - Build system ignores explicit ZephyrBuildConfiguration_ROOT variable
* :github:`35880` - PSA tests run indefinitely when CONFIG_TFM_IPC=y
* :github:`35870` - Build failure with gcc 11.x on native_posix
* :github:`35857` - intel_adsp_cavs15: run msgq testcases failed on ADSP
* :github:`35856` - intel_adsp_cavs15: run semaphore testcases failed on ADSP
* :github:`35850` - the sample kernel/metairq_dispatch fails on nucleo_g474re
* :github:`35835` - ADC support for STM32l496_disco board
* :github:`35809` - sample: USB audio samples are not working on STM32
* :github:`35793` - kernel.scheduler.multiq: Failed since #35276 ("cooperative scheduling only" special cases removal)
* :github:`35789` - sockets_tls: receiving data on offloaded socket before handshake causes pollin | pollerr and failed recvfrom (SARA-R4)
* :github:`35721` - Atmel sam0 Async and/or DMA may not work
* :github:`35720` - tests:kernel timer fails on test_sleep_abs with TICKLESS_KERNEL and PM on nucleo_wb55rg
* :github:`35718` - Excessive error messages from filesystem interface
* :github:`35711` - net: sockets: dtls: handshake not reset as it ought to be
* :github:`35707` - AssertionError: zephyr/tests/kernel/common test case is failing with gcc-11 (Yocto)
* :github:`35703` - posix_apis: fails at test_posix_realtime for mimxrt1024_evk
* :github:`35681` - Unable to get output for samples/subsys/logging/logger and samples/philosophers
* :github:`35668` - The channel selection of auxiliary advertisments in extended advertisments
* :github:`35663` - STM32H7: Support memory protection unit(MPU) to enable shared memory
* :github:`35658` - arch.interrupt.arm.irq_vector_table.arm_irq_vector_table: MPU FAULT Halting system for mximxrt685_evk_cm33
* :github:`35656` - arch.interrupt.arm.arm_interrupt: hangs on mimxrt685_evk_cm33
* :github:`35581` - stm32 SPI problems with DMA and INTR set-up
* :github:`35550` - nRF91: DPS310 I2C driver not working
* :github:`35532` - SSL Handshake error with modified http(s) client example
* :github:`35529` - STM32: STM32H7 ADC calibration must be performed on startup
* :github:`35429` - subsys: settings: Encryption
* :github:`35377` - add creg_gpio driver for ARC HSDK board
* :github:`35354` - Adding support for measurement of Ultraviolet(UV) Light.
* :github:`35293` - Sporadic boot failure
* :github:`35256` - DOC:  DATA PASSING TABLE MISSING THE OBJECT QUEUES
* :github:`35250` - Twister is not reading the serial line output completely
* :github:`35244` - twister: build failure for native_posix with GNU binutils 2.35
* :github:`35238` - ieee802.15.4 support for stm32wb55
* :github:`35229` - twister log mixing between tests
* :github:`35190` - echo_server sample non-functional rails all CPUs on native_posix_64 board build
* :github:`35055` - STM32L432KC Nucleo Reference board SWD problem after programming with Zephyr
* :github:`34917` - arch.interrupt.arm| arch.interrupt.extra_exception_info: lpcxpresso55s28 series: test failure
* :github:`34913` - ModuleNotFoundError: No module named 'elftools'
* :github:`34879` - mec15xxevb_assy6853: 2 GPIO test failures
* :github:`34855` - FANSTEL BT840X
* :github:`34832` - Coding Guideline - MISRA rule 14.4 not applied properly
* :github:`34829` - Bluetooth: ISO: Don't attempt to remove the ISO data path of a disconnected ISO channel
* :github:`34767` - C++ support on ESP boards
* :github:`34760` - Hawkbit not downloading large files
* :github:`34659` - Bluetooth: HCI cmd response timeout
* :github:`34571` - Twister mark successfully passed tests as failed
* :github:`34557` - upgrade fatfs to 0.14b
* :github:`34554` - Settings FS: Duplicate finding is extremely slow when dealing with larger number of settings entries
* :github:`34544` - lib: gui: lvgl: buffer overflow bug on misconfiguration
* :github:`34543` - STM32F1 failed to compile with CONFIG_UART_ASYNC_API
* :github:`34392` - [backport v2.5-branch] backport of #34237 failed
* :github:`34391` - [backport v1.14-branch] backport of #34237 failed
* :github:`34390` - i2s: bitrate is wrongly configured on STM32
* :github:`34372` - CPU Lockups when using own Log Backend
* :github:`34354` - Please investigate adding DMA support to STM32 I2C!
* :github:`34324` - RTT is not working on STM32
* :github:`34315` - BMI270 configuration file sending to I2C seems to be not handling the last part of the configuration properly.
* :github:`34305` - Shell [modem send] command causes shell to hang after about 10 seconds, Sara R4 - Particle Boron
* :github:`34282` - HAL Module Request: hal_telink
* :github:`34273` - mqtt_publisher: Unable to connect properly on EC21 modem with bg9x driver
* :github:`34269` - LOG_MODE_MINIMAL BUILD error
* :github:`34268` - Bluetooth: Mesh: Sample is stuck in init process on disco_l475_iot
* :github:`34259` - Problem running code with memory domain
* :github:`34239` - Call settings_save_one in the system work queue, which will cause real-time performance degradation.
* :github:`34236` - External source code integration request: Raspberry Pi Pico SDK
* :github:`34231` - uzlib (decompression library)
* :github:`34226` - Compile error when building civetweb http_server sample for posix_native
* :github:`34222` - Commit related to null pointer exception detection causing UART issues
* :github:`34218` - Civetweb server crashing when trying to access invalid resource
* :github:`34204` - nvs_write: Bad documented return value.
* :github:`34192` - Sensor BME680: Add support for SPI operation
* :github:`34134` - USB do not works if bootloader badly use the device before
* :github:`34131` - TFTP client ignores incoming data packets
* :github:`34121` - Unable to generate pdf according to the documentation steps on windows
* :github:`34105` - Convert tests/kernel/workq to new kwork API
* :github:`34049` - Nordic nrf9160 switching between drivers and peripherals
* :github:`34015` - cfb sample "Device not found" for esp32 when SSD1306 is enabled
* :github:`33994` - kscan_ft5336 doesn't provide proper up/down information when polling, and hogs resources in interrupt mode
* :github:`33960` - Zephyr for Briey SoC
* :github:`33937` - [backport v1.14-branch] backport of #26712 failed
* :github:`33932` - [backport v1.14-branch] backport of #26083 failed
* :github:`33910` - sam_v71_xult -> I2C_1 hang during scanning i2c devices
* :github:`33901` - tests: interrupt: irq_enable() and irq_disable() do not work with direct and regular interrupt on x86
* :github:`33895` - Device tree: STM32L412 and STM32L422 are missing nodes
* :github:`33883` - [backport v2.5-branch] backport of #33340 failed
* :github:`33876` - Lora sender sample build error for esp32
* :github:`33873` - arm_arch_timer: Too many clock announcements with CONFIG_TICKLESS_KERNEL=n on SMP
* :github:`33862` - [backport v2.5-branch] backport of #33771 failed
* :github:`33753` - LVGL output doesn't match the LVGL TFT simulator for gauge widget
* :github:`33652` - Monitoring the BLE connection
* :github:`33573` - JSON_OBJ_DESCR_ARRAY_ARRAY is dangerously broken
* :github:`33554` - Request to add OM13056 board (LPC1500 family or specifically SoC LPC1519) support to Zephyr
* :github:`33544` - ehl_crb: portability.posix.common.posix_realtime failed.
* :github:`33485` - Issue with DMA transfers outside of the Zephyr DMA driver on STM32F767
* :github:`33483` - TIMESLICE and PM interaction and expected behavior
* :github:`33449` - Remove deprecated items in 2.7
* :github:`33440` - lsm6dso sensor driver not working on nRF5340
* :github:`33435` - armclang / armlinker
* :github:`33337` - twister: Find and fix all "dead" samples/tests
* :github:`33275` - ehl_crb: samples/subsys/shell/shell_module does not work
* :github:`33265` - Power Management Overhaul
* :github:`33192` - LoRaWAN - Application fails to start if module is not powered
* :github:`33113` - Improve code coverage for new feature or code change in kernel
* :github:`33104` - Updating Zephyr to fix Work Queue Problems
* :github:`33099` - ppp: termination packet not sent
* :github:`33052` - [Coverity CID :219624] Untrusted loop bound in subsys/bluetooth/host/sdp.c
* :github:`33041` - [Coverity CID :219645] Untrusted loop bound in subsys/bluetooth/host/sdp.c
* :github:`33016` - spi_nor: CONFIG_SPI_NOR_SFDP_RUNTIME leaves flash in Standby after spi_nor_configure()
* :github:`33015` - spi_nor driver: SPI_NOR_IDLE_IN_DPD breaks SPI_NOR_SFDP_RUNTIME
* :github:`32997` - Improve documentation search experience
* :github:`32990` - FS/littlefs: it is possible to write to already deleted file
* :github:`32984` - West: openocd runner: Don't let debug mode on by default
* :github:`32875` - Benchmarking Zephyr vs. RIOT-OS
* :github:`32836` - Remaining integration failures on intel_adsp_cavs15
* :github:`32822` - Code doesn't compile after changing the PWM pin on example "blinky_pwm" on NRF52
* :github:`32803` - Extend mcux uart drivers to support async API
* :github:`32789` - USB DFU support w/o MPU support
* :github:`32733` - RS-485 support
* :github:`32669` - [Bluetooth] sample code for Periodic Advertising Sync Transfer
* :github:`32603` - acrn_ehl_crb: test case of arch.interrupt.prevent_interruption failed
* :github:`32564` - net_buf reference count not protected
* :github:`32545` - It seems that CONFIG_IMG_MGMT_VERBOSE_ERR does not work
* :github:`32531` - get_maintainer.py cannot parse MAINTAINERS.yml
* :github:`32293` - Zephyr 2.6 Release Checklist
* :github:`32289` - USDHC: Fails after reset
* :github:`32282` - x86 ACPI images are much too large
* :github:`32261` - problem with CONFIG_STACK_SENTINEL
* :github:`32133` - Current atomics are subtly broken on AArch64 due to memory ordering
* :github:`32111` - Zephyr build fail with LLVM on Windows
* :github:`32035` - Bluetooth: application notification when MTU updated
* :github:`31993` - Add west extension to parse yml file
* :github:`31985` - riscv: Long execution time when TICKLESS_KERNEL=y
* :github:`31943` - drivers: flash: stm32: harmonization of flash erase implementation across STM32 series
* :github:`31739` - Convert CoAP unit tests to use ztest API
* :github:`31593` - civetweb hangs when there are no free filedescriptors
* :github:`31499` - lwm2m : Add visibility into observer notification success/fail
* :github:`31475` - TCP keepalive
* :github:`31473` - Failed phy request not retried and may prevent DLE procedure during auto-initiation
* :github:`31447` - MQTT idling gets disconnected when using TCP2
* :github:`31290` - dts: arm: st: standardize pwm default property st,prescaler to 0
* :github:`31253` - lis3dh driver support is confusing
* :github:`31162` - Mapping between existing and new system power management states
* :github:`31107` - libc: minimal: add qsort routine
* :github:`31043` - Infinite loop in modem cmd_handler_process
* :github:`30921` - west flash failed with an open ocd error
* :github:`30861` - drivers: uart: increase timeout precision in uart_rx_enable
* :github:`30635` - cpu_stats: Change from printk to ``LOG_*``
* :github:`30429` - Thread Border Router with NRC/RCP sample and nrf52840dk not starting
* :github:`30367` - TCP2 does not send our MSS to peer
* :github:`30245` - Bluetooth: controller: event scheduling pipeline preemption by short schedule
* :github:`30244` - Bluetooth: controller: Extended scan window time reservation prevents auxiliary channel reception
* :github:`30243` - Bluetooth: controller: IRK resolution in extended scanning breaks auxiliary PDU reception
* :github:`30236` - Main thread sometimes looping forever before user application is reached when using UDP and IPv6 on Nucleo F767ZI
* :github:`30209` - TCP2 : How to add MSS option on sending [SYN, ACK] to client?
* :github:`30066` - CI test build with RAM overflow
* :github:`30026` - Can not make multiple BLE IPSP connection to the same host
* :github:`29545` - samples: tfm_integration: tfm_ipc: No module named 'cryptography.hazmat.primitives.asymmetric.ed25519'
* :github:`29535` - riscv: stack objects are mis-aligned
* :github:`29520` - make k_current_get() work without a system call
* :github:`29397` - Build all tests of module mcuboot
* :github:`28872` - Support ESP32 as Bluetooth controller
* :github:`28819` - memory order and consistency promises for Zephyr atomic API?
* :github:`28729` - ARM: Core Stack Improvements/Bug fixes for 2.6 release
* :github:`28716` - 2.5 Release Checklist
* :github:`28312` - Add option to enable ART Accelerator on STM32 FLASH controller
* :github:`27992` - stm32f7: usb: Bursting HID Get and Set report requests leads to unresponding Control endpoint.
* :github:`27525` - Including STM32Cube's USB PD support to Zephyr
* :github:`27415` - Decide if we keep a single thread support (CONFIG_MULTITHREADING=n) in Zephyr
* :github:`27176` - [v1.14] Restore socket descriptor permission management
* :github:`27015` - Add custom transport support for MQTT
* :github:`26981` - Problem with PPP + GSM MUX with SIMCOM7600E
* :github:`26585` - IPv4 multicast datagrams can't be received for mimxrt1064_evk board (missing ethernet API)
* :github:`26256` - NRF51822 BLE Micro module: hangs on k_msleep() (RTC counter not working)
* :github:`26136` - CMake Error in Windows Environment
* :github:`26051` - shell: uart: Allow a change in the shell initalisation to let routing it through USB UART
* :github:`25832` - [test][kernel][lpcxpresso55s69_ns] kernel cases meet ESF could not be retrieved successfully
* :github:`25182` - Raspberry Pi 4B Support
* :github:`25015` - Bluetooth Isochronous Channels Support
* :github:`24854` - docs: Using third-party libraries not well documented in Memory partitions docs
* :github:`24733` - Misconfigured environment
* :github:`24200` - USB GET_INTERFACE response always 0, even when an alternate setting is used
* :github:`24051` - double to sensor_val
* :github:`23745` - Align PS/2 handlers with the handlers found in other drivers
* :github:`23723` - Poor sinf/cosf performance compared to the Segger math libraries
* :github:`23349` - Question: How to add external soc, board, DTS, drivers and libs?
* :github:`22731` - Improve docker CI documentation
* :github:`22705` - Implement counter driver for lpcxpresso55s69
* :github:`22702` - Implement I2S driver for lpcxpresso55s69
* :github:`22455` - How to assign USB endpoint address manually in stm32f4_disco for CDC ACM class driver
* :github:`22210` - Bluetooth -  bt_gatt_get_value_attr_by_uuid
* :github:`22131` - ARM Cortex_R: CONFIG_USERSPACE: external interrupts are disabled during system calls
* :github:`21869` - IPv6 neighbors get added too eagerly
* :github:`21648` - improve documentation on meta-IRQ threads
* :github:`21519` - RFC: libc: thread-safe newlib
* :github:`21339` - Expired IPv6 router causes an infinite loop
* :github:`21293` - adding timeout the I2C read/write functions for the stm32 port
* :github:`21205` - get_device_list only available if power management invoked
* :github:`21167` - libraries.libc.newlib test fails
* :github:`20576` - DTS overlay files must include full path name
* :github:`20409` - USB: Create webusb shell
* :github:`20236` - usb: api: Cleanup of current inclusion path for USB
* :github:`20171` - support external spi nor flash on mimxrt1060-evk
* :github:`19882` - Add support for multiple channel sampling to STM32 ADC driver
* :github:`19328` - Logger could block in thread at certain log message pool usage
* :github:`18960` - [Coverity CID :203908]Error handling issues in /lib/libc/newlib/libc-hooks.c
* :github:`18896` - Concurrent Multi-Protocol Support NRF52840
* :github:`18850` - Bluetooth: controller: Advertiser following directed advertiser will have corrupt data
* :github:`18386` - [Coverity CID :203443]Memory - corruptions in /subsys/bluetooth/host/rfcomm.c
* :github:`18351` - logging: 32 bit float values don't work.
* :github:`18316` - Support for unregistering bt_conn callbacks
* :github:`18042` - Only corporate members can join the slack channel
* :github:`17748` - stm32: clock-control: Remove usage of SystemCoreClock
* :github:`17692` - Proper way for joining a multicast group (NRF52840/OpenThread)
* :github:`17375` - Add VREF, TEMPSENSOR, VBAT internal channels to the stm32 adc driver
* :github:`17021` - revise concurrency control in kernel/userspace.c
* :github:`16761` - nrf52840 usb driver with openthread
* :github:`16671` - ideas for future of the settings
* :github:`16231` - Add CONFIG_UART_DYNAMIC_SETTINGS option
* :github:`15841` - Support AT86RF233
* :github:`15793` - Unable to load binaries into iotdk
* :github:`15676` - Support instrumentation for time spent in various power states
* :github:`15555` - Counter Docs Missing Callback Context Note
* :github:`14308` - Better integration between system and device power modes.
* :github:`12405` - add test to catch issues fixed in PR  #12384
* :github:`11773` - Add Bluetooth support for Silicon Labs EFR32MG12
* :github:`11702` - Add support for nrfx i2s driver
* :github:`11519` - Add at least build test for cc1200
* :github:`11193` - ARM V8M Trusted Execution Environments and Zephyr
* :github:`11028` - CONFIG_LOAPIC_SPURIOUS_VECTOR not being tested
* :github:`11000` - USB 2.0 high-speed support in Zephyr
* :github:`10930` - Extending string formatting function
* :github:`10676` - Feature Required: DFU over Thread network
* :github:`10378` - watchdog: Limitation with the current watchdog API for Nordic devices
* :github:`10324` - Publish PDF with the release doc build
* :github:`10198` - Add support for FRDM-STBC-AGM01 sensor shield
* :github:`8876` - Adapt net/l2/ieee802154 subsystem to new shell subsystem
* :github:`8275` - when zephyr can support popular IDE develop?
* :github:`7001` - ST Sensors: Driver factorization
* :github:`6777` - Add copyright handling to contributing doc
* :github:`6657` - Question: Is Bluetooth avrcp supported in Zephyr? Or any plan?
* :github:`6493` - need APIs for ranged random number generation
* :github:`6450` - Several devices of same type on same bus - how to address?
* :github:`6117` - Make sanitycheck aware of DTS and HW support
* :github:`4911` - Filesystem support for qemu
* :github:`1392` - No module named 'elftools'
* :github:`3886` - Add mutual authentication to net/crypto examples
* :github:`3885` - Add real entropy to crypto-based net samples
* :github:`3884` - Improve the TLS and DTLS examples to use best practices on security
* :github:`3879` - k_thread_abort vs k_thread->fn_abort()
* :github:`3677` - Implement HCI Zephyr extensions
* :github:`3199` - xtensa: simplify linker scripts
* :github:`2811` - Investigate having timeout code track tick deadlines instead of deltas
* :github:`2619` - Define APIs for hashing/ Message Authentication
* :github:`2248` - Split LE Controller: style fixes

---

### Doc Releases Release Notes 3.0 (`doc/releases/release-notes-3.0.rst`)

:orphan:

.. _zephyr_3.0:

Zephyr 3.0.0
############

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.

* STM32 clock_control driver configuration was moved from Kconfig to :ref:`devicetree <dt-guide>`.
  See the :dtcompatible:`st,stm32-rcc` devicetree binding for more information.
  As a consequence, following Kconfig symbols were removed:

  * ``CONFIG_CLOCK_STM32_SYSCLK_SRC_HSE``
  * ``CONFIG_CLOCK_STM32_SYSCLK_SRC_HSI``
  * ``CONFIG_CLOCK_STM32_SYSCLK_SRC_MSI``
  * ``CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL``
  * ``CONFIG_CLOCK_STM32_SYSCLK_SRC_CSI``
  * ``CONFIG_CLOCK_STM32_HSE_BYPASS``
  * ``CONFIG_CLOCK_STM32_MSI_RANGE``
  * ``CONFIG_CLOCK_STM32_PLL_SRC_MSI``
  * ``CONFIG_CLOCK_STM32_PLL_SRC_HSI``
  * ``CONFIG_CLOCK_STM32_PLL_SRC_HSE``
  * ``CONFIG_CLOCK_STM32_PLL_SRC_PLL2``
  * ``CONFIG_CLOCK_STM32_PLL_SRC_CSI``
  * ``CONFIG_CLOCK_STM32_AHB_PRESCALER``
  * ``CONFIG_CLOCK_STM32_APB1_PRESCALER``
  * ``CONFIG_CLOCK_STM32_APB2_PRESCALER``
  * ``CONFIG_CLOCK_STM32_CPU1_PRESCALER``
  * ``CONFIG_CLOCK_STM32_CPU2_PRESCALER``
  * ``CONFIG_CLOCK_STM32_AHB3_PRESCALER``
  * ``CONFIG_CLOCK_STM32_AHB4_PRESCALER``
  * ``CONFIG_CLOCK_STM32_PLL_PREDIV``
  * ``CONFIG_CLOCK_STM32_PLL_PREDIV1``
  * ``CONFIG_CLOCK_STM32_PLL_MULTIPLIER``
  * ``CONFIG_CLOCK_STM32_PLL_XTPRE``
  * ``CONFIG_CLOCK_STM32_PLL_M_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER``
  * ``CONFIG_CLOCK_STM32_PLL_P_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL_Q_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL_R_DIVISOR``
  * ``CONFIG_CLOCK_STM32_LSE``
  * ``CONFIG_CLOCK_STM32_HSI_DIVISOR``
  * ``CONFIG_CLOCK_STM32_D1CPRE``
  * ``CONFIG_CLOCK_STM32_HPRE``
  * ``CONFIG_CLOCK_STM32_D2PPRE1``
  * ``CONFIG_CLOCK_STM32_D2PPRE2``
  * ``CONFIG_CLOCK_STM32_D1PPRE``
  * ``CONFIG_CLOCK_STM32_D3PPRE``
  * ``CONFIG_CLOCK_STM32_PLL3_ENABLE``
  * ``CONFIG_CLOCK_STM32_PLL3_M_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL3_N_MULTIPLIER``
  * ``CONFIG_CLOCK_STM32_PLL3_P_ENABLE``
  * ``CONFIG_CLOCK_STM32_PLL3_P_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL3_Q_ENABLE``
  * ``CONFIG_CLOCK_STM32_PLL3_Q_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL3_R_ENABLE``
  * ``CONFIG_CLOCK_STM32_PLL3_R_DIVISOR``
  * ``CONFIG_CLOCK_STM32_PLL_DIVISOR``
  * ``CONFIG_CLOCK_STM32_MSI_PLL_MODE``

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 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:option:`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:option:`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 extended 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_STATE_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_STATE_BUS_OFF`.
  * 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
**********

* CoAP:

  * Refactored ``coap_client``/``coap_server`` samples to make better use of
    observe APIs.
  * Added PATCH, iPATCH and FETCH methods.
  * A few fixes for the block transfer handling.

* DNS:

  * Make mdns and llmnr responders join their multicast groups.
  * Added support for mdns/dns_sd service type enumeration.

* ICMPv6:

  * Added support for Route Information option processing.

* IPv4:

  *  Add IPv4 support to multicast monitor.

* LwM2M:

  * Added a parameter to forcefully close the LwM2M session to
    :c:func:`lwm2m_rd_client_stop` function.
  * Replaced custom ``float32_value_t`` type with double.
  * Added :kconfig:option:`LWM2M_FIRMWARE_PORT_NONSECURE`/
    :kconfig:option:`LWM2M_FIRMWARE_PORT_SECURE` options, which allow to
    specify a custom port or firmware update.
  * Added :c:func:`lwm2m_update_device_service_period` API function.
  * Added observe callback for observe and notification events.
  * Added support for multiple LwM2M Firmware Update object instances.
  * Improved error handling in LwM2M content writers.
  * Added unit tests for LwM2M content writers.
  * Implemented LwM2M Security, Server, Connection Monitor objects in version 1.1.
  * Multiple minor bugfixes in the LwM2M stack.
  * Added support for the following objects:

    * LWM2M Software Management (ID 9)
    * LwM2M Gateway (ID 25)
    * IPSO Current (ID 3317)
    * uCIFI Battery (ID 3411)
    * IPSO Filling level (ID 3435)

* Misc:

  * gptp: clock sync ratio as double, not float
  * Added support for route lifetime and preference.
  * Refactored various packed structures across the networking stack, to avoid
    unaliged access warnings from gcc.
  * Added automatic loopback addresses registration to loopback interface.
  * Fixed source address selection for ARP.
  * Allow to implement a custom IEEE802154 L2 on top of existing drivers.
  * Introduced a network packet filtering framework.

* MQTT:

  * Fixed incomplete :c:func:`zsock_sendmsg` writes handling.
  * Fixed :c:func:`zsock_setsockopt` error handling in SOCKS5 transport.

* OpenThread:

  * Updated OpenThread revision up to commit ``ce77ab3c1d7ad91b284615112ae38c08527bf73e``.
  * Fixed an overflow bug in the alarm implementation for Zephyr.
  * Added crypto backend based on PSA API.
  * Allow to store OpenThread settings in RAM.

* Socket:

  * Fixed :c:func:`zsock_sendmsg` when payload size exceeded network MTU.
  * Added socket processing priority.
  * Fixed possible crash in :c:func:`zsock_getaddrinfo` when DNS callback is
    delayed.

* Telnet:

  * Fixed handling of multiple commands in a single packet.
  * Enabled command handling by default.

* TCP:

  * Added support for sending our MSS to peer.
  * Fixed packet sending to local addresses.
  * Fixed possible deadlock between TCP and socket layer, when connection close
    is initiated from both sides.
  * Multiple other minor bugfixes and improvements in the TCP implementation.

* TLS:

  * Added support for ``TLS_CERT_NOCOPY`` socket option, which allows to
    optimise mbed TLS heap usage.
  * Fixed ``POLLHUP`` detection when underlying TCP connection is closed.
  * Fixed mbedtls session reset on handshake errors.

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 serial recovery (PERUSER_MGMT_GROUP): storage
  erase ``CONFIG_BOOT_MGMT_CUSTOM_STORAGE_ERASE``, custom 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

---

### Doc Releases Release Notes 3.1 (`doc/releases/release-notes-3.1.rst`)

: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

---

### Doc Releases Release Notes 3.2 (`doc/releases/release-notes-3.2.rst`)

:orphan:

.. _zephyr_3.2:

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

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

Major enhancements with this release include:

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

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

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

* CVE-2022-2993: Under embargo until 2022-11-03

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

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

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

* Zephyr now requires Python 3.8 or higher

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

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

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

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

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

* CAN

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

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

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

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

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

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

* Memory Management Drivers

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  .. table::
     :align: center

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

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

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

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

* CAN

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

* I3C

  * Added a set of new API for I3C controllers.

* W1

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

Kernel
******

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

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

* ARC

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

* ARM

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

* ARM64

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

* RISC-V

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

* Xtensa

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

Bluetooth
*********

* Audio

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

* Direction Finding

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

* Host

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

* Mesh

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

* Controller

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

* HCI Driver

  * Added a new Telink B91 HCI driver.

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

* Added support for these SoC series:

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

* Made these changes in other SoC series:

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

* Changes for ARC boards:

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

* Added support for these ARM boards:

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

* Added support for these ARM64 boards:

  * i.MX8M Nano LPDDR4 EVK board series

* Added support for these RISC-V boards:

  * ICE-V Wireless
  * RISCV32E Emulation (QEMU)

* Added support for these Xtensa boards:

  * ESP32-NET
  * intel_adsp_ace15_mtpm

* Removed support for these Xtensa boards:

  * Intel S1000

* Made these changes in other boards:

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

* Added support for these following shields:

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

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

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

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

* ADC

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

* CAN

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

* Clock control

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

* Counter

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

* Crypto

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

* DFU

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

* Display

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

* Disk

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

* DMA

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

* EEPROM

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

* Entropy

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

* ESPI

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

* Ethernet

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

* Flash

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

* GPIO

  * Added GPIO driver for Renesas Smartbond platform.

* I2C

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

* I2S

  * Removed the Intel S1000 I2S driver.

* I3C

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

* IEEE 802.15.4

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

* Interrupt Controller

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

* IPM

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

* KSCAN

  * Enabled the touch panel on the NXP MIMXRT1170 EVK.

* LED

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

* LoRa

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

* MEMC

  * Added support for Atmel SAM SMC/EBI.

* PCIE

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

* PECI

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

* Pin control

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

* PWM

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

* Power Domain

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

* Reset

  * Added driver for GigaDevice GD32 SoCs.

* SDHC

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

* Sensor

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

* Serial

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

* SPI

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

* Timer

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

* USB

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

* W1

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

* Watchdog

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

* WiFi

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

Networking
**********

* CoAP:

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

* Ethernet:

  * Added EAPoL and IEEE802154 Ethernet protocol types.

* HTTP:

  * Improved API documentation.

* LwM2M:

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

* Misc:

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

* OpenThread:

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

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

* Sockets:

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

* TCP:

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

* Wi-Fi

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

USB
***

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

Devicetree
**********

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

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

  .. code-block:: dts

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

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

  .. code-block:: c

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

  This approach has multiple problems.

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

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

  .. code-block:: dts

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

  and you can retrieve the device structure pointer like this:

  .. code-block:: c

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

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

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

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

* :ref:`devicetree_api`

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

    .. code-block:: c

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

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

  * New API macros:

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

  * Deprecated macros:

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

* Bindings

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

  * New:

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

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

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

  * Other changes:

    * Analog Devices parts:

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

    * Atmel SoCs:

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

    * Espressif SoCs:

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

    * GigaDevice SoCs:

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

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

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

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

    * Intel SoCs:

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

    * Nordic SoCs:

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

    * Nuvoton SoCs:

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

    * NXP SoCs:

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

    * STM32 SoCs:

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

    * Texas Instruments parts:

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

    * Ultrachip UC81xx displays:

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

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

    * Zephyr-specific bindings:

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

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

* Implementation details

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

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

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

* C Library

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

* C++ Subsystem

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

* Cbprintf

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

* Emul

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

* Filesystem

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

* Management

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

* Logging

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

* IPC

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

* LoRaWAN

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

* Modbus

  * Added user data entry for ADU callback.

* Power management

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

* POSIX

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

* RTIO

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

* SD Subsystem

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

* Settings

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

* Shell

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

* Storage

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

* Testsuite

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

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

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

* Storage

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

HALs
****

* Atmel

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

* Espressif

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

* GigaDevice

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

* NXP

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

* Nordic

  * Updated nrfx to version 2.9.0.

* RPi Pico

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

* STM32

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

* TI

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

MCUboot
*******

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

* boot_serial:

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

* imgtool:

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

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

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

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

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

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

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

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

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

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

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

---

### Doc Releases Release Notes 3.3 (`doc/releases/release-notes-3.3.rst`)

:orphan:

.. _zephyr_3.3:

Zephyr 3.3.0
############

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

Major enhancements with this release include:

* Introduced :ref:`Fuel Gauge <fuel_gauge_api>` subsystem for battery level
  monitoring.
* Introduced :ref:`USB-C <usbc_api>` device stack with PD (power delivery)
  support.
* Introduced :ref:`DSP (digital signal processing) <zdsp_api>` subsystem with
  CMSIS-DSP as the default backend.
* Added Picolibc support for all architectures when using Zephyr SDK.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

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

* CVE-2023-0359: Under embargo until 2023-04-20

* CVE-2023-0779: Under embargo until 2023-04-22


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

* Emulator creation APIs have changed to better match
  :c:macro:`DEVICE_DT_DEFINE`. It also includes a new backend API pointer to
  allow sensors to share common APIs for more generic tests.

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

* Newlib nano variant is no longer selected by default when
  :kconfig:option:`CONFIG_NEWLIB_LIBC` is selected.
  :kconfig:option:`CONFIG_NEWLIB_LIBC_NANO` must now be explicitly selected in
  order to use the nano variant.

* Bluetooth: Added extra options to bt_le_per_adv_sync_transfer_subscribe to
  allow disabling sync reports, and enable sync report filtering. these two
  options are mutually exclusive.

* Bluetooth: :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER`
  and :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER` have been
  added to enable the PAST implementation rather than
  :kconfig:option:`CONFIG_BT_CONN`.
* Flashdisk: :kconfig:option:`CONFIG_DISK_FLASH_VOLUME_NAME`,
  :kconfig:option:`CONFIG_DISK_FLASH_DEV_NAME`,
  :kconfig:option:`CONFIG_DISK_FLASH_START`,
  :kconfig:option:`CONFIG_DISK_FLASH_MAX_RW_SIZE`,
  :kconfig:option:`CONFIG_DISK_ERASE_BLOCK_SIZE`,
  :kconfig:option:`CONFIG_DISK_FLASH_ERASE_ALIGNMENT`,
  :kconfig:option:`CONFIG_DISK_VOLUME_SIZE` and
  :kconfig:option:`CONFIG_DISK_FLASH_SECTOR_SIZE` Kconfig options have been
  removed in favor of new :dtcompatible:`zephyr,flash-disk` devicetree binding.

* Regulator APIs previously located in ``<zephyr/drivers/regulator/consumer.h>``
  are now part of ``<zephyr/drivers/regulator.h>``.

* Starting from this release ``zephyr-`` prefixed tags won't be created
  anymore. The project will continue using ``v`` tags, for example ``v3.3.0``.

* Bluetooth: Deprecated the Bluetooth logging subsystem in favor of the Zephyr
  standard logging system. To enable debugging for a particular module in the
  Bluetooth subsystem, enable `CONFIG_BT_(module name)_LOG_LEVEL_DBG` instead of
  `CONFIG_BT_DEBUG_(module name)`.

* MCUmgr img_mgmt now requires that a full sha256 hash to be used when
  uploading an image to keep track of the progress, where the sha256 hash
  is of the whole file being uploaded (different to the hash used when getting
  image states). Use of a truncated hash or non-sha256 hash will still work
  but will cause issues and failures in client software with future updates
  to Zephyr/MCUmgr such as image verification.

* MCUmgr handlers no longer need to be registered by the application code,
  handlers just need to use a define which will then call the supplied
  registration function at boot-up. If applications register this then
  those registrations should be removed to prevent registering the same
  handler multiple times.

* MCUmgr Bluetooth and UDP transports no longer need to be registered by the
  application code, these will now automatically be registered at boot-up (this
  feature can be disabled for the UDP transport by setting
  :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UDP_AUTOMATIC_INIT`). If
  applications register transports then those registrations should be removed
  to prevent registering the same transport multiple times.

* MCUmgr transport Kconfigs have changed from ``select`` to ``depends on``
  which means that for applications using the Bluetooth transport,
  applications will now need to enable the following:

  * :kconfig:option:`CONFIG_BT`
  * :kconfig:option:`CONFIG_BT_PERIPHERAL`

  For CDC or serial transports:

  * :kconfig:option:`CONFIG_CONSOLE`

  For shell transport:

  * :kconfig:option:`CONFIG_SHELL`
  * :kconfig:option:`CONFIG_SHELL_BACKEND_SERIAL`

  For UDP transport:

  * :kconfig:option:`CONFIG_NETWORKING`
  * :kconfig:option:`CONFIG_NET_UDP`

* MCUmgr fs_mgmt hash/checksum function, type and variable names have been
  changed to be prefixed with ``fs_mgmt_`` to retain alignment with other
  zephyr and MCUmgr APIs.

* Python's argparse argument parser usage in Zephyr scripts has been updated
  to disable abbreviations, any future python scripts or python code updates
  must also disable allowing abbreviations by using ``allow_abbrev=False``
  when setting up ``ArgumentParser()``.

  This may cause out-of-tree scripts or commands to fail if they have relied
  upon their behaviour previously, these will need to be updated in order for
  building to work. As an example, if a script argument had ``--reset-type``
  and an out-of-tree script used this by passing ``--reset`` then it will need
  to be updated to use the full argument name, ``--reset-type``.

* Rewrote the CAN API to utilize flag bitfields instead discrete of struct
  members for indicating standard/extended CAN ID, Remote Transmission Request
  (RTR), and added support for filtering of CAN-FD format frames.

* New :ref:`Zephyr message bus (Zbus) <zbus>` subsystem added; a message-oriented
  bus that enables one-to-one, one-to-many and many-to-many communication
  between threads.

* zTest now supports controlling test summary printouts via the
  :kconfig:option:`CONFIG_ZTEST_SUMMARY`. This Kconfig can be set to ``n`` for
  less verbose test output.

* Emulators now support a backend API pointer which allows a single class of
  devices to provide similar emulated functionality. This can be used to write
  a single test for the class of devices and testing various boards using
  different chips.

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

* Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_LSE_DRIVE*`
  This should now be configured using the ``driving_capability`` property of
  LSE clock

* Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_LSE_BYPASS`
  This should now be configured using the new ``lse_bypass`` property of
  LSE clock

* Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_BACKUP_DOMAIN_RESET`. Its purpose
  was to control the reset of the counter value at board reset. It is removed since
  it has too wide scope (full Backup RAM reset). Replaced by
  :kconfig:option:`CONFIG_COUNTER_RTC_STM32_SAVE_VALUE_BETWEEN_RESETS` which also
  allows to control the reset of counter value, with an opposite logic.

* Removed deprecated tinycbor module, code that uses this module should be
  updated to use zcbor as a replacement.

* Removed deprecated GPIO flags used for setting debounce, drive strength and
  voltage level. All drivers now use vendor-specific flags as needed.

* Removed deprecated ``UTIL_LISTIFY`` helper macro.

* Removed deprecated ``pwm_pin*`` family of functions from the PWM API.

* Removed deprecated ``nvs_init`` function from the NVS filesystem API.

* Removed deprecated ``DT_CHOSEN_*_LABEL`` helper macros.

* Removed deprecated property ``enable-pin-remap`` from  :dtcompatible: `st,stm32-usb`:.
  ``remap-pa11-pa12`` from :dtcompatible: `st-stm32-pinctrl`: should now be used.

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

* ``xtools`` toolchain variant is now deprecated. When using a
  custom toolchain built with Crosstool-NG, the
  :ref:`cross-compile toolchain variant <other_x_compilers>` should be used instead.

* C++ library Kconfig options have been renamed to improve consistency. See
  below for the list of deprecated Kconfig options and their replacements:

  .. table::
     :align: center

     +----------------------------------------+------------------------------------------------+
     | Deprecated                             | Replacement                                    |
     +========================================+================================================+
     | :kconfig:option:`CONFIG_CPLUSPLUS`     | :kconfig:option:`CONFIG_CPP`                   |
     +----------------------------------------+------------------------------------------------+
     | :kconfig:option:`CONFIG_EXCEPTIONS`    | :kconfig:option:`CONFIG_CPP_EXCEPTIONS`        |
     +----------------------------------------+------------------------------------------------+
     | :kconfig:option:`CONFIG_RTTI`          | :kconfig:option:`CONFIG_CPP_RTTI`              |
     +----------------------------------------+------------------------------------------------+
     | :kconfig:option:`CONFIG_LIB_CPLUSPLUS` | :kconfig:option:`CONFIG_LIBCPP_IMPLEMENTATION` |
     +----------------------------------------+------------------------------------------------+

* MCUmgr subsystem, specifically the SMP transport API, is dropping `zephyr_`
  prefix, deprecating prefixed functions and callback type definitions with the
  prefix and replacing them with prefix-less variants.
  The :c:struct:`zephyr_smp_transport` type, representing transport object,
  is now replaced with :c:struct:`smp_transport`, and the later one is used,
  instead of the former one, by all prefix-less functions.

  Deprecated functions and their replacements:

  .. table::
     :align: center

     +-------------------------------------+---------------------------------------+
     | Deprecated                          | Drop in replacement                   |
     +=====================================+=======================================+
     | :c:func:`zephyr_smp_transport_init` | :c:func:`smp_transport_init`          |
     +-------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_rx_req`         | :c:func:`smp_rx_req`                  |
     +-------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_alloc_rsp`      | :c:func:`smp_alloc_rsp`               |
     +-------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_free_buf`       | :c:func:`smp_free_buf`                |
     +-------------------------------------+---------------------------------------+

  Deprecated callback types and their replacements:

  .. table::
     :align: center

     +---------------------------------------------+---------------------------------------+
     | Deprecated                                  | Drop in replacement                   |
     +=============================================+=======================================+
     | :c:func:`zephyr_smp_transport_out_fn`       | :c:func:`smp_transport_out_fn`        |
     +---------------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_transport_get_mtu_fn`   | :c:func:`smp_transport_get_mtu_fn`    |
     +---------------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_transport_ud_copy_fn`   | :c:func:`smp_transport_ud_copy_fn`    |
     +---------------------------------------------+---------------------------------------+
     | :c:func:`zephyr_smp_transport_ud_free_fn`   | :c:func:`smp_transport_ud_free_fn`    |
     +---------------------------------------------+---------------------------------------+

  NOTE: Only functions are marked as ``__deprecated``, type definitions are not.

* STM32 Ethernet Mac address Kconfig related symbols (:kconfig:option:`CONFIG_ETH_STM32_HAL_RANDOM_MAC`,
  :kconfig:option:`CONFIG_ETH_STM32_HAL_MAC4`, ...) have been deprecated in favor
  of the use of zephyr generic device tree ``local-mac-address`` and ``zephyr,random-mac-address``
  properties.

* STM32 RTC source clock should now be configured using devicetree.
  Related Kconfig :kconfig:option:`CONFIG_COUNTER_RTC_STM32_CLOCK_LSI` and
  :kconfig:option:`CONFIG_COUNTER_RTC_STM32_CLOCK_LSE` options are now
  deprecated.

* STM32 Interrupt controller Kconfig symbols such as :kconfig:option:`CONFIG_EXTI_STM32_EXTI0_IRQ_PRI`
  are removed. Related IRQ priorities should now be configured in device tree.

* `PWM_STM32_COMPLEMENTARY` deprecated in favor of `STM32_PWM_COMPLEMENTARY`.

* File backend for settings APIs and Kconfig options were deprecated:

  :c:func:`settings_mount_fs_backend` in favor of :c:func:`settings_mount_file_backend`

  :kconfig:option:`CONFIG_SETTINGS_FS` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE`

  :kconfig:option:`CONFIG_SETTINGS_FS_DIR` in favor of creating all parent
  directories from :kconfig:option:`CONFIG_SETTINGS_FILE_PATH`

  :kconfig:option:`CONFIG_SETTINGS_FS_FILE` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE_PATH`

  :kconfig:option:`CONFIG_SETTINGS_FS_MAX_LINES` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE_MAX_LINES`

* PCIe APIs :c:func:`pcie_probe` and :c:func:`pcie_bdf_lookup` have been
  deprecated in favor of a centralized scan of available PCIe devices.

* POSIX API

    * Deprecated :c:macro:`PTHREAD_COND_DEFINE`, :c:macro:`PTHREAD_MUTEX_DEFINE` in favour of the
      standard :c:macro:`PTHREAD_COND_INITIALIZER` and :c:macro:`PTHREAD_MUTEX_INITIALIZER`.
    * Deprecated ``<fcntl.h>``, ``<sys/stat.h>`` header files in the minimal libc in favour of
      ``<zephyr/posix/fcntl.h>`` and ``<zephyr/posix/sys/stat.h>``.

* SPI DT :c:func:`spi_is_ready` function has been deprecated in favor of :c:func:`spi_is_ready_dt`.

* LwM2M APIs using string references as LwM2M paths has been deprecated in favor of functions
  using :c:struct:`lwm2m_path_obj` instead.

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

* MCUmgr events have been reworked to use a single, unified callback system.
  This allows better customisation of the callbacks with a lower flash size.
  Applications using the existing callback system will need to be upgraded to
  use the new API by following the :ref:`migration guide <mcumgr_cb_migration>`

* :c:func:`net_pkt_get_frag`, :c:func:`net_pkt_get_reserve_tx_data` and
  :c:func:`net_pkt_get_reserve_rx_data` functions are now requiring to specify
  the minimum fragment length to allocate, so that they work correctly also in
  case :kconfig:option:`CONFIG_NET_BUF_VARIABLE_DATA_SIZE` is enabled.
  Applications using this APIs will need to be updated to provide the expected
  fragment length.

* Marked the Controller Area Network (CAN) controller driver API as stable.

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

Kernel
******

* Added an "EARLY" init level that runs immediately on entry to z_cstart()

* Refactored the internal CPU count API to allow for runtime changes

* Added support for defining application main() in C++ code

* Fixed a race condition on SMP when pending threads where a second CPU
  could attempt to run a thread before the pending thread had finished
  the context switch.

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

* ARC

  * Fixed & reworked interrupt management (enabling / disabling) for the SMP systems
  * Added TLS (thread-local storage) for ARC MWDT toolchain
  * Fixed & rework irq_offload implementation
  * Fixed multiple logging & cbprintf issues for ARCv3 64bit
  * Added XIP support with MWDT toolchain
  * Improved DSP support, add DSP and AGU context save / restore
  * Added XY memory support for ARC DSP targets
  * Added architectures-specific DSP tests
  * Added additional compile-time checks for unsupported configuration: ARC_FIRQ + ARC_HAS_SECURE
  * Added support for using ``__auto_type`` type for ARC MWDT toolchain
  * Added support for using ``_Generic`` and ``__fallthrough`` keywords for ARC MWDT toolchain
  * Bumped minimal required ARC MWDT version to 2022.09
  * Fixed & reworked inclusion of C/C++ headers for ARC MWDT toolchain which cased build issue with
    C++

* ARM

  * More precise 'reason' codes are now returned in the fault handler.
  * Cache functions now use proper ``sys_*`` functions.
  * Renamed default RAM region from ``SRAM`` to ``RAM``.

* ARM64

  * Implemented ASID support for ARM64 MMU

* RISC-V

  * Converted :kconfig:option:`CONFIG_MP_NUM_CPUS` to
    :kconfig:option:`CONFIG_MP_MAX_NUM_CPUS`.

  * Added support for hardware register stacking/unstacking during ISRs and
    exceptions.

  * Added support for overriding :c:func:`arch_irq_lock`,
    :c:func:`arch_irq_unlock` and :c:func:`arch_irq_unlocked`.

  * Zephyr CPU number is now decoupled from the hart ID.

  * Secondary boot code is no longer included when
    :kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` equals ``1``.

  * IPIs are no longer hardcoded to :c:func:`z_sched_ipi`.

  * Implemented an on-demand context switching algorithm for thread FPU
    accesses.

  * Enabled booting from non-zero indexed RISC-V harts with
    :kconfig:option:`CONFIG_RV_BOOT_HART`.

  * Hart IDs are now mapped to Zephyr CPUs with the devicetree.

  * Added a workaround for ``MTVAL`` not updating properly on QEMU-based
    platforms.

Bluetooth
*********

* Audio

  * Refactored the handling of extended and periodic advertising in the BAP
    broadcast source.
  * Implemented the Common Audio Profile initiator role.
  * Added support for Broadcast source subgroup and BIS codec configuration.
  * Renamed the CSI and VCP functionality to use the "P" postfix for profile
    instead of "S" for service.
  * Added a broadcast source metadata update function.
  * Added (un)binding of audio ISO structs to Audio Streams.
  * Added support for encrypted broadcast.
  * Added the ability to change the supported contexts in PACS.
  * Improved stream coupling for CIS as the unicast client
  * Added broadcast source metadata update function
  * Added packing to unicast group create
  * Added packing field to broadcast source
  * Renamed BASS and BASS client to BAP Scan Delegator and BPA Broadcast Assistant
  * Added support for multiple subgroups for BAP broadcast sink
  * Replaced capabilities API with PACS

* Host

  * Added a new ``BT_CONN_INTERVAL_TO_US`` utility macro.
  * Made the HCI fragmentation logic asynchronous, thus fixing a long-standing
    potential deadlock between data and control procedures.
  * Added the local advertising address to :c:func:`bt_le_ext_adv_get_info`.
  * Improved the implementation of :c:func:`bt_disable` to handle additional
    edge cases.
  * Removed all Bluetooth-specific logging macros and functionality, switching
    instead to the OS-wide ones.
  * Added a new :c:func:`bt_le_per_adv_sync_lookup_index` function.
  * Fixed missing calls to bt_le_per_adv_sync_cb.term when deleting a periodic
    advertising sync object.
  * Added local advertising address to bt_le_ext_adv_info.
  * Added the printing of function names by default when logging.
  * Changed the policy for advertising restart after disconnection, which is now
    done only for connections in the peripheral role.
  * Added a guard to prevent bonding to the same device more than once.
  * Refactored crypto functionality from SMP into its own folder, and added the
    h8 crypto function.
  * Changed the behavior when receiving an L2CAP K-frame larger than the MPS,
    disconnecting instead of truncating it.
  * Added a new :kconfig:option:`BT_ID_ALLOW_UNAUTH_OVERWRITE` that allows
    unauthorized bond overrides with multiple identities.
  * Added support for the object calculate checksum feature in OTS.
  * Changed back the semantics of :kconfig:option:`BT_PRIVACY` to refer to local
    RPA address generation.
  * Modified the SMP behavior when outside a pairing procedure. The stack no
    longer sends unnecessary Pairing Failed PDUs in that state.

  * ISO: Changed ISO seq_num to 16-bit

* Mesh

  * Changed the default advertiser to be extended advertiser.
  * Made the provisioning feature set dynamic.
  * Made the maximum number of simultaneous Bluetooth connections that the mesh
    stack can use configurable via :kconfig:option:`BT_MESH_MAX_CONN`.
  * Changed the advertising duration calculation to avoid imprecise estimations.
  * Added the :kconfig:option:`BT_MESH_FRIEND_ADV_LATENCY` Kconfig option.

* Controller

  * Implemented the Read/Write Connection Accept Timeout HCI commands.
  * Implemented the Sleep Clock Accuracy Update procedure.
  * Implemented additional ISO-related HCI commands.
  * Implemented ISO-AL SDU buffering and PDU release timeout.
  * Added support for handling fragmented AD without chaining PDUs.
  * Added support for multiple memory pools for advertising PDUs
  * Added support for retrying the automatic peripheral connection parameter
    update.
  * Added support for deferring anchor points moves using an external hook.
  * Added a new ``LL_ASSERT_MSG`` macro for verbose assertions.
  * Added long control PDU support.
  * Added support for Broadcast ISO encryption.
  * Added support for central CIS/CIG, including ULL and Nordic LLL.
  * Added support for peripheral CIS/CIG in the Nordic LLL.
  * Added the :kconfig:option:`BT_CTLR_SLOT_RESERVATION_UPDATE` Kconfig option.
  * Integrated ISOAL for ISO broadcast.

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

* Added support for these SoC series:

  * Atmel SAMC20, SAMC21
  * Atmel SAME70Q19
  * GigaDevice GD32L23X
  * GigaDevice GD32A50X
  * NXP S32Z2/E2

* Made these changes in other SoC series:

  * STM32F1: USB Prescaler configuration is now expected to be done using
    :dtcompatible: `st,stm32f1-pll-clock`: ``usbpre``
    or :dtcompatible: `st,stm32f105-pll-clock`: ``otgfspre`` properties.
  * STM32F7/L4: Now supports configuring MCO.
  * STM32G0: Now supports FDCAN
  * STM32G4: Now supports power management (STOP0 and STOP1 low power modes).
  * STM32H7: Now supports PLL2, USB OTG HS and ULPI PHY.
  * STM32L5: Now supports RTC based :ref:`counter_api`.
  * STM32U5: Now supports :ref:`crypto_api` through AES device.
  * STM32F7/L4: Now supports configuring MCO.

* Changes for ARC boards:

  * Multiple fixes to ``mdb-hw`` and ``mdb-nsim`` west runners to improve usability
  * Added ``nsim_em11d`` board with DSP features (XY DSP with AGU and XY memory)
  * Fixed cy8c95xx I2C GPIO port init on HSDK board
  * Added SPI flash support on EM starter kit board
  * Multiple fixes for nSIM platform - configuration: adding of missing HW features or
    configurations sync
  * Improved creg_gpio platform driver - add pin_configure API
  * Added separate QEMU config ``qemu_arc_hs_xip`` for XIP testing
  * Added ``nsim_hs_sram``, ``nsim_hs_flash_xip`` nSIM platforms to verify various memory models
  * nSIM board documentation overhaul

* Added support for these ARM boards:

  * Adafruit ItsyBitsy nRF52840 Express
  * Adafruit KB2040
  * Atmel atsamc21n_xpro
  * GigaDevice GD32L233R-EVAL
  * GigaDevice GD32A503V-EVAL
  * nRF5340 Audio DK
  * Sparkfun pro micro RP2040
  * Arduino Portenta H7
  * SECO JUNO SBC-D23 (STM32F302)
  * ST Nucleo G070RB
  * ST Nucleo L4A6ZG
  * NXP X-S32Z27X-DC (DC2)

* Added support for these ARM64 boards:

  * i.MX93 (Cortex-A) EVK board
  * Khadas Edge-V board
  * QEMU Virt KVM

* Added support for these X86 boards:

  * Intel Raptor Lake CRB

* Added support for these RISC-V boards:

  * Added LCD support for ``longan_nano`` board.

* Made these changes in ARM boards:

  * sam4s_xplained: Enabled PWM
  * sam_e70_xplained: Added DMA devicetree entries for SPI
  * sam_v71_xult: Added DMA devicetree entries for SPI
  * tdk_robokit1: Added DMA devicetree entries for SPI

  * The scratch partition has been removed for the following Nordic boards and
    flash used by this area re-assigned to other partitions to free up space
    and rely upon the swap-using-move algorithm in MCUboot (which does not
    suffer from the same faults or stuck image issues as swap-using-scratch
    does):
    ``nrf21540dk_nrf52840``
    ``nrf51dk_nrf51422``
    ``nrf51dongle_nrf51422``
    ``nrf52833dk_nrf52833``
    ``nrf52840dk_nrf52811``
    ``nrf52840dk_nrf52840``
    ``nrf52840dongle_nrf52840``
    ``nrf52dk_nrf52805``
    ``nrf52dk_nrf52810``
    ``nrf52dk_nrf52832``
    ``nrf5340dk_nrf5340``
    ``nrf9160dk_nrf52840``
    ``nrf9160dk_nrf9160``

    Note that MCUboot and MCUboot image updates from pre-Zephyr 3.3 might be
    incompatible with Zephyr 3.3 onwards and vice versa.

  * The default console for the ``nrf52840dongle_nrf52840`` board has been
    changed from physical UART (which is not connected to anything on the
    board) to use USB CDC instead.
  * Forced configuration of FPU was removed from following boards:
    ``stm32373c_eval``
    ``stm32f3_disco``

  * On STM32 boards, configuration of USB, SDMMC and entropy devices that generally
    expect a 48MHz clock is now done using device tree. When available, HSI48 is enabled
    and configured as domain clock for these devices, otherwise PLL_Q output or MSI is used.
    On some boards, previous PLL SAI configuration has been changed to above options,
    since PLL SAI cannot yet be configured using device tree.

* Made these changes in other boards:

  * The nrf52_bsim (natively simulated nRF52 device with BabbleSim) now models
    a nRF52833 instead of a nRF52832 device

* Added support for these following shields:

  * Adafruit PCA9685
  * nPM6001 EK
  * nPM1100 EK
  * Semtech SX1262MB2DAS
  * Sparkfun MAX3421E

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

* Code relocation

  * ``zephyr_code_relocate`` API has changed to accept a list of files to
    relocate and a location to place the files.

* Sysbuild

  * Issue with duplicate sysbuild image name causing an infinite cmake loop
    has been fixed.

  * Issue with board revision not being passed to sysbuild images has been
    fixed.

  * Application specific configurations of sysbuild controlled images.

* Userspace

  * Userspace option to disable using the ``relax`` linker option has been
    added.

* Tools

  * Static code analyser (SCA) tool support has been added.

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

* ADC

  * STM32: Now Supports sequencing multiple channels into a single read.
  * Fixed a problem in :c:macro:`ADC_CHANNEL_CFG_DT` that forced users to add
    artificial ``input-positive`` property in nodes related to ADC drivers that
    do not use configurable analog inputs when such drivers were used together
    with an ADC driver that uses such input configuration.
  * Added driver for TI CC13xx/CC26xx family.
  * Added driver for Infineon XMC4xxx family.
  * Added driver for ESP32 SoCs.

* Battery-backed RAM

  * STM32: Added driver to enable support for backup registers from RTC.

* CAN

  * Added RX overflow counter statistics support (STM32 bxCAN, Renesas R-Car,
    and NXP FlexCAN).
  * Added support for TWAI on ESP32-C3.
  * Added support for multiple MCP2515 driver instances.
  * Added Kvaser PCIcan driver and support for using it under QEMU.
  * Made the fake CAN test driver generally available.
  * Added support for compiling the Native Posix Linux CAN driver against Linux
    kernel headers prior to v5.14.
  * Removed the CONFIG_CAN_HAS_RX_TIMESTAMP and CONFIG_CAN_HAS_CANFD Kconfig
    helper symbols.

* Clock control

  * STM32: HSI48 can now be configured using device tree.

* Counter

  * STM32 RTC based counter domain clock (LSE/SLI) should now be configured using device tree.
  * Added Timer based driver for GigaDevice GD32 SoCs.
  * Added NXP S32 System Timer Module driver.

* DAC

  * Added support for GigaDevice GD32 SoCs.
  * Added support for Espressif ESP32 SoCs.

* DFU

  * Removed :c:macro:`BOOT_TRAILER_IMG_STATUS_OFFS` in favor a two new functions;
    :c:func:`boot_get_area_trailer_status_offset` and :c:func:`boot_get_trailer_status_offset`

* Disk

  * STM32 SD host controller clocks are now configured via devicetree.
  * Zephyr flash disks are now configured using the :dtcompatible:`zephyr,flash-disk`
    devicetree binding
  * Flash disks can be marked as read only by setting the ``read-only`` property
    on the linked flash device partition.

* DMA

  * Adjusted incorrect dma1 clock source for GD32 gd32vf103 SoC.
  * Atmel SAM: Added support to select fixed or increment address mode when using
    peripherals to memory or memory to peripheral transfers.
  * STM32 DMA variable scope cleanups
  * Intel GPDMA linked list transfer descriptors appropriately aligned to 64 byte addresses
  * Intel GPDMA fixed bug in transfer configuration to initialize cfg_hi and cfg_lo
  * STM32 DMA Support for the STM32MP1 series
  * SAM XDMAC fixes to enable usage with SPI DMA transfers
  * Intel GPDMA fixed to return errors on dma stop
  * Intel GPDMA disabled interrupts when unneeded
  * Intel GPDMA fixed for register/ip ownership
  * STM32U5 GPDMA bug fix for busy flag
  * STM32U5 Suspend and resume features added
  * Intel GPDMA Report total bytes read/written (linear link position) in dma status
  * DMA API get attribute function added, added attributes for scatter/gather blocks available
    to Intel HDA and Intel GPDMA drivers.
  * Intel GPDMA Power management functionality added
  * Intel HDA Power management functionality added
  * GD32 Slot used for peripheral selection
  * GD32 memory to memory support added
  * ESP32C3 GDMA driver added
  * Intel HDA underrun/overrun (xrun) handling and reporting added
  * Intel GPDMA underrun/overrun (xrun) handling nad reporting added
  * DMA API start/stop are defined to be repeatable callable with test cases added.
    STM32 DMA, Intel HDA, and Intel GPDMA all comply with the contract after patches.
  * NXP EDMA Unused mutex removed

* EEPROM

  * Added fake EEPROM driver for testing purposes.

* Ethernet

  * STM32: Default Mac address configuration is now uid based. Optionally, user can
    configure it to be random or provide its own address using device tree.
  * STM32: Added support for STM32Cube HAL Ethernet API V2 on F4/F7/H7. By default disabled,
    it can be enabled with :kconfig:option:`CONFIG_ETH_STM32_HAL_API_V2`.
  * STM32: Added ethernet support on STM32F107 devices.
  * STM32: Now supports multicast hash filtering in the MAC. It can be enabled using
    :kconfig:option:`CONFIG_ETH_STM32_MULTICAST_FILTER`.
  * STM32: Now supports statistics logging through :kconfig:option:`CONFIG_NET_STATISTICS_ETHERNET`.
    Requires use of HAL Ethernet API V2.

* Flash

  * Flash: Moved CONFIG_FLASH_FLEXSPI_XIP into the SOC level due to the flexspi clock initialization occurring in the SOC level.

  * NRF: Added CONFIG_SOC_FLASH_NRF_TIMEOUT_MULTIPLIER to allow tweaking the timeout of flash operations.

  * spi_nor: Added property mxicy,mx25r-power-mode to jedec,spi-nor binding for controlling low power/high performance mode on Macronix MX25R* Ultra Low Power flash devices.

  * spi_nor: Added check if the flash is busy during init. This used to cause
    the flash device to be unavailable until the system was restarted. The fix
    waits for the flash to become ready before continuing. In cases where a
    full flash erase was started before a restart, this might result in several
    minutes of waiting time (depending on flash size and erase speed).

  * rpi_pico: Added a flash driver for the Raspberry Pi Pico platform.

  * STM32 OSPI: sfdp-bfp table and jedec-id can now be read from device tree and override
    the flash content if required.

  * STM32 OSPI: Now supports DMA transfer on STM32U5.

  * STM32: Flash driver was revisited to simplify reuse of driver for new series, taking
    advantage of device tree compatibles.

* FPGA

  * Added preliminary support for the Lattice iCE40.
  * Added Qomu board sample.

* GPIO

  * Atmel SAM: Added support to configure Open-Drain pins
  * Added driver for nPM6001 PMIC GPIOs
  * Added NXP S32 GPIO (SIUL2) driver

* hwinfo

  * Added hwinfo_get_device_id for ESP32-C3
  * Added reset cause for iwdg and wwdg for STM32H7 and MP1

* I2C

  * SAM0 Fixed spurious trailing data by moving stop condition from thread into ISR
  * I2C Shell command adds ability to configure bus speed through `i2c speed`
  * ITE usage of instruction local memory support
  * NPCX bus recovery on transaction timeout
  * ITE log status of registers on transfer failure
  * ESP32 enabled configuring a hardware timeout to account for longer durations of clock stretching
  * ITE fixed bug where an operation was done outside of the driver mutex
  * NRFX TWIM Made transfer timeout configurable
  * DW Bug fix for clearing FIFO on initialization
  * NPCX simplified smb bank register usage
  * NXP LPI2C enabled target mode
  * NXP FlexComm Added semaphore for shared usage of bus
  * I2C Added support for dumping messages in the log for all transactions, reads and writes
  * STM32: Slave configuration now supports 10-bit addressing.
  * STM32: Now support power management. 3 modes supported: :kconfig:option:`CONFIG_PM`,
    :kconfig:option:`CONFIG_PM_DEVICE`, :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME`.
  * STM32: Domain clock can now be configured using device tree

* I3C

  * Added a new target device API :c:func:`i3c_target_tx_write` to
    explicit write to TX FIFO.

  * GETMRL and GETMWL are both optional in :c:func:`i3c_device_basic_info_get` as
    MRL and MWL are optional according to I3C specification.

  * Added a new driver to support Cadence I3C controller.

* Interrupt Controller

  * STM32: Driver configuration and initialization is now based on device tree
  * Added NXP S32 External Interrupt Controller (SIUL2) driver.

* IPM

  * ipm_stm32_ipcc: fixed an issue where interrupt mask is not cleaned correctly,
    resulting in infinite TXF interrupts.

* MBOX

  * Added NXP S32 Message Receive Unit (MRU) driver.

* PCIE

  * Support for accessing I/O BARs, which was previously removed, is back.

  * Added new API :c:func:`pcie_scan` to scan for devices.

    * This iterates through the buses and devices which are expected to
      exist. The old method was to try all possible combination of buses
      and devices to determine if there is a device there.
      :c:func:`pci_init` and :c:func:`pcie_bdf_lookup` have been updated to
      use this new API.

    * :c:func:`pcie_scan` also introduces a callback mechanism for when
      a new device has been discovered.

* Pin control

  * Common pin control properties are now defined at root level in a single
    file: :zephyr_file:`dts/bindings/pinctrl/pincfg-node.yaml`. Pin control
    bindings are expected to include it at the level they need. For example,
    drivers using the grouping representation approach need to include it at
    grandchild level, while drivers using the node approach need to include it
    at the child level. This change will only impact out-of-tree pin control
    drivers, since all in-tree drivers have been updated.
  * Added NXP S32 SIUL2 driver
  * Added Nuvoton NuMicro driver
  * Added Silabs Gecko driver
  * Added support for i.MX93 in the i.MX driver
  * Added support for GD32L23x/GD32A50x in the Gigadevice driver

* PWM

  * Atmel SAM: Added support to select pin polarity
  * Added driver for NXP PCA9685 LED controller

* Regulators

  * Completed an API overhaul so that devices like PMICs can be supported. The
    API now offers a clear and concise API that allows to perform the following
    operations:

      - Enable/disable regulator output (reference counted)
      - List supported voltages
      - Get/set operating voltage
      - Get/set maximum current
      - Get/set operating mode
      - Obtain errors, e.g. overcurrent.

    The devicetree part maintains compatibility with Linux bindings, for example,
    the following properties are well supported:

      - ``regulator-boot-on``
      - ``regulator-always-on``
      - ``regulator-min-microvolt``
      - ``regulator-max-microvolt``
      - ``regulator-min-microamp``
      - ``regulator-max-microamp``
      - ``regulator-allowed-modes``
      - ``regulator-initial-mode``

    A common driver class layer takes care of the common functionality so that
    driver implementations are kept simple. For example, allowed voltage ranges
    are verified before calling into the driver.

    An experimental parent API to configure DVS (Dynamic Voltage Scaling) has
    also been introduced.

  * Refactored NXP PCA9420 driver to align with the new API.
  * Added support for nPM6001 PMIC (LDO and BUCK converters).
  * Added support for nPM1100 PMIC (allows to dynamically change its mode).
  * Added a new test that allows to verify regulator output voltage using the
    ADC API.
  * Added a new test that checks API behavior provided we have a well-behaved
    driver.

* Reset

  * STM32: STM32 reset driver is now available. Devices reset line configuration should
    be done using device tree.

* SDHC

  * i.MX RT USDHC:

    - Support HS400 and HS200 mode. This mode is used with eMMC devices,
      and will enable high speed operation for those cards.
    - Support DMA operation on SOCs that do not support non-cacheable memory,
      such as the RT595. DMA will enable higher performance SD modes,
      such as HS400 and SDR104, to reliably transfer data using the
      SD host controller

* Sensor

  * Refactored all drivers to use :c:macro:`SENSOR_DEVICE_DT_INST_DEFINE` to
    enable a new sensor info iterable section and shell command. See
    :kconfig:option:`CONFIG_SENSOR_INFO`.
  * Refactored all sensor devicetree bindings to inherit new base sensor device
    properties in :zephyr_file:`dts/bindings/sensor/sensor-device.yaml`.
  * Added sensor attribute support to the shell.
  * Added ESP32 and RaspberryPi Pico die temperature sensor drivers.
  * Added TDK InvenSense ICM42688 six axis IMU driver.
  * Added TDK InvenSense ICP10125 pressure and temperature sensor driver.
  * Added AMS AS5600 magnetic angle sensor driver.
  * Added AMS AS621x temperature sensor driver.
  * Added HZ-Grow R502A fingerprint sensor driver.
  * Enhanced FXOS8700, FXAS21002, and BMI270 drivers to support SPI in addition
    to I2C.
  * Enhanced ST LIS2DW12 driver to support free fall detection.
  * rpi_pico: Added die temperature sensor driver.
  * STM32 family Quadrature Decoder driver was added. Only enabled on STM32F4 for now.

* Serial

  * Atmel SAM: UART/USART: Added support to configure driver at runtime
  * STM32: DMA now supported on STM32U5 series.

  * uart_altera_jtag: added support for Nios-V UART.

  * uart_esp32: added support asynchronous operation.

  * uart_gecko: added support for pinctrl.

  * uart_mchp_xec: now supports UART on MEC15xx SoC.

  * uart_mcux_flexcomm: added support for runtime configuration.

  * uart_mcux_lpuart: added support for RS-485.

  * uart_numicro: uses pinctrl to configure UART pins.

  * uart_pl011: added support for pinctrl.

  * uart_rpi_pico: added support for runtime configuration.

  * uart_xmc4xxx: added support for interrupt so it can now be interrupt driven.
    Also added support for FIFO.

  * New UART drivers are added:

    * Cadence IP6528 UART.

    * NXP S32 LINFlexD UART.

    * OpenTitan UART.

    * QuickLogic USBserialport_S3B.

* SPI

  * Added dma support for GD32 driver.
  * Atmel SAM:

    * Added support to transfers using DMA.
    * Added support to loopback mode for testing purposes.

  * Added NXP S32 SPI driver.

* Timer

  * Corrected CPU numbering on SMP RISC-V systems using the mtime device

  * Added support for OpenTitan's privileged timer device to riscv_machine_timer

  * Refactored SYS_CLOCK_EXISTS such that it always matches the
    existence of a timer device in kconfig

  * Significant rework to nrf_rtc_timer with multiple fixes

  * Fixed prescaler correction in stm32_lptim driver and fix race with auto-reload

* USB

  * STM32F1: Clock bus configuration is not done automatically by driver anymore.
    It is user's responsibility to configure the proper bus prescaler using clock_control
    device tree node to achieve a 48MHz bus clock. Note that, in most cases, core clock
    is 72MHz and default prescaler configuration is set to achieve 48MHz USB bus clock.
    Prescaler only needs to be configured manually when core clock is already 48MHz.
  * STM32 (non F1): Clock bus configuration is now expected to be done in device tree
    using ``clocks`` node property. When a dedicated HSI 48MHz clock is available on target,
    is it configured by default as the USB bus clock, but user has the ability to select
    another 48MHz clock source. When no HSI48 is available, a specific 48MHz bus clock
    source should be configured by user.
  * STM32: Now supports :c:func:`usb_dc_detach` and :c:func:`usb_dc_wakeup_request`.
  * STM32: Vbus sensing is now supported and determined based on the presence of the
    hardware detection pin(s) in the device tree. E.g: pinctrl-0 = <&usb_otg_fs_vbus_pa9 ...>;
  * RPi Pico: fixed buffer status handling, fixed infinite unhandled irq retriggers,
    fixed DATA PID toggle and control transfer handling.
  * NXP: Enabled high speed support, fixed endpoint buffer write operation.
  * nRF USBD: Removed HAL driver uninit on detach, fixed endpoints disable on
    USB stack disable.
  * Added new experimental USB device controller (UDC) API and implementation
    for nRF USBD, Kinetis USBFSOTG, and virtual controllers.
  * Added new experimental USB host controller (UDC) API and implementation
    for MAX3421E and virtual controllers.

* Watchdog

  * Added driver for nPM6001 PMIC Watchdog.
  * Added free watchdog driver for GigaDevice GD32 SoCs.
  * Added window watchdog driver for GigaDevice GD32 SoCs.
  * Added NXP S32 Software Watchdog Timer driver.

Networking
**********

* CoAP:

  * Implemented insertion of a CoAP option at arbitrary position.

* Ethernet:

  * Fixed AF_PACKET/SOCK_RAW/IPPROTO_RAW sockets on top of Ethernet L2.
  * Added support for setting Ethernet MAC address with net shell.
  * Added check for return values of the driver start/stop routines when
    bringing Ethernet interface up.
  * Added ``unknown_protocol`` statistic for packets with unrecognized protocol
    field, instead of using ``error`` for this purpose.
  * Added NXP S32 NETC Ethernet driver.

* HTTP:

  * Reworked HTTP headers: moved methods to a separate header, added status
    response codes header and grouped HTTP headers in a subdirectory.
  * Used :c:func:`zsock_poll` for HTTP timeout instead of a delayed work.

* ICMPv4:

  * Added support to autogenerate Echo Request payload.

* ICMPv6:

  * Added support to autogenerate Echo Request payload.
  * Fixed stats counting for ND packets.

* IEEE802154:

  * Improved short address support.
  * Improved IEEE802154 context thread safety.
  * Decoupled IEEE802154 parameters from :c:struct:`net_pkt` into
    :c:struct:`net_pkt_cb_ieee802154`.
  * Multiple other minor fixes/improvements.

* IPv4:

  * IPv4 packet fragmentation support has been added, this allows large packets
    to be split up before sending or reassembled during receive for packets that
    are larger than the network device MTU. This is disabled by default but can
    be enabled with :kconfig:option:`CONFIG_NET_IPV4_FRAGMENT`.
  * Added support for setting/reading DSCP/ECN fields.
  * Fixed packet leak in IPv4 address auto-configuration procedure.
  * Added support for configuring IPv4 addresses with ``net ipv4`` shell
    command.
  * Zephyr now adds IGMP all systems 224.0.0.1 address to all IPv4 network
    interfaces by default.

* IPv6:

  * Made it possible to add route to router's link local address.
  * Added support for setting/reading DSCP/ECN fields.
  * Improved test coverage for IPv6 fragmentation.
  * Added support for configuring IPv6 addresses with ``net ipv6`` shell
    command.
  * Added support for configuring IPv6 routes with ``net route`` shell
    command.

* LwM2M:

  * Renamed ``LWM2M_RD_CLIENT_EVENT_REG_UPDATE_FAILURE`` to
    :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT`. This event is now used in case
    of registration timeout.
  * Added new LwM2M APIs for historical data storage for LwM2M resource.
  * Updated LwM2M APIs to use ``const`` pointers when possible.
  * Added shell command to lock/unlock LwM2M registry.
  * Added shell command to enable historical data cache for a resource.
  * Switched to use ``zsock_*`` functions internally.
  * Added uCIFI LPWAN (ID 3412) object implementation.
  * Added BinaryAppDataContainer (ID 19) object implementation.
  * Deprecated :kconfig:option:`CONFIG_LWM2M_RD_CLIENT_SUPPORT`, as it's now
    considered as an integral part of the LwM2M library.
  * Added support for SenML Object Link data type.
  * Fixed a bug causing incorrect ordering of the observation paths.
  * Deprecated string based LwM2M APIs. LwM2M APIs now use
    :c:struct:`lwm2m_obj_path` to represent object/resource paths.
  * Refactored ``lwm2m_client`` sample by splitting specific functionalities
    into separate modules.
  * Multiple other minor fixes within the LwM2M library.

* Misc:

  * Updated various networking test suites to use the new ztest API.
  * Added redirect support for ``big_http_download`` sample and updated the
    server URL for TLS variant.
  * Fixed memory leak in ``net udp`` shell command.
  * Fixed cloning of LL address for :c:struct:`net_pkt`.
  * Added support for QoS and payload size setting in ``net ping`` shell
    command.
  * Added support for aborting ``net ping`` shell command.
  * Introduced carrier and dormant management on network interfaces. Separated
    interface administrative state from operational state.
  * Improved DHCPv4 behavior with multiple DHCPv4 servers in the network.
  * Fixed net_mgmt event size calculation.
  * Added :kconfig:option:`CONFIG_NET_LOOPBACK_MTU` option to configure loopback
    interface MTU.
  * Reimplemented the IP/UDP/TCP checksum calculation to speed up the
    processing.
  * Removed :kconfig:option:`CONFIG_NET_CONFIG_SETTINGS` use from test cases to
    improve test execution on real platforms.
  * Added MQTT-SN library and sample.
  * Fixed variable buffer length configuration
    (:kconfig:option:`CONFIG_NET_BUF_VARIABLE_DATA_SIZE`).
  * Fixed IGMPv2 membership report destination address.
  * Added mutex protection for the connection list handling.
  * Separated user data pointer from FIFO reserved space in
    :c:struct:`net_context`.
  * Added input validation for ``net pkt`` shell command.

* OpenThread:

  * Implemented PSA support for ECDSA API.
  * Fixed :c:func:`otPlatRadioSetMacKey` when asserts are disabled.
  * Deprecated :c:func:`openthread_set_state_changed_cb` in favour of more
    generic :c:func:`openthread_state_changed_cb_register`.
  * Implemented diagnostic GPIO commands.

* SNTP:

  * Switched to use ``zsock_*`` functions internally.
  * Fixed the library operation with IPv4 disabled.

* Sockets:

  * Fixed a possible memory leak on failed TLS socket creation.

* TCP:

  * Extended the default TCP out-of-order receive queue timeout to 2 seconds.
  * Reimplemented TCP ref counting, to prevent situation, where TCP connection
    context could be released prematurely.

* Websockets:

  * Reimplemented websocket receive routine to fix several issues.
  * Implemented proper websocket close procedure.
  * Fixed a bug where websocket would overwrite the mutex used by underlying TCP
    socket.

* Wi-Fi:

  * Added support for power save configuration.
  * Added support for regulatory domain configuration.
  * Added support for power save timeout configuration.

* zperf

  * Added option to set QoS for zperf.
  * Fixed out of order/lost packets statistics.
  * Defined a public API for the library to allow throughput measurement without shell enabled.
  * Added an option for asynchronous upload.

USB
***

* New experimental USB support:

  * Added new USB device stack (device_next), class implementation for CDC ACM and
    BT HCI USB transport layer.
  * Added initial support for USB host

* USB device stack (device):

  * Removed transfer cancellation on bus suspend.
  * Reworked disabling all endpoints on stack disable to allow re-enabling USB
    device stack.
  * Revised endpoint enable/disable on alternate setting.
  * Improved USB DFU support with WinUSB on Windows.
  * Added check to prevent recursive logging loop and allowed to send more than
    one byte using poll out in CDC ACM class implementation.
  * Corrected IAD and interface descriptors, removed unnecessary CDC descriptors,
    and fixed packet reception in RNDIS ethernet implementation.
  * Implemented cache synchronization after write operations in USB MSC class.


Devicetree
**********

API
===

New general-purpose macros:

- :c:macro:`DT_FOREACH_PROP_ELEM_SEP_VARGS`
- :c:macro:`DT_FOREACH_PROP_ELEM_SEP`
- :c:macro:`DT_INST_FOREACH_PROP_ELEM_SEP_VARGS`
- :c:macro:`DT_INST_FOREACH_PROP_ELEM_SEP`
- :c:macro:`DT_INST_GPARENT`
- :c:macro:`DT_NODE_MODEL_BY_IDX_OR`
- :c:macro:`DT_NODE_MODEL_BY_IDX`
- :c:macro:`DT_NODE_MODEL_HAS_IDX`
- :c:macro:`DT_NODE_MODEL_OR`

New special-purpose macros introduced for the GPIO hogs feature (see
:zephyr_file:`drivers/gpio/gpio_hogs.c`):

- :c:macro:`DT_GPIO_HOG_FLAGS_BY_IDX`
- :c:macro:`DT_GPIO_HOG_PIN_BY_IDX`
- :c:macro:`DT_NUM_GPIO_HOGS`

The following deprecated macros were removed:

- ``DT_CHOSEN_ZEPHYR_ENTROPY_LABEL``
- ``DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL``

Bindings
========

New bindings:

  - Generic or vendor-independent:

    - :dtcompatible:`usb-c-connector`
    - :dtcompatible:`usb-ulpi-phy`

  - AMS AG (ams):

    - :dtcompatible:`ams,as5600`
    - :dtcompatible:`ams,as6212`

  - Synopsys, Inc. (formerly ARC International PLC) (arc):

    - :dtcompatible:`arc,xccm`
    - :dtcompatible:`arc,yccm`

  - ARM Ltd. (arm):

    - :dtcompatible:`arm,cortex-a55`
    - :dtcompatible:`arm,ethos-u`

  - ASPEED Technology Inc. (aspeed):

    - :dtcompatible:`aspeed,ast10x0-reset`

  - Atmel Corporation (atmel):

    - :dtcompatible:`atmel,samc2x-gclk`
    - :dtcompatible:`atmel,samc2x-mclk`

  - Bosch Sensortec GmbH (bosch):

    - :dtcompatible:`bosch,bmi270`
    - :dtcompatible:`bosch,bmi270`

  - Cadence Design Systems Inc. (cdns):

    - :dtcompatible:`cdns,i3c`
    - :dtcompatible:`cdns,uart`

  - Espressif Systems (espressif):

    - :dtcompatible:`espressif,esp32-adc`
    - :dtcompatible:`espressif,esp32-dac`
    - :dtcompatible:`espressif,esp32-eth`
    - :dtcompatible:`espressif,esp32-gdma`
    - :dtcompatible:`espressif,esp32-mdio`
    - :dtcompatible:`espressif,esp32-temp`

  - GigaDevice Semiconductor (gd):

    - :dtcompatible:`gd,gd322-dma` has new helper macros to easily setup the ``dma-cells`` property.
    - :dtcompatible:`gd,gd32-dma-v1`
    - :dtcompatible:`gd,gd32-fwdgt`
    - :dtcompatible:`gd,gd32-wwdgt`

  - Hangzhou Grow Technology Co., Ltd. (hzgrow):

    - :dtcompatible:`hzgrow,r502a`

  - Infineon Technologies (infineon):

    - :dtcompatible:`infineon,xmc4xxx-adc`
    - :dtcompatible:`infineon,xmc4xxx-flash-controller`
    - :dtcompatible:`infineon,xmc4xxx-intc`
    - :dtcompatible:`infineon,xmc4xxx-nv-flash`

  - Intel Corporation (intel):

    - :dtcompatible:`intel,adsp-communication-widget`
    - :dtcompatible:`intel,adsp-dfpmcch`
    - :dtcompatible:`intel,adsp-dfpmccu`
    - :dtcompatible:`intel,adsp-mem-window`
    - :dtcompatible:`intel,adsp-sha`
    - :dtcompatible:`intel,adsp-timer`
    - :dtcompatible:`intel,hda-dai`
    - :dtcompatible:`intel,raptor-lake`

  - InvenSense Inc. (invensense):

    - :dtcompatible:`invensense,icm42688`
    - :dtcompatible:`invensense,icp10125`

  - ITE Tech. Inc. (ite):

    - :dtcompatible:`ite,it8xxx2-espi`
    - :dtcompatible:`ite,it8xxx2-gpiokscan`
    - :dtcompatible:`ite,it8xxx2-ilm`
    - :dtcompatible:`ite,it8xxx2-shi`
    - :dtcompatible:`ite,it8xxx2-usbpd`

  - Kvaser (kvaser):

    - :dtcompatible:`kvaser,pcican`

  - Lattice Semiconductor (lattice):

    - :dtcompatible:`lattice,ice40-fpga`

  - lowRISC Community Interest Company (lowrisc):

    - :dtcompatible:`lowrisc,machine-timer`
    - :dtcompatible:`lowrisc,opentitan-uart`

  - Maxim Integrated Products (maxim):

    - :dtcompatible:`maxim,max3421e_spi`

  - Microchip Technology Inc. (microchip):

    - :dtcompatible:`microchip,xec-bbled`
    - :dtcompatible:`microchip,xec-ecs`
    - :dtcompatible:`microchip,xec-espi-saf-v2`
    - :dtcompatible:`microchip,xec-qmspi-full-duplex`

  - Nordic Semiconductor (nordic):

    - :dtcompatible:`nordic,npm1100`
    - :dtcompatible:`nordic,npm6001`
    - :dtcompatible:`nordic,npm6001-gpio`
    - :dtcompatible:`nordic,npm6001-regulator`
    - :dtcompatible:`nordic,npm6001-wdt`

  - Nuvoton Technology Corporation (nuvoton):

    - :dtcompatible:`nuvoton,npcx-kscan`
    - :dtcompatible:`nuvoton,npcx-sha`
    - :dtcompatible:`nuvoton,npcx-shi`
    - :dtcompatible:`nuvoton,numicro-gpio`
    - :dtcompatible:`nuvoton,numicro-pinctrl`

  - NXP Semiconductors (nxp):

    - :dtcompatible:`nxp,css-v2`
    - :dtcompatible:`nxp,fxas21002`
    - :dtcompatible:`nxp,fxos8700`
    - :dtcompatible:`nxp,imx-flexspi-aps6408l`
    - :dtcompatible:`nxp,imx-flexspi-s27ks0641`
    - :dtcompatible:`nxp,imx-mu-rev2`
    - :dtcompatible:`nxp,imx93-pinctrl`
    - :dtcompatible:`nxp,mcux-qdec`
    - :dtcompatible:`nxp,mcux-xbar`
    - :dtcompatible:`nxp,pca9420`
    - :dtcompatible:`nxp,pca9685-pwm`
    - :dtcompatible:`nxp,pcf8574`
    - :dtcompatible:`nxp,pdcfg-power`
    - :dtcompatible:`nxp,s32-gpio`
    - :dtcompatible:`nxp,s32-linflexd`
    - :dtcompatible:`nxp,s32-mru`
    - :dtcompatible:`nxp,s32-netc-emdio`
    - :dtcompatible:`nxp,s32-netc-psi`
    - :dtcompatible:`nxp,s32-netc-vsi`
    - :dtcompatible:`nxp,s32-siul2-eirq`
    - :dtcompatible:`nxp,s32-spi`
    - :dtcompatible:`nxp,s32-swt`
    - :dtcompatible:`nxp,s32-sys-timer`
    - :dtcompatible:`nxp,s32ze-pinctrl`

  - OpenThread (openthread):

    - :dtcompatible:`openthread,config`

  - QuickLogic Corp. (quicklogic):

    - :dtcompatible:`quicklogic,usbserialport-s3b`

  - Raspberry Pi Foundation (raspberrypi):

    - :dtcompatible:`raspberrypi,pico-flash-controller`
    - :dtcompatible:`raspberrypi,pico-temp`

  - Richtek Technology Corporation (richtek):

    - :dtcompatible:`richtek,rt1718s`
    - :dtcompatible:`richtek,rt1718s-gpio-port`

  - Smart Battery System (sbs):

    - :dtcompatible:`sbs,sbs-gauge-new-api`

  - Silicon Laboratories (silabs):

    - :dtcompatible:`silabs,gecko-pinctrl`
    - :dtcompatible:`silabs,gecko-stimer`

  - Synopsys, Inc. (snps):

    - :dtcompatible:`snps,ethernet-cyclonev`

  - SparkFun Electronics (sparkfun):

    - :dtcompatible:`sparkfun,pro-micro-gpio`

  - STMicroelectronics (st):

    - :dtcompatible:`st,stm32-bbram`
    - :dtcompatible:`st,stm32-qdec`
    - :dtcompatible:`st,stm32-rcc-rctl`
    - :dtcompatible:`st,stm32wb-rf`

  - Texas Instruments (ti):

    - :dtcompatible:`ti,cc13xx-cc26xx-adc`
    - :dtcompatible:`ti,cc13xx-cc26xx-watchdog`
    - :dtcompatible:`ti,tca6424a`

  - A stand-in for a real vendor which can be used in examples and tests (vnd):

    - :dtcompatible:`vnd,emul-tester`

  - Zephyr-specific binding (zephyr):

    - :dtcompatible:`zephyr,ec-host-cmd-periph-espi`
    - :dtcompatible:`zephyr,fake-can`
    - :dtcompatible:`zephyr,fake-eeprom`
    - :dtcompatible:`zephyr,fake-regulator`
    - :dtcompatible:`zephyr,flash-disk`
    - :dtcompatible:`zephyr,gpio-emul-sdl`
    - :dtcompatible:`zephyr,gpio-keys`
    - :dtcompatible:`zephyr,ipc-icmsg-me-follower`
    - :dtcompatible:`zephyr,ipc-icmsg-me-initiator`
    - :dtcompatible:`zephyr,mmc-disk`
    - :dtcompatible:`zephyr,psa-crypto-rng`
    - :dtcompatible:`zephyr,udc-virtual`
    - :dtcompatible:`zephyr,uhc-virtual`
    - :dtcompatible:`zephyr,usb-c-vbus-adc`

Removed bindings:

  - Generic or vendor-independent:

    - ``regulator-pmic``

  - Intel Corporation (intel):

    - ``intel,adsp-lps``

  - NXP Semiconductors (nxp):

    - ``nxp,imx-flexspi-hyperram``

  - STMicroelectronics (st):

    - ``st,stm32f0-flash-controller``
    - ``st,stm32f3-flash-controller``
    - ``st,stm32l0-flash-controller``
    - ``st,stm32l1-flash-controller``
    - ``st,stm32u5-flash-controller``

Modified bindings:

  - Generic or vendor-independent:

    - All sensor devices now have a ``friendly-name`` property,
      which is a human-readable string describing the sensor.
      See :zephyr_file:`dts/bindings/sensor/sensor-device.yaml`
      for more information.

    - All DMA controller devices have had their ``dma-buf-alignment``
      properties renamed to ``dma-buf-addr-alignment``.

      Additionally, all DMA controller devices have new
      ``dma-buf-size-alignment`` and ``dma-copy-alignment`` properties.

      See :zephyr_file:`dts/bindings/dma/dma-controller.yaml` for
      more information.

    - :dtcompatible:`ns16550`:

        - new property: ``vendor-id``
        - new property: ``device-id``
        - property ``reg`` is no longer required

    - :dtcompatible:`pci-host-ecam-generic`:

        - new property: ``interrupt-map-mask``
        - new property: ``interrupt-map``
        - new property: ``bus-range``

    - :dtcompatible:`regulator-fixed`:

        - removed property: ``supply-gpios``
        - removed property: ``vin-supply``

    - :dtcompatible:`gpio-keys`:

        - new property: ``debounce-interval-ms``

  - Altera Corp. (altr):

    - :dtcompatible:`altr,jtag-uart`:

        - new property: ``write-fifo-depth``

  - ARM Ltd. (arm):

    - :dtcompatible:`arm,pl011`:

        - new property: ``pinctrl-0``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``
        - new property: ``pinctrl-names``

  - Atmel Corporation (atmel):

    - :dtcompatible:`atmel,sam-pwm`:

        - specifier cells for space "pwm" are now named: ['channel', 'period', 'flags'] (old value: ['channel', 'period'])
        - property ``#pwm-cells`` const value changed from 2 to 3

    - :dtcompatible:`atmel,sam-spi`:

        - new property: ``loopback``

  - Espressif Systems (espressif):

    - :dtcompatible:`espressif,esp32-twai`:

        - property ``clkout-divider`` enum value changed from [1, 2, 4, 6, 8, 10, 12, 14] to None

    - :dtcompatible:`espressif,esp32-i2c`:

        - new property: ``scl-timeout-us``

    - :dtcompatible:`espressif,esp32-spi`:

        - new property: ``dma-enabled``
        - new property: ``dma-clk``
        - new property: ``dma-host``
        - removed property: ``dma``

  - GigaDevice Semiconductor (gd):

    - :dtcompatible:`gd,gd32-dma`:

        - specifier cells for space "dma" are now named: ['channel', 'config'] (old value: ['channel'])
        - new property: ``gd,mem2mem``
        - removed property: ``resets``
        - removed property: ``reset-names``
        - property ``#dma-cells`` const value changed from 1 to 2

  - ILI Technology Corporation (ILITEK) (ilitek):

    - :dtcompatible:`ilitek,ili9341` (on spi bus):

        - property ``disctrl`` default value changed from [10, 130, 39] to [10, 130, 39, 4]

  - Infineon Technologies (infineon):

    - :dtcompatible:`infineon,xmc4xxx-uart`:

        - new property: ``fifo-start-offset``
        - new property: ``fifo-tx-size``
        - new property: ``fifo-rx-size``

  - Intel Corporation (intel):

    - :dtcompatible:`intel,adsp-power-domain`:

        - removed property: ``lps``

    - :dtcompatible:`intel,e1000`:

        - new property: ``vendor-id``
        - new property: ``device-id``
        - property ``reg`` is no longer required

    - :dtcompatible:`intel,dai-dmic`:

        - new property: ``fifo``
        - property ``shim`` type changed from array to int

  - ITE Tech. Inc. (ite):

    - :dtcompatible:`ite,it8xxx2-pinctrl-func`:

        - new property: ``pp-od-mask``
        - new property: ``pullup-mask``
        - new property: ``gpio-group``
        - property ``volt-sel-mask`` is no longer required
        - property ``func4-gcr`` is no longer required
        - property ``func3-en-mask`` is no longer required
        - property ``func3-gcr`` is no longer required
        - property ``func4-en-mask`` is no longer required
        - property ``volt-sel`` is no longer required

  - JEDEC Solid State Technology Association (jedec):

    - :dtcompatible:`jedec,spi-nor` (on spi bus):

        - new property: ``mxicy,mx25r-power-mode``

  - Microchip Technology Inc. (microchip):

    - :dtcompatible:`microchip,xec-uart`:

        - new property: ``wakerx-gpios``

    - :dtcompatible:`microchip,xec-pcr`:

        - new property: ``clk32kmon-period-min``
        - new property: ``clk32kmon-period-max``
        - new property: ``clk32kmon-duty-cycle-var-max``
        - new property: ``clk32kmon-valid-min``
        - new property: ``xtal-enable-delay-ms``
        - new property: ``pll-lock-timeout-ms``
        - new property: ``clkmon-bypass``
        - new property: ``internal-osc-disable``
        - new property: ``pinctrl-0``
        - new property: ``pinctrl-names``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``
        - property ``interrupts`` is no longer required

    - :dtcompatible:`microchip,xec-qmspi-ldma`:

        - new property: ``port-sel``
        - new property: ``chip-select``
        - removed property: ``port_sel``
        - removed property: ``chip_select``
        - property ``lines`` enum value changed from None to [1, 2, 4]

  - Nordic Semiconductor (nordic):

    - :dtcompatible:`nordic,nrf21540-fem`:

        - new property: ``supply-voltage-mv``

    - :dtcompatible:`nordic,qspi-nor` (on qspi bus):

        - new property: ``mxicy,mx25r-power-mode``

  - Nuvoton Technology Corporation (nuvoton):

    - :dtcompatible:`nuvoton,numicro-uart`:

        - new property: ``pinctrl-0``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``
        - new property: ``pinctrl-names``

    - :dtcompatible:`nuvoton,adc-cmp`:

        - new property: ``status``
        - new property: ``compatible``
        - new property: ``reg``
        - new property: ``reg-names``
        - new property: ``interrupts``
        - new property: ``interrupts-extended``
        - new property: ``interrupt-names``
        - new property: ``interrupt-parent``
        - new property: ``label``
        - new property: ``clocks``
        - new property: ``clock-names``
        - new property: ``#address-cells``
        - new property: ``#size-cells``
        - new property: ``dmas``
        - new property: ``dma-names``
        - new property: ``io-channel-names``
        - new property: ``mboxes``
        - new property: ``mbox-names``
        - new property: ``wakeup-source``
        - new property: ``power-domain``

  - NXP Semiconductors (nxp):

    - :dtcompatible:`nxp,kinetis-lpuart`:

        - new property: ``nxp,rs485-mode``
        - new property: ``nxp,rs485-de-active-low``

    - :dtcompatible:`nxp,fxas21002` (on i2c bus):

        - new property: ``reset-gpios``

    - :dtcompatible:`nxp,imx-pwm`:

        - specifier cells for space "pwm" are now named: ['channel', 'period', 'flags'] (old value: ['channel', 'period'])
        - new property: ``nxp,prescaler``
        - new property: ``nxp,reload``
        - property ``#pwm-cells`` const value changed from 2 to 3

    - :dtcompatible:`nxp,imx-usdhc`:

        - new property: ``mmc-hs200-1_8v``
        - new property: ``mmc-hs400-1_8v``

    - :dtcompatible:`nxp,lpc-sdif`:

        - new property: ``mmc-hs200-1_8v``
        - new property: ``mmc-hs400-1_8v``

  - QEMU, a generic and open source machine emulator and virtualizer (qemu):

    - :dtcompatible:`qemu,ivshmem`:

        - new property: ``vendor-id``
        - new property: ``device-id``

  - Renesas Electronics Corporation (renesas):

    - :dtcompatible:`renesas,smartbond-uart`:

        - property ``current-speed`` enum value changed from [1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400, 460800, 921600, 1000000] to [4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400, 500000, 921600, 1000000, 2000000]

  - Silicon Laboratories (silabs):

    - :dtcompatible:`silabs,gecko-usart`:

        - new property: ``pinctrl-0``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``
        - new property: ``pinctrl-names``
        - property ``location-rx`` is no longer required
        - property ``location-tx`` is no longer required
        - property ``peripheral-id`` is no longer required

    - :dtcompatible:`silabs,gecko-gpio-port`:

        - property ``peripheral-id`` is no longer required

    - :dtcompatible:`silabs,gecko-spi-usart`:

        - new property: ``pinctrl-0``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``
        - new property: ``pinctrl-names``
        - property ``location-clk`` is no longer required
        - property ``location-rx`` is no longer required
        - property ``location-tx`` is no longer required
        - property ``peripheral-id`` is no longer required

  - Sitronix Technology Corporation (sitronix):

    - :dtcompatible:`sitronix,st7735r` (on spi bus):

        - new property: ``rgb-is-inverted``

  - Synopsys, Inc. (snps):

    - :dtcompatible:`snps,designware-i2c`:

        - new property: ``vendor-id``
        - new property: ``device-id``
        - property ``reg`` is no longer required

  - STMicroelectronics (st):

    - :dtcompatible:`st,stm32-adc`:

        - the ``has-temp-channel``, ``has-vref-channel`` and
          ``has-vbat-channel`` properties were respectively replaced by
          ``temp-channel``, ``vref-channel`` and ``vbat-channel``

    - :dtcompatible:`st,stm32-ethernet`:

        - the built-in driver for this compatible now supports the
          ``local-mac-address`` and ``zephyr,random-mac-address`` properties
          for setting MAC addresses, and the associated Kconfig options
          (``CONFIG_ETH_STM32_HAL_RANDOM_MAC``,
          ``CONFIG_ETH_STM32_HAL_USER_STATIC_MAC``) are now deprecated

    - :dtcompatible:`st,stm32-qspi-nor` (on qspi bus):

        - new property: ``reset-cmd``
        - new property: ``reset-cmd-wait``

    - :dtcompatible:`st,stm32-uart`:

        - new property: ``resets``
        - new property: ``tx-rx-swap``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-usart`:

        - new property: ``resets``
        - new property: ``tx-rx-swap``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-lpuart`:

        - new property: ``resets``
        - new property: ``tx-rx-swap``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-exti`:

        - new property: ``num-lines``
        - new property: ``line-ranges``
        - new property: ``interrupt-controller``
        - new property: ``#interrupt-cells``
        - property ``interrupts`` is now required
        - property ``interrupt-names`` is now required

    - :dtcompatible:`st,stm32-ospi`:

        - property ``clock-names`` is now required

    - :dtcompatible:`st,stm32f105-pll2-clock`:

        - new property: ``otgfspre``

    - :dtcompatible:`st,stm32f105-pll-clock`:

        - new property: ``otgfspre``

    - :dtcompatible:`st,stm32f100-pll-clock`:

        - new property: ``otgfspre``

    - :dtcompatible:`st,stm32f1-pll-clock`:

        - property ``usbpre`` type changed from int to boolean

    - :dtcompatible:`st,stm32-lse-clock`:

        - new property: ``lse-bypass``

    - :dtcompatible:`st,lis2dh12` (on i2c bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lsm6dso` (on i2c bus):

        - new property: ``drdy-pulsed``

    - :dtcompatible:`st,lis2dh` (on i2c bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lsm303agr-accel` (on spi bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lis3dh` (on i2c bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lsm6dso` (on spi bus):

        - new property: ``drdy-pulsed``

    - :dtcompatible:`st,lis2dw12` (on spi bus):

        - new property: ``odr``
        - new property: ``ff-duration``
        - new property: ``ff-threshold``

    - :dtcompatible:`st,lsm6dso32` (on spi bus):

        - new property: ``drdy-pulsed``

    - :dtcompatible:`st,lsm303dlhc-accel` (on i2c bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lis2dh` (on spi bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lis2dw12` (on i2c bus):

        - new property: ``odr``
        - new property: ``ff-duration``
        - new property: ``ff-threshold``

    - :dtcompatible:`st,lsm303agr-accel` (on i2c bus):

        - new property: ``anym-no-latch``
        - new property: ``anym-mode``

    - :dtcompatible:`st,lsm6dso32` (on i2c bus):

        - new property: ``drdy-pulsed``

    - :dtcompatible:`st,stm32-sdmmc`:

        - new property: ``resets``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-ucpd`:

        - new property: ``dead-battery``
        - new property: ``pinctrl-0``
        - new property: ``pinctrl-names``
        - new property: ``pinctrl-1``
        - new property: ``pinctrl-2``
        - new property: ``pinctrl-3``
        - new property: ``pinctrl-4``

    - :dtcompatible:`st,stm32-timers`:

        - new property: ``resets``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-lptim`:

        - new property: ``st,static-prescaler``
        - new property: ``reset-names``

    - :dtcompatible:`st,stm32-usb`:

        - removed property: ``enable-pin-remap``

  - Texas Instruments (ti):

    - :dtcompatible:`ti,ina230` (on i2c bus):

        - new property: ``current-lsb-microamps``
        - new property: ``rshunt-milliohms``
        - new property: ``alert-gpios``
        - removed property: ``irq-gpios``
        - removed property: ``current-lsb``
        - removed property: ``rshunt``

    - :dtcompatible:`ti,ina237` (on i2c bus):

        - new property: ``current-lsb-microamps``
        - new property: ``rshunt-milliohms``
        - new property: ``alert-gpios``
        - removed property: ``irq-gpios``
        - removed property: ``current-lsb``
        - removed property: ``rshunt``

  - A stand-in for a real vendor which can be used in examples and tests (vnd):

    - :dtcompatible:`vnd,pinctrl`:

        - new property: ``bias-disable``
        - new property: ``bias-high-impedance``
        - new property: ``bias-bus-hold``
        - new property: ``bias-pull-up``
        - new property: ``bias-pull-down``
        - new property: ``bias-pull-pin-default``
        - new property: ``drive-push-pull``
        - new property: ``drive-open-drain``
        - new property: ``drive-open-source``
        - new property: ``drive-strength``
        - new property: ``drive-strength-microamp``
        - new property: ``input-enable``
        - new property: ``input-disable``
        - new property: ``input-schmitt-enable``
        - new property: ``input-schmitt-disable``
        - new property: ``input-debounce``
        - new property: ``power-source``
        - new property: ``low-power-enable``
        - new property: ``low-power-disable``
        - new property: ``output-disable``
        - new property: ``output-enable``
        - new property: ``output-low``
        - new property: ``output-high``
        - new property: ``sleep-hardware-state``
        - new property: ``slew-rate``
        - new property: ``skew-delay``

  - Zephyr-specific binding (zephyr):

    - :dtcompatible:`zephyr,cdc-acm-uart` (on usb bus):

        - new property: ``tx-fifo-size``
        - new property: ``rx-fifo-size``

    - :dtcompatible:`zephyr,sdhc-spi-slot` (on spi bus):

        - bus list changed from [] to ['sd']

Other
=====

Shields

  * In order to avoid name conflicts with devices that may be defined at
    board level, it is advised, specifically for shields devicetree descriptions,
    to provide a device nodelabel in the form ``<device>_<shield>``. In-tree shields
    have been updated to follow this recommendation.

* Others

  * STM32F1 SoCs

    * Added new pinctrl definitions for STM32F1xx PWM input. In PWM capture mode
      STM32F1xx pins have to be configured as input and not as alternate.
      The new names takes the form tim1_ch1_pwm_in_pa8 for example.

    * Renamed pinctrl definitions for STM32F1xx PWM output to differentiate them
      from newly created inputs. The new names takes the form tim1_ch1_pwm_out_pa8
      instead of tim1_ch1_pwm_pa8.

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

* C Library

  * Newlib nano variant is no longer selected by default when
    :kconfig:option:`CONFIG_NEWLIB_LIBC` is selected.
    :kconfig:option:`CONFIG_NEWLIB_LIBC_NANO` must now be explicitly selected
    in order to use the nano variant.
  * Picolibc now supports all architectures supported by Zephyr.
  * Added C11 ``aligned_alloc`` support to the minimal libc.

* C++ Library

  * C++ support in Zephyr is no longer considered a "subsystem" because it
    mainly consists of the C++ ABI runtime library and the C++ standard
    library, which are "libraries" that are dissimilar to the existing Zephyr
    subsystems. C++ support components are now located in ``lib/cpp`` as
    "C++ library."
  * C++ ABI runtime library components such as global constructor/destructor
    and initialiser handlers, that were previously located under
    ``subsys/cpp``, have been moved to ``lib/cpp/abi`` in order to provide a
    clear separation between the C++ ABI runtime library and the C++ standard
    library.
  * C++ minimal library components have been moved to ``lib/cpp/minimal``.
  * C++ tests have been moved to ``tests/lib/cpp``.
  * C++ samples have been moved to ``samples/cpp``.
  * :kconfig:option:`CONFIG_CPLUSPLUS` has been renamed to
    :kconfig:option:`CONFIG_CPP`.
  * :kconfig:option:`CONFIG_EXCEPTIONS` has been renamed to
    :kconfig:option:`CONFIG_CPP_EXCEPTIONS`.
  * :kconfig:option:`CONFIG_RTTI` has been renamed to
    :kconfig:option:`CONFIG_CPP_RTTI`.
  * :kconfig:option:`CONFIG_LIB_CPLUSPLUS` is deprecated. A toolchain-specific
    C++ standard library Kconfig option from
    :kconfig:option:`CONFIG_LIBCPP_IMPLEMENTATION` should be selected instead.
  * Zephyr subsystems and modules that require the features from the full C++
    standard library (e.g. Standard Template Library) can now select
    :kconfig:option:`CONFIG_REQUIRES_FULL_LIBC`, which automatically selects
    a compatible C++ standard library.
  * Introduced :kconfig:option:`CONFIG_CPP_MAIN` to support defining ``main()``
    function in a C++ source file. Enabling this option makes the Zephyr kernel
    invoke ``int main(void)``, which is required by the ISO C++ standards, as
    opposed to the Zephyr default ``void main(void)``.
  * Added no-throwing implementation of new operator to the C++ minimal
    library.
  * Added support for new operator with alignment request (C++17) to the C++
    minimal library.
  * Added GNU C++ standard library support with Picolibc when using a suitably
    configured toolchain (e.g. the upcoming Zephyr SDK 0.16.0 release).

* Cache

  * Introduced new Cache API
  * ``CONFIG_HAS_ARCH_CACHE`` has been renamed to
    :kconfig:option:`CONFIG_ARCH_CACHE`
  * ``CONFIG_HAS_EXTERNAL_CACHE`` has been renamed to
    :kconfig:option:`CONFIG_EXTERNAL_CACHE`

* DSP

  * Introduced DSP (digital signal processing) subsystem with CMSIS-DSP as the
    default backend.
  * CMSIS-DSP now supports all architectures supported by Zephyr.

* File systems

  * Added new API call `fs_mkfs`.
  * Added new sample `samples/subsys/fs/format`.
  * FAT FS driver has been updated to version 0.15 w/patch1.
  * Added the option to disable CRC checking in :ref:`fcb_api` by enabling the
    Kconfig option :kconfig:option:`CONFIG_FCB_ALLOW_FIXED_ENDMARKER`
    and setting the `FCB_FLAGS_CRC_DISABLED` flag in the :c:struct:`fcb` struct.

* IPC

  * Added :c:func:`ipc_rpmsg_deinit`, :c:func:`ipc_service_close_instance` and
    :c:func:`ipc_static_vrings_deinit`  functions
  * Added deregister API support for icmsg backend
  * Added a multi-endpoint feature to icmsg backend
  * Added no-copy features to icmsg backend

* ISO-TP

  * Rewrote the ISO-TP API to not reuse definitions from the CAN controller API.

* Logging

  * Added support for logging on multiple domains.
  * :kconfig:option:`CONFIG_LOG_PRINTK` is now by default enabled which means that
    when logging is enabled then printk is by directed to the logging subsystem.
  * Added option to use custom logging header.

* Management

  * MCUmgr functionality deprecated in 3.1 has been removed:
    CONFIG_FS_MGMT_UL_CHUNK_SIZE, CONFIG_IMG_MGMT_UL_CHUNK_SIZE,
    CONFIG_OS_MGMT_ECHO_LENGTH
  * MCUmgr fs_mgmt issue with erasing a file prior to writing the first block
    of data has been worked around by only truncating/deleting the file data
    if the file exists. This can help work around an issue whereby logging is
    enabled and the command is sent on the same UART as the logging system, in
    which a filesystem error was emitted.
  * A MCUmgr bug when using the smp_svr sample with Bluetooth transport that
    could have caused a stack overflow has been fixed.
  * A MCUmgr issue with Bluetooth transport that could cause a deadlock of the
    mcumgr thread if the remote device disconnected before the output message
    was sent has been fixed.
  * A MCUmgr img_mgmt bug whereby the state of an image upload could persist
    when it was no longer valid (e.g. after an image erase command) has been
    fixed.
  * MCUmgr fs_mgmt command has been added that allows querying/listing the
    supported hash/checksum types.
  * MCUmgr Bluetooth transport will now clear unprocessed commands sent if a
    remote device disconnects instead of processing them.
  * A new MCUmgr transport function pointer has been added which needs
    registering in ``smp_transport_init`` for removing invalid packets for
    connection-orientated transports. If this is unimplemented, the function
    pointer can be set to NULL.
  * MCUmgr command handler definitions have changed, the ``mgmt_ctxt`` struct
    has been replaced with the ``smp_streamer`` struct, the zcbor objects need
    to replace ``cnbe`` object access with ``writer`` and ``cnbd`` object
    access with ``reader`` to successfully build.
  * MCUmgr callback system has been reworked with a unified singular interface
    which supports status passing to the handler (:ref:`mcumgr_callbacks`).
  * MCUmgr subsystem directory structure has been flattened and contents of the
    lib subdirectory has been redistributed into following directories:

    .. table::
       :align: center

       +----------------+-------------------------------------------+
       | Subdirectory   | MCUmgr area                               |
       +================+===========================================+
       | mgmt           | MCUmgr management functions, group        |
       |                | registration, and so on;                  |
       +----------------+-------------------------------------------+
       | smp            | Simple Management Protocol processing;    |
       +----------------+-------------------------------------------+
       | transport      | Transport support and transport API;      |
       +----------------+-------------------------------------------+
       | grp            | Command groups, formerly lib/cmd;         |
       |                | each group, which has Zephyr built in     |
       |                | support has its own directory here;       |
       +----------------+-------------------------------------------+
       | util           | Utilities used by various subareas of     |
       |                | MCUmgr.                                   |
       +----------------+-------------------------------------------+

    Public API interfaces for above areas are now exported through zephyr_interface,
    and headers for them reside in ``zephyr/mgmt/mcumgr/<mcumgr_subarea>/``.
    For example to access mgmt API include ``<zephyr/mgmt/mcumgr/mgmt/mgmt.h>``.

    Private headers for above areas can be accessed, when required, using paths:
    ``mgmt/mcumgr/mgmt/<mcumgr_subarea>/``.
  * MCUmgr os_mgmt info command has been added that allows querying details on
    the kernel and application, allowing application-level extensibility
    see :ref:`mcumgr_os_application_info` for details.

  * MCUMgr :kconfig:option:`CONFIG_APP_LINK_WITH_MCUMGR` has been removed as
    it has not been doing anything.

  * MCUmgr Kconfig option names have been standardised. Script
    :zephyr_file:`scripts/utils/migrate_mcumgr_kconfigs.py` has been provided
    to make transition to new Kconfig options easier.
    Below table provides information on old names and new equivalents:

    .. table::
       :align: center

       +------------------------------------------------+-------------------------------------------------------+
       | Old Kconfig option name                        | New Kconfig option name                               |
       +================================================+=======================================================+
       | MCUMGR_SMP_WORKQUEUE_STACK_SIZE                | MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE                 |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_WORKQUEUE_THREAD_PRIO               | MCUMGR_TRANSPORT_WORKQUEUE_THREAD_PRIO                |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MAX_MAIN_MAP_ENTRIES                      | MCUMGR_SMP_CBOR_MAX_MAIN_MAP_ENTRIES                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVELS                       | MCUMGR_SMP_CBOR_MIN_DECODING_LEVELS                   |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVEL_1                      | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_1                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVEL_2                      | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_2                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVEL_3                      | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_3                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVEL_4                      | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_4                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MIN_DECODING_LEVEL_5                      | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_5                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_MAX_DECODING_LEVELS                       | MCUMGR_SMP_CBOR_MAX_DECODING_LEVELS                   |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_FS_MGMT                             | MCUMGR_GRP_FS                                         |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_MAX_FILE_SIZE_64KB                     | MCUMGR_GRP_FS_MAX_FILE_SIZE_64KB                      |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_MAX_FILE_SIZE_4GB                      | MCUMGR_GRP_FS_MAX_FILE_SIZE_4GB                       |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_MAX_OFFSET_LEN                         | MCUMGR_GRP_FS_MAX_OFFSET_LEN                          |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_DL_CHUNK_SIZE_LIMIT                    | MCUMGR_GRP_FS_DL_CHUNK_SIZE_LIMIT                     |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_DL_CHUNK_SIZE                          | MCUMGR_GRP_FS_DL_CHUNK_SIZE                           |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_FILE_STATUS                            | MCUMGR_GRP_FS_FILE_STATUS                             |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_CHECKSUM_HASH                          | MCUMGR_GRP_FS_CHECKSUM_HASH                           |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_CHECKSUM_HASH_CHUNK_SIZE               | MCUMGR_GRP_FS_CHECKSUM_HASH_CHUNK_SIZE                |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_CHECKSUM_IEEE_CRC32                    | MCUMGR_GRP_FS_CHECKSUM_IEEE_CRC32                     |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_HASH_SHA256                            | MCUMGR_GRP_FS_HASH_SHA256                             |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_FILE_ACCESS_HOOK                       | MCUMGR_GRP_FS_FILE_ACCESS_HOOK                        |
       +------------------------------------------------+-------------------------------------------------------+
       | FS_MGMT_PATH_SIZE                              | MCUMGR_GRP_FS_PATH_LEN                                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_IMG_MGMT                            | MCUMGR_GRP_IMG                                        |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_USE_HEAP_FOR_FLASH_IMG_CONTEXT        | MCUMGR_GRP_IMG_USE_HEAP_FOR_FLASH_IMG_CONTEXT         |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_UPDATABLE_IMAGE_NUMBER                | MCUMGR_GRP_IMG_UPDATABLE_IMAGE_NUMBER                 |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_VERBOSE_ERR                           | MCUMGR_GRP_IMG_VERBOSE_ERR                            |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_DUMMY_HDR                             | MCUMGR_GRP_IMG_DUMMY_HDR                              |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_DIRECT_IMAGE_UPLOAD                   | MCUMGR_GRP_IMG_DIRECT_UPLOAD                          |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT     | MCUMGR_GRP_IMG_REJECT_DIRECT_XIP_MISMATCHED_SLOT      |
       +------------------------------------------------+-------------------------------------------------------+
       | IMG_MGMT_FRUGAL_LIST                           | MCUMGR_GRP_IMG_FRUGAL_LIST                            |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_OS_MGMT                             | MCUMGR_GRP_OS                                         |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_GRP_OS_OS_RESET_HOOK                    | MCUMGR_GRP_OS_RESET_HOOK                              |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_RESET_MS                               | MCUMGR_GRP_OS_RESET_MS                                |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT                               | MCUMGR_GRP_OS_TASKSTAT                                |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT_ONLY_SUPPORTED_STATS          | MCUMGR_GRP_OS_TASKSTAT_ONLY_SUPPORTED_STATS           |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT_MAX_NUM_THREADS               | MCUMGR_GRP_OS_TASKSTAT_MAX_NUM_THREADS                |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT_THREAD_NAME_LEN               | MCUMGR_GRP_OS_TASKSTAT_THREAD_NAME_LEN                |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT_SIGNED_PRIORITY               | MCUMGR_GRP_OS_TASKSTAT_SIGNED_PRIORITY                |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_TASKSTAT_STACK_INFO                    | MCUMGR_GRP_OS_TASKSTAT_STACK_INFO                     |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_ECHO                                   | MCUMGR_GRP_OS_ECHO                                    |
       +------------------------------------------------+-------------------------------------------------------+
       | OS_MGMT_MCUMGR_PARAMS                          | MCUMGR_GRP_OS_MCUMGR_PARAMS                           |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_SHELL_MGMT                          | MCUMGR_GRP_SHELL                                      |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_SHELL_MGMT_LEGACY_RC_RETURN_CODE    | MCUMGR_GRP_SHELL_LEGACY_RC_RETURN_CODE                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_CMD_STAT_MGMT                           | MCUMGR_GRP_STAT                                       |
       +------------------------------------------------+-------------------------------------------------------+
       | STAT_MGMT_MAX_NAME_LEN                         | MCUMGR_GRP_STAT_MAX_NAME_LEN                          |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_GRP_ZEPHYR_BASIC                        | MCUMGR_GRP_ZBASIC                                     |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_GRP_BASIC_CMD_STORAGE_ERASE             | MCUMGR_GRP_ZBASIC_STORAGE_ERASE                       |
       +------------------------------------------------+-------------------------------------------------------+
       | MGMT_VERBOSE_ERR_RESPONSE                      | MCUMGR_SMP_VERBOSE_ERR_RESPONSE                       |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_REASSEMBLY                          | MCUMGR_TRANSPORT_REASSEMBLY                           |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_BUF_COUNT                               | MCUMGR_TRANSPORT_NETBUF_COUNT                         |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_BUF_SIZE                                | MCUMGR_TRANSPORT_NETBUF_SIZE                          |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_BUF_USER_DATA_SIZE                      | MCUMGR_TRANSPORT_NETBUF_USER_DATA_SIZE                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT                                  | MCUMGR_TRANSPORT_BT                                   |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_REASSEMBLY_BT                       | MCUMGR_TRANSPORT_BT_REASSEMBLY                        |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_REASSEMBLY_UNIT_TESTS               | MCUMGR_TRANSPORT_REASSEMBLY_UNIT_TESTS                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_AUTHEN                           | MCUMGR_TRANSPORT_BT_AUTHEN                            |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL               | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MIN_INT       | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_MIN_INT        |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MAX_INT       | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_MAX_INT        |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_LATENCY       | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_LATENCY        |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_TIMEOUT       | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_TIMEOUT        |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RESTORE_TIME  | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_RESTORE_TIME   |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RETRY_TIME    | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_RETRY_TIME     |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_DUMMY                               | MCUMGR_TRANSPORT_DUMMY                                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_DUMMY_RX_BUF_SIZE                   | MCUMGR_TRANSPORT_DUMMY_RX_BUF_SIZE                    |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_SHELL                               | MCUMGR_TRANSPORT_SHELL                                |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_SHELL_MTU                           | MCUMGR_TRANSPORT_SHELL_MTU                            |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_SHELL_RX_BUF_COUNT                  | MCUMGR_TRANSPORT_SHELL_RX_BUF_COUNT                   |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UART                                | MCUMGR_TRANSPORT_UART                                 |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UART_ASYNC                          | MCUMGR_TRANSPORT_UART_ASYNC                           |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UART_ASYNC_BUFS                     | MCUMGR_TRANSPORT_UART_ASYNC_BUFS                      |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UART_ASYNC_BUF_SIZE                 | MCUMGR_TRANSPORT_UART_ASYNC_BUF_SIZE                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UART_MTU                            | MCUMGR_TRANSPORT_UART_MTU                             |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP                                 | MCUMGR_TRANSPORT_UDP                                  |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_IPV4                            | MCUMGR_TRANSPORT_UDP_IPV4                             |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_IPV6                            | MCUMGR_TRANSPORT_UDP_IPV6                             |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_PORT                            | MCUMGR_TRANSPORT_UDP_PORT                             |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_STACK_SIZE                      | MCUMGR_TRANSPORT_UDP_STACK_SIZE                       |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_THREAD_PRIO                     | MCUMGR_TRANSPORT_UDP_THREAD_PRIO                      |
       +------------------------------------------------+-------------------------------------------------------+
       | MCUMGR_SMP_UDP_MTU                             | MCUMGR_TRANSPORT_UDP_MTU                              |
       +------------------------------------------------+-------------------------------------------------------+

  * MCUmgr responses where ``rc`` (result code) is 0 (no error) will no longer
    be present in responses and in cases where there is only an ``rc`` result,
    the resultant response will now be an empty CBOR map. The old behaviour can
    be restored by enabling
    :kconfig:option:`CONFIG_MCUMGR_SMP_LEGACY_RC_BEHAVIOUR`.

  * MCUmgr now has log outputting on most errors from the included fs, img,
    os, shell, stat and zephyr_basic group commands. The level of logging can be
    controlled by adjusting: :kconfig:option:`CONFIG_MCUMGR_GRP_FS_LOG_LEVEL`,
    :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_LOG_LEVEL`,
    :kconfig:option:`CONFIG_MCUMGR_GRP_OS_LOG_LEVEL`,
    :kconfig:option:`CONFIG_MCUMGR_GRP_SHELL_LOG_LEVEL`,
    :kconfig:option:`CONFIG_MCUMGR_GRP_STAT_LOG_LEVEL` and
    :kconfig:option:`CONFIG_MCUMGR_GRP_ZBASIC_LOG_LEVEL`.

  * MCUmgr img_mgmt has a new field which is sent in the final packet (if
    :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` is enabled) named ``match``
    which is a boolean and is true if the uploaded data matches the supplied
    hash, or false otherwise.

  * MCUmgr img_mgmt will now skip receiving data if the provided hash already
    matches the hash of the data present (if
    :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` is enabled) and finish the
    upload operation request instantly.

  * MCUmgr img_mgmt structs are now packed, which fixes a fault issue on
    processors that do not support unaligned memory access.

  * If MCUmgr is used with the shell transport and ``printk()`` functionality
    is used, there can be an issue whereby the ``printk()`` calls output during
    a MCUmgr frame receive, this has been fixed by default in zephyr by routing
    ``printk()`` calls to the logging system, For user applications,
    :kconfig:option:`CONFIG_LOG_PRINTK` should be enabled to include this fix.

  * A bug when MCUmgr shell transport is used (issue was observed over USB CDC
    but could also occur with UART) whereby the default shell receive ring
    buffer is insufficient has been fixed by making the default size 256 bytes
    instead of 64 when the shell MCUmgr transport is selected.

  * UpdateHub:

    * The integrity check was reworked to allow use by other libraries. Since
      then UpdateHub uses mbedTLS library as default crypto library.
    * Added a new Storage Abstraction to isolate both flash operations and
      MCUboot internals.
    * The UpdateHub User API was moved as a Zephyr public API and the userspace
      now is available. This added :c:func:`updatehub_confirm` and
      :c:func:`updatehub_reboot` functions.

* LwM2M

  * The ``lwm2m_senml_cbor_*`` files have been regenerated using zcbor 0.6.0.

* POSIX API

  * Harmonized posix type definitions across the minimal libc, newlib and picolibc.

    * Abstract ``pthread_t``, ``pthread_key_t``, ``pthread_cond_t``,
      ``pthread_mutex_t``, as ``uint32_t``.
    * Defined :c:macro:`PTHREAD_KEY_INITIALIZER`, :c:macro:`PTHREAD_COND_INITIALIZER`,
      :c:macro:`PTHREAD_MUTEX_INITIALIZER` to align with POSIX 1003.1.

  * Allowed non-prefixed standard include paths with :kconfig:option:`CONFIG_POSIX_API`.

    * I.e. ``#include <unistd.h>`` instead of ``#include <zephyr/posix/unistd.h>``.
    * Primarily to ease integration with external libraries.
    * Internal Zephyr code should continue to use prefixed header paths.

  * Enabled ``eventfd()``, ``getopt()`` by default with :kconfig:option:`CONFIG_POSIX_API`.
  * Moved / renamed header files to align with POSIX specifications.

    * E.g. move ``fcntl.h``, ``sys/stat.h`` from the minimal libc into the
      ``include/zephyr/posix`` directory. Rename ``posix_sched.h`` to ``sched.h``.
    * Move :c:macro:`O_ACCMODE`, :c:macro:`O_RDONLY`, :c:macro:`O_WRONLY`,
      :c:macro:`O_WRONLY`, to ``fcntl.h``.

  * Added :kconfig:option:`CONFIG_TIMER_CREATE_WAIT`, :kconfig:option:`CONFIG_MAX_PTHREAD_KEY_COUNT`,
    :kconfig:option:`CONFIG_MAX_PTHREAD_COND_COUNT`, :kconfig:option:`CONFIG_MAX_PTHREAD_MUTEX_COUNT`.
  * Defined :c:macro:`SEEK_SET`, :c:macro:`SEEK_CUR`, :c:macro:`SEEK_END`.

* SD Subsystem

  * Added support for eMMC protocol in Zephyr.

    - Speed modes up to HS400 are supported using 1.8v operation.
    - Additional protocol tests have been added to verify eMMC functionality.
    - Disk subsystem tests have been updated to function with eMMC.

  * Card and host combinations that cannot utilize UHS (ultra high speed) mode
    will now use 4 bit bus width when possible. This will greatly improve
    performance for these systems.

* Settings

  * Replaced all :c:func:`k_panic` invocations within settings backend
    initialization with returning / propagating error codes.

* Shell

  * New features:

    * SHELL_AUTOSTART configuration option. When SHELL_AUTOSTART is set to n, the shell is not
      started after boot but can be enabled later from the application code.
    * Added support for setting the help description for each entry in a dictionary.

  * Bugfix:

    * Updated to clear command buffer when leaving bypass mode to prevent undefined behaviour
      on consecutive shell operations.
    * Set RX size default to 256 if shell MCUmgr is enabled.
    * Fixed log message queue size for all backends.

  * Documentation:

    * Added information explaining commands execution.

* Utilities

  * Added the linear range API to map values in a linear range to a range index
    :zephyr_file:`include/zephyr/sys/linear_range.h`.


* Zbus

  * Added the :ref:`zbus` to Zephyr.

    * Channel-centric multi-paradigm (message-passing and publish-subscribe) communication message bus.
    * Virtual Distributed Event Dispatcher.
    * Observers can be listeners (synchronous) and subscribers (asynchronous).
    * One-to-one, one-to-many, and many-to-many communications.
    * Persistent messages distributed by shared-memory approach.
    * Delivery guarantee only for listeners.
    * Uses mutex to control channels access.
    * Added the following samples:

      * :zephyr:code-sample:`zbus-hello-world`
      * :zephyr:code-sample:`zbus-work-queue`
      * :zephyr:code-sample:`zbus-dyn-channel`
      * :zephyr:code-sample:`zbus-uart-bridge`
      * :zephyr:code-sample:`zbus-remote-mock`
      * :zephyr:code-sample:`zbus-runtime-obs-registration`
      * :zephyr:code-sample:`zbus-benchmark`

    * Added zbus channels APIs:

      * :c:func:`zbus_chan_pub`
      * :c:func:`zbus_chan_read`
      * :c:func:`zbus_chan_notify`
      * :c:func:`zbus_chan_claim`
      * :c:func:`zbus_chan_finish`
      * :c:func:`zbus_chan_name`
      * :c:func:`zbus_chan_msg`
      * :c:func:`zbus_chan_const_msg`
      * :c:func:`zbus_chan_msg_size`
      * :c:func:`zbus_chan_user_data`
      * :c:func:`zbus_chan_add_obs`
      * :c:func:`zbus_chan_rm_obs`
      * :c:func:`zbus_runtime_obs_pool`
      * :c:func:`zbus_obs_set_enable`
      * :c:func:`zbus_obs_name`
      * :c:func:`zbus_sub_wait`
      * :c:func:`zbus_iterate_over_channels`
      * :c:func:`zbus_iterate_over_observers`

    * Added the related configuration options:

      * :kconfig:option:`CONFIG_ZBUS_CHANNEL_NAME`
      * :kconfig:option:`CONFIG_ZBUS_OBSERVER_NAME`
      * :kconfig:option:`CONFIG_ZBUS_STRUCTS_ITERABLE_ACCESS`
      * :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_POOL_SIZE`

HALs
****

* Atmel

  * sam0: Added support for SAMC20/21.
  * sam4l: Added ``US_MR_CHRL_{n}_BIT`` Register Aliases for USART Driver.

* GigaDevice

  * Added support for gd32l23x.
  * Added support for gd32a50x.

* Nordic

  * Updated nrfx to version 2.10.0.

* STM32

  * stm32cube: updated stm32h7 to cube version V1.11.0.
  * stm32cube: updated stm32l5 to cube version V1.5.0.
  * stm32cube: updated stm32wl to cube version V1.3.0.

* Espressif

  * Added Ethernet driver support
  * Added light-sleep and deep-sleep support over PM interface
  * Added ADC and DAC driver support
  * Added GDMA driver support

Storage
*******

* Flash Map API drops ``fa_device_id`` from :c:struct:`flash_area`, as it
  is no longer needed by MCUboot, and has not been populated for a long
  time now.

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

* Updated to TF-M 1.7.0 (and MbedTLS 3.2.1).
* Initial attestation service has been disabled by default due to license
  issues with the QCBOR dependency. To enable it, set the path for QCBOR via
  ``CONFIG_TFM_QCBOR_PATH`` or set the path to ``DOWNLOAD``.
* Firmware update sample removed pending update to 1.0 FWU service.
* psa_crypto sample removed pending resolution of PSA API conflicts w/MbedTLS.

zcbor
*****

Upgraded zcbor to 0.6.0. Among other things, this brings in a few convenient
changes for Zephyr:

* In the zcbor codebase, the ``ARRAY_SIZE`` macro has been renamed to
  ``ZCBOR_ARRAY_SIZE`` to not collide with Zephyr's :c:macro:`ARRAY_SIZE` macro.
* The zcbor codebase now better supports being used in C++ code.

The entire release notes can be found at
https://github.com/zephyrproject-rtos/zcbor/blob/0.6.0/RELEASE_NOTES.md

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

* Upgraded to Doxygen 1.9.6.
* It is now possible to link to Kconfig search results.

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

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

- :github:`33747` - gptp does not work well on NXP rt series platform
- :github:`37193` - mcumgr: Probably incorrect error handling with udp backend
- :github:`37731` - Bluetooth: hci samples: Unable to allocate command buffer
- :github:`40023` - Build fails for ``native_posix`` board when using C++ <atomic> header
- :github:`42030` - can: "bosch,m-can-base": Warning "missing or empty reg/ranges property"
- :github:`43099` - CMake: ARCH roots issue
- :github:`43249` - MBEDTLS_ECP_C not build when MBEDTLS_USE_PSA_CRYPTO
- :github:`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:`44339` - Bluetooth:controller: Implement support for Advanced Scheduling in refactored LLCP
- :github:`44948` - cmsis_dsp: transform: error during building cf64.fpu and rf64.fpu for mps2_an521_remote
- :github:`45241` - (Probably) unnecessary branches in several modules
- :github:`45323` - Bluetooth: controller: llcp: Implement handling of delayed notifications in refactored LLCP
- :github:`45814` - Armclang build fails due to missing source file
- :github:`46121` - Bluetooth: Controller: hci: Wrong periodic advertising report data status
- :github:`46401` - ARM64: Relax 4K MMU mapping alignment
- :github:`46846` - lib: libc: newlib: strerror_r non-functional
- :github:`47120` - shell uart: busy wait for DTR in ISR
- :github:`47732` - Flash map does not fare well with MCU who do bank swaps
- :github:`47908` - tests/kernel/mem_protect/stack_random works unreliably and sporadically fails
- :github:`48094` - pre-commit scripts fail when there is a space in zephyr_base
- :github:`48102` - JSON parses uses recursion (breaks rule 17.2)
- :github:`48287` - malloc_prepare ASSERT happens when enabling newlib libc with demand paging
- :github:`48608` - boards: mps2_an385: Unstable system timer
- :github:`48841` - Bluetooth: df: Assert in lower link layer when requesting CTE from peer periodically with 7.5ms connection interval
- :github:`48992` - qemu_leon3: tests/posix/common/portability.posix.common fails
- :github:`49213` - logging.add.log_user test fails when compiled with GCC 12
- :github:`49390` - shell_rtt thread can starve other threads of the same priority
- :github:`49484` - CONFIG_BOOTLOADER_SRAM_SIZE should not be defined by default
- :github:`49492` - kernel.poll test fails on qemu_arc_hs6x when compiled with GCC 12
- :github:`49494` - testing.ztest.ztress test fails on qemu_cortex_r5 when compiled with GCC 12
- :github:`49614` - acrn_ehl_crb: The testcase tests/kernel/sched/schedule_api failed to run.
- :github:`49816` - ISOTP receive fails for multiple binds with same CAN ID but different extended ID
- :github:`49889` - ctf trace: unknown event id when parsing samples/tracing result on reel board
- :github:`50084` - drivers: nrf_802154: nrf_802154_trx.c - assertion fault when enabling Segger SystemView tracing
- :github:`50095` - ARC revision Kconfigs wrongly mixed with board name
- :github:`50196` - LSM6DSO interrupt handler not being called
- :github:`50501` - STM32 SPI does not work properly with async + interrupts
- :github:`50506` - nxp,mcux-usbd devicetree binding issues
- :github:`50546` - drivers: can: rcar: likely inconsistent behavior when calling can_stop() with pending transmissions
- :github:`50598` - UDP over IPSP not working on nRF52840
- :github:`50652` - RAM Loading on i.MXRT1160_evk
- :github:`50766` - Disable cross-compiling when using host toolchain
- :github:`50777` - LE Audio: Receiver start ready command shall only be sent by the receiver
- :github:`50875` - net: ip: race in access to writable net_if attributes
- :github:`50941` - sample.logger.syst.catalog.deferred_cpp fails on qemu_cortex_m0
- :github:`51024` - aarch32 excn vector not pinned in mmu causing newlib heap overlap
- :github:`51127` - UART HW DMA ( UART Communication based on HW DMA ) - Buffer Overflow test in STM32H743 Controller
- :github:`51133` - Bluetooth: audio: Sink ASE does not go to IDLE state
- :github:`51250` - ESP32-C3 pin glitches during start-up
- :github:`51317` - Confusing license references in nios2f-zephyr
- :github:`51342` - Bluetooth ISO extra ``stream_sent`` callback after ``seq_num`` 16-bit rollover
- :github:`51420` - tests: subsys: logging: log_links: logging.log_links fails
- :github:`51422` - nsim_em: tests/subsys/logging/log_link_order run failed on nsim_em
- :github:`51449` - device: device_get_binding is broken for nodes with the same name
- :github:`51604` - doc: is the documentation GDPR compliant since it uses Google Analytics without prompting the user about tracking?
- :github:`51637` - shell: bypass shell_fprintf ASSERT fail
- :github:`51728` - soc: xtensa: esp32_net: Remove binary blobs from source tree
- :github:`51774` - thread safety of adv_new in Bluetooth subsys
- :github:`51814` - ARC irq_offload doesn't honor thread switches
- :github:`51820` - Longer strings aren't logged
- :github:`51825` - west: runners: jlink: JLink.exe name collision
- :github:`51977` - newlib integration: _unlink isn't mapped to unlink
- :github:`52055` - Bluetooth: Controller: Broadcast scheduling issues
- :github:`52269` - UART documentation for uart_irq_tx_enable/disable incomplete
- :github:`52271` - west sign: imgtool: zephyr.signed.hex and zephyr.signed.bin do not have the same contents
- :github:`52362` - nrf_qspi_nor driver crash if power management is enabled
- :github:`52395` - Cannot build applications with dts having (unused) external flash partition and disabling those drivers
- :github:`52491` - Value of EVENT_OVERHEAD_START_US is set to low
- :github:`52494` - SPI NOR DPD comment is misleading/wrong
- :github:`52510` - twister: truncated handler.log reports test as "failed"
- :github:`52513` - sample.modules.chre fails on qemu_leon3
- :github:`52575` - Kconfig: excessive ``select`` usage
- :github:`52585` - PDM event handler shouldn't stop driver on allocation failure
- :github:`52589` - Add support for different SDHC high-speed modes (currently defaults to SDR25)
- :github:`52605` - esp32-usb-serial tx-complete interrupt not working in interrupt mode on esp32c3
- :github:`52623` - qemu_x86: thousands of timer interrupts per second
- :github:`52667` - nrf_rtc_timer: Booting application with zephyr < 3.0.0 from mcuboot with zephyr >= 3.0.0
- :github:`52700` - posix: getopt: implement standards-compliant reset
- :github:`52702` - drivers: wifi: esp_at: Some issues on Passive Receive mode
- :github:`52705` - RNDIS fails to enumerate on Raspberry Pi Pico
- :github:`52741` - bl5340_dvk_cpuapp has wrong button for mcuboot button
- :github:`52764` - boards: esp32c3_devkitm: unable to read memory-mapped flash memory
- :github:`52792` - ATWINC1500 : (wifi_winc1500_nm_bsp.c : nm_bsp_reset) The reset function is not logical and more
- :github:`52825` - Overflow in settime posix function
- :github:`52830` - Annoying Slirp Message console output from qemu_x86 board target
- :github:`52868` - ESP32 Wifi driver returns EIO (-5) if connecting without a sleep sometime before calling
- :github:`52869` - ESP32 Counter overflow, with no API to reset it
- :github:`52885` - modem: gsm_ppp: CONFIG_GSM_MUX: Unable to reactivate modem after executing gsm_ppp_stop()
- :github:`52886` - tests: subsys: fs: littlefs: filesystem.littlefs.default and filesystem.littlefs.custom fails
- :github:`52887` - Bluetooth: LL assert with chained adv packets
- :github:`52924` - ESP32 get the build message "IRAM0 segment data does not fit."
- :github:`52941` - Zephyr assumes ARM M7 core has a cache
- :github:`52954` - check_zephyr_package() only checks the first zephyr package rather than all the considered ones.
- :github:`52998` - tests: drivers: can: Build failure with sysroot path not quoted on Windows
- :github:`53000` - Delaying logging via CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS doesn't work if another backend is disabled
- :github:`53006` - Hawbkit with b_l4s5i_iot01a - wifi_eswifi: Cannot allocate rx packet
- :github:`53008` - Invalid ISO interval configuration
- :github:`53088` - Unable to chage initialization priority of logging subsys
- :github:`53123` - Cannot run a unit test on Mac OSX with M1 Chip
- :github:`53124` - cmake: incorrect argument passing and dereference in zephyr_check_compiler_flag() and zephyr_check_compiler_flag_hardcoded()
- :github:`53137` - Bluetooth: Controller: HCI 0x45 error after 3rd AD fragment with data > 248 bytes
- :github:`53148` - Bluetooth: Controller: BT_HCI_OP_LE_BIG_TERMINATE_SYNC on syncing BIG sync returns invalid BIG handle
- :github:`53172` - SHTCx driver wrong negative temperature values
- :github:`53173` - HCI-UART: unable to preform a DFU - GATT CONN timeout
- :github:`53198` - Bluetooth: Restoring security level fails and missing some notifications
- :github:`53265` - Bluetooth: Controller: ISO interleaved broadcast not working
- :github:`53319` - USB CDC ACM UART driver's interrupt-driven API hangs when no host is connected
- :github:`53334` - Bluetooth: Peripheral disconnected with BT_HCI_ERR_LL_RESP_TIMEOUT reason and SMP timeout
- :github:`53343` - subsys: logging: use of timestamping during early boot may crash MMU-based systems
- :github:`53348` - Bluetooth: Restoring connection to peripheral issue
- :github:`53375` - net: lwm2m: write method when floating point
- :github:`53475` - The ATT_MTU value for EATT should be set as the minimum MTU of ATT Client and ATT Server
- :github:`53505` - Some device tree integers may be signed or unsigned depending on their value
- :github:`53522` - k_busy_wait function hangs on when CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE is set with CONFIG_PM.
- :github:`53537` - TFM-M doesn't generate tfm_ns_signed.bin image for FOTA firmware upgrade
- :github:`53544` - Cannot see both bootloader and application RTT output
- :github:`53546` - zephyr kernel Kconfig USE_STDC_LSM6DS3TR and hal_st CMakeLists.txt lsm6ds3tr-c variable name mismatched (hyphen sign special case)
- :github:`53552` - LE Audio: Device executes receiver start ready before the CIS is connected
- :github:`53555` - ESP32-C3 Is RV32IMA, Not RV32IMC?
- :github:`53570` - SDHC SPI driver should issue CMD12 after receiving data error token
- :github:`53587` - Issue with Auto-IP and Multicast/socket connection
- :github:`53605` - tests: posix: common: portability.posix.common fails - posix_apis.test_clock_gettime_rollover
- :github:`53613` - tests: drivers: uart: uart_mix_fifo_poll: tests ``drivers.uart.uart_mix_poll_async_api_*`` fail
- :github:`53643` - Invalid warning when BLE advertising times out
- :github:`53674` - net: lwm2m: senml cbor formatter relying on implementation detail / inconsistency of lwm2m_path_to_string
- :github:`53680` - HawkBit Metadata Error
- :github:`53728` - Sensor API documentation: no mention of blocking behaviour
- :github:`53729` - Can not build for ESP32 sample program - Zephyr using CMake build
- :github:`53767` - `@kconfig` is not allowed in headline
- :github:`53780` - sysbuild with custom board compilation failed to find the board
- :github:`53790` - Flash Init fails when CONFIG_SPI_NOR_IDLE_IN_DPD=y
- :github:`53800` - Raspberry Pi Pico - ssd1306 display attempts to initialize before i2c bus is ready for communication
- :github:`53801` - k_busy_wait adds 1us delay unnecessarily
- :github:`53823` - Bluetooth init failed on nrf5340_audio_dk_nrf5340_cpuapp
- :github:`53855` - mimxrt1050_evk invalid writes to flash
- :github:`53858` - Response on the shell missing with fast queries
- :github:`53867` - kconfig: Linked code into external SEMC-controlled memory without boot header
- :github:`53871` - Bluetooth: IPSP Sample Crash on nrf52840dk_nrf52840
- :github:`53873` - Syscall parser creates syscall macro for commented/ifdefed out syscall prototype
- :github:`53917` - clang-format key incompatible with IntelliJ IDEs
- :github:`53933` - tests: lib: spsc_pbuf: lib.spsc_pbuf... hangs
- :github:`53937` - usb: stm32g0: sometimes get write error during CDC ACM enumeration when using USB hub
- :github:`53939` - USB C PD stack no callback for MSG_NOT_SUPPORTED_RECEIVED policy notify
- :github:`53964` - gpio_emul: ``gpio_*`` functions not callable within an ISR
- :github:`53980` - Bluetooth: hci: spi: race condition leading to deadlock
- :github:`53993` - platform: Raspberry Pi Pico area: USB Default config should be bus powered device for the Raspberry Pi Pico
- :github:`53996` - bt_conn_foreach() includes invalid connection while advertising
- :github:`54014` - usb: using Bluetooth HCI class in composite device leads to conflicts
- :github:`54037` - Unciast_audio_client sample application cannot work with servers with only sinks.
- :github:`54047` - Bluetooth: Host: Invalid handling of Service Changed indication if GATT Service is registered after Bluetooth initialization and before settings load
- :github:`54064` - doc: mgmt: mcumgr: img_mgmt: Documentation specifies that hash in state of images is a required field
- :github:`54076` - logging fails to build with LOG_ALWAYS_RUNTIME=y
- :github:`54085` - USB MSC Sample does not work for native_posix over USBIP
- :github:`54092` - ZCBOR code generator generates names not compatible with C++
- :github:`54101` - bluetooth: shell: Lots of checks of type (unsigned < 0) which is bogus
- :github:`54121` - Intel CAVS: tests/subsys/zbus/user_data fails
- :github:`54122` - Intel CAVS: tests/subsys/dsp/basicmath fails (timeout)
- :github:`54162` - Mass-Storage-Sample - USB HS support for the stm32f723e_disco board
- :github:`54179` - DeviceTree compile failures do not stop build
- :github:`54198` - reel board: Mesh badge demo fails to send BT Mesh message
- :github:`54199` - ENC28J60: dns resolve fails after few minutes uptime
- :github:`54200` - bq274xx incorrect conversions
- :github:`54211` - tests: kernel: timer: timer_behavior: kernel.timer.timer fails
- :github:`54226` - Code coverage collection is broken
- :github:`54240` - twister: --runtime-artifact-cleanup has no effect
- :github:`54273` - ci: Scan code workflow does not report a violation for unknown LicenseRef
- :github:`54275` - net: socket: tls: cannot send when using blocking socket
- :github:`54288` - modem: hl7800: power off draws excessive current
- :github:`54289` - Twister jobserver support eliminates parallel build for me
- :github:`54301` - esp32: Console doesn't work with power management enabled
- :github:`54317` - kernel: events: SMP race condition and one enhancement
- :github:`54330` - West build command execution takes more time or fails sometimes
- :github:`54336` - picolibc is incompatible with xcc / xcc-clang toolchains
- :github:`54364` - CANopen SYNC message is not received
- :github:`54373` - Mcuboot swap type is ``test`` when update fails
- :github:`54377` - mec172xevb: benchmark.kernel.core (and adc_api/drivers.adc) failing
- :github:`54407` - Bluetooth: Controller: ISO Central with continuous scanning asserts
- :github:`54411` - mgmt: mcumgr: Shell transport can lock shell up until device is rebooted
- :github:`54435` - mec172xevb: sample.drivers.sample.drivers.peci failing
- :github:`54439` - Missing documentation of lwm2m_rd_client_resume and lwm2m_rd_client_pause
- :github:`54444` - samples/modules/chre/sample.modules.chre should not attempt to build on toolchains w/o newlib
- :github:`54459` - hawkbit: wrong header size used while reading the version of the app
- :github:`54460` - Build system should skip ``zephyr/drivers/ethernet`` module if TAP & SLIP already provides a network driver in ``zephyr/drivers/net/slip.c``
- :github:`54498` - net: openthread: echo server do not work in userspace
- :github:`54500` - jwt: memory allocation problem after multiple jwt_sign calls
- :github:`54504` - LwM2M: Connection resume does not work after network error
- :github:`54506` - net: ieee802154_6lo: wrong fragmentation of packets with specific payload sizes
- :github:`54531` - Bluetooth: Controller: le_ext_create_connection fails with initiating_PHYs == 0x03
- :github:`54532` - Tests: Bluetooth: tester: BTP communication is not fully reliable on NRF52 board using UART
- :github:`54538` - LE Audio: BAP Unicast Client Idle/CIS disconnect race condition
- :github:`54539` - LE Audio: Unicast client should only disconnect CIS if both ASEs are not in streaming state
- :github:`54542` - Bluetooth pending tx packets assert on disable
- :github:`54554` - arch.arm.swap.tz fails to build for v2m_musca_b1_ns
- :github:`54576` - Errors during IPv4 defragmenting
- :github:`54577` - IPv6 defragmenting fails when segments do not overlap
- :github:`54581` - STM32H7 adc sequence init function unstable logic return
- :github:`54599` - net stats: many received TCP packets count as "dropped"
- :github:`54609` - driver: led: kconfig symbols mix up
- :github:`54610` - samples: kernel: metairq_dispatch: sample.kernel.metairq_dispatch hangs
- :github:`54630` - memcpy crashes with NEW_LIBC on stm32 cortex m7 with debugger attached
- :github:`54668` - shell: "log backend" command causes shell to lock up
- :github:`54670` - stm32: memcpy crashes with NEWLIBC
- :github:`54674` - modem: hl7800: DNS resolver does not start for IPv6 only
- :github:`54683` - Missing input validation in gen_driver_kconfig_dts.py
- :github:`54695` - usb mass storage on mimxrt595_evk_cm33 mount very slow
- :github:`54705` - CDC USB shell receives garbage when application starts
- :github:`54713` - LVGL Module File System Memory Leaks
- :github:`54717` - --generate-hardware-map produces TypeError: expected string or bytes-like object on Windows
- :github:`54719` - STM32 clock frequency calculation error
- :github:`54720` - QEMU bug with branch delay slots on ARC
- :github:`54726` - LittleFS test only works for specific device parameters
- :github:`54731` - USB DFU sample does not reliably upload image on RT1050
- :github:`54737` - Wrong order of member initialization for macro Z_DEVICE_INIT
- :github:`54739` - C++ Compatibility for DEVICE_DT_INST_DEFINE
- :github:`54746` - ESP32 SPI word size is not respected
- :github:`54754` - outdated version of rpi_pico hal configures USB PLL incorrectly
- :github:`54755` - small timer periods take twice as much time as they should
- :github:`54768` - nrf9160dk_nrf52840: flow control pins crossed
- :github:`54769` - Error when flashing to LPCXpresso55S06 EVK.
- :github:`54770` - Bluetooth: GATT: CCC and CF values written by privacy-disabled peer before bonding may be lost
- :github:`54773` - Bluetooth: GATT: Possible race conditions related to GATT database hash calculation after settings load
- :github:`54779` - file write gives -5 after file size reaches cache size
- :github:`54783` - stm32: NULL dereference in net_eth_carrier_on
- :github:`54785` - .data and .bss relocation to DTCM & CCM is broken with SDK 0.15+
- :github:`54798` - net: ipv4: IP packets get dropped in Zephyr when an application is receiving high rate data
- :github:`54805` - when invoke dma_stm32_disable_stream failed in interrupt callback, it will endless loop
- :github:`54813` - Bluetooth: host: Implicit sc_indicate declaration when Service Changed is disabled
- :github:`54824` - BT: Mesh: Utilizes some not initialized variables
- :github:`54826` - Clang/llvm build is broken: Error: initializer element is not a compile-time constant
- :github:`54833` - ESPXX failing in gpio tests
- :github:`54841` - Drivers: I2S: STM32: Mishandling of Master Clock output (MCK)
- :github:`54844` - RAK5010 board has wrong LIS3DH INT pin configured
- :github:`54846` - ESP32C3 SPI DMA host ID
- :github:`54855` - ESP32: Compilation errors after migrating to zephyr 3.2.0
- :github:`54856` - nRF52840 nRF52833 Bluetooth: Timeout in ``net_config_init_by_iface`` but interface is up
- :github:`54859` - LE Audio: BT_AUDIO_UNICAST_CLIENT_GROUP_STREAM_COUNT invalid descsi
- :github:`54861` - up_squared: CHRE sample output mangling fails regex verification

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

* :github:`54873` - doc: Remove Google Analytics tracking code from generated documentation.
* :github:`54858` - espressif blobs does not follow zephyr requirements
* :github:`54872` - west flash --elf-file is not flashing using .elf file, but using zephyr.hex to flash
* :github:`54813` - Bluetooth: host: Implicit sc_indicate declaration when Service Changed is disabled
* :github:`54804` - Warning (simple_bus_reg): /soc/can: missing or empty reg/ranges property
* :github:`54786` - doc: Version selector should link to latest LTS version instead of 2.7.0
* :github:`54782` - nrf_rtc_timer may not properly handle a timeout that is set in specific conditions
* :github:`54770` - Bluetooth: GATT: CCC and CF values written by privacy-disabled peer before bonding may be lost
* :github:`54763` - doc: Copyright notice should be updated to 2015-2023
* :github:`54760` - net_lwm2m_engine: fcntl(F_GETFL) failed (-22) on es-wifi
* :github:`54730` - intel_adsp_ace15_mtpm: cpp.main.minimal test failing
* :github:`54718` - The rf2xx driver uses a wrong bit mask on TRAC_STATUS
* :github:`54710` - Sending NODE_RX_TYPE_CIS_ESTABLISHED messes up LLCP
* :github:`54703` - boards: thingy53: Inconsistent method of setting USB related log level
* :github:`54702` - boards: thingy53: USB remote wakeup is not correctly disabled
* :github:`54686` - RP2040: Cleanup incorrect comment and condition from the USB driver
* :github:`54685` - drivers: serial: rp2040: fix rpi pico address mapping
* :github:`54671` - Bluetooth: spurious error when using hci_rpmsg
* :github:`54666` - LE Audio: EALREADY error of ase_stream_qos() not mapped
* :github:`54659` - boards: arm: nrf52840dongle_nrf52840: Defaults to UART which is not connected (and mcuboot build fails)
* :github:`54654` - LE Audio: Kconfig typo in ``pacs.c``
* :github:`54642` - Bluetooth: Controller: Assertion on disconnecting CIS and assertion on synchronizing to first encrypted BIS
* :github:`54614` - Cannot flash b_l4s5i_iot01a samples/hello_world
* :github:`54613` - Bluetooth: Unable to enable PAST as advertiser without periodic sync support
* :github:`54605` - native_posix_64 platform broken in Twister
* :github:`54597` - SRAM2 wrong on certain stm32h7 SOC (system crashes during startup)
* :github:`54580` - samples/subsys/task_wdt fails with timeout on s32z270dc2_r52 boards
* :github:`54575` - Automatic termination with return code from a native_posix main function
* :github:`54574` - USB RNDIS Reception and Descriptor Issue(s)
* :github:`54573` - gpio_hogs test uses an incorrect GPIO spec handle
* :github:`54572` - QEMU networking breakage (Updating nrf-sdk 2.1->2.2 , implies zephyr 3.1 -> 3.2)
* :github:`54569` - MMC subsys shares sdmmc kconfigs
* :github:`54567` - Assertion in z_add_timeout() fails in drivers.uart.uart_mix_poll_async_api test
* :github:`54563` - Variable uninitialised in flash_stm32_page_layout
* :github:`54558` - LPTIM Kconfig-related build failures for nucleo_g431rb
* :github:`54557` - sample.drivers.flash.shell fails to build for adafruit_kb2040
* :github:`54556` - sample.display.lvgl.gui fails to build for stm32f429i_disc1
* :github:`54545` - boards: rpi_pico: Bad MPU settings
* :github:`54544` - Bluetooth: controller: HCI/CCO/BI-45-C setHostFeatureBit failing
* :github:`54540` - psa_crypto variants of drivers/entropy/api and crypto/rand32 tests fail to build for nrf9160dk_nrf9160_ns and nrf5340dk_nrf5340_cpuapp_ns
* :github:`54537` - logging.add.async build fails on mtpm with xcc-clang
* :github:`54534` - PSoC6/Cat1 add binary blob for Cortex-M0+ core
* :github:`54533` - tests/drivers/can/timing fails on nucleo_f746zg
* :github:`54529` - Bluetooth: shell: Missing help messages and parameters
* :github:`54528` - log switch_format, mipi_syst tests failing on intel_adsp_ace15_mtpm
* :github:`54522` - Can we embrace GNU Build IDs?
* :github:`54516` - twister: Quarantine verify works incorrectly with integration mode
* :github:`54509` - Zephyr does not configure TF-M correctly for Hard-Float
* :github:`54507` - CONFIG_PM=y results to hard fault system for STM32L083
* :github:`54499` - stm32u5 lptimer driver init must wait after interrupt reg
* :github:`54493` - samples/drivers/counter/alarm/ fails on nucleo_f746zg
* :github:`54492` - west: twister return code ignored by west
* :github:`54484` - Intel CAVS25: tests/boards/intel_adsp/ssp/ fails
* :github:`54472` - How to enable a node in main.
* :github:`54469` - nsim_sem and nsim_em7d_v22 failed in zdsp.basicmath test
* :github:`54462` - usb_dc_rpi_pico driver enables some interrupts it doesn't handle
* :github:`54461` - SAM spi bus inoperable when interrupted on fast path
* :github:`54457` - DHCPv4 starts even when interface is not operationally up
* :github:`54455` - Many tests have wrong component and are wrongly categorized
* :github:`54454` - Twister summary in some cases provides an irrelevant example
* :github:`54450` - nuvoton_pfm_m487 failed to build due to missing M48x-pinctrl.h
* :github:`54440` - tests/net/lib/lwm2m/lwm2m_registry/subsys.net.lib.lwm2m.lwm2m_registry fails to build w/toolchains that don't support newlib
* :github:`54438` - question: why lwm2m_rd_client_stop might block
* :github:`54431` - adafruit kb2040 board configuration is invalid and lack flash controller
* :github:`54428` - esp32 invalid flash dependencies
* :github:`54427` - stm32 uart driver ``LOG_`` msg crashes when entering sleep mode
* :github:`54422` - modules: openthread: multiple definition in openthread config
* :github:`54417` - Intel CAVS18: tests/subsys/dsp/basicmath fails
* :github:`54414` - stm32u5 dma driver does not support repeated start-stop
* :github:`54412` - [hci_uart] nrf52840 & BlueZ 5.55 - start / stop scanning breaks
* :github:`54410` - [BUG] TLB driver fails to unmap L2 HPSRAM region when assertions are enabled
* :github:`54409` - ETH MAC config for STM32H7X and STM32_HAL_API_V2 too late and fails
* :github:`54405` - Nominate @Vge0rge as contributor
* :github:`54401` - Uninitialized has_param struct sometimes causes BSIM "has.sh" test to fail
* :github:`54399` - Intel CAVS18: tests/subsys/zbus/user_data/user_data.channel_user_data FAILED
* :github:`54397` - Test posix_header fails on some STM32 Nucleo boards
* :github:`54395` - mgmt: mcumgr: img_grp: Upload inspect fails when using swap using scratch
* :github:`54393` - Bluetooth: Controller: Starting a second BIG causes them to overlap and have twice the interval
* :github:`54387` - soc: arm: st_stm32: Incorrect SRAM devicetree definition for the STM32L471xx
* :github:`54384` - Removal of old runner options caused downstream breakage
* :github:`54378` - Net pkt PPP dependency bug
* :github:`54374` - ARC: west runner: mdb: incorrect handling of unsupported jtag adapters
* :github:`54372` - ARC: west runner: mdb: unexpected empty argument pass to MDB executable
* :github:`54366` - tests: pin_get_config failed on it8xxx2_evb, again
* :github:`54361` - Incorrect network stats for Neighbour Discovery packets
* :github:`54360` - enable HTTPS server on Zephyr RTOS
* :github:`54356` - Bluetooth: Scanner consumption while scanning
* :github:`54351` - Tests: bluetooth: failing unittests
* :github:`54347` - zephyr/posix/fcntl.h header works differently on native_posix platform
* :github:`54344` - Bluetooth: Controller: Central ACL connections overlap Broadcast ISO BIG event
* :github:`54342` - Bluetooth: Controller: Connected ISO Central causes Peripheral to drop ISO data PDUs
* :github:`54341` - Bluetooth: Controller: Direction finding samples do not reconnect after disconnection
* :github:`54335` - tests/kernel/fatal/no-multithreading/kernel.no-mt.cpu_exception failing on qemu_cortex_m3
* :github:`54334` - Need support to define partitions for usage with mcuboot
* :github:`54332` - LwM2M engine is does not go into non-block mode anymore in native_posix target
* :github:`54327` - intel_adsp: ace: various multicore bugs, timeouts
* :github:`54321` - ARC: unusable console after west flash or west debug with mdb runners
* :github:`54318` - boards: nucleo_g474re: openocd runner is not stable enough for intensive testing
* :github:`54316` - RTT is not working correctly on STM32U5 series
* :github:`54315` - Problem seen with touch screen on RT1170 when running the LVGL sample
* :github:`54310` - Using NOCOPY code relocation generates a warning flag
* :github:`54287` - modem: hl7800: PSM hibernate draws excessive current
* :github:`54274` - newlib: Document CONFIG_NEWLIB_LIBC_NANO default change
* :github:`54258` - boards: arm: twr_ke18f: LPTMR always enabled, resulting in low system timer resolution
* :github:`54254` - tests: canbus: isotp: conformance: test fails with CONFIG_SYS_CLOCK_TICKS_PER_SEC=100
* :github:`54253` - v3.3.0-rc1: stm32: IPv6 neighbour solicitation packets are not received without CONFIG_ETH_STM32_MULTICAST_FILTER
* :github:`54247` - tests: net: tcp: net.tcp.simple fails
* :github:`54246` - Sample:subsys/ipc/rpmsg_server:The two cores cannot communicate in nRF5340
* :github:`54241` - The cy8c95xx I2C GPIO expander support was broken in #47841
* :github:`54236` - b_u585i_iot02a_ns: Can't build TFM enabled samples (TF-M 1.7.0)
* :github:`54230` - STM32H7: Kernel crash with BCM4=0
* :github:`54225` - Intel CAVS: tests/lib/c_lib/ fails
* :github:`54224` - Issues with picolibc on xtensa platforms
* :github:`54223` - Intel CAVS: tests/kernel/common/kernel.common.picolibc fails
* :github:`54214` - Display framebuffer allocation
* :github:`54210` - tests: drivers: udc drivers.udc fails
* :github:`54209` - USB C PD dead battery support
* :github:`54208` - Various RISC-V FPU context switching issues
* :github:`54205` - Regression: RiscV FPU regs not saved in multithreaded applications
* :github:`54202` - decawave_dwm1001_dev: i2c broken due to pinctrl_nrf fix
* :github:`54190` - RP2040 cannot be compiled with C11 enabled
* :github:`54173` - Bluetooth: GATT: Change awareness of bonded GATT Client is not maintained on reconnection after reboot
* :github:`54172` - Bluetooth: GATT: Written value of gatt_cf_cfg data may be dropped on power down
* :github:`54148` - qemu_x86_tiny places picolibc text outside of pinned.text
* :github:`54140` - BUS FAULT when running nmap towards echo_async sample
* :github:`54139` - Bluetooth: Audio: race hazard bt_audio_discover() callback vs unicast_client_ase_cp_discover()
* :github:`54138` - Buetooth: shell: `bt adv-data` isn't working properly
* :github:`54136` - Socket error after deregistration causes RD client state machine to re-register
* :github:`54123` - Intel CAVS 25: tests/boards/intel_adsp/ssp fails
* :github:`54117` - West flash fails on upload to Nucleo F303K8
* :github:`54104` - Bluetooth: Host: Bonding information distribution in the non-bondable mode
* :github:`54087` - tests:igmp:frdm_k64f: igmp test fails
* :github:`54086` - test:rio:frdm_k64f: rio user_space test fails with zephyr-v3.2.0-3842-g7ffc20082023
* :github:`54078` - No activity on can_tx when running the ISO-TP sample
* :github:`54072` - Bluetooth: Host: Periodic scanner does not differentiate between partial and incomplete data
* :github:`54065` - How To Change C++ Version Compilation Option For Freestanding Application?
* :github:`54053` - CI:frdm_k64f: kernel.common.stack_protection test failure
* :github:`54034` - QSPI: Unable to build the project when introduced DMA into external flash interfacing
* :github:`54017` - Modules: TF-M: Resolve QCBOR issues with TF-M 1.7.0
* :github:`54005` - esp32 Severe crash using modules with embedded PSRAM (eg esp32-wroom-32E-n8r2)
* :github:`54002` - mgmt: mcumgr: bluetooth transport: Inability to use refactored transport as a library in some circumstances
* :github:`53995` - drivers: ethernet: stm32: Enable ethernet statistics in the driver
* :github:`53994` - net: ethernet: Multicast receive packets statistics are not getting updated
* :github:`53991` - LE Audio: samples/bluetooth/broadcast_audio_sink configure error
* :github:`53989` - STM32 usb networking stack threading issue
* :github:`53967` - net: http client: HTTP timeout can lead to deadlock of global system queue
* :github:`53954` - tests: lib: ringbuffer: libraries.ring_buffer hangs
* :github:`53952` - USB C PD sink sample stops working when connected to a non-PD source
* :github:`53942` - Websocket: No close message on websocket close
* :github:`53936` - Enabling CONFIG_TRACING and CONFIG_EVENTS causes undefined reference error
* :github:`53935` - stm32 iwdt wdt_install_timeout not working properly
* :github:`53926` - Bluetooth Mesh stack question
* :github:`53916` - Multichannel PWM for STM32U575
* :github:`53913` - net: ip: igmp: IGMP doesn't get initialised because the iface->config.ip.ipv4 pointer is not initialised
* :github:`53911` - Info request: SMP Hash
* :github:`53900` - led_set_brightness() is not setting brightness after led_blink() for STM32U575
* :github:`53885` - Ethernet TCP Client Issue description with iperf/zperf
* :github:`53876` - The handle of att indication violates the spec
* :github:`53862` - Switching from USB to UART
* :github:`53859` - RFC: Board porting guide: Do not assume OS or default ports for board files
* :github:`53808` - Improve PLLI2S VCO precision
* :github:`53805` - peripheral_dis compilation reports RAM overflow for BBC microbit
* :github:`53799` - Info request: SMP hash definition
* :github:`53786` - BLE:DF: slot_plus_us is not set properly
* :github:`53782` - nrf5340dk: missing i2c bias pull up
* :github:`53781` - Allow resetting STM32 peripherals through RCC peripheral reset register
* :github:`53777` - mgmt: mcumgr: Change transport selects to depends on
* :github:`53773` - drivers: ethernet: stm32: Completion of enabling the multicast hash filter
* :github:`53756` - esp32 - Wrong value for the default cpu freq -> crash on assert
* :github:`53753` - [DOC] Mismatch of driver sample overview
* :github:`53744` - ztest: assert() functions does not always retuns
* :github:`53723` - device tree macro: GPIO_DT_SPEC_INST_GET_BY_IDX_OR does not work
* :github:`53720` - Bluetooth: Controller: Incorrect address type for PA sync established
* :github:`53715` - mec15xxevb_assy6853: broken UART console output
* :github:`53707` - fs: fcb: Add option to disable CRC for FCB entries
* :github:`53697` - Can not run the usb mass storage demo on NXP mimxrt595_evk_cm33
* :github:`53696` - sysbuild should not parse the board revision conf
* :github:`53689` - boards: nrf52840dongle_nrf52840 is missing storage partition definition
* :github:`53676` - net: lwm2m: inconsistent path string handling throughout the codebase
* :github:`53673` - samples: posix: gettimeofday does not build on native_posix
* :github:`53663` - Error while trying to flash nucleo_f446re: TARGET: stm32f4x.cpu - Not halted
* :github:`53656` - twister: samples: Bogus yaml for code_relocation sample
* :github:`53654` - SPI2 not working on STM32L412
* :github:`53652` - samples: mgmt: mcumgr: fs overlay does not work
* :github:`53642` - Display driver sample seems to mix up RGB565 and BGR565
* :github:`53636` - cdc_acm fails on lpcxpresso55s69 board
* :github:`53630` - net: ieee802154_6lo: REGRESSION: L2 MAC byte swapping results in wrong IPHC decompression
* :github:`53617` - unicast_audio_client and unicast_audio_server example assert
* :github:`53612` - file system (LFS?): failure to expand file with truncate
* :github:`53610` - k_malloc and settings
* :github:`53604` - testsuite: Broken Kconfig prevents building tests for nrf52840dk_nrf52840 platform
* :github:`53584` - STM32F1 PWM Input Capture Issue
* :github:`53579` - add_compile_definitions does not "propagate upwards" as supposed to when using west
* :github:`53568` - Kconfig search has white on white text
* :github:`53566` - Use fixup commits during code review
* :github:`53559` - mgmt: mcumgr: explore why UART interface is so slow (possible go application fault)
* :github:`53556` - Cannot add multiple out-of-the-tree secure partitions
* :github:`53549` - mgmt: mcumgr: callbacks: Callbacks events for a single group should be able to be combined
* :github:`53548` - net: ip: igmp: Mechanism to add MAC address for IGMP all systems multicast address to an ethernet multicast hash filter
* :github:`53535` - define a recommended process in zephyr for a CI framework integration
* :github:`53520` - tests: drivers: gpio: gpio_api_1pin: peripheral.gpio.1pin fails
* :github:`53513` - STM32 PWM Input Capture Issue
* :github:`53500` - ``net_tcp: context->tcp == NULL`` error messages during TCP connection
* :github:`53495` - RFC: treewide: python: argparse default configuration allows shortened command arguments
* :github:`53490` - Peridic current spike using tickless Zephyr
* :github:`53488` - Missing UUID for PBA and TMAS
* :github:`53487` - west: flash: stm32cubeprogrammer: Reset command line argument is wrong
* :github:`53474` - Sysbuild cmake enters infinite loop if 2 images are added to a build with the same name
* :github:`53470` - Unable to build using Arduino Zero
* :github:`53468` - STM32 single-wire UART not working when poll-out more than 1 char
* :github:`53466` - Nucleo F413ZH CAN bus support
* :github:`53458` - IPv4 address autoconfiguration leaks TX packets/buffers
* :github:`53455` - GATT: Deadlock while sending GATT notification from system workqueue thread
* :github:`53451` - USB: Suspending CDC ACM can lead to endpoint/transfer state mismatch
* :github:`53446` - Bluetooth: Controller: ll_setup_iso_path not working if both CIS and BIS supported
* :github:`53438` - unable to wakeup from Stop2 mode
* :github:`53437` - WaveShare xnucleo_f411re: Error: ``** Unable to reset target **``
* :github:`53433` - flash content erase in bootloader region at run time
* :github:`53430` - drivers: display: otm8009a: import 3rd-party source
* :github:`53425` - Do we have support for rtc subsecond calculation in zephyr.
* :github:`53424` - Reopen issue #49390
* :github:`53423` - [bisected] logging.log_msg_no_overflow is failing on qemu_riscv64
* :github:`53421` - cpp: defined popcount macro prevents use of std::popcount
* :github:`53419` - net: stats: DHCP packets are not counted as part of UDP counters
* :github:`53417` - CAN-FD / MCAN driver: Possible variable overflow for some MCUs
* :github:`53407` - Support of regex
* :github:`53385` - SWD not working on STM32F405
* :github:`53366` - net: ethernet: provide a way to get ethernet config
* :github:`53361` - Adding I2C devices SX1509B to Devicetree with the same address on different busses generates FATAL ERROR.
* :github:`53360` - kernel: k_msgq: add peek_more function
* :github:`53347` - WINC1500 socket recv fail
* :github:`53340` - net: lwm2m: add BinaryAppDataContainer object (19)
* :github:`53335` - Undeclared constants in devicetree_generated.h
* :github:`53326` - usb: device: usb_dfu: k_mutex is being called from isr
* :github:`53315` - Fix possible underflow in tcp flags parse.
* :github:`53306` - scripts: utils: migrate_mcumgr_kconfigs.py: Missing options
* :github:`53301` - Bluetooth: Controller: Cannot recreate CIG
* :github:`53294` - samples: mgmt: mcumgr: smp_svr: UDP file can be removed
* :github:`53293` - mgmt: mcumgr: CONFIG_MCUMGR_GRP_IMG_REJECT_DIRECT_XIP_MISMATCHED_SLOT causes a build failure
* :github:`53285` - SNTP & DATE_TIME & SERVER ADDRESS configuration and behavior
* :github:`53280` - Bluetooth: security level failure with multiple links
* :github:`53276` - doc: mgmt: mcumgr: fix "some unspecified" error
* :github:`53271` - modules: segger: KConfigs are broken
* :github:`53259` - RFC: API Change: dma: callback status
* :github:`53254` - Bluetooth: bt_conn_foreach() reports unstable conn ref before the connection is completed
* :github:`53247` - ATT timeout followed by a segmentation fault
* :github:`53242` - Controller in HCI UART RAW mode responds to Stop Discovery mgmt command with 0x0b status code
* :github:`53240` - Task Watchdog Fallback Timeout Before Installing Timeout - STM32
* :github:`53236` - Make USB VBUS sensing configurable for STM32 devices
* :github:`53231` - drivers/flash/flash_stm32l5_u5.c : unable to use full 2MB flash with TF-M activated
* :github:`53227` - mgmt: mcumgr: Possible instability with USB CDC data transfer
* :github:`53223` - LE Audio: Add interleaved packing for LE audio
* :github:`53221` - Systemview trace id overlap
* :github:`53209` - LwM2M: Replace pathstrings from the APIs
* :github:`53194` - tests: kernel: timer: starve: DTS failure stm32f3_seco_d23
* :github:`53189` - Mesh CI failure with BT_MESH_LPN_RECV_DELAY
* :github:`53175` - Select pin properties from shield overlay
* :github:`53164` - mgmt: mcumgr: NMP Timeout with smp_svr example
* :github:`53158` - SPIM transaction timeout leads to crash
* :github:`53151` - fs: FAT_FS_API MKFS test uses driver specific calls
* :github:`53147` - usb: cdc_acm: log related warning promoted to error
* :github:`53141` - For pinctrl on STM32 pin cannot be defined as push-pull with low level
* :github:`53129` - Build fails on ESP32 when enabling websocket client API
* :github:`53103` - Zephyr shell on litex : number higher than 10 are printed as repeated hex
* :github:`53101` - esp32: The startup code hangs after reboot via sys_reboot(...)
* :github:`53094` - Extend Zperf command
* :github:`53093` - ARM: Ability to query CFSR on exception
* :github:`53059` - Bluetooth: peripheral GATT notification call takes a lot of time
* :github:`53049` - Bluetooth: LL assertion fail with peripherals connect/disconnect rounds
* :github:`53048` - Bluetooth: legacy advertising doesn't resume if CONFIG_BT_EXT_ADV=y
* :github:`53046` - Bluetooth: Failed to set security level for the second connection
* :github:`53043` - Bluetooth: Peripheral misses notifications from Central after setting security level
* :github:`53033` - tests-ci : libraries: encoding: jwt test Failed
* :github:`53034` - tests-ci : os: mgmt: info_net test No Console Output(Timeout)
* :github:`53035` - tests-ci : crypto: rand32: random_ctr_drbg test No Console Output(Timeout)
* :github:`53036` - tests-ci : testing: ztest: base.verbose_1 test No Console Output(Timeout)
* :github:`53037` - tests-ci : net: mqtt_sn: client test No Console Output(Timeout)
* :github:`53038` - tests-ci : net: socket: mgmt test No Console Output(Timeout)
* :github:`53039` - tests-ci : net: socket: af_packet.ipproto_raw test No Console Output(Timeout)
* :github:`53040` - tests-ci : net: ipv4: fragment test No Console Output(Timeout)
* :github:`53019` - random: Zephyr enables TEST_RANDOM_GENERATOR when it should not
* :github:`53012` - stm32u5: timer api: lptim: k_msleep is twice long as expected
* :github:`53010` - timers: large drift if hardware timer has a low resolution
* :github:`53007` - Bluetooth: Notification callback is called with incorrect connection reference
* :github:`53002` - Incorrect hardware reset cause sets for watchdog reset on stm32h743zi
* :github:`52996` - kconfig: Use of multiple fragment files with OVERLAY_CONFIG not taking effect
* :github:`52995` - Add triage permissions for dianazig
* :github:`52983` - Bluetooth: Audio: BT_CODEC_LC3_CONFIG_DATA fails to compile with _frame_blocks_per_sdu > 1
* :github:`52981` - LOG_MODE_MINIMAL do not work with USB_CDC for nRF52840
* :github:`52975` - posix: clock: current method of capturing elapsed time leads to loss in seconds
* :github:`52970` - samples/net/wifi example does not work with ESP32
* :github:`52962` - Bluetooth non-functional on nRF5340 target
* :github:`52935` - Missing Libraries
* :github:`52931` - Filesystem Write Fails with Some SD-Cards
* :github:`52925` - Using #define LOG_LEVEL 0 does not filter out logs
* :github:`52920` - qemu_cortex_r5: tests/ztest/base
* :github:`52918` - qemu_cortex_r5` CI fails
* :github:`52914` - drivers: adc: ADC_CONFIGURABLE_INPUTS confict between 2 ADCs
* :github:`52913` - twister build fails but returns exit code of 0
* :github:`52909` - usb: usb don't work after switch from Zephyr 2.7.3 to 3.2.99 on i.MX RT1020
* :github:`52898` - mgmt: mcumgr: replace cmake functions without zephyr prefix to have zephyr prefix
* :github:`52882` - Sample applications that enable USB and error if it fails are incompatible with boards like thingy53 with auto-USB init (i.e. USB CDC for logging)
* :github:`52878` - Bluetooth: Unable use native_posix with shell demo
* :github:`52872` - Logging to USB CDC ACM limited to very low rate
* :github:`52870` - ESP32-C3 System clock resolution improvements
* :github:`52857` - Adafruit WINC1500 Wifi Shield doesn't work on nRF528XX
* :github:`52855` - Improve artifact generation for split build/test operation of twister
* :github:`52854` - twister build fails but returns exit code of 0
* :github:`52838` - Bluetooth: audio：invalid ase state transition
* :github:`52833` - Bluetooth Controller assertion on sys_reboot() with active connections (lll_preempt_calc: Actual EVENT_OVERHEAD_START_US)
* :github:`52829` - kernel/sched: Fix SMP race on pend
* :github:`52818` - samples: subsys: usb: shell: sample.usbd.shell  fails - no output from console
* :github:`52817` - tests: drivers: udc: dirvers.udc fails
* :github:`52813` - stm32h7: dsi: ltdc: clock: PLL3: clock not set up correctly or side effect
* :github:`52812` - Various problems with pipes (Not unblocking, Data Access Violation, unblocking wrong thread...)
* :github:`52805` - Code crashing due to ADC Sync operation (STM32F4)
* :github:`52803` - Kconfig: STM32F4 UF2 family ID
* :github:`52795` - Remove deprecated tinycbor module
* :github:`52794` - Possible regression for printk() output of i2c sensor data on amg88xx sample
* :github:`52788` - Re-enable LVGL support for M0 processors.
* :github:`52784` - NRF_DRIVE_S0D1 option is not always set in the nordic,nrf-twi and nordic,nrf-twim nodes, when using shield?
* :github:`52779` - Error While adding the mcuboot folder in repo.
* :github:`52776` - ite: eSPI driver: espi_it8xxx2_send_vwire() is not setting valid flag along with respective virtual wire when invoked from app code.
* :github:`52754` - tests/drivers/bbram: Refactor to use a common prj.conf
* :github:`52749` - posix: getopt: cannot use getopt() in a standard way
* :github:`52739` - Newlib defines POSIX primitives when -std=gnu
* :github:`52721` - Minimal logging does not work if printk and boot banner are disabled
* :github:`52718` - Simplify handling of fragments in ``net_buf``
* :github:`52709` - samples: subsys: nvs: sample.nvs.basic does not complete within twister default timeout
* :github:`52708` - samples: drivers: watchdog: sample.drivers.watchdog loops endlessly
* :github:`52707` - samples: subsys: task_wdt: sample.subsys.task_wdt loops endlessly
* :github:`52703` - tests: subsys: usb: device: usb.device USAGE FAULT exception
* :github:`52691` - cannot read octospi flash when partition size exceeds 4mb
* :github:`52690` - coredump: stm32l5: I-cache error on coredump backend in flash
* :github:`52675` - I2C: STM32F0 can't switch to HSI clock by default and change timing
* :github:`52673` - mcux: flexcan: forever waiting semaphore in can_send()
* :github:`52670` - tests: subsys: usb: device: usb.device hangs
* :github:`52652` - drivers: sensors: bmi08x config file
* :github:`52641` - armv7: mpu: RASR size field incorrectly initialized
* :github:`52632` - MQTT over WebSockets: After hours of running time receiving published messages is strongly delayed
* :github:`52628` - spi: NXP MCUX LPSPI driver does not correctly change baud rate once configured
* :github:`52626` - Improve LLCP unit tests
* :github:`52625` - USB device: mimxrt685_evk_cm33: premature ZLP during control IN transfer
* :github:`52614` - Empty "west build --test-item" doesn't report warnings/errors
* :github:`52602` - tests: subsys: settings: file_littlefs: system.settings.file_littlefs.raw fails
* :github:`52598` - esp32c3 Unable to do any timing faster than 1ms
* :github:`52595` - Twister: unable to run tests on real hardware
* :github:`52588` - ESP32c3 SPI driver DMA mode limited to 64 byte chunks
* :github:`52566` - Error while build esp32 samples/hello_world
* :github:`52563` - spi_transceive with DMA for STM32 does not work for devices with 16 bit words.
* :github:`52561` - fsl_flexcan missing flags
* :github:`52559` - Compiler cannot include C++ headers when both PICOLIBC and LIB_CPLUSPLUS options are set
* :github:`52556` - adc driver sample was failing with STM32 nucleo_f429zi board
* :github:`52548` - Late device driver initialization
* :github:`52539` - Broken linker script for the esp32 platform
* :github:`52534` - Missing include to src/core/lv_theme.h in src/themes/mono/lv_theme_mono.h
* :github:`52528` - Zephyr support for Nordic devices Thingy with TFLM
* :github:`52527` - net: lwm2m: wrong SenML CBOR object link encoding
* :github:`52526` - Simplify lvgl.h file by creating more header files inside module's sub-filoders (src/widgets and src/layouts)
* :github:`52518` - lib: posix: usleep() does not follow the POSIX spec
* :github:`52517` - lib: posix: sleep() does not return the number of seconds left if interrupted
* :github:`52506` - GPIO multiple gaps cause incorrect pinout check
* :github:`52493` - net: lwm2m: add 32 bits floating point support
* :github:`52486` - Losing connection with JLink on STM32H743IIK6 with Zephyr 2.7.2
* :github:`52479` - incorrect canopennode SDO CRC
* :github:`52472` - Set compiler options only for a custom/external module
* :github:`52464` - LE Audio: Unicast Client failing to create the CIG
* :github:`52462` - uart: stm32: UART clock source not initialized
* :github:`52457` - compilation error with "west build -b lpcxpresso54114_m4 samples/subsys/ipc/openamp/ "
* :github:`52455` - ARC: MWDT: minimal libc includes
* :github:`52452` - drivers: pwm: loopback test fails on frdm_k64f
* :github:`52449` - net: ip: igmp: IGMP v2 membership reports are sent to 224.0.0.2 instead of the group being reported
* :github:`52448` - esp32: subsys: settings: not working properly on esp_wrover_kit
* :github:`52443` - Concerns with maintaining separate kernel device drivers for fuel-gauge and charger ICs
* :github:`52415` - tests: kernel: timer: timer_behavior: kernel.timer.timer fails
* :github:`52412` - doc: mgmt: mcumgr: Clarify that hash in img_mgmt is a full sha256 hash and required
* :github:`52409` - STM32H7: ethernet: Device fails to receive any IP packets over ethernet after receiving UDP/IP multicast at a constant rate for some time
* :github:`52407` - tests: subsys: mgmt: mcumgr: Test needed that enables all features/Kconfigs
* :github:`52404` - mgmt: mcumgr: Callback include file has file name typo
* :github:`52401` - mgmt: mcumgr: Leftover files after directory update
* :github:`52399` - cmake error
* :github:`52393` - Controller: ACL packets NACKed after Data Length Update
* :github:`52376` - Cannot build apps with main in a .cpp file
* :github:`52366` - LE Audio: Missing released callback for streams on ACL disconnect
* :github:`52360` - samples/net/sockets/socketpair does not run as expected
* :github:`52353` - bug: sysbuild lost board reversion here
* :github:`52352` - Questions about newlib library
* :github:`52351` - Bluetooth: Controller: ISOAL ASSERT failure
* :github:`52344` - Software-based Debounced GPIO
* :github:`52339` - usb: USB device re-enabling does not work on Nordic devices (regression)
* :github:`52327` - websocket: websocket_recv_msg breaks when there is no data after header
* :github:`52324` - Bluetooth Mesh example seems broken on v3.2.99 - worked ok with v3.1.99
* :github:`52317` - drivers: wifi: eswifi: Offload sockets accessing invalid net_context, resulting in errors in FLASH_SR and blocking flash use
* :github:`52309` - SAM0 flash driver with page emulated enabled will not write data at 0 block
* :github:`52308` - pip3 is unable to build wheel for cmsis-pack-manager as part of the requirements.txt on Fedora 37.
* :github:`52307` - Linker Error using CONSOLE_GETCHAR and CONSOLE_GETLINE
* :github:`52301` - Zephyr-Hello World is not working
* :github:`52298` - CI fail multiple times due to download package from http://azure.archive.ubuntu.com/ubuntu failed.
* :github:`52296` - Regulator shell does not build due to missing atoi define
* :github:`52291` - boards: thingy53: Enable USB-CDC by default
* :github:`52284` - unable to malloc during  tests/lib/cmsis_dsp/transform.cf64
* :github:`52280` - boards: thingy53 non-secure (thingy53_nrf5340_cpuapp_ns) does not build
* :github:`52276` - stm32: ST Kit B-L4S5I-IOT01A Octospi flash support
* :github:`52267` - http client includes chunking data in response body when making a non-chunked request and server responds with chunked data
* :github:`52262` - west flash --file
* :github:`52242` - Fatal exception LoadProhibited from mcuboot when enabling newlib in wifi sample (esp32)
* :github:`52235` - counter_basic_api test fails to build on STM32 platforms
* :github:`52228` - Bluetooth: L2CAP: receive a K-frame with payload longer than MPS if Enhanced ATT enabled
* :github:`52219` - jlink runner doesn't flash bin file if a hex file is present
* :github:`52218` - ADC read locked forever with CONFIG_DEBUG_OPTIMISATION=y on STM32U5
* :github:`52216` - spi_transceive with DMA on a STM32 slave returns value incorrect
* :github:`52211` - MCUX based QDEC driver
* :github:`52196` - Calling ``bt_le_ext_adv_stop()`` can causes failures in connections when support for multiple connections are enabled
* :github:`52195` - Bluetooth: GATT: add_subscriptions not respecting encryption
* :github:`52190` - [lpcxpresso55s28] flash range starts from Secure address which is not compatible with latest Jlink(v7.82a)
* :github:`52189` - Flash file system not working on stm32h735g_disco
* :github:`52181` - ADC Channel SCAN mode for STM32U5
* :github:`52171` - Bluetooth: BR/EDR: Inappropriate l2cap channel state set/get
* :github:`52169` - Mesh provisioning static OOB incorrect zero padding
* :github:`52167` - twister: Mechanism to pass CLI args through to ztest executable
* :github:`52154` - mgmt: mcumgr: Add Kconfig to automatically register handlers and mcumgr functionality
* :github:`52139` - ppp modem doesn't send NET_EVENT_L4_CONNECTED event
* :github:`52131` - tests-ci : kernel: timer: starve test No Console Output(Timeout)
* :github:`52125` - Timer accuracy issue with STM32U5 board
* :github:`52114` - Can't make JerryScript Work with Zephyr
* :github:`52113` - Binary blobs in ``hal_telink`` submodules
* :github:`52111` - Incompatible LTO version of liblt_9518_zephyr.a
* :github:`52103` - STM32u5 dual bank flash issue
* :github:`52101` - ``bt_gatt_notify`` function does not notify data larger than 20 bytes
* :github:`52099` - mgmt: mcumgr: Rename fs_mgmt hash/checksum functions
* :github:`52095` - dfu/mcuboot: dfu/mcuboot.h used BOOT_MAX_ALIGN and BOOT_MAGIC_SZ but does not include ``bootutil/bootutil_public.h``
* :github:`52094` - STM32MP157 Debugging method use wrong GDB port when execute command ``west debug``
* :github:`52085` - can: SAM M_CAN regression
* :github:`52079` - TLS handshake failure (after client-hello) with big_http_download sample
* :github:`52073` - ESP32-C3 UART1 not available after zephyr update to v3.2.99
* :github:`52065` - west: debugserver command does not work
* :github:`52059` - Bluetooth: conn:  in multi role configuration incorrect address is set after advertising resume
* :github:`52057` - tests: kernel: timer: starve: kernel.timer.starve hangs
* :github:`52056` - Bluetooth: Missing LL data length update callback on Central and Peripheral sides
* :github:`52055` - Bluetooth: Controller: Broadcast scheduling issues
* :github:`52049` - Update mps2_an521_remote for compatibility with mps2_an521_ns
* :github:`52022` - RFC: API Change: mgmt: mcumgr: transport: Add query valid check function
* :github:`52021` - RFC: API Change: mgmt: mcumgr: Replace mgmt_ctxt struct with smp_streamer
* :github:`52009` - tests: kernel: fifo: fifo_timeout: kernel.fifo.timeout fails on nrf5340dk_nrf5340_cpuapp
* :github:`51998` - Nominate Attie Grande as zephyr Collaborator
* :github:`51997` - microTVM or zephyr bugs, No SOURCES given to Zephyr library
* :github:`51989` - stm32f303v(b-c)tx-pinctrl.dtsi, No such file or directory
* :github:`51984` - Bluetooth: Central rejects connection parameters update request from a connected peripheral
* :github:`51973` - Coding style problem, clang-format formatted code cannot pass CI.
* :github:`51951` - Zephyr Getting Started steps fail with Python v3.11
* :github:`51944` - lsm6dso sensnsor driver: to enable drdy in pulsed mode call ``lsm6dso_data_ready_mode_set()``
* :github:`51939` - mgmt: mcumgr: SMP is broken
* :github:`51931` - Failing unit test re. missing PERIPHERAL_ISO_SUPPORT KConfig selection
* :github:`51893` - LSM303dlhc sensor example not compiling for nRF52840
* :github:`51874` - Zephyr 3.1 bosch,bme280 device is in the final DTS and accessible, but DT_HAS_BOSCH_BME280_ENABLED=n
* :github:`51873` - sensor: bmp388: missing if check around i2c device ready function
* :github:`51872` - Race condition in workqueue can lead to work items being lost
* :github:`51870` - Nucleo_h743zi fails to format storage flash partition
* :github:`51855` - openocd: targeting wrong serial port / device
* :github:`51829` - qemu_x86: upgrading to q35 breaks networking samples.
* :github:`51827` - picolibc heap lock recursion mismatch
* :github:`51821` - native_posix: Cmake must be run at least twice to find ${CMAKE_STRIP}
* :github:`51815` - Bluetooth: bt_disable in loop with babblesim gatt test causes Zephyr link layer assert
* :github:`51798` - mgmt: mcumgr: image upload, then image erase, then image upload does not restart upload from start
* :github:`51797` - West espressif install not working
* :github:`51796` - LE Audio: Improve stream coupling for CIS as the unicast client
* :github:`51788` - Questionable test code in ipv6_fragment test
* :github:`51785` - drivers/clock_control: stm32: Can support configure stm32_h7 PLL2 ?
* :github:`51780` - windows-curses Python package in requirements.txt can't install if using Python 3.11
* :github:`51778` - stm32l562e-dk: Broken TF-M psa-crypto sample
* :github:`51776` - POSIX API is not portable across arches
* :github:`51761` - Bluetooth : HardFault in hci_driver on sample/bluetooth/periodic_sync using nRF52833DK
* :github:`51752` - CAN documentation points to old sample locations
* :github:`51731` - Twister has a hard dependency on ``west.log``
* :github:`51728` - soc: xtensa: esp32_net: Remove binary blobs from source tree
* :github:`51720` - USB mass sample not working for FAT FS
* :github:`51714` - Bluetooth: Application with buffer that cannot unref it in disconnect handler leads to advertising issues
* :github:`51713` - drivers: flash: spi_nor: init fails when flash is busy
* :github:`51711` - Esp32-WROVER Unable to include the header file ``esp32-pinctrl.h``
* :github:`51693` - Bluetooth: Controller: Transmits packets longer than configured max len
* :github:`51687` - tests-ci : net: socket: tcp.preempt test Failed
* :github:`51688` - tests-ci : net: socket: tcp test Failed
* :github:`51689` - tests-ci : net: socket: poll test Failed
* :github:`51690` - tests-ci : net: socket: select test Failed
* :github:`51691` - tests-ci : net: socket: tls.preempt test Failed
* :github:`51692` - tests-ci : net: socket: tls test Failed
* :github:`51676` - stm32_hal -- undefined reference to "SystemCoreClock"
* :github:`51653` - mgmt: mcumgr: bt: issue with queued packets when device is busy
* :github:`51650` - Bluetooth: Extended adv reports with legacy data should also be discardable
* :github:`51631` - bluetooth: shell: linker error
* :github:`51629` - BLE stack execution fails with CONFIG_NO_OPTIMIZATIONS=y
* :github:`51622` - ESP32 mcuboot not support chip revision 1
* :github:`51621` - APPLICATION_CONFIG_DIR, CONF_FILE do not always pick up local ``boards/*.conf``
* :github:`51620` - Add Apache Thrift Module (from GSoC 2022 Project)
* :github:`51617` - RFC: Add Apache Thrift Upstream Module (from GSoC 2022 Project)
* :github:`51611` - check_compliance.py generates file checkpath.txt which isn't in .gitingore
* :github:`51607` - DT_NODE_HAS_COMPAT does not consider parents/path
* :github:`51604` - doc: is the documentation GDPR compliant since it uses Google Analytics without prompting the user about tracking?
* :github:`51602` - Stack overflow when using mcumgr fs_mgmt
* :github:`51600` - Bluetooth assert on flash erase using mcumgr
* :github:`51594` - mgmt: mcumgr: bt: thread freezes if device disconnects
* :github:`51588` - Doc:  Broken link in the "Electronut Labs Papyr" documentation page
* :github:`51566` - broken network once lwM2M is resumed after pause
* :github:`51559` - lwm2m tests are failing
* :github:`51549` - Memory report generation breaks if app and Zephyr is located on different Windows drives
* :github:`51546` - The blinky_pwm sample does not work on raspberry pi pico
* :github:`51544` - drivers/pwm/pwm_sam.c - update period and duty cycle issue (workaround + suggestions for fix)
* :github:`51529` - frdm_k64f: tests/net/socket/tls run failed on frdm_k64f
* :github:`51528` - spurious warnings when EXTRA_CFLAGS=-save-temps=obj is passed
* :github:`51521` - subsys: bluetooth: shell: gatt.c build fails with CONFIG_DEBUG_OPTIMIZATIONS and CONFIG_BT_SHELL=y
* :github:`51520` - samples: compression lz4 fails on small-ram stm32 platforms
* :github:`51508` - openocd: can't flash STM32H7 board using STLink V3
* :github:`51506` - it8xxx2_evb: Test suite after watchdog test will display fail in the daily test
* :github:`51505` - drivers: modem: gsm: gsm_ppp_stop() does not change gsm->state
* :github:`51488` - lis2dw12 function latch is misunderstood with drdy latch
* :github:`51480` - tests-ci : drivers: watchdog test Build failure of mimxrt1064_evk
* :github:`51476` - Please add documentation or sample how to use TLS_SESSION_CACHE socket option
* :github:`51475` - Twister: Mistake timeout as skipped
* :github:`51474` - driver: stm32: usb: add detach function support
* :github:`51471` - Network protocol MQTT: When qos=1, there is a bug in the subscription and publication
* :github:`51470` - tests-ci : drivers: mipi_dsi: api test Build failure
* :github:`51469` - Intel CAVS: Failed in tests/kernel/spinlock
* :github:`51468` - mps3_an547:tests/lib/cmsis_dsp/filtering bus fault
* :github:`51464` - samples: drivers: peci: Code doesn't build for npcx7m6fb_evb board
* :github:`51458` - Only one instance of mcp2515
* :github:`51454` - Cmake error for Zephyr Sample Code in Visual Studio
* :github:`51446` - The PR #50334 breaks twister execution on various HW boards
* :github:`51437` - LoRaWan problem with uplink messages sent as a response to class C downlink
* :github:`51438` - tests-ci : net: http:  test Build failure
* :github:`51436` - tests-ci : drivers: drivers.watchdog: nxp-imxrt11xx series : watchdog build failure
* :github:`51435` - tests-ci : drivers: hwinfo: api test Failed
* :github:`51432` - Bluetooth: ISO: Remove checks for and change seq_num to uint16_t
* :github:`51424` - tests: net: socket: tls: v4 dtls sendmsg test is testing v6
* :github:`51421` - tests: net: socket: tls: net.socket.tls region ``FLASH`` overflowed
* :github:`51418` - Intel CAVS: Assertion failed in tests/subsys/logging/log_links
* :github:`51406` - Blinky not executing on Windows
* :github:`51376` - Silabs WFX200 Binary Blob
* :github:`51375` - tests/lib/devicetree/devices/libraries.devicetree.devices: build failure (bl5340_dvk_cpuapp)
* :github:`51371` - hal: nxp: ARRAY_SIZE collision
* :github:`51370` - Driver error precision LPS22HH
* :github:`51368` - tests: tests/subsys/cpp/cxx/cpp.main.picolibc: build failure
* :github:`51364` - ESP32 WIFI: when allocating system_heap to PSRAM(extern ram), wifi station can't connet to ap(indicate that ap not found)
* :github:`51360` - I2C master read failure when 10-bit addressing is used with i2c_ll_stm32_v1
* :github:`51351` - I2C: ESP32 driver does not support longer clock stretching
* :github:`51349` - Turn power domains on/off directly
* :github:`51343` - qemu_x86_tiny doesn't place libc-hooks data in z_libc_partition
* :github:`51331` - lvgl: LV_FONT_CUSTOM_DECLARE does not work as string
* :github:`51323` - kernel: tests: Evaluate "platform_allow" usage in kernel tests.
* :github:`51322` - tests: kernel: timer: timer_behavior: kernel.timer.timer fails
* :github:`51318` - x86_64: Thread Local Storage pointer not setup before first thread started
* :github:`51301` - CI: mps3_an547: test failures
* :github:`51297` - Bluetooth: Implement H8 function from cryptographic toolbox
* :github:`51294` - ztest: Broken tests in main branch due to API-breaking change ``ZTEST_FAIL_ON_ASSUME``
* :github:`51290` - samples: application_development: external_lib: does not work on windows
* :github:`51276` - CAN driver for ESP32 (TWAI) does not enable the transceiver
* :github:`51265` - net: ip: cloning of net_pkt produces dangling ll address pointers and may flip overwrite flag
* :github:`51264` - drivers: ieee802154: nrf: wrapped pkt attribute access
* :github:`51263` - drivers: ieee802154: IEEE 802.15.4 L2 does not announce (but uses) promisc mode
* :github:`51261` - drivers: ieee802154: Drivers allocate RX packets from the TX pool
* :github:`51247` - Bluetooth: RPA expired callback inconsistently called
* :github:`51235` - nominate me as zephyr contributor
* :github:`51234` - it8xxx2_evb: The testcase tests/kernel/sleep/failed to run.
* :github:`51233` - up_squared: samples/boards/up_squared/gpio_counter run failed
* :github:`51228` - Bluetooth: Privacy in scan roles not updating RPA on timeout
* :github:`51223` - Problem when using fatfs example in a out_of_tree_driver with the file ff.h
* :github:`51214` - enc28j60 appears to be unable to correctly determine network state
* :github:`51208` - Bluetooth: Host: ``bt_le_oob_get_local`` gives incorrect address
* :github:`51202` - twister: Integration errors not reported nor counted in the console output but present in the reports.
* :github:`51194` - samples/subsys/lorawan building failed
* :github:`51185` - tests/drivers/counter/counter_basic_api fails to build on mimxrt685_evk_cm33
* :github:`51177` - Change SPI configuration (bitrate) with MCUXpresso SPI driver fails
* :github:`51174` - Bluetooth: l2cap needs check rx.mps when le_recv
* :github:`51168` - ITERABLE_SECTION_ROM stores data in RAM instead of ROM
* :github:`51165` - tools/fiptool/fiptool: Permission denied
* :github:`51156` - esp32 wifi: how to use ap mode and ap+station mode?
* :github:`51153` - modem: ppp: extract access technology when MODEM_CELL_INFO is enabled
* :github:`51149` - Esp32 wifi compilation error
* :github:`51146` - Running test: drivers:  disk: disk_access with  RAM disk  fails
* :github:`51144` - PR #51017 Broke GPIO builds for LPC11u6x platforms
* :github:`51142` - TestPlan generation not picking up tests missing ``test_`` prefix
* :github:`51138` - Testing tests/lib/cmsis_dsp/ fails on some stm32 boards
* :github:`51126` - Bluetooh: host: df: wrong size of a HCI command for connectionless CTE enable in AoD mode
* :github:`51117` - tests: kernel: workq: work: kernel.work.api fails test_1cpu_drain_wait
* :github:`51108` - Ethernet: Error frames are displayed when DHCP is suspended for a long time: <inf> net_dhcpv4: Received: 192.168.1.119
* :github:`51107` - Ethernet: Error frames are often displayed: <err> eth_mcux: ENET_GetRxFrameSize return: 4001
* :github:`51105` - esp32 wifi: http transmit rate is too slow
* :github:`51102` - issue installing zepyhr when i am using west cmd
* :github:`51076` - ADC channels 8-12 not working on LPC55s6X
* :github:`51074` - logging: syst: sample failure
* :github:`51070` - ModuleNotFoundError: No module named 'elftools'
* :github:`51068` - ModuleNotFoundError: No module named 'elftools'
* :github:`51065` - building tests/subsys/jwt failed on disco_l475_iot1  with twister
* :github:`51062` - lora_recv_async receives empty buffer after multiple receptions on sx12xx
* :github:`51060` - 10-bit addressing not supported by I2C slave driver for STM32 target
* :github:`51057` - Retrieve gpios used by a device (pinctrl)
* :github:`51048` - Firmware Upgrade Issue with Mcumgr On STM32H743 controller
* :github:`51025` - mbedtls: build warnings
* :github:`51021` - openthread: build warnings
* :github:`51019` - NVS should allow overwriting existing index even if there's no room to keep the old value
* :github:`51016` - mgmt: mcumgr: Add dummy shell buffer size Kconfig entry to shell mgmt
* :github:`51015` - Build Error for ST Nucleo F103RB
* :github:`51010` - Unable to communicate with LIS2DS12 on 52840DK or custom board
* :github:`51007` - Improve process around feature freeze exceptions
* :github:`51003` - Crash when using flexcomm5 as i2c on LPC5526
* :github:`50989` - Invalid ASE State Machine Transition
* :github:`50983` - RPI Pico usb hangs up in interrupt handler for composite devices
* :github:`50976` - JSON array encoding fails on array of objects
* :github:`50974` - DHCP (IPv4) NAK not respected when in renewing state
* :github:`50973` - DHCP (IPv4) seemingly dies by trying to assign an IP of 0.0.0.0
* :github:`50970` - SAME54_xpro network driver not attached
* :github:`50953` - LE Audio: Add support for setting ISO data path for broadcast sink
* :github:`50948` - SSD1306+lvgl sample fails to display
* :github:`50947` - stm32 static IPv4 networking in smp_svr sample application does not seem to work until a ping is received
* :github:`50940` - logging.log_output_ts64 fails on qemu_arc_hs5x
* :github:`50937` - Error when building for esp32c3_devkitm
* :github:`50923` - RFC: Stable API change: Rework and improve mcumgr callback system
* :github:`50895` - ADC Voltage Reference issue with STM32U5 MCU
* :github:`50874` - Cant disable bluetooth for BLE peripheral after connection with Central
* :github:`50872` - Error while installing python dependecies
* :github:`50868` - DHCP never binds if a NAK is received during the requesting state
* :github:`50853` - STM32F7 series can't run at frequencies higher than 180MHz
* :github:`50844` - zcbor module apis which are used for mcu boot functionality are not building in cpp file against v3.1.0
* :github:`50812` - MCUmgr udp sample fails with shell - BUS FAULT
* :github:`50801` - JSON parser fails on multidimensional arrays
* :github:`50789` - west: runners: blackmagicprobe: Doesn't work on windows due to wrong path separator
* :github:`50786` - Bluetooth: Host: Extended advertising reports may block the host
* :github:`50784` - LE Audio: Missing Media Proxy checks for callbacks
* :github:`50783` - LE Audio: Reject ISO data if the stream is not in the streaming state
* :github:`50782` - LE Audio: The MPL shell module should not use opcodes
* :github:`50781` - LE Audio: ``mpl init`` causes warnings when adding objects
* :github:`50780` - LE Audio: Bidirectional handling of 2 audio streams as the unicast server when streams are configured separately not working as intended
* :github:`50778` - LE Audio: Audio shell: Unicast server cannot execute commands for the default_stream
* :github:`50776` - CAN Drivers allow sending FD frames without device being set to FD mode
* :github:`50768` - storage: DT ``fixed-partition`` with ``status = "okay"`` requires flash driver
* :github:`50746` - Stale kernel memory pool API references
* :github:`50744` - net: ipv6: Allow on creating incomplete neighbor entries and routes in case of receiving Router Advertisement
* :github:`50735` - intel_adsp_cavs18: tests/boards/intel_adsp/hda_log/boards.intel_adsp.hda_log.printk failed
* :github:`50732` - net: tests/net/ieee802154/l2/net.ieee802154.l2 failed on reel_board due to build failure
* :github:`50709` - tests: arch: arm: arm_thread_swap fails on stm32g0 or stm32l0
* :github:`50684` - After enabling  CONFIG_SPI_STM32_DMA in project config file for STM32MP157-dk2 Zephyr throwing error
* :github:`50665` - MEC15xx/MEC1501: UART and special purpose pins missing pinctrl configuration
* :github:`50658` - Bluetooth: BLE stack notifications blocks host side for too long (``drivers/bluetooth/hci/spi.c`` and ``hci_spi``)
* :github:`50656` - Wrong definition of bank size for intel memory management driver.
* :github:`50655` - STM32WB55 Bus Fault when connecting then disconnecting then connecting then disconnecting then connecting
* :github:`50620` - fifo test fails with CONFIG_CMAKE_LINKER_GENERATOR enabled on qemu_cortex_a9
* :github:`50614` - Zephyr if got the ip is "10.xxx.xxx.xxx" when join in the switchboard, then the device may can not visit the outer net, also unable to Ping.
* :github:`50603` - Upgrade to loramac-node 4.7.0 when it is released to fix async LoRa reception on SX1276
* :github:`50596` - Documentation: Broken links in the previous release documentation
* :github:`50592` - mgmt: mcumgr: Remove code/functions deprecated in zephyr 3.1 release
* :github:`50590` - openocd: Can't flash on various STM32 boards
* :github:`50587` - Regression in Link Layer Control Procedure (LLCP)
* :github:`50570` - samples/drivers/can/counter fails in twister for native_posix
* :github:`50567` - Passed test cases are reported as "Skipped" because of incomplete test log
* :github:`50565` - Fatal error after ``west flash`` for nucleo_l053r8
* :github:`50554` - Test uart async failed on Nucleo F429ZI
* :github:`50525` - Passed test cases reported as "Skipped" because test log lost
* :github:`50515` - Non-existing test cases reported as "Skipped" with reason  “No results captured, testsuite misconfiguration?” in test report
* :github:`50461` - Bluetooth: controller: LLCP: use of legacy ctrl Tx buffers
* :github:`50452` - mec172xevb_assy6906: The testcase tests/lib/cmsis_dsp/matrix failed to run.
* :github:`50446` - MCUX CAAM is disabled temporarily
* :github:`50438` - Bluetooth: Conn: Bluetooth stack becomes unusable when communicating with both centrals and peripherals
* :github:`50427` - Bluetooth: host: central connection context leak
* :github:`50426` - STM32: using SPI after STOP2 sleep causes application to hang
* :github:`50404` - Intel CAVS: tests/subsys/logging/log_immediate failed.
* :github:`50389` - Allow twister to be called directly from west
* :github:`50381` - BLE: Connection slows down massively when connecting to a second device
* :github:`50354` - ztest_new: _zassert_base : return without post processing
* :github:`50345` - Network traffic occurs before Bluetooth NET L2 (IPSP) link setup complete
* :github:`50284` - Generated linker scripts break when ZEPHYR_BASE and ZEPHYR_MODULES share structure that contains symlinks
* :github:`50256` - I2C on SAMC21 sends out stop condition incorrectly
* :github:`50193` - Impossible to connect with a peripheral with BLE and zephyr 2.7.99, BT_HCI_ERR_UNKNOWN_CONN_ID error
* :github:`50192` - nrf_qspi_nor driver might crash if power management is enabled
* :github:`50188` - Avoid using extra net buffer for L2 header
* :github:`50149` - tests: drivers: flash fails on nucleo_l152re because of wrong erase flash size
* :github:`50139` - net: ipv4: Add DSCP/ToS based QoS support
* :github:`50070` - LoRa: Support on RFM95 LoRa module combined with a nRF52 board
* :github:`50040` - shields: Settle on nodelabels naming scheme
* :github:`50028` - flash_stm32_ospi Write enable failed when building with TF-M
* :github:`49996` - tests: drivers: clock_control: nrf_lf_clock_start and nrf_onoff_and_bt fails
* :github:`49963` - Random crash on the L475 due to work->handler set to NULL
* :github:`49962` - RFC: Stable API Change:  SMP (Simple Management Protocol) transport API within MCUMgr drops ``zephyr_`` prefix in functions and type definitions and drop zst parameter from zephyr_smp_transport_out_fn
* :github:`49917` - http_client_req() sometimes hangs when peer disconnects
* :github:`49871` - zperf: Add support to stop/start download
* :github:`49870` - stm32 enables HSI48 clock with device tree
* :github:`49844` - shell: Add abort support
* :github:`49843` - net: shell: Extend ping command
* :github:`49821` - USB DFU implementation does not work with WinUSB because of missing device reset API
* :github:`49811` - DHCP cannot obtain IP, when CONFIG_NET_VLAN is enabled
* :github:`49783` - net: ipv4: packet fragmentation support
* :github:`49746` - twister: extra test results
* :github:`49740` - LE Audio: Support for application-controlled advertisement for BAP broadcast source
* :github:`49711` - tests/arch/common/timing/arch.common.timing.smp fails for CAVS15, 18
* :github:`49648` - tests/subsys/logging/log_switch_format, log_syst build failures on CAVS
* :github:`49624` - Bluetooth: Controller: Recent RAM usage increase for hci_rpmsg build
* :github:`49621` - STM32WB55 BLE Extended Advertising support
* :github:`49620` - Add picolibc documentation
* :github:`49614` - acrn_ehl_crb: The testcase tests/kernel/sched/schedule_api failed to run.
* :github:`49611` - ehl_crb: Failed to run timer testcases
* :github:`49588` - Json parser is incorrect with undefined parameter
* :github:`49584` - STM32WB55 Failed read remote feature, remote version and LE set PHY
* :github:`49530` - Bluetooth: Audio: Invalid behavior testing
* :github:`49451` - Treat carrier UP/DOWN independently to interface UP/DOWN
* :github:`49413` - TI-AM62x: Add Zephyr Support for M4 and R5 cores
* :github:`49373` - BLE scanning - BT RX thread hangs on.
* :github:`49338` - Antenna switching for Bluetooth direction finding with the nRF5340
* :github:`49313` - nRF51822 sometimes hard fault on connect
* :github:`49298` - cc3220sf: add a launchpad_connector.dtsi
* :github:`49266` - Bluetooth: Host doesn't seem to handle INCOMPLETE per adv reports
* :github:`49234` - option to configure coverage data heap size
* :github:`49228` - ti: cc13xx_cc26xx: ADC support
* :github:`49210` - BL5340 board cannot build bluetooth applications
* :github:`49208` - drivers: modem: bg9x: not supporting UDP
* :github:`49148` - Asynchronous UART API triggers Zephyr assertion on STM32WB55
* :github:`49112` - lack of support for lpsram cache
* :github:`49069` - log: cdc_acm: hard fault message does not output
* :github:`49066` - Mcumgr img_mgmt_impl_upload_inspect() can cause unaligned memory access hard fault.
* :github:`49054` - STM32H7 apps are broken in C++ mode due to HAL include craziness
* :github:`49032` - espi saf testing disabled
* :github:`49026` - Add a CI check on image file sizes (specifically around boards)
* :github:`49021` - uart async api does not provide all received data
* :github:`48954` - several NXP devicetree bindings are missing
* :github:`48953` - 'intel,sha' is missing binding and usage
* :github:`48886` - Documenting the process for treewide changes
* :github:`48857` - samples: Bluetooth: Buffer size mismatch in samples/bluetooth/hci_usb for nRF5340
* :github:`48850` - Bluetooth: LLCP: possible access to released control procedure context
* :github:`48726` - net: tests/net/ieee802154/l2/net.ieee802154.l2 failed on reel board
* :github:`48625` - GSM_PPP api keeps sending commands to muxed AT channel
* :github:`48616` - RFC: Change to clang-format coding style rules re binary operators
* :github:`48609` - drivers: gpio: expose gpio_utils.h to external GPIO drivers
* :github:`48603` - LoRa driver asynchronous receive callback clears data before the callback.
* :github:`48520` - clang-format: #include reorder due to default: SortIncludesOptions != SI_Never
* :github:`48505` - BLE stack can get stuck in connected state despite connection failure
* :github:`48473` - Setting CONFIG_GSM_MUX_INITIATOR=n results in a compile error
* :github:`48468` - GSM Mux does not transmit all queued data when uart_fifo_fill is called
* :github:`48394` - vsnprintfcb writes to ``*str`` if it is NULL
* :github:`48390` - [Intel Cavs] Boot failures on low optimization levels
* :github:`48317` - drivers: fpga: include driver for Lattice iCE40 parts
* :github:`48304` - bt_disable() does not work properly on nRF52
* :github:`48299` - SHT3XD_CMD_WRITE_TH_LOW_SET should be SHT3XD_CMD_WRITE_TH_LOW_CLEAR
* :github:`48150` - Sensor Subsystem: data types
* :github:`48148` - Sensor Subsystem: Base sensor DTS bindings
* :github:`48147` - ztest: before/after functions may run on different threads, which may cause potential issues.
* :github:`48037` - Grove LCD Sample Not Working
* :github:`48018` - ztest: static threads are not re-launched for repeated test suite execution.
* :github:`47988` - JSON parser not consistent on extra data
* :github:`47877` - ECSPI support for NXP i.MX devices
* :github:`47872` - Differentiating Samples, Tests & Demos
* :github:`47833` - Intel CAVS: cavstool.py fails to extract complete log from winstream buffer when logging is frequent
* :github:`47830` - Intel CAVS: Build failure due to #47713 PR
* :github:`47817` - samples/modules/nanopb/sample.modules.nanopb fails with protobuf > 3.19.0
* :github:`47611` - ci: workflows: compliance: Add commit title to an error msg
* :github:`47607` - Settings with FCB backend does not pass test on stm32h743
* :github:`47576` - undefined reference to ``__device_dts_ord_20`` When building with board hifive_unmatched on flash_shell samples
* :github:`47500` - twister: cmake: Failure of "--build-only -M" combined with "--test-only" for --device-testing
* :github:`47477` - qemu_leon3: tests/kernel/fpu_sharing/generic/ failed when migrating to new ztest API
* :github:`47329` - Newlib nano variant footprint reduction
* :github:`47326` - drivers: WINC1500: issues with buffer allocation when using sockets
* :github:`47324` - drivers: modem: gsm_ppp: support common gpios
* :github:`47315` - LE Audio: CAP Initiator skeleton Implementation
* :github:`47299` - LE Audio: Advertising (service) data for one or more services/roles
* :github:`47296` - LE Audio: Move board files for nRF5340 Audio development kit upstream
* :github:`47274` - mgmt/mcumgr/lib: Rework of event callback framework
* :github:`47243` - LE Audio: Add support for stream specific codec configurations for broadcast source
* :github:`47242` - LE Audio: Add subgroup support for broadcast source
* :github:`47092` - driver: nrf: uarte: new dirver breaks our implementation for uart.
* :github:`47040` - tests: drivers: gpio_basic_api and gpio_api_1pin: convert to new ztest API
* :github:`47014` - can: iso-tp: implementation test failed with twister on nucleo_g474re
* :github:`46988` - samples: net: openthread: coprocessor: RCP is missing required capabilities: tx-security tx-timing
* :github:`46986` - Logging (deferred v2) with a lot of output causes MPU fault
* :github:`46897` - tests: posix: fs: improve tests to take better advantage of new ztest features
* :github:`46844` - Timer drivers likely have off-by-one in rapidly-presented timeouts
* :github:`46824` - Prevent new uses of old ztest API
* :github:`46598` - Logging with RTT backend on STM32WB strange behavier
* :github:`46596` - STM32F74X RMII interface does not work
* :github:`46491` - Zephyr SDK 0.15.0 Checklist
* :github:`46446` - lvgl: Using sw_rotate with SSD1306 shield causes memory fault
* :github:`46351` - net: tcp: Implement fast-retransmit
* :github:`46326` - Async UART for STM32 U5 support
* :github:`46287` - Zephyr 3.2 release checklist
* :github:`46268` - Update RNDIS USB class codes for automatic driver loading by Windows
* :github:`46126` - pm_device causes assertion error in sched.c with lis2dh
* :github:`46105` - RFC: Proposal of Integrating Trusted Firmware-A
* :github:`46073` - IPSP (IPv6 over BLE) example stop working after a short time
* :github:`45921` - Runtime memory usage
* :github:`45910` - [RFC] Zbus: a message bus system
* :github:`45891` - mgmt/mcumgr/lib: Refactoring of callback subsystem in image management (DFU)
* :github:`45814` - Armclang build fails due to missing source file
* :github:`45756` - Add overlay-bt-minimal.conf for smp_svr sample application
* :github:`45697` - RING_BUF_DECLARE broken for C++
* :github:`45625` - LE Audio: Update CSIP API with new naming scheme
* :github:`45621` - LE Audio: Update VCP API with new naming scheme
* :github:`45427` - Bluetooth: Controller: LLCP: Data structure for communication between the ISR and the thread
* :github:`45222` - drivers: peci: user space handlers not building correctly
* :github:`45218` - rddrone_fmuk66: I2C configuration incorrect
* :github:`45094` - stm32: Add USB HS device support to STM32H747
* :github:`44908` - Support ESP32 ADC
* :github:`44861` - WiFi support for STM32 boards
* :github:`44410` - drivers: modem: shell: ``modem send`` doesn't honor line ending in modem cmd handler
* :github:`44399` - Zephyr RTOS support for Litex SoC with 64 bit rocket cpu.
* :github:`44377` - ISO Broadcast/Receive sample not working with coded PHY
* :github:`44324` - Compile error in byteorder.h
* :github:`44318` - boards: arm: rpi_pico: Enable CONFIG_ARM_MPU=y for raspberry pi pico board
* :github:`44281` - Bluetooth: Use hardware encryption for encryption
* :github:`44164` - Implement the equivalent of PR #44102 in LLCP
* :github:`44055` - Immediate alert client
* :github:`43998` - posix: add include/posix to search path based on Kconfig
* :github:`43986` - interrupt feature for gpio_mcp23xxx
* :github:`43836` - stm32: g0b1: RTT doesn't work properly after stop mode
* :github:`43737` - Support compiling ```native_posix`` targets on Windows using the MinGW
* :github:`43696` - mgmt/mcumgr: RFC: Standardize Kconfig option names for MCUMGR
* :github:`43655` - esp32c3: Connection fail loop
* :github:`43647` - Bluetooth: LE multirole: connection as central is not totally unreferenced on disconnection
* :github:`43604` - Checkpatch: Support in-code ignore tags
* :github:`43411` - STM32 SPI DMA issue
* :github:`43330` - usb_dc_nrfx.c starts usbd_work_queue with no name
* :github:`43308` - driver: serial: stm32: uart will lost data when use dma mode[async mode]
* :github:`43294` - LoRaWAN stack & user ChannelsMask
* :github:`43286` - Zephyr 3.1 Release Checklist
* :github:`42998` - Should board.dts enable peripherals by default?
* :github:`42910` - Bluetooth: Controller: CIS Data path setup: HCI ISO Data
* :github:`42908` - Bluetooth: Controller: CIG: LE Remove CIG
* :github:`42907` - Bluetooth: Controller: CIG: Disconnect: ACL disconnection leading to CIS Disconnection complete
* :github:`42906` - Bluetooth: Controller: CIG:  Disconnect:  Using HCI Disconnect:  Generate LL_CIS_TERMINATE_IND
* :github:`42905` - Bluetooth: Controller: CIG: LL Rejects: Remote request being rejected
* :github:`42902` - Bluetooth: Controller: CIG: Host reject: LE Reject CIS Request
* :github:`42900` - Bluetooth: Controller: CIG: LE Setup ISO Data Path
* :github:`42899` - Bluetooth: Controller: CIG: LE CIS Established Event
* :github:`42898` - Bluetooth: Controller: CIG: LE Accept CIS
* :github:`42897` - Bluetooth: Controller: CIG: LE CIS Request Event
* :github:`42896` - Bluetooth: Controller: CIG: LE Create CIS: NULL PDU scheduling
* :github:`42895` - Bluetooth: Controller: CIG: LE Create CIS: Control procedure with LL_CIS_REQ/RSP/IND PDU
* :github:`42894` - Bluetooth: Controller: CIG: LE Set CIG Parameters
* :github:`42700` - Support module.yml in zephyr repo
* :github:`42590` - mgmt/mcumgr/lib: RFC: Allow leaving out "rc" in successful respones and use "rc" only for SMP processing errors.
* :github:`42432` - i2c: unable to configure SAMD51 i2c clock frequency for standard (100 KHz) speeds
* :github:`42420` - mgmt/mcumgr/lib: Async image erase command with status check
* :github:`42374` - STM32L5: Entropy : Power Management not working due to entropy driver & stop mode
* :github:`42361` - OpenOCD flashing not working on cc1352r1_launchxl/cc26x2r1_launchxl
* :github:`41956` - Bluetooth: Controller: BIG: Synchronized receiver encryption support
* :github:`41955` - Bluetooth: Controller: BIG: Broadcaster encryption support
* :github:`41830` - CONF_FILE, OVERLAY_CONFIG parsing expands ``${ZEPHYR_<whatever>_MODULE_DIR}``
* :github:`41823` - Bluetooth: Controller: llcp: Remote request are dropped due to lack of free proc_ctx
* :github:`41822` - BLE IPSP sample cannot handle large ICMPv6 Echo Request
* :github:`41784` - virtio device driver
* :github:`41771` - tests: drivers: adc: Test doesn't build for mec172xevb_assy6906
* :github:`41765` - assert.h should not include non libc headers
* :github:`41694` - undefined reference to ``_open``
* :github:`41622` - Infinite mutual recursion when SMP and ATOMIC_OPERATIONS_C are set
* :github:`41606` - stm32u5: Re-implement VCO input and EPOD configuration
* :github:`41581` - STM32 subghzspi fails pinctrl setup
* :github:`41380` - stm32h7: Ethernet: Migrate driver to the new eth HAL api
* :github:`41213` - LE Audio: Update GA services to use the multi-instance macro
* :github:`41212` - LE Audio: Store of bonded data
* :github:`41209` - LE Audio: MCS support for multiple instances
* :github:`41073` - twister: no way to specify arguments for the binary zephyr.exe
* :github:`40982` - Build system: West: Add a warning when used repository does not match manifest
* :github:`40972` - Power management support for MEC172x
* :github:`40944` - BUILTIN_STACK_CHECKER and MPU_STACK_GUARD with a thread using the FPU will fault the bulltin stack checker
* :github:`40928` - mgmt/mcumgr/lib: Check image consistency after writing last chunk
* :github:`40924` - mgmt/mcumgr/lib: Do not re-upload image, by default, to the secondary slot
* :github:`40868` - Add a pre and post initialization among CONFIG_APPLICATION_INIT_PRIORITY
* :github:`40850` - Add Zephyr logging support to mgmt/mcumgr/lib
* :github:`40833` - driver: i2c: TCA9546a: Have compilation fails when driver init priority missmatch
* :github:`40642` - Why does CMake wrongly believe the rimage target is changing?
* :github:`40582` - how the zephyr supportting with running cadence hifi4 lx7,reset_vectorXEA2.s ?
* :github:`40561` - BLE notification and indication callback data are difficult to pass to other threads...
* :github:`40560` - Callbacks lack context information...
* :github:`39740` - Road from pinmux to pinctrl
* :github:`39712` - bq274xx sensor - Fails to compile when CONFIG_PM_DEVICE enabled
* :github:`39598` - use of __noinit with ecc memory hangs system
* :github:`39520` - Add support for the BlueNRG-LP SoC
* :github:`39431` - arduino_nano_33_ble_sense: Add More Devices to the Device Tree
* :github:`39331` - ti: cc13xx_cc26xx: watchdog timer driver
* :github:`39234` - Add support for the Sensririon SCD30 CO2 sensor
* :github:`39194` - Process: investigate GitHub code review replacements
* :github:`39037` - CivetWeb samples fail to build with CONFIG_NEWLIB_LIBC
* :github:`39025` - Bluetooth: Periodic Advertising, Filter Accept List, Resolving list related variable name abbreviations
* :github:`38947` - Issue with SMP commands sent over the UART
* :github:`38880` - ARC: ARCv2: qemu_arc_em / qemu_arc_hs don't work with XIP disabled
* :github:`38668` - ESP32S I2S
* :github:`38570` - Process: binary blobs in Zephyr
* :github:`38450` - Python script for checking PR errors
* :github:`38346` - twister command line parameter clean up and optimizate twister documents
* :github:`38291` - Make Zephyr modules compatible with PlatformIO libdeps
* :github:`38251` - cmake: DTC_OVERLAY_FILE flags cancel board <board>.overlay files
* :github:`38041` - Logging-related tests fails on qemu_arc_hs6x
* :github:`37855` - STM32 - kconfigs to determine if peripheral is available
* :github:`37346` - STM32WL LoRa increased the current in "suspend_to_idle" state
* :github:`37056` - Clarify device power states
* :github:`36953` - <err> lorawan: MlmeConfirm failed : Tx timeout
* :github:`36951` - twister: report information about tests instability
* :github:`36882` - MCUMGR: fs upload fail for first time file upload
* :github:`36724` - The road to a stable Controller Area Network driver API
* :github:`36601` - Add input support to audio_codec
* :github:`36553` - LoRaWAN Sample: ``join accept`` but "Join failed"
* :github:`36544` - RFC: API Change: Bluetooth: Read Multiple
* :github:`36343` - Bluetooth: Mesh: Modularizing the proxy feature
* :github:`36301` - soc: cypress: Port Zephyr to Cypress CYW43907
* :github:`36297` - Move BSS section to the end of image
* :github:`35986` - POSIX: multiple definition of posix_types
* :github:`35812` - ESP32 Factory app partition is not bootable
* :github:`35316` - log_panic() hangs kernel
* :github:`35238` - ieee802.15.4 support for stm32wb55
* :github:`35237` - build: Enhance twister to follow all module.yml in module list
* :github:`35177` - example-application: Add example library & tests
* :github:`34949` - console Bluetooth LE backend
* :github:`34597` - Mismatch between ``ot ping`` and ``net ping``
* :github:`34536` - Simple event-driven framework
* :github:`34324` - RTT is not working on STM32
* :github:`34269` - LOG_MODE_MINIMAL BUILD error
* :github:`34049` - Nordic nrf9160 switching between drivers and peripherals
* :github:`33876` - Lora sender sample build error for esp32
* :github:`33704` - BLE Shell Scan application filters
* :github:`32875` - Benchmarking Zephyr vs. RIOT-OS
* :github:`32756` - Enable mcumgr shell management to send responses to UART other than assigned to shell
* :github:`32733` - RS-485 support
* :github:`32339` - reimplement tests/kernel/timer/timer_api
* :github:`32288` - Enhance the ADC functionality on the STM32 devices to all available ADC channels
* :github:`32213` - Universal error code type
* :github:`31959` - BLE firmware update STM32WB stuck in loop waiting for CPU2
* :github:`31298` - tests/kernel/gen_isr_table failed on hsdk and nsim_hs_smp sometimes
* :github:`30391` - Unit Testing in Zephyr
* :github:`30348` - XIP can't be enabled with ARC MWDT toolchain
* :github:`30212` - Disk rewrites same flash page multiple times.
* :github:`30159` - Clean code related to dts fixup files
* :github:`30042` - usbd: support more than one configuration descriptors
* :github:`30023` - Device model: add debug helpers for when device_get_binding() fails
* :github:`29986` - Add support for a single node having multiple bus types
* :github:`29832` - Redundant error check of function  uart_irq_update() in ``tests/drivers/uart/uart_basic_api/src/test_uart_fifo.c``
* :github:`29495` - SD card slow write SPI/Fatfs/stm32
* :github:`29160` - arm: Always include arch/arm/include
* :github:`29136` - usb: add USB device stack shell support
* :github:`29135` - usb: allow the instances of a USB class to be enabled and disabled at runtime
* :github:`29134` - usb: allow more extensive settings of the device descriptor
* :github:`29133` - usb: USB device stack should store and validate the device state
* :github:`29132` - usb: USB device stack should track and check the state of control transfers
* :github:`29087` - Moving (some) boards to their own repo/module
* :github:`28998` - net: if: extend list of admin/operational states of network interface
* :github:`28872` - Support ESP32 as Bluetooth controller
* :github:`28864` - sanitycheck: Make sanitycheck test specifiacation compatible
* :github:`28617` - enable CONFIG_TEST for all samples
* :github:`27819` - Memory Management for MMU-based devices for LTS2
* :github:`27258` - Ring buffer does not allow to partially put/get data
* :github:`26796` - Interrupts on Cortex-M do not work with CONFIG_MULTITHREADING=n
* :github:`26392` - e1000 ethernet driver needs to be converted to DTS
* :github:`26109` - devicetree: overloaded DT_REG_ADDR() and DT_REG_SIZE() for PCI devices
* :github:`25917` - Bluetooth: Deadlock with TX of ACL data and HCI commands (command blocked by data)
* :github:`25417` - net: socket: socketpair: check for ISR context
* :github:`25407` - No tests/samples covering socket read()/write() calls
* :github:`25055` - Redundant flash shell commands
* :github:`24653` - device_pm: clarify and document usage
* :github:`23887` - drivers: modem: question: Should modem stack include headers to put into zephyr/include?
* :github:`23165` - macOS setup fails to build for lack of "elftools" Python package
* :github:`23161` - I2C and sensor deinitialization
* :github:`23072` - #ifdef __cplusplus missing in tracking_cpu_stats.h
* :github:`22049` - Bluetooth: IRK handling issue when using multiple local identities
* :github:`21995` - Bluetooth: controller: split: Porting of connection event length
* :github:`21724` - dts: edtlib: handle child-binding or child-child-binding as 'normal' binding with compatible
* :github:`21446` - samples: add SPI slave
* :github:`21239` - devicetree: Generation of the child-bindigs items as a common static initializer
* :github:`20707` - Define GATT service at run-time
* :github:`20262` - dt-binding for timers
* :github:`19713` - usb: investigate if Network Buffer can be used in USB device stack and USB drivers
* :github:`19496` - insufficient test case coverage for log subsystem
* :github:`19356` - LwM2M sample reorganization: split out LwM2M source into object-based .c files
* :github:`19259` - doc: two-column tricks for HTML breaks PDF
* :github:`19243` - Support SDHC & samples/subsys/fs on FRDM-K64F
* :github:`19152` - MK22F51212 MPU defines missing
* :github:`18892` - POSIX subsys: transition to #include_next for header consistency
* :github:`17171` - Insufficient code coverage for lib/os/fdtable.c
* :github:`16961` - Modules: add a SHA1 check to avoid updating module in the past
* :github:`16942` - Missing test case coverage for include/misc/byteorder.h functions
* :github:`16851` - west flash error on zephyr v1.14.99
* :github:`16444` - drivers/flash/flash_simulator: Support for required read alignment
* :github:`16088` - Verify POSIX PSE51 API requirements
* :github:`15453` - Kconfig should enforce that at most one Console driver is enabled at a time
* :github:`15181` - ztest issues
* :github:`14753` - nrf52840_pca10056: Leading spurious 0x00 byte in UART output
* :github:`14577` - Address latency/performance in nRF51 timer ISR
* :github:`13170` - Porting guide for advanced board (multi CPU SoC)
* :github:`12504` - STM32: add USB_OTG_HS example
* :github:`12401` - Target Capabilities / Board Directory Layout Capabilities
* :github:`12367` - Power management strategy of Zephyr can't work well on nRF52 boards.
* :github:`11594` - Cleanup GNUisms to make the code standards compliant
* :github:`9045` - A resource-saving programming model
* :github:`6198` - unit test: Add unit test example which appends source files to SOURCES list
* :github:`5697` - Driver API review/cleanup/rework
* :github:`3849` - Reduce the overall memory usage of the LwM2M library
* :github:`2837` - Ability to use hardware-based block ciphers
* :github:`2647` - Better cache APIs needed.

---

### Doc Releases Release Notes 3.4 (`doc/releases/release-notes-3.4.rst`)

:orphan:

.. _zephyr_3.4:

Zephyr 3.4.0
############

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

Major enhancements with this release include:

* Input subsystem: handles input events from various types of input devices and
  distributes them to other threads in the application.
* Barrier API: added architecture agnostic API for data memory barriers.
* USB Device support:

  * USB device controller API (UDC API) and nRF USBD controller driver.
  * USB device stack implementation using new UDC API.

* Added Power Delivery Source Support to the USB-C Stack.
* Bluetooth: Added support for Periodic Advertising with Responses (PAwR).
* Cache API functions are now fully in-lined by compilers.
* Added an API for real-time clocks (RTC).
* Added Retention subsystem.
* Added initial support for MMU on Xtensa.
* SMBus (System Management Bus) API.
* Various improvements to the testing framework and twister:

  - Introduction of 3 new test harnesses into twister supporting pyTest,
    GoogleTest and Robot Framework.
  - Transitioning to new Ztest API was completed and legacy Ztest was deprecated.

* Added Snippets: Support common configuration settings that can be used across
  platforms.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

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

* CVE-2023-1901: Under embargo until 2023-07-04

* CVE-2023-1902: Under embargo until 2023-07-04

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

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

* Any applications using the mcuboot image manager
  (:kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`) will now need to also select
  :kconfig:option:`CONFIG_FLASH_MAP` and :kconfig:option:`CONFIG_STREAM_FLASH`,
  this prevents a cmake dependency loop if the image manager Kconfig is enabled
  manually without also manually enabling the other options.

* Including hawkbit in an application now requires additional Kconfig options
  to be selected, previously these options would have been selected
  automatically but have changed from ``select`` options in Kconfig files to
  ``depends on``:

   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NVS`                     |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_FLASH`                   |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_FLASH_MAP`               |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_STREAM_FLASH`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_REBOOT`                  |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_HWINFO`                  |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_TCP`                 |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_SOCKETS`             |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_IMG_MANAGER`             |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NETWORKING`              |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_HTTP_CLIENT`             |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_DNS_RESOLVER`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_JSON_LIBRARY`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      |
   +--------------------------------------------------+

* Including updatehub in an application now requires additional Kconfig options
  to be selected, previously these options would have been selected
  automatically but have changed from ``select`` options in Kconfig files to
  ``depends on``:

   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_FLASH`                   |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_STREAM_FLASH`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_FLASH_MAP`               |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_REBOOT`                  |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`     |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_IMG_MANAGER`             |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK`  |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT`      |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_MPU_ALLOW_FLASH_WRITE`   |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NETWORKING`              |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_UDP`                 |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_SOCKETS`             |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_COAP`                    |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_DNS_RESOLVER`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_JSON_LIBRARY`            |
   +--------------------------------------------------+
   | :kconfig:option:`CONFIG_HWINFO`                  |
   +--------------------------------------------------+

* The sensor driver API clarified :c:func:`sensor_trigger_set` to state that
  the user-allocated sensor trigger will be stored by the driver as a pointer,
  rather than a copy, and passed back to the handler. This enables the handler
  to use :c:macro:`CONTAINER_OF` to retrieve a context pointer when the trigger
  is embedded in a larger struct and requires that the trigger is not allocated
  on the stack. Applications that allocate a sensor trigger on the stack need
  to be updated.

* Converted few drivers to the :ref:`input` subsystem.

  * ``gpio_keys``: moved out of ``gpio``, replaced the custom API to use input
    events instead, the :dtcompatible:`zephyr,gpio-keys` binding is unchanged
    but now requires ``zephyr,code`` to be set.
  * ``ft5336``: moved from ``kscan_api`` to :ref:`input`, renamed the Kconfig
    options from ``CONFIG_KSCAN_FT5336``, ``CONFIG_KSCAN_FT5336_PERIOD`` and
    ``KSCAN_FT5336_INTERRUPT`` to :kconfig:option:`CONFIG_INPUT_FT5336`,
    :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD` and
    :kconfig:option:`CONFIG_INPUT_FT5336_INTERRUPT`.
  * ``kscan_sdl``: moved from ``kscan_api`` to :ref:`input`, renamed the Kconfig
    option from ``KSCAN_SDL`` to :kconfig:option:`CONFIG_INPUT_SDL_TOUCH` and the
    compatible from ``zephyr,sdl-kscan`` to
    :dtcompatible:`zephyr,input-sdl-touch`.
  * ``nuvoton,npcx-kscan`` moved to :ref:`input`, renamed the Kconfig option
    names from ``KSCAN_NPCX_...`` to ``INPUT_NPCX_KBD...`` and the compatible
    from ``nuvoton,npcx-kscan`` to :dtcompatible:`nuvoton,npcx-kbd`.
  * Touchscreen drivers converted to use the input APIs can use the
    :dtcompatible:`zephyr,kscan-input` driver to maintain Kscan compatibility.

* The declaration of :c:func:`main` has been changed from ``void
  main(void)`` to ``int main(void)``. The main function is required to
  return the value zero. All other return values are reserved. This aligns
  Zephyr with the C and C++ language specification requirements for
  "hosted" environments, avoiding compiler warnings and errors. These
  compiler messages are generated when applications are built in "hosted"
  mode (which means without the ``-ffreestanding`` compiler flag). As the
  ``-ffreestanding`` flag is currently enabled unless the application is
  using picolibc, only applications using picolibc will be affected by this
  change at this time.

* The following network interface APIs now take additional,
  ``struct net_if * iface`` parameter:

  * :c:func:`net_if_ipv4_maddr_join`
  * :c:func:`net_if_ipv4_maddr_leave`
  * :c:func:`net_if_ipv6_maddr_join`
  * :c:func:`net_if_ipv6_maddr_leave`

* MCUmgr transports now need to set up the struct before registering it by
  setting the function pointers to the function handlers, these have been
  moved to a ``functions`` struct object of type
  :c:struct:`smp_transport_api_t`. Because of these changes, the legacy
  transport registration function and object are no longer available. The
  registration function now returns a value which is 0 for success or a
  negative error code if an error occurred.

* Added a new flag :c:struct:`dac_channel_cfg` ``buffered`` for DAC channels in
  :c:struct:`dac_channel_cfg` to allow the configuration of the output buffer.
  The actual interpretation of this depends on the hardware and is so far only
  implemented for the STM32 DAC driver. Implicitly for this driver this changes
  the default from being buffered to unbuffered.

* MCUmgr fs_mgmt group's file access hook is now called for all fs_mgmt group
  functions (adding support for file status and file hash/checksum). In
  addition, if the file access state is not lost, it will now only be called
  once for the file access instead of each time a command is received.
  Note that the structure for the notification has changed, the ``upload`` bool
  has been replaced with an enum to indicate what function is used, see
  :c:struct:`fs_mgmt_file_access` for the new structure definition.

* Iterable sections API is now available at
  :zephyr_file:`include/zephyr/sys/iterable_sections.h`. LD linker snippets are
  available at :zephyr_file:`include/zephyr/linker/iterable_sections.h`.

* Cache API functions are now fully inlined by compilers.

* The Bluetooth HCI headers have been reworked, with ``hci.h`` now containing
  only the function prototypes and the new ``hci_types.h`` defining all
  HCI-related macros and structs. The previous ``hci_err.h`` has been merged
  into ``hci_types.h``.

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

* Pinmux API has been removed. Pin control needs to be used as its replacement,
  refer to :ref:`pinctrl-guide` for more details.

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

* Configuring applications with ``prj_<board>.conf`` files has been deprecated,
  this should be replaced by using a prj.conf with the common configuration and
  board-specific configuration in board Kconfig fragments in the ``boards``
  folder of the application.

* On nRF51 and nRF52-based boards, the behavior of the reset reason being
  provided to :c:func:`sys_reboot` and being set in the GPREGRET register has
  been dropped. This function will now just reboot the device without changing
  the register contents. The new method for setting this register uses the boot
  mode feature of the retention subsystem, see the
  :ref:`boot mode API <boot_mode_api>` for details. To restore the deprecated
  functionality, enable
  :kconfig:option:`CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET`.

* Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` in favor of the standardized
  :c:func:`pthread_barrier_init`

* On all STM32 targets except STM32F2 series, Ethernet drivers implementation
  based on STM32Cube Ethernet API V1 (:kconfig:option:`CONFIG_ETH_STM32_HAL_API_V1`)
  is now deprecated in favor of implementation based on more reliable and performant
  STM32Cube Ethernet API V2.

* Legacy Ztest API was deprecated. All new tests shall use the new Ztest API.

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

* Removed ``bt_set_oob_data_flag`` and replaced it with two new API calls:
  * :c:func:`bt_le_oob_set_sc_flag` for setting/clearing OOB flag in SC pairing
  * :c:func:`bt_le_oob_set_legacy_flag` for setting/clearing OOB flag in legacy paring

* :c:macro:`SYS_INIT` callback no longer requires a :c:struct:`device` argument.
  The new callback signature is ``int f(void)``. A utility script to
  automatically migrate existing projects can be found in
  :zephyr_file:`scripts/utils/migrate_sys_init.py`.

* Changed :c:struct:`spi_config` ``cs`` (:c:struct:`spi_cs_control`) from
  pointer to struct member. This allows using the existing SPI dt-spec macros in
  C++. SPI controller drivers doing ``NULL`` checks on the ``cs`` field to check
  if CS is GPIO-based or not, must now use :c:func:`spi_cs_is_gpio` or
  :c:func:`spi_cs_is_gpio_dt` calls.

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

* Introduced :c:func:`flash_ex_op` function. This allows to perform extra
  operations on flash devices, defined by Zephyr Flash API or by vendor specific
  header files. Support for extra operations is enabled by
  :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED` which depends on
  :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` selected by driver.

* Introduced :ref:`rtc_api` API which adds experimental support for real-time clock
  devices. These devices previously used the :ref:`counter_api` API combined with
  conversion between unix-time and broken-down time. The new API adds the mandatory
  functions :c:func:`rtc_set_time` and :c:func:`rtc_get_time`, the optional functions
  :c:func:`rtc_alarm_get_supported_fields`, :c:func:`rtc_alarm_set_time`,
  :c:func:`rtc_alarm_get_time`, :c:func:`rtc_alarm_is_pending` and
  :c:func:`rtc_alarm_set_callback` are enabled with
  :kconfig:option:`CONFIG_RTC_ALARM`, the optional function
  :c:func:`rtc_update_set_callback` is enabled with
  :kconfig:option:`CONFIG_RTC_UPDATE`, and lastly, the optional functions
  :c:func:`rtc_set_calibration` and :c:func:`rtc_get_calibration` are enabled with
  :kconfig:option:`CONFIG_RTC_CALIBRATION`.

* Introduced :ref:`auxdisplay_api` for auxiliary (alphanumeric-based) displays.

* Introduced :ref:`barriers_api` for barrier operations.

* Added :c:macro:`CAN_FRAME_ESI` CAN-FD Error State Indicator flag.

Kernel
******

* Removed absolute symbols :c:macro:`___cpu_t_SIZEOF`,
  :c:macro:`_STRUCT_KERNEL_SIZE`, :c:macro:`K_THREAD_SIZEOF` and
  :c:macro:`_DEVICE_STRUCT_SIZEOF`

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

* ARC

  * Added MPUv8 support
  * Add support of virtual UART over ARC hostlink channel
  * Improved ARCv2 HS4x processors handling - added proper Kconfig options, provided default mcpu
  * Improved ARCMWDT toolchain handling:

    * added rollback to check METAWARE_ROOT if ARCMWDT_TOOLCHAIN_PATH missing
    * reworked extra warnings options handling in twister so it can be used with ARCMWDT
    * used 64bit MDB binary by default

  * Fixed excessive ROM memory consumption if MPU is enabled and ROM & RAM are located in different
    memory regions
  * Fixed DSP registers handling in case of ARCMWDT
  * Improved SMP handling:

    * Fixed potential livelock in thread abort due to exception
    * Fixed IDU mask setup

  * Removed absolute symbols :c:macro:`___callee_saved_t_SIZEOF` and
    :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`

* ARM

  * Removed absolute symbols :c:macro:`___basic_sf_t_SIZEOF`,
    :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`, :c:macro:`___cpu_context_t_SIZEOF`
    and :c:macro:`___thread_stack_info_t_SIZEOF`
  * Enabled fp16 for Cortex-M55
  * Fixed a compilation issue with arm-clang and TrustZone
  * Implemented a new cache-management API
  * Added support for generating zImage headers
  * Introduced a new :c:func:`z_arm_on_enter_cpu_idle` hook on CPU idle

* ARM64

  * Removed absolute symbol :c:macro:`___callee_saved_t_SIZEOF`
  * Enabled FPU and FPU_SHARING for v8r aarch64
  * Fixed the STACK_INIT logic during the reset
  * Introduced and enabled safe exception stack
  * Fixed possible deadlock on SMP with FPU sharing
  * Added ISBs after SCTLR Modifications

* NIOS2

  * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`

* POSIX:

  * Added :c:macro:`Z_SPIN_DELAY` to allow to conditionally compile a k_busy_wait() for this arch
    in tests and samples.

* RISC-V

  * Added :kconfig:option:`CONFIG_PMP_NO_TOR`, :kconfig:option:`CONFIG_PMP_NO_NA4`, and
    :kconfig:option:`CONFIG_PMP_NO_NAPOT` to allow disabling unsupported PMP range modes.
  * Removed unused symbols: :c:macro:`_thread_offset_to_tp`,
    :c:macro:`_thread_offset_to_priv_stack_start`, :c:macro:`_thread_offset_to_user_sp`.
  * Added support for setting PMP granularity with :kconfig:option:`CONFIG_PMP_GRANULARITY`.
  * Switched from accessing CSRs from inline assembly to using the :c:func:`csr_read` helper
    function.
  * Enabled single-threading support.

* SPARC

  * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`

* Xtensa

  * Fixed the cross stack call mechanism during nested interrupts where stack would be
    corrupted under certain conditions.
  * Added initial support for MMU on Xtensa.
  * Now supports building with :kconfig:option:`CONFIG_MULTITHREADING` disabled so
    target can run in single thread only operations.
  * Added C structs to represent interrupt frames to help with debugging.

Bluetooth
*********

* General

  * Moved all logging symbols together in a new ``Kconfig.logging`` file.
  * Deprecated the ``BT_DEBUG_LOG`` option. Instead ``BT_LOG`` should be used.
  * Made the ``BT_LOG`` and ``BT_LOG_LEGACY`` options hidden.
  * Removed ``BT_DEBUG`` entirely.


* Audio

  * Implemented the CAP initiator broadcast audio start, stop and metadata
    update procedures.
  * Implemented the CAP unicast audio start, stop and metadata update procedures.
  * Implemented the Telephony and Media Audio Service (TMAS).
  * Added additional validation for MCC and MCS, including opcodes, values, etc.
  * Refactored and extended the scan delegator implementation, including
    integration with broadcast sink.
  * Added support for creating a broadcast sink from a PA sink.
  * Added support for optional characteristics in CSIP.
  * Implemented discovery by UUID instead of reading by UUID for multiple
    characteristics.
  * Added support for long reads and writes for multiple profiles.
  * Added support for long BAP ASE notifications and optimized long notify
    reads.
  * Offloaded MCS notifications to the system workqueue.
  * Added the CAP initiator cancel procedure.

* Direction Finding

* Host

  * Updated the Host to the v5.4 specification.
  * The GATT DB Hash is now recalculated upon loading settings.
  * Added experimental support for SMP keypress notifications.
  * Downgraded the severity of select log messages to avoid log flooding.
  * Separated the handling of LE SC OOB pairing from the legacy OOB logic.
  * Implemented the Encrypted Advertising Data feature.
  * Added support for the new Periodic Advertising with Responses (PAwR), both
    as an advertiser and as a scanner.
  * Added support for initiating connections from PAwR, as well as receiving
    connections while synced.
  * Clarified the behavior that is enabled by the ``BT_PRIVACY`` Kconfig option.
  * Introduced a new ``seg_recv`` L2CAP API for an application to receive
    segments directly and manage credits explicitly.

* Mesh

  * Added experimental support for Mesh Protocol d1.1r18 specification, gated
    by a new configuration option. This includes:

    * Enhanced Provisioning Authentication support.
    * Mesh Remote Provisioning support including:

      * Remote Provisioning Server and Client models.
      * Composition Data Page 128 and Models Metadata Page 128 support.

    * Large Composition Data support including:

      * Large Composition Data Server and Client models.
      * Models Metadata Page 0 support.

    * New Transport Segmentation and Reassembly (SAR) implementation including:

      * SAR Configuration Server and Client models.

    * Mesh Private Beacons support including:

      * Mesh Private Beacon Server and Client models.

    * Opcodes Aggregator support including:

      * Opcodes Aggregator Server and Client models.

    * Proxy Solicitation support including:

      * Solicitation PDU RPL Configuration Server and Client models.
      * On-Demand Private Proxy Server and Client models.

    * Composition Data Page 1 support.
    * Other Mesh Profile Enhancements.
  * Added experimental support for Mesh Binary Large Object Transfer Model d1.0r04_PRr00 specification.
  * Added experimental support for Mesh Device Firmware Update Model d1.0r04_PRr00 specification.
  * Fixed multiple profile errata.
  * Added experimental support for the PSA crypto APIs.
  * Added a new work queue to store mesh settings, including a new API for
    storing user data.
  * Disabled the models initialization macros for C++ as they use the compound
    literal feature from C99.
  * Deprecated Health Client and Configuration Client API have been removed.

* Controller

  * Implemented support for the central with multiple CIS usecase.
  * Implemented support for multiple peripheral CIS establishment.
  * Updated the Controller to the v5.4 specification.
  * Added support for coexistence with other transceivers.
  * Added support for multiple CIS/CIG setup/connect and teardown procedures in
    sequence.
  * Extended the ticker API to return expiration info.
  * Re-implemented Extended and Periodic Advertising, as well as and Broadcast
    ISO, using the new ticket expiration info feature.
  * Modified the ticker implementation to reschedule unreserved tickers that use
    ``ticks_slot_window``. Implement continuous scanning with it.
  * Added support for considering the SDU interval, along with the packet
    sequence number and time stamps, in SDU fragmentation.
  * Added a new ``BT_CTLR_TX_PWR_DBM`` option to set the TX power directly in
    dBm.
  * Optimized the RX path with support for piggy-backing notifications on
    already-allocated RX nodes.

* HCI Driver

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

* Added support for these SoC series:

  * STM32C0 series are now supported (with introduction of STM32C031 SoC).
  * STM32H5 series are now supported (with introduction of STM32H503 and STM32H573 SoCs).
  * Added support for STM32U599 SoC variants
  * Nordic Semiconductor nRF9161

* Removed support for these SoC series:

* Made these changes in other SoC series:

* Added support for these ARC boards:

  * DesignWare ARC HS4x/HS4xD Development Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 cores
  * nsim_hs3x_hostlink - simulation (nSIM-based) platform with hostlink UART

* Added support for these ARM boards:

  * Aconno ACN52832
  * Alientek STM32L475 Pandora
  * Arduino GIGA R1 Wi-Fi
  * BeagleConnect Freedom
  * Infineon PSoC™ 6 BLE Prototyping Kit (CY8CPROTO-063-BLE)
  * Infineon PSoC™ 6 Wi-Fi BT Prototyping Kit (CY8CPROTO-062-4343W)
  * Infineon XMC4700 Relax Kit
  * MXChip AZ3166 IoT DevKit
  * Nordic Semiconductor nRF9161 DK
  * NXP MIMXRT1040-EVK
  * NXP MIMXRT1062 FMURT6
  * PHYTEC PhyBOARD Polis (NXP i.MX8M Mini)
  * PHYTEC PhyBOARD Pollux (NXP i.MX8M Plus)
  * Raspberry Pi Pico W
  * Raytac MDBT50Q-DB-33
  * Raytac MDBT50Q-DB-40
  * Seeed Studio Wio Terminal
  * Seeed Studio XIAO BLE Sense
  * Silicon Labs BRD2601B
  * Silicon Labs BRD4187C
  * Silicon Labs EFR32 Thunderboard-style boards
  * ST Nucleo C031C6
  * ST Nucleo F042K6
  * ST Nucleo H563ZI
  * ST STM32H573I-DK Discovery
  * Xilinx KV260 (Cortex-R5)

* Added support for these ARM64 boards:

  * PHYTEC phyCORE-AM62x A53
  * NXP i.MX93 EVK A55 (SOF variant)

* Added support for these RISC-V boards:

  * Intel FPGA Nios® V/m
  * ITE IT82XX2 EV-Board

* Added support for these X86 boards:

* Added support for these Xtensa boards:

  * ESP32S3-DevKitM

* Made these changes for ARC boards:

  * Added ARC MWDT toolchain support for qemu_arc_hs
  * Improved emsdp platform support:

    * Added DFSS driver support
    * Added pinctrl support

* Made these changes for ARM boards:

  * ``atsamc21n_xpro``: Enable support to CAN.
  * ``atsame54_xpro``: Read Ethernet MAC from I2C.
  * Changed the default board revision to 0.14.0 for the Nordic boards
    ``nrf9160dk_nrf9160`` and ``nrf9160dk_nrf52840``. To build for an
    older revision of the nRF9160 DK without external flash, specify that
    older board revision when building.
  * ``nrf9160dk_nrf52840``: Enabled external_flash_pins_routing switch by default.
  * ``nrf9160dk_nrf9160``: Changed the order of buttons and switches on the GPIO
    expander to match the order when using GPIO directly on the nRF9160 SoC.
  * ``STM32H747i_disco``: Enabled support for ST B-LCD40-DSI1 display extension
  * ``qemu_cortex_m0``: Fixed prescaler of the system timer so that its frequency
    is actually 1 MHz, not 2 MHz.

* Made these changes for ARM64 boards:

  * FVP revc_2xaemv8a / aemv8r: Added ethernet, PHY and MDIO nodes

* Made these changes to POSIX boards:

   * nrf52_bsim now includes support and models for:

     * 802.15.4 in the RADIO.
     * EGU.
     * FLASH (NVMC & UICR).
     * TEMP.
     * UART connected to a host ptty.
     * Many more minor CMSIS API and nRF APIs and drivers.

* Made these changes for RISC-V boards:

  * ``gd32vf103``: No longer requires special OpenOCD version.

* Made these changes for X86 boards:

* Made these changes for Xtensa boards:

* Removed support for these ARC boards:

* Removed support for these ARM boards:

* Removed support for these RISC-V boards:

  * BeagleV Starlight JH7100

* Removed support for these X86 boards:

* Removed support for these Xtensa boards:

* Made these changes in other boards:

* Added support for these following shields:

  * Adafruit Data Logger Shield
  * nPM1300 EK (Power Management Integrated Circuit (PMIC))
  * Panasonic Grid-EYE Shields
  * ST B_LCD40_DSI1_MB1166

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

* Fixed an issue whereby older versions of the Zephyr SDK toolchain were used
  instead of the latest compatible version.

* Fixed an issue whereby building an application with sysbuild and specifying
  mcuboot's verification to be checksum only did not build a bootable image.

* Fixed an issue whereby if no prj.conf file was present then board
  configuration files would not be included by emitting a fatal error. As a
  result, prj.conf files are now mandatory in projects.

* Introduced support for extending/replacing the signing mechanism in zephyr,
  see :ref:`West extending signing <west-extending-signing>` for further
  details.

* Fixed an issue whereby when using ``*_ROOT`` variables with Sysbuild, these
  were lost for images.

* Enhanced ``zephyr_get`` CMake helper function to optionally support merging
  of scoped variables into a list.

* Added a new CMake helper function for setting/updating sysbuild CMake cache
  variables: ``sysbuild_cache_set``.

* Enhanced ``zephyr_get`` CMake helper function to lookup multiple variables
  and return the result in a variable of different name.

* Introduced ``EXTRA_CONF_FILE``, ``EXTRA_DTC_OVERLAY_FILE``, and
  ``EXTRA_ZEPHYR_MODULES`` for better naming consistency and uniform behavior
  for applying extra build settings in addition to Zephyr automatic build
  setting lookup.
  ``EXTRA_CONF_FILE`` replaces ``OVERLAY_CONFIG``.
  ``EXTRA_ZEPHYR_MODULES`` replaces ``ZEPHYR_EXTRA_MODULES``.
  ``EXTRA_DTC_OVERLAY_FILE`` is new, see
  :ref:`Set devicetree overlays <set-devicetree-overlays>` for further details.

* Twister now supports ``gtest`` harness for running tests written in gTest.

* Added an option to validate device initialization priorities at build time.
  To use it, enable :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES`, see
  :ref:`check_init_priorities.py` for more details.

* Added a new option to disable tracking of macro expansion when compiling,
  :kconfig:option:`CONFIG_COMPILER_TRACK_MACRO_EXPANSION`. This option may be
  disabled to reduce compiler verbosity when errors occur during macro
  expansions, e.g. in device definition macros.

* Twister now supports loading test configurations from alternative root
  folder/s by using ``--alt-config-root``. When a test is found, Twister will
  check if a test configuration file exist in any of the alternative test
  configuration root folders. For example, given
  ``$test_root/tests/foo/testcase.yaml``, Twister will use
  ``$alt_config_root/tests/foo/testcase.yaml`` if it exists.

* Twister now uses native YAML lists for fields that were previously defined
  using space-separated strings. For example:

  .. code-block:: yaml

     platform_allow: foo bar

  can now be written as:

  .. code-block:: yaml

     platform_allow:
       - foo
       - bar

  This applies to the following properties:

    - ``arch_exclude``
    - ``arch_allow``
    - ``depends_on``
    - ``extra_args``
    - ``extra_sections``
    - ``platform_exclude``
    - ``platform_allow``
    - ``tags``
    - ``toolchain_exclude``
    - ``toolchain_allow``

  Note that the old behavior is kept as deprecated. The
  :zephyr_file:`scripts/utils/twister_to_list.py` script can be used to
  automatically migrate Twister configuration files.

* When MCUboot image signing is enabled, a warning will now be emitted by cmake
  if no signing key is set in the project, this warning can be safely ignored
  if signing is performed manually or outside of zephyr. This warning informs
  the user that the generated image will not be bootable by MCUboot as-is.

* Babblesim is now included in the west manifest. Users can fetch it by enabling
  the ``babblesim`` group with west config.

* ``west sign`` now uses DT labels, of "fixed-partition" compatible nodes, to identify
  application image slots, instead of previously used DT node label properties.
  If you have been using custom partition layout for MCUboot, you will have to label
  your MCUboot slot partitions with proper DT node labels; for example partition
  with "image-0" label property will have to be given slot0_partition DT node label.
  Label property does not have to be removed from partition node, but will not be used.

  DT node labels used are listed below

  .. table::
     :align: center

     +---------------------------------+---------------------------+
     | Partition with label property   | Required DT node label    |
     +=================================+===========================+
     | "image-0"                       | slot0_partition           |
     +---------------------------------+---------------------------+
     | "image-1"                       | slot1_partition           |
     +---------------------------------+---------------------------+

* Fixed an issue whereby relative paths supplied for the ``BOARD_ROOT`` value
  might wrongly emit a warning about a ``boards`` directory not being found.

* Fixed an issue whereby relative paths did not work for sysbuild images.

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

* Device model

  * Devices that do not require an initialization routine can now pass ``NULL``
    to the ``DEVICE_*_DEFINE()`` macros.

* Auxiliary display

  * New auxiliary display (auxdisplay) peripheral has been added, this allows
    for interfacing with simple alphanumeric displays that do not feature
    graphic capabilities. This peripheral is marked as unstable.

  * HD44780 driver added.

  * Noritake Itron driver added.

  * Grove LCD driver added (ported from existing sample).

* ADC

  * MCUX LPADC driver now uses the channel parameter to select a software channel
    configuration buffer. Use ``zephyr,input-positive`` and
    ``zephyr,input-negative`` devicetree properties to select the hardware
    channel(s) to link a software channel configuration to.
  * MCUX LPADC driver ``voltage-ref`` and ``power-level`` devicetree properties
    were shifted to match the hardware as described in reference manual instead
    of matching the NXP SDK enum identifiers.
  * Added support for STM32C0 and STM32H5.
  * Added DMA support for STM32H7.
  * STM32: Resolutions are now listed in the device tree for each ADC instance
  * STM32: Sampling times are now listed in the device tree for each ADC instance
  * Added driver for Atmel SAM family ADC.
  * Added driver for Gecko Incremental ADC.
  * Added driver for Infineon CAT1 ADC.
  * Added driver for TI ADS7052.
  * Added driver for TI ADS114S0x family.
  * Added drivers for Renesas SmartBond GPADC and SDADC.

* Battery-backed RAM

  * Added MCP7940N battery-backed RTC SRAM driver.

* CAN

  * The CAN statistics are now reset when calling :c:func:`can_start`.

  * Renamed the NXP FlexCAN devicetree binding compatible from ``nxp,kinetis-flexcan`` to
    :dtcompatible:`nxp,flexcan`.

  * Added support for the CAN-FD variant of the NXP FlexCAN controller using devicetree binding
    :dtcompatible:`nxp,flexcan-fd`.

  * Added support for the NXP NXP S32 CANEXCEL controller using devicetree binding
    :dtcompatible:`nxp,s32-canxl`.

  * Added support for the Atmel SAM0 CAN controller using devicetree binding
    :dtcompatible:`atmel,sam0-can`.

  * Refactored the Bosch M_CAN controller driver backend to allow for per-instance configuration via
    devicetree.

  * Now supports STM32H5 series.

* Clock control

  * Atmel SAM/SAM0: Introduced peripheral clock control.
  * Atmel SAM0: Improved ``samd20``/``samd21``/``samr21`` clocking mechanism.
  * STM32F4: Added support for PLL I2S

* Console:

  * The native_posix and bsim console drivers have been merged into one generic
    driver usable by all POSIX arch based boards.

* Counter

  * Added support on timer based counter on STM32H7 and STM32H5
  * Added support on RTC based counter on STM32C0 and STM32H5

* Crypto

  * Added support for STM32H5 AES

* DAC

  * Added support on STM32H5 series.

* Disk

  * SDMMC STM32L4+: Now compatible with internal DMA
  * NVME disks are now supported using FATFS, with a single I/O queue enabled

* Display

  * Improved MCUX ELCDIF and SSD16XX display controller drivers
  * Added support for ILI9342C display controller
  * Added support for OTM8009A panel

* DMA

  * STM32C0: Added support for DMA
  * STM32H5: Added support for GPDMA
  * STM32H7: Added support for BDMA
  * Added DMA support for the RP2040 SoC

* EEPROM

  * Switched from :dtcompatible:`atmel,at24` to dedicated :dtcompatible:`zephyr,i2c-target-eeprom` for I2C EEPROM target driver.

* Entropy

  * Added support for STM32H5 series.

* Flash

  * Introduced new flash API call :c:func:`flash_ex_op` which calls
    :c:func:`ec_op` callback provided by a flash driver. This allows to perform
    extra operations on flash devices, defined by Zephyr Flash API or by vendor
    specific header files. :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` should be
    selected by the driver to indicate that extra operations are supported.
    To enable extra operations user should select
    :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED`.
  * STM32F4: Now supports write protection and readout protection through
    new flash API call :c:func:`flash_ex_op`.
  * nrf_qspi_nor: Replaced custom API function ``nrf_qspi_nor_base_clock_div_force``
    with ``nrf_qspi_nor_xip_enable`` which apart from forcing the clock divider
    prevents the driver from deactivating the QSPI peripheral so that the XIP
    operation is actually possible.
  * flash_simulator:

    * A memory region can now be used as the storage area for the
      flash simulator. Using the memory region allows the flash simulator to keep
      its contents over a device reboot.
    * When building in native_posix, command line options have been added to select
      if the flash should be cleared at boot, the flash content kept in RAM,
      or the flash content file be deleted on exit.

  * spi_flash_at45: Fixed erase procedure to properly handle chips that have
    their initial sector split into two parts (usually marked as 0a and 0b).
  * STM32H5 now supports OSPI

* GPIO

  * Converted the ``gpio_keys`` driver to the input subsystem.
  * Added single-ended IO support for the RP2040 SoC

  * STM32: Supports newly introduced experimental API to enable/disable interrupts
    without re-config

* I2C

  * Added support for STM32C0 and STM32H5 series

* I2S

  * STM32: Domain clock should now be configured by device tree.

* Input

  * Introduced the :ref:`input` subsystem.

* KSCAN

  * Added a :dtcompatible:`zephyr,kscan-input` input to kscan compatibility driver.
  * Converted the ``ft5336`` and ``kscan_sdl`` drivers to the input subsystem.

* MIPI-DSI

  * Added support on STM32H7

* Misc

   * Added PIO support for the RP2040 SoC

* PCIE

  * Enable filtering PCIe devices by class/revision.

* PECI

* Retained memory

  * Retained memory (retained_mem) driver has been added with backends for
    Nordic nRF GPREGRET, and uninitialised RAM.

* Pin control

  * Added support for Infineon CAT1
  * Added support for TI K3
  * Added support for ARC emdsp

* PWM

  * Added support for STM32C0.
  * STM32: Now supports 6-PWM channels
  * Added PWM driver for Microchip XEC BBLED.

* Power domain

* Regulators

  * The regulator API can now be built without thread-safe reference counting
    by using :kconfig:option:`CONFIG_REGULATOR_THREAD_SAFE_REFCNT`. This
    feature can be useful in applications that do not enable
    :kconfig:option:`CONFIG_MULTITHREADING`.
  * Added support for ADP5360 PMIC
  * Added support for nPM1300 PMIC
  * Added support for Raspberry Pi Pico core supply regulator

* SDHC

  * Support was added for using CPOL/CPHA SPI clock modes with SD cards, as
    some cards require the SPI clock switch to low when not active

* Sensor

  * Added generic voltage measurement sample
  * Removed STM32 Vbat measurement sample (replaced by a generic one)
  * Added STM32 Vref sensor driver
  * Added STM32 Vref/Vbat measurement through the new generic voltage measurement sample
  * Added temperature measurement driver for STM32C0 and STM32F0x0
  * Removed STM32 temperature measurement sample (replaced by a generic one)
  * Added STM32 temperature measurement through the generic temperature measurement sample

* Serial

  * Added UART3 and UART4 configuration for ``gd32vf103`` SoCs.
  * uart_altera: added new driver for Altera Avalon UART.
  * uart_emul: added new driver for emulated UART.
  * uart_esp32:
    * Added support for ESP32S3 SoC.
    * Added support for RS-485 half duplex mode.
  * uart_hostlink: added new driver for virtual UART via Synopsys ARC hostlink channels.
  * uart_ifx_cat1: added new driver for Infineon CAT1 UART.
  * uart_mcux: added power management support.
  * uart_mcux_flexcomm: added support for asynchronous operations.
  * uart_mcux_lpuart: added support for parity.
  * uart_ns16550: now supports per instance hardware access mode instead of
    one access mode for all instances.
  * uart_pl011: fixed interrupt support.
  * uart_rpi_pico_pio: added new driver to support UART via
    Programmable Input/Output (PIO) on Raspberry Pi Pico.
  * uart_xmc4xxx: added support for asynchronous operations.
  * uart_stm32: Now support driver enable mode
  * Added hardware flow control support for the RP2040 SoC

* SPI

  * Added support on STM32H5 series.

* Timer

  * Support added for stopping Nordic nRF RTC system timer, which fixes an
    issue when booting applications built in prior version of Zephyr.

  * STM32: Now supports a prescaler at the input of clock (default not divided).
    Prescaler allows to achieve higher LPTIM timeout (up to 256s when lptim clocked by LSE)
    and consequently higher core sleep durations but impacts the tick precision.
    To be used with caution.

* USB

   * Added remote wakeup support for the RP2040 SoC
   * Added Battery Charging (BC12) API and PI3USB9201 driver implementation.
   * Added new USB device controller drivers (using usb_dc API) for ITE IT82xx2
     and smartbond platforms.
   * Added USB device controller driver skeleton for UDC API.
   * Reworked DWC2 driver and added support for STM32F4 SoC family

* W1

  * Added DS2482-800 1-Wire master driver. See the :dtcompatible:`maxim,ds2482-800`
    devicetree binding for more information.
  * Added :kconfig:option:`CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING` which can be
    enabled force the 1-Wire network layer to use multidrop addressing.

* Watchdog

  * Added support for STM32C0 and STM32H5 series

Networking
**********

* CoAP:

  * Added :c:func:`coap_append_descriptive_block_option` and
    :c:func:`coap_get_block1_option` APIs to facilitate block transfer handling.
  * Added a :ref:`coap_client_interface` helper library, based on the existing CoAP APIs.
  * Fixed missing token length validation in :c:func:`coap_header_get_token`.
  * Fixed missing response check in :c:func:`coap_response_received`.

* Connection Manager:

  * Extended the library with a generic L2 connectivity API.
  * Refactored library internals significantly.
  * Improved thread safety in the library.
  * Reworked how Connection Manager events are notified - they are no longer
    raised for each interface individually, but instead:

    * ``NET_EVENT_L4_CONNECTED`` is called only once after the first
      interface gains connectivity.
    * ``NET_EVENT_L4_DISCONNECTED`` is called only after connectivity is
      lost on all interfaces.

  * Improved Connection Manager test coverage.

* DHCPv4:

  * Fixed a potential packet leak in DHCPv4 input handler.
  * Fixed a potential NULL pointer dereference in ``dhcpv4_create_message()``.
  * Added a mechanism to register a callback for handling DHCPv4 options.
  * Modified ``dhcpv4_client`` sample to trigger DHCP on all network interfaces
    in the system.

* DNS:

  * Fixed a possible crash on NULL pointer as a query callback.
  * Added a check on existing DNS servers before reconfigure.
  * Improved debug logging in DNS SD.
  * Fixed IPv4/IPv6 address handling in mDNS responder, if both are IPv4 and IPv6 are enabled.
  * Removed dead code in DNS SD query parsing.

* Ethernet:

  * Fixed double packet dereference in case of ARP request transmission errors.
  * Fixed a possible slist corruption in case Ethernet interface went up before
    LLDP initialization.

* HTTP:

  * Added HTTP service and resource iterable sections.

* ICMPv6:

  * Implemented IPv6 RA Recursive DNS Server option handling.

* IEEE802154:

  * Fixed a corner case with 6LoWPAN IP Header Compression and fragmentation, where
    for a short range of packet sizes, fragmentation did not work correctly after IPHC.
  * Added new radio API function to start continuous carrier wave transmission.
  * Several improvements/fixes in IEEE802154 L2 security.
  * Fixed a packet leak when handling beacon/command frames.
  * Deprecated :kconfig:option:`CONFIG_IEEE802154_2015` Kconfig option.
  * Added simple Babblesim echo test over IEEE802154 L2.
  * Improved IEEE802154 L2 test coverage.
  * Multiple other minor IEEE802154 L2 and documentation improvements/fixes.

* IPv4:

  * Implemented a fallback to IPv4 Link Local address if no other address is available.
  * Fixed :c:func:`net_ipv4_is_ll_addr` helper function to correctly identify LL address.
  * Fixed possible NULL pointer dereference in IPv4 fragmentation.

* LwM2M:

  * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_UPDATE` event.
  * Added missing ``const`` qualifier in the APIs, where applicable.
  * Fixed socket error handling on packet transmission.
  * Improved LwM2M context cleanup when falling back to regular Registration.
  * Added possibility to register a callback function for FW update cancel action.
  * Added possibility to register a callback function for LwM2M send operation.
  * Added ISPO voltage sensor object support.
  * Fixed stopping of the LwM2M client when it's suspended.
  * Fixed a minor CoAP RFC incompatibility, where it should not be assumed that
    consecutive data blocks in block transfer will carry the same token.
  * Added block transfer support on TX.
  * Fixed a possible out-of-bounds memory access when creating FW update object.
  * Added possibility to override default socket option configuration with a
    dedicated callback function (``set_socketoptions``).
  * Improved LwM2M test coverage.
  * Several other minor improvements and cleanups.

* Misc:

  * Added generic ``OFFLOADED_NETDEV_L2`` for offloaded devices to allow
    offloaded implementations to detect when interface is brought up/down.
  * Factored out ``net_buf_simple`` routines to a separate source file.
  * Fixed possible NULL pointer dereference in ``net_pkt_cursor_operate()``.
  * Reimplemented ``net_mgmt`` to use message queue internally. This also fixed
    a possible event loss with the old implementation.
  * Fixed error handling in ``net ping`` shell command to avoid shell freeze.
  * Improved Ethernet error statistics logging in ``net stats`` shell command.
  * Moved SLIP TAP implementation into a separate file, to prevent build warnings
    about missing sources for Ethernet drivers.
  * Fixed crashes in ``echo_server`` and ``echo_client`` samples, when
    userspace is enabled.
  * Fixed IPv6 support in ``mqtt_sn_publisher`` sample.
  * Fixed build issues with arm-clang in the networking stack.
  * Added new ``NET_IF_IPV6_NO_ND`` and ``NET_IF_IPV6_NO_MLD`` interface flags,
    which allow to disable ND/MLD respectively on an interface.
  * Reworked network interface mutex protection, to use individual mutex for
    each interface, instead of a global one.
  * Added new :zephyr:code-sample:`aws-iot-mqtt`.
  * Added a few missing NULL pointer checks in network interface functions.

* OpenThread:

  * Implemented the following OpenThread platform APIs:

    * ``otPlatRadioSetMacFrameCounterIfLarger()``,
    * ``otPlatCryptoEcdsaGenerateAndImportKey()``,
    * ``otPlatCryptoEcdsaExportPublicKey()``,
    * ``otPlatCryptoEcdsaVerifyUsingKeyRef()``,
    * ``otPlatCryptoEcdsaSignUsingKeyRef()``.

  * Added :kconfig:option:`CONFIG_OPENTHREAD_CSL_TIMEOUT` option.
  * Removed no longer needed ``CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB``.
  * Added simple Babblesim echo test over OpenThread.

* SNTP:

  * Switched to use ``zsock_*`` functions internally.

* Sockets:

  * Fixed ``SO_RCVBUF`` and ``SO_SNDBUF`` socket options handling, so that they
    configure TCP window sizes correctly.
  * Fixed ``SO_SNDTIMEO`` socket option handling - the timeout value was ignored
    and socket behaved as in non-blocking mode when used.
  * Reworked TLS sockets implementation, to allow parallel TX/RX from
    different threads.
  * Implemented TLS handshake timeout.
  * Added support for asynchronous connect for TCP sockets.
  * Fixed blocking :c:func:`recv` not being interrupted on socket close.
  * Fixed blocking :c:func:`accept` not being interrupted on socket close.
  * Improved sockets test coverage.

* TCP:

  * Fixed incorrect TCP stats by improving packet processing result reporting.
  * Added :kconfig:option:`CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT` to allow to configure
    packet allocation timeout.
  * Improved TCP test coverage.
  * Fixed TCP MSS calculation for IPv6.
  * Fixed possible double acknowledgment of retransmitted data.
  * Fixed local address setting for incoming connections.
  * Fixed double TCP context dereferencing in certain corner cases.

* TFTP:

  * Added ``tftp_put()`` API to support TFTP write request.
  * Introduced ``tftp_callback_t`` callback to allow to read large files.
  * Reworked ``struct tftpc`` client context structure, to allow for parallel
    communication from several contexts.

* UDP:

  * :kconfig:option:`CONFIG_NET_UDP_MISSING_CHECKSUM` is now enabled by default.

* Websockets:

  * Implemented proper timeout handling in :c:func:`websocket_recv_msg`.
  * Fixed implicit type conversion when parsing length field, which could lead
    to data loss.

* Wi-Fi:

  * Display TWT (Target Wake Time) configuration response status in Wi-Fi shell.
  * Added more detailed TWT response parameters printout in Wi-Fi shell.
  * Added new ``NET_EVENT_WIFI_TWT_SLEEP_STATE`` event to notify TWT sleep status.
  * Fixed an issue where not all security modes were displayed correctly on scan.
  * Added connection status and AP capabilities verification before initiating
    TWT operation.
  * TWT intervals are changed from milliseconds to microseconds, interval
    variables are also renamed.
  * Extended Power Saving configuration parameters with listening interval and
    wake up mode.
  * Added :kconfig:option:`CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS` option, which
    enables providing of RAW (unprocessed) scan results to the application with
    ``NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT`` event.
  * Several other minor fixes/cleanups in the Wi-Fi management/shell modules.

* zperf

  * Added an extra parameter to disable Nagle's algorithm with TCP benchmarks.
  * Added support for handling multiple incoming TCP sessions.
  * Made zperf thread priority and stack size configurable.
  * Several minor cleanups in the module.

USB
***

* USB device support

  * Fixed control endpoint handling with MPS of 8 bytes.

* New experimental USB support

  * Various improvements for new device support, better string descriptor support,
    implemented usbd_class_shutdown API.
  * Added USB Mass Storage class and CDC ECM class implementations for the new
    device support.

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

* File systems

  * Added :kconfig:option:`CONFIG_FS_FATFS_REENTRANT` to enable the FAT FS reentrant option.
  * With LittleFS as backend, :c:func:`fs_mount` return code was corrected to ``EFAULT`` when
    called with ``FS_MOUNT_FLAG_NO_FORMAT`` and the designated LittleFS area could not be
    mounted because it has not yet been mounted or it required reformatting.
  * The FAT FS initialization order has been updated to match LittleFS, fixing an issue where
    attempting to mount the disk in a global function caused FAT FS to fail due to not being registered beforehand.
    FAT FS is now initialized in POST_KERNEL.
  * Added :kconfig:option:`CONFIG_FS_LITTLEFS_FMP_DEV` to enable possibility of using LittleFS
    for block devices only, e.g. without Flash support. The option is set to 'y' by default in
    order to keep previous behaviour.

* IPC

  * :c:func:`ipc_service_close_instance` now only acts on bounded endpoints.
  * ICMSG: removed race condition during bonding.
  * ICMSG: removed internal API for clearing shared memory.
  * ICMSG: added mutual exclusion access to SHMEM.
  * Fixed CONFIG_OPENAMP_WITH_DCACHE.

* Management

  * Added optional input expiration to shell MCUmgr transport, this allows
    returning the shell to normal operation if a complete MCUmgr packet is not
    received in a specific duration. Can be enabled with
    :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT` and timeout
    set with
    :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME`.

  * MCUmgr fs_mgmt upload and download now caches the file handle to improve
    throughput when transferring data, the file is no longer opened and closed
    for each part of a transfer. In addition, new functionality has been added
    that will allow closing file handles of uploaded/downloaded files if they
    are idle for a period of time, the timeout is set with
    :kconfig:option:`MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME`. There is a
    new command that can be used to close open file handles which can be used
    after a file upload is complete to ensure that the file handle is closed
    correctly, allowing other transports or other parts of the application
    code to use it.

  * A new version of the SMP protocol used by MCUmgr has been introduced in the
    header, which is used to indicate the version of the protocol being used.
    This updated protocol allows returning much more detailed error responses
    per group, see the
    :ref:`MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>`
    for details.

  * MCUmgr has now been marked as a stable Zephyr API.

  * The MCUmgr UDP transport has been refactored to resolve some concurrency
    issues and fixes a potential issue whereby an application might call the
    open transport function whilst it is already open, causing an endless log
    output loop.

  * The MCUmgr fs_mgmt group Kconfig ``Insecure`` text has been replaced with
    a CMake warning which triggers if fs_mgmt hooks are not enabled, as these
    hooks can be used to ensure security of file access allowed by MCUmgr
    clients.

  * Fixed an issue with MCUmgr fs_mgmt file download not checking if the
    offset parameter was provided.

  * Fixed an issue with MCUmgr fs_mgmt file upload notification hook not
    setting upload to true.

  * Fixed an issue with MCUmgr img_mgmt image upload ``upgrade`` field wrongly
    checking if the new image was the same version of the application and
    allowing it to be uploaded if it was.

  * MCUmgr img_mgmt group will only verify the SHA256 hash provided by the
    client against the uploaded image (if support is enabled) if a full SHA256
    hash was provided.

  * MCUmgr Kconfig options have changed from ``select`` to ``depends on`` which
    means that some additional Kconfig options may now need to be selected by
    applications. :kconfig:option:`CONFIG_NET_BUF`,
    :kconfig:option:`CONFIG_ZCBOR` and :kconfig:option:`CONFIG_CRC` are needed
    to enable MCUmgr support, :kconfig:option:`CONFIG_BASE64` is needed to
    enable shell/UART/dummy MCUmgr transports,
    :kconfig:option:`CONFIG_NET_SOCKETS` is needed to enable the UDP MCUmgr
    transport, :kconfig:option:`CONFIG_FLASH` is needed to enable MCUmgr
    fs_mgmt, :kconfig:option:`CONFIG_FLASH` and
    :kconfig:option:`CONFIG_IMG_MANAGER` are needed to enable MCUmgr img_mgmt.

  * MCUmgr img_mgmt group now uses unsigned integer values for image and slot
    numbers, these numbers would never have been negative and should have been
    unsigned.

* POSIX API

  * Improved the locking strategy for :c:func:`eventfd_read()` and
    :c:func:`eventfd_write()`. This eliminated a deadlock scenario that was
    present since the initial contribution and increased performance by a
    factor of 10x.

  * Reimplemented :ref:`POSIX <posix_support>` threads, mutexes, condition
    variables, and barriers using native Zephyr counterparts. POSIX
    synchronization primitives in Zephyr were originally implemented
    separately and received less maintenance as a result. Unfortunately, this
    opened POSIX up to unique bugs and race conditions. Going forward, POSIX
    will benefit from all improvements to Zephyr's synchronization and
    threading API and race conditions have been mitigated.

* Retention

  * Retention subsystem has been added which adds enhanced features over
    retained memory drivers allowing for partitioning, magic headers and
    checksum validation. See :ref:`retention API <retention_api>` for details.
    Support for the retention subsystem is experimental.

  * Boot mode retention module has been added which allows for setting/checking
    the boot mode of an application, initial support has also been added to
    MCUboot to allow for applications to use this as an entrance method for
    MCUboot serial recovery mode. See :ref:`boot mode API <boot_mode_api>` for
    details.

* RTIO

  * Added policy that every ``sqe`` will generate a ``cqe`` (previously an RTIO_SQE_TRANSACTION
    entry would only trigger a ``cqe`` on the last ``sqe`` in the transaction.

* Power management

  * Added a new policy event API that can be used to register expected events
    that will wake the system up in the future. This can be used to influence
    the system on which low power states can be used.

  * Added a new device tree property ``zephyr,pm-device-runtime-auto`` to
    automatically enable device runtime power management on a device after its
    initialization.

HALs
****

* Nordic

  * Updated nrfx to version 3.0.0.

* STM32

  * stm32cube: updated STM32F0 to cube version V1.11.4.
  * stm32cube: updated STM32F3 to cube version V1.11.4
  * stm32cube: updated STM32L0 to cube version V1.12.2
  * stm32cube: updated STM32U5 to cube version V1.2.0
  * stm32cube: updated STM32WB to cube version V1.16.0

* Raspberry Pi Pico

  * Updated hal_rpi_pico to version 1.5.0

MCUboot
*******

* Relocated the MCUboot Kconfig options from the main ``Kconfig.zephyr`` file to
  a new ``modules/Kconfig.mcuboot`` module-specific file. This means that, for
  interactive Kconfig interfaces, the MCUboot options will now be located under
  ``Modules`` instead of under ``Boot Options``.

* Added ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` that allows to pass arguments to
  west sign when invoked from cmake.

Storage
*******

* Added :kconfig:option:`CONFIG_FLASH_MAP_LABELS`, which will enable runtime access to the labels
  property of fixed partitions. This option is implied if kconfig:option:`CONFIG_FLASH_MAP_SHELL`
  is enabled. These labels will be displayed in a separate column when using the ``flash_map list``
  shell command.

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

* Enable routing of PSA Crypto API calls from NS to S, thanks to separating MbedTLS into three
  distinct libraries at build time (crypto, TLS, X.509). This also resolves header conflicts with
  earlier integrations of TF-M and MbedTLS.
* Added psa_crypto sample back.

zcbor
*****

Updated from 0.6.0 to 0.7.0.
Among other things, this update brings:

* C++ improvements
* float16 support
* Improved docs
* -Wall and -Wconversion compliance

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

* Two Babblesim based networking (802.15.4) tests have been added, which are run in Zephyr's CI
  system. One of them including the OpenThread stack.
* For native_posix and the nrf52_bsim: Many tests have been fixed and enabled.
* LittleFS sample has been given SPI example configuration for nrf52840dk_nrf52840.
* Migrated all tests to new Ztest API and deprecated legacy Ztest.

---

### Doc Releases Release Notes 3.5 (`doc/releases/release-notes-3.5.rst`)

:orphan:

.. _zephyr_3.5:

Zephyr 3.5.0
############

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

Major enhancements with this release include:

* Added support for linkable loadable extensions (llext)
* Added native_sim simulator target (successor to native_posix)
* Added new battery charger driver API
* Added new hardware spinlock driver API
* Added new modem subsystem
* Added support for 45+ new boards
* Networking: improvements to CoAP, Connection Manager, DHCP, Ethernet, gPTP, ICMP,
  IPv6 and LwM2M
* Bluetooth: improvements to the Controller, Audio, Mesh, as well as the host stack in
  general
* Improved LVGL graphics library integration
* Integrated support with the CodeChecker static analyzer
* Picolibc is now the default C standard library

An overview of the changes required or recommended when migrating your application from Zephyr
v3.4.0 to Zephyr v3.5.0 can be found in the separate :ref:`migration guide<migration_3.5>`.

The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************
The following CVEs are addressed by this release:

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

* CVE-2023-3725 `Zephyr project bug tracker GHSA-2g3m-p6c7-8rr3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2g3m-p6c7-8rr3>`_

* CVE-2023-4257 `Zephyr project bug tracker GHSA-853q-q69w-gf5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-853q-q69w-gf5j>`_

* CVE-2023-4258 `Zephyr project bug tracker GHSA-m34c-cp63-rwh7
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m34c-cp63-rwh7>`_

* CVE-2023-4259 `Zephyr project bug tracker GHSA-gghm-c696-f4j4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gghm-c696-f4j4>`_

* CVE-2023-4260 `Zephyr project bug tracker GHSA-gj27-862r-55wh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gj27-862r-55wh>`_

* CVE-2023-4263 `Zephyr project bug tracker GHSA-rf6q-rhhp-pqhf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rf6q-rhhp-pqhf>`_

* CVE-2023-4264 `Zephyr project bug tracker GHSA-rgx6-3w4j-gf5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rgx6-3w4j-gf5j>`_

* CVE-2023-4424: Under embargo until 2023-11-01

* CVE-2023-5055: Under embargo until 2023-11-01

* CVE-2023-5139: Under embargo until 2023-10-25

* CVE-2023-5184 `Zephyr project bug tracker GHSA-8x3p-q3r5-xh9g
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8x3p-q3r5-xh9g>`_

* CVE-2023-5563 `Zephyr project bug tracker GHSA-98mc-rj7w-7rpv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-98mc-rj7w-7rpv>`_

* CVE-2023-5753 `Zephyr project bug tracker GHSA-hmpr-px56-rvww
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hmpr-px56-rvww>`_

Kernel
******

* Added support for dynamic thread stack allocation via :c:func:`k_thread_stack_alloc`
* Added support for :c:func:`k_spin_trylock`
* Added :c:func:`k_object_is_valid` to check if a kernel object is valid. This replaces
  code that has been duplicated throughout the tree.

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

* ARC

 * Introduced the scalar port for ARC VPX processors
 * Introduced support for ARCv3 HS (both 32 and 64 bit) SMP platforms with up to 12 CPU cores
 * Reworked GNU helper tools usage for ARC MWDT toolchain. Now helper tools can be used from
   Zephyr SDK (if SDK is installed)
 * Fixed dynamic thread stack allocation
 * Fixed STR assembly macro offset calculation issue which may cause build error for ARCv3 64bit
 * Cleaned-up and made more user friendly handling of the ARC MWDT toolchain path
   (ARCMWDT_TOOLCHAIN_PATH)

* ARM

  * Architectural support for Arm Cortex-M has been separated from Arm
    Cortex-A and Cortex-R. This includes separate source modules to handle
    tasks like IRQ management, exception handling, thread handling and swap.
    For implementation details see :github:`60031`.

* ARM64

* RISC-V

  * Added support for detecting null pointer exception using PMP.
  * Added the :kconfig:option:`CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET`
    option to allow IRQ vector at a specified offset to meet the requirements
    set by the Core-Local Interrupt Controller RISC-V specification.
  * Added the :kconfig:option:`CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO` option to
    allow the use of custom system input/output functions.
  * Introduced the :kconfig:option:`CONFIG_RISCV_TRAP_HANDLER_ALIGNMENT` option
    to set the correct alignment of the trap handling code which is dependent on
    the ``MTVEC.BASE`` field size and is platform or application-specific.

* Xtensa

  * Added basic MMU v2 Support.

* x86

  * Added support for Intel Alder Lake boards
  * Added support for Intel Sensor Hub (ISH)

* POSIX

  * Has been reworked to use the native simulator.
  * New boards have been added.
  * For the new boards, embedded C libraries can be used, and conflicts with the host symbols
    and libraries avoided.
  * The :ref:`POSIX OS abstraction<posix_support>` is supported in these new boards.
  * AMP targets are now supported.
  * Added support for LLVM source profiling/coverage.

Bluetooth
*********

* Audio

  Improved memory usage of codec configurations and codec capabilities. Fixed several bugs in BAP
  and the BAP-related services (ASCS, PACS, BASS), as well as missing features such as proper
  notification handling.

  * Added BAP ``bt_bap_stream_get_tx_sync``
  * Added CAP stream send and tx sync
  * Added ``bt_audio_codec_cap_get`` helper functions
  * Added support for long read/write in CAP
  * Fixed ASCS Source ASE link loss state transition
  * Fixed ASCS possible ASE leak
  * Fixed ASCS to drop ISO PDUs if ASE is not in streaming state
  * Fixed BAP ``bt_bap_scan_delegator_find_state`` implementation
  * Fixed BAP issue with PA sync and ID in ``broadcast_sink_create``
  * Fixed TMAS characteristic permissions
  * Fixed ``tbs_client`` missing discovery complete event
  * Fixed audio stack to accept empty CCID list in audio metadata
  * Fixed bad size of metadata_backup in ASCS
  * Fixed possible ASCS ASE stuck in releasing state
  * Refactored ``bt_audio_codec_cap`` to flat arrays
  * Refactored ``bt_audio_codec_cfg`` to flat arrays
  * Removed ``CONFIG_BT_PACS_{SNK,SRC}_CONTEXT``
  * Removed scanning and PA sync from broadcast sink
  * Renamed ``bt_codec`` to ``bt_audio_codec_{cap, conf, data}``
  * Renamed codec qos framing
  * Replaced ``BT_AUDIO_CODEC_LC3_ID`` -> ``BT_HCI_CODING_FORMAT_LC3``
  * Replaced ``BT_AUDIO_CODEC_PARSE_ERR_`` values with errno values.
  * Reworked PACS notify system
  * Updated ASCS ISO QOS based on BAP QOS
  * Updated BAP to filter PA data duplicates by default
  * Updated CSIP to unlock Non-bonded devices immediately.
  * Updated PACS to notify bonded clients on reconnect
  * Updated ``bt_cap_stream_ops_register`` to always register BAP callbacks
  * Updated the ASCS ACL disconnect behavior
  * Updated to split ``bt_audio_codec_meta_get`` to ``cfg`` and ``cap``

* Direction Finding

* Host

  * Added SMP bondable flag overlay per connection
  * Added USE_NRPA advertising option
  * Added ``BT_CONN_PARAM_ANY`` to allow setting any value to connection parameters
  * Added advanced broadcast ISO parameters
  * Added advanced unicast ISO parameters
  * Added new API to manage Bluetooth settings storage
  * Fixed HCI ISO Data packets fragmentation
  * Fixed HCI ISO SDU length sent to controller
  * Fixed OTS ``bt_ots_init`` parameter struct naming
  * Fixed OTS memory leak while procedure is not finished
  * Fixed a connection reference leak
  * Fixed forced pairing request handling
  * Fixed host to invalidate the Resolvable Private Address when starting legacy advertising
  * Fixed issue with ``bt_iso_cig_reconfigure``
  * Fixed possible buffer overflow in ``bt_conn_le_start_encryption``
  * Fixed some SMP issues
  * Fixed to abort pairing if connection disconnected
  * Updated L2CAP accept callbacks
  * Updated LE L2CAP connected callback to be after connection response
  * Updated PAwR implementation to use RPA as responder address if BT_PRIVACY=y

* Mesh

  * Added TF-M support.
  * Added support to use both tinycrypt and PSA based crypto
  * Added full virtual addresses support with the collisions resolution. The
    :kconfig:option:`CONFIG_BT_MESH_LABEL_NO_RECOVER` Kconfig option is introduced to restore the
    addresses for the subscription list and model publication.
  * Added statistic module.
  * Fixed an issue where a node acting as a LPN was triggering Friend Poll messages when sending a
    segmented message over the loopback interface.
  * Fixed an issue where provisioning completes successfully on a node when the identical Public Key
    is used by a  provisioner.
  * Fixed an issue where the :c:func:`settings_load` function called from a cooperative thread other
    than the system workqueue caused the GATT Mesh Proxy Service registration to fail.
  * Fixed an issue where a node could enter IV Update in Progress state if an old SNB with the
    current IV Index and IV Update flag set to 1 was resent.

  * Mesh Protocol v1.1 changes

    * Added storing Private GATT Proxy state persistently.
    * Added support for Firmware Distribution Upload OOB Start message in the Firwmware Distribution
      Server model. The message support can be enabled with the
      :kconfig:option:`CONFIG_BT_MESH_DFD_SRV_OOB_UPLOAD` Kconfig option.
    * Added extended provisioning protocol timeout when OOB methods are used in the provisioning.
    * Added support for Composition Data Pages 2, 129 and 130.
    * Added documentation for Composition Data Pages 0, 1, 2, 128, 129 and 130.
    * Added documentation for the Segmentation and Reassembly in the Transport layer.
    * Added documentation for the SAR Configuration models
    * Fixed an issue where the Opcode Aggregator Server model did not compile without the Opcode
      Aggregator Client model.
    * Fixed an issue where the identity address was used in Private GATT Proxy advertisements
      instead of Non-Resolvable Private Addresses.
    * Fixed the Proxy Privacy parameter support.
    * Fixed an issue where the Composition Data Page 128 was not present on a node that has
      instantiated the Remote Provisioning Server model.
    * Fixed an issue where the Large Composition Data Server model did not support Composition Data
      Pages other then 0.
    * Fixed an issue where the Remote Provisioning Client model instanted on a node together with
      the Remote Provisioning Server model could not reprovision itself.
    * Fixed an issue where the acknowledgment timer in the Segmentation and Reassembly was not
      restarted when the incoming Segment Acknowledgment message did not contain at least one
      segment newly marked as acknowledged.
    * Fixed an issue where the On-Demand Private Proxy Server and Client models had interdependency
      that did not allow to compile them separately.

* Controller

  Improved support for Broadcast and Connected Isochronous channels in the Controller, enabling
  LE audio application development. The Controller is experimental, is missing implementations for
  interleaved packing in Isochronous channels' lower link layer.

  * Added Checks for minimum sizes of Adv PDUs
  * Added Kconfig Option to ignore Tx HCI ISO Data Packet Seq Num
  * Added Kconfig for avoiding ISO SDU fragmentation
  * Added Kconfig to maximize BIG event length and preempt PTO & CTRL subevents
  * Added ``BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX`` Kconfig
  * Added memory barrier to ticker transactions
  * Added missing nRF53x Tx Power Kconfig
  * Added support for Flush Timeout in Connected ISO
  * Fixed BIS payload sliding window overrun check
  * Fixed CIS Central FT calculation
  * Fixed CIS Central error handling
  * Fixed CIS asymmetric PHY usage
  * Fixed CIS encryption when DF support enabled
  * Fixed ISO-AL for quality tests and time stamps
  * Fixed PHY value in HCI LE CIS Established Event
  * Fixed ULL stuck in semaphore under rare conditions
  * Fixed assertion due to late PER CIS active set
  * Fixed compiler instruction re-ordering that caused assertions
  * Fixed connected ISO dynamic tx power
  * Fixed failing advertising conformance tests
  * Fixed handling received Auxiliary PDUs when Coded PHY not supported
  * Fixed leak in scheduled ticker node when rescheduling ticker nodes
  * Fixed missing host feature reset
  * Fixed nRF53 SoC back-to-back PDU chaining
  * Fixed nRF53 SoC back-to-back Tx Rx implementation
  * Fixed regression in Adv PDU overflow calculation
  * Fixed regression in observer that caused assertions and scheduling stall
  * Fixed use of pre-programmed PPI on nRF SoCs
  * Removed HCI ISO data with invalid status in preparation for FT support
  * Updated Extended Advertising Report to not be generated when ``AUX_ADV_IND`` not received
  * Updated to have ``EVENT_OVERHEAD_START_US`` verbose assertion in each state/role LLL
  * Updated to stop following ``aux_ptr`` if ``DATA_LEN_MAX`` is reached during extended scanning

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

* Added support for these SoC series:

  * Nuvoton NuMaker M46x series
  * Added support for STM32F072X8 SoC variants
  * Added support for STM32L051X6 SoC variants
  * Added support for STM32L451XX SoC variants
  * Added support for STM32L4Q5XX SoC variants
  * Added support for STM32WBA SoC series

* Removed support for these SoC series:

* Made these changes in other SoC series:

  * i.MX RT SOCs no longer enable CONFIG_DEVICE_CONFIGURATION_DATA by default.
    boards using external SDRAM should set CONFIG_DEVICE_CONFIGURATION_DATA
    and CONFIG_NXP_IMX_EXTERNAL_SDRAM to enabled.
  * i.MX RT SOCs no longer support CONFIG_OCRAM_NOCACHE, as this functionality
    can be achieved using devicetree memory regions
  * Refactored ESP32 SoC folders. So now these are a proper SoC series.
  * RP2040: Changed to reset the I2C device on initializing

* Added support for these ARC boards:

  * Added support for nsim_vpx5 - simulation (nSIM) platform with ARCv2 VPX5 core, close to
    vpx5_integer_full template
  * Added support for nsim_hs5x_smp_12cores - simulation (nSIM) platform with 12 cores SMP 32-bit
    ARCv3 HS
  * Added support for nsim_hs6x_smp_12cores - simulation (nSIM) platform with 12 cores SMP 64-bit
    ARCv3 HS

* Added support for these ARM boards:

  * Nuvoton NuMaker Platform M467
  * ST Nucleo U5A5ZJ Q
  * ST Nucleo WBA52CG

* Added support for these ARM64 boards:

* Added support for these RISC-V boards:

* Added support for these X86 boards:

* Added support for these Xtensa boards:

  * Added ``esp32_devkitc_wroom`` and ``esp32_devkitc_wrover``.

  * Added ``esp32s3_luatos_core``.

  * Added ``m5stack_core2``.

  * Added ``qemu_xtensa_mmu`` utilizing Diamond DC233c SoC to support
    testing Xtensa MMU.

  * Added ``xiao_esp32s3``.

  * Added ``yd_esp32``.

* Added support for these POSIX boards:

  * :zephyr:board:`native_sim(_64) <native_sim>`
  * nrf5340bsim_nrf5340_cpu(net|app). A simulated nrf5340 SOC, which uses Babblesim for its radio
    traffic.

* Made these changes for ARC boards:

  * Turned off unsupported stack checking option for hsdk4xd platform
  * Changed vendor prefix for ARC QEMU platforms from "qemu" to "snps"

* Made these changes for ARM boards:

  * ST morpho connector description was added on ST nucleo boards.

  * rpi_pico:

    * The default adapter when debugging with openocd has been changed to cmsis-dap.

* Made these changes for ARM64 boards:

* Made these changes for RISC-V boards:

* Made these changes for X86 boards:

* Made these changes for Xtensa boards:

  * esp32s3_devkitm:

    * Added USB-CDC support.

    * Added CAN support.

* Made these changes for POSIX boards:

  * nrf52_bsim:

    * Has been reworked to use the native simulator as its runner.
    * Multiple HW models improvements and fixes. GPIO & GPIOTE peripherals added.

* Removed support for these ARC boards:

* Removed support for these ARM boards:

* Removed support for these ARM64 boards:

* Removed support for these RISC-V boards:

* Removed support for these X86 boards:

* Removed support for these Xtensa boards:

  * Removed ``esp32``. Use ``esp32_devkitc_*`` instead.

* Made these changes in other boards:

* Added support for these following shields:

  * Adafruit PiCowbell CAN Bus Shield for Pico
  * Arduino UNO click shield
  * G1120B0MIPI MIPI Display
  * MikroElektronika MCP2518FD Click shield (CAN-FD)
  * RK055HDMIPI4M MIPI Display
  * RK055HDMIPI4MA0 MIPI Display
  * Semtech SX1276MB1MAS LoRa Shield

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

* SCA (Static Code Analysis)

  * Added support for CodeChecker

* Twister now supports ``required_snippets`` in testsuite .yml files, this can
  be used to include a snippet when a test is ran (and exclude any boards from
  running that the snippet cannot be applied to).

* Interrupts

  * Added support for shared interrupts

* Added support for setting MCUboot encryption key in sysbuild which is then
  propagated to the bootloader and target images to automatically create
  encrypted updates.

* Build time priority checking: enable build time priority checking by default.
  This fails the build if the initialization sequence in the final ELF file
  does not match the devicetree hierarchy. It can be turned off by disabling
  the :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES` option.

* Added a new ``initlevels`` target for printing the final device and
  :c:macro:`SYS_INIT` initialization sequence from the final ELF file.

* Reworked syscall code generations so that not all marshalling functions
  will be included in the final binary. Syscalls associated with disabled
  subsystems no longer have their marshalling functions generated.

* Partially enabled compiler warning about shadow variables for subset of
  in-tree code. Out-of-tree code needs to be patched before we can fully
  enable shadow variable warnings.

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

* ADC

  * Added support for STM32F0 HSI14 clock (dedicated ADC clock)
  * Added support for STM32 ADC source clock and prescaler. On STM32F1 and STM32F3
    series, ADC prescaler can be configured using dedicated RCC Clock Controller
    option.
  * Added support for the ADC sequencer for all STM32 series (except F1)
  * Fixed STM32F4 ADC temperature and Vbat measurement.
  * Added driver for TI ADS1112.
  * Added driver for TI TLA2021.
  * Added driver for Gecko ADC.
  * Added driver for NXP S32 ADC SAR.
  * Added driver for MAX1125x family.
  * Added driver for MAX11102-MAX1117.

* CAN

  * Added support for TI TCAN4x5x CAN-FD controller with integrated transceiver
    (:dtcompatible:`ti,tcan4x5x`).
  * Added support for Microchip MCP251xFD CAN-FD controller (:dtcompatible:`microchip,mcp251xfd`).
  * Added support for CAN statistics to the Bosch M_CAN controller driver backend.
  * Switched the NXP S32 CANXL driver to use clock control for the CAN clock instead of hard-coding
    a CAN clock frequency in the devicetree.

* Clock control

  * Added support for Nuvoton NuMaker M46x

* Counter

  * Added :kconfig:option:`CONFIG_COUNTER_RTC_STM32_SUBSECONDS` to enable subsecond as
    the basic time tick on STM32 RTC based counter driver.

  * Added support for Raspberry Pi Pico Timer

* DAC

  * Added support for Analog Devices AD56xx
  * Added support for NXP lpcxpresso55s36 (LPDAC)

* Disk

  * Ramdisk driver is now configured using devicetree, and supports multiple
    instances

* Display

  * Added support for ST7735S (in ST7735R driver)

* DMA

  * Added support for NXP S32K to the eDMA driver
  * Added support for NXP SMARTDMA
  * Added support for NXP Pixel Pipeline (PXP) for display acceleration
  * Added support for DMA get_status() to the SAM XDMAC driver
  * Fixes for Intel HDA driver for L1 entry/exit, explicit SCS (sample container) settings
  * Fixes for STM32U5 enables error interrupts, fixes block size and data size configuration
  * Better Kconfig options for tuning static memory usage in NXP LPC driver

* EEPROM

  * Added support for Fujitsu MB85RCxx series I2C FRAM (:dtcompatible:`fujitsu,mb85rcxx`).

* Entropy

  * Added a requirement for ``entropy_get_entropy()`` to be thread-safe because
    of random subsystem needs.

* Ethernet

  * Added :kconfig:option:`CONFIG_ETH_NATIVE_POSIX_RX_TIMEOUT` to set rx timeout for native posix.
  * Added support for adin2111.
  * Added support for NXP S32 GMAC.
  * Added support for promiscuous mode in eth_smsc91x.
  * Added support for STM32H5X SOC series.
  * Added support for MDIO Clause 45 APIs.
  * Added support for YD-ESP32 board Ethernet.
  * Fixed stm32 to generate more unique MAC address by using device id as a base for the MAC.
  * Fixed mcux to increase the PTP timestamp accuracy from 20us to 200ns.
  * Fixed Ethernet max header size when using VLAN.
  * Removed the ``mdio`` DT property. Please use :c:macro:`DT_INST_BUS()` in the driver instead.
  * Reworked the device node hierarchy in smsc91x.
  * Renamed the phy-dev property with phy-handle to match the Linux ethernet-controller binding
    and move it up to ethernet.yaml so that it can be used by other drivers.
  * Updated Ethernet PHY to use ``reg`` property in DT bindings.
  * Updated driver DT bindings to use ``ethernet-phy`` devicetree node name consistently.
  * Updated esp32 and sam-gmac DT so that the phy is pointed by a phandle rather than
    a child node, this makes the phy device a child of mdio.

* Flash

  * Introduce npcx flash driver that supports two or more spi nor flashes via a
    single Flash Interface Unit (FIU) module and Direct Read Access (DRA) mode
    for better performance.
  * Added support for Nuvoton NuMaker M46x embedded flash
  * STM32 QSPI driver now supports Jedec SFDP parameter reading.
  * STM32 OSPI driver now supports both Low and High ports of IO manager.

* GPIO

  * Added support for Nuvoton NuMaker M46x

* I2C

  * STM32 V1 driver now supports large transactions (more than 256 bytes chunks)
  * STM32 V2 driver now supports 10-bit addressing.
  * I2C devices can now be used as wakeup source from STOP modes on STM32.
  * Fix long ISR execution in Silicon Labs I2C target callback
  * Fail gracefully on DMA max size for nRF52 devices in the TWIM driver
  * Added support for Intel LPSS DMA usage in the DesignWare driver
  * Added filtering of dumped messages for debugging using DeviceTree
  * Added target mode to Silicon Labs Gecko driver
  * Added Intel SEDI driver
  * Added Infineon XMC4 driver
  * Added Microchip PolarFire SoC driver
  * Added Ambiq driver for Apollo4 SoCs

* I2S

  * Fixed handling of the PCM data format in the NXP MCUX driver.

* I3C

  * ``i3c_cdns``:

    * Fixed build error when :kconfig:option:`CONFIG_I3C_USE_IBI` is disabled.

    * Fixed transfer issue when controller is busy. Now wait for controller to
      idle before proceeding with another transfer.

* IEEE 802.15.4

  * A new mandatory method attr_get() was introduced into ieee802154_radio_api.
    Drivers need to implement at least
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES and
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES.
  * The hardware capabilities IEEE802154_HW_2_4_GHZ and IEEE802154_HW_SUB_GHZ
    were removed as they were not aligned with the standard and some already
    existing drivers couldn't properly express their channel page and channel
    range (notably SUN FSK and HRP UWB drivers). The capabilities were replaced
    by the standard conforming new driver attribute
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES that fits all in-tree drivers.
  * The method get_subg_channel_count() was removed from ieee802154_radio_api.
    This method could not properly express the channel range of existing drivers
    (notably SUN FSK drivers that implement channel pages > 0 and may not have
    zero-based channel ranges or UWB drivers that could not be represented at
    all). The method was replaced by the new driver attribute
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES that fits all in-tree drivers.

* Interrupt Controller

  * GIC: Architecture version selection is now based on the device tree

* Input

  * New drivers: :dtcompatible:`gpio-qdec`, :dtcompatible:`st,stmpe811`.

  * Drivers converted from Kscan to Input: :dtcompatible:`goodix,gt911`
    :dtcompatible:`xptek,xpt2046` :dtcompatible:`hynitron,cst816s`
    :dtcompatible:`microchip,cap1203`.

  * Added a Kconfig option for dumping all events to the console
    :kconfig:option:`CONFIG_INPUT_EVENT_DUMP` and new shell commands
    :kconfig:option:`CONFIG_INPUT_SHELL`.

  * Merged ``zephyr,gpio-keys`` into :dtcompatible:`gpio-keys` and added
    ``zephyr,code`` codes to all in-tree board ``gpio-keys`` nodes.

  * Renamed the callback definition macro from ``INPUT_LISTENER_CB_DEFINE`` to
    :c:macro:`INPUT_CALLBACK_DEFINE`.

* PCIE

  * Added support in shell to display PCIe capabilities.

  * Added virtual channel support.

  * Added kconfig :kconfig:option:`CONFIG_PCIE_INIT_PRIORITY` to specify
    initialization priority for host controller.

  * Added support to get IRQ from ACPI PCI Routing Table (PRT).

* ACPI

  * Adopted the ACPICA library as a new module to further enhance ACPI support.

* Pin control

  * Added support for Nuvoton NuMaker M46x

* PWM

  * Added 4 channels capture on STM32 PWM driver.
  * Added driver for Intel Blinky PWM.
  * Added driver for MAX31790.
  * Added driver for Infineon XMC4XXX CCU4.
  * Added driver for Infineon XMC4XXX CCU8.
  * Added MCUX CTimer based PWM driver.
  * Added PWM driver based on TI CC13xx/CC26xx GPT timer.
  * Reworked the pwm_nrf5_sw driver so that it can be used also on nRF53 and
    nRF91 Series. Consequently, the driver was renamed to pwm_nrf_sw.
  * Added driver for Nuvoton NuMaker family.
  * Added PWM driver based on NXP S32 EMIOS peripheral.

* Regulators

  * Added support for GPIO-controlled voltage regulator

  * Added support for AXP192 PMIC

  * Added support for NXP VREF regulator

  * Fixed regulators can now specify their operating voltage

  * PFM mode is now support for nPM1300

  * Added new API to configure "ship" mode

  * Regulator shell allows to configure DVS modes

* Reset

  * Added support for Nuvoton NuMaker M46x

* Retained memory

  * Added support for allowing mutex support to be forcibly disabled with
    :kconfig:option:`CONFIG_RETAINED_MEM_MUTEX_FORCE_DISABLE`.

  * Fixed issue with user mode support not working.

* RTC

  * Added support for STM32 RTC API driver. This driver is not compatible with
    the use of RTC based implementation of COUNTER API.

* SDHC

  * Added driver for EMMC Host controller present on Alder lake platforms
  * Added driver for Atmel HSMCI controller present on SAM4E MCU series

* Sensor

  * Reworked the :dtcompatible:`ti,bq274xx` to add ``BQ27427`` support, fixed
    units for capacity and power channels.
  * Added ADC current sense amplifier and voltage sensor drivers.
  * Added ADI LTC2990 voltage, current, and temperature sensor driver.
  * Added AMS TSL2540 ambient light sensor driver.
  * Added Bosch BMI08x accelerometer/gyroscope driver.
  * Added DFRobot A01NYUB distance sensor driver.
  * Added Fintek F75303 temperature sensor driver.
  * Added Isentek IST8310 magnetometer driver.
  * Added Microchip TCN75A temperature sensor driver.
  * Added NXP TEMPMON driver.
  * Added Seeed HM330X dust sensor driver.
  * Added TI TMAG5170 3D Hall sensor driver.
  * Added power management support to BMM150, LM75, and Microchip tachometer
    drivers.
  * Added trigger support to the BMM150 magnetometer driver.
  * Added tap trigger support to the LIS2DH accelerometer driver.
  * Updated ST sensor drivers to use STMEMSC HAL i/f v2.3
  * Updated the decoder APIs to vertically decode raw sensor data.
  * Various fixes and enhancements in the NTC thermistor and INA23x drivers.

* Serial

  * Added support for Nuvoton NuMaker M46x

  * NS16550: Reworked how device initialization macros.

    * ``CONFIG_UART_NS16550_ACCESS_IOPORT`` and ``CONFIG_UART_NS16550_SIMULT_ACCESS``
      are removed. For UART using IO port access, add ``io-mapped`` property to
      device tree node.

  * Added async support for ESP32S3.

  * Added support for serial TTY under ``native_posix``.

  * Added support for UART on Efinix Sapphire SoCs.

  * Added Intel SEDI UART driver.

  * Added support for UART on BCM2711.

  * ``uart_stm32``:

    * Added RS485 support.

    * Added wide data support.

  * ``uart_pl011``: added support for Ambiq SoCs.

  * ``serial_test``: added support for interrupt and async APIs.

  * ``uart_emul``: added support for interrupt API.

  * ``uart_rpi_pico``: fixed handling Modbus DE-RE signal

* SPI

  * Remove npcx spi driver implemented by Flash Interface Unit (FIU) module.
  * Added support for Raspberry Pi Pico PIO based SPI.

* Timer

  * The TI CC13xx/26xx system clock timer compatible was changed from
    :dtcompatible:`ti,cc13xx-cc26xx-rtc` to :dtcompatible:`ti,cc13xx-cc26xx-rtc-timer`
    and the corresponding Kconfig option from :kconfig:option:`CC13X2_CC26X2_RTC_TIMER`
    to :kconfig:option:`CC13XX_CC26XX_RTC_TIMER` for improved consistency and
    extensibility. No action is required unless the internal timer was modified.

* USB

  * Added UDC driver for STM32 based MCU, relying on HAL/PCD. This driver is compatible
    with UDC API (experimental).
  * Added support for STM32H5 series on USB driver.

* WiFi

  * Increased esp32 default network (TCP workq, RX and mgmt event) stack sizes to 2048 bytes.
  * Reduced the RAM usage for esp32s2_saola in Wi-Fi samples.
  * Fixed undefined declarations in winc1500.
  * Fixed SPI buffer length in eswifi.
  * Fixed esp32 data sending and channel selection in AP mode.
  * Fixed esp_at driver init and network interface dormant state setting.

Networking
**********

* CoAP:

  * Optimized CoAP client library to use only a single thread internally.
  * Converted CoAP client library to use ``zsock_*`` API internally.
  * Fixed a bug in CoAP client library, which resulted in an incorrect
    retransmission timeout calculation.
  * Use 64 bit timer values for calculating transmission timeouts. This fixes potential problems for
    devices that stay on for more than 49 days when the 32 bit uptime counter might roll over and
    cause CoAP packets to not timeout at all on this event.
  * API documentation improvements.
  * Added new API functions:

    * :c:func:`coap_has_descriptive_block_option`
    * :c:func:`coap_remove_descriptive_block_option`
    * :c:func:`coap_packet_remove_option`
    * :c:func:`coap_packet_set_path`

* Connection Manager:

  * Added support for auto-connect and auto-down behaviors (controlled by
    :c:enum:`CONN_MGR_IF_NO_AUTO_CONNECT` and :c:enum:`CONN_MGR_IF_NO_AUTO_DOWN`
    flags).
  * Split Connection Manager APIs into separate header files.
  * Extended Connection Manager documentation to cover new functionalities.

* DHCP:

  * Added support for DHCPv4 unicast replies processing.
  * Added support for DHCPv6 protocol.

* Ethernet:

  * Fixed ARP queueing so that the queued network packet is sent immediately
    instead of queued 2nd time in the core network stack.

* gPTP:

  * Added support for detecting gPTP packets that use the default multicast destination address.
  * Fixed Announce and Follow Up message handling.

* ICMP:

  * Fixed ICMPv6 error message type check.
  * Reworked ICMP callback registration and handling, which allows to register
    multiple handlers for the same ICMP message.
  * Introduced an API to send ICMP Echo Request (ping).
  * Added possibility to register offloaded ICMP ping handlers.
  * Added support for setting packet priority for ping.

* IPv6:

  * Made sure that ongoing DAD procedure is cancelled when IPv6 address is removed.
  * Fixed a bug, where Solicited-Node multicast address could be removed while
    still in use.

* LwM2M:

  * Added support for tickless mode. This removes the 500 ms timeout from the socket loop
    so the engine does not constantly wake up the CPU. This can be enabled by
    :kconfig:option:`CONFIG_LWM2M_TICKLESS`.
  * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_DEREGISTER` event.
  * Block-wise sending now supports LwM2M read and composite-read operations as well.
    When :kconfig:option:`CONFIG_LWM2M_COAP_BLOCK_TRANSFER` is enabled, any content that is larger
    than :kconfig:option:`CONFIG_LWM2M_COAP_MAX_MSG_SIZE` is split into a block-wise transfer.
  * Block-wise transfers don't require tokens to match anymore as this was not in line
    with CoAP specification (CoAP doesn't require tokens reuse).
  * Various fixes to bootstrap. Now client ensures that Bootstrap-Finish command is sent,
    before closing the DTLS pipe. Also allows Bootstrap server to close the DTLS pipe.
    Added timeout when waiting for bootstrap commands.
  * Added support for X509 certificates.
  * Various fixes to string handling. Allow setting string to zero length.
    Ensure string termination when using string operations on opaque resources.
  * Added support for Connection Monitoring object version 1.3.
  * Added protection for Security object to prevent read/writes by the server.
  * Fixed a possible notification stall in case of observation token change.
  * Added new shell command, ``lwm2m create``, which allows to create LwM2M object instances.
  * Added LwM2M interoperability test-suite against Leshan server.
  * API documentation improvements.
  * Several other minor fixes and improvements.

* Misc:

  * Time and timestamps in the network subsystem, PTP and IEEE 802.15.4
    were more precisely specified and all in-tree call sites updated accordingly.
    Fields for timed TX and TX/RX timestamps have been consolidated. See
    :c:type:`net_time_t`, :c:struct:`net_ptp_time`, :c:struct:`ieee802154_config`,
    :c:struct:`ieee802154_radio_api` and :c:struct:`net_pkt` for extensive
    documentation. As this is largely an internal API, existing applications will
    most probably continue to work unchanged.
  * Added support for additional net_pkt filter hooks:

    * :kconfig:option:`CONFIG_NET_PKT_FILTER_IPV4_HOOK`
    * :kconfig:option:`CONFIG_NET_PKT_FILTER_IPV6_HOOK`
    * :kconfig:option:`CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK`

  * Reworked several networking components to use timepoint API.
  * Added API functions facilitate going through all IPv4/IPv6 registered on an
    interface (:c:func:`net_if_ipv4_addr_foreach`, :c:func:`net_if_ipv6_addr_foreach`).
  * ``NET_EVENT_IPV6_PREFIX_ADD`` and ``NET_EVENT_IPV6_PREFIX_DEL`` events now provide
    more detailed information about the prefix (:c:struct:`net_event_ipv6_prefix`).
  * General cleanup of the shadowed variables across the networking subsystem.
  * Added ``qemu_cortex_a53`` networking support.
  * Introduced new modem subsystem.
  * Added new :zephyr:code-sample:`cellular-modem` sample.
  * Added support for network interface names (instead of reusing underlying device name).
  * Removed support for Google Cloud IoT sample due to service retirement.
  * Fixed a bug where packets passed in promiscuous mode could have been modified
    by L2 in certain cases.
  * Added support for setting syslog server (used for networking log backend)
    IP address at runtime.
  * Removed no longer used ``queued`` and ``sent`` net_pkt flags.
  * Added support for binding zperf TCP/UDP server to a specific IP address.

* MQTT-SN:

  * Improved thread safety of internal buffers allocation.
  * API documentation improvements.

* OpenThread:

  * Reworked :c:func:`otPlatEntropyGet` to use :c:func:`sys_csrand_get` internally.
  * Introduced ``ieee802154_radio_openthread.h`` radio driver extension interface
    specific for OpenThread. Added new transmit mode, specific to OpenThread,
    :c:enum:`IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA`.

* PPP:

  * Fixed PPP L2 usage of the network interface carrier state.
  * Made PPP L2 thread priority configurable (:kconfig:option:`CONFIG_NET_L2_PPP_THREAD_PRIO`).
  * Moved PPP L2 out of experimental stage.
  * Prevent PPP connection reestablish when carrier is down.

* Sockets:

  * Added support for statically allocated socketpairs (in case no heap is available).
  * Made send timeout configurable (:kconfig:option:`CONFIG_NET_SOCKET_MAX_SEND_WAIT`).
  * Added support for ``FIONREAD`` and ``FIONBIO`` :c:func:`ioctl` commands.
  * Fixed input filtering for connected datagram sockets.
  * Fixed :c:func:`getsockname` operation on unconnected sockets.
  * Added new secure socket options for DTLS Connection ID support:

    * :c:macro:`TLS_DTLS_CID`
    * :c:macro:`TLS_DTLS_CID_VALUE`
    * :c:macro:`TLS_DTLS_PEER_CID_VALUE`
    * :c:macro:`TLS_DTLS_CID_STATUS`

  * Added support for :c:macro:`SO_REUSEADDR` and :c:macro:`SO_REUSEPORT` socket options.

* TCP:

  * Fixed potential stall in data retransmission, when data was only partially acknowledged.
  * Made TCP work queue priority configurable (:kconfig:option:`CONFIG_NET_TCP_WORKER_PRIO`).
  * Added support for TCP new Reno collision avoidance algorithm.
  * Fixed source address selection on bound sockets.
  * Fixed possible memory leak in case listening socket was closed during active handshake.
  * Fixed RST packet handling during handshake.
  * Refactored the code responsible for connection teardown to fix found bugs and
    simplify future maintenance.

* TFTP:

  * Added new :zephyr:code-sample:`tftp-client` sample.
  * API documentation improvements.

* WebSocket

  * WebSocket library no longer closes underlying TCP socket automatically on disconnect.
    This aligns with the connect behavior, where the WebSocket library expects an already
    connected TCP socket.

* Wi-Fi:

  * Added Passive scan support.
  * The Wi-Fi scan API updated with Wi-Fi scan parameter to allow scan mode selection.
  * Updated TWT handling.
  * Added support for generic network manager API.
  * Added support for Wi-Fi mode setting and selection.
  * Added user input validation for SSID and PSK in Wi-Fi shell.
  * Added scan extension for specifying channels, limiting scan results, filtering SSIDs,
    setting active and passive channel dwell times and frequency bands.

USB
***

* USB device HID
  * Kconfig option USB_HID_PROTOCOL_CODE, deprecated in v2.6, is finally removed.

Devicetree
**********

API
===

New general-purpose macros:

- :c:macro:`DT_REG_ADDR_U64`
- :c:macro:`DT_REG_ADDR_BY_NAME_U64`
- :c:macro:`DT_INST_REG_ADDR_BY_NAME_U64`
- :c:macro:`DT_INST_REG_ADDR_U64`
- :c:macro:`DT_FOREACH_STATUS_OKAY_NODE_VARGS`
- :c:macro:`DT_FOREACH_NODE_VARGS`
- :c:macro:`DT_HAS_COMPAT_ON_BUS_STATUS_OKAY`

New special-purpose macros introduced for dependency ordinals:

- :c:macro:`DT_DEP_ORD_STR_SORTABLE`

New general purpose macros introduced for fixed flash partitions:

- :c:macro:`DT_MEM_FROM_FIXED_PARTITION`
- :c:macro:`DT_FIXED_PARTITION_ADDR`

Bindings
========

* Generic or vendor-independent:

  * New bindings:

    * :dtcompatible:`current-sense-amplifier`
    * :dtcompatible:`current-sense-shunt`
    * :dtcompatible:`gpio-qdec`
    * :dtcompatible:`regulator-gpio`
    * :dtcompatible:`usb-audio-feature-volume`

  * Modified bindings:

    * CAN (Controller Area Network) controller bindings:

          * property ``phase-seg1-data`` deprecation status changed from False to True
          * property ``phase-seg1`` deprecation status changed from False to True
          * property ``phase-seg2-data`` deprecation status changed from False to True
          * property ``phase-seg2`` deprecation status changed from False to True
          * property ``prop-seg-data`` deprecation status changed from False to True
          * property ``prop-seg`` deprecation status changed from False to True
          * property ``sjw-data`` default value changed from None to 1
          * property ``sjw-data`` deprecation status changed from False to True
          * property ``sjw`` default value changed from None to 1
          * property ``sjw`` deprecation status changed from False to True

    * Ethernet controller bindings: new ``phy-handle`` property (in some
      bindings, this was renamed from ``phy-dev``), matching the Linux
      ethernet-controller binding.

    * The ``riscv,isa`` property used by RISC-V CPU bindings no longer has an
      ``enum`` value.

    * :dtcompatible:`neorv32,cpu`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`regulator-fixed`:

          * new property: ``regulator-min-microvolt``
          * new property: ``regulator-max-microvolt``
          * property ``enable-gpios`` is no longer required

    * :dtcompatible:`ethernet-phy`:

          * removed property: ``address``
          * removed property: ``mdio``
          * property ``reg`` is now required

    * :dtcompatible:`usb-audio-hs` and :dtcompatible:`usb-audio-hp`:

          * new property: ``volume-max``
          * new property: ``volume-min``
          * new property: ``volume-res``
          * new property: ``status``
          * new property: ``compatible``
          * new property: ``reg``
          * new property: ``reg-names``
          * new property: ``interrupts``
          * new property: ``interrupts-extended``
          * new property: ``interrupt-names``
          * new property: ``interrupt-parent``
          * new property: ``label``
          * new property: ``clocks``
          * new property: ``clock-names``
          * new property: ``#address-cells``
          * new property: ``#size-cells``
          * new property: ``dmas``
          * new property: ``dma-names``
          * new property: ``io-channels``
          * new property: ``io-channel-names``
          * new property: ``mboxes``
          * new property: ``mbox-names``
          * new property: ``wakeup-source``
          * new property: ``power-domain``
          * new property: ``zephyr,pm-device-runtime-auto``

    * :dtcompatible:`ntc-thermistor-generic`:

          * removed property: ``r25-ohm``

    * :dtcompatible:`ns16550`:

          * new property: ``resets``
          * new property: ``reset-names``

    * :dtcompatible:`fixed-clock`:

          * removed property: ``clocks``

    * All CPU bindings got a new ``enable-method`` property. `pull request
      60210 <https://github.com/zephyrproject-rtos/zephyr/pull/60210>`_ for
      details.

* Analog Devices, Inc. (adi):

  * New bindings:

    * :dtcompatible:`adi,ad5628`
    * :dtcompatible:`adi,ad5648`
    * :dtcompatible:`adi,ad5668`
    * :dtcompatible:`adi,ad5672`
    * :dtcompatible:`adi,ad5674`
    * :dtcompatible:`adi,ad5676`
    * :dtcompatible:`adi,ad5679`
    * :dtcompatible:`adi,ad5684`
    * :dtcompatible:`adi,ad5686`
    * :dtcompatible:`adi,ad5687`
    * :dtcompatible:`adi,ad5689`
    * :dtcompatible:`adi,adin1110`
    * :dtcompatible:`adi,adltc2990`

  * Modified bindings:

    * :dtcompatible:`adi,adin2111-mdio` (on adin2111 bus):

          * removed property: ``protocol``

* Altera Corp. (altr):

  * New bindings:

    * :dtcompatible:`altr,pio-1.0`

* Ambiq Micro, Inc. (ambiq):

  * New bindings:

    * :dtcompatible:`ambiq,am1805`
    * :dtcompatible:`ambiq,apollo4-pinctrl`
    * :dtcompatible:`ambiq,counter`
    * :dtcompatible:`ambiq,i2c`
    * :dtcompatible:`ambiq,mspi`
    * :dtcompatible:`ambiq,pwrctrl`
    * :dtcompatible:`ambiq,spi`
    * :dtcompatible:`ambiq,stimer`
    * :dtcompatible:`ambiq,uart`
    * :dtcompatible:`ambiq,watchdog`

* AMS AG (ams):

  * New bindings:

    * :dtcompatible:`ams,tsl2540`

* Andes Technology Corporation (andestech):

  * New bindings:

    * :dtcompatible:`andestech,atcwdt200`
    * :dtcompatible:`andestech,plic-sw`
    * :dtcompatible:`andestech,qspi-nor`

* ARM Ltd. (arm):

  * New bindings:

    * :dtcompatible:`arm,cortex-a76`
    * :dtcompatible:`arm,gic-v1`
    * :dtcompatible:`arm,gic-v2`
    * :dtcompatible:`arm,gic-v3`
    * :dtcompatible:`arm,psci-1.1`

* ASPEED Technology Inc. (aspeed):

  * Modified bindings:

    * :dtcompatible:`aspeed,ast10x0-reset`:

          * specifier cells for space "reset" are now named: ['id'] (old value: None)
          * specifier cells for space "clock" are now named: None (old value: ['reset_id'])

* Atmel Corporation (atmel):

  * New bindings:

    * :dtcompatible:`atmel,sam-hsmci`

  * Modified bindings:

    * :dtcompatible:`atmel,sam-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

* Bosch Sensortec GmbH (bosch):

  * New bindings:

    * :dtcompatible:`bosch,bmi08x-accel`
    * :dtcompatible:`bosch,bmi08x-accel`
    * :dtcompatible:`bosch,bmi08x-gyro`
    * :dtcompatible:`bosch,bmi08x-gyro`

  * Modified bindings:

    * :dtcompatible:`bosch,bmm150`:

          * new property: ``drdy-gpios``

    * :dtcompatible:`bosch,bmi270`:

          * new property: ``irq-gpios``

* Broadcom Corporation (brcm):

  * New bindings:

    * :dtcompatible:`brcm,bcm2711-aux-uart`

* Cadence Design Systems Inc. (cdns):

  * New bindings:

    * :dtcompatible:`cdns,tensilica-xtensa-lx3`

* DFRobot (dfrobot):

  * New bindings:

    * :dtcompatible:`dfrobot,a01nyub`

* Efinix Inc (efinix):

  * New bindings:

    * :dtcompatible:`efinix,sapphire-gpio`
    * :dtcompatible:`efinix,sapphire-timer0`
    * :dtcompatible:`efinix,sapphire-uart0`

* EPCOS AG (epcos):

  * Modified bindings:

    * :dtcompatible:`epcos,b57861s0103a039`:

          * removed property: ``r25-ohm``

* Espressif Systems (espressif):

  * Modified bindings:

    * :dtcompatible:`espressif,esp-at` (on uart bus):

          * new property: ``external-reset``

    * :dtcompatible:`espressif,esp32-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`espressif,riscv`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`espressif,esp32-spi`:

          * new property: ``line-idle-low``

* Feature Integration Technology Inc. (fintek):

  * New bindings:

    * :dtcompatible:`fintek,f75303`

* FocalTech Systems Co.,Ltd (focaltech):

  * Modified bindings:

    * :dtcompatible:`focaltech,ft5336` (on i2c bus):

          * new property: ``reset-gpios``

* Fujitsu Ltd. (fujitsu):

  * New bindings:

    * :dtcompatible:`fujitsu,mb85rcxx`

* Shenzhen Huiding Technology Co., Ltd. (goodix):

  * Modified bindings:

    * :dtcompatible:`goodix,gt911` (on i2c bus):

          * bus list changed from ['kscan'] to []
          * new property: ``alt-addr``

* Himax Technologies, Inc. (himax):

  * New bindings:

    * :dtcompatible:`himax,hx8394`

* Infineon Technologies (infineon):

  * New bindings:

    * :dtcompatible:`infineon,cat1-counter`
    * :dtcompatible:`infineon,cat1-spi`
    * :dtcompatible:`infineon,xmc4xxx-ccu4-pwm`
    * :dtcompatible:`infineon,xmc4xxx-ccu8-pwm`
    * :dtcompatible:`infineon,xmc4xxx-i2c`

* Intel Corporation (intel):

  * New bindings:

    * :dtcompatible:`intel,agilex5-clock`
    * :dtcompatible:`intel,alder-lake`
    * :dtcompatible:`intel,apollo-lake`
    * :dtcompatible:`intel,blinky-pwm`
    * :dtcompatible:`intel,elkhart-lake`
    * :dtcompatible:`intel,emmc-host`
    * :dtcompatible:`intel,ish`
    * :dtcompatible:`intel,loapic`
    * :dtcompatible:`intel,sedi-gpio`
    * :dtcompatible:`intel,sedi-i2c`
    * :dtcompatible:`intel,sedi-ipm`
    * :dtcompatible:`intel,sedi-uart`
    * :dtcompatible:`intel,socfpga-agilex-sip-smc`
    * :dtcompatible:`intel,socfpga-reset`
    * :dtcompatible:`intel,timeaware-gpio`

  * Removed bindings:

    * ``intel,agilex-socfpga-sip-smc``
    * ``intel,apollo_lake``
    * ``intel,elkhart_lake``
    * ``intel,gna``

  * Modified bindings:

    * :dtcompatible:`intel,niosv`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`intel,adsp-imr`:

          * new property: ``zephyr,memory-attr``
          * property ``zephyr,memory-region-mpu`` enum value changed from ['RAM', 'RAM_NOCACHE', 'FLASH', 'PPB', 'IO', 'EXTMEM'] to None
          * property ``zephyr,memory-region-mpu`` deprecation status changed from False to True

    * :dtcompatible:`intel,lpss`:

          * new property: ``dma-parent``

    * :dtcompatible:`intel,adsp-shim-clkctl`:

          * new property: ``adsp-clkctl-clk-ipll``

* Isentek Inc. (isentek):

  * New bindings:

    * :dtcompatible:`isentek,ist8310`

* Integrated Silicon Solutions Inc. (issi):

  * New bindings:

    * :dtcompatible:`issi,is31fl3216a`
    * :dtcompatible:`issi,is31fl3733`

* ITE Tech. Inc. (ite):

  * New bindings:

    * :dtcompatible:`ite,it8xxx2-sha`

  * Modified bindings:

    * :dtcompatible:`ite,it8xxx2-pinctrl-func`:

          * new property: ``func3-ext``
          * new property: ``func3-ext-mask``

    * :dtcompatible:`ite,riscv-ite`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`ite,enhance-i2c`:

          * new property: ``target-enable``
          * new property: ``target-pio-mode``

* Linaro Limited (linaro):

  * New bindings:

    * :dtcompatible:`linaro,ivshmem-ipm`

* Maxim Integrated Products (maxim):

  * New bindings:

    * :dtcompatible:`maxim,max11102`
    * :dtcompatible:`maxim,max11103`
    * :dtcompatible:`maxim,max11105`
    * :dtcompatible:`maxim,max11106`
    * :dtcompatible:`maxim,max11110`
    * :dtcompatible:`maxim,max11111`
    * :dtcompatible:`maxim,max11115`
    * :dtcompatible:`maxim,max11116`
    * :dtcompatible:`maxim,max11117`
    * :dtcompatible:`maxim,max11253`
    * :dtcompatible:`maxim,max11254`
    * :dtcompatible:`maxim,max31790`

* Microchip Technology Inc. (microchip):

  * New bindings:

    * :dtcompatible:`microchip,mcp251xfd`
    * :dtcompatible:`microchip,mpfs-i2c`
    * :dtcompatible:`microchip,tcn75a`

  * Modified bindings:

    * :dtcompatible:`microchip,xec-pwmbbled`:

          * new property: ``enable-low-power-32k``

    * :dtcompatible:`microchip,cap1203` (on i2c bus):

          * bus list changed from ['kscan'] to []
          * new property: ``input-codes``

    * :dtcompatible:`microchip,xec-ps2`:

          * new property: ``wakerx-gpios``

* Motorola, Inc. (motorola):

  * Modified bindings:

    * :dtcompatible:`motorola,mc146818`:

          * new property: ``clock-frequency``

* Murata Manufacturing Co., Ltd. (murata):

  * New bindings:

    * :dtcompatible:`murata,ncp15wb473`

* Nordic Semiconductor (nordic):

  * New bindings:

    * :dtcompatible:`nordic,npm1300-led`
    * :dtcompatible:`nordic,npm1300-wdt`

  * Removed bindings:

    * ``nordic,nrf-cc310``
    * ``nordic,nrf-cc312``

  * Modified bindings:

    * :dtcompatible:`nordic,nrf-ccm`:

          * new property: ``headermask-supported``

    * :dtcompatible:`nordic,nrf-twi`:

          * new property: ``easydma-maxcnt-bits``

    * :dtcompatible:`nordic,nrf-twim` and :dtcompatible:`nordic,nrf-twis`:

          * new property: ``easydma-maxcnt-bits``
          * new property: ``memory-regions``
          * new property: ``memory-region-names``

    * :dtcompatible:`nordic,nrf-spi`, :dtcompatible:`nordic,nrf-spis`, and
      :dtcompatible:`nordic,nrf-spim`:

          * new property: ``wake-gpios``

    * :dtcompatible:`nordic,npm1300-charger`:

          * new property: ``thermistor-cold-millidegrees``
          * new property: ``thermistor-cool-millidegrees``
          * new property: ``thermistor-warm-millidegrees``
          * new property: ``thermistor-hot-millidegrees``
          * new property: ``trickle-microvolt``
          * new property: ``term-current-percent``
          * new property: ``vbatlow-charge-enable``
          * new property: ``disable-recharge``

    * :dtcompatible:`nordic,nrf-uicr`:

          * new property: ``nfct-pins-as-gpios``
          * new property: ``gpio-as-nreset``

    * :dtcompatible:`nordic,npm1300` (on i2c bus):

          * new property: ``host-int-gpios``
          * new property: ``pmic-int-pin``

* Nuclei System Technology (nuclei):

  * Modified bindings:

    * :dtcompatible:`nuclei,bumblebee`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

* Nuvoton Technology Corporation (nuvoton):

  * New bindings:

    * :dtcompatible:`nuvoton,nct38xx`
    * :dtcompatible:`nuvoton,nct38xx-gpio`
    * :dtcompatible:`nuvoton,npcx-fiu-nor`
    * :dtcompatible:`nuvoton,npcx-fiu-qspi`
    * :dtcompatible:`nuvoton,numaker-fmc`
    * :dtcompatible:`nuvoton,numaker-gpio`
    * :dtcompatible:`nuvoton,numaker-pcc`
    * :dtcompatible:`nuvoton,numaker-pinctrl`
    * :dtcompatible:`nuvoton,numaker-pwm`
    * :dtcompatible:`nuvoton,numaker-rst`
    * :dtcompatible:`nuvoton,numaker-scc`
    * :dtcompatible:`nuvoton,numaker-spi`
    * :dtcompatible:`nuvoton,numaker-uart`

  * Removed bindings:

    * ``nuvoton,nct38xx-gpio``
    * ``nuvoton,npcx-spi-fiu``

  * Modified bindings:

    * :dtcompatible:`nuvoton,npcx-sha`:

          * new property: ``context-buffer-size``

    * :dtcompatible:`nuvoton,npcx-adc`:

          * new property: ``vref-mv``
          * removed property: ``threshold-reg-offset``

    * :dtcompatible:`nuvoton,adc-cmp`:

          * new property: ``thr-sel``

    * :dtcompatible:`nuvoton,npcx-pcc`:

          * new property: ``pwdwn-ctl-val``
          * property ``clock-frequency`` enum value changed from [100000000, 96000000, 90000000, 80000000, 66000000, 50000000, 48000000, 40000000, 33000000] to [120000000, 100000000, 96000000, 90000000, 80000000, 66000000, 50000000, 48000000]
          * property ``ram-pd-depth`` enum value changed from [12, 15] to [8, 12, 15]

* NXP Semiconductors (nxp):

  * New bindings:

    * :dtcompatible:`nxp,ctimer-pwm`
    * :dtcompatible:`nxp,fs26-wdog`
    * :dtcompatible:`nxp,imx-flexspi-w956a8mbya`
    * :dtcompatible:`nxp,irqsteer-intc`
    * :dtcompatible:`nxp,lpdac`
    * :dtcompatible:`nxp,mbox-imx-mu`
    * :dtcompatible:`nxp,mcux-dcp`
    * :dtcompatible:`nxp,mcux-edma-v3`
    * :dtcompatible:`nxp,pcf8563`
    * :dtcompatible:`nxp,pxp`
    * :dtcompatible:`nxp,s32-adc-sar`
    * :dtcompatible:`nxp,s32-clock`
    * :dtcompatible:`nxp,s32-emios`
    * :dtcompatible:`nxp,s32-emios-pwm`
    * :dtcompatible:`nxp,s32-gmac`
    * :dtcompatible:`nxp,s32-qspi`
    * :dtcompatible:`nxp,s32-qspi-device`
    * :dtcompatible:`nxp,s32-qspi-nor`
    * :dtcompatible:`nxp,s32k3-pinctrl`
    * :dtcompatible:`nxp,smartdma`
    * :dtcompatible:`nxp,tempmon`
    * :dtcompatible:`nxp,vref`

  * Modified bindings:

    * :dtcompatible:`nxp,s32-netc-emdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`nxp,mipi-dsi-2l`:

          * property ``nxp,lcdif`` is no longer required

    * :dtcompatible:`nxp,imx-mipi-dsi`:

          * property ``nxp,lcdif`` is no longer required

    * :dtcompatible:`nxp,pca9633` (on i2c bus):

          * new property: ``disable-allcall``

    * :dtcompatible:`nxp,s32-sys-timer`:

          * removed property: ``clock-frequency``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,imx-lpspi`:

          * new property: ``data-pin-config``

    * :dtcompatible:`nxp,s32-spi`:

          * property ``clock-frequency`` is no longer required
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,imx-wdog`:

          * pinctrl support

    * :dtcompatible:`nxp,s32-swt`:

          * removed property: ``clock-frequency``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,lpc-lpadc`:

          * new property: ``nxp,reference-supply``

    * :dtcompatible:`nxp,kinetis-pit`:

          * new property: ``max-load-value``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,mcux-edma`:

          * new property: ``dmamux-reg-offset``
          * new property: ``channel-gap``
          * new property: ``irq-shared-offset``

    * :dtcompatible:`nxp,imx-elcdif`:

          * new property: ``nxp,pxp``

* ON Semiconductor Corp. (onnn):

  * New bindings:

    * :dtcompatible:`onnn,ncp5623`

* Princeton Technology Corp. (ptc):

  * New bindings:

    * :dtcompatible:`ptc,pt6314`

* Quectel Wireless Solutions Co., Ltd. (quectel):

  * New bindings:

    * :dtcompatible:`quectel,bg95`

* QuickLogic Corp. (quicklogic):

  * New bindings:

    * :dtcompatible:`quicklogic,eos-s3-pinctrl`

  * Modified bindings:

    * :dtcompatible:`quicklogic,usbserialport-s3b`:

      * pinctrl support

* Raspberry Pi Foundation (raspberrypi):

  * New bindings:

    * :dtcompatible:`raspberrypi,pico-header`
    * :dtcompatible:`raspberrypi,pico-i2c`
    * :dtcompatible:`raspberrypi,pico-spi-pio`
    * :dtcompatible:`raspberrypi,pico-timer`

* Raydium Semiconductor Corp. (raydium):

  * New bindings:

    * :dtcompatible:`raydium,rm67162`

* Renesas Electronics Corporation (renesas):

  * New bindings:

    * :dtcompatible:`renesas,smartbond-lp-osc`
    * :dtcompatible:`renesas,smartbond-timer`

  * Modified bindings:

    * :dtcompatible:`renesas,smartbond-flash-controller`:

          * new property: ``read-cs-idle-delay``
          * new property: ``erase-cs-idle-delay``

* Smart Battery System (sbs):

  * New bindings:

    * :dtcompatible:`sbs,default-sbs-gauge`
    * :dtcompatible:`sbs,sbs-charger`

* Seeed Technology Co., Ltd (seeed):

  * New bindings:

    * :dtcompatible:`seeed,hm330x`

* SiFive, Inc. (sifive):

  * Modified bindings:

    * :dtcompatible:`sifive,i2c0`:

          * pinctrl support

* Silicon Laboratories (silabs):

  * New bindings:

    * :dtcompatible:`silabs,gecko-adc`

* Sino Wealth Electronic Ltd (sinowealth):

  * New bindings:

    * :dtcompatible:`sinowealth,sh1106`
    * :dtcompatible:`sinowealth,sh1106`

* Sitronix Technology Corporation (sitronix):

  * Modified bindings:

    * :dtcompatible:`sitronix,st7735r` (on spi bus):

          * property ``reset-gpios`` is no longer required

* Standard Microsystems Corporation (smsc):

  * Modified bindings:

    * :dtcompatible:`smsc,lan91c111-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`smsc,lan91c111`:

          * new property: ``local-mac-address``
          * new property: ``zephyr,random-mac-address``
          * property ``reg`` is no longer required

* Synopsys, Inc. (snps):

  * New bindings:

    * :dtcompatible:`snps,dw-timers`

* Solomon Systech Limited (solomon):

  * Modified bindings:

    * :dtcompatible:`solomon,ssd1306fb`

          * new property: ``inversion-on``
          * new property: ``ready-time-ms``

* Sequans Communications (sqn):

  * New bindings:

    * :dtcompatible:`sqn,hwspinlock`

* STMicroelectronics (st):

  * New bindings:

    * :dtcompatible:`st,stm32-bxcan`
    * :dtcompatible:`st,stm32-spi-host-cmd`
    * :dtcompatible:`st,stm32f1-rcc`
    * :dtcompatible:`st,stm32f3-rcc`
    * :dtcompatible:`st,stm32wba-flash-controller`
    * :dtcompatible:`st,stm32wba-hse-clock`
    * :dtcompatible:`st,stm32wba-pll-clock`
    * :dtcompatible:`st,stm32wba-rcc`
    * :dtcompatible:`st,stmpe811`

  * Removed bindings:

    * ``st,stm32-can``

  * Modified bindings:

    * :dtcompatible:`st,stm32-pwm`:

          * new property: ``four-channel-capture-support``

    * :dtcompatible:`st,stm32f4-adc`:

          * new property: ``st,adc-clock-source``
          * new property: ``st,adc-prescaler``
          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32-adc`:

          * new property: ``st,adc-clock-source``
          * new property: ``st,adc-prescaler``
          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32f1-adc`:

          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32-ospi`:

          * new property: ``io-low-port``
          * new property: ``io-high-port``

    * :dtcompatible:`st,stm32c0-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32-hse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32wl-hse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32g0-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32h7-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32-lse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32u5-pll-clock`:

          * new property: ``fracn``

* Telink Semiconductor (telink):

  * Modified bindings:

    * :dtcompatible:`telink,b91-pwm`:

          * pinctrl support

    * :dtcompatible:`telink,b91`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`telink,b91-i2c`:

          * pinctrl support

    * :dtcompatible:`telink,b91-spi`:

          * pinctrl support

    * :dtcompatible:`telink,b91-uart`:

          * pinctrl support

* Texas Instruments (ti):

  * New bindings:

    * :dtcompatible:`ti,ads1112`
    * :dtcompatible:`ti,bq27z746`
    * :dtcompatible:`ti,cc13xx-cc26xx-rtc-timer`
    * :dtcompatible:`ti,cc13xx-cc26xx-timer`
    * :dtcompatible:`ti,cc13xx-cc26xx-timer-pwm`
    * :dtcompatible:`ti,cc32xx-pinctrl`
    * :dtcompatible:`ti,davinci-gpio`
    * :dtcompatible:`ti,davinci-gpio-nexus`
    * :dtcompatible:`ti,lp5009`
    * :dtcompatible:`ti,lp5012`
    * :dtcompatible:`ti,lp5018`
    * :dtcompatible:`ti,lp5024`
    * :dtcompatible:`ti,lp5030`
    * :dtcompatible:`ti,lp5036`
    * :dtcompatible:`ti,lp5569`
    * :dtcompatible:`ti,tas6422dac`
    * :dtcompatible:`ti,tcan4x5x`
    * :dtcompatible:`ti,tla2021`
    * :dtcompatible:`ti,tmag5170`
    * :dtcompatible:`ti,vim`

  * Removed bindings:

    * ``ti,cc13xx-cc26xx-rtc``
    * ``ti,lp503x``

  * Modified bindings:

    * :dtcompatible:`ti,cc32xx-i2c`:

          * pinctrl support

    * :dtcompatible:`ti,ina230` (on i2c bus):

          * new property: ``alert-config``
          * new property: ``adc-mode``
          * new property: ``vbus-conversion-time-us``
          * new property: ``vshunt-conversion-time-us``
          * new property: ``avg-count``
          * new property: ``rshunt-micro-ohms``
          * removed property: ``rshunt-milliohms``
          * property ``config`` default value changed from None to 0
          * property ``config`` deprecation status changed from False to True
          * property ``config`` is no longer required

    * :dtcompatible:`ti,ina237` (on i2c bus):

          * new property: ``adc-mode``
          * new property: ``vbus-conversion-time-us``
          * new property: ``vshunt-conversion-time-us``
          * new property: ``temp-conversion-time-us``
          * new property: ``avg-count``
          * new property: ``high-precision``
          * new property: ``rshunt-micro-ohms``
          * removed property: ``rshunt-milliohms``
          * property ``adc-config`` default value changed from None to 0
          * property ``config`` default value changed from None to 0
          * property ``adc-config`` deprecation status changed from False to True
          * property ``config`` deprecation status changed from False to True
          * property ``adc-config`` is no longer required
          * property ``config`` is no longer required

    * :dtcompatible:`ti,cc32xx-uart`:

          * pinctrl support

* A stand-in for a real vendor which can be used in examples and tests (vnd):

  * New bindings:

    * :dtcompatible:`vnd,memory-attr`
    * :dtcompatible:`vnd,reg-holder-64`
    * :dtcompatible:`vnd,reserved-compat`

  * Modified bindings:

    * :dtcompatible:`vnd,serial`:

          * property ``reg`` is no longer required

* X-Powers (x-powers):

  * New bindings:

    * :dtcompatible:`x-powers,axp192`
    * :dtcompatible:`x-powers,axp192-gpio`
    * :dtcompatible:`x-powers,axp192-regulator`

* Xen Hypervisor (xen):

  * New bindings:

    * :dtcompatible:`xen,xen`

  * Removed bindings:

    * ``xen,xen-4.15``

* Xilinx (xlnx):

  * New bindings:

    * :dtcompatible:`xlnx,zynqmp-ipi-mailbox`

* Shenzhen Xptek Technology Co., Ltd (xptek):

  * Modified bindings:

    * :dtcompatible:`xptek,xpt2046` (on spi bus):

          * bus list changed from ['kscan'] to []

* Zephyr-specific binding (zephyr):

  * New bindings:

    * :dtcompatible:`zephyr,fake-rtc`
    * :dtcompatible:`zephyr,i2c-dump-allowlist`
    * :dtcompatible:`zephyr,lvgl-button-input`
    * :dtcompatible:`zephyr,lvgl-encoder-input`
    * :dtcompatible:`zephyr,lvgl-pointer-input`
    * :dtcompatible:`zephyr,mdio-gpio`
    * :dtcompatible:`zephyr,native-tty-uart`
    * :dtcompatible:`zephyr,ram-disk`
    * :dtcompatible:`zephyr,sensing`
    * :dtcompatible:`zephyr,sensing-phy-3d-sensor`

  * Removed bindings:

    * ``zephyr,gpio-keys``

  * Modified bindings:

    * :dtcompatible:`zephyr,mmc-disk` (on sd bus):

          * new property: ``bus-width``

    * :dtcompatible:`zephyr,bt-hci-spi` (on spi bus):

          * new property: ``controller-data-delay-us``

    * :dtcompatible:`zephyr,sdhc-spi-slot` (on spi bus):

          * new property: ``pwr-gpios``

    * :dtcompatible:`zephyr,memory-region`:

          * new property: ``zephyr,memory-attr``
          * property ``zephyr,memory-region-mpu`` enum value changed from ['RAM', 'RAM_NOCACHE', 'FLASH', 'PPB', 'IO', 'EXTMEM'] to None
          * property ``zephyr,memory-region-mpu`` deprecation status changed from False to True
          * property ``reg`` is now required

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

* Management

  * Introduced MCUmgr client support with handlers for img_mgmt and os_mgmt.

  * Added response checking to MCUmgr's :c:enumerator:`MGMT_EVT_OP_CMD_RECV`
    notification callback to allow applications to reject MCUmgr commands.

  * MCUmgr SMP version 2 error translation (to legacy MCUmgr error code) is now
    supported in function handlers by setting ``mg_translate_error`` of
    :c:struct:`mgmt_group` when registering a group. See
    :c:type:`smp_translate_error_fn` for function details.

  * Fixed an issue with MCUmgr img_mgmt group whereby the size of the upload in
    the initial packet was not checked.

  * Fixed an issue with MCUmgr fs_mgmt group whereby some status codes were not
    checked properly, this meant that the error returned might not be the
    correct error, but would only occur in situations where an error was
    already present.

  * Fixed an issue whereby the SMP response function did not check to see if
    the initial zcbor map was created successfully.

  * Fixes an issue with MCUmgr shell_mgmt group whereby the length of a
    received command was not properly checked.

  * Added optional mutex locking support to MCUmgr img_mgmt group, which can
    be enabled with :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_MUTEX`.

  * Added MCUmgr settings management group, which allows for manipulation of
    zephyr settings from a remote device, see :ref:`mcumgr_smp_group_3` for
    details.

  * Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_SECONDARY`
    and :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_ANY`
    that allow to control whether MCUmgr client will be allowed to confirm
    non-active images.

  * Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_ERASE_PENDING` that allows
    to erase slots pending for next boot, that are not revert slots.

  * Added ``user_data`` as an optional field to :c:struct:`mgmt_handler` when
    :kconfig:option:`CONFIG_MCUMGR_MGMT_HANDLER_USER_DATA` is enabled.

  * Added optional ``force`` parameter to os mgmt reset command, this can be checked in the
    :c:enumerator:`MGMT_EVT_OP_OS_MGMT_RESET` notification callback whose data structure is
    :c:struct:`os_mgmt_reset_data`.

  * Added configurable number of SMP encoding levels via
    :kconfig:option:`CONFIG_MCUMGR_SMP_CBOR_MIN_ENCODING_LEVELS`, which automatically increments
    minimum encoding levels for in-tree groups if :kconfig:option:`CONFIG_ZCBOR_CANONICAL` is
    enabled.

  * Added STM32 SPI backend for EC Host command protocol.

  * Fixed settings_mgmt returning unknown error instead of invalid key specified error.

  * Fixed fs_mgmt returning parameter too large error instead of file is empty error when
    attempting to hash/checksum a file which is empty.

* File systems

  * Added support for ext2 file system.
  * Added support of mounting littlefs on the block device from the shell/fs.
  * Added alignment parameter to FS_LITTLEFS_DECLARE_CUSTOM_CONFIG macro, it can speed up read/write
    operation for SDMMC devices in case when we align buffers on CONFIG_SDHC_BUFFER_ALIGNMENT,
    because we can avoid extra copy of data from card buffer to read/prog buffer.

* Random

  * ``CONFIG_XOROSHIRO_RANDOM_GENERATOR``, deprecated a long time ago, is finally removed.

* Retention

  * Added the :ref:`blinfo_api` subsystem.

  * Added support for allowing mutex support to be forcibly disabled with
    :kconfig:option:`CONFIG_RETENTION_MUTEX_FORCE_DISABLE`.

* Binary descriptors

  * Added the :ref:`binary_descriptors` (``bindesc``) subsystem.

* POSIX API

  * Added dynamic thread stack support for :c:func:`pthread_create`
  * Fixed :c:func:`stat` so that it returns file stats instead of filesystem stats
  * Implemented :c:func:`pthread_barrierattr_destroy`, :c:func:`pthread_barrierattr_getpshared`,
    :c:func:`pthread_barrierattr_init`, :c:func:`pthread_barrierattr_setpshared`,
    :c:func:`pthread_condattr_destroy`, :c:func:`pthread_condattr_init`,
    :c:func:`pthread_mutexattr_destroy`, :c:func:`pthread_mutexattr_init`, :c:func:`uname`,
    :c:func:`sigaddset`, :c:func:`sigdelset`, :c:func:`sigemptyset`, :c:func:`sigfillset`,
    :c:func:`sigismember`, :c:func:`strsignal`, :c:func:`pthread_spin_destroy`,
    :c:func:`pthread_spin_init`, :c:func:`pthread_spin_lock`, :c:func:`pthread_spin_trylock`,
    :c:func:`pthread_spin_unlock`, :c:func:`timer_getoverrun`, :c:func:`pthread_condattr_getclock`,
    :c:func:`pthread_condattr_setclock`, :c:func:`clock_nanosleep`
  * Added support for querying the number of bytes available to read via the
    :c:macro:`FIONREAD` request to :c:func:`ioctl`
  * Added :kconfig:option:`CONFIG_FDTABLE` to conditionally compile file descriptor table
  * Added logging to POSIX threads, mutexes, and condition variables
  * Fixed :c:func:`poll` issue with event file descriptors

* LoRa/LoRaWAN

  * Updated ``loramac-node`` from v4.6.0 to v4.7.0

* CAN ISO-TP

  * Added support for CAN FD.

* RTIO

  * Added atomic completion counter fixing a race caught by unit tests
  * Added a :c:macro:`RTIO_SQE_NO_RESPONSE` flag for submissions when no completion notification
    is needed
  * Removed unused Kconfig options for different executors

* ZBus

  * Changed channels' and observers' metadata to comply with the data/config approach. ZBus stores
    immutable config in iterable sections in Flash and the mutable portion of data in the RAM.
  * The relationship between channels and observers is mapped using a new entity called
    observation. The observation enables us to increase the granularity of masking observation.
    Developers can mask individual observations, disable the observer, or use runtime observers.
  * Added API :c:macro:`ZBUS_CHAN_ADD_OBS` macro for adding post-definition static observers of a
    channel. That can replace the runtime observer feature, enabling developers to add static
    observers after the channel definition in different files. It increases the composability of
    the system using ZBus, making post-definition channel observation rely on the stack instead of
    the heap.
  * Added a new type of observer called Message Subscriber. ZBus' VDED will send a copy of the
    message during the publication/notification process.
  * Changed the VDED delivery sequence. Check the :ref:`documentation <zbus delivery sequence>`.
  * ZBus runtime observers now rely on the heap instead of a memory pool.
  * Added new iterable section iterators APIs (for channels and observers) can now receive a
    ``user_data`` pointer to keep context between the function calls.
  * Added APIs :c:macro:`ZBUS_LISTENER_DEFINE_WITH_ENABLE` and
    :c:macro:`ZBUS_SUBSCRIBER_DEFINE_WITH_ENABLE` that allows developers to define observers'
    statuses (enabled/disabled) programmatically. With the API, developers can create observers
    initially disabled and enable them in runtime.

* Power management

  * Added :kconfig:option:`CONFIG_PM_NEED_ALL_DEVICES_IDLE`. When this
    option is set the power management will keep the system active
    if there is any device busy.
  * :c:func:`pm_device_runtime_get` can be called from ISR now.
  * Power states can be disabled directly in devicetree doing ``status = "disabled";``
  * Added the helper function, :c:func:`pm_device_driver_init`, for
    initializing devices into a specific power state.

* Modem modules

  * Added the :ref:`modem` subsystem.

HALs
****

* Nordic

  * Updated nrfx to version 3.1.0.

* Nuvoton

  * Added Nuvoton NuMaker M46x

MCUboot
*******

  * Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_NO_DOWNGRADE`
    that allows to inform application that the on-board MCUboot has been configured
    with downgrade  prevention enabled. This option is automatically selected for
    DirectXIP mode and is available for both swap modes.

  * Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_OVERWRITE_ONLY`
    that allows to inform application that the on-board MCUboot will overwrite
    the primary slot with secondary slot contents, without saving the original
    image in primary slot.

  * Fixed issue with serial recovery not showing image details for decrypted images.

  * Fixed issue with serial recovery in single slot mode wrongly iterating over 2 image slots.

  * Fixed an issue with boot_serial repeats not being processed when output was sent, this would
    lead to a divergence of commands whereby later commands being sent would have the previous
    command output sent instead.

  * Fixed an issue with the boot_serial zcbor setup encoder function wrongly including the buffer
    address in the size which caused serial recovery to fail on some platforms.

  * Fixed wrongly building in optimize for debug mode by default, this saves a significant amount
    of flash space.

  * Fixed issue with serial recovery use of MBEDTLS having undefined operations which led to usage
    faults when the secondary slot image was encrypted.

  * Fixed issue with bootutil asserting on maximum alignment in non-swap modes.

  * Added error output when flash device fails to open and asserts are disabled, which will now
    panic the bootloader.

  * Added currently running slot ID and maximum application size to shared data function
    definition.

  * Added P384 and SHA384 support to imgtool.

  * Added optional serial recovery image state and image set state commands.

  * Added ``dumpinfo`` command for signed image parsing in imgtool.

  * Added ``getpubhash`` command to dump the sha256 hash of the public key in imgtool.

  * Added support for ``getpub`` to print the output to a file in imgtool.

  * Added support for dumping the raw versions of the public keys in imgtool.

  * Added support for sharing boot information with application via retention subsystem.

  * Added support for serial recovery to read and handle encrypted seondary slot partitions.

  * Removed ECDSA P224 support.

  * Removed custom image list boot serial extension support.

  * Reworked boot serial extensions so that they can be used by modules or from user repositories
    by switching to iterable sections.

  * Reworked image encryption support for Zephyr, static dummy key files are no longer in the code,
    a pem file must be supplied to extract the private and public keys. The Kconfig menu has
    changed to only show a single option for enabling encryption and selecting the key file.

  * Reworked the ECDSA256 TLV curve agnostic and renamed it to ``ECDSA_SIG``.

  * CDDL auto-generated function code has been replaced with zcbor function calls, this now allows
    the parameters to be supplied in any order.

  * The MCUboot version in this release is version ``2.0.0+0-rc1``.

Nanopb
******

  * Changed project status to maintained.

  * Added a separate nanopb.cmake file to be included by applications.

  * Added helper cmake function ``zephyr_nanopb_sources`` to simplify ``.proto`` file inclusion.

LVGL
****

  * Changed project status to maintained.

  * Library has been updated to release v8.3.7.

  * Added ``zephyr,lvgl-{pointer,button,encoder}-input`` pseudo device bindings.
    :kconfig:option:`CONFIG_LV_Z_KSCAN_POINTER` is still supported but touch controllers
    need a :dtcompatible:`zephyr,kscan-input` child node to emit input events.

  * LVGL shell allows for monkey testing (requires :kconfig:option:`CONFIG_LV_USE_MONKEY`)
    and inspecting memory usage.

Trusted Firmware-A
******************

* Updated to TF-A 2.9.0.

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

* Upgraded Sphinx to 6.2

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

* Created common sample for file systems (``fs_sample``). It originates from sample for FAT
  (``fat_fs``) and supports both FAT and ext2 file systems.

* Created the zbus confirmed channel sample to demonstrate how to implement a delivery-guaranteed
  channel using subscribers.

* Created the zbus message subscriber sample to demonstrate how to use message subscribers.

---

### Doc Releases Release Notes 3.6 (`doc/releases/release-notes-3.6.rst`)

:orphan:

.. _zephyr_3.6:

Zephyr 3.6.0
############

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

Major enhancements with this release include:

* New :ref:`GNSS subsystem <gnss_api>` added, enabling geo-awareness in Zephyr applications.
* New API and drivers introduced for interfacing with :ref:`keyboard matrices <gpio-kbd>`.
* New socket and CoAP service libraries streamlining the implementation of socket and CoAP servers
  respectively, while also optimizing the use of resources.
* Integrated Trusted Firmware-M (TF-M) 2.0, including an update to Mbed TLS 3.5.2.
* Improved LLEXT tooling, simplifying module creation in the Zephyr build system.
* Userspace support extended to Xtensa architecture.
* Build system now supports Link Time Optimization (LTO), reducing the size of the final image.
* Bluetooth Mesh protocol 1.1 now supported by default.
* Major updates to the documentation of the :zephyr:board:`native simulator <native_sim>`,
  clarifying supported peripherals and how to use them.
* Over 30 new supported boards, spanning all Zephyr-supported architectures.

An overview of the changes required or recommended when migrating your application from Zephyr
v3.5.0 to Zephyr v3.6.0 can be found in the separate :ref:`migration guide<migration_3.6>`.

The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************
The following CVEs are addressed by this release:

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

* CVE-2023-5779 `Zephyr project bug tracker GHSA-7cmj-963q-jj47
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7cmj-963q-jj47>`_

* CVE-2023-6249 `Zephyr project bug tracker GHSA-32f5-3p9h-2rqc
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-32f5-3p9h-2rqc>`_

* CVE-2023-6749 `Zephyr project bug tracker GHSA-757h-rw37-66hw
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-757h-rw37-66hw>`_

* CVE-2023-6881 `Zephyr project bug tracker GHSA-mh67-4h3q-p437
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mh67-4h3q-p437>`_

* CVE-2023-7060: Under embargo until 2024-03-14

* CVE-2024-1638 `Zephyr project bug tracker GHSA-p6f3-f63q-5mc2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p6f3-f63q-5mc2>`_

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

* ARC

  * Enabled hardware prefetcher and shared cluster cache (SCM - Shared Cluster
    Memory) for ARCv3 processors (HS5x & HS6x).
  * Disabled Thread-local Storage support for platforms with two or more register banks.
  * Fixed unstable work of application built with MetaWare toolchain for hardware
    platforms (garbage in .device_states section).

* ARM

  * MPU regions are now always cleared before initialization.
  * Standardized on :c:func:`arch_secondary_cpu_init` to provide consistency
    across all architectures.
  * Renamed :c:func:`z_arm_prep_c` as :c:func:`z_prep_c` to provide
    consistency across all architectures.
  * Renamed the exception header to be consistent across all architectures.
  * GDB stubs added (currently only supports Zynq-7000).
  * Added support for custom interrupt controllers using
    :kconfig:option:`CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER`.
  * MMU and MPU initialization moved to :c:func:`z_prep_c` for Cortex-A and
    Cortex-R to enable initialization by individual cores.
  * Common Cortex-M MPU code moved to ``arch/arm/core/mpu``.

* Xtensa

  * Removed the unused Kconfig option ``CONFIG_XTENSA_NO_IPC``.

  * Added userspace support via MMU.

Bluetooth
*********

* Audio

  * Changed ``bt_bap_scan_delegator_subgroup`` to :c:struct:`bt_bap_bass_subgroup` and
    made it independent of :kconfig:option:`CONFIG_BT_BAP_SCAN_DELEGATOR`.
  * Modified :c:func:`bt_bap_stream_send` to no longer take a timestamp as parameter,
    and added :c:func:`bt_bap_stream_send_ts` that does.
  * Modified :c:func:`bt_cap_stream_send` to no longer take a timestamp as parameter,
    and added :c:func:`bt_cap_stream_send_ts` that does.
  * Assigned number values have been moved from :file:`include/zephyr/bluetooth/audio/lc3.h` to
    :file:`include/zephyr/bluetooth/audio/audio.h` and the ``LC3`` infix have been removed.
  * The CAP initiator APIs have been streamlined and follow the same parameter pattern.
  * Added Kconfig options to make MCC functionality optional to reduce memory usage for simple
    clients.
  * Added CAP Commander change volume and change volume offset.
  * Added proper support for doing decoding in the application instead of in the controller by
    modifying how the ISO data path is configured.
  * Added :c:func:`bt_csip_set_member_unregister` to unregister a CSIS instance.
  * Added helper functions to get and set assigned number values in codec configuration and
    codec capabilities.
  * Added support for the new mono audio location.
  * Added ISO state callbacks for streams so the user knows the state of the CIS.
  * Added :c:func:`bt_pacs_set_available_contexts_for_conn` to set available context per connection.
  * Refactored the :c:struct:`bt_bap_base` to be an abstract struct with new helper functions,
    so that Zephyr supports all BASEs regardless of the size.

* Host

  * Added ``recycled()`` callback to :c:struct:`bt_conn_cb`, which notifies listeners when a
    connection object has been freed, so it can be utilized for different purposes. No guarantees
    are made to what listener will be granted the object, as only the first claim is served.
  * Modified :c:func:`bt_iso_chan_send` to no longer take a timestamp as parameter,
    and added :c:func:`bt_iso_chan_send_ts` that does.

* Mesh

  * Added the delayable messages functionality to apply random delays for
    the transmitted responses on the Access layer.
    The functionality is enabled by the :kconfig:option:`CONFIG_BT_MESH_ACCESS_DELAYABLE_MSG`
    Kconfig option.
  * The Bluetooth Mesh protocol 1.1 is now supported by default.

* Controller

  * Added deinit implementation for ESP32 controller.

* HCI Driver

  * Split ST HCI SPI Bluetooth driver from the Zephyr one to provide more features
    based on ST SPI protocols V1 and V2. As a result, :dtcompatible:`st,hci-spi-v1` and
    :dtcompatible:`st,hci-spi-v2` were introduced.

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

* Added support for these SoC series:

  * Added support for Renesas R-Car Gen4 series.
  * Added support for STM32F303xB SoC variants.
  * Added support for STM32H7B0xx SoC variants.
  * Added support for STM32L010xx SoC variants.
  * Added support for STM32L081xx SoC variants.
  * Added support for STM32U5A9xx SoC variants.
  * Added support for NXP S32K1 devices.
  * Added support for NXP IMX8ULP SoC.
  * Added support for NXP MIMXRT595 DSP core.

* Made these changes in other SoC series:

  * Nordic SoCs now imply :kconfig:option:`CONFIG_XIP` instead of selecting it. This allows for
    creating RAM-based applications by disabling it.
  * BLE is now supported on STM32WBA series.
  * xtensa: imx8: Split the generic i.MX8 SoC into i.MX8QXP and i.MX8QM.
  * LPC55xxx: Fixed the system hardware clock cycle rate.

* Added support for these ARM boards:

  * Added support for Adafruit QTPy RP2040 board: ``adafruit_qt_py_rp2040``.
  * Added support for FANKE FK7B0M1-VBT6 board: ``fk7b0m1_vbt6``.
  * Added support for Renesas R-Car Spider board CR52: ``rcar_spider_cr52``.
  * Added support for ST Nucleo F722ZE board: ``nucleo_f722ze``.
  * Added support for ST STM32H750B Discovery Kit: ``stm32h750b_dk``.
  * Added support for ST STM32L4R9I Discovery board: ``stm32l4r9i_disco``.
  * Added support for ST STM32U5A9J-DK discovery kit: ``stm32u5a9j_dk``.
  * Added support for ST Nucleo WBA55CG board: ``nucleo_wba55cg``.
  * Added support for ST STM32WB5MM-DK Discovery board: ``stm32wb5mm_dk``.
  * Added support for Wiznet W5500 Evaluation Pico board: ``w5500_evb_pico``.
  * Added support for ADI boards: ``adi_sdp_k1``, ``adi_eval_adin1110ebz``,
    ``adi_eval_adin2111ebz``.
  * Added support for NXP UCANS32K1SIC board: ``ucans32k1sic``.

* Added support for this RISC-V board:

  * Added Lilygo TTGO T8-C3 board: ``ttgo_t8c3``.

* Added support for these Xtensa boards:

  * Added support for NXP iMX8ULP board: ``nxp_adsp_imx8ulp``.
  * Added Heltec Wireless Stick Lite (V3) board: ``heltec_wireless_stick_lite_v3``.
  * Added KINCONY-KC868-A32 board: ``kincony_kc868_a32``.
  * Added Lolin ESP32-S2 Mini board: ``esp32s2_lolin_mini``.
  * Added Lilygo TTGO LoRa32 board: ``ttgo_lora32``.
  * Added M5Stack AtomS3 board: ``m5stack_atoms3``.
  * Added M5Stack AtomS3-Lite board: ``m5stack_atoms3_lite``.
  * Added M5Stack StampS3 board: ``m5stack_stamps3``.

* Made these changes for ARM boards:

  * Added support for low power on G1120B0MIPI using RT595.
  * Added support for lpspi, lpi2c on NXP board: ``mimx93_evk_a55``.
  * Fixed partition naming on ``lpcxpresso55s69`` to use the standard slot
    naming used by TFM-enabled Zephyr platforms.
  * Enabled support for linkserver debugger on ``frdm_kl25z``, ``mimxrt1015_evk``,
    ``mimxrt1020_evk``, ``mimxrt1050_evk``, ``mimxrt685_evk``, ``frdm_k64f``.
  * Switched MCUBoot FW Update mode on NXP boards from Swap & Scratch to Swap & Move.

* Made these changes for RISC-V boards:

  * Enabled ADC support on ``longan_nano``.

* Made these changes for native/POSIX boards:

  * The :ref:`simulated nrf5340 targets<nrf5340bsim>` now include the IPC and MUTEX peripherals,
    and support OpenAMP to communicate between the cores.
    It is now possible to run the BLE controller or 802.15.4 driver in the net core, and application
    and BT host in the app core.

  * The nrf*_bsim simulated targets now include models of the UART peripheral. It is now possible
    to connect a :ref:`nrf52_bsim<nrf52_bsim>` UART to another, or a UART in loopback, utilizing
    both the new and legacy nRFx UART drivers, in any mode.

  * For the native simulator based targets it is now possible to set via Kconfig command line
    options which will be handled by the executable as if they were provided from the invoking
    shell.

  * For all native boards, the native logger backend will now also be
    used even if the UART is enabled.

  * Several bugfixes and other minor additions to the nRF5x HW models.

  * Multiple documentation updates and fixes for all native boards.

* Added support for these following shields:

  * Added support for M5Stack-Core2 base: ``m5stack_core2_ext``.
  * Added support for MikroElektronika ACCEL 13 Click: ``mikroe_accel13_click``.
  * Added support for Waveshare Pico UPS-B: ``waveshare_pico_ups_b``.
  * Added support for X-NUCLEO-BNRG2A1: BLE expansion board: ``x_nucleo_bnrg2a1``.
  * Added support for X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi
    sensor: ``x_nucleo_iks4a1``.

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

* Added functionality for Link Time Optimization.
  This change includes interrupt script generator rebuilding and adds the
  following Kconfig options:

  - :kconfig:option:`CONFIG_ISR_TABLES_LOCAL_DECLARATION`:
    LTO compatible interrupt tables parser
  - :kconfig:option:`CONFIG_LTO`: Enable Link Time Optimization

  Currently the LTO compatible interrupt tables parser is only supported by ARM architectures and
  GCC compiler/linker.
  See pull request :github:`66392` for details.

* Dropped the ``COMPAT_INCLUDES`` option. It was unused since Zephyr v3.0.

* Fixed an issue whereby board revision ``0`` did not include overlay files for that revision.

* Added ``PRE_IMAGE_CMAKE`` and ``POST_IMAGE_CMAKE`` hooks to sysbuild modules, which allows for
  modules to run code after and before each image's cmake invocation.

* Added :kconfig:option:`CONFIG_ROM_END_OFFSET` option which allows reducing the size of an image.
  This is intended for use with firmware signing scripts which add additional data to the end of
  images outside of the build itself.

* Added MCUboot image size reduction to sysbuild images which include MCUboot. This prevents
  issues with building firmware images that are too large for MCUboot to swap.

* Deprecated :kconfig:option:`CONFIG_BOOTLOADER_SRAM_SIZE`. Users of this should transition to
  having RAM set up properly in their board devicetree files.

* Fixed an issue whereby shields were processed in order of the root they resided in rather than
  the order they were supplied to cmake in.

* Fixed an issue whereby using some shields with sysbuild would cause a cmake Kconfig error.

* Fixed an issue where the macros ``_POSIX_C_SOURCE`` and ``_XOPEN_SOURCE`` would be defined
  globally when building with Picolibc or for the native (``ARCH_POSIX``) targets.
  After this change users may need to define them for their own applications or libraries.

* Added support for sysbuild setting a signing script (``SIGNING_SCRIPT``). See
  :ref:`west-extending-signing` for details.

* Added support for ``FILE_SUFFIX`` in the build system which allows for adding suffixes to
  application Kconfig fragment file names and devicetree overlay file names. See
  :ref:`application-file-suffixes` and :ref:`sysbuild_file_suffixes` for details.

* Deprecated ``CONF_FILE`` ``prj_<build>.conf`` build type.

* Added `-Wdouble-promotion` as a default warning when compiling to warn developers with
  single-precision floats easily being promoted to double-precision.

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

* ADC

  * Power Management for ADC is now supported on STM32 devices.
  * STM32 ADC driver now supports mixing shared and separate IRQs (for instance on STM32G473
    which has 5 ADCs, ADC1 and ADC2 share one IRQ while ADC3, ADC4 and ADC5 each have unique IRQs).
    Enabling all instances in the same application is not possible on such devices as of now.

* Auxiliary Display

  * Added Sparkfun SerLCD driver.

* Audio

  * Added a driver :file:`drivers/audio/dmic_mcux.c` for NXP DMIC peripheral. This peripheral is
    present on the ``iMX RT5xx`` and ``iMX RT6xx`` parts, as well as some LPC SOCs.

* Battery backed up RAM

  * STM32WL devices now support BBRAM.

* CAN

  * Added system call :c:func:`can_get_mode()` for getting the current operation mode of a CAN
    controller.

  * Add system call :c:func:`can_get_transceiver()` for getting the CAN transceiver associated with
    a CAN controller.

  * Added accessor functions for the CAN statistics.

  * Added common bit error counter to the CAN statistics.

  * Added CAN statistics support to the following drivers:

    * :dtcompatible:`microchip,mcp2515`
    * :dtcompatible:`espressif,esp32-twai`
    * :dtcompatible:`kvaser,pcican`

  * Added CAN controller driver for the Nuvoton NuMaker series
    (:dtcompatible:`nuvoton,numaker-canfd`).

  * Added CAN controller driver for the Infineon XMC4xxx family
    (:dtcompatible:`infineon,xmc4xxx-can` and :dtcompatible:`infineon,xmc4xxx-can-node`).

  * Added support for the NXP S32K1xx family to the :dtcompatible:`nxp,flexcan` driver.

  * All Bosch M_CAN-based front-end drivers now use named IRQs, "int0" and "int1".

  * The :dtcompatible:`zephyr,native-linux-can` driver now supports being built with embedded C
    libraries.

  * Added support for setting "raw" timing values from the :ref:`CAN shell <can_shell>`.

* Clock control

  * Renesas R-Car clock control driver now supports Gen4 SoCs.
  * Renamed ``CONFIG_CLOCK_CONTROL_RA`` to :kconfig:option:`CONFIG_CLOCK_CONTROL_RENESAS_RA`.
  * On STM32 devices, :dtcompatible:`st,stm32-hse-clock` now allows setting a ``css-enabled``
    property which enables HSE clock security system (CSS).

* Counter

  * The nRFx counter driver now works with simulated nrf*_bsim targets.
  * Added support for top value configuration and fixed a bug in the native posix driver.
  * Added support for the MRT counter for NXP RT6xx, RT5xx and LPC55xxx.

* Crypto

  * STM32WB devices now support crypto API through AES block.

* Display

  * Introduced frame buffer config to STM32 LTDC driver.

* DMA

  * STM32WBA Devices now support GPDMA.
  * Introduced a new DMA driver :file:`drivers/dma/dma_nxp_edma.c` for NXP's eDMA IP.

* Entropy

  * The "native_posix" entropy driver now accepts a new command line option ``seed-random``.
    When used, the random generator will be seeded from ``/dev/urandom``
  * On STM32devices, RNG block is now suspended when pool is full to save power.

* Ethernet

  * The "native_posix" ethernet driver now supports being built with embedded C libraries.
  * Enabled HW checksum offloading for STM32H7.
  * Added implementation of Open Alliance's TC6 T1S driver.
  * Added xmc4xxx driver.
  * Added NXP enet driver with PTP support.
  * Added KSZ8081 PHY driver.
  * Added proper IPv4 multicast support to NXP mcux driver.
  * Added LAN8651 T1S support.
  * Added DSA support to STM32.
  * Added tja1103 PHY support.
  * Added Nuvoton numaker support.
  * Fixed lan865x driver. Transmission speed improvements, IRQ handling fixes.
  * Fixed s32_gmac driver. Link up/down handling fixes.
  * Fixed phy_mii driver. The invalid phy id was incorrectly checked.
  * Fixed sam_gmac driver. PTP clock adjustment was wrong for negative values.
  * Fixed adin2111 driver. Initialization was done incorrectly when working with adin2110.
  * Fixed ksz8081 driver. Logging changes, RMII clock fixes, GPIO pin fixes.
  * Added a driver :file:`drivers/ethernet/eth_nxp_enet.c` for NXP ENET which is a rework of
    the old driver :file:`drivers/ethernet/eth_mcux.c`. The old driver became
    unmaintainable due to fundamental problems with the lack of PHY abstraction. The new driver
    is still experimental and requires maturation. Eventually the old driver will be deprecated
    and this new driver will be supported instead.

* Flash

  * Redesigned the Atmel SAM controller to fully utilize flash page layout.
  * ``spi_nor`` driver now sleeps between polls in ``spi_nor_wait_until_ready``. If this is not
    desired (For example due to ROM constraints in a bootloader),
    :kconfig:option:`CONFIG_SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY` can be disabled.
  * Flash readout protection configuration was added on STM32G4 and STM32L4 series.

  * ``nordic_qspi_nor`` driver now supports user-configurable QSPI timeout with
    :kconfig:option:`CONFIG_NORDIC_QSPI_NOR_TIMEOUT_MS`.

* GNSS

  * Added GNSS device driver API and subsystem for parsing and publishing location,
    datetime, and satellite information, enabled by
    :kconfig:option:`CONFIG_GNSS` and :kconfig:option:`CONFIG_GNSS_SATELLITES`.
    The GNSS subsystem and device drivers are based on the :ref:`modem` subsystem,
    using the ``modem_pipe`` module, modem backends, and ``modem_chat`` module to
    communicate with the modems. For systems which already contain a cellular modem,
    adding a GNSS modem is very efficient due to the reuse of subsystems.

  * Added GNSS-specific, safe, string-to-integer parsing utilities, enabled by
    :kconfig:option:`CONFIG_GNSS_PARSE`.

  * Added NMEA0183 parsing utilities, enabled by
    :kconfig:option:`CONFIG_GNSS_NMEA0183`.

  * Added extensive GNSS data logging, enabled by
    :kconfig:option:`CONFIG_GNSS_DUMP_TO_LOG`.

  * Added generic NMEA0183 over UART based modem device driver, matching the
    devicetree compatible :dtcompatible:`gnss-nmea-generic`.

  * Added fully featured device driver for the Quectel LCX6G series GNSS modems,
    matching the devicetree compatibles :dtcompatible:`quectel,lc26g`,
    :dtcompatible:`quectel,lc76g` and :dtcompatible:`quectel,lc86g`.

* GPIO

  * Renesas R-Car GPIO driver now supports Gen4 SoCs.
  * Renamed ``CONFIG_GPIO_RA`` to :kconfig:option:`CONFIG_GPIO_RENESAS_RA`.
  * Added a new GPIO driver (:file:`drivers/gpio/gpio_mcux_rgpio.c`). This
    driver is used for i.MX93 and i.MX8ULP.

* I2C

  * :c:func:`i2c_get_config` is now supported on the STM32 driver.

* I2S

  * STM32H7 devices now support I2S.

* I3C

  * The Legacy Virtual Register defines have been renamed from ``I3C_DCR_I2C_*``
    to ``I3C_LVR_I2C_*``.

  * Added the ability to specify a start address when searching for a free I3C
    address to be reserved. This requires a new function argument to
    :c:func:`i3c_addr_slots_next_free_find`.

  * Added a field named ``num_xfer`` in :c:struct:`i3c_msg` and
    :c:struct:`i3c_ccc_taget_payload` as an output to indicate the actual
    number of bytes transferred.

  * Cadence I3C driver (:file:`drivers/i3c/i3c_cdns.c`):

    * Added support to handle controller abort where the target does not emit
      end of data for register read but continues sending data.

    * Updated the timeout calculation to be coupled with CPU speed instead of
      a fixed number of retries.

  * NXP MCUX I3C driver (:file:`drivers/i3c/i3c_mcux.c`):

    * Fixed ``mcux_i3c_config_get()`` not returning the configuration to the caller.

    * Improved the FIFO read routine to support higher transfer rates.

    * Removed the infinite wait for MCTRLDONE in auto IBI.

    * Added ``disable-open-drain-high-pp`` property to
      :dtcompatible:`nxp,mcux-i3c`, which allows alternative high time for
      open-drain clock.

* IEEE 802.15.4

  * Removed :kconfig:option:`CONFIG_IEEE802154_SELECTIVE_TXPOWER` Kconfig option.

* Input

  * The ``short-codes`` property of :dtcompatible:`zephyr,input-longpress` is
    now optional. The node can be used by specifying only input and long codes.
  * Added support for keyboard matrix drivers, including a new
    :dtcompatible:`gpio-kbd-matrix` and :dtcompatible:`input-keymap` drivers.
    See :ref:`gpio-kbd` for more details.
  * Added a pair of input codes to HID codes translation functions. See
    :c:func:`input_to_hid_code` and :c:func:`input_to_hid_modifier`.
  * Added power management support to :dtcompatible:`gpio-keys`
    :dtcompatible:`focaltech,ft5336`.
  * Added a :dtcompatible:`zephyr,native-linux-evdev` device node for getting
    input events from a Linux evdev device node.
  * Added support for optical encoders and power management to :dtcompatible:`gpio-qdec`.
  * New driver :dtcompatible:`analog-axis`.
  * Added ESP32 touch sensor driver including a :dtcompatible:`espressif,esp32-touch`.

* MDIO

  * Fixed initialization priorities of NXP s32 NETC drivers.
  * Fixed SAM GMAC transfer timeout errors caused by MDIO clock not being initialized.
  * Fixed ESP32 MDIO driver being enabled when node was not status okay.
  * Added support for C22 and C45 APIs on S32 GMAC.
  * Added MDIO driver for NXP ENET peripheral.
  * Added xmc4xxx MDIO drivers.
  * Fixed build errors caused by mdio.h driver header not including errno.h

* MFD

  * Added support for :dtcompatible:`maxim,max20335`.
  * Added support for :dtcompatible:`adi,ad5592`.
  * Added separate initialization priorities for :dtcompatible:`nordic,npm1300` and
    :dtcompatible:`nordic,npm6001`.

* PCIE

  * Fixed MMIO size calculation by disabling IO/memory decoding beforehand.

  * Modified to use PNP ID for PRT retrieval.

* MEMC

  * Added a new driver for NXP FlexRAM.

* MIPI-DBI

  * Introduced a new :ref:`MIPI DBI driver class <mipi_dbi_api>`.

* Pin control

  * Renesas R-Car pinctrl driver now supports Gen4 SoCs.
  * Renamed ``CONFIG_PINCTRL_RA`` to :kconfig:option:`CONFIG_PINCTRL_RENESAS_RA`.
  * Renesas R-Car pinctrl driver now supports voltage control for R8A77951 and
    R8A77961 SoCs.
  * Added driver for ZynqMP / Mercury XU.
  * Added driver for i.MX8QM/QXP.
  * Added driver for Renesas RZ/T2M.
  * On STM32 devices, pins assigned to JTAG/SW port can now be put to analog state when
    :kconfig:option:`CONFIG_PM` enabled and :kconfig:option:`CONFIG_DEBUG` disabled.

* PWM

  * Fixed ESP32S3 low frequency PWM issue.

* Regulators

  * Added new API functions

    * :c:func:`regulator_set_active_discharge`
    * :c:func:`regulator_get_active_discharge`
    * :c:func:`regulator_list_current_limit`

  * ``startup-delay-us`` and ``off-on-delay-us`` are now supported for all regulators.
  * Added non-multithreading support.
  * Added support for :dtcompatible:`maxim,max20335-regulator`.
  * Added ASYS UVLO configuration for :dtcompatible:`nxp,pca9420`.
  * Added LDO/DCDC support for :dtcompatible:`renesas,smartbond-regulator`.
  * Added LDO soft start configuration for :dtcompatible:`nordic,npm1300-regulator`.
  * Fixed init priority for :dtcompatible:`x-powers,axp192-regulator`.
  * Fixed LDO GPIO control for :dtcompatible:`nordic,npm1300-regulator`.

* Retained memory

  * Retained memory driver backend for registers was added.

  * Retained memory API status was changed from experimental to unstable.

* RTC

  * Added Atmel SAM driver.

* SMBUS:

  * SMBUS is now supported on STM32 devices.

* SDHC

  * Added SDHC driver for Cadence SDHC IP.
  * Added SDHC driver for Infineon CAT1 IP.
  * Added support for SDIO commands to iMX USDHC SDHC driver.

* Sensor

  * Fixed arithmetic overflow in the LTRF216A driver.
  * Fixed negative temperature calculation in MAX31865 driver.
  * Added TI TMAG5273 3D Hall sensor driver.
  * Added Vishay VCNL36825T proximity sensor driver.
  * Added BMA4xx accelerometer sensor emulator.
  * Added white channel support to the VEML7700 ambient light sensor driver.
  * Added ST LIS2DE12 accelerometer sensor driver.
  * Added Bosch BMP581 pressure sensor driver.
  * Added support for triggering multiple sensor devices in the sensor shell.
  * Added Aosong AGS10 TVOC air quality gas sensor driver.
  * Extended MAX31865 temperature sensor driver to support changing three-wire
    mode at runtime.
  * Fixed Bosch BMI160 gyro range calculation and added support for getting
    attributes.
  * Optimized Bosch BMA4xx accelerometer sample calculation, improving
    accuracy.
  * Removed floating point arithmetic from the TI BQ274xx gauge driver.
  * Fixed ST drivers Kconfig dependency to the HAL_ST module.
  * Added Bosch BMA4xx accelerometer sensor driver.
  * Added ST LIS2DU12 accelerometer sensor driver.
  * Extended NTC thermistor driver to support TDK NTCG103JF103FT1.
  * Added NXP S32 quadrature decoder driver.
  * Fixed LSM6DSV16x gyro range table.
  * Fixed missing return value checks in ADLTC2990, TSL2540, MAX17055 drivers.
  * Added ST LPS28DFW pressure sensor driver.
  * Fixed interrupt in BMI323 driver.
  * Added devicetree properties macros to various ST sensor drivers.
  * Added Renesas HS300x temperature/humidity sensor driver.
  * Added Gas Sensing Solutions' ExplorIR-M CO2 sensor driver.
  * Fixed self test delay in ADXL367 accelerometer sensor driver.
  * Added ST LPS22DF pressure sensor driver.
  * Added new streaming APIs and implemented in the ICM42688 driver.
  * Added trigger support to the ADXL367 accelerometer sensor driver.
  * Added PM suspend and resume support to the LSM6DSL accelerometer sensor
    driver.
  * Added AMS TSL2561 light sensor driver.
  * Extended BQ274xx driver to support configuring and confirming the chemistry
    profile.
  * Extended LIS2DH and LSM6DSV16x drivers to support configuring INT1/INT2 in
    devicetree.
  * Added die temperature measurement support to NPM1300 charger driver.
  * Added ADLTC2990 sensor emulator.
  * Extended MPU6050 driver to support MPU6886 variant.
  * Added ADXL367 accelerometer sensor driver.
  * Added LiteOn LTR-F216A illuminance sensor driver.
  * Added Memsic MC3419 accelerometer sensor driver.
  * Added AMD SB temperature sensor driver.
  * Added ESP32S3 internal temperature sensor driver.
  * Added new self-documenting macros for setting ST sensor devicetree
    properties (e.g., LSM6DSV16X_DT_ODR_AT_60Hz).  (:github:`65410`)

* Serial

  * Added drivers to support UART on Renesas RA and RZ/T2M.
  * Added support for higher baud rate for ITE IT8xxx2.
  * Added driver to support Intel Lightweight UART.
  * Added UART asynchronous RX helper.
  * Added support for async API on NS16550 driver.
  * Updated ``uart_esp32`` to use serial port configuration from devicetree.
  * Added an adaptation API to provide interrupt driven API for drivers
    which have only implemented async API.

  * Emulated UART driver (:file:`drivers/serial/uart_emul.c`):

    * Added emulated interrupt based TX.
    * Added emulated error for testing.
    * Modified to use local work queue for data transfer.
    * Modified FIFO size and its handling to be more aligned with real hardware.

  * On STM32 devices, it is now possible to enable FIFO by setting a ``fifo-enable``
    property in targeted serial node, with the following benefits:
    In TX, FIFO allows to work in burst mode, easing scheduling of loaded applications.
    It also allows more reliable communication with UART devices sensitive to variation of inter-frames delays.
    In RX, FIFO reduces overrun occurrences.

* SPI

  * On STM32H7 devices, ``fifo-enable`` property allows using SPI block FIFO. This
    feature is still experimental and requires maturation.
  * On STM32 devices impacted by BSY bit erratum, a workaround was implemented.

* USB

  * On STM2G0 devices, property ``crs-usb-sof`` in ``clk_hsi48`` node enables support
    for Clock Recovery System, allowing a more stable HSI48 clock and hence resilient USB
    connection.
  * On compatible STM32 devices, isochronous endpoints are now functional thanks to the
    use of double buffering.
  * Added new UDC driver for DWC2 controller.
  * Added support for Nuvoton NuMaker series USBD controllers.

* W1

  * Added 1-Wire GPIO master driver. See the :dtcompatible:`zephyr,w1-gpio`
    devicetree binding for more information.

* Wi-Fi

  * Added Infineon airoc driver.
  * Fixed esp32 driver. Decreased minimum heap size, disabled automatic reconnection on leaving.
  * Fixed esp_at driver. Allow building without IPv4 support. Passive Receive mode fixes. Depend on UART runtime configuration.
  * Fixed winc1500 driver. Disconnect result event was not returned when disconnecting.

Networking
**********

* CoAP:

  * Added support for Echo and Request-Tag CoAP options (RFC 9175).
  * Changed :c:func:`coap_remove_observer` API function return type to bool.
  * Introduced CoAP service library, which simplifies implementation of CoAP
    server functionality.
  * Updated CoAP server example to use CoAP service library.
  * Added shell module for CoAP server.
  * Fixed NULL pointer dereference in :c:func:`coap_packet_remove_option`.
  * Added CoAP observer/service network events using the Network Event subsystem.
  * Changed :c:func:`coap_pending_init` API function to take
    :c:struct:`coap_transmission_parameters` instead of retry count.
  * Added new API functions:

    * :c:func:`coap_get_transmission_parameters`
    * :c:func:`coap_set_transmission_parameters`
    * :c:func:`coap_handle_request_len`
    * :c:func:`coap_well_known_core_get_len`
    * :c:func:`coap_uri_path_match`
    * :c:func:`coap_packet_is_request`
    * :c:func:`coap_find_observer`
    * :c:func:`coap_find_observer_by_token`
    * :c:func:`coap_pendings_count`
    * :c:func:`coap_header_set_code`

* Connection Manager:

  * Added a generic Wi-Fi connectivity backend.

* DHCP:

  * Added missing DHCPv6 state structure initialization when initializing
    network interface.
  * DHCP-assigned IPv4 address is now removed when interface goes down.
  * Added DHCPv4 server implementation.
  * Rearranged DHCPv4 file structure. All DHCPv4 related files are now grouped
    within ``subsys/net/lib/dhcpv4``.
  * Moved DHCPv6 files to ``subsys/net/lib/dhcpv6`` to align with DHCPv4.

* DNS:

  * Added support for enabling mDNS listener on all network interfaces.
  * Added VLAN support to the ``mdns_responder`` sample.
  * Fixed TTL/hop limit set on DNS packets.
  * Added :kconfig:option:`CONFIG_DNS_RESOLVER_AUTO_INIT` which allows to disable
    automatic initialization of the default DNS context on boot.

* Ethernet:

  * Manual registration of ARP entries is now supported.
  * Added PHY mode selection to device tree.
  * Added TX-Injection mode support.

* gPTP:

  * The local port identity is now used when forwarding sync messages.
  * Fixed double converted byte order of BMCA info.
  * GM PRIO root system id is now always used for announce messages.
  * Created gPTP handler thread stack size Kconfig option.
  * Inverted the priority of outgoing packets.

* ICMP:

  * Fixed an error being emitted when unhandled ICMP message was received.
  * Fixed a bug where ICMP Echo Reply could be sent without proper source IP
    address set.
  * Fixed a packet leak in ICMP Echo Request handlers in case priority check
    failed.
  * Improved thread safety of the module handling Neighbor Discovery.
  * Added support for IPv6 Neighbor reachability hints, allowing to reduce
    ICMPv6 traffic for active connections.

* IP:

  * Fixed L3/L4 checksum calculation/validation for IP-fragmented packets on
    interfaces that support checksum offload.
  * Fixed net_context not being set on IP fragmented packets, preventing send
    callback from being called.
  * It is now possible to have separate IPv4 TTL value and IPv6 hop limit value for
    unicast and multicast packets. This can be controlled in each socket via
    :c:func:`setsockopt` API.
  * Improved source IP address verification in the IP stack. Addresses received
    to/from loopback address on non-loopback interfaces are dropped.
  * Added new functions to verify if IPv6 address is site local or global.
  * Added support for setting peer IP address in :c:struct:`net_pkt` structure
    for offloaded interfaces. This allows for :c:func:`recvfrom` to return a
    valid address in offloaded case.

* LwM2M:

  * Added :kconfig:option:`CONFIG_LWM2M_UPDATE_PERIOD` which configures the LwM2M
    Update period regardless of the lifetime value.
  * Fixed composite read/write access rights check.
  * Added shell command to delete object and resource instances.
  * Fixed a bug in block-wise transfer where block-wise ACKs were sent with
    wrong response code.
  * Fixed object version reporting for LwM2M version 1.1.
  * Added support for DTLS Connection Identifier in the LwM2M engine.
  * Added support for LwM2M Server Disable executable resource.
  * Implemented fallback mechanism for LwM2M server selection during registration
    phase. The engine will now try to choose a different server if the current one
    becomes unavailable or disabled.
  * Added support for storing LwM2M error list in settings.
  * Fixed pmin observer attribute handling in tickless mode.
  * Added support for notifying the application about ongoing CoAP transmissions
    with ``set_socket_state()`` callback.
  * Deprecated unsigned 64-bit integer value type, as it's not represented in the spec.
    Use signed 64-bit integer instead.
  * Added a callback for LwM2M Gateway object, which allows to handle LwM2M messages
    with prefixed path.
  * Added LwM2M-specific macros for object initialization during boot.
  * Several other minor bugfixes ans improvements.

* Misc:

  * Added support for compile time network event handlers using the macro
    :c:macro:`NET_MGMT_REGISTER_EVENT_HANDLER`.
  * Added the :kconfig:option:`CONFIG_NET_MGMT_EVENT_WORKER` choice to
    allow emitting network events using the system work queue or synchronously.
  * Removed redundant Network Connectivity API documentation page.
  * Improved thread safety of the network connections subsystem.
  * Removed ``eth_native_posix`` sample.
  * Removed redundant ``arb`` and ``fv2015`` fields  from
    ``struct net_pkt_cb_ieee802154``.
  * Introduced a separate mutex for TX at the network interface level to prevent
    concurrent access on TX to drivers that are not re-entrant.
  * Fixed netmask not being registered for loopback address.
  * Added support for binding to a specific network interface at the net_context
    level.
  * Added IGMPv3 support.
  * Added a new network event, ``NET_EVENT_HOSTNAME_CHANGED``, triggered upon
    hostname change.
  * Refactored net_context option getters/setters to reduce code duplication.
  * Fixed a possible packet leak at the ARP level, in case of errors during ARP
    packet creation.
  * Added support for analyzing SNTP time uncertainty.
  * Fixed network interface being brought up even when underlying device is not
    ready.
  * Added start/stop functions for dummy interfaces.
  * Added a detailed :ref:`network configuration <network_configuration_guide>`
    guide to the documentation.
  * Added :kconfig:option:`CONFIG_NET_HOSTNAME_DYNAMIC` option, which allows to
    enable setting hostname at runtime.

* MQTT-SN:

  * Added :c:func:`mqtt_sn_get_topic_name` API function.
  * Fixed handling of incoming Register messages when wildcard subscription is used.

* OpenThread:

  * Implemented the following OpenThread platform APIs:

    * ``otPlatRadioSetRxOnWhenIdle()``
    * ``otPlatResetToBootloader()``
    * ``otPlatCryptoPbkdf2GenerateKey()``

  * Updated OpenThread platform UART driver so that it no longer waits for
    communication with a host to start during boot.
  * Added BLE TCAT implementation in OpenThread platform.
  * Updated Crypto PSA backend for OpenThread with additional algorithms.
  * Fixed ``otPlatAssertFail()`` so that it prints the location of the actual
    assert instead of the function itself.

* PPP:

  * Fixed PPP connection termination when interface goes down.

* Shell:

  * Refactored networking shell module so that instead of large single file, it
    is split into submodules, on a per command basis.
  * Fixed unexpected timeout message when executing loopback ping.
  * Added ``net sockets`` command to print information about open sockets and
    socket services.
  * Join IPv4/IPv6 multicast groups, if needed, when adding IPv4/IPv6 multicast
    addresses via shell.
  * Fixed ``tcp connect`` command operation (TCP context released prematurely).
  * Added support for Echo option in telnet shell backend.
  * Fixed unnecessary connection close in telnet shell backend in case of
    non-fatal EAGAIN or ENOBUFS errors.
  * Fixed double packet dereference in ping reply handler.
  * Fixed possible deadlock when executing ``net arp`` command.
  * Added more detailed Ethernet statistics printout for ``net stats`` command.
  * Added ``net dhcpv4 server`` commands for DHCPv4 server management.
  * Added shell module to manage TLS credentials.

* Sockets:

  * Added support for v4-mapping-to-v6, which allows IPv4 and IPv6 to share the
    same port space.
  * Added support for :c:macro:`IPV6_V6ONLY` socket option.
  * Added support for :c:macro:`SO_ERROR` socket option.
  * Fixed :c:func:`select` not setting ``writefds`` in case of errors.
  * Added support for object core, which allows to track networks sockets and
    their statistics.
  * Added support for :c:func:`recvmsg`.
  * Added support for :c:macro:`IP_PKTINFO` and :c:macro:`IPV6_RECVPKTINFO`
    socket options.
  * Added support for :c:macro:`IP_TTL` socket option.
  * Added support for IPv4 multicast :c:macro:`IP_ADD_MEMBERSHIP` and
    :c:macro:`IP_DROP_MEMBERSHIP` socket options.
  * Added support for IPv6 multicast :c:macro:`IPV6_ADD_MEMBERSHIP` and
    :c:macro:`IPV6_DROP_MEMBERSHIP` socket options.
  * Improved doxygen documentation of BSD socket API.
  * Fixed POLLERR error reporting in TLS sockets.
  * Fixed DTLS handshake processing during :c:func:`poll`.
  * Aligned DTLS socket :c:func:`connect` behavior with regular TLS (handshake
    during connect call).
  * Added Socket Service library, which allows registering multiple socket-based
    network services and processing them within a single thread.
  * Added a new ``echo_service`` sample for Socket Service.
  * Added support for :c:macro:`SO_DOMAIN` socket option.
  * Fixed DTLS connection timeout when monitoring socket with :c:func:`poll`.
  * Fixed NULL link layer address pointer dereference on packet socket, in case
    of packet loopback.
  * Several other minor bugfixes and improvements.

* TCP:

  * TCP stack now replies with RST packet in response to connection attempt on
    a closed port.
  * Fixed remote address passed in :c:func:`accept` call.
  * Fixed reference counting during active handshake to prevent TCP context
    being released prematurely.
  * Fixed compilation with :kconfig:option:`CONFIG_NET_TCP_CONGESTION_AVOIDANCE`
    disabled.
  * Reworked TCP data queueing API to prevent TCP stack from overflowing TX window.
  * Fixed possible race condition between TCP workqueue and other threads when
    releasing TCP context.
  * Fixed possible race condition between input thread and TCP workqueue.
  * Added support for TCP Keep-Alive feature.
  * Fixed a bug where TCP state machine could get stuck in LAST_ACK state
    during passive connection close.
  * Fixed a bug where TCP state machine could get stuck in FIN_WAIT_1 state
    in case peer did not respond.
  * Several other minor bugfixes ans improvements.

* TFTP:

  * Fixed potential buffer overflow when copying TFTP error message.
  * Improved logging in case of errors.

* Wi-Fi:

  * Added Wi-Fi driver version information to Wi-Fi shell.
  * Added AP (Access Point) mode support to Wi-Fi shell.
  * Added Regulatory channel information.
  * Added Wi-Fi bindings to connection manager.
  * Fixed Wi-Fi shell. SSID print fixes. Help text fixes. Channel validation fixes.
  * Fixed TWT functionality. Teardown status was not updated. Powersave fixes.

* zperf:

  * Improved IP address binding. Zperf will now bind to any address by default and
    allow to override this with Kconfig/API provided address.
  * Fixed TCP packet counting when transmitting.
  * Refactored UDP/TCP received to use Socket Service to save memory.
  * Fixed zperf session leak on interrupted downloads.
  * Fixed the calculation ratio between Mbps, Kbps and bps.
  * The zperf sample now supports relocating network code to RAM.

USB
***

* Device support:

  * Introduced new USB Audio 2 implementation that uses devicetree for
    instantiation, hiding descriptor complexity from the application. The initial
    implementation is limited to full speed only and provides the absolute
    minimum set of features required for basic implicit and explicit feedback.
    Interrupt notification is not supported.
  * Added support for SetFeature(TEST_MODE).

Devicetree
**********

Bindings
========

  * Introduced new SPI properties ``spi-cpol``, ``spi-cpha``, and ``spi-hold-cs`` to be used by
    the macro :c:macro:`SPI_CONFIG_DT` in order to set SPI mode in a Devicetree file.

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

* Management

  * Fixed an issue in MCUmgr image management whereby erasing an already erased slot would return
    an unknown error. It now returns success.

  * Fixed MCUmgr UDP transport structs being statically initialised. This results in about a
    ~5KiB flash saving.

  * Fixed an issue in MCUmgr which would cause a user data buffer overflow if the UDP transport was
    enabled on IPv4 only but IPv6 support was enabled in the kernel.

  * Implemented datetime functionality in MCUmgr OS management group. This makes use of the RTC
    driver API.

  * Fixed an issue in MCUmgr console UART input whereby the FIFO would be read outside of an ISR,
    which is not supported in the next USB stack.

  * Fixed an issue whereby the ``mcuboot erase`` DFU shell command could be used to erase the
    MCUboot or currently running application slot.

  * Fixed an issue whereby messages that were too large to be sent over the UDP transport would
    wrongly return :c:enumerator:`MGMT_ERR_EINVAL` instead of :c:enumerator:`MGMT_ERR_EMSGSIZE`.

  * Fixed an issue where confirming an image in Direct XIP mode would always confirm the image in
    the primary slot even when executing from the secondary slot. Now the currently active image is
    always confirmed.

  * Added support for retrieving registered command groups, to support registering and deregistering
    default command groups at runtime, allowing an application to support multiple implementations
    for the same command group.

  * Fixed an issue in MCUmgr FS management whereby the semaphore lock would not be given if an
    error was returned, leading to a possible deadlock.

  * Added support for custom payload MCUmgr handlers. This can be enabled with
    :kconfig:option:`CONFIG_MCUMGR_MGMT_CUSTOM_PAYLOAD`.

  * Fixed an issue in MCUmgr image management whereby an error would be returned if a command was
    sent to erase the slot which was already erased.

  * Added support for image slot size checking to ensure an update can be utilised by MCUboot.
    This can be performed by using sysbuild when building both application and MCUboot by enabling
    :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_SYSBUILD` or by use of bootloader information
    sharing from MCUboot by enabling
    :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_BOOTLOADER_INFO`.

* Logging

  * Added an option to remove string literals from the binary when dictionary-based logging is used.

  * Optimized the most common logging messages (strings with up to 2 numeric arguments). Optimization
    is done for code size (significant gain seen on riscv32) and performance.

  * Extended logging frontend API to optionally implement dedicated functions for optimized messages.
    Optional API is enabled by :kconfig:option:`CONFIG_LOG_FRONTEND_OPT_API`.

  * Added support for runtime message filtering for the logging frontend.

  * Added option to support multiple instances of the UART logging backend.

  * Fixed userspace issue for :c:func:`printk` when :kconfig:option:`CONFIG_LOG_PRINTK` is enabled.

  * Added compile time detection of logging messages that use character pointers for ``%p``.
    It must be avoided when dictionary-based logging is used and strings are stripped from the
    binary. When an erroneous case is detected, the user message is replaced with an error message
    that suggests pointer casting must be added.

  * Removed remaining references to v2 logging. Renamed :c:func:`log2_generic` to :c:func:`log_generic`.

* Modem modules

  * Added ``TRANSMIT_IDLE`` event to the ``modem_pipe`` module which notifies the user of the pipe
    that the backend has transmitted all bytes placed in its buffer using
    :c:func:`modem_pipe_transmit()`.
    The event greatly increases the efficiency of transmitting large quantities of data if used to
    dynamically manage the delay between calls to :c:func:`modem_pipe_transmit()`.

  * Implemented ``TRANSMIT_IDLE`` event in all modem backends.

  * Extended all modem modules to utilize the ``TRANSMIT_IDLE`` event to dynamically manage the delay
    between calls to :c:func:`modem_pipe_transmit()`. This addition reduced the utilization of the
    system workqueue while transmitting large, continuous quantities of data, by 86%, while only
    reducing the throughput by 12%. This optimization additionally allows lower priority threads,
    like the deferred logging thread, to run during the transmission (it was blocked by the
    relentless, continuous calls to :c:func:`modem_pipe_transmit()`).

  * Improved ``modem_pipe`` event dispatching. The ``modem_pipe`` module now invokes the
    ``RECEIVE_READY`` event every time the pipe is attached using :c:func:`modem_pipe_attach()`
    if it has data ready to be read, and always invokes ``TRANSMIT_IDLE`` when the pipe is
    either opened or attached. This ensures event driven users of the modem pipe module can
    rely solely on the events to start read/transmit work. A test suite has been added to
    complement the improvements.

  * Extended ``modem_cmux`` module to support acting both as DTE (user application) and DCE (modem).
    With this addition, two Zephyr applications can communicate with each other through their
    respective ``modem_cmux`` instances.

* Picolibc

  * Updated to version 1.8.6. This removes the :c:macro:`_POSIX_C_SOURCE` definition from the build
    system, so applications will need to add this if they use APIs outside of the Zephyr
    requirements.

  * Added new :c:func:`printf` modes, :kconfig:option:`CONFIG_PICOLIBC_IO_LONG_LONG` and
    :kconfig:option:`CONFIG_PICOLIBC_IO_MINIMAL`. These provide applications with finer grained
    control over the level of support provided by the library to control text space usage. By
    default, the correct level of support is selected based upon other configuration parameters.

  * Added :kconfig:option:`CONFIG_PICOLIBC_ASSERT_VERBOSE`. This option, which is false by default,
    controls whether the :c:func:`assert` function displays verbose information, including the file
    name, line number, function name and failing expression text, when the assertion fails. Leaving
    this disabled saves text space.

  * :kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE` can now be disabled while using Picolibc. This is
    very helpful in diagnosing issues when using Picolibc as those are often caused by enabling TLS
    and not caused by using the library itself.

  * Numerous improvements in the library including code-size reductions in areas like printf and
    ctype and various fixes in the math library.

* Power management

  * Introduced Atmel SAM SUPC functions to allow wakeup sources and poweroff.
  * STM32F4 devices now support stop mode thanks to the use of a RTC based idle timer which
    keeps track of tick evolution while cortex systick is off.

  * :c:func:`pm_device_runtime_put_async()` got a parameter to specify a minimum delay to
    the operation. This is useful to avoid multiple states transitions when a device is used.

  * Devices that don't need to block when suspending or resuming can now be defined as ISR
    safe (``PM_DEVICE_ISR_SAFE``). For those devices, Zephyr is able to reduce RAM consumption
    and runtime device power management can be safely used from interrupts.

  * Optimizations in device runtime power management. :c:func:`pm_device_runtime_get` and
    :c:func:`pm_device_runtime_put` no longer wait for a pending operation to be concluded if it is still
    in the work queue. In this case, the pending work is just canceled and the device state updated.

  * The Kconfig options below were added to customize the initialization priority of different
    power domains.

    * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY`
    * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_MONITOR_INIT_PRIORITY`
    * :kconfig:option:`CONFIG_POWER_DOMAIN_INTEL_ADSP_INIT_PRIORITY`

* Crypto

  * Mbed TLS updated to 3.5.2. Full release notes can be found in:
    https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.5.2

* Retention

  * Fixed issue whereby :kconfig:option:`CONFIG_RETENTION_BUFFER_SIZE` values over 256 would cause
    an infinite loop due to use of 8-bit variables.

* SD

  * Added support for SDIO devices.

* Storage

  * File systems: LittleFS module has been updated to version 2.8.1.

  * Following Flash Map API macros, marked in 3.2 as deprecated, have been removed:
    ``FLASH_AREA_ID``, ``FLASH_AREA_OFFSET``, ``FLASH_AREA_SIZE``,
    ``FLASH_AREA_LABEL_EXISTS`` and ``FLASH_AREA_DEVICE``.

* POSIX API

  * Completed support for ``POSIX_THREADS_EXT``, ``XSI_THREADS_EXT``,
    ``POSIX_CLOCK_SELECTION``, and ``POSIX_SEMAPHORES`` Option Groups.

  * Completed support for ``_POSIX_MESSAGE_PASSING`` and
    ``_POSIX_PRIORITY_SCHEDULING`` Options.

  * Fixed Coverity-CID 211585, 334906, 334909, and 340851.

  * Improved structure and accuracy of POSIX documentation.

  * Improved navigation and organization of POSIX Kconfig options.

  * Added support to allocate and free stacks up to 8 MB with pthread_attr_t.

  * Added support for deferred and asynchronous thread cancellation.

  * Added dining philosophers sample application.

  * Added support for named semaphores.

  * Added a top-level ``posix`` command in the Zephyr shell. Zephyr shell utilities for
    the POSIX API can be added as subcommands (e.g. ``posix uname -a``)

  * Added support for async thread cancellation and ``SIGEV_THREAD``, ``CLOCK_REALTIME``.

  * Added compile-time-constant sysconf() implementation.

* LoRa/LoRaWAN

 * Added LoRaWAN remote multicast support with :kconfig:option:`CONFIG_LORAWAN_REMOTE_MULTICAST`
   in preparation for OTA firmware upgrade support.

* ZBus

  * Replaced mutexes with semaphores to lock channels and implement the Highest Locker Protocol (HLP)
    priority boost for the zbus operations. This feature avoids priority inversions and preemptions,
    making the VDED delivery process faster and more consistent. (:github:`63183`)

  * Fixed documentation for :c:func:`zbus_chan_add` and :c:func:`zbus_chan_rm` adding the timeout
    argument. (:github:`65544`)

  * Fixed warning when mixing C and C++ files using zbus. (:github:`65222`)

  * :c:macro:`ZBUS_CHANNEL_DEFINE` macro is now compatible with C++. (:github:`65196`)

  * Fixed parameter order of net buf pool fixed definition. (:github:`65039`)

  * Refactored the benchmark sample, adding message subscribers. (:github:`64524`)

  * Renamed ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC`` and
    ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC`` to
    :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC` and
    :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC`. (:github:`65632`)

HALs
****

* STM32

  * Updated STM32F1 to cube version V1.8.5.
  * Updated STM32F7 to cube version V1.17.1.
  * Updated STM32H7 to cube version V1.11.1.
  * Updated STM32L4 to cube version V1.18.0.
  * Updated STM32U5 to cube version V1.4.0.
  * Updated STM32WBA to cube version V1.2.0.
  * Updated STM32WB to cube version V1.18.0.

MCUboot
*******

  * Fixed compatible sector checking in bootutil.

  * Fixed Kconfig issue with saving encrypted TLVs not depending on encryption being enabled.

  * Fixed issue with missing condition check for applications in sysflash include file.

  * Fixed issue with single slot encrypted image listing support in boot_serial.

  * Fixed issue with allowing MBEDTLS Kconfig selection when tinycrypt is used.

  * Fixed missing response if echo command was disabled in boot_serial.

  * Fixed issue with USB configurations not generating usable images.

  * Added debug logging for boot status write in bootutil.

  * Added estimated image overhead size to cache in sysbuild.

  * Added firmware loader operating mode which allows for a dedicated secondary slot image that
    is used to update the primary image.

  * Added error if main thread is not pre-emptible when USB CDC serial recovery is enabled.

  * Added error if USB CDC and console are both enabled and set to the same device.

  * Removed the deprecated ``CONFIG_ZEPHYR_TRY_MASS_ERASE`` Kconfig option.

  * Updated zcbor to version 0.8.1 and re-generated boot_serial files.

  * Moved IO functions out of main to separate file.

  * Made ``align`` parameter of imgtool optional.

  * Added MCUBoot support for ``mimxrt1010_evk``, ``mimxrt1015_evk``,
    ``mimxrt1040_evk``, ``lpcxpresso55s06``, ``lpcxpresso55s16``,
    ``lpcxpresso55s28``, ``lpcxpresso55s36``, ``lpcxpresso55s69_cpu0``.

  * Added :kconfig:option:`CONFIG_MCUBOOT_IMGTOOL_OVERWRITE_ONLY` which passes the --overwrite-only option
    to imgtool to avoid adding the swap status area size when calculating overflow.
    It is used by non-swap update modes.

  * The MCUboot version in this release is version ``2.1.0+0-dev``.

zcbor
*****

zcbor has been updated from 0.7.0 to 0.8.1.
Full release notes can be found at:
https://github.com/zephyrproject-rtos/zcbor/blob/0.8.0/RELEASE_NOTES.md and
https://github.com/zephyrproject-rtos/zcbor/blob/0.8.1/RELEASE_NOTES.md

Highlights:

* Addded support for unordered maps.
* Performance improvements.
* Naming improvements for generated code.
* Bugfixes.

LVGL
****

LVGL has been updated from 8.3.7 to 8.3.11.
Detailed release notes can be found at:
https://github.com/zephyrproject-rtos/lvgl/blob/zephyr/docs/CHANGELOG.md

Additionally, the following changes in Zephyr were done:

  * Added the :dtcompatible:`zephyr,lvgl-keypad-input` compatible for keypad input.

  * Fixed issue with the Zephyr log levels not mapping properly to LVGL log levels.

  * Fixed issue where setting :kconfig:option:`CONFIG_LV_Z_FULL_REFRESH` did not
    set :kconfig:option:`CONFIG_LV_Z_VDB_SIZE` to 100 percent.

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

* :zephyr:board:`native_sim<native_sim>` has replaced ``native_posix`` as the default
  test platform.
  ``native_posix`` remains supported and used in testing but will be deprecated
  in a future release.

* Bluetooth split stacks tests, where the BT host and controller are run in separate MCUs, are
  now run in CI based on the :ref:`nrf5340_bsim<nrf5340bsim>` targets.
  Several other runtime AMP tests based on these targets have been added to CI, including tests
  of OpenAMP, the mbox and IPC drivers/subsystem, and the logger multidomain functionality.

* Runtime UART tests have been added to CI based on the :ref:`nrf52_bsim<nrf52_bsim>` target.
  These include tests of the nRFx UART driver and networked BT stack tests with the host and
  controller in separate devices communicating over the HCI UART driver.

* Fixed an issue in :zephyr:code-sample:`smp-svr` sample whereby if USB was already initialised,
  application would fail to boot properly.

* Added an LVGL sample :zephyr:code-sample:`lvgl-accelerometer-chart` showcasing displaying of live
  sensor data in a chart widget.

* Added ESP32-S3 IPM support in :zephyr:code-sample:`ipm-esp32`.

* Added ESP32 memory-mapped flash access sample in :zephyr:code-sample:`esp32-flash-memory-mapped`.

* Added ESP32 PWM loopback test case.

* Added support in the mbox sample for NXP boards ``MIMXRT1160-EVK``, ``MIMXRT1170-EVK``,
  ``MIMXRT1170-EVKB``, ``LPCXpresso55S69``.

* Added a sample ``flexram-magic-addr`` for ``mimxrt11xx_cm7`` to show how to use flexram magic
  address functionality when using memc flexram driver.

---

### Doc Releases Release Notes 3.7 (`doc/releases/release-notes-3.7.rst`)

:orphan:

.. _zephyr_3.7:

Zephyr 3.7.0
############

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

This release is the last non-maintenance 3.x release and, as such, will be the next
:ref:`Long Term Support (LTS) release <release_process_lts>`.

Major enhancements with this release include:

* A new, completely :ref:`overhauled hardware model <hw_model_v2>` has been introduced.
  It changes the way both SoCs and boards are named, defined and constructed in Zephyr.
  Additional information can be found in the :ref:`board_porting_guide`.
* A long-awaited :ref:`HTTP Server <http_server_interface>` library, and associated service API,
  allow to easily implement HTTP/1.1 and HTTP/2 servers in Zephyr. Resources can be registered
  statically or dynamically, and WebSocket support is included.
* :ref:`POSIX support <posix_support>` has been extended, with most Options of the IEEE 1003-2017
  :ref:`System Interfaces <posix_system_interfaces_required>` receiving support, as well as most
  Options and Option groups required for :ref:`PSE51 <posix_aep_pse51>`,
  :ref:`PSE52 <posix_aep_pse52>`, and :ref:`PSE53 <posix_aep_pse53>`.
* Bluetooth Host has been extended with support for the Nordic UART Service (NUS), Hands-free Audio
  Gateway (AG), Advanced Audio Distribution Profile (A2DP), and Audio/Video Distribution Transport
  Protocol (AVDTP).
* Sensor abstraction model has been overhauled to adopt a
  :ref:`read-then-decode approach <sensor-read-and-decode>` that enables more types of sensors and
  data flows than the previous fetch/get APIs.
* A new :ref:`LLEXT Extension Developer Kit (EDK) <llext_build_edk>` makes it easier to develop and
  integrate custom extensions into Zephyr, including outside of the Zephyr tree.
* :zephyr:board:`Native simulator <native_sim>` now supports leveraging the native host networking
  stack without having to rely on a complex setup of the host environment.
* Trusted Firmware-M (TF-M) 2.1.0 and Mbed TLS 3.6.0 have been integrated into Zephyr.
  Both of these versions are LTS releases. What's more, :ref:`psa_crypto` has been adopted as a replacement
  for TinyCrypt and provides enhanced security and performance.
* A new experimental implementation of the :ref:`Precision Time Protocol <ptp_interface>` (PTP, IEEE
  1588) allows to synchronize time across devices with sub-microsecond accuracy.
* New documentation pages have been introduced to help developers setup their local development
  environment for :ref:`vscode_ide` and :ref:`clion_ide`.

An overview of the changes required or recommended when migrating your application from Zephyr
v3.6.0 to Zephyr v3.7.0 can be found in the separate :ref:`migration guide<migration_3.7>`.

While you may refer to release notes from previous 3.x releases for a full change log, other major
enhancements and changes since previous LTS release, Zephyr 2.7.0, include:

* Added support for Picolibc as the new default C library.
* Added support for the following types of hardware peripherals:

  * 1-Wire
  * Battery Charger
  * Cellular Modem
  * Fuel Gauge
  * GNSS
  * Hardware Spinlock
  * I3C
  * RTC (Real Time Clock)
  * SMBus

* Added support for snippets. Snippets are common configuration settings that can be used across
  platforms.
* Added support for Linkable Loadable Extensions (LLEXT).
* Summary of breaking changes (refer to release notes and migration guides from previous release
  notes for more details):

  * All Zephyr public headers have been moved to :file:`include/zephyr`, meaning they need to be
    prefixed with ``<zephyr/...>`` when included.
  * Pinmux API has been removed. Pin control needs to be used as its replacement, refer to
    :ref:`pinctrl-guide` for more details.

  * The following deprecated or experimental features have been removed:

    * 6LoCAN
    * civetweb module. See Zephyr 3.7's new :ref:`http_server_interface` as a replacement.
    * tinycbor module. You may use zcbor as a replacement.

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-2024-3077 `Zephyr project bug tracker GHSA-gmfv-4vfh-2mh8
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gmfv-4vfh-2mh8>`_

* CVE-2024-3332  `Zephyr project bug tracker GHSA-jmr9-xw2v-5vf4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jmr9-xw2v-5vf4>`_

* CVE-2024-4785: Under embargo until 2024-08-07

* CVE-2024-5754: Under embargo until 2024-09-04

* CVE-2024-5931: Under embargo until 2024-09-10

* CVE-2024-6135: Under embargo until 2024-09-11

* CVE-2024-6137: Under embargo until 2024-09-11

* CVE-2024-6258: Under embargo until 2024-09-05

* CVE-2024-6259: Under embargo until 2024-09-12

* CVE-2024-6442: Under embargo until 2024-09-22

* CVE-2024-6443: Under embargo until 2024-09-22

* CVE-2024-6444: Under embargo until 2024-09-22

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

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

 * The Bluetooth subsystem specific debug symbols are removed. They have been replaced with the
   Zephyr logging ones.

 * Removed deprecated ``pcie_probe`` and ``pcie_bdf_lookup`` functions from the PCIe APIs.

 * Removed deprecated ``CONFIG_EMUL_EEPROM_AT2X`` Kconfig option.

 * Removed ``pm_device_state_lock``, ``pm_device_state_is_locked`` and ``pm_device_state_unlock``
   functions from the Device PM APIs.

 * Removed deprecated MCUmgr transport API functions: ``zephyr_smp_rx_req``,
   ``zephyr_smp_alloc_rsp`` and ``zephyr_smp_free_buf``.

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

 * Bluetooth advertiser options :code:`BT_LE_ADV_OPT_USE_NAME` and
   :code:`BT_LE_ADV_OPT_FORCE_NAME_IN_AD` are now deprecated. That means the following macro are
   deprecated:

    * :c:macro:`BT_LE_ADV_CONN_NAME`
    * :c:macro:`BT_LE_ADV_CONN_NAME_AD`
    * :c:macro:`BT_LE_ADV_NCONN_NAME`
    * :c:macro:`BT_LE_EXT_ADV_CONN_NAME`
    * :c:macro:`BT_LE_EXT_ADV_SCAN_NAME`
    * :c:macro:`BT_LE_EXT_ADV_NCONN_NAME`
    * :c:macro:`BT_LE_EXT_ADV_CODED_NCONN_NAME`

   Application developers will now need to set the advertised name themselves by updating the
   advertising data or the scan response data.

* CAN

  * Deprecated the :c:func:`can_calc_prescaler` API function, as it allows for bitrate
    errors. Bitrate errors between nodes on the same network leads to them drifting apart after the
    start-of-frame (SOF) synchronization has taken place, leading to bus errors.
  * Deprecated the :c:func:`can_get_min_bitrate` and :c:func:`can_get_max_bitrate` API functions in
    favor of :c:func:`can_get_bitrate_min` and :c:func:`can_get_bitrate_max`.
  * Deprecated the :c:macro:`CAN_MAX_STD_ID` and :c:macro:`CAN_MAX_EXT_ID` macros in favor of
    :c:macro:`CAN_STD_ID_MASK` and :c:macro:`CAN_EXT_ID_MASK`.

* PM

  * Deprecated :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE`. Similar behavior can be achieved
    using :kconfig:option:`CONFIG_PM_DEVICE_SYSTEM_MANAGED`.

.. _zephyr_3.7_posix_api_deprecations:

* POSIX API

  * Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` has been removed.
  * Deprecated :c:macro:`EFD_IN_USE` and :c:macro:`EFD_FLAGS_SET` have been removed.

  * In efforts to use Kconfig options that map directly to the Options and Option Groups in
    IEEE 1003.1-2017, the following Kconfig options have been deprecated (replaced by):

    * :kconfig:option:`CONFIG_EVENTFD_MAX` (:kconfig:option:`CONFIG_ZVFS_EVENTFD_MAX`)
    * :kconfig:option:`CONFIG_FNMATCH` (:kconfig:option:`CONFIG_POSIX_C_LIB_EXT`)
    * :kconfig:option:`CONFIG_GETOPT` (:kconfig:option:`CONFIG_POSIX_C_LIB_EXT`)
    * :kconfig:option:`CONFIG_MAX_PTHREAD_COUNT` (:kconfig:option:`CONFIG_POSIX_THREAD_THREADS_MAX`)
    * :kconfig:option:`CONFIG_MAX_PTHREAD_KEY_COUNT` (:kconfig:option:`CONFIG_POSIX_THREAD_KEYS_MAX`)
    * :kconfig:option:`CONFIG_MAX_TIMER_COUNT` (:kconfig:option:`CONFIG_POSIX_TIMER_MAX`)
    * :kconfig:option:`CONFIG_POSIX_LIMITS_RTSIG_MAX` (:kconfig:option:`CONFIG_POSIX_RTSIG_MAX`)
    * :kconfig:option:`CONFIG_POSIX_CLOCK` (:kconfig:option:`CONFIG_POSIX_CLOCK_SELECTION`,
      :kconfig:option:`CONFIG_POSIX_CPUTIME`, :kconfig:option:`CONFIG_POSIX_MONOTONIC_CLOCK`,
      :kconfig:option:`CONFIG_POSIX_TIMERS`, and :kconfig:option:`CONFIG_POSIX_TIMEOUTS`)
    * :kconfig:option:`CONFIG_POSIX_FS` (:kconfig:option:`CONFIG_POSIX_FILE_SYSTEM`)
    * :kconfig:option:`CONFIG_POSIX_MAX_FDS` (:kconfig:option:`CONFIG_POSIX_OPEN_MAX` and
      :kconfig:option:`CONFIG_ZVFS_OPEN_MAX`)
    * :kconfig:option:`CONFIG_POSIX_MAX_OPEN_FILES` (:kconfig:option:`CONFIG_POSIX_OPEN_MAX` and
      :kconfig:option:`CONFIG_ZVFS_OPEN_MAX`)
    * :kconfig:option:`CONFIG_POSIX_MQUEUE` (:kconfig:option:`CONFIG_POSIX_MESSAGE_PASSING`)
    * :kconfig:option:`CONFIG_POSIX_PUTMSG` (:kconfig:option:`CONFIG_XOPEN_STREAMS`)
    * :kconfig:option:`CONFIG_POSIX_SIGNAL` (:kconfig:option:`CONFIG_POSIX_SIGNALS`)
    * :kconfig:option:`CONFIG_POSIX_SYSCONF` (:kconfig:option:`CONFIG_POSIX_SINGLE_PROCESS`)
    * :kconfig:option:`CONFIG_POSIX_UNAME` (:kconfig:option:`CONFIG_POSIX_SINGLE_PROCESS`)
    * :kconfig:option:`CONFIG_PTHREAD` (:kconfig:option:`CONFIG_POSIX_THREADS`)
    * :kconfig:option:`CONFIG_PTHREAD_BARRIER` (:kconfig:option:`CONFIG_POSIX_BARRIERS`)
    * :kconfig:option:`CONFIG_PTHREAD_COND` (:kconfig:option:`CONFIG_POSIX_THREADS`)
    * :kconfig:option:`CONFIG_PTHREAD_IPC` (:kconfig:option:`CONFIG_POSIX_THREADS`)
    * :kconfig:option:`CONFIG_PTHREAD_KEY` (:kconfig:option:`CONFIG_POSIX_THREADS`)
    * :kconfig:option:`CONFIG_PTHREAD_MUTEX` (:kconfig:option:`CONFIG_POSIX_THREADS`)
    * :kconfig:option:`CONFIG_PTHREAD_RWLOCK` (:kconfig:option:`CONFIG_POSIX_READER_WRITER_LOCKS`)
    * :kconfig:option:`CONFIG_PTHREAD_SPINLOCK` (:kconfig:option:`CONFIG_POSIX_SPIN_LOCKS`)
    * :kconfig:option:`CONFIG_SEM_NAMELEN_MAX` (:kconfig:option:`CONFIG_POSIX_SEM_NAMELEN_MAX`)
    * :kconfig:option:`CONFIG_SEM_VALUE_MAX` (:kconfig:option:`CONFIG_POSIX_SEM_VALUE_MAX`)
    * :kconfig:option:`CONFIG_TIMER` (:kconfig:option:`CONFIG_POSIX_TIMERS`)
    * :kconfig:option:`CONFIG_TIMER_DELAYTIMER_MAX` (:kconfig:option:`CONFIG_POSIX_DELAYTIMER_MAX`)

    Please see the :ref:`POSIX API migration guide <zephyr_3.7_posix_api_migration>`.

 * SPI

  * Deprecated :c:func:`spi_is_ready` API function has been removed.
  * Deprecated :c:func:`spi_transceive_async` API function has been removed.
  * Deprecated :c:func:`spi_read_async` API function has been removed.
  * Deprecated :c:func:`spi_write_async` API function has been removed.

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

* ARC

  * Added ARC MWDT toolchain support for ARC-V targets
  * Added HW memory barrier API support for multicore targets
  * Enabled TLS by default if C++ is used in case of ARC MWDT toolchain
  * Fixed the issue when mbedtls failed to build with ARC MWDT toolchain & minimal LibC due to
    incorrect define which mark support of bounds-checking interfaces C library extension
  * Fixed device deferred initialization in case of ARC MWDT toolchain

* ARM

  * Added initial support for Cortex-M85 Core

* ARM64

  * Implemented symbol names in the backtraces, enable by selecting :kconfig:option:`CONFIG_SYMTAB`

  * Add compiler tuning for Cortex-R82

* RISC-V

  * The fatal error message triggered from a fault now contains the callee-saved-registers states.

  * Implemented stack unwinding

    * Frame-pointer can be selected to enable precise stack traces at the expense of slightly
      increased size and decreased speed.

    * Symbol names can be enabled by selecting :kconfig:option:`CONFIG_EXCEPTION_STACK_TRACE_SYMTAB`

* Xtensa

  * Added support to save/restore HiFi AudioEngine registers.

  * Added support to utilize MPU.

  * Added support to automatically generate interrupt handlers.

  * Added support to generate vector table at build time to be included in the linker script.

  * Added kconfig :kconfig:option:`CONFIG_XTENSA_BREAK_ON_UNRECOVERABLE_EXCEPTIONS` to guard
    using break instruction for unrecoverable exceptions. Enabling the break instruction via
    this kconfig may result in an infinite interrupt storm which may hinder debugging efforts.

  * Fixed an issue where passing the 7th argument via syscall was handled incorrectly.

  * Fixed an issue where :c:func:`arch_user_string_nlen` accessing unmapped memory resulted
    in an unrecoverable exception.

Kernel
******

  * Added :c:func:`k_uptime_seconds` function to simplify ``k_uptime_get() / 1000`` usage.

  * Added :c:func:`k_realloc`, that uses kernel heap to implement traditional :c:func:`realloc`
    semantics.

  * Devices can now store devicetree metadata such as nodelabels by turning on
    :kconfig:option:`CONFIG_DEVICE_DT_METADATA`. This option may be useful in
    e.g. shells as devices can be obtained using human-friendly names thanks to
    APIs like :c:func:`device_get_by_dt_nodelabel`.

  * Any device initialization can be deferred if its associated devicetree node
    has the special ``zephyr,deferred-init`` property set. The device can be
    initialized later in time by using :c:func:`device_init`.

  * The declaration of statically allocated thread stacks has been updated to utilize
    :c:macro:`K_THREAD_STACK_LEN` for both single thread stack declaration and array thread
    stack declarations. This ensures correct alignment for all thread stacks. For user
    threads, this may increase the size of the statically allocated stack objects depending
    on architecture alignment requirements.

  * Fix an edge case deadlock in :c:func:`k_thread_abort` (and join)
    where racing ISRs on SMP systems could become stuck spinning to
    signal each other's interrupted threads.

  * Fix a bug where :kconfig:option:`CONFIG_SCHED_SCALABLE` and
    :kconfig:option:`CONFIG_SCHED_DEADLINE` would corrupt the
    scheduling queue when used together.

Bluetooth
*********

* Audio

  * Removed ``err`` from :c:struct:`bt_bap_broadcast_assistant_cb.recv_state_removed` as it was
    redundant.

  * The broadcast_audio_assistant sample has been renamed to bap_broadcast_assistant.
    The broadcast_audio_sink sample has been renamed to bap_broadcast_sink.
    The broadcast_audio_source sample has been renamed to bap_broadcast_source.
    The unicast_audio_client sample has been renamed to bap_unicast_client.
    The unicast_audio_server sample has been renamed to bap_unicast_server.
    The public_broadcast_sink sample has been renamed to pbp_public_broadcast_sink.
    The public_broadcast_source sample has been renamed to pbp_public_broadcast_source.

  * The CAP Commander and CAP Initiator now no longer require CAS to be discovered for
    :code:`BT_CAP_SET_TYPE_AD_HOC` sets. This allows applications to use these APIs on e.g.
    BAP Unicast Servers that do not implement the CAP Acceptor role.

* Host

  * Added Nordic UART Service (NUS), enabled by the :kconfig:option:`CONFIG_BT_ZEPHYR_NUS`.
    This Service exposes the ability to declare multiple instances of the GATT service,
    allowing multiple serial endpoints to be used for different purposes.

  * Implemented Hands-free Audio Gateway (AG), enabled by the :kconfig:option:`CONFIG_BT_HFP_AG`.
    It works as a device that is the gateway of the audio. The typical device acting as Audio
    Gateway is a cellular phone. It controls the device (Hands-free Unit), that is the remote
    audio input and output mechanism.

  * Implemented Advanced Audio Distribution Profile (A2DP) and Audio/Video Distribution Transport
    Protocol (AVDTP), A2DP is enabled by :kconfig:option:`CONFIG_BT_A2DP`, AVDTP is enabled
    by :kconfig:option:`CONFIG_BT_AVDTP`. They implement the protocols and procedures that
    realize distribution of audio content of high quality in mono, stereo, or multi-channel modes.
    A typical use case is the streaming of music content from a stereo music player to headphones
    or speakers. The audio data is compressed in a proper format for efficient use of the limited
    bandwidth.

  * Reworked the transmission path for data and commands. The "BT TX" thread has been removed, along
    with the buffer pools for HCI fragments and L2CAP segments. All communication with the
    Controller is now exclusively done in the system workqueue context.

  * :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER` and
    :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER` now depend on
    :kconfig:option:`CONFIG_BT_CONN` as they do not work without connections.

  * Improve :c:func:`bt_foreach_bond` to support Bluetooth Classic key traversal.

* HCI Drivers

  * Completely redesigned HCI driver interface. See the Bluetooth HCI section in
    :ref:`migration_3.7` for more information.
  * Added support for Ambiq Apollo3 Blue series.
  * Added support for NXP RW61x.
  * Added support for Infineon CYW208XX.
  * Added support for Renesas SmartBond DA1469x.
  * Removed unmaintained B91 driver.
  * Added support for NXP IW612 on boards mimxrt1170_evkb and mimxrt1040_evk.
    It can be enabled by :kconfig:option:`CONFIG_BT_NXP_NW612`.

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

* Added support for these SoC series:

  * Added support for Ambiq Apollo3 Blue and Apollo3 Blue Plus SoC series.
  * Added support for Synopsys ARC-V RMX1xx simulation platform.
  * Added support for STM32H7R/S SoC series.
  * Added support for NXP mke15z7, mke17z7, mke17z9, MCXNx4x, RW61x
  * Added support for Analog Devices MAX32 SoC series.
  * Added support for Infineon Technologies AIROC™ CYW20829 Bluetooth LE SoC series.
  * Added support for MediaTek MT8195 Audio DSPs
  * Added support for Nuvoton Numaker M2L31X SoC series.
  * Added support for the Microchip PolarFire ICICLE Kit SMP variant.
  * Added support for Renesas RA8 series SoC.

* Made these changes in other SoC series:

  * Intel ACE Audio DSP: Use dedicated registers to report boot status instead of arbitrary memory.
  * ITE: Rename the Kconfig symbol for all ITE SoC variants.
  * STM32: Enabled ART Accelerator, I-cache, D-cache and prefetch on compatible series.
  * STM32H5: Added support for Stop mode and :kconfig:option:`CONFIG_PM`.
  * STM32WL: Decreased Sub-GHz SPI frequency from 12 to 8MHz.
  * STM32C0: Added support for :kconfig:option:`CONFIG_POWEROFF`.
  * STM32U5: Added support for Stop3 mode.
  * Synopsys:

    * nsim: split nsim platform for arc_classic (ARCv2 and ARCv3 ISA based) and arc_v (RISC-V ISA based)
    * nsim/nsim_hs5x/smp: align sys clock frequency with other SMP nSIM configs

  * NXP IMX8M: added resource domain controller support
  * NXP s32k146: set RTC clock source to internal oscillator
  * GD32F4XX: Fixed an incorrect uart4 irq number.
  * Nordic nRF54L: Added support for the FLPR (fast lightweight processor) RISC-V CPU.
  * Espressif: Removed idf-bootloader dependency from all ESP32 SoC variants.
  * Espressif: Added Simple boot support for ESP32 SoC variants, which allows loading application
    using a single binary image without a 2nd stage bootloader.
  * Espressif: Re-worked and optimized all SoCs memory map.
  * LiteX:

    * Added support for :c:func:`sys_arch_reboot()`.
    * :kconfig:option:`CONFIG_RISCV_ISA_EXT_A` is no longer erroneously y-selected.
  * rp2040: The proprietary UART driver has been discontinued and replaced with PL011.

  * Renesas RZ/T2M: Added default values for System Clock Control register.

* Added support for these boards:

  * Added support for :zephyr:board:`Ambiq Apollo3 Blue board <apollo3_evb>`: ``apollo3_evb``.
  * Added support for :zephyr:board:`Ambiq Apollo3 Blue Plus board <apollo3p_evb>`: ``apollo3p_evb``.
  * Added support for :zephyr:board:`Raspberry Pi 5 board <rpi_5>`: ``rpi_5``.
  * Added support for :zephyr:board:`Seeed Studio XIAO RP2040 board <xiao_rp2040>`: ``xiao_rp2040``.
  * Added support for :zephyr:board:`Mikroe RA4M1 Clicker board <mikroe_clicker_ra4m1>`: ``mikroe_clicker_ra4m1``.
  * Added support for :zephyr:board:`Arduino UNO R4 WiFi board <arduino_uno_r4>`: ``arduino_uno_r4_wifi``.
  * Added support for :zephyr:board:`Renesas EK-RA8M1 board <ek_ra8m1>`: ``ek_ra8m1``.
  * Added support for :zephyr:board:`ST Nucleo H533RE <nucleo_h533re>`: ``nucleo_h533re``.
  * Added support for :zephyr:board:`ST STM32C0116-DK Discovery Kit <stm32c0116_dk>`: ``stm32c0116_dk``.
  * Added support for :zephyr:board:`ST STM32H745I Discovery <stm32h745i_disco>`: ``stm32h745i_disco``.
  * Added support for :zephyr:board:`ST STM32H7S78-DK Discovery <stm32h7s78_dk>`: ``stm32h7s78_dk``.
  * Added support for :zephyr:board:`ST STM32L152CDISCOVERY board <stm32l1_disco>`: ``stm32l152c_disco``.
  * Added support for :zephyr:board:`ST STEVAL STWINBX1 Development kit <steval_stwinbx1>`: ``steval_stwinbx1``.
  * Added support for NXP boards: ``frdm_mcxn947``, ``ke17z512``, ``rd_rw612_bga``, ``frdm_rw612``, ``frdm_ke15z``, ``frdm_ke17z``
  * Added support for :zephyr:board:`Synopsys ARC-V RMX1xx nSIM-based simulation platform <nsim_arc_v>`: ``nsim_arc_v/rmx100``.
  * Added support for :zephyr:board:`Analog Devices MAX32690EVKIT <max32690evkit>`: ``max32690evkit``.
  * Added support for :zephyr:board:`Analog Devices MAX32680EVKIT <max32680evkit>`: ``max32680evkit``.
  * Added support for :zephyr:board:`Analog Devices MAX32672EVKIT <max32672evkit>`: ``max32672evkit``.
  * Added support for :zephyr:board:`Analog Devices MAX32672FTHR <max32672fthr>`: ``max32672fthr``.
  * Added support for :zephyr:board:`Analog Devices MAX32670EVKIT <max32670evkit>`: ``max32670evkit``.
  * Added support for :zephyr:board:`Analog Devices MAX32655EVKIT <max32655evkit>`: ``max32655evkit``.
  * Added support for :zephyr:board:`Analog Devices MAX32655FTHR <max32655fthr>`: ``max32655fthr``.
  * Added support for :zephyr:board:`Analog Devices AD-APARD32690-SL <apard32690>`: ``ad_apard32690_sl``.
  * Added support for :zephyr:board:`Infineon Technologies CYW920829M2EVK-02 <cyw920829m2evk_02>`: ``cyw920829m2evk_02``.
  * Added support for :zephyr:board:`Nuvoton Numaker M2L31KI board <numaker_m2l31ki>`: ``numaker_m2l31ki``.
  * Added support for :zephyr:board:`Espressif ESP32-S2 DevKit-C <esp32s2_devkitc>`: ``esp32s2_devkitc``.
  * Added support for :zephyr:board:`Espressif ESP32-S3 DevKit-C <esp32s3_devkitc>`: ``esp32s3_devkitc``.
  * Added support for :zephyr:board:`Espressif ESP32-C6 DevKit-C <esp32c6_devkitc>`: ``esp32c6_devkitc``.
  * Added support for :zephyr:board:`Waveshare ESP32-S3-Touch-LCD-1.28 <esp32s3_touch_lcd_1_28>`: ``esp32s3_touch_lcd_1_28``.
  * Added support for :zephyr:board:`M5Stack ATOM Lite <m5stack_atom_lite>`: ``m5stack_atom_lite``.
  * Added support for :zephyr:board:`CTHINGS.CO Connectivity Card nRF52840 <ctcc>`: ``ctcc``.

* Made these board changes:

  * On :zephyr:board:`ST STM32H7B3I Discovery Kit <stm32h7b3i_dk>`: ``stm32h7b3i_dk``,
    enabled full cache management, Chrom-ART, double frame buffer and full refresh for
    optimal LVGL performance.
  * On ST STM32 boards, stm32cubeprogrammer runner can now be used to program external
    flash using ``--extload`` option.
  * Add HEX file support for Linkserver to all NXP boards
  * Updated the Linkserver west runner to reflect changes to the CLI of LinkServer v1.5.xx
  * Add LinkServer support to NXP ``mimxrt1010_evk``, ``mimxrt1160_evk``, ``frdm_rw612``, ``rd_rw612_bga``, ``frdm_mcxn947``
  * Introduced the simulated :ref:`nrf54l15bsim<nrf54l15bsim>` target.
  * The nrf5x bsim targets now support BT LE Coded PHY.
  * LLVM fuzzing support has been refactored while adding support for it in native_sim.
  * nRF54H20 PDK (pre-release) converted to :zephyr:board:`nrf54h20dk`
  * PPR core target in :zephyr:board:`nrf54h20dk` runs from RAM by default. A
    new ``xip`` variant has been introduced which runs from MRAM (XIP).
  * Refactored :zephyr:board:`beagleconnect_freedom` external antenna switch handling.
  * Added Arduino dts node labels for the nRF5340 Audio DK.
  * Changed the default revision of the nRF54L15 PDK from 0.2.1 to 0.3.0.
  * In boards based on the nRF5340 SoC, replaced direct accesses to the register
    that controls the network core Force-OFF signal with a module that uses an
    on-off manager to keep track of the network core use and exposes its API
    in ``<nrf53_cpunet_mgmt.h>``.
  * Laird Connectivity boards are rebranded to Ezurio.

* Added support for the following shields:

  * :ref:`adafruit_2_8_tft_touch_v2` (``adafruit_2_8_tft_touch_v2``)
  * :ref:`adafruit_neopixel_grid_bff` (``adafruit_neopixel_grid_bff``)
  * :ref:`arduino_uno_click` (``arduino_uno_click``)
  * :ref:`dvp_fpc24_mt9m114` (``dvp_fpc24_mt9m114``)
  * :ref:`lcd_par_s035` (``lcd_par_s035``)
  * :ref:`mikroe_weather_click` (``mikroe_weather_click``)
  * :ref:`nxp_btb44_ov5640` (``nxp_btb44_ov5640``)
  * :ref:`reyax_lora` (``reyax_lora``)
  * :ref:`rk043fn02h_ct` (``rk043fn02h_ct``)
  * :ref:`rk043fn66hs_ctg` (``rk043fn66hs_ctg``)
  * :ref:`rpi_pico_uno_flexypin` (``rpi_pico_uno_flexypin``)
  * :ref:`seeed_xiao_expansion_board` (``seeed_xiao_expansion_board``)
  * :ref:`seeed_xiao_round_display` (``seeed_xiao_round_display``)
  * :ref:`sparkfun_carrier_asset_tracker` (``sparkfun_carrier_asset_tracker``)
  * :ref:`st_b_lcd40_dsi1_mb1166` (``st_b_lcd40_dsi1_mb1166``)
  * :ref:`waveshare_epaper` (``waveshare_epaper``)
  * :ref:`x_nucleo_bnrg2a1` (``x_nucleo_bnrg2a1``)

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

  * CI-enabled blackbox tests were added to verify the correctness of most Twister flags.

  * A ``socs`` folder for applications has been introduced that allows for Kconfig fragments and
    devicetree overlays that should apply to any board target using a particular SoC and board
    qualifier (:github:`70418`). Support has also been added to sysbuild (:github:`71320`).

  * :ref:`Board/SoC flashing configuration<flashing-soc-board-config>` settings have been added
    (:github:`69748`).

  * Deprecated the global CSTD cmake property in favor of the :kconfig:option:`CONFIG_STD_C`
    choice to select the C Standard version. Additionally, subsystems can select a minimum
    required C Standard version, with, for example, :kconfig:option:`CONFIG_REQUIRES_STD_C11`.

  * Fixed issue with passing UTF-8 configs to applications using sysbuild (:github:`74152`).

  * Fixed issue whereby domain file in sysbuild projects would be loaded and used with outdated
    information if sysbuild configuration was changed, and ``west flash`` was ran directly after
    (:github:`73864`).

  * Fixed issue with Zephyr modules not being listed in sysbuild if they did not have a Kconfig
    file set (:github:`72070`).

  * Added sysbuild ``SB_CONFIG_COMPILER_WARNINGS_AS_ERRORS`` Kconfig option to turn on
    "warning as error" toolchain flags for all images, if set (:github:`70217`).

  * Fixed issue whereby files used in a project (e.g. devicetree overlays or Kconfig fragments)
    were not correctly watched and CMake would not reconfigure if they were changed
    (:github:`74655`).

  * Added flash support for Intel Hex files for the LinkServer runner.

  * Added sysbuild ``sysbuild/CMakeLists.txt`` entry point and added support for
    ``APPLICATION_CONFIG_DIR`` which allows for adjusting how sysbuild functions (:github:`72923`).

  * Fixed issue with armfvp find path if it contained a colon-separated list (:github:`74868`).

  * Fixed issue with version.cmake field sizes not being enforced (:github:`74357`).

  * Fixed issue with sysbuild not clearing ``EXTRA_CONF_FILE`` before processing images which
    prevented this option being passed on to the image (:github:`74082`).

  * Added sysbuild root support which works similarly to the existing root module, adjusting paths
    relative to ``APP_DIR`` (:github:`73390`).

  * Added warning/error message for blobs that are missing (:github:`73051`).

  * Fixed issue with correct python executable detection on some systems (:github:`72232`).

  * Added support for enabling LTO for whole application (:github:`69519`).

  * Fixed ``FILE_SUFFIX`` issues relating to double application of suffixes, non-application in
    sysbuild and variable name clashes in CMake functions (:github:`70124`, :github:`71280`).

  * Added support for new aggressive size optimisation flag (for GCC and Clang) using
    :kconfig:option:`CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE` (:github:`70511`).

  * Fixed issue with printing out ``BUILD_VERSION`` if it was empty (:github:`70970`).

  * Fixed sysbuild issue of ``sysbuild_cache_set()`` cmake function wrongly detecting partial
    matches for de-duplication (:github:`71381`).

  * Fixed issue with detecting wrong ``VERSION`` file (:github:`71385`).

  * Added support for disabling output disassembly having the source code in using
    :kconfig:option:`CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE` (:github:`71535`).

  * Twister now supports ``--flash-before`` parameter that allows flashing DUT before
    opening serial port (:github:`47037`).

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

* ADC

  * Added ``ADC_DT_SPEC_*BY_NAME()`` macros to get ADC IO-channel information from DT by name.
  * Added support for voltage biasing:

    * Added a :kconfig:option:`CONFIG_ADC_CONFIGURABLE_VBIAS_PIN` selected by drivers that support
      voltage biasing.
    * Added a ``zephyr,vbias-pins`` property to the adc-controller base binding to describe voltage
      bias pins.
    * Implemented for the TI ADC114s08 ADC driver.
  * Sample changes

    * Renamed existing ADC sample to adc_dt.
    * Added a new sample called adc_sequence that shows more of the runtime
      :c:struct:`adc_sequence` features.
  * New ADC Drivers

    * Added driver for the ENE KB1200.
    * Added driver for the NXP GAU ADC.
  * ADI AD559x changes

    * Added support for ADI's ad5593.
    * Added I2C bus support for ADI ad559x.
    * Added configuration of internal reference voltage value to ad559x to support
      calls of :c:func:`adc_raw_to_millivolts()`.
    * Fixed issue with driver initialization causing improper operation in the ad559x driver
      regarding the availability of :kconfig:option:`CONFIG_THREAD_NAME`.
    * Improved the ADC read efficiency and validation in ad559x driver.
  * ESP32 changes

    * Updated ESP32 ADC driver to work with version 5.1 of hal_espressif.
    * Added support for DMA mode operation for ESP32S3 and ESP32C3.
  * nRF changes

    * Added support for nRF54L15 and nRF54H20 in the nrfx_saadc driver.
    * Improved the nRF SAADC driver by disabling burst mode on unused channels, avoiding freezes.
    * Fixed issue which allowed negative ADC readings in single-ended mode using the
      ``adc_nrfx_saadc.c`` device driver.
      Note that this fix prevents the nRF54H and nRF54L series from performing
      8-bit resolution single-ended readings due to hardware limitations.
  * NXP LPADC changes

    * Enabled acquisition time feature in the NXP LPADC driver.
    * Added support for regulator output as reference to NXP LPADC.
    * Changed phandle type DT property ``nxp,reference-supply`` to phandle-array type DT property
      ``nxp,references`` in ``nxp,lpc-lpadc`` binding. The NXP LPADC driver now supports passing
      the reference voltage value by using ``nxp,references``.
  * Smartbond changes

    * Added support for power management to the Smartbond SDADC and GPADC drivers.
    * Fixed support for :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME` in the Smartbond ADC driver.
  * STM32 changes

    * Fixed various issues with DMA support in the STM32 ADC driver.
    * Added support for STM32H7R/S series.
  * Other driver changes

    * Added support for Nuvoton m2l31x in the numaker ADC driver.
    * Fixed issue with configuration register access in the ads1119 driver.
    * Fixed uninitialized value in kb1200 driver found in static analysis.
    * Fixed issue with :c:func:`adc_raw_to_millivolts` returning half the actual voltage with
      the tla2021 driver by correcting the reference voltage value.


  * Added support for Nuvoton Numaker M2L31X series.

* Battery

  * Added ``re-charge-voltage-microvolt`` property to the ``battery`` binding. This allows to set
    limit to automatically start charging again.

* Battery backed up RAM

  * Added support for STM32G0 and STM32H5 series.

* CAN

  * Extended support for automatic sample point location to also cover :c:func:`can_calc_timing` and
    :c:func:`can_calc_timing_data`.
  * Added optional ``min-bitrate`` devicetree property for CAN transceivers.
  * Added devicetree macros :c:macro:`DT_CAN_TRANSCEIVER_MIN_BITRATE` and
    :c:macro:`DT_INST_CAN_TRANSCEIVER_MIN_BITRATE` for getting the minimum supported bitrate of a CAN
    transceiver.
  * Added support for specifying the minimum bitrate supported by a CAN controller in the internal
    ``CAN_DT_DRIVER_CONFIG_GET`` and ``CAN_DT_DRIVER_CONFIG_INST_GET`` macros.
  * Added :c:func:`can_get_bitrate_min` and :c:func:`can_get_bitrate_max` for retrieving the minimum
    and maximum supported bitrate for a given CAN controller/CAN transceiver combination, reflecting
    that retrieving the bitrate limits can no longer fail. Deprecated the existing
    :c:func:`can_get_max_bitrate` API function.
  * Updated the CAN timing functions to take the minimum supported bitrate into consideration when
    validating the bitrate.
  * Made the ``sample-point`` and ``sample-point-data`` devicetree properties optional.
  * Renamed the ``bus_speed`` and ``bus_speed_data`` fields of :c:struct:`can_driver_config` to
    ``bitrate`` and ``bitrate_data``.
  * Added driver for :dtcompatible:`nordic,nrf-can`.
  * Added driver support for Numaker M2L31X to the :dtcompatible:`nuvoton,numaker-canfd` driver.
  * Added host communication test suite.

* Charger

  * Added ``chgin-to-sys-current-limit-microamp`` property to ``maxim,max20335-charger``.
  * Added ``system-voltage-min-threshold-microvolt`` property to ``maxim,max20335-charger``.
  * Added ``re-charge-threshold-microvolt`` property to ``maxim,max20335-charger``.
  * Added ``thermistor-monitoring-mode`` property to ``maxim,max20335-charger``.

* Clock control

  * Added support for Microcontroller Clock Output (MCO) on STM32H5 series.
  * Added support for MSI clock on STM32WL series.
  * Added driver for Analog Devices MAX32 SoC series.
  * Added support for Nuvoton Numaker M2L31X series.
  * Refactored ESP32 clock control driver to support ESP32-C6.
  * In LiteX (:file:`drivers/clock_control/clock_control_litex.c`) added return code checking for
    :c:func:`litex_clk_get_duty_cycle()` and :c:func:`litex_clk_get_clkout_divider`.

* Counter

  * Added support for Ambiq Apollo3 series.
  * Added support for STM32H7R/S series.
  * Added driver for LPTMR to NXP MCXN947
  * Added the ``resolution`` property in ``nxp,lptmr`` binding to represent the maximum width
    in bits the LPTMR peripheral uses for its counter.

* DAC

  * Added support for NXP RW SOC series DAC (:dtcompatible:`nxp,gau-dac`).
  * Added support for Analog Devices AD5691 / AD5692 / AD5693 DACs
    (:dtcompatible:`adi,ad5691`, :dtcompatible:`adi,ad5692` and :dtcompatible:`adi,ad5693`).
  * Added support for Texas Instruments DACx0501 series DACs (:dtcompatible:`ti,dacx0501`).

* Disk

  * Support for eMMC devices was added to the STM32 SD driver. This can
    be enabled with :kconfig:option:`CONFIG_SDMMC_STM32_EMMC`.
  * Added a loopback disk driver, to expose a disk device backed by a file.
    A file can be registered with the loopback disk driver using
    :c:func:`loopback_disk_access_register`
  * Added support for :c:macro:`DISK_IOCTL_CTRL_INIT` and
    :c:macro:`DISK_IOCTL_CTRL_DEINIT` macros, which allow for initializing
    and de-initializing a disk at runtime. This allows hotpluggable
    disk devices (like SD cards) to be removed and reinserted at runtime.
  * Added SDMMC support for STM32H5 series.

* Display

  * All in tree displays capable of supporting the :ref:`mipi_dbi_api` have
    been converted to use it. GC9X01X, UC81XX, SSD16XX, ST7789V, ST7735R based
    displays have been converted to this API. Boards using these displays will
    need their devicetree updated, see the display section of
    :ref:`migration_3.7` for examples of this process.
  * Added driver for ST7796S display controller (:dtcompatible:`sitronix,st7796s`)
  * Added support for :c:func:`display_read` API to ILI9XXX display driver,
    which can be enabled with :kconfig:option:`CONFIG_ILI9XXX_READ`
  * Added support for :c:func:`display_set_orientation` API to SSD16XXX
    display driver
  * Added driver for NT35510 MIPI-DSI display controller
    (:dtcompatible:`frida,nt35510`)
  * Added driver to abstract LED strip devices as displays
    (:dtcompatible:`led-strip-matrix`)
  * Added support for :c:func:`display_set_pixel_format` API to NXP eLCDIF
    driver. ARGB8888, RGB888, and BGR565 formats are supported.
  * Added support for inverting color at runtime to the SSD1306 driver, via
    the :c:func:`display_set_pixel_format` API.
  * Inversion mode can now be disabled in the ST7789V driver
    (:dtcompatible:`sitronix,st7789v`) using the ``inversion-off`` property.
  * Added support for NXP MCXNx4x

* DMA

  * Error callback configuration renamed to better signal enable/disable status
  * Add support to NXP MCXN947

* DMIC

  * Added support for NXP ``rd_rw612_bga``

* Entropy

  * Added support for STM32H7R/S series.

* EEPROM

  * Added property for specifying ``address-width`` to :dtcompatible:`zephyr,i2c-target-eeprom`.

* eSPI

  * Renamed eSPI virtual wire direction macros, enum values and Kconfig to match the new
    terminology in eSPI 1.5 specification.

* Ethernet

  * Introduced :kconfig:option:`CONFIG_ETH_DRIVER_RAW_MODE`. This option allows building
    ethernet drivers without the zephyr L2 ethernet layer.
  * Removed the ethernet-fixed-link DT binding.
  * Removed VLAN handling from ethernet drivers since it is now handled by the
    generic ethernet L2 code.
  * Implemented/reworked HW MAC Address filtering in the eth_mcux, eth_nxp_enet,
    and eth_nxp_s32_gmac, eth_stm32, and eth_nxp_s32_netc drivers.
  * New Drivers

    * Added new eth_nxp_enet_qos driver for the ethernet controller present on NXP MCXN SOCs.
    * Added support for adin1100 phy.
    * Added support for the Realtek RTL8211F phy.
  * NXP ENET driver changes

    * eth_nxp_enet driver is no longer experimental.
    * Deprecated eth_mcux driver.
    * All boards and SOCs with :dtcompatible:`nxp,kinetis-ethernet` compatible nodes
      reworked to use the new :dtcompatible:`nxp,enet` binding.
    * Added support for network device power management with nxp_enet driver on Kinetis platforms.
    * Converted eth_nxp_enet driver to use a dedicated workqueue for RX
      managed by the kernel rather than a manual infinite loop.
    * Disabled hardware checksum acceleration when IPV6 is enabled with eth_nxp_enet, since
      the hardware does not support accelerating ICMPv6 checksums.
    * Added support for :dtcompatible:`nxp,enet1g`.
    * Added support to use a fused MAC address for nxp_enet MAC on some platforms.
    * Fixed issue with LAA bit not being set and a confusing description of the nxp,unique-mac
      property used with the nxp_enet driver.
    * Fixed cache maintain being enabled when using a noncache DMA buffer in nxp_enet driver.
    * Added MMIO mappings to nxp_enet driver.
    * Clarified DSA supported with eth_nxp_enet.
  * NXP S32 ethernet changes

    * The eth_nxp_s32_gmac driver now implies :kconfig:option:`CONFIG_MDIO`.
    * eth_nxp_s32_netc driver updated to use new MBOX API.
  * Adin2111 driver changes

    * Corrected the bitfield position of IAMSK1 TX_READY_MASK in adin2111 driver.
    * Changed adin2111 driver to always append crc32 to the end of the frame.
    * Adjusted eth_adin2111 driver to have the appropriate multicaster filter mask.
    * Fixed the "generic SPI without crc8" mode of adin2111 driver.
    * Added Open Alliance SPI protocol support to the adin2111 driver.
    * Added custom driver extension APIs for adin2111 driver.
    * Enabled support for promiscuous mode in the adin2111 driver.
    * Moved OA buffers out of device data of the adin2111 driver to save ~32KB of space
      when using the generic SPI protocol.
    * Fixed a build warning in eth_adin2111 driver on 64-bit platforms.
    * Various small changes to adin2111 driver.
  * STM32 ethernet driver changes

    * Added support for PTP on compatible STM32 series (STM32F7, STM32H5 and STM32H7).
    * Changed eth_stm32 to use phy APIs to access the phy to avoid collisions when multitasking.
    * Removed legacy STM32Cube HAL API support for STM32 F4, F7, and H7 series.
    * Added support for RX/TX timestamping to eth_stm32_hal driver.
  * ESP32 ethernet driver changes

    * Added support to esp32 ethernet driver to set the MAC address during runtime.
    * Updated esp32 ethernet driver to work with version 5.1 of hal_espressif.
    * Fixed build of esp32 ethernet driver when :kconfig:option:`CONFIG_NET_STATISTICS` is enabled.
    * Fixed ESP32 ethernet driver not clocking external PHY correctly over GPIO.
  * Other ethernet driver changes

    * Added link status detection to the w5500 ethernet driver, configurable via Kconfig.
    * Added ability to set MAC address at runtime with eth_liteeth driver.
    * Fixed issue in the eth_stellaris driver where it was previously not taken into account
      that the number of interrupts received by the driver may be less than the number of
      data packets received by the ethernet controller.
    * Added a devicetree property for the enc28j60 to set the RX filter.
    * Fixed ESTAT TXABRT bit not being cleared on error in the enc28j60 driver.
    * Added conditions to enable ptp_clock driver implementation for the native_posix
      ethernet driver when PTP subsystem is enabled.
    * Fixed DSA driver for KSZ8xxx to correctly initialize LAN devices.
    * Fixed the wrong register address being used for tail tag enable in ksz8863.
  * Phy driver changes

    * Fixed various control issues with the KSZ8081 phy driver regarding
      resets, autonegotiation, link detection, and missing/spamming logging messages.
    * Changed property names of the reset and interrupt gpios in the KSZ8081 DT binding.
    * Fixed bus fault in phy_mii driver when using fixed-link mode.

* Flash

  * Added support for Ambiq Apollo3 series.
  * Added support for multiple instances of the SPI NOR driver (spi_nor.c).
  * Added preliminary support for non-erase devices with introduction of
    device capabilities to :c:struct:`flash_parameters` and the utility function
    :c:func:`flash_params_get_erase_cap` that allows to obtain the erase type
    provided by a device; added :c:macro:`FLASH_ERASE_C_EXPLICIT`, which is
    currently the only supported erase type and is set by all flash devices.
  * Added the :c:func:`flash_flatten` function that can be used on devices,
    with or without erase requirement, when erase has been used not for preparing
    a device for a random data write, but rather to remove/scramble data from
    that device.
  * Added the :c:func:`flash_fill` utility function which allows to write
    a single value across a provided range in a selected device.
  * Added support for RRAM on nrf54l15 devices.
  * Added support of non busy wait polling in STM32 OSPI driver.
  * Added support for STM32 XSPI external NOR flash driver (:dtcompatible:`st,stm32-xspi-nor`).
  * Added support for XIP on external NOR flash in STM32 OSPI, QSPI and XSPI driver.
  * STM32 OSPI driver: clk, dqs, ncs ports can now be configured by device tree
    configurable (see :dtcompatible:`st,stm32-ospi`).
  * Added FlexSPI support to NXP MCXN947
  * Added support for Nuvoton Numaker M2L31X series.

* Fuel Gauge

  * max17048: Corrected voltage units from mV to uV.

* GNSS

  * Added GNSS device driver API test suite.
  * Added support for the u-blox UBX protocol.
  * Added device driver for the u-blox M8 GNSS modem (:dtcompatible:`u-blox,m8`).
  * Added device driver for the Luatos Air530z GNSS modem (:dtcompatible:`luatos,air530z`).

* GPIO

  * Added support for Ambiq Apollo3 series.
  * Added Broadcom Set-top box(brcmstb) SoC GPIO driver.
  * Added :c:macro:`STM32_GPIO_WKUP` flag which allows to configure specific pins as wakeup source
    from Power Off state on STM32 L4, U5, WB, & WL SoC series.
  * Added driver for Analog Devices MAX32 SoC series.
  * Added support for Nuvoton Numaker M2L31X series.
  * Added interrupt support to the Renesas RZ/T2M GPIO driver (:dtcompatible:`renesas,rzt2m-gpio`).

* Hardware info

  * Added device EUI64 ID support and implementation for STM32WB, STM32WBA and STM32WL series.

* I2C

  * Added support for Ambiq Apollo3 series.
  * In STM32 V2 driver, added support for a new :kconfig:option:`CONFIG_I2C_STM32_V2_TIMING`
    which automatically computes bus timings which should be used to configure the hardware
    block depending on the clock configuration in use. To avoid embedding this heavy algorithm
    in a production application, a dedicated sample :zephyr:code-sample:`stm32_i2c_v2_timings` is provided
    to get the output of the algorithm. Once bus timings configuration is available,
    :kconfig:option:`CONFIG_I2C_STM32_V2_TIMING` could be disabled, bus timings configured
    using device tree.
  * Added support for STM32H5 series.
  * Added support to NXP MCXN947
  * Added driver for Analog Devices MAX32 SoC series.
  * Added support for Nuvoton Numaker M2L31X series.
  * LiteX I2C driver (:file:`drivers/i2c/i2c_litex.c`):

    * Added support for bitrate setting from the devicetree.
    * Added :c:func:`i2c_litex_recover_bus()` and :c:func:`i2c_litex_get_config()` API
      implementations.

* I2S

  * Added support for STM32H5 series.
  * Extended the MCUX Flexcomm driver to support additional channels and formats.
  * Added support for Nordic nRF54L Series.
  * Fixed divider calculations in the nRF I2S driver.

* I3C

  * Added shell support for querying bus and CCC commands.

  * Added driver to support the I3C controller on NPCX.

  * Improvements and bug fixes on :dtcompatible:`nxp,mcux-i3c`, including handling the bus
    being busy more gracefully instead of simply returning errors.

* Input

  * New drivers: :dtcompatible:`adc-keys`, :dtcompatible:`chipsemi,chsc6x`,
    :dtcompatible:`cirque,pinnacle`, :dtcompatible:`futaba,sbus`,
    :dtcompatible:`pixart,pat912x`, :dtcompatible:`pixart,paw32xx`,
    :dtcompatible:`pixart,pmw3610` and :dtcompatible:`sitronix,cf1133`.
  * Migrated :dtcompatible:`holtek,ht16k33` and
    :dtcompatible:`microchip,xec-kbd` from kscan to input subsystem.

* LED

  * Added device completion to LED shell commands and made the ``get_info`` command display
    colors as strings.

  * Added driver for Lumissil Microsystems (a division of ISSI) IS31FL3194 controller
    (:dtcompatible:`issi,is31fl3194`).

* LED Strip

  * The ``chain-length`` and ``color-mapping`` properties have been added to all LED strip
    bindings.

  * The length of a strip is now checked before updating it, an error is returned if the provided
    data is too long.

  * A length function has been added which returns the length of the LED strip
    (:c:func:`led_strip_length`).

  * The update channels function is now optional and can be left unimplemented.

  * The ``in-gpios`` and ``output-pin`` properties of the respective
    :dtcompatible:`worldsemi,ws2812-gpio` and :dtcompatible:`worldsemi,ws2812-rpi_pico-pio`
    devicetree bindings have been renamed to ``gpios``.

  * Removed ``CONFIG_WS2812_STRIP`` and ``CONFIG_WS2812_STRIP_DRIVER`` Kconfig options. They became
    useless after refactoring.

  * Added driver for Texas Instruments TLC59731 RGB controller.

* LoRa

  * Added driver for Reyax LoRa module

* Mailbox

  * Added support for HSEM based STM32 driver.

* MDIO

  * Made the ``bus_enable`` and ``bus_disable`` functions optional for drivers to
    implement, and removed empty implementation from many drivers.
  * Added NXP ENET QOS MDIO controller driver.
  * Fixed but with NXP ENET MDIO driver blocking the system workqueue.
  * :kconfig:option:`CONFIG_MDIO_NXP_ENET_TIMEOUT` units change to microseconds.
  * Added support for STM32 MDIO controller driver.

* MFD

  * New driver :dtcompatible:`nxp,lp-flexcomm`.
  * New driver :dtcompatible:`rohm,bd8lb600fs`.
  * New driver :dtcompatible:`maxim,max31790`.
  * New driver :dtcompatible:`infineon,tle9104`
  * New driver :dtcompatible:`adi,ad559x`
  * Added option to disable N_VBUSEN for :dtcompatible:`x-powers,axp192`.
  * Added GPIO input edge events for :dtcompatible:`nordic,npm1300`.
  * Added long press reset configuration for :dtcompatible:`nordic,npm1300`.
  * Fixed initialisation of hysteretic mode for :dtcompatible:`nordic,npm6001`.

* Modem

  * Removed deprecated ``GSM_PPP`` driver along with its dts compatible ``zephyr,gsm-ppp``.

  * Removed deprecated ``UART_MUX`` and ``GSM_MUX`` previously used by ``GSM_PPP``.

  * Removed support for dts compatible ``zephyr,gsm-ppp`` from ``MODEM_CELLULAR`` driver.

  * Removed integration with ``UART_MUX`` from ``MODEM_IFACE_UART_INTERRUPT`` module.

  * Removed integration with ``UART_MUX`` from ``MODEM_SHELL`` module.

  * Implemented modem pipelinks in ``MODEM_CELLULAR`` driver for additional DLCI channels
    available by the different modems. This includes generic AT mode DLCI channels, named
    ``user_pipe_<index>`` and DLCI channels reserved for GNSS tunneling named
    ``gnss_pipe``.

  * Added new set of shell commands for sending AT commands directly to a modem using the
    newly implemented modem pipelinks. The implementation of the new shell commands is
    both functional and together with the ``MODEM_CELLULAR`` driver will provide an
    example of how to implement and use the modem pipelink module.

* PCIE

  * ``pcie_bdf_lookup`` and ``pcie_probe`` have been removed since they have been
    deprecated since v3.3.0.

* MIPI-DBI

  * Added release API
  * Added support for mode selection via the device tree

* MSPI

  * Add the new experimental :ref:`MSPI(Multi-bit SPI) <mspi_api>` API, enabling support for
    advanced SPI controllers and peripherals that typically require command, address and data
    phases as well as variable latency for a transfer. The API now supports from single wire
    SDR up to hex wires DDR communication in sync/async ways.
  * Added MSPI bus emulator under bus emulators to showcase the implementation of the MSPI API.
  * Added MSPI flash device emulator to showcase the use of the MSPI API and interfacing with
    MSPI bus controllers.
  * Added APS6404L QPI pSRAM device driver.
  * Added ATXP032 OPI NOR flash device driver.
  * Added Ambiq Apollo3p MSPI controller driver.
  * Added :zephyr:code-sample:`mspi-async` and :zephyr:code-sample:`mspi-flash` samples to
    showcase the use of MSPI device drivers.
  * Added mspi/api and mspi/flash testcase for developers to check their implementations.

* Pin control

  * Added driver for Renesas RA8 series
  * Added driver for Infineon PSoC6 (legacy)
  * Added driver for Analog Devices MAX32 SoC series.
  * Added driver for Ambiq Apollo3
  * Added driver for ENE KB1200
  * Added driver for NXP RW
  * Espressif driver now supports ESP32C6
  * STM32 driver now supports remap functionality for STM32C0
  * Added support for Nuvoton Numaker M2L31X series.

* PWM

  * Added support for STM32H7R/S series.
  * Added a Add QTMR PWM driver for NXP imxrt11xx
  * Made the NXP MCUX PWM driver thread safe
  * Fix :zephyr:code-sample:`pwm-blinky` code sample to demonstrate PWM support for
    :zephyr:board:`beagleconnect_freedom`.
  * Added driver for ENE KB1200.
  * Added support for Nordic nRF54H and nRF54L Series SoCs.
  * Added support for Nuvoton Numaker M2L31X series.

* Regulators

  * New driver :dtcompatible:`cirrus,cp9314`.
  * Added ``regulator-boot-off`` property to common regulator driver.
    Updated :dtcompatible:`adi,adp5360-regulator`, :dtcompatible:`nordic,npm1300-regulator`,
    :dtcompatible:`nordic,npm6001-regulator` and :dtcompatible:`x-powers,axp192-regulator`
    to use this new property.
  * Added power management for :dtcompatible:`renesas,smartbond-regulator`.
  * Added ``is_enabled`` shell command.
  * Removed use of busy wait for single threaded systems.
  * Fixed control of DCDC2 output for :dtcompatible:`x-powers,axp192-regulator`.
  * Fixed current and voltage get functions for :dtcompatible:`renesas,smartbond-regulator`.
  * Fixed NXP VREF Kconfig leakage.
  * Fixed display of micro values in shell.
  * Fixed strcmp usage bug in ``adset`` shell command.

* Reset

  * Added driver for reset controller on Nuvoton NPCX chips.
  * Added reset controller driver for NXP SYSCON.
  * Added reset controller driver for NXP RSTCTL.
  * Added support for Nuvoton Numaker M2L31X series.

* RTC

  * Added Raspberry Pi Pico RTC driver.
  * Added support for :kconfig:option:`CONFIG_RTC_ALARM` on all STM32 MCU series (except STM32F1).
  * Added support for Nuvoton Numaker M2L31X series.

* RTIO

  * Move lock-free queues out of RTIO into lib, dropping the ``rtio_`` prefix to SPSC and MPSC queues.
  * Added tests and fixed bugs related to chained callback requests.
  * Wrapper around p4wq (rtio workq) created to go from blocking to non-blocking behavior in cases
    where native asynchronous RTIO functionality is unavailable.

* SDHC

  * Added ESP32 SDHC driver (:dtcompatible:`espressif,esp32-sdhc`).
  * Added SDHC driver for Renesas MMC controller (:dtcompatible:`renesas,rcar-mmc`).

* Sensors

  * General

    * Added a channel specifier to the new read/decoder API.
    * Added a blocking sensor read call :c:func:`sensor_read`.
    * Decoupled RTIO requests using RTIO workqueues service to turn
      :c:func:`sensor_submit_callback` into an asynchronous request.
    * Moved most drivers to vendor subdirectories.

  * AMS

    * Added TSL2591 light sensor driver (:dtcompatible:`ams,tsl2591`).

  * Aosong

    * Added DHT20 digital-output humidity and temperature sensor driver
      (:dtcompatible:`aosong,dht20`).

    * Added :kconfig:option:`CONFIG_DHT_LOCK_IRQS` for the dht11 driver which allows for locking
      interrupts during sensor reading to prevent issues with reading the sensor.

  * Bosch

    * Updated BME280 to the new async API.

  * Infineon

    * Added TLE9104 power train switch diagnostics sensor driver
      (:dtcompatible:`infineon,tle9104-diagnostics`).

  * Maxim

    * Added DS18S20 1-Wire temperature sensor driver (:dtcompatible:`maxim,ds18s20`).
    * Added MAX31790 fan speed and fan fault sensor
      (:dtcompatible:`maxim,max31790-fan-fault` and :dtcompatible:`maxim,max31790-fan-speed`).

  * NXP

    * Added low power comparator driver (:dtcompatible:`nxp,lpcmp`).

  * Rohm

    * Added BD8LB600FS diagnostics sensor driver (:dtcompatible:`rohm,bd8lb600fs-diagnostics`).

  * Silabs

    * Made various fixes and enhancements to the SI7006 humidity/temperature sensor driver.

  * ST

    * QDEC driver now supports encoder mode configuration (see :dtcompatible:`st,stm32-qdec`).
    * Added support for STM32 Digital Temperature Sensor (:dtcompatible:`st,stm32-digi-temp`).
    * Added IIS328DQ I2C/SPI accelerometer sensor driver (:dtcompatible:`st,iis328dq`).

  * TDK

    * Added support for the MPU6500 3-axis accelerometer and 3-axis gyroscope sensor to the
      MPU6050 driver.

  * TI

    * Added TMP114 driver (:dtcompatible:`ti,tmp114`).
    * Added INA226 bidirectional current and power monitor driver (:dtcompatible:`ti,ina226`).
    * Added LM95234 quad remote diode and local temperature sensor driver
      (:dtcompatible:`national,lm95234`).

  * Other vendors

    * Added Angst+Pfister FCX-MLDX5 O2 sensor driver (:dtcompatible:`ap,fcx-mldx5`).
    * Added ENE KB1200 tachometer sensor driver (:dtcompatible:`ene,kb1200-tach`).
    * Added Festo VEAA-X-3 series proportional pressure regulator driver
      (:dtcompatible:`festo,veaa-x-3`).
    * Added Innovative Sensor Technology TSic xx6 temperature sensor driver
      (:dtcompatible:`ist,tsic-xx6`).
    * Added ON Semiconductor NCT75 temperature sensor driver (:dtcompatible:`onnn,nct75`).
    * Added ScioSense ENS160 digital metal oxide multi-gas sensor driver
      (:dtcompatible:`sciosense,ens160`).
    * Made various fixes and enhancements to the GROW_R502A fingerprint sensor driver.

* Serial

  * Added driver to support UART over Bluetooth LE using NUS (Nordic UART Service). This driver
    enables using Bluetooth as a transport to all the subsystems that are currently supported by
    UART (e.g: Console, Shell, Logging).
  * Added :kconfig:option:`CONFIG_NOCACHE_MEMORY` support in async DMA mode in STM32 driver.
    It is now possible to use UART in DMA mode with :kconfig:option:`CONFIG_DCACHE` enabled
    on STM32 F7 & H7 SoC series, as long as DMA buffers are placed in an uncached memory section.
  * Added support for STM32H7R/S series.

  * Added support for HSCIF (High Speed Serial Communication Interface with FIFO) in the UART
    driver for Renesas RCar platforms.

  * Added driver for ENE KB1200 UART.

  * Added driver for UART on Analog Devices MAX32 series microcontrollers.

  * Added driver for UART on Renesas RA8 devices.

  * ``uart_emul`` (:dtcompatible:`zephyr,uart-emul`):

    * Added support for asynchronous API for the emulated UART driver.

  * ``uart_esp32`` (:dtcompatible:`espressif,esp32-uart`):

    * Added support to invert TX and RX pin signals.

    * Added support for ESP32C6 SoC.

  * ``uart_native_tty`` (:dtcompatible:`zephyr,native-tty-uart`):

    * Added support to emulate interrupt driven UART.

  * ``uart_mcux_lpuart`` (:dtcompatible:`nxp,kinetis-lpuart`):

    * Added support for single wire half-duplex communication.

    * Added support to invert TX and RX pin signals.

  * ``uart_npcx`` (:dtcompatible:`nuvoton,npcx-uart`):

    * Added support for asynchronous API.

    * Added support for baud rate of 3MHz.

  * ``uart_nrfx_uarte`` (:dtcompatible:`nordic,nrf-uarte`):

    * Added support to put TX and RX pins into low power mode when UART is not active.

  * ``uart_nrfx_uarte2`` (:dtcompatible:`nordic,nrf-uarte`):

    * Prevents UART from transmitting when device is suspended.

    * Fixed some events not being triggered.

  * ``uart_pl011`` (:dtcompatible:`arm,pl011`):

    * Added support for runtime configuration.

    * Added support for reset device.

    * Added support to use clock control to determine frequency.

    * Added support for hardware flow control.

    * Added support for UART on Ambiq Apollo3 SoC.

  * ``uart_smartbond`` (:dtcompatible:`renesas,smartbond-uart`):

    * Added support for power management.

    * Added support to wake up via DTR and RX lines.

  * ``uart_stm32`` (:dtcompatible:`st,stm32-uart`):

    * Added support to identify if DMA buffers are in data cache or non-cacheable memory.

  * Added support for Nuvoton Numaker M2L31X series.

* SPI

  * Added support to NXP MCXN947
  * Added support for Ambiq Apollo3 series general IOM based SPI.
  * Added support for Ambiq Apollo3 BLEIF based SPI, which is specific for internal HCI.
  * Added support for :kconfig:option:`CONFIG_PM` and :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME` on STM32 SPI driver.
  * Added support for :kconfig:option:`CONFIG_NOCACHE_MEMORY` in DMA SPI mode for STM32F7x SoC series.
  * Added support for STM32H7R/S series.
  * Added driver for Analog Devices MAX32 SoC series.
  * Fixed an incorrect register assignment in gd32 spi.

* USB

  * Added UDC shim driver for NXP EHCI and IP3511 USB controller.
  * Various fixes and improvements in IT82xx2, DWC2, STM32, RP2040, Smartbond
    USB controller drivers.

* Video

  * Added support for STM32 Digital camera interface (DCMI) driver (:dtcompatible:`st,stm32-dcmi`).
  * Enabled NXP USB Device controllers
  * Added support for the ov7670 camera
  * Added support for the ov5640 camera
  * Added CSI-2 MIPI driver for NXP MCUX
  * Added support for DVP FPC 24-pins mt9m114 camera module shield

* Watchdog

  * Added :kconfig:option:`CONFIG_WDT_NPCX_WARNING_LEADING_TIME_MS` to set the leading warning time
    in milliseconds. Removed no longer used :kconfig:option:`CONFIG_WDT_NPCX_DELAY_CYCLES`.
  * Added support for Ambiq Apollo3 series.
  * Added support for STM32H7R/S series.
  * Added support for Nuvoton Numaker M2L31X series.
  * Added watchdog for external 32kHz crystal in ESP32 SoC variants.

* Wi-Fi

  * Fixed message parsing for esp-at.
  * Fixed esp-at connect failures.
  * Implement :c:func:`bind` and :c:func:`recvfrom` for UDP sockets for esp-at.
  * Added option for setting maximum data size for eswifi.
  * Fixed ESP32 Wi-Fi driver memory leak.

Networking
**********

* ARP:

  * Added support for gratuitous ARP transmission.
  * Fixed a possible deadlock between TX and RX threads within ARP module.
  * Fixed a possible ARP entry leak.
  * Improved ARP debug logs.

* CoAP:

  * Fixed CoAP observe age overflows.
  * Increased upper limit for CoAP retransmissions (:kconfig:option:`CONFIG_COAP_MAX_RETRANSMIT`).
  * Fixed CoAP observations in CoAP client library.
  * Added new CoAP client :c:func:`coap_client_cancel_requests` API which allows
    to cancel active observations.
  * Fixed CoAP ID generation for responses in CoAP Server sample.

* Connection manager:

  * Added support for new net_mgmt events, which allow to track IPv4 and IPv6
    connectivity independently:

    * :c:macro:`NET_EVENT_L4_IPV4_CONNECTED`
    * :c:macro:`NET_EVENT_L4_IPV4_DISCONNECTED`
    * :c:macro:`NET_EVENT_L4_IPV6_CONNECTED`
    * :c:macro:`NET_EVENT_L4_IPV6_DISCONNECTED`

* DHCPv4:

  * Added support for encapsulated vendor specific options. By enabling
    :kconfig:option:`CONFIG_NET_DHCPV4_OPTION_CALLBACKS_VENDOR_SPECIFIC` callbacks can be
    registered with :c:func:`net_dhcpv4_add_option_vendor_callback` to handle these options after
    being initialised with :c:func:`net_dhcpv4_init_option_vendor_callback`.
  * Added support for the "Vendor class identifier" option. Use the
    :kconfig:option:`CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER` to enable it and
    :kconfig:option:`CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER_STRING` to set it.
  * The NTP server from the DHCPv4 option can now be used to set the system time. This is done by
    default, if :kconfig:option:`CONFIG_NET_CONFIG_CLOCK_SNTP_INIT` is enabled.
  * The syslog server address can now be set with DHCPv4 option. This is done by
    default, if :kconfig:option:`CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION` is enabled.
  * Fixed a bug, where options with registered callbacks were not requested from
    the server.
  * Fixed a bug, where netmask received from the server was not applied correctly.
  * Reimplemented DHCPv4 client RENEW/REBIND logic to be compliant with RFC2131.
  * Improved declined addresses management in DHCPv4 server, which now can be
    reused after configured time.
  * Fixed including the client ID option in the DHCPv4 server response, according to RFC6842.
  * Added :kconfig:option:`CONFIG_NET_DHCPV4_SERVER_NAK_UNRECOGNIZED_REQUESTS` which
    allows to override RFC-defined behavior, and NAK requests from unrecognized
    clients.
  * Fixed client ID generation in DHCPv4 server.
  * Other minor fixes in DHCPv4 client and server implementations.

* DHCPv6:

  * Fixed incorrect DHCPv6 events code base for net_mgmt events.
  * Added :kconfig:option:`CONFIG_NET_DHCPV6_DUID_MAX_LEN` which allows to configure
    maximum supported DUID length.
  * Added documentation page for DHCPv6.

* DNS/mDNS/LLMNR:

  * Fixed an issue where the mDNS Responder did not work when the mDNS Resolver was also enabled.
    The mDNS Resolver and mDNS Responder can now be used simultaneously.
  * Reworked LLMNR and mDNS responders, and DNS resolver to use sockets and socket services API.
  * Added ANY query resource type.
  * Added support for mDNS to provide records in runtime.
  * Added support for caching DNS records.
  * Fixed error codes returned when socket creation fails, and when all results have been returned.
  * Fixed DNS retransmission timeout calculation.

* gPTP/PTP:

  * Added support for IEEE 1588-2019 PTP.
  * Added support for SO_TIMESTAMPING socket option to get timestamping information in socket
    ancillary data.
  * Fixed race condition on timestamp callback.
  * Fixed clock master sync send SM if we are not the GM clock.

* HTTP:

  * Added HTTP/2 server library and sample application with support for static,
    dynamic and Websocket resource types.
  * Added HTTP shell component.
  * Improved HTTP client error reporting.
  * Moved HTTP client library out of experimental.
  * Added POLLOUT monitoring when sending response in HTTP client.

* IPSP:

  * Removed IPSP support. ``CONFIG_NET_L2_BT`` does not exist anymore.

* IPv4:

  * Implemented IPv4 Address Conflict Detection, according to RFC 5227.
  * Added :c:func:`net_ipv4_is_private_addr` API function.
  * IPv4 netmask is now set individually for each address instead of being set
    for the whole interface.
  * Other minor fixes and improvements.

* IPv6:

  * Implemented IPv6 Privacy Extensions according to RFC 8981.
  * Added :c:func:`net_ipv6_is_private_addr` API function.
  * Implemented reachability hint for IPv6. Upper layers can use
    :c:func:`net_if_nbr_reachability_hint` to report Neighbor reachability and
    avoid unnecessary Neighbor Discovery solicitations.
  * Added :kconfig:option:`CONFIG_NET_IPV6_MTU` allowing to set custom IPv6 MTU.
  * Added :kconfig:option:`CONFIG_NET_MCAST_ROUTE_MAX_IFACES` which allows to set
    multiple interfaces for multicast forwarding entries.
  * Added :kconfig:option:`CONFIG_NET_MCAST_ROUTE_MLD_REPORTS` which allows to
    report multicast routes in MLDv2 reports.
  * Fixed IPv6 hop limit handling for multicast packets.
  * Improved IPv6 Neighbor Discovery test coverage.
  * Fixed a bug, where Neighbor Advertisement packets reporting Duplicate address
    detection conflicts were dropped.
  * Other minor fixes and improvements.

* LwM2M:

  * Added new API functions:

    * :c:func:`lwm2m_set_bulk`
    * :c:func:`lwm2m_rd_client_set_ctx`

  * Added new ``offset`` parameter to :c:type:`lwm2m_engine_set_data_cb_t` callback type.
    This affects post write and validate callbacks as well as some firmware callbacks.
  * Fixed block context not being reset upon receiving block number 0 in block transfer.
  * Fixed block size negotiation with the server in block transfer.
  * Added :kconfig:option:`CONFIG_LWM2M_ENGINE_ALWAYS_REPORT_OBJ_VERSION` which
    allows to force the client to always report object version.
  * Block transfer is now possible with resource w/o registered callback.
  * Fixed a bug, where an empty ACK sent from the registered callback would not
    be sent immediately.
  * Removed deprecated API functions and definitions.
  * Other minor fixes and improvements.

* Misc:

  * Improved overall networking API Doxygen documentation.
  * Converted TFTP library to use ``zsock_*`` API.
  * Added SNTP :c:func:`sntp_simple_addr` API function to perform SNTP query
    when the server IP address is already known.
  * Added :kconfig:option:`CONFIG_NET_TC_THREAD_PRIO_CUSTOM` allowing to override
    default traffic class threads priority.
  * Fixed the IPv6 event handler initialization order in net config library.
  * Reworked telnet shell backend to use sockets and socket services API.
  * Fixed double dereference of IGMP packets.
  * Moved from ``native_posix`` to ``native_sim`` support in various tests and
    samples.
  * Added support for copying user data in network buffers.
  * Fixed cloning of zero sized network buffers.
  * Added net_buf APIs to handle 40 bit data format.
  * Added receive callback for dummy L2, applicable in certain use cases
    (for example, packet capture).
  * Implemented pseudo interface, a.k.a "any" interface for packet capture use
    case.
  * Added cooked mode capture support. This allows non-IP based network data capture.
  * Generate network events when starting or stopping packet capture.
  * Removed obsolete and unused ``tcp_first_msg`` :c:struct:`net_pkt` flag.
  * Added new :zephyr:code-sample:`secure-mqtt-sensor-actuator` sample.
  * Added support for partial L3 and L4 checksum offloading.
  * Updated :zephyr:code-sample:`mqtt-azure` with new CA certificates, the current
    on expires soon.
  * Added new driver for Native Simulator offloaded sockets.
  * Overhauled VLAN support to use Virtual network interfaces.
  * Added statistics collection for Virtual network interfaces.
  * Fixed system workqueue block in :c:func:`mgmt_event_work_handler`
    when :kconfig:option:`CONFIG_NET_MGMT_EVENT_SYSTEM_WORKQUEUE` is enabled.

* MQTT:

  * Added ALPN support for MQTT TLS backend.
  * Added user data field in :c:struct:`mqtt_client` context structure.
  * Fixed a potential socket leak in MQTT Websockets transport.

* Network Interface:

  * Added new API functions:

    * :c:func:`net_if_ipv4_maddr_foreach`
    * :c:func:`net_if_ipv6_maddr_foreach`

  * Improved debug logging in the network interface code.
  * Added reference counter to the :c:struct:`net_if_addr` structure.
  * Fixed IPv6 DAD and MLDv2 operation when interface goes up.
  * Added unique default name for OpenThread interfaces.
  * Other minor fixes.

* OpenThread

  * Removed deprecated ``openthread_set_state_changed_cb()`` function.
  * Added implementation of BLE TCAT advertisement API.

* PPP

  * Removed deprecated ``gsm_modem`` driver and sample.
  * Optimized memory allocation in PPP driver.
  * Misc improvements in the :zephyr:code-sample:`cellular-modem` sample
  * Added PPP low level packet capture support.

* Shell:

  * Added ``net ipv4 gateway`` command to set IPv4 gateway address.
  * Added argument validation in network shell macros.
  * Fixed net_mgmt sockets information printout.
  * Reworked VLAN information printout.
  * Added option to set random MAC address with ``net iface set_mac`` command.
  * Added multicast join status when printing multicast address information.

* Sockets:

  * Implemented new networking POSIX APIs:

    * :c:func:`if_nameindex`
    * :c:func:`inet_ntoa`
    * :c:func:`inet_addr`

  * Added support for tracing socket API calls.
  * TLS sockets are no longer experimental API.
  * Fixed the protocol field endianness for ``AF_PACKET`` type sockets.
  * Fixed :c:func:`getsockname` for TCP.
  * Improve :c:func:`sendmsg` support when using DTLS sockets.
  * Fixed :c:func:`net_socket_service_register` function stall in case socket
    services thread stopped.
  * Fixed potential socket services thread stoppage when deregistering service.
  * Removed support for asynchronous timeouts in socket services library.
  * Fixed potential busy looping when using :c:func:`zsock_accept` in case of
    file descriptors shortage.

* Syslog:

  * Added new API functions:

    * :c:func:`log_backend_net_set_ip` to initialize syslog net backend with IP
      address directly.
    * :c:func:`log_backend_net_start` to facilitate syslog net backend activation.

  * Added structured logging support to syslog net backend.
  * Added TCP support to syslog net backend.

* TCP:

  * Fixed possible deadlock when accepting new TCP connection.
  * Fixed ACK number verification during connection teardown.
  * Fixed a bug, where data bytes included in FIN packet were ignored.
  * Fixed a possible TCP context leak in case initial SYN packet transmission failed.
  * Deprecated :kconfig:option:`CONFIG_NET_TCP_ACK_TIMEOUT` as it was redundant with other configs.
  * Improved debug logs, so that they're easier to follow under heavy load.
  * ISN generation now uses SHA-256 instead of MD5. Moreover, it now relies on PSA APIs
    instead of legacy Mbed TLS functions for hash computation.
  * Improved ACK reply logic in case no PSH flag is present to reduce redundant ACKs.

* Websocket:

  * Added new Websocket APIs:

    * :c:func:`websocket_register`
    * :c:func:`websocket_unregister`

  * Converted Websocket library to use ``zsock_*`` API.
  * Added Object Core support to Websocket sockets.
  * Added POLLOUT monitoring when sending.

* Wi-Fi:

  * Reduce memory usage of 5 GHz channel list.
  * Added channel validity check in AP mode.
  * Added support for BSSID configuration in connect call.
  * Wifi shell help text fixes. Option parsing fixes.
  * Support WPA auto personal security mode.
  * Collect unicast received/sent network packet statistics.
  * Added support for configuring RTS threshold. With this, users can set the RTS threshold
    value or disable the RTS mechanism.
  * Added support for configuring AP parameters. With this, users can set AP parameters at
    build and run time.
  * Added support to configure ``max_inactivity`` BSS parameter. Users can set this both
    build and runtime duration to control the maximum time duration after which AP may
    disconnect a STA due to inactivity from STA.
  * Added support to configure ``inactivity_poll`` BSS parameter. Users can set build
    only AP parameter to control whether AP may poll the STA before throwing away STA
    due to inactivity.
  * Added support to configure ``max_num_sta`` BSS parameter. Users can set this both
    build and run time parameter to control the maximum number of STA entries.

* zperf:

  * Fixed ``IP_TOS`` and ``IPV6_TCLASS`` options handling in zperf.
  * Fixed throughput calculation during long zperf sessions.
  * Fixed error on TCP upload session end in case multicast IP address was used.
  * Fixed a bug, where IPv6 socket was bound with IPv4 address, giving error.
  * Added an option to specify the network interface to use during zperf sessions.
  * Added a new ``ZPERF_SESSION_PERIODIC_RESULT`` event for periodic updates
    during TCP upload sessions.
  * Fixed possible socket leak in case of errors during zperf session.
  * Improved performance in the default configuration for the zperf sample.

USB
***

* New USB device stack:

  * Added support for HID devices
  * Introduced speed-specific configurations and made high-speed support
    compliant with the USB2.0 specification
  * Added notification support and initial BOS support

Devicetree
**********

* Added :c:macro:`DT_INST_NODE_HAS_COMPAT` to check if a node has a compatible.
  This is useful for nodes that have multiple compatibles.
* Added :c:macro:`DT_CHILD_NUM` and variants to count the number of children of a node.
* Added :c:macro:`DT_FOREACH_NODELABEL` and variants, which can be used to iterate over the
  node labels of a devicetree node.
* Added :c:macro:`DT_NODELABEL_STRING_ARRAY` and :c:macro:`DT_NUM_NODELABELS` and their variants.
* Added :c:macro:`DT_REG_HAS_NAME` and variants.
* Reworked :c:macro:`DT_ANY_INST_HAS_PROP_STATUS_OKAY` so that the result can
  be used with macros like :c:macro:`IS_ENABLED`, IF_ENABLED, or COND_CODE_x.
* Reworked :c:macro:`DT_NODE_HAS_COMPAT_STATUS` so that it can be evaluated at preprocessor time.
* Updated PyYaml version used in dts scripts to 6.0 to remove supply chain vulnerabilities.

Kconfig
*******

* Added a ``substring`` Kconfig preprocessor function.
* Added a ``dt_node_ph_prop_path`` Kconfig preprocessor function.
* Added a ``dt_compat_any_has_prop`` Kconfig preprocessor function.

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

* Debug

  * symtab

   * By enabling :kconfig:option:`CONFIG_SYMTAB`, the symbol table will be
     generated with Zephyr link stage executable on supported architectures.

* Demand Paging

  * NRU (Not Recently Used) eviction algorithm has updated its selection logic to avoid
    picking the same page to evict constantly. The updated login now searches for a new
    candidate linearly after the last evicted page.

  * Added LRU (Least Recently Used) eviction algorithm.

* Formatted output

  * Fix warning when compiling cbprintf with ARCMWDT.

* Management

  * hawkBit

    * The hawkBit subsystem has been reworked to use the settings subsystem to store the hawkBit
      configuration.

    * By enabling :kconfig:option:`CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME`, the hawkBit settings can
      be configured at runtime. Use the :c:func:`hawkbit_set_config` function to set the hawkBit
      configuration. It can also be set via the hawkBit shell, by using the ``hawkbit set``
      command.

    * When using the hawkBit autohandler and an update is installed, the device will now
      automatically reboot after the installation is complete.

    * By enabling :kconfig:option:`CONFIG_HAWKBIT_CUSTOM_DEVICE_ID`, a callback function can be
      registered to set the device ID. Use the :c:func:`hawkbit_set_device_identity_cb` function to
      register the callback.

    * By enabling :kconfig:option:`CONFIG_HAWKBIT_CUSTOM_ATTRIBUTES`, a callback function can be
      registered to set the device attributes that are sent to the hawkBit server. Use the
      :c:func:`hawkbit_set_custom_data_cb` function to register the callback.

  * MCUmgr

    * Instructions for the deprecated mcumgr go tool have been removed, a list of alternative,
      supported clients can be found on :ref:`mcumgr_tools_libraries`.

    * Fixed an issue with the SMP structure not being packed which would cause a fault on devices
      that do not support unaligned memory accesses.

    * Added :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_DYNAMIC_SVC_REGISTRATION` that allows users
      to select whether MCUmgr BT service is statically registered at compile time or
      dynamically at run time.

    * In FS group, TinyCrypt has been replaced with PSA calls for SHA calculation.

* Logging

  * By enabling :kconfig:option:`CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION`, the IP address of the
    syslog server for the networking backend is set by the DHCPv4 Log Server Option (7).

  * Use real time clock as timestamp on POSIX.

  * Add support for syslog (POSIX).

  * Add :c:macro:`LOG_WRN_ONCE` for logging warning message where only the first occurrence is
    logged.

  * Add :c:func:`log_thread_trigger` for triggering processing of the log messages.

  * Fix case when deferred logging not compiling when :kconfig:option:`CONFIG_MULTITHREADING` was
    disabled.

  * Fix case when logging strings could be stripped from the binary when dictionary based logging
    was mixed with non-dictionary.

  * Fix dictionary database not being generated in certain situations.

  * Fix dictionary logging parser not handling long long arguments correctly.

  * Fix support for :kconfig:option:`CONFIG_LOG_MSG_APPEND_RO_STRING_LOC`.

* Modem modules

  * Added modem pipelink module which shares modem pipes globally, allowing device drivers to
    create and set up pipes for the application to use.

  * Simplified the modem pipe module's synchronization mechanism to only protect the callback
    and user data. This matches the actual in-tree usage of the modem pipes.

  * Added ``modem_stats`` module which tracks the usage of buffers throughout the modem
    subsystem.

* Power management

  * Devices can now declare which system power states cause power loss.
    This information can be used to set and release power state
    constraints when it is needed by the device. This feature is enabled with
    :kconfig:option:`CONFIG_PM_POLICY_DEVICE_CONSTRAINTS`. Use functions
    :c:func:`pm_policy_device_power_lock_get` and :c:func:`pm_policy_device_power_lock_put`
    to lock and unlock all power states that cause power loss in a device.

  * Added shell support for device power management.

  * Device power management was de-coupled from system power management. The new
    :kconfig:option:`CONFIG_PM_DEVICE_SYSTEM_MANAGED` option is used to enable
    whether devices must be suspended when the system sleeps.

  * Make it possible to disable system device power management individually per
    power state using ``zephyr,pm-device-disabled``. This allows targets tuning which
    states should (and which should not) trigger device power management.

* Crypto

  * TinyCrypt remains available but is now being phased out in favor
    of PSA Crypto for enhanced security and performance.
  * Mbed TLS was updated to 3.6.0. Release notes can be found at:
    https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.0
  * When any PSA crypto provider is available in the system
    (:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is enabled), desired PSA features
    must now be explicitly selected through ``CONFIG_PSA_WANT_xxx`` symbols.
  * Choice symbols :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_LEGACY_RNG` and
    :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG` were added in order
    to allow the user to specify how Mbed TLS PSA crypto core should generate random numbers.
    The former option, which is the default, relies on legacy entropy and CTR_DRBG/HMAC_DRBG
    modules, while the latter relies on CSPRNG drivers.
  * :kconfig:option:`CONFIG_MBEDTLS_PSA_P256M_DRIVER_ENABLED` enables support
    for the Mbed TLS's p256-m driver PSA crypto library. This is a Cortex-M SW
    optimized implementation of secp256r1 curve.

* CMSIS-NN

  * CMSIS-NN was updated to v6.0.0 from v4.1.0:
    https://arm-software.github.io/CMSIS-NN/latest/rev_hist.html

* FPGA

  * Improve handling of drivers missing ``reset``, ``load``, ``get_status``, and ``get_info``
    methods.
  * Add support for Agilex and Agilex 5.

* Random

  * Besides the existing :c:func:`sys_rand32_get` function, :c:func:`sys_rand8_get`,
    :c:func:`sys_rand16_get` and :c:func:`sys_rand64_get` are now also available.
    These functions are all implemented on top of :c:func:`sys_rand_get`.

* SD

  * SDMMC and SDIO frequency and timing selection logic have been reworked,
    to resolve an issue where a timing mode would not be selected if the
    SDHC device in use did not report support for the maximum frequency
    possible in that mode. Now, if the host controller and card both report
    support for a given timing mode but not the highest frequency that
    mode supports, the timing mode will be selected and configured at
    the reduced frequency (:github:`72705`).

* State Machine Framework

  * The :c:macro:`SMF_CREATE_STATE` macro now always takes 5 arguments.
  * Transition sources that are parents of the state that was run now choose the correct Least
    Common Ancestor for executing Exit and Entry Actions.
  * Passing ``NULL`` to :c:func:`smf_set_state` is now not allowed.

* Storage

  * FAT FS: It is now possible to expose file system formatting functionality for FAT without also
    enabling automatic formatting on mount failure by setting the
    :kconfig:option:`CONFIG_FS_FATFS_MKFS` Kconfig option. This option is enabled by default if
    :kconfig:option:`CONFIG_FILE_SYSTEM_MKFS` is set.

  * FS: It is now possible to truncate a file while opening using :c:func:`fs_open`
    and by passing ``FS_O_TRUNC`` flag.

  * Flash Map: TinyCrypt has been replaced with PSA Crypto in Flash Area integrity check.

  * Flash Map: :c:func:`flash_area_flatten` has been added to be used where an erase
    operation has been previously used for removing/scrambling data rather than
    to prepare a device for a random data write.

  * Flash Map: :c:macro:`FIXED_PARTITION_NODE_OFFSET`, :c:macro:`FIXED_PARTITION_NODE_SIZE`
    and :c:macro:`FIXED_PARTITION_NODE_DEVICE` have been added to allow obtaining
    fixed partition information from a devicetree node rather than a label.

  * Added :kconfig:option:`CONFIG_NVS_DATA_CRC`, to add CRC protection for data.
    Note that enabling this option makes NVS incompatible with existing storage
    that have not been previously using CRC on data.

  * Fixed NVS issue where :c:func:`nvs_calc_free_space` would return larger
    size than available, because space for reserved ate was not subtracted.

  * Fixed ext2 incorrectly calculating free space when attempting to format
    partition.

  * Fixed FAT driver leaving disk in initialized state after unmount.

* Task Watchdog

  * Added shell (mainly for testing purposes during development).

* POSIX API

  * Improved Kconfig options to reflect standard POSIX Options and Option Groups.

  * Added support for the following Option Groups

    * :ref:`POSIX_MAPPED_FILES <posix_option_group_mapped_files>`
    * :ref:`POSIX_MEMORY_PROTECTION <posix_option_group_memory_protection>`
    * :ref:`POSIX_NETWORKING <posix_option_group_networking>`
    * :ref:`POSIX_SINGLE_PROCESS <posix_option_group_single_process>`
    * :ref:`POSIX_TIMERS <posix_option_group_timers>`
    * :ref:`XSI_SYSTEM_LOGGING <posix_option_group_xsi_system_logging>`

  * Added support for the following Options

    * :ref:`_POSIX_ASYNCHRONOUS_IO <posix_option_asynchronous_io>`
    * :ref:`_POSIX_CPUTIME <posix_option_cputime>`
    * :ref:`_POSIX_FSYNC <posix_option_fsync>`
    * :ref:`_POSIX_MEMLOCK <posix_option_memlock>`
    * :ref:`_POSIX_MEMLOCK_RANGE <posix_option_memlock_range>`
    * :ref:`_POSIX_READER_WRITER_LOCKS <posix_option_reader_writer_locks>`
    * :ref:`_POSIX_SHARED_MEMORY_OBJECTS <posix_shared_memory_objects>`
    * :ref:`_POSIX_THREAD_CPUTIME <posix_option_thread_cputime>`
    * :ref:`_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>`
    * :ref:`_POSIX_THREAD_PRIORITY_SCHEDULING <posix_option_thread_priority_scheduling>`
    * :ref:`_XOPEN_STREAMS <posix_option_xopen_streams>`

  * Fixed eventfd ``F_SETFL`` handling to avoid overwriting internal flags.
  * Fixed thread stack address printed in debug message.
  * Fixed macro parameter usage in signal code.

* LoRa/LoRaWAN

  * Added the Fragmented Data Block Transport service, which can be enabled via
    :kconfig:option:`CONFIG_LORAWAN_FRAG_TRANSPORT`. In addition to the default fragment decoder
    implementation from Semtech, an in-tree implementation with reduced memory footprint is
    available.

  * Added a sample to demonstrate LoRaWAN firmware-upgrade over the air (FUOTA).

* ZBus

  * Improved the VDED process by optimizing the channel reference copying for the clones delivered
    during the message subscriber delivery notification.

  * Improved the initialization phase by statically initiating the semaphores and runtime observer
    list. That decreased the duration of the zbus initialization.

  * Added a way of isolating a channel message subscribers pool. Some channels can now share an
    isolated pool to avoid delivery failures and shorten communication latency. It is only necessary
    to enable the :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION` and use the
    function :c:func:`zbus_chan_set_msg_sub_pool` to change the msg pool used by the channel.
    Channels can share the same message pool.

HALs
****

* Nordic

  * Updated nrfx to version 3.5.0.
  * Added nRF Services (nrfs) library.

* STM32

  * Updated STM32F0 to cube version V1.11.5.
  * Updated STM32F3 to cube version V1.11.5.
  * Updated STM32F4 to cube version V1.28.0.
  * Updated STM32F7 to cube version V1.17.2.
  * Updated STM32G0 to cube version V1.6.2.
  * Updated STM32G4 to cube version V1.5.2.
  * Updated STM32H5 to cube version V1.2.0.
  * Updated STM32H7 to cube version V1.11.2.
  * Updated STM32L5 to cube version V1.5.1.
  * Updated STM32U5 to cube version V1.5.0.
  * Updated STM32WB to cube version V1.19.1.
  * Updated STM32WBA to cube version V1.3.1.
  * Added STM32H7R/S with cube version V1.0.0.

* ADI

  * Introduced the ``hal_adi`` module, which is a subset of the Maxim Software
    Development Kit (MSDK) that contains device header files and bare metal
    peripheral drivers (:github:`72391`).

* Espressif

  * Updated HAL to version v5.1, which has new SoCs low-level files.

MCUboot
*******

  * Fixed memory leak in bootutil HKDF implementation

  * Fixed enforcing TLV entries to be protected

  * Fixed disabling instruction/data caches

  * Fixed estimated image overhead size calculation

  * Fixed issue with swap-move algorithm failing to validate multiple-images

  * Fixed align script error in imgtool

  * Fixed img verify for hex file format in imgtool

  * Fixed issue with reading the flash image reset vector

  * Fixed too-early ``check_config.h`` include in mbedtls

  * Refactored image dependency functions to reduce code size

  * Added MCUboot support for ``ESP32-C6``

  * Added optional MCUboot boot banner

  * Added TLV querying for protected region

  * Added using builtin keys for verification in bootutil

  * Added builtin ECDSA key support for PSA Crypto backend

  * Added ``OVERWRITE_ONLY_KEEP_BACKUP`` option for secondary images

  * Added defines for ``SOC_FLASH_0_ID`` and ``SPI_FLASH_0_ID``

  * Fixed ASN.1 support for mbedtls version >= 3.1

  * Fixed bootutil signed/unsigned comparison in ``boot_read_enc_key``

  * Updated imgtool version.py to take command line arguments

  * Added imgtool improvements to dumpinfo

  * Fixed various imgtool dumpinfo issues

  * Fixed imgtool verify command for edcsa-p384 signed images

  * Added support for NXP MCXN947

  * The MCUboot version in this release is version ``2.1.0+0-dev``.

OSDP
****

* Fixed issue in CP secure channel handshake where R-MAC can be reverted to an
  old one by a rogue PD sending an out-of-order secure channel response resulting
  in a replay attack.

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

* TF-M was updated to 2.1.0. Release notes can be found at:
  https://tf-m-user-guide.trustedfirmware.org/releases/2.1.0.html

* Support for MCUboot signature types other than RSA-3072 has been added.
  The type can be chosen with the :kconfig:option:`CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE` Kconfig option.
  Using EC-P256, the new default, reduces flash usage by several KBs compared to RSA.

LVGL
****

LVGL was updated to 8.4.0. Release notes can be found at:
https://docs.lvgl.io/8.4/CHANGELOG.html#v8-4-0-19-march-2024

Additionally, the following changes in Zephyr were done:

  * Added support to place memory pool buffers in ``.lvgl_heap`` section by enabling
    :kconfig:option:`CONFIG_LV_Z_MEMORY_POOL_CUSTOM_SECTION`

  * Removed kscan-based pointer input wrapper code.

  * Corrected encoder button behavior to emit ``LV_KEY_ENTER`` events correctly.

  * Improved handling for :samp:`invert-{x,y}` and ``swap-xy`` configurations.

  * Added ``LV_MEM_CUSTOM_FREE`` call on file closure.

  * Added missing Kconfig stubs for DMA2D symbols.

  * Integrated support for LVGL rounder callback function.

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

  * Added snippet for easily enabling UART over Bluetooth LE by passing ``-S nus-console`` during
    ``west build``. This snippet sets the :kconfig:option:`CONFIG_BT_ZEPHYR_NUS_AUTO_START_BLUETOOTH`
    which allows non-Bluetooth samples that use the UART APIs to run without modifications
    (e.g.: Console and Logging examples).

  * Removed ``GSM_PPP`` specific configuration overlays from samples ``net/cloud/tagoio`` and
    ``net/mgmt/updatehub``. The ``GSM_PPP`` device driver has been deprecated and removed. The new
    ``MODEM_CELLULAR`` device driver which replaces it uses the native networking stack and ``PM``
    subsystem, which like ethernet, requires no application specific actions to set up networking.

  * Removed ``net/gsm_modem`` sample as the ``GSM_PPP`` device driver it depended on has been
    deprecated and removed. The sample has been replaced by the sample ``net/cellular_modem``
    based on the ``MODEM_CELLULAR`` device driver.

  * BT LE Coded PHY is now runtime tested in CI with the nrf5x bsim targets.

  * External ethernet network interfaces have been disabled in the ``tests/net`` tests, since these
    tests are meant to use simulated network interfaces.

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

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

- :github:`74345` - Bluetooth: Non functional on nRF51 with fault

---

### Doc Releases Release Notes 4.0 (`doc/releases/release-notes-4.0.rst`)

:orphan:

.. _zephyr_4.0:

Zephyr 4.0.0
############

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

Major enhancements with this release include:

* **Secure Storage Subsystem**:
  A newly introduced :ref:`secure storage<secure_storage>` subsystem allows the use of the
  PSA Secure Storage API and of persistent keys in the PSA Crypto API on *all* board targets. It
  is now the standard way to provide device-specific protection to data at rest. (:github:`76222`)

* **ZMS (Zephyr Memory Storage) Subsystem**:
  :ref:`ZMS <zms_api>` is a new key-value storage subsystem compatible with all non-volatile storage
  types, including traditional NOR flash and advanced technologies like RRAM and MRAM that support
  write without erasure.

* **Analog Comparators**:
  A new :ref:`comparator<comparator_api>` device driver subsystem for analog comparators has been
  added, complete with shell support. It supports initial configuration through Devicetree and
  runtime configuration through vendor specific APIs. Initially the :dtcompatible:`nordic,nrf-comp`,
  :dtcompatible:`nordic,nrf-lpcomp` and :dtcompatible:`nxp,kinetis-acmp` are supported.

* **Stepper Motors**:
  It is now possible to interact with stepper motors using a standard API thanks to the new
  :ref:`stepper<stepper_api>` device driver subsystem, which also comes with shell support.
  Initially implemented drivers include a simple :dtcompatible:`zephyr,gpio-steppers` and a complex
  sensor-less stall-detection capable with integrated ramp-controller :dtcompatible:`adi,tmc5041`.

* **Haptics**:
  A new :ref:`haptics_api` device driver subsystem allows unified access to haptic controllers,
  enabling users to add haptic feedback to their applications.

* **Multimedia Capabilities**
  Zephyr's audio and video capabilities have been expanded with support for new image sensors, video
  interfaces, audio interfaces, and codecs being supported.

* **Prometheus Library**:
  A `Prometheus`_ metrics library has been added to the networking stack. It provides a way to
  expose metrics to Prometheus clients over HTTP, facilitating the consolidated remote monitoring of
  Zephyr devices alongside other systems typically monitored using Prometheus.

* **Documentation Improvements**:
  Several enhancements were made to the online documentation to improve content discovery and
  navigation. These include a new :ref:`interactive board catalog <boards>` and an interactive
  directory for :zephyr:code-sample-category:`code samples <samples>`.

* **Expanded Board Support**:
  Over 60 :ref:`new boards <boards_added_in_zephyr_4_0>` and
  :ref:`shields <shields_added_in_zephyr_4_0>` are supported in Zephyr 4.0.

.. _`Prometheus`: https://prometheus.io/

An overview of the changes required or recommended when migrating your application from Zephyr
v3.7.0 to Zephyr v4.0.0 can be found in the separate :ref:`migration guide<migration_4.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:`2024-8798`: Under embargo until 2024-11-22
* :cve:`2024-10395`: Under embargo until 2025-01-23
* :cve:`2024-11263` `Zephyr project bug tracker GHSA-jjf3-7x72-pqm9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jjf3-7x72-pqm9>`_

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

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

* Macro ``K_THREAD_STACK_MEMBER``, deprecated since v3.5.0, has been removed.
  Use :c:macro:`K_KERNEL_STACK_MEMBER` instead.

* ``CBPRINTF_PACKAGE_COPY_*`` macros, deprecated since Zephyr 3.5.0, have been removed.

* ``_ENUM_TOKEN`` and ``_ENUM_UPPER_TOKEN`` macros, deprecated since Zephyr 2.7.0,
  are no longer generated.

* Removed deprecated arch-level CMSIS header files
  ``include/zephyr/arch/arm/cortex_a_r/cmsis.h`` and
  ``include/zephyr/arch/arm/cortex_m/cmsis.h``. ``cmsis_core.h`` needs to be
  included now.

* Removed deprecated ``ceiling_fraction`` macro. :c:macro:`DIV_ROUND_UP` needs
  to be used now.

* Removed deprecated header file
  ``include/zephyr/random/rand32.h``. ``random.h`` needs to be included now.

* Deprecated ``EARLY``, ``APPLICATION`` and ``SMP`` init levels can no longer be
  used for devices.

* Removed deprecated net_pkt functions.

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

* Deprecated the ``net_buf_put()`` and ``net_buf_get()`` API functions in favor of
  :c:func:`k_fifo_put` and :c:func:`k_fifo_get`.

* The ``kscan_api`` subsystem has been marked as deprecated.

* Deprecated the TinyCrypt shim driver ``CONFIG_CRYPTO_TINYCRYPT_SHIM``.

* ``native_posix`` has been deprecated in favour of
  :zephyr:board:`native_sim<native_sim>`.

* ``include/zephyr/net/buf.h`` is deprecated in favor of
  ``include/zephyr/net_buf.h>``. The old header will be removed in future releases
  and its usage should be avoided.

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

* ARC

* ARM

  * Added support of device memory attributes on Cortex-M (arm_mpu_v8)

* ARM64

  * Added initial support for :c:func:`arch_stack_walk` that supports unwinding via esf only
  * Added sys_arch_reboot() support to ARM64

  * Added support for demand paging.

  * Added support for Linkable Loadable Extensions (LLEXT).

* RISC-V

  * The stack traces upon fatal exception now prints the address of stack pointer (sp) or frame
    pointer (fp) depending on the build configuration.

  * When :kconfig:option:`CONFIG_EXTRA_EXCEPTION_INFO` is enabled, the exception stack frame (arch_esf)
    has an additional field ``csf`` that points to the callee-saved-registers upon an fatal error,
    which can be accessed in :c:func:`k_sys_fatal_error_handler` by ``esf->csf``.

    * For SoCs that select ``RISCV_SOC_HAS_ISR_STACKING``, the ``SOC_ISR_STACKING_ESF_DECLARE`` has to
      include the ``csf`` member, otherwise the build would fail.

* Xtensa

* x86

  * Added initial support for :c:func:`arch_stack_walk` that supports unwinding via esf only

Kernel
******

* Devicetree devices are now exported to :ref:`llext`.

Bluetooth
*********

* Audio

  * :c:func:`bt_tbs_client_register_cb` now supports multiple listeners and may now return an error.

  * Added APIs for getting and setting the assisted listening stream values in codec capabilities
    and codec configuration:

    * :c:func:`bt_audio_codec_cfg_meta_get_assisted_listening_stream`
    * :c:func:`bt_audio_codec_cfg_meta_set_assisted_listening_stream`
    * :c:func:`bt_audio_codec_cap_meta_get_assisted_listening_stream`
    * :c:func:`bt_audio_codec_cap_meta_set_assisted_listening_stream`

  * Added APIs for getting and setting the broadcast name in codec capabilities
    and codec configuration:

    * :c:func:`bt_audio_codec_cfg_meta_get_broadcast_name`
    * :c:func:`bt_audio_codec_cfg_meta_set_broadcast_name`
    * :c:func:`bt_audio_codec_cap_meta_get_broadcast_name`
    * :c:func:`bt_audio_codec_cap_meta_set_broadcast_name`

* Host

  * Added API :c:func:`bt_gatt_get_uatt_mtu` to get current Unenhanced ATT MTU of a given
    connection (experimental).
  * Added :kconfig:option:`CONFIG_BT_CONN_TX_NOTIFY_WQ`.
    The option allows using a separate workqueue for connection TX notify processing
    (:c:func:`bt_conn_tx_notify`) to make Bluetooth stack more independent from the system workqueue.

  * The host now disconnects from the peer upon ATT timeout.

  * Added a warning to :c:func:`bt_conn_le_create` and :c:func:`bt_conn_le_create_synced` if
    the connection pointer passed as an argument is not NULL.

  * Added Kconfig option :kconfig:option:`CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE` to enforce
    :c:func:`bt_conn_le_create` and :c:func:`bt_conn_le_create_synced` return an error if the
    connection pointer passed as an argument is not NULL.

  * Fixed an ltk derive issue in L2CAP
  * Added listener callback for discovery (BR)
  * Corrected BR bonding type (SSP)
  * Added support for non-bondable mode (SSP)
  * Changed SSP so that no MITM if required level is less than L3
  * Added checking the receiving buffer length before pulling data (AVDTP)
  * Added support of security level 4 to SSP
  * Fixed LE LTK cannot be derived
  * Added support for Multi-Command Packet (l2cap)
  * Improved the L2CAP code to Set flags in CFG RSP
  * Improved the L2CAP code to handle all configuration options
  * Improved the SSP code to clear pairing flag if ssp pairing completed area
  * Improved the SMP code to check if remote supports CID 0x0007
  * Added support for SMP CT2 flag
  * Improved the SSP code so the proper callback is called when pairing fails

* Controller

  * Added Periodic Advertising Sync Transfer (PAST) support with support for both sending and receiving roles.
    The option can be enabled by :kconfig:option:`CONFIG_BT_CTLR_SYNC_TRANSFER_SENDER` and
    :kconfig:option:`CONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER`.

* HCI Drivers

* Mesh

  * Introduced a mesh-specific workqueue to increase reliability of the mesh messages
    transmission. To get the old behavior enable :kconfig:option:`CONFIG_BT_MESH_WORKQ_SYS`.

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

* Added support for these SoC series:

  * Added ESP32-C2 and ESP8684 SoC support.
  * Added STM32U0 series with GPIO, Serial, I2C, DAC, ADC, flash, PWM and counter driver support.
  * Added STM32WB0 series with GPIO, Serial, I2C, SPI, ADC, DMA and flash driver support.
  * Added STM32U545xx SoC variant.
  * Added NXP i.MX93's Cortex-M33 core
  * Added NXP MCXW71, MCXC242, MCXA156, MCXN236, MCXC444, RT1180

* Made these changes in other SoC series:

  * NXP S32Z270: Added support for the new silicon cut version 2.0. Note that the previous
    versions (1.0 and 1.1) are no longer supported.
  * NXP s32k3: fixed RAM retention issue
  * NXP s32k1: obtain system clock frequency from Devicetree
    versions (1.0 and 1.1) are no longer supported.
  * Added ESP32 WROVER-E-N16R4 variant.
  * STM32H5: Added support for OpenOCD through STMicroelectronics OpenOCD fork.
  * MAX32: Enabled Segger RTT and SystemView support.
  * Silabs Series 2: Use oscillator, clock and DCDC configuration from device tree during init.
  * Silabs Series 2: Added initialization for SMU (Security Management Unit).
  * Silabs Series 2: Use sleeptimer as the default OS timer instead of systick.
  * NXP i.MX8MP: Enable the IRQ_STEER interrupt controller.
  * NXP RWxxx:

      * added additional support to Wakeup from low power modes
      * RW61x: increased main stack size to avoid stack overflows when running BLE
      * RW612: enabled SCTIMER

  * NXP IMXRT: Fixed flexspi boot issue caused by an erroneous relocation of the Flash Configuration Block
    of Kconfig defaults being sourced
  * NXP RT11xx: enabled FlexIO
  * NXP IMXRT116x: Fixed bus clocking to align with the settings of the MCUXpresso SDK
  * NXP mimxrt685: fixed clocks to enable DMIC
  * NXP MCX N Series: Fixed NXP LPSPI native chip select when using synchronous API with DMA bug
  * Nordic nRF54H: Added support for the FLPR (Fast Lightweight Processor) RISC-V CPU.

.. _boards_added_in_zephyr_4_0:

* Added support for these boards:

   * :zephyr:board:`01space ESP32C3 0.42 OLED <esp32c3_042_oled>` (``esp32c3_042_oled``)
   * :zephyr:board:`ADI MAX32662EVKIT <max32662evkit>` (``max32662evkit``)
   * :zephyr:board:`ADI MAX32666EVKIT <max32666evkit>` (``max32666evkit``)
   * :zephyr:board:`ADI MAX32666FTHR <max32666fthr>` (``max32666fthr``)
   * :zephyr:board:`ADI MAX32675EVKIT <max32675evkit>` (``max32675evkit``)
   * :zephyr:board:`ADI MAX32690FTHR <max32690fthr>` (``max32690fthr``)
   * :zephyr:board:`arduino_nicla_vision` (``arduino_nicla_vision``)
   * :zephyr:board:`BeagleBone AI-64 <beaglebone_ai64>` (``beaglebone_ai64``)
   * :zephyr:board:`BeaglePlay (CC1352) <beagleplay>` (``beagleplay``)
   * :zephyr:board:`DPTechnics Walter <walter>` (``walter``)
   * :zephyr:board:`Espressif ESP32-C3-DevKitC <esp32c3_devkitc>` (``esp32c3_devkitc``)
   * :zephyr:board:`Espressif ESP32-C3-DevKit-RUST <esp32c3_rust>` (``esp32c3_rust``)
   * :zephyr:board:`Espressif ESP32-S3-EYE <esp32s3_eye>` (``esp32s3_eye``)
   * :zephyr:board:`Espressif ESP8684-DevKitM <esp8684_devkitm>` (``esp8684_devkitm``)
   * :zephyr:board:`Gardena Smart Garden Radio Module <sgrm>` (``sgrm``)
   * :zephyr:board:`mikroe STM32 M4 Clicker <mikroe_stm32_m4_clicker>` (``mikroe_stm32_m4_clicker``)
   * :zephyr:board:`Nordic Semiconductor nRF54L15 DK <nrf54l15dk>` (``nrf54l15dk``)
   * Nordic Semiconductor nRF54L20 PDK (``nrf54l20pdk``)
   * :zephyr:board:`Nordic Semiconductor nRF7002 DK <nrf7002dk>` (``nrf7002dk``)
   * :zephyr:board:`Nuvoton NPCM400_EVB <npcm400_evb>` (``npcm400_evb``)
   * :zephyr:board:`NXP FRDM-MCXA156 <frdm_mcxa156>` (``frdm_mcxa156``)
   * :zephyr:board:`NXP FRDM-MCXC242 <frdm_mcxc242>` (``frdm_mcxc242``)
   * :zephyr:board:`NXP FRDM-MCXC444 <frdm_mcxc444>` (``frdm_mcxc444``)
   * :zephyr:board:`NXP FRDM-MCXN236 <frdm_mcxn236>` (``frdm_mcxn236``)
   * :zephyr:board:`NXP FRDM-MCXW71 <frdm_mcxw71>` (``frdm_mcxw71``)
   * :zephyr:board:`NXP i.MX95 EVK <imx95_evk>` (``imx95_evk``)
   * :zephyr:board:`NXP MIMXRT1180-EVK <mimxrt1180_evk>` (``mimxrt1180_evk``)
   * :zephyr:board:`PHYTEC phyBOARD-Nash i.MX93 <phyboard_nash>` (``phyboard_nash``)
   * :zephyr:board:`Renesas RA2A1 Evaluation Kit <ek_ra2a1>` (``ek_ra2a1``)
   * :zephyr:board:`Renesas RA4E2 Evaluation Kit <ek_ra4e2>` (``ek_ra4e2``)
   * :zephyr:board:`Renesas RA4M2 Evaluation Kit <ek_ra4m2>` (``ek_ra4m2``)
   * :zephyr:board:`Renesas RA4M3 Evaluation Kit <ek_ra4m3>` (``ek_ra4m3``)
   * :zephyr:board:`Renesas RA4W1 Evaluation Kit <ek_ra4w1>` (``ek_ra4w1``)
   * :zephyr:board:`Renesas RA6E2 Evaluation Kit <ek_ra6e2>` (``ek_ra6e2``)
   * :zephyr:board:`Renesas RA6M1 Evaluation Kit <ek_ra6m1>` (``ek_ra6m1``)
   * :zephyr:board:`Renesas RA6M2 Evaluation Kit <ek_ra6m2>` (``ek_ra6m2``)
   * :zephyr:board:`Renesas RA6M3 Evaluation Kit <ek_ra6m3>` (``ek_ra6m3``)
   * :zephyr:board:`Renesas RA6M4 Evaluation Kit <ek_ra6m4>` (``ek_ra6m4``)
   * :zephyr:board:`Renesas RA6M5 Evaluation Kit <ek_ra6m5>` (``ek_ra6m5``)
   * :zephyr:board:`Renesas RA8D1 Evaluation Kit <ek_ra8d1>` (``ek_ra8d1``)
   * :zephyr:board:`Renesas RA6E1 Fast Prototyping Board <fpb_ra6e1>` (``fpb_ra6e1``)
   * :zephyr:board:`Renesas RA6E2 Fast Prototyping Board <fpb_ra6e2>` (``fpb_ra6e2``)
   * :zephyr:board:`Renesas RA8T1 Motor Control Kit <mck_ra8t1>` (``mck_ra8t1``)
   * :zephyr:board:`Renode Cortex-R8 Virtual <cortex_r8_virtual>` (``cortex_r8_virtual``)
   * :zephyr:board:`Seeed XIAO ESP32-S3 Sense Variant <xiao_esp32s3>`: ``xiao_esp32s3``.
   * :zephyr:board:`sensry.io Ganymed Break-Out-Board (BOB) <ganymed_bob>` (``ganymed_bob``)
   * :zephyr:board:`SiLabs SiM3U1xx 32-bit MCU USB Development Kit <sim3u1xx_dk>` (``sim3u1xx_dk``)
   * :zephyr:board:`SparkFun Thing Plus Matter <sparkfun_thing_plus_matter_mgm240p>` (``sparkfun_thing_plus_matter_mgm240p``)
   * :zephyr:board:`ST Nucleo G431KB <nucleo_g431kb>` (``nucleo_g431kb``)
   * :zephyr:board:`ST Nucleo H503RB <nucleo_h503rb>` (``nucleo_h503rb``)
   * :zephyr:board:`ST Nucleo H755ZI-Q <nucleo_h755zi_q>` (``nucleo_h755zi_q``)
   * :zephyr:board:`ST Nucleo U031R8 <nucleo_u031r8>` (``nucleo_u031r8``)
   * :zephyr:board:`ST Nucleo U083RC <nucleo_u083rc>` (``nucleo_u083rc``)
   * :zephyr:board:`ST Nucleo WB05KZ <nucleo_wb05kz>` (``nucleo_wb05kz``)
   * :zephyr:board:`ST Nucleo WB09KE <nucleo_wb09ke>` (``nucleo_wb09ke``)
   * :zephyr:board:`ST STM32U083C-DK <stm32u083c_dk>` (``stm32u083c_dk``)
   * :zephyr:board:`TI CC1352P7 LaunchPad <cc1352p7_lp>` (``cc1352p7_lp``)
   * :zephyr:board:`vcc-gnd YD-STM32H750VB <yd_stm32h750vb>` (``yd_stm32h750vb``)
   * :zephyr:board:`WeAct Studio STM32F405 Core Board V1.0 <weact_stm32f405_core>` (``weact_stm32f405_core``)
   * :zephyr:board:`WeAct Studio USB2CANFDV1 <usb2canfdv1>` (``usb2canfdv1``)
   * :zephyr:board:`Witte Technology Linum Board <linum>` (``linum``)


* Made these board changes:

  * The nrf54l15bsim target now includes models of the AAR, CCM and ECB peripherals, and many
    other improvements.
  * Support for Google Kukui EC board (``google_kukui``) has been dropped.
  * STM32: Deprecated MCO configuration via Kconfig in favour of setting it through Devicetree.
    See ``samples/boards/st/mco`` sample.
  * STM32: STM32CubeProgrammer is now the default runner on all STMicroelectronics STM32 boards.
  * Removed the ``nrf54l15pdk`` board, use :zephyr:board:`nrf54l15dk` instead.
  * PHYTEC: ``mimx8mp_phyboard_pollux`` has been renamed to :zephyr:board:`phyboard_pollux<phyboard_pollux>`,
    with the old name marked as deprecated.
  * PHYTEC: ``mimx8mm_phyboard_polis`` has been renamed to :zephyr:board:`phyboard_polis<phyboard_polis>`,
    with the old name marked as deprecated.
  * The board qualifier for MPS3/AN547 is changed from:

    * ``mps3/an547`` to ``mps3/corstone300/an547`` for secure and
    * ``mps3/an547/ns`` to ``mps3/corstone300/an547/ns`` for non-secure.

  * Added Thingy53 forwarding of network core pins to network core for SPI peripheral (disabled
    by default) including pin mappings.
  * Added uart, flexio pwm, flexio spi, watchdog, flash, rtc, i2c, lpspi, edma, gpio, acmp, adc and lptmr support
    to NXP ``frdm_ke17z`` and ``frdm_ke17z512``
  * Enabled support for MCUmgr on NXP boards
  * Enabled MCUboot, FlexCAN, LPI2C, VREF, LPADC and timers (TPM, LPTMR, counter, watchdog) on NXP ``frdm_mcxw71``
  * Enabled I2C, PWM on NXP ``imx95_evk``
  * Enabled FLEXCAN, LPI2C on NXP ``s32z2xxdc2``
  * Enabled DSPI and EDMA3 on NXP ``s32z270dc2``
  * Enabled ENET ethernet on NXP ``imx8mm`` and ``imx8mn``
  * Added support for the NXP ``imx8qm`` and ``imx8qxp`` DSP core to enable the openAMP sample


.. _shields_added_in_zephyr_4_0:

* Added support for the following shields:

  * :ref:`ADI EVAL-ADXL362-ARDZ <eval_adxl362_ardz>`
  * :ref:`ADI EVAL-ADXL372-ARDZ <eval_adxl372_ardz>`
  * :ref:`Digilent Pmod ACL <pmod_acl>`
  * :ref:`MikroElektronika BLE TINY Click <mikroe_ble_tiny_click_shield>`
  * :ref:`Nordic SemiConductor nRF7002 EB <nrf7002eb>`
  * :ref:`Nordic SemiConductor nRF7002 EK <nrf7002ek>`
  * :ref:`ST X-NUCLEO-WB05KN1: BLE expansion board <x-nucleo-wb05kn1>`
  * :ref:`WeAct Studio MiniSTM32H7xx OV2640 Camera Sensor <weact_ov2640_cam_module>`

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

* Added support for .elf files to the west flash command for jlink, pyocd and linkserver runners.

* Extracted pickled EDT generation from gen_defines.py into gen_edt.py. This moved the following
  parameters from the cmake variable ``EXTRA_GEN_DEFINES_ARGS`` to ``EXTRA_GEN_EDT_ARGS``:

   * ``--dts``
   * ``--dtc-flags``
   * ``--bindings-dirs``
   * ``--dts-out``
   * ``--edt-pickle-out``
   * ``--vendor-prefixes``
   * ``--edtlib-Werror``

* Switched to using imgtool directly from the build system when signing images instead of calling
  ``west sign``.

* Added support for selecting MCUboot operating mode in sysbuild using ``SB_CONFIG_MCUBOOT_MODE``.

* Added support for RAM-load MCUboot operating mode in build system, including sysbuild support.

* Added a script parameter to Twister to enable HW specific arguments, such as a system specific
  timeout

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

* Added a new :ref:`interactive board catalog <boards>` enabling users to search boards by criteria
  such as name, architecture, vendor, or SoC.
* Added a new :zephyr:code-sample-category:`interactive code sample catalog <samples>` for quickly
  finding code samples based on name and description.
* Added :rst:dir:`zephyr:board` directive and :rst:role:`zephyr:board` role to mark Sphinx pages as
  board documentation and reference them from other pages. Most existing board documentation pages
  have been updated to use this directive, with full migration planned for the next release.
* Added :rst:dir:`zephyr:code-sample-category` directive to describe and group code samples in the
  documentation.
* Added a link to the source code of the driver matching a binding's compatible string (when one can
  be found in the Zephyr tree) to the :ref:`Devicetree bindings <devicetree_binding_index>` documentation.
* Added a button to all code sample README pages allowing to directly browse the sample's source
  code on GitHub.
* Moved Zephyr C API documentation out of main documentation. API references now feature a rich
  tooltip and link to the dedicated Doxygen site.
* Added two new build commands, ``make html-live`` and ``make html-live-fast``, that automatically
  locally host the generated documentation. They also automatically rebuild and rehost the
  documentation when changes to the input ``.rst`` files are detected on the filesystem.

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

* ADC

  * Added proper ADC2 calibration entries in ESP32.
  * Fixed calibration scheme in ESP32-S3.
  * STM32H7: Added support for higher sampling frequencies thanks to boost mode implementation.
  * Added initial support for Renesas RA8 ADC driver (:dtcompatible:`renesas,ra-adc`)
  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-adc`).
  * Added support for NXP S32 SAR_ADC (:dtcompatible:`nxp,s32-adc-sar`)
  * Added support for Ambiq Apollo3 series (:dtcompatible:`ambiq,adc`).

* CAN

  * Added initial support for Renesas RA CANFD (:dtcompatible:`renesas,ra-canfd-global`,
    :dtcompatible:`renesas,ra-canfd`)
  * Added Flexcan support for S32Z27x (:dtcompatible:`nxp,flexcan`, :dtcompatible:`nxp,flexcan-fd`)
  * Improved NXP S32 CANXL error reporting (:dtcompatible:`nxp,s32-canxl`)

* Clock control

  * STM32 MCO (Microcontroller Clock Output) is now available on STM32U5 series.
  * STM32 MCO can and should now be configured with device tree.
  * STM32: :kconfig:option:`CONFIG_CLOCK_CONTROL` is now enabled by default at family level and doesn't need
    to be enabled at board level anymore.
  * STM32H7: PLL FRACN can now be configured (see :dtcompatible:`st,stm32h7-pll-clock`)
  * Added initial support for Renesas RA clock control driver (:dtcompatible:`renesas,ra-cgc-pclk`,
    :dtcompatible:`renesas,ra-cgc-pclk-block`, :dtcompatible:`renesas,ra-cgc-pll`,
    :dtcompatible:`renesas,ra-cgc-external-clock`, :dtcompatible:`renesas,ra-cgc-subclk`,
    :dtcompatible:`renesas,ra-cgc-pll-out`)
  * Silabs: Added support for Series 2+ Clock Management Unit (see :dtcompatible:`silabs,series-clock`)
  * Added initial support for Nordic nRF54H Series clock controllers.

* Codec (Audio)

  * Added a driver for the Wolfson WM8904 audio codec (:dtcompatible:`wolfson,wm8904`)

* Comparator

  * Introduced comparator device driver subsystem selected with :kconfig:option:`CONFIG_COMPARATOR`
  * Introduced comparator shell commands selected with :kconfig:option:`CONFIG_COMPARATOR_SHELL`
  * Added support for Nordic nRF COMP (:dtcompatible:`nordic,nrf-comp`)
  * Added support for Nordic nRF LPCOMP (:dtcompatible:`nordic,nrf-lpcomp`)
  * Added support for NXP Kinetis ACMP (:dtcompatible:`nxp,kinetis-acmp`)

* Counter

  * Added initial support for Renesas RA8 AGT counter driver (:dtcompatible:`renesas,ra-agt`)
  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-counter`).
  * Updated the NXP counter_mcux_lptmr driver to support multiple instances of the lptmr
    peripheral.
  * Converted the NXP S32 System Timer Module driver to native Zephyr code
  * Added support for late and short relative alarms area to NXP nxp_sys_timer (:dtcompatible:`nxp,s32-sys-timer`)

* Crypto

  * Added support for STM32L4 AES.

* DAC

  * DAC API now supports specifying channel path as internal. Support has been added in STM32 drivers.

* Disk

  * STM32F7 SDMMC driver now supports usage of DMA.
  * STM32 mem controller driver now supports FMC for STM32H5.
  * SDMMC subsystem driver will now power down the SD card when the disk is
    deinitialized

* Display

  * NXP ELCDIF driver now supports flipping the image along the horizontal
    or vertical axis using the PXP. Use
    :kconfig:option:`CONFIG_MCUX_ELCDIF_PXP_FLIP_DIRECTION` to set the desired
    flip.
  * ST7789V driver now supports BGR565, enabled with
    :kconfig:option:`CONFIG_ST7789V_BGR565`.
  * Added driver for SSD1327 OLED display controller (:dtcompatible:`solomon,ssd1327fb`).
  * Added driver for SSD1322 OLED display controller (:dtcompatible:`solomon,ssd1322`).
  * Added driver for IST3931 monochrome display controller (:dtcompatible:`istech,ist3931`).

* DMA

  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-dma`).
  * Added flip feature to the NXP dma_mcux_pxp driver (:dtcompatible:`nxp,pxp`)
  * Added support for eDMAv5 and cyclic mode (:github:`80584`) to the NXP EMDA driver (:dtcompatible:`nxp,edma`)

* EEPROM

  * Added support for using the EEPROM simulator with embedded C standard libraries
    (:dtcompatible:`zephyr,sim-eeprom`).

* Entropy

  * Added initial support for Renesas RA8 Entropy driver (:dtcompatible:`renesas,ra-rsip-e51a-trng`)
  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-trng`).

* Ethernet

  * Added a :c:func:`get_phy` function to the ethernet driver api, which returns the phy device
    associated to a network interface.
  * Added 2.5G and 5G link speeds to the ethernet hardware capabilities api.
  * Added check for null api pointer in :c:func:`net_eth_get_hw_capabilities`, fixing netusb crash.
  * Added synopsis dwc_xgmac ethernet driver.
  * Added NXP iMX NETC driver.
  * Adin2111

    * Fixed bug that resulted in double RX buffer read when generic spi protocol is used.
    * Fixed essential thread termination on OA read failure.
    * Skip checks for port 2 on the adin1110 since it doesn't apply, as there is no port 2.
  * ENC28J60

    * Added support for the ``zephyr,random-mac-address`` property.
    * Fixed race condition between interrupt service and L2 init affecting carrier status in init.
  * ENC424j600: Added ability to change mac address at runtime with net management api.
  * ESP32: Added configuration of interrupts from DT.
  * Lan865x

    * Enable all multicast MAC address for IPv6. All multicast mac address can now be
      received and allows for correct handling of the IPv6 neighbor discovery protocol.
    * Fixed transmission stopping when setting mac address or promiscuous mode.
  * LiteX

    * Renamed the ``compatible`` from ``litex,eth0`` to :dtcompatible:`litex,liteeth`.
    * Added support for multiple instances of the liteX ethernet driver.
    * Added support for VLAN to the liteX ethernet driver.
    * Added phy support.
  * Native_posix

    * Implemented getting the interface name from the command line.
    * Now prints error number in error message when creating an interface.
  * NXP ENET_QOS: Fixed check for ``zephyr,random-mac-address`` property.
  * NXP ENET:

    * Fixed fused MAC address initialization code.
    * Fixed code path for handling tx errors with timestamped frames.
    * Fixed network carrier status race condition during init.
  * NXP S32: Added configs to enable VLAN promiscuous and untagged, and enable SI message interrupt.
  * STM32

    * Driver can now be configured to use a preemptive RX thread priority, which could be useful
      in case of high network traffic load (reduces jitter).
    * Added support for DT-defined mdio.
    * Fixed bus error after network disconnection that happened in some cases.
  * TC6: Combine read chunks into continuous net buffer. This fixes IPv6 neighbor discovery protocol
    because 64 bytes was not enough for all headers.
  * PHY driver changes

    * Added Qualcomm AR8031 phy driver.
    * Added DP83825 phy driver.
    * PHY_MII

      * Fixed generic phy_mii driver not using the value of the ``no-reset`` property from Devicetree.
      * Removed excess newlines from log output of phy_mii driver.
    * KSZ8081

      * Fixed reset times during init that were unnecessarily long.
      * Removed unnecessary reset on every link configuration that blocked system workqueue
      * Fixed issue relating to strap-in override bits.


* Flash

  * Fixed SPI NOR driver issue where wp, hold and reset pins were incorrectly initialized from
    device tee when SFDP at run-time has been enabled (:github:`80383`)
  * Updated all Espressif's SoC driver initialization to allow new chipsets and octal flash support.
  * Added :kconfig:option:`CONFIG_SPI_NOR_ACTIVE_DWELL_MS`, to the SPI NOR driver configuration,
    which allows setting the time during which the driver will wait before triggering Deep Power Down (DPD).
    This option replaces ``CONFIG_SPI_NOR_IDLE_IN_DPD``, aiming at reducing unnecessary power
    state changes and SPI transfers between other operations, specifically when burst type
    access to an SPI NOR device occurs.
  * Added :kconfig:option:`CONFIG_SPI_NOR_INIT_PRIORITY` to allow selecting the SPI NOR driver initialization priority.
  * The flash API has been extended with the :c:func:`flash_copy` utility function which allows performing
    direct data copies between two Flash API devices.
  * Fixed a Flash Simulator issue where offsets were assumed to be absolute instead of relative
    to the device base address (:github:`79082`).
  * Extended STM32 OSPI drivers to support QUAL, DUAL and SPI modes. Additionally, added support
    for custom write and SFDP:BFP opcodes.
  * Added possibility to run STM32H7 flash driver from Cortex-M4 core.
  * Implemented readout protection handling (RDP levels) for STM32F7 SoCs.
  * Added initial support for Renesas RA8 Flash controller driver (:dtcompatible:`renesas,ra-flash-hp-controller`)
  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-flash-controller`).
  * Added support for W25Q512JV and W25Q512NW-IQ/IN to NXP's MCUX Flexspi driver
  * Renamed the binding :dtcompatible:`nxp,iap-msf1` to :dtcompatible:`nxp,msf1` for accuracy

* GPIO

  * tle9104: Add support for the parallel output mode via setting the properties ``parallel-out12`` and
    ``parallel-out34``.
  * Converted the NXP S32 SIUL2 drivers to native Zephyr code
  * Converted the NXP wake-up drivers to native Zephyr code

* Haptics

  * Introduced a haptics device driver subsystem selected with :kconfig:option:`CONFIG_HAPTICS`
  * Added support for TI DRV2605 haptic driver IC (:dtcompatible:`ti,drv2605`)
  * Added a sample for the DRV2605 haptic driver to trigger ROM events (:zephyr:code-sample:`drv2605`)

* I2C

  * Added initial support for Renesas RA8 I2C driver (:dtcompatible:`renesas,ra-iic`)

* I2S

  * Added ESP32-S3 and ESP32-C3 driver support.

* I3C

  * Added support for SETAASA optimization during initialization. Added a
    ``supports-setaasa`` property to ``i3c-devices.yaml``.
  * Added sending DEFTGTS if any devices that support functioning as a secondary
    controller on the bus.
  * Added retrieving GETMXDS within :c:func:`i3c_device_basic_info_get` if BCR mxds
    bit is set.
  * Added helper functions for sending CCCs for ENTTM, VENDOR, DEFTGTS, SETAASA,
    GETMXDS, SETBUSCON, RSTACT DC, ENTAS0, ENTAS1, ENTAS2, and ENTAS3.
  * Added shell commands for sending CCCs for ENTTM, VENDOR, DEFTGTS, SETAASA,
    GETMXDS, SETBUSCON, RSTACT DC, ENTAS0, ENTAS1, ENTAS2, and ENTAS3.
  * Added shell commands for setting the I3C speed, sending HDR-DDR, raising IBIs,
    enabling IBIs, disabling IBIs, and scanning I2C addresses.
  * :c:func:`i3c_ccc_do_setdasa` has been modified to now require specifying the assigned
    dynamic address rather than having the dynamic address be determined within the function.
  * :c:func:`i3c_determine_default_addr` has been removed
  * ``attach_i3c_device`` now no longer requires the attached address as an argument. It is now
    up to the driver to determine the attached address from the ``i3c_device_desc``.

* Input

  * New feature: :dtcompatible:`zephyr,input-double-tap`.

  * New driver: :dtcompatible:`ilitek,ili2132a`.

  * Added power management support to all keyboard matrix drivers, added a
    ``no-disconnect`` property to :dtcompatible:`gpio-keys` so it can be used
    with power management on GPIO drivers that do not support pin
    disconnection.

  * Added a new framework for touchscreen common properties and features
    (screen size, inversion, xy swap).

  * Fixed broken ESP32 input touch sensor driver.

  * gt911:
    * Fixed the INT pin to be always set during probe to allow for proper initialization
    * Fixed OOB buffer write to touch points array
    * Add support for multitouch events

* Interrupt

  * Updated ESP32 family interrupt allocator with proper IRQ flags and priorities.
  * Implemented a function to set pending interrupts for Arm GIC
  * Added a safe configuration option so multiple OS'es can share the same GIC and avoid reconfiguring
    the distributor

* LED

  * lp5562: added ``enable-gpios`` property to describe the EN/VCC GPIO of the lp5562.

  * lp5569: added ``charge-pump-mode`` property to configure the charge pump of the lp5569.

  * lp5569: added ``enable-gpios`` property to describe the EN/PWM GPIO of the lp5569.

  * LED code samples have been consolidated under the :zephyr_file:`samples/drivers/led` directory.

* LED Strip

  * Updated ws2812 GPIO driver to support dynamic bus timings

* Mailbox

  * Added driver support for ESP32 and ESP32-S3 SoCs.

* MDIO

  * Added litex MDIO driver.
  * Added support for mdio shell to stm32 mdio.
  * Added mdio driver for dwc_xgmac synopsis ethernet.
  * Added NXP IMX NETC mdio driver.
  * NXP ENET MDIO: Fixed inconsistent behavior by keeping the mdio interrupt enabled all the time.

* MEMC

  * Add driver for APS6404L PSRAM using NXP FLEXSPI

* MFD

* Modem

  * Added support for the U-Blox LARA-R6 modem.
  * Added support for setting the modem's UART baudrate during init.

* MIPI-DBI

  * Added bitbang MIPI-DBI driver, supporting 8080 and 6800 mode
    (:dtcompatible:`zephyr,mipi-dbi-bitbang`).
  * Added support for STM32 FMC memory controller (:dtcompatible:`st,stm32-fmc-mipi-dbi`).
  * Added support for 8080 mode to NXP LCDIC controller (:dtcompatible:`nxp,lcdic`).
  * Fixed the calculation of the reset delay for NXP's LCD controller (:dtcompatible:`nxp,lcdic`)

* MIPI-CSI

  * Improve NXP CSI and MIPI_CSI2Rx drivers to support varibale frame rates

* Pin control

  * Added support for Microchip MEC5
  * Added SCMI-based driver for NXP i.MX
  * Added support for i.MX93 M33 core
  * Added support for ESP32C2
  * STM32: :kconfig:option:`CONFIG_PINCTRL` is now selected by drivers requiring it and
    shouldn't be enabled at board level anymore.

* PWM

  * rpi_pico: The driver now configures the divide ratio adaptively.
  * Added initial support for Renesas RA8 PWM driver (:dtcompatible:`renesas,ra8-pwm`)
  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-pwm`).
  * Fixed a build issue of the NXP TPM driver for variants without the capability to combine channels

* Regulators

  * Upgraded CP9314 driver to B1 silicon revision
  * Added basic driver for MPS MPM54304

* RTC

  * STM32: HSE can now be used as domain clock.
  * Added the NXP IRTC Driver.

* RTIO

* SAI

  * Improved NXP's SAI driver to use a default clock if none is provided in the DT
  * Fixed a bug in the NXP SAI driver that caused a crash on a FIFO under- and overrun
  * Fixed a bug that reset the NXP ESAI during initialization (unnecessary)
  * Added support for PM operations in NXP's SAI driver

* SDHC

  * Added ESP32-S3 driver support.
  * SPI SDHC driver now handles SPI devices with runtime PM support correctly
  * Improved NXP's imx SDHC driver to assume card is present if no detection method is provided

* Sensors

  * General

    * The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed to
      support all JEDEC JC 42.4 compatible temperature sensors. It now uses the
      :dtcompatible:`jedec,jc-42.4-temp` compatible string instead to the ``microchip,mcp9808``
      string.
    * Added support for VDD based ADC reference to the NTC thermistor driver.
    * Added Avago APDS9253 (:dtcompatible:`avago,apds9253`) and APDS9306
      (:dtcompatible:`avago,apds9306`) ambient light sensor drivers.
    * Added gain and resolution attributes (:c:enum:`SENSOR_ATTR_GAIN` and
      :c:enum:`SENSOR_ATTR_RESOLUTION`).

  * ADI

    * Add RTIO streaming support to ADXL345, ADXL362, and ADXL372 accelerometer drivers.

  * Bosch

    * Merged BMP390 into BMP388.
    * Added support for power domains to BMM150 and BME680 drivers.
    * Added BMP180 pressure sensor driver (:dtcompatible:`bosch,bmp180`).

  * Memsic

    * Added MMC56X3 magnetometer and temperature sensor driver (:dtcompatible:`memsic,mmc56x3`).

  * NXP

    * Added P3T1755 digital temperature sensor driver (:dtcompatible:`nxp,p3t1755`).
    * Added FXLS8974 accelerometer driver (:dtcompatible:`nxp,fxls8974`).

  * ST

    * Aligned drivers to stmemsc HAL i/f v2.6.
    * Added LSM9DS1 accelerometer/gyroscope/magnetometer sensor driver (:dtcompatible:`st,lsm9ds1`).

  * TDK

    * Added I2C bus support to ICM42670.

  * TI

    * Added support for INA236 to the existing INA230 driver.
    * Added support for TMAG3001 to the existing TMAG5273 driver.
    * Added TMP1075 temperature sensor driver (:dtcompatible:`ti,tmp1075`).

  * Vishay

    * Added trigger capability to VCNL36825T driver.

  * WE

    * Added Würth Elektronik HIDS-2525020210002
      :dtcompatible:`we,wsen-hids-2525020210002` humidity sensor driver.
    * Added general samples for triggers

* Serial

  * LiteX: Renamed the ``compatible`` from ``litex,uart0`` to :dtcompatible:`litex,uart`.
  * Nordic: Removed ``CONFIG_UART_n_GPIO_MANAGEMENT`` Kconfig options (where n is an instance
    index) which had no use after pinctrl driver was introduced.
  * NS16550: Added support for Synopsys Designware 8250 UART.
  * Renesas: Added support for SCI UART.
  * Sensry: Added UART support for Ganymed SY1XX.

* SPI

  * Added initial support for Renesas RA8 SPI driver (:dtcompatible:`renesas,ra8-spi-b`)
  * Added RTIO support to the Analog Devices MAX32 driver.
  * Silabs: Added support for EUSART (:dtcompatible:`silabs,gecko-spi-eusart`)

* Steppers

  * Introduced stepper controller device driver subsystem selected with
    :kconfig:option:`CONFIG_STEPPER`
  * Introduced stepper shell commands for controlling and configuring
    stepper motors with :kconfig:option:`CONFIG_STEPPER_SHELL`
  * Added support for ADI TMC5041 (:dtcompatible:`adi,tmc5041`)
  * Added support for gpio-stepper-controller (:dtcompatible:`zephyr,gpio-steppers`)
  * Added stepper api test-suite
  * Added stepper shell test-suite

* Timer

  * Silabs: Added support for Sleeptimer (:dtcompatible:`silabs,gecko-stimer`)

* USB

  * Added support for USB HS on STM32U59x/STM32U5Ax SoC variants.
  * Enhanced DWC2 UDC driver
  * Added UDC drivers for Smartbond, NuMaker USBD and RP2040 device controllers
  * Enabled SoF in NXP USB drivers (UDC)
  * Enabled cache maintenance in the NXP EHCI USB driver

* Video

  * Introduced API to control frame rate
  * Introduced API for partial frames transfer with the video buffer field ``line_offset``
  * Introduced API for :ref:`multi-heap<memory_management_shared_multi_heap>` video buffer allocation with
    :kconfig:option:`CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAP`
  * Introduced bindings for common video link properties in ``video-interfaces.yaml``. Migration to the
    new bindings is tracked in :github:`80514`
  * Introduced missing :kconfig:option:`CONFIG_VIDEO_LOG_LEVEL`
  * Added a sample for capturing video and displaying it with LVGL
    (:zephyr:code-sample:`video-capture-to-lvgl`)
  * Added an automatic test to check colorbar pattern correctness
  * Added support for GalaxyCore GC2145 image sensor (:dtcompatible:`galaxycore,gc2145`)
  * Added support for ESP32-S3 LCD-CAM interface (:dtcompatible:`espressif,esp32-lcd-cam`)
  * Added support for NXP MCUX SMARTDMA interface (:dtcompatible:`nxp,smartdma`)
  * Added support for more OmniVision OV2640 controls (:dtcompatible:`ovti,ov2640`)
  * Added support for more OmniVision OV5640 controls (:dtcompatible:`ovti,ov5640`)
  * STM32: Implemented :c:func:`video_get_ctrl` and :c:func:`video_set_ctrl` APIs.
  * Removed an init order circular dependency for the camera pipeline on NXP RT10xx platforms
    (:github:`80304`)
  * Added an NXP's smartdma based video driver (:dtcompatible:`nxp,video-smartdma`)
  * Added frame interval APIs to support variable frame rates (video_sw_generator.c)
  * Added image controls to the OV5640 driver

* W1

  * Added 1-Wire master driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-w1`)

* Watchdog

  * Added driver for Analog Devices MAX32 SoC series (:dtcompatible:`adi,max32-watchdog`).
  * Converted NXP S32 Software Watchdog Timer driver to native Zephyr code

* Wi-Fi

  * Add Wi-Fi Easy Connect (DPP) support.
  * Add support for Wi-Fi credentials library.
  * Add enterprise support for station.
  * Add Wi-Fi snippet support for networking samples.
  * Add build testing for various Wi-Fi config combinations.
  * Add regulatory domain support to Wi-Fi shell.
  * Add WPS support to Wi-Fi shell.
  * Add 802.11r connect command usage in Wi-Fi shell.
  * Add current PHY rate to hostap status message.
  * Allow user to reset Wi-Fi statistics in Wi-Fi shell.
  * Display RTS threshold in Wi-Fi shell.
  * Fix SSID array length size in scanning results.
  * Fix the "wifi ap config" command using the STA interface instead of SAP interface.
  * Fix memory leak in hostap when doing a disconnect.
  * Fix setting of frequency band both in AP and STA mode in Wi-Fi shell.
  * Fix correct channel scan range in Wi-Fi 6GHz.
  * Fix scan results printing in Wi-Fi shell.
  * Increase main and shell stack sizes for Wi-Fi shell sample.
  * Increase the maximum count of connected STA to 8 in Wi-Fi shell.
  * Relocate AP and STA Wi-Fi sample to samples/net/wifi directory.
  * Run Wi-Fi tests together with network tests.
  * Updated ESP32 Wi-Fi driver to reflect actual negotiated PHY mode.
  * Add ESP32-C2 Wi-Fi support.
  * Add ESP32 driver APSTA support.
  * Add NXP RW612 driver support.
  * Added nRF70 Wi-Fi driver.

Networking
**********

* 802.15.4:

  * Implemented support for beacons without association bit.
  * Implemented support for beacons payload.
  * Fixed a bug where LL address endianness was swapped twice when deciphering a frame.
  * Fixed missing context lock release when checking destination address.
  * Improved error logging in 6LoWPAN fragmentation.
  * Improved error logging in 802.15.4 management commands.

* ARP:

  * Fixed ARP probe verification during IPv4 address conflict detection.

* CoAP:

  * Added new API :c:func:`coap_rst_init` to simplify creating RST replies.
  * Implemented replying with CoAP RST response for unknown queries in CoAP client.
  * Added support for runtime configuration of ACK random factor parameter.
  * Added support for No Response CoAP option.
  * Added a new sample demonstrating downloading a resource with GET request.
  * Fixed handling of received CoAP RST reply in CoAP client.
  * Fixed socket error reporting to the application in CoAP client.
  * Fixed handling of response retransmissions in CoAP client.
  * Fixed a bug where CoAP block numbers were limited to ``uint8_t``.
  * Various fixes in the block transfer support in CoAP client.
  * Improved handling of truncated datagrams in CoAP client.
  * Improved thread safety of CoAP client.
  * Fixed missing ``static`` keyword in some internal functions.
  * Various other minor fixes in CoAP client.

* DHCPv4:

  * Added support for parsing multiple DNS servers received from DHCP server.
  * Added support for DNS Server option in DHCPv4 server.
  * Added support for Router option in DHCPv4 server.
  * Added support for application callback which allows to assign custom addresses
    in DHCPv4 server.
  * Fixed DNS server list allocation in DHCPv4 client.
  * Fixed a bug where system workqueue could be blocked indefinitely by DHCPv4 client.

* DHCPv6:

  * Fixed a bug where system workqueue could be blocked indefinitely by DHCPv6 client.

* DNS/mDNS/LLMNR:

  * Added support for collecting DNS statistics.
  * Added support for more error codes in :c:func:`zsock_gai_strerror`.
  * Fixed handling of DNS responses encoded with capital letters.
  * Fixed DNS dispatcher operation on multiple network interfaces.
  * Fixed error being reported for mDNS queries with query count equal to 0.
  * Various other minor fixes in DNS/mDNS implementations.

* Ethernet:

* gPTP/PTP:

  * Fixed handling of second overflow/underflow.
  * Fixed PTP clock adjusting with offset.

* HTTP:

  * Added support for specifying response headers and response code by the application.
  * Added support for netusb in the HTTP server sample.
  * Added support for accessing HTTP request headers from the application callback.
  * Added support for handling IPv4 connections over IPv6 socket in HTTP server.
  * Added support for creating HTTP server instances without specifying local host.
  * Added overlays to support HTTP over IEEE 802.15.4 for HTTP client and server
    samples.
  * Added support for static filesystem resources in HTTP server.
  * Fixed assertion in HTTP server sample when resource upload was aborted.
  * Refactored dynamic resource callback format for easier handling of short
    requests/replies.
  * Fixed possible busy-looping in case of errors in the HTTP server sample.
  * Fixed possible incorrect HTTP headers matching in HTTP server.
  * Refactored HTTP server sample to better demonstrate server use cases.
  * Fixed processing of multiple HTTP/1 requests over the same connection.
  * Improved HTTP server test coverage.
  * Various other minor fixes in HTTP server.

* IPv4:

  * Improved IGMP test coverage.
  * Fixed IGMPv2 queries processing when IGMPv3 is enabled.
  * Fixed :kconfig:option:`CONFIG_NET_NATIVE_IPV4` dependency for native IPv4 options.
  * Fix net_pkt leak in :c:func:`send_ipv4_fragment`.`
  * Fixed tx_pkts slab leak in send_ipv4_fragment

* IPv6:

  * Added a public header for Multicast Listener Discovery APIs.
  * Added new :c:func:`net_ipv6_addr_prefix_mask` API function.
  * Made IPv6 Router Solicitation timeout configurable.
  * Fixed endless IPv6 packet looping with both routing and VLAN support enabled.
  * Fixed unneeded error logging in case of dropped NS packets.
  * Fixed accepting of incoming DAD NS messages.
  * Various fixes improving IPv6 routing.
  * Added onlink and forwarding check to IPv6-prepare

* LwM2M:

  * Location object: optional resources altitude, radius, and speed can now be
    used optionally as per the location object's specification. Users of these
    resources will now need to provide a read buffer.
  * Added TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 to DTLS cipher list.
  * Added LwM2M shell command for listing resources.
  * Added LwM2M shell command to list observations.
  * Added support for accepting SenML-CBOR floats decoded as integers.
  * Added support for X509 hostname verification if using certificates, when
    URI contains valid name.
  * Regenerated generated code files using zcbor 0.9.0 for lwm2m_senml_cbor.
  * Improved thread safety of the LwM2M engine.
  * Fixed block transfer issues for composite operations.
  * Fixed enabler version reporting during bootstrap discovery.
  * Removed unneeded Security object instance from the LwM2M client sample.
  * Fixed buffer size check for U16 resource.
  * Removed deprecated APIs and configs.
  * Optional Location object resources altitude, radius, and speed can now be
    used optionally as per the location object's specification. Users of these
    resources will now need to provide a read buffer.
  * Fixed the retry counter not being reset on successful Registration update.
  * Fixed REGISTRATION_TIMEOUT event not always being emitted on registration
    errors.
  * Fixed c++ support in LwM2M public header.
  * Fixed a bug where DISCONNECTED event was not always emitted when needed.

* Misc:

  * Added support for network packet allocation statistics.
  * Added a new library implementing Prometheus monitoring support.
  * Added USB CDC NCM support for Echo Server sample.
  * Added packet drop statistics for capture interfaces.
  * Added new :c:func:`net_hostname_set_postfix_str` API function to set hostname
    postfix in non-hexadecimal format.
  * Added API version information to public networking headers.
  * Implemented optional periodic SNTP time resynchronization.
  * Improved error reporting when starting/stopping virtual interfaces.
  * Fixed build error of packet capture library when variable sized buffers are used.
  * Fixed build error of packet capture library when either IPv4 or IPv6 is disabled.
  * Fixed CMake complaint about missing sources in net library in certain
    configurations.
  * Fixed compilation issues with networking and SystemView Tracing enabled.
  * Removed redundant DHCPv4 code from telnet sample.
  * Fixed build warnings in Echo Client sample with IPv6 disabled.
  * Extended network tracing support and added documentation page
    (:ref:`network_tracing`).
  * Moved network buffers implementation out of net subsystem into lib directory
  * Removed ``wpansub`` sample.

* MQTT:

  * Updated information in the mqtt_publisher sample about Mosquitto broker
    configuration.
  * Updated MQTT tests to be self-contained, no longer requiring external broker.
  * Optimized buffer handling in MQTT encoder/decoder.

* Network contexts:

  * Fixed IPv4 destination address setting when using :c:func:`sendmsg` with
    :kconfig:option:`CONFIG_NET_IPV4_MAPPING_TO_IPV6` option enabled.
  * Fixed possible unaligned memory access when in :c:func:`net_context_bind`.
  * Fixed missing NULL pointer check for V6ONLY option read.

* Network Interface:

  * Added new :c:func:`net_if_ipv4_get_gw` API function.
  * Fixed checksum offloading checks for VLAN interfaces.
  * Fixed native IP support being required to  register IP addresses on an
    interface.
  * Fixed missing mutex locks in a few net_if functions.
  * Fixed rejoining of IPv6 multicast groups.
  * Fixed :c:func:`net_if_send_data` operation for offloaded interfaces.
  * Fixed needless IPv6 multicast groups joining if IPv6 is disabled.
  * Fixed compiler warnings when building with ``-Wtype-limits``.

* OpenThread:

  * Added support for :kconfig:option:`CONFIG_IEEE802154_SELECTIVE_TXCHANNEL`
    option in OpenThread radio platform.
  * Added NAT64 send and receive callbacks.
  * Added new Kconfig options:

    * :kconfig:option:`CONFIG_OPENTHREAD_NAT64_CIDR`
    * :kconfig:option:`CONFIG_OPENTHREAD_STORE_FRAME_COUNTER_AHEAD`
    * :kconfig:option:`CONFIG_OPENTHREAD_DEFAULT_RX_SENSITIVITY`
    * :kconfig:option:`CONFIG_OPENTHREAD_CSL_REQUEST_TIME_AHEAD`

  * Fixed deprecated/preferred IPv6 address state transitions.
  * Fixed handling of deprecated IPv6 addresses.
  * Other various minor fixes in Zephyr's OpenThread port.

* Shell:

  * Added support for enabling/disabling individual network shell commands with
    Kconfig.
  * Added new ``net dhcpv4/6 client`` commands for DHCPv4/6 client management.
  * Added new ``net virtual`` commands for virtual interface management.
  * ``net ipv4/6`` commands are now available even if native IP stack is disabled.
  * Added new ``net cm`` commands exposing Connection Manager functionality.
  * Fixed possible assertion if telnet shell backend connection is terminated.
  * Event monitor thread stack size is now configurable with Kconfig.
  * Relocated ``bridge`` command under ``net`` command, i. e. ``net bridge``.
  * Multiple minor improvements in various command outputs.

* Sockets:

  * Added dedicated ``net_socket_service_handler_t`` callback function type for
    socket services.
  * Added TLS 1.3 support for TLS sockets.
  * Fixed socket leak when closing NSOS socket.
  * Moved socket service library out of experimental.
  * Deprecated ``CONFIG_NET_SOCKETS_POLL_MAX``.
  * Moved ``zsock_poll()`` and ``zsock_select`` implementations into ``zvfs``
    library.
  * Removed ``work_q`` parameter from socket service macros as it was no longer
    used.
  * Separated native INET sockets implementation from socket syscalls so that
    it doesn't have to be built when offloaded sockets are used.
  * Fixed possible infinite block inside TLS socket :c:func:`zsock_connect` when
    peer goes down silently.
  * Fixed ``msg_controllen`` not being set correctly in :c:func:`zsock_recvmsg`.
  * Fixed possible busy-looping when polling TLS socket for POLLOUT event.

* TCP:

  * Fixed propagating connection errors to the socket layer.
  * Improved ACK reply logic when peer does not send PSH flag with data.

* Websocket:

  * Added support for Websocket console in the Echo Server sample.
  * Fixed undefined reference to ``MSG_DONTWAIT`` while building websockets
    without POSIX.

* Wi-Fi:

  * Add a 80211R fast BSS transition argument usage to the wifi shell's connect command.
  * Fixed the shell's ap config command using the sta interface area
  * Added AP configuration cmd support to the NXP Wifi drivers
  * Fixed the dormant state in the NXP WiFi driver to be set to off once a connection to an AP is achieved

* zperf:

  * Added support for USB CDC NCM in the zperf sample.
  * Fixed DHCPv4 client not being started in the zperf sample in certain
    configurations.

USB
***

* New USB device stack:

  * Added USB CDC Network Control Model implementation
  * Enhanced USB Audio class 2 implementation
  * Made USB device stack high-bandwidth aware
  * Enhanced CDC ACM and HID class implementations

Devicetree
**********

* Added support for string-array and array type properties to be enums.
  Many new macros added for this, for example :c:macro:`DT_ENUM_IDX_BY_IDX`.
* Added :c:macro:`DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY`.
* Added :c:macro:`DT_NODE_HAS_STATUS_OKAY`.
* Added :c:macro:`DT_INST_NUM_IRQS`.
* Added macros :c:macro:`DT_NODE_FULL_NAME_UNQUOTED`, :c:macro:`DT_NODE_FULL_NAME_TOKEN`,
  and :c:macro:`DT_NODE_FULL_NAME_UPPER_TOKEN`.
* ``DT_*_REG_ADDR`` now returns an explicit unsigned value with C's ``U`` suffix.
* Fixed escaping of double quotes, backslashes, and new line characters from DTS
  so that they can be used in string properties.
* Renamed ``power-domain`` base property to ``power-domains``,
  and introduced ``power-domain-names`` property. ``#power-domain-cells`` is now required as well.
* Moved the NXP Remote Domain Controller property to its own schema file

Kconfig
*******

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

* Debug

    * Added west runner for probe-rs, a Rust-based embedded toolkit.

* Demand Paging

  * Added LRU (Least Recently Used) eviction algorithm.

  * Added on-demand memory mapping support (:kconfig:option:`CONFIG_DEMAND_MAPPING`).

  * Made demand paging SMP compatible.

* Management

  * MCUmgr

    * Added support for :ref:`mcumgr_smp_group_10`, which allows for listing information on
      supported groups.
    * Fixed formatting of milliseconds in :c:enum:`OS_MGMT_ID_DATETIME_STR` by adding
      leading zeros.
    * Added support for custom os mgmt bootloader info responses using notification hooks, this
      can be enabled with :kconfig:option:`CONFIG_MCUMGR_GRP_OS_BOOTLOADER_INFO_HOOK`, the data
      structure is :c:struct:`os_mgmt_bootloader_info_data`.
    * Added support for img mgmt slot info command, which allows for listing information on
      images and slots on the device.
    * Added support for LoRaWAN MCUmgr transport, which can be enabled with
      :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_LORAWAN`.

  * hawkBit

    * :c:func:`hawkbit_autohandler` now takes one argument. If the argument is set to true, the
      autohandler will reshedule itself after running. If the argument is set to false, the
      autohandler will not reshedule itself. Both variants are scheduled independent of each other.
      The autohandler always runs in the system workqueue.

    * Use the :c:func:`hawkbit_autohandler_wait` function to wait for the autohandler to finish.

    * Running hawkBit from the shell is now executed in the system workqueue.

    * Use the :c:func:`hawkbit_autohandler_cancel` function to cancel the autohandler.

    * Use the :c:func:`hawkbit_autohandler_set_delay` function to delay the next run of the
      autohandler.

    * The hawkBit header file was separated into multiple header files. The main header file is now
      ``<zephyr/mgmt/hawkbit/hawkbit.h>``, the autohandler header file is now
      ``<zephyr/mgmt/hawkbit/autohandler.h>`` and the configuration header file is now
      ``<zephyr/mgmt/hawkbit/config.h>``.

* Power management

  * Added initial ESP32-C6 power management interface to allow light and deep-sleep features.

* Crypto

  * Mbed TLS was updated to version 3.6.2 (from 3.6.0). The release notes can be found at:

    * https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.1
    * https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.2

  * The Kconfig symbol :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG_ALLOW_NON_CSPRNG`
    was added to allow ``psa_get_random()`` to make use of non-cryptographically
    secure random sources when :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG`
    is also enabled. This is only meant to be used for test purposes, not in production.
    (:github:`76408`)
  * The Kconfig symbol :kconfig:option:`CONFIG_MBEDTLS_TLS_VERSION_1_3` was added to
    enable TLS 1.3 support from Mbed TLS. When this is enabled the following
    new Kconfig symbols can also be enabled:

    * :kconfig:option:`CONFIG_MBEDTLS_TLS_SESSION_TICKETS` to enable session tickets
      (RFC 5077);
    * :kconfig:option:`CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED`
      for TLS 1.3 PSK key exchange mode;
    * :kconfig:option:`CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED`
      for TLS 1.3 ephemeral key exchange mode;
    * :kconfig:option:`CONFIG_MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED`
      for TLS 1.3 PSK ephemeral key exchange mode.

* SD

  * No significant changes in this release

* Settings

  * Settings has been extended to allow prioritizing the commit handlers using
    ``SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(...)`` for static_handlers and
    ``settings_register_with_cprio(...)`` for dynamic_handlers.

* Shell:

  * Reorganized the ``kernel threads`` and ``kernel stacks`` shell command under the
    L1 ``kernel thread`` shell command as ``kernel thread list`` & ``kernel thread stacks``
  * Added multiple shell command to configure the CPU mask affinity / pinning a thread in
    runtime, do ``kernel thread -h`` for more info.
  * ``kernel reboot`` shell command without any additional arguments will now do a cold reboot
    instead of requiring you to type ``kernel reboot cold``.

* Storage

  * LittleFS: The module has been updated with changes committed upstream
    from version 2.8.1, the last module update, up to and including
    the released version 2.9.3.
  * Fixed static analysis error caused by mismatched variable assignment in NVS

  * LittleFS: Fixed an issue where the DTS option for configuring block cycles for LittleFS instances
    was ignored (:github:`79072`).

  * LittleFS: Fixed issue with lookahead buffer size mismatch to actual allocated buffer size
    (:github:`77917`).

  * FAT FS: Added :kconfig:option:`CONFIG_FILE_SYSTEM_LIB_LINK` to allow linking file system
    support libraries without enabling the File System subsystem. This option can be used
    when a user wants to directly use file system libraries, bypassing the File System
    subsystem.

  * FAT FS: Added :kconfig:option:`CONFIG_FS_FATFS_LBA64` to enable support for the 64-bit LBA
    and GPT in FAT file system driver.

  * FAT FS: Added :kconfig:option:`CONFIG_FS_FATFS_MULTI_PARTITION` that enables support for
    devices partitioned with GPT or MBR.

  * FAT FS: Added :kconfig:option:`CONFIG_FS_FATFS_HAS_RTC` that enables RTC usage for time-stamping
    files on FAT file systems.

  * FAT FS: Added :kconfig:option:`CONFIG_FS_FATFS_EXTRA_NATIVE_API` that enables additional FAT
    file system driver functions, which are not exposed via Zephyr File System subsystem,
    for users that intend to directly call them in their code.

  * Stream Flash: Fixed an issue where :c:func:`stream_flash_erase_page` did not properly check
    the requested erase range and possibly allowed erasing any page on a device (:github:`79800`).

  * Shell: Fixed an issue were a failed file system mount attempt using the shell would make it
    impossible to ever succeed in mounting that file system again until the device was reset (:github:`80024`).

  * :ref:`ZMS<zms_api>`: Introduction of a new storage system that is designed to work with all types of
    non-volatile storage technologies. It supports classical on-chip NOR flash as well as
    new technologies like RRAM and MRAM that do not require a separate erase operation at all.

* Task Watchdog

* Tracing

  * Added support for a "user event" trace, with the purpose to allow driver or
    application developers to quickly add tracing for events for debug purposes

* POSIX API

  * Added support for the following Option Groups:

    * :ref:`POSIX_DEVICE_IO <posix_option_group_device_io>`
    * :ref:`POSIX_SIGNALS <posix_option_group_signals>`

  * Added support for the following Options:

    * :ref:`_POSIX_SYNCHRONIZED_IO <posix_option_synchronized_io>`
    * :ref:`_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>`

  * :ref:`POSIX_FILE_SYSTEM <posix_option_group_file_system>` improvements:

    * Support for :c:macro:`O_TRUNC` flag in :c:func:`open()`.
    * Support for :c:func:`rmdir` and :c:func:`remove`.

  * :ref:`_POSIX_THREAD_SAFE_FUNCTIONS <posix_option_thread_safe_functions>` improvements:

    * Support for :c:func:`asctime_r`, :c:func:`ctime_r`, and :c:func:`localtime_r`.

  * :ref:`POSIX_THREADS_BASE <posix_option_group_threads_base>` improvements:

    * Use the :ref:`user mode semaphore API <semaphores_v2>` instead of the
      :ref:`spinlock API <smp_arch>` for pool synchronization.

* LoRa/LoRaWAN

* ZBus

* JWT (JSON Web Token)

  * The following new symbols were added to allow specifying both the signature
    algorithm and crypto library:

    * :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA` (default) RSA signature using the PSA Crypto API;
    * :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` RSA signature using Mbed TLS;
    * :kconfig:option:`CONFIG_JWT_SIGN_ECDSA_PSA` ECDSA signature using the PSA Crypto API.

    (:github:`79653`)

* Firmware

  * Introduced basic support for ARM's System Control and Management Interface, which includes:

    * Subset of clock management protocol commands
    * Subset of pin control protocol commands
    * Shared memory and mailbox-based transport

HALs
****

* Nordic

  * Updated nrfx to version 3.7.0.
  * Added OS agnostic parts of the nRF70 Wi-Fi driver.

* STM32

  * Updated STM32C0 to cube version V1.2.0.
  * Updated STM32F1 to cube version V1.8.6.
  * Updated STM32F2 to cube version V1.9.5.
  * Updated STM32F4 to cube version V1.28.1.
  * Updated STM32G4 to cube version V1.6.0.
  * Updated STM32H5 to cube version V1.3.0.
  * Updated STM32H7 to cube version V1.11.2.
  * Updated STM32H7RS to cube version V1.1.0.
  * Added STM32U0 Cube package (1.1.0)
  * Updated STM32U5 to cube version V1.6.0.
  * Updated STM32WB to cube version V1.20.0.
  * Added STM32WB0 Cube package (1.0.0)
  * Updated STM32WBA to cube version V1.4.1.

* ADI

* Espressif

  * Synced HAL to version v5.1.4 to update SoCs low level files, RF libraries and
    overall driver support.
* NXP

    * Updated the MCUX HAL to the SDK version 2.16.000
    * Updated the NXP S32ZE HAL drivers to version 2.0.0

* Silabs

  * Updated Series 2 to Simplicity SDK 2024.6, while Series 0/1 continue to use Gecko SDK 4.4.

MCUboot
*******

  * Removed broken target config header feature.
  * Removed ``image_index`` from ``boot_encrypt``.
  * Renamed boot_enc_decrypt to boot_decrypt_key.
  * Updated to use ``EXTRA_CONF_FILE`` instead of the deprecated ``OVERLAY_CONFIG`` argument.
  * Updated ``boot_encrypt()`` to instead be ``boot_enc_encrypt()`` and ``boot_enc_decrypt()``.
  * Updated ``boot_enc_valid`` to take slot instead of image index.
  * Updated ``boot_enc_load()`` to take slot number instead of image.
  * Updated logging to debug level in boot_serial.
  * Updated Kconfig to allow disabling NRFX_WDT on nRF devices.
  * Updated CMake ERROR statements into FATAL_ERROR.
  * Added application version that is being booted output prior to booting it.
  * Added sysbuild support to the hello-world sample.
  * Added SIG_PURE TLV to bootutil.
  * Added write block size checking to bootutil.
  * Added check for unexpected flash sector size.
  * Added SHA512 support to MCUboot code and support for calculating SHA512 hash in imgtool.
  * Added fallback to USB DFU option.
  * Added better mode selection checks to bootutil.
  * Added bootutil protected TLV size to image size check.
  * Added functionality to remove images with conflicting flags or where features are required
    that are not supported.
  * Added compressed image flags and TLVs to MCUboot, Kconfig options and support for generating
    compressed LZMA2 images with ARM thumb filter to imgtool.
  * Added image header verification before checking image.
  * Added state to ``boot_is_header_valid()`` function.
  * Added ``CONFIG_MCUBOOT_ENC_BUILTIN_KEY`` Kconfig option.
  * Added non-bootable flag to imgtool.
  * Added zephyr prefix to generated header path.
  * Added optional img mgmt slot info feature.
  * Added bootutil support for maximum image size details for additional images.
  * Added support for automatically calculating max sectors.
  * Added missing ``boot_enc_init()`` function.
  * Added support for keeping image encrypted in scratch area in bootutil.
  * Fixed serial recovery for NXP IMX.RT, LPC55x and MCXNx platforms
  * Fixed issue with public RSA signing in imgtool.
  * Fixed issue with ``boot_serial_enter()`` being defined but not used warning.
  * Fixed issue with ``main()`` in sample returning wrong type warning.
  * Fixed issue with using pointers in bootutil.
  * Fixed wrong usage of slot numbers in boot_serial.
  * Fixed slot info for directXIP/RAM load in bootutil.
  * Fixed bootutil issue with not zeroing AES and SHA-256 contexts with mbedTLS.
  * Fixed boot_serial ``format`` and ``incompatible-pointer-types`` warnings.
  * Fixed bootutil wrong definition of ``find_swap_count``.
  * Fixed bootutil swap move max app size calculation.
  * Fixed imgtool issue where getpub failed for ed25519 key.
  * Fixed issue with sysbuild if something else is named mcuboot.
  * Fixed RAM load chain load address.
  * Fixed issue with properly retrieving image headers after interrupted swap-scratch in bootutil.
  * The MCUboot version in this release is version ``2.1.0+0-dev``.
  * Add the following nxp boards as test targets area: ``frdm_ke17z``, ``frdm_ke17z512``,
    ``rddrone_fmuk66``, ``twr_ke18f``, ``frdm_mcxn947/mcxn947/cpu0``

OSDP
****

Trusted Firmware-M (TF-M)
*************************

* TF-M was updated to version 2.1.1 (from 2.1.0).
  The release notes can be found at: https://trustedfirmware-m.readthedocs.io/en/tf-mv2.1.1/releases/2.1.1.html

Nanopb
******

* Updated the nanopb module to version 0.4.9.
  Full release notes at https://github.com/nanopb/nanopb/blob/0.4.9/CHANGELOG.txt

LVGL
****

* Added definition of ``LV_ATTRIBUTE_MEM_ALIGN`` so library internal data structures can be aligned
  to a specific boundary.
* Provided alignment definition to accommodate the alignment requirement of some GPU's

zcbor
*****

* Updated the zcbor library to version 0.9.0.
  Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md
  Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md
  Highlights:

    * Many code generation bugfixes

    * You can now decide at run-time whether the decoder should enforce canonical encoding.

    * Allow --file-header to accept a path to a file with header contents

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

* Together with the deprecation of ``native_posix``, many tests which were
  explicitly run in native_posix now run in :zephyr:board:`native_sim<native_sim>` instead.
  native_posix as a platform remains tested though.
* Extended the tests of counter_basic_api with a testcase for counters without alarms
* Added support for testing SDMMC devices to the fatfs API test
* Extended net/vlan to add IPv6 prefix config to each vlan-iface
* Enhanced the camera fixture test by adding a color bar to enable automation
* Added a number crunching (maths such as FFT, echo cancellation) sample using an optimized
  library for the NXP ADSP board
* Tailored the SPI_LOOPBACK test to the limitations of NXP Kinetis MCU's
* Enabled the video sample to run video capture (samples/drivers/video)

* Added :zephyr:code-sample:`smf_calculator` sample demonstrating the usage of the State Machine framework
  in combination with LVGL to create a simple calculator application.
* Consolidated display sample where possible to use a single testcase for all shields

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

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

- :github:`71042` stream_flash: stream_flash_init() size parameter allows to ignore partition layout
- :github:`67407` stream_flash: stream_flash_erase_page allows to accidentally erase stream
- :github:`80875` stepper_api: incorrect c-prototype stepper.h and absence of NULL check stepper_shell.c

---

### Doc Releases Release Notes 4.1 (`doc/releases/release-notes-4.1.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.1:

Zephyr 4.1.0
############

We are pleased to announce the release of Zephyr version 4.1.0.
Major enhancements with this release include:

**Performance improvements**
  Multiple performance improvements of core Zephyr kernel functions have been implemented,
  benefiting all supported hardware architectures.

  An official port of the :zephyr_file:`thread_metric <tests/benchmarks/thread_metric>` RTOS
  benchmark has also been added to make it easier for developers to measure the performance of
  Zephyr on their hardware and compare it to other RTOSes.

**Experimental support for IAR compiler**
  :ref:`toolchain_iar_arm` can now be used to build Zephyr applications. This is an experimental
  feature that is expected to be improved in future releases.

**Initial support for Rust on Zephyr**
  It is now possible to write Zephyr applications in Rust. :ref:`language_rust` is available through
  an optional Zephyr module, and several code samples are available as a starting point.

**USB MIDI Class Driver**
  Introduction of a new :ref:`USB MIDI 2.0 <usbd_midi2>` device driver, allowing Zephyr devices to
  communicate with MIDI controllers and instruments over USB.

**Expanded Board Support**
  Support for 70 :ref:`new boards <boards_added_in_zephyr_4_1>` and 11
  :ref:`new shields <shields_added_in_zephyr_4_1>` has been added in this release.

  This includes highly popular boards such as :zephyr:board:`rpi_pico2` and
  :zephyr:board:`ch32v003evt`, several boards with CAN+USB capabilities making them good candidates
  for running the Zephyr-based open source `CANnectivity`_ firmware, and dozens of other boards
  across all supported architectures.

.. _CANnectivity: https://cannectivity.org/

An overview of the changes required or recommended when migrating your application from Zephyr
v4.0.0 to Zephyr v4.1.0 can be found in the separate :ref:`migration guide<migration_4.1>`.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* :cve:`2025-1673` `Zephyr project bug tracker GHSA-jjhx-rrh4-j8mx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jjhx-rrh4-j8mx>`_

* :cve:`2025-1674` `Zephyr project bug tracker GHSA-x975-8pgf-qh66
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x975-8pgf-qh66>`_

* :cve:`2025-1675` `Zephyr project bug tracker GHSA-2m84-5hfw-m8v4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2m84-5hfw-m8v4>`_

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

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

Removed APIs and options
========================

* The legacy Bluetooth HCI driver API has been removed. It has been replaced
  by a :c:group:`new API<bt_hci_api>` that follows the normal Zephyr driver
  model.

* The ``CAN_MAX_STD_ID`` (replaced by :c:macro:`CAN_STD_ID_MASK`) and
  ``CAN_MAX_EXT_ID`` (replaced by :c:macro:`CAN_EXT_ID_MASK`) CAN API macros
  have been removed.

* The ``can_get_min_bitrate()`` (replaced by :c:func:`can_get_bitrate_min`)
  and ``can_get_max_bitrate()`` (replaced by :c:func:`can_get_bitrate_max`)
  CAN API functions have been removed.

* The ``can_calc_prescaler()`` CAN API function has been removed.

* The :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` option has been
  removed.  It was a legacy option and was used to allow user to call BSD
  socket API while not enabling POSIX API.  This removal means that in order
  to use POSIX API socket calls, one needs to enable the
  :kconfig:option:`CONFIG_POSIX_API` option.  If the application does not want
  or is not able to enable that option, then the socket API calls need to be
  prefixed by a ``zsock_`` string.

* Removed ``video_pix_fmt_bpp()`` function that was returning a *byte* count
  and only supported 8-bit depth to :c:func:`video_bits_per_pixel()` returning
  the *bit* count and supporting any color depth.

* The ``video_stream_start()`` and ``video_stream_stop()`` driver APIs have been
  replaced by ``video_set_stream()``.

* :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO`

* The :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE` option has been removed
  after being deprecated in favor of :kconfig:option:`CONFIG_PM_DEVICE_SYSTEM_MANAGED`.

* The ``z_pm_save_idle_exit()`` PM API function has been removed.

* Struct ``z_arch_esf_t`` has been removed. Use ``struct arch_esf`` instead.

* The following networking options have been removed:

    * ``CONFIG_NET_PKT_BUF_DATA_POOL_SIZE``
    * ``CONFIG_NET_TCP_ACK_TIMEOUT``


Deprecated APIs and options
===========================

* the :c:func:`bt_le_set_auto_conn` API function. Application developers can achieve
  the same functionality in their application code by reconnecting to the peer when the
  :c:member:`bt_conn_cb.disconnected` callback is invoked.

* :kconfig:option:`CONFIG_NATIVE_APPLICATION` has been deprecated.

* Deprecated the :c:func:`stream_flash_erase_page` from Stream Flash API. The same functionality
  can be achieved using :c:func:`flash_area_erase` or :c:func:`flash_erase`. Nevertheless
  erasing of a device, while stream flash is supposed to do so, as configured, will result in
  data lost from stream flash. There are only two situations where device should be erased
  directly:

  1. when Stream Flash is not configured to do erase on its own
  2. when erase is used for removal of a data prior or after Stream Flash uses the designated area.

* The pipe API has been reworked.
  The new API is enabled by default when ``CONFIG_MULTITHREADING`` is set.

  * Deprecates the ``CONFIG_PIPES`` Kconfig option.
  * Introduces the ``k_pipe_close(..)`` function.
  * ``k_pipe_put(..)`` translates to ``k_pipe_write(..)``.
  * ``k_pipe_get(..)`` translates to ``k_pipe_read(..)``.
  * ``k_pipe_flush(..)`` & ``k_pipe_buffer_flush()`` can be translated to ``k_pipe_reset(..)``.

  * Dynamic allocation of pipes is no longer supported.

    - ``k_pipe_alloc_init(..)`` API has been removed.
    - ``k_pipe_cleanup(..)`` API has been removed.

  * Querying the number of bytes in the pipe is no longer supported.

    - ``k_pipe_read_avail(..)`` API has been removed.
    - ``k_pipe_write_avail(..)`` API has been removed.


* For the native_sim target :kconfig:option:`CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT` has been
  switched to ``n`` by default, and this option has been deprecated.

* :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT`

* All HWMv1 board name aliases which were added as deprecated in v3.7 are now removed
  (:github:`82247`).

* The TinyCrypt library has been deprecated as the upstream version is no longer maintained.
  PSA Crypto API is now the recommended cryptographic library for Zephyr.

* The :kconfig:option:`CONFIG_BT_DIS_MODEL` and :kconfig:option:`CONFIG_BT_DIS_MANUF` have been
  deprecated. Application developers can achieve the same configuration by using the new
  :kconfig:option:`CONFIG_BT_DIS_MODEL_NUMBER_STR` and
  :kconfig:option:`CONFIG_BT_DIS_MANUF_NAME_STR` Kconfig options.

New APIs and options
====================

..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

* Architectures

  * :kconfig:option:`CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL`
  * :kconfig:option:`CONFIG_RISCV_CURRENT_VIA_GP`

* Bluetooth

  * Audio

    * :c:func:`bt_bap_broadcast_source_register_cb`
    * :c:func:`bt_bap_broadcast_source_unregister_cb`
    * :c:func:`bt_cap_commander_distribute_broadcast_code`
    * ``bt_ccp`` API (in progress)
    * :c:func:`bt_pacs_register`
    * :c:func:`bt_pacs_unregister`

  * Host

    * :c:func:`bt_conn_is_type`

  * Mesh

    * :c:member:`bt_mesh_health_cli::update` callback can be used to periodically update the message
      published by the Health Client.

  * Services

    * The :kconfig:option:`CONFIG_BT_DIS_MODEL_NUMBER` and
      :kconfig:option:`CONFIG_BT_DIS_MANUF_NAME` Kconfig options can be used to control the
      presence of the Model Number String and Manufacturer Name String characteristics inside
      the Device Information Service (DIS). The :kconfig:option:`CONFIG_BT_DIS_MODEL_NUMBER_STR`
      and :kconfig:option:`CONFIG_BT_DIS_MANUF_NAME_STR` Kconfig options are now used to set the
      string values in these characteristics. They replace the functionality of the deprecated
      :kconfig:option:`CONFIG_BT_DIS_MODEL` and :kconfig:option:`CONFIG_BT_DIS_MANUF` Kconfigs.

* Build system

  * Sysbuild

    * The newly introduced MCUboot swap using offset mode can be selected from sysbuild by using
      ``SB_CONFIG_MCUBOOT_MODE_SWAP_USING_OFFSET``, this mode is experimental.

* Crypto

  * :kconfig:option:`CONFIG_MBEDTLS_PSA_STATIC_KEY_SLOTS`
  * :kconfig:option:`CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT`

* I3C

  * :kconfig:option:`CONFIG_I3C_TARGET_BUFFER_MODE`
  * :kconfig:option:`CONFIG_I3C_RTIO`
  * :c:func:`i3c_ibi_hj_response`
  * :c:func:`i3c_ccc_do_getacccr`
  * :c:func:`i3c_device_controller_handoff`

* Management

  * hawkBit

    * The hawkBit subsystem now uses the State Machine Framework internally.
    * :kconfig:option:`CONFIG_HAWKBIT_TENANT`
    * :kconfig:option:`CONFIG_HAWKBIT_EVENT_CALLBACKS`
    * :kconfig:option:`CONFIG_HAWKBIT_SAVE_PROGRESS`

  * MCUmgr

    * Image management :c:macro:`MGMT_EVT_OP_IMG_MGMT_DFU_CONFIRMED` now has image data field
      :c:struct:`img_mgmt_image_confirmed`.

* MCUboot

  * Signed hex files where an encryption key Kconfig is set now have the encrypted flag set in
    the image header.

* Networking:

  * CoAP

    * :c:func:`coap_client_cancel_request`

  * DHCP

    * :kconfig:option:`CONFIG_NET_DHCPV4_SERVER_OPTION_ROUTER`
    * :kconfig:option:`CONFIG_NET_DHCPV4_OPTION_DNS_ADDRESS`
    * :kconfig:option:`CONFIG_NET_DHCPV6_OPTION_DNS_ADDRESS`

  * DNS

    * :kconfig:option:`CONFIG_MDNS_RESPONDER_PROBE`

  * Ethernet

    * Allow user to specify protocol extensions when receiving data from Ethernet network.
      This makes it possible to register a handler for Ethernet protocol type without changing
      core Zephyr network code. :c:macro:`NET_L3_REGISTER`
    * :kconfig:option:`CONFIG_NET_L2_ETHERNET_RESERVE_HEADER`

  * HTTP

    * Extended :c:macro:`HTTP_SERVICE_DEFINE` to allow to specify a default
      fallback resource handler.
    * :kconfig:option:`CONFIG_HTTP_SERVER_REPORT_FAILURE_REASON`
    * :kconfig:option:`CONFIG_HTTP_SERVER_TLS_USE_ALPN`

  * IPv4

    * :kconfig:option:`CONFIG_NET_IPV4_PMTU`

  * IPv6

    * :kconfig:option:`CONFIG_NET_IPV6_PMTU`

  * LwM2M

    * :c:func:`lwm2m_pull_context_set_sockopt_callback`

  * MQTT-SN

    * Added Gateway Advertisement and Discovery support:

      * :c:func:`mqtt_sn_add_gw`
      * :c:func:`mqtt_sn_search`

  * OpenThread

    * :kconfig:option:`CONFIG_OPENTHREAD_WAKEUP_COORDINATOR`
    * :kconfig:option:`CONFIG_OPENTHREAD_WAKEUP_END_DEVICE`
    * :kconfig:option:`CONFIG_OPENTHREAD_PLATFORM_MESSAGE_MANAGEMENT`
    * :kconfig:option:`CONFIG_OPENTHREAD_TCAT_MULTIRADIO_CAPABILITIES`

  * Sockets

    * Added support for new socket options:

      * :c:macro:`IP_LOCAL_PORT_RANGE`
      * :c:macro:`IP_MULTICAST_IF`
      * :c:macro:`IPV6_MULTICAST_IF`
      * :c:macro:`IP_MTU`
      * :c:macro:`IPV6_MTU`

  * Other

    * :kconfig:option:`CONFIG_NET_STATISTICS_VIA_PROMETHEUS`

* Video

  * :c:func:`video_set_stream()` driver API has replaced :c:func:`video_stream_start()` and
    :c:func:`video_stream_stop()` driver APIs.

* Other

  * :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA`
  * :c:macro:`DT_ANY_INST_HAS_BOOL_STATUS_OKAY`
  * :c:struct:`led_dt_spec`
  * :kconfig:option:`CONFIG_STEP_DIR_STEPPER`

.. _boards_added_in_zephyr_4_1:

New Boards
**********
..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.

* Adafruit Industries, LLC

   * :zephyr:board:`adafruit_feather_m4_express` (``adafruit_feather_m4_express``)
   * :zephyr:board:`adafruit_macropad_rp2040` (``adafruit_macropad_rp2040``)
   * :zephyr:board:`adafruit_qt_py_esp32s3` (``adafruit_qt_py_esp32s3``)

* Advanced Micro Devices (AMD), Inc.

   * :zephyr:board:`acp_6_0_adsp` (``acp_6_0_adsp``)

* Analog Devices, Inc.

   * :zephyr:board:`ad_swiot1l_sl` (``ad_swiot1l_sl``)
   * :zephyr:board:`max32650evkit` (``max32650evkit``)
   * :zephyr:board:`max32650fthr` (``max32650fthr``)
   * :zephyr:board:`max32660evsys` (``max32660evsys``)
   * :zephyr:board:`max78000evkit` (``max78000evkit``)
   * :zephyr:board:`max78000fthr` (``max78000fthr``)
   * :zephyr:board:`max78002evkit` (``max78002evkit``)

* Antmicro

   * :zephyr:board:`myra_sip_baseboard` (``myra_sip_baseboard``)

* BeagleBoard.org Foundation

   * :zephyr:board:`beagley_ai` (``beagley_ai``)

* FANKE Technology Co., Ltd.

   * :zephyr:board:`fk750m1_vbt6` (``fk750m1_vbt6``)

* Google, Inc.

   * :zephyr:board:`google_icetower` (``google_icetower``)
   * :zephyr:board:`google_quincy` (``google_quincy``)

* Infineon Technologies

   * :zephyr:board:`cy8ckit_062s2_ai` (``cy8ckit_062s2_ai``)

* Khadas

   * :zephyr:board:`khadas_edge2` (``khadas_edge2``)

* Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd

   * :zephyr:board:`ttgo_t7v1_5` (``ttgo_t7v1_5``)
   * :zephyr:board:`ttgo_t8s3` (``ttgo_t8s3``)

* M5Stack

   * :zephyr:board:`m5stack_cores3` (``m5stack_cores3``)

* Makerbase Co., Ltd.

   * :zephyr:board:`mks_canable_v20` (``mks_canable_v20``)

* MediaTek Inc.

   * MT8186 (``mt8186``)
   * MT8188 (``mt8188``)
   * MT8196 (``mt8196``)

* NXP Semiconductors

   * :zephyr:board:`frdm_mcxw72` (``frdm_mcxw72``)
   * :zephyr:board:`imx91_evk` (``imx91_evk``)
   * :zephyr:board:`mcxw72_evk` (``mcxw72_evk``)
   * :zephyr:board:`mimxrt700_evk` (``mimxrt700_evk``)

* Nordic Semiconductor

   * nRF54L09 PDK (``nrf54l09pdk``)

* Norik Systems

   * :zephyr:board:`octopus_io_board` (``octopus_io_board``)
   * :zephyr:board:`octopus_som` (``octopus_som``)

* Panasonic Corporation

   * PAN B511 Evaluation Board (``panb511evb``)

* Peregrine Consultoria e Servicos

   * :zephyr:board:`sam4l_wm400_cape` (``sam4l_wm400_cape``)

* Qorvo, Inc.

   * :zephyr:board:`decawave_dwm3001cdk` (``decawave_dwm3001cdk``)

* RAKwireless Technology Limited

   * :zephyr:board:`rak3172` (``rak3172``)

* Raspberry Pi Foundation

   * :zephyr:board:`rpi_pico2` (``rpi_pico2``)

* Realtek Semiconductor Corp.

   * :zephyr:board:`rts5912_evb` (``rts5912_evb``)

* Renesas Electronics Corporation

   * :zephyr:board:`ek_ra2l1` (``ek_ra2l1``)
   * :zephyr:board:`ek_ra4l1` (``ek_ra4l1``)
   * :zephyr:board:`ek_ra4m1` (``ek_ra4m1``)
   * :zephyr:board:`fpb_ra4e1` (``fpb_ra4e1``)
   * :zephyr:board:`rzg3s_smarc` (``rzg3s_smarc``)
   * :zephyr:board:`voice_ra4e1` (``voice_ra4e1``)

* STMicroelectronics

   * :zephyr:board:`nucleo_c071rb` (``nucleo_c071rb``)
   * :zephyr:board:`nucleo_f072rb` (``nucleo_f072rb``)
   * :zephyr:board:`nucleo_h7s3l8` (``nucleo_h7s3l8``)
   * :zephyr:board:`nucleo_n657x0_q` (``nucleo_n657x0_q``)
   * :zephyr:board:`nucleo_wb07cc` (``nucleo_wb07cc``)
   * :zephyr:board:`stm32f413h_disco` (``stm32f413h_disco``)
   * :zephyr:board:`stm32n6570_dk` (``stm32n6570_dk``)

* Seeed Technology Co., Ltd

   * :zephyr:board:`xiao_esp32c6` (``xiao_esp32c6``)

* Shenzhen Fuyuansheng Electronic Technology Co., Ltd.

   * :zephyr:board:`ucan` (``ucan``)

* Silicon Laboratories

   * :zephyr:board:`siwx917_rb4338a` (``siwx917_rb4338a``)
   * :zephyr:board:`xg23_rb4210a` (``xg23_rb4210a``)
   * :zephyr:board:`xg24_ek2703a` (``xg24_ek2703a``)
   * :zephyr:board:`xg29_rb4412a` (``xg29_rb4412a``)

* Texas Instruments

   * :zephyr:board:`lp_em_cc2340r5` (``lp_em_cc2340r5``)

* Toradex AG

   * :zephyr:board:`verdin_imx8mm` (``verdin_imx8mm``)

* Waveshare Electronics

   * :zephyr:board:`rp2040_zero` (``rp2040_zero``)

* WeAct Studio

   * :zephyr:board:`mini_stm32h7b0` (``mini_stm32h7b0``)
   * WeAct Studio STM32H5 Core Board (``weact_stm32h5_core``)

* WinChipHead

   * :zephyr:board:`ch32v003evt` (``ch32v003evt``)

* Würth Elektronik GmbH.

   * :zephyr:board:`we_oceanus1ev` (``we_oceanus1ev``)
   * :zephyr:board:`we_orthosie1ev` (``we_orthosie1ev``)

* Others

   * :zephyr:board:`canbardo` (``canbardo``)
   * :zephyr:board:`candlelight` (``candlelight``)
   * :zephyr:board:`candlelightfd` (``candlelightfd``)
   * :zephyr:board:`esp32c3_supermini` (``esp32c3_supermini``)
   * :zephyr:board:`promicro_nrf52840` (``promicro_nrf52840``)

.. _shields_added_in_zephyr_4_1:

New shields
============

  * :ref:`Abrobot ESP32 C3 OLED Shield <abrobot_esp32c3oled_shield>`
  * :ref:`Adafruit Adalogger Featherwing Shield <adafruit_adalogger_featherwing_shield>`
  * :ref:`Adafruit AW9523 GPIO Expander and LED Driver <adafruit_aw9523>`
  * :ref:`MikroElektronika ETH 3 Click <mikroe_eth3_click>`
  * :ref:`P3T1755DP Arduino® Shield Evaluation Board <p3t1755dp_ard_i2c_shield>`
  * :ref:`P3T1755DP Arduino® Shield Evaluation Board <p3t1755dp_ard_i3c_shield>`
  * :ref:`Digilent Pmod SD <pmod_sd>`
  * :ref:`Renesas DA14531 Pmod Board <renesas_us159_da14531evz_shield>`
  * :ref:`RTKMIPILCDB00000BE MIPI Display <rtkmipilcdb00000be>`
  * :ref:`Seeed W5500 Ethernet Shield <seeed_w5500>`
  * :ref:`ST B-CAMS-OMV-MB1683 <st_b_cams_omv_mb1683>`

New Drivers
***********
..
  Same as above for boards, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description

* :abbr:`ADC (Analog to Digital Converter)`

   * :dtcompatible:`adi,ad4114-adc`
   * :dtcompatible:`adi,ad7124-adc`
   * :dtcompatible:`st,stm32n6-adc`
   * :dtcompatible:`ti,ads114s06`
   * :dtcompatible:`ti,ads124s06`
   * :dtcompatible:`ti,ads124s08`
   * :dtcompatible:`ti,ads131m02`
   * :dtcompatible:`ti,tla2022`
   * :dtcompatible:`ti,tla2024`

* ARM architecture

   * :dtcompatible:`nxp,nbu`

* Audio

   * :dtcompatible:`cirrus,cs43l22`
   * :dtcompatible:`intel,adsp-mic-privacy`

* Bluetooth

   * :dtcompatible:`renesas,bt-hci-da1453x`
   * :dtcompatible:`silabs,siwx91x-bt-hci`
   * :dtcompatible:`st,hci-stm32wb0`

* Charger

   * :dtcompatible:`nxp,pf1550-charger`

* Clock control

   * :dtcompatible:`atmel,sam0-gclk`
   * :dtcompatible:`atmel,sam0-mclk`
   * :dtcompatible:`atmel,sam0-osc32kctrl`
   * :dtcompatible:`nordic,nrf-hsfll-global`
   * :dtcompatible:`nuvoton,npcm-pcc`
   * :dtcompatible:`realtek,rts5912-sccon`
   * :dtcompatible:`renesas,rz-cpg`
   * :dtcompatible:`st,stm32n6-cpu-clock-mux`
   * :dtcompatible:`st,stm32n6-hse-clock`
   * :dtcompatible:`st,stm32n6-ic-clock-mux`
   * :dtcompatible:`st,stm32n6-pll-clock`
   * :dtcompatible:`st,stm32n6-rcc`
   * :dtcompatible:`wch,ch32v00x-hse-clock`
   * :dtcompatible:`wch,ch32v00x-hsi-clock`
   * :dtcompatible:`wch,ch32v00x-pll-clock`
   * :dtcompatible:`wch,rcc`

* Comparator

   * :dtcompatible:`silabs,acmp`

* Counter

   * :dtcompatible:`adi,max32-rtc-counter`
   * :dtcompatible:`renesas,rz-gtm-counter`

* CPU

   * :dtcompatible:`wch,qingke-v2`

* :abbr:`DAC (Digital to Analog Converter)`

   * :dtcompatible:`adi,max22017-dac`
   * :dtcompatible:`renesas,ra-dac`
   * :dtcompatible:`renesas,ra-dac-global`

* :abbr:`DAI (Digital Audio Interface)`

   * :dtcompatible:`mediatek,afe`
   * :dtcompatible:`nxp,dai-micfil`

* Display

   * :dtcompatible:`ilitek,ili9806e-dsi`
   * :dtcompatible:`renesas,ra-glcdc`
   * :dtcompatible:`solomon,ssd1309fb`

* :abbr:`DMA (Direct Memory Access)`

   * :dtcompatible:`infineon,cat1-dma`
   * :dtcompatible:`nxp,sdma`
   * :dtcompatible:`silabs,ldma`
   * :dtcompatible:`silabs,siwx91x-dma`
   * :dtcompatible:`xlnx,axi-dma-1.00.a`
   * :dtcompatible:`xlnx,eth-dma`

* :abbr:`DSA (Distributed Switch Architecture)`

   * :dtcompatible:`nxp,netc-switch`

* :abbr:`EEPROM (Electrically Erasable Programmable Read-Only Memory)`

  *  :dtcompatible:`fujitsu,mb85rsxx`

* Ethernet

   * :dtcompatible:`davicom,dm8806-phy`
   * :dtcompatible:`microchip,lan9250`
   * :dtcompatible:`microchip,t1s-phy`
   * :dtcompatible:`microchip,vsc8541`
   * :dtcompatible:`renesas,ra-ethernet`
   * :dtcompatible:`sensry,sy1xx-mac`

* Firmware

   * :dtcompatible:`arm,scmi-power`

* Flash controller

   * :dtcompatible:`silabs,siwx91x-flash-controller`
   * :dtcompatible:`ti,cc23x0-flash-controller`

* :abbr:`FPGA (Field Programmable Gate Array)`

   * :dtcompatible:`lattice,ice40-fpga-base`
   * :dtcompatible:`lattice,ice40-fpga-bitbang`

* :abbr:`GPIO (General Purpose Input/Output)`

   * :dtcompatible:`adi,max22017-gpio`
   * :dtcompatible:`adi,max22190-gpio`
   * :dtcompatible:`awinic,aw9523b-gpio`
   * :dtcompatible:`ite,it8801-gpio`
   * :dtcompatible:`microchip,mec5-gpio`
   * :dtcompatible:`nordic,npm2100-gpio`
   * :dtcompatible:`nxp,pca6416`
   * :dtcompatible:`raspberrypi,rp1-gpio`
   * :dtcompatible:`realtek,rts5912-gpio`
   * :dtcompatible:`renesas,ra-gpio-mipi-header`
   * :dtcompatible:`renesas,rz-gpio`
   * :dtcompatible:`renesas,rz-gpio-int`
   * :dtcompatible:`sensry,sy1xx-gpio`
   * :dtcompatible:`silabs,siwx91x-gpio`
   * :dtcompatible:`silabs,siwx91x-gpio-port`
   * :dtcompatible:`silabs,siwx91x-gpio-uulp`
   * :dtcompatible:`st,dcmi-camera-fpu-330zh`
   * :dtcompatible:`st,mfxstm32l152`
   * :dtcompatible:`stemma-qt-connector`
   * :dtcompatible:`ti,cc23x0-gpio`
   * :dtcompatible:`wch,gpio`

* IEEE 802.15.4 HDLC RCP interface

   * :dtcompatible:`nxp,hdlc-rcp-if`
   * :dtcompatible:`uart,hdlc-rcp-if`

* :abbr:`I2C (Inter-Integrated Circuit)`

   * :dtcompatible:`nordic,nrf-twis`
   * :dtcompatible:`nxp,ii2c`
   * :dtcompatible:`ti,omap-i2c`
   * :dtcompatible:`ti,tca9544a`

* :abbr:`I3C (Improved Inter-Integrated Circuit)`

   * :dtcompatible:`snps,designware-i3c`
   * :dtcompatible:`st,stm32-i3c`

* IEEE 802.15.4

   * :dtcompatible:`nxp,mcxw-ieee802154`

* Input

   * :dtcompatible:`cypress,cy8cmbr3xxx`
   * :dtcompatible:`ite,it8801-kbd`
   * :dtcompatible:`microchip,cap12xx`
   * :dtcompatible:`nintendo,nunchuk`

* Interrupt controller

   * :dtcompatible:`renesas,rz-ext-irq`
   * :dtcompatible:`wch,pfic`

* Mailbox

   * :dtcompatible:`linaro,ivshmem-mbox`
   * :dtcompatible:`ti,omap-mailbox`

* :abbr:`MDIO (Management Data Input/Output)`

   * :dtcompatible:`microchip,lan865x-mdio`
   * :dtcompatible:`renesas,ra-mdio`
   * :dtcompatible:`sensry,sy1xx-mdio`

* Memory controller

   * :dtcompatible:`renesas,ra-sdram`

* :abbr:`MFD (Multi-Function Device)`

   * :dtcompatible:`adi,max22017`
   * :dtcompatible:`awinic,aw9523b`
   * :dtcompatible:`ite,it8801-altctrl`
   * :dtcompatible:`ite,it8801-mfd`
   * :dtcompatible:`ite,it8801-mfd-map`
   * :dtcompatible:`maxim,ds3231-mfd`
   * :dtcompatible:`nordic,npm2100`
   * :dtcompatible:`nxp,pf1550`

* :abbr:`MIPI DSI (Mobile Industry Processor Interface Display Serial Interface)`

   * :dtcompatible:`renesas,ra-mipi-dsi`

* Miscellaneous

   * :dtcompatible:`nordic,nrf-bicr`
   * :dtcompatible:`nordic,nrf-ppib`
   * :dtcompatible:`renesas,ra-external-interrupt`

* :abbr:`MMU / MPU (Memory Management Unit / Memory Protection Unit)`

   * :dtcompatible:`nxp,sysmpu`

* :abbr:`MTD (Memory Technology Device)`

   * :dtcompatible:`nxp,s32-qspi-hyperflash`
   * :dtcompatible:`nxp,xspi-mx25um51345g`
   * :dtcompatible:`ti,cc23x0-ccfg-flash`

* Networking

   * :dtcompatible:`silabs,series2-radio`

* :abbr:`PCIe (Peripheral Component Interconnect Express)`

   * :dtcompatible:`brcm,brcmstb-pcie`

* PHY

   * :dtcompatible:`renesas,ra-usbphyc`
   * :dtcompatible:`st,stm32u5-otghs-phy`

* Pin control

   * :dtcompatible:`realtek,rts5912-pinctrl`
   * :dtcompatible:`renesas,rzg-pinctrl`
   * :dtcompatible:`sensry,sy1xx-pinctrl`
   * :dtcompatible:`silabs,dbus-pinctrl`
   * :dtcompatible:`silabs,siwx91x-pinctrl`
   * :dtcompatible:`ti,cc23x0-pinctrl`
   * :dtcompatible:`wch,afio`

* :abbr:`PWM (Pulse Width Modulation)`

   * :dtcompatible:`atmel,sam0-tc-pwm`
   * :dtcompatible:`ite,it8801-pwm`
   * :dtcompatible:`renesas,rz-gpt-pwm`
   * :dtcompatible:`zephyr,fake-pwm`

* Quad SPI

   * :dtcompatible:`nxp,s32-qspi-sfp-frad`
   * :dtcompatible:`nxp,s32-qspi-sfp-mdad`

* Regulator

   * :dtcompatible:`nordic,npm2100-regulator`
   * :dtcompatible:`nxp,pf1550-regulator`

* :abbr:`RNG (Random Number Generator)`

   * :dtcompatible:`nordic,nrf-cracen-ctrdrbg`
   * :dtcompatible:`nxp,ele-trng`
   * :dtcompatible:`renesas,ra-sce5-rng`
   * :dtcompatible:`renesas,ra-sce7-rng`
   * :dtcompatible:`renesas,ra-sce9-rng`
   * :dtcompatible:`renesas,ra-trng`
   * :dtcompatible:`sensry,sy1xx-trng`
   * :dtcompatible:`silabs,siwx91x-rng`
   * :dtcompatible:`st,stm32-rng-noirq`

* :abbr:`RTC (Real Time Clock)`

   * :dtcompatible:`epson,rx8130ce-rtc`
   * :dtcompatible:`maxim,ds1337`
   * :dtcompatible:`maxim,ds3231-rtc`
   * :dtcompatible:`microcrystal,rv8803`
   * :dtcompatible:`ti,bq32002`

* SDHC

   * :dtcompatible:`renesas,ra-sdhc`

* Sensors

   * :dtcompatible:`adi,adxl366`
   * :dtcompatible:`hc-sr04`
   * :dtcompatible:`invensense,icm42370p`
   * :dtcompatible:`invensense,icm42670s`
   * :dtcompatible:`invensense,icp101xx`
   * :dtcompatible:`maxim,ds3231-sensor`
   * :dtcompatible:`melexis,mlx90394`
   * :dtcompatible:`nordic,npm2100-vbat`
   * :dtcompatible:`phosense,xbr818`
   * :dtcompatible:`renesas,hs400x`
   * :dtcompatible:`sensirion,scd40`
   * :dtcompatible:`sensirion,scd41`
   * :dtcompatible:`sensirion,sts4x`
   * :dtcompatible:`st,lis2duxs12`
   * :dtcompatible:`st,lsm6dsv16x`
   * :dtcompatible:`ti,tmag3001`
   * :dtcompatible:`ti,tmp435`
   * :dtcompatible:`we,wsen-pads-2511020213301`
   * :dtcompatible:`we,wsen-pdus-25131308XXXXX`
   * :dtcompatible:`we,wsen-tids-2521020222501`

* Serial controller

   * :dtcompatible:`microchip,mec5-uart`
   * :dtcompatible:`realtek,rts5912-uart`
   * :dtcompatible:`renesas,rz-scif-uart`
   * :dtcompatible:`silabs,eusart-uart`
   * :dtcompatible:`silabs,usart-uart`
   * :dtcompatible:`ti,cc23x0-uart`
   * :dtcompatible:`wch,usart`

* :abbr:`SPI (Serial Peripheral Interface)`

   * :dtcompatible:`ite,it8xxx2-spi`
   * :dtcompatible:`nxp,lpspi`
   * :dtcompatible:`nxp,xspi`
   * :dtcompatible:`renesas,ra-spi`

* Stepper

   * :dtcompatible:`adi,tmc2209`
   * :dtcompatible:`ti,drv8424`

* :abbr:`TCPC (USB Type-C Port Controller)`

   * :dtcompatible:`richtek,rt1715`

* Timer

   * :dtcompatible:`mediatek,ostimer64`
   * :dtcompatible:`realtek,rts5912-rtmr`
   * :dtcompatible:`realtek,rts5912-slwtimer`
   * :dtcompatible:`renesas,rz-gpt`
   * :dtcompatible:`renesas,rz-gtm`
   * :dtcompatible:`riscv,machine-timer`
   * :dtcompatible:`ti,cc23x0-systim-timer`
   * :dtcompatible:`wch,systick`

* USB

   * :dtcompatible:`ambiq,usb`
   * :dtcompatible:`renesas,ra-udc`
   * :dtcompatible:`renesas,ra-usbfs`
   * :dtcompatible:`renesas,ra-usbhs`
   * :dtcompatible:`zephyr,midi2-device`

* Video

   * :dtcompatible:`zephyr,video-emul-imager`
   * :dtcompatible:`zephyr,video-emul-rx`

* Watchdog

   * :dtcompatible:`atmel,sam4l-watchdog`
   * :dtcompatible:`nordic,npm2100-wdt`
   * :dtcompatible:`nxp,rtwdog`

* Wi-Fi

   * :dtcompatible:`infineon,airoc-wifi`
   * :dtcompatible:`silabs,siwx91x-wifi`

New Samples
***********

..
  Same as above for boards and drivers, this will also be recomputed at the time of the release.
 Just link the sample, further details go in the sample documentation itself.

* :zephyr:code-sample:`6dof_motion_drdy`
* :zephyr:code-sample:`ble_cs`
* :zephyr:code-sample:`bluetooth_ccp_call_control_client`
* :zephyr:code-sample:`bluetooth_ccp_call_control_server`
* :zephyr:code-sample:`coresight_stm_sample`
* :zephyr:code-sample:`usb-dfu`
* :zephyr:code-sample:`i2c-rtio-loopback`
* :zephyr:code-sample:`lvgl-screen-transparency`
* :zephyr:code-sample:`mctp_endpoint_sample`
* :zephyr:code-sample:`mctp_host_sample`
* :zephyr:code-sample:`openthread-shell`
* :zephyr:code-sample:`ot-coap`
* :zephyr:code-sample:`rtc`
* :zephyr:code-sample:`sensor_batch_processing`
* :zephyr:code-sample:`sensor_clock`
* Generic device FIFO streaming (``stream_fifo``)
* :zephyr:code-sample:`tdk_apex`
* :zephyr:code-sample:`tmc50xx`
* :zephyr:code-sample:`uart`
* :zephyr:code-sample:`usb-midi2-device`
* :zephyr:code-sample:`usb-cdc-acm-console`
* :zephyr:code-sample:`webusb`

Other notable changes
*********************

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

* A header file has been introduced to allocate ID ranges for persistent keys in the PSA Crypto API.
  It defines the ID ranges allocated to different users of the API (application, subsystems...).
  Users of the API must now use this header file to construct persistent key IDs.
  See :zephyr_file:`include/zephyr/psa/key_ids.h` for more information. (:github:`85581`)

* Space-separated lists support has been removed from Twister configuration
  files. This feature was deprecated a long time ago. Projects that do still use
  them can use the :zephyr_file:`scripts/utils/twister_to_list.py` script to
  automatically migrate Twister configuration files.

* Test case names for Ztest now include the Ztest suite name, meaning the resulting identifier has
  three sections and looks like: ``<test_scenario_name>.<ztest_suite_name>.<ztest_name>``.
  These extended identifiers are used in log output, twister.json and testplan.json,
  as well as for ``--sub-test`` command line parameters.

* The ``--no-detailed-test-id`` command line option can be used to shorten the test case name
  by excluding the test scenario name prefix which is the same as the parent test suite id.

* Added support for HTTP PUT/PATCH/DELETE methods for HTTP server dynamic resources.

* Driver API structures are now available through iterable sections and a new
  :c:macro:`DEVICE_API_IS` macro has been introduced to allow to check if a device supports a
  given API. Many shell commands now use this to provide "smarter" auto-completion and only list
  compatible devices when they expect a device argument.

* Zephyr's :ref:`interactive board catalog <boards>` has been extended to allow searching for boards
  based on supported hardware features. A new :rst:dir:`zephyr:board-supported-hw` Sphinx directive
  can now be used in boards' documentation pages to automatically include a list of the hardware
  features supported by a board, and many boards have already adopted this new feature in their
  documentation.

---

### Doc Releases Release Notes 4.2 (`doc/releases/release-notes-4.2.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.2:

Zephyr 4.2.0
############

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

Major enhancements with this release include:

**Initial Support for Renesas RX**
  The Renesas RX architecture is now supported, including a QEMU-based
  :zephyr:board:`board target <qemu_rx>`.

**USB Video Class Driver**
  The USB device stack now supports USB Video Class (UVC) allowing camera devices and other
  image/video sources to be exposed as standard USB video devices. See :zephyr:code-sample:`uvc` to
  get started.

**Twister Power Harness**
  A :ref:`new Twister harness <twister_power_harness>` enables measurement of the power consumption
  of the device under test and ensures it remains within a given tolerance.

**MQTT 5.0**
  The networking stack now includes full support for the :ref:`MQTT 5.0 <mqtt_socket_interface>`
  protocol.

**Bluetooth Classic improvements**
  The Bluetooth Classic stack now includes support for **Hands-Free Profile** (HFP) for both Audio
  Gateway (AG) and Hands-Free (HF) roles.

**Zbus**
  The :ref:`Zbus library <zbus>` graduates to stable status with the release of API version v1.0.0.

**Expanded Board Support**
  Support for 96 :ref:`new boards <boards_added_in_zephyr_4_2>` and 22
  :ref:`new shields <shields_added_in_zephyr_4_2>` has been added in this release.

An overview of the changes required or recommended when migrating your application from Zephyr
v4.1.0 to Zephyr v4.2.0 can be found in the separate :ref:`migration guide<migration_4.2>`.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* :cve:`2025-12890` `Bluetooth: peripheral: Invalid handling of malformed connection request
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8hrf-pfww-83v9>`_
* :cve:`2025-27809` `TLS clients may unwittingly skip server authentication
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-03-1/>`_
* :cve:`2025-27810` `Potential authentication bypass in TLS handshake
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-03-2/>`_
* :cve:`2025-2962` `Infinite loop in dns_copy_qname
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2qp5-c2vq-g2ww>`_
* :cve:`2025-52496` `Race condition in AESNI support detection
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-1/>`_
* :cve:`2025-52497` `Heap buffer under-read when parsing PEM-encrypted material
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-2/>`_
* :cve:`2025-49600` `Unchecked return value in LMS verification allows signature bypass
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-3/>`_
* :cve:`2025-49601` `Out-of-bounds read in mbedtls_lms_import_public_key()
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-4/>`_
* :cve:`2025-49087` `Timing side-channel in block cipher decryption with PKCS#7 padding
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-5/>`_
* :cve:`2025-48965` `NULL pointer dereference after using mbedtls_asn1_store_named_data()
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-6/>`_
* :cve:`2025-47917` `Misleading memory management in mbedtls_x509_string_to_names()
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-7/>`_
* :cve:`2025-7403`: Under embargo until 2025-09-05

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

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

Removed APIs and options
========================

* Removed the deprecated ``net_buf_put()`` and ``net_buf_get()`` API functions.

* Removed the deprecated ``include/zephyr/net/buf.h`` header file.

* Removed the ``--disable-unrecognized-section-test`` Twister option. Test has been removed and the
  option became the default behavior.

* Removed the deprecated ``kscan`` subsystem.

* Removed :dtcompatible:`meas,ms5837` and replaced with :dtcompatible:`meas,ms5837-30ba`
  and :dtcompatible:`meas,ms5837-02ba`.

* Removed the ``get_ctrl`` driver API from :c:struct:`video_driver_api`.

* Removed ``CONFIG_I3C_USE_GROUP_ADDR`` and support for group addresses for I3C devices.

Deprecated APIs and options
===========================

* The scheduler Kconfig options CONFIG_SCHED_DUMB and CONFIG_WAITQ_DUMB were
  renamed and deprecated. Use :kconfig:option:`CONFIG_SCHED_SIMPLE` and
  :kconfig:option:`CONFIG_WAITQ_SIMPLE` instead.

* The :kconfig:option:`CONFIG_LWM2M_ENGINE_MESSAGE_HEADER_SIZE` Kconfig option has been removed.
  The required header size should be included in the message size, configured using
  :kconfig:option:`CONFIG_LWM2M_COAP_MAX_MSG_SIZE`. Special care should be taken to ensure that
  the CoAP block size used (:kconfig:option:`CONFIG_LWM2M_COAP_BLOCK_SIZE`) can fit the given
  message size with headers. Previous headroom was 48 bytes.

* TLS credential type ``TLS_CREDENTIAL_SERVER_CERTIFICATE`` was renamed and
  deprecated, use :c:enumerator:`TLS_CREDENTIAL_PUBLIC_CERTIFICATE` instead.

* ``arduino_uno_r4_minima`` and ``arduino_uno_r4_wifi`` board targets have been deprecated in favor
  of a new ``arduino_uno_r4`` board with revisions (``arduino_uno_r4@minima`` and
  ``arduino_uno_r4@wifi``).

* ``esp32c6_devkitc`` board target has been deprecated and renamed to
  ``esp32c6_devkitc/esp32c6/hpcore``.

* ``xiao_esp32c6`` board target has been deprecated and renamed to
  ``xiao_esp32c6/esp32c6/hpcore``.

* :kconfig:option:`CONFIG_HAWKBIT_DDI_NO_SECURITY` Kconfig option has been
  deprecated, because support for anonymous authentication had been removed from the
  hawkBit server in version 0.8.0.

* The :kconfig:option:`CONFIG_BT_CONN_TX_MAX` Kconfig option has been deprecated. The number of
  pending TX buffers is now aligned with the :kconfig:option:`CONFIG_BT_BUF_ACL_TX_COUNT` Kconfig
  option.

* The :kconfig:option:`CONFIG_CRYPTO_TINYCRYPT_SHIM` Kconfig option has been removed. It
  was deprecated since Zephyr 4.0, and users were advised to migrate to alternative
  crypto backends.

* The :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` Kconfig option has been removed. It
  was deprecated since Zephyr 4.0. Users were advised to use
  :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA` or
  :kconfig:option:`CONFIG_BT_MESH_USES_TFM_PSA` instead.

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

* The API signature of ``net_mgmt`` event handler :c:type:`net_mgmt_event_handler_t`
  and request handler :c:type:`net_mgmt_request_handler_t` has changed. The event value
  type is changed from ``uint32_t`` to ``uint64_t``.

New APIs and options
====================

..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

.. zephyr-keep-sorted-start re(^\* \w)

* Architectures

  * NIOS2 Architecture was removed from Zephyr.
  * :kconfig:option:`ARCH_HAS_VECTOR_TABLE_RELOCATION`
  * :kconfig:option:`CONFIG_SRAM_VECTOR_TABLE` moved from ``zephyr/Kconfig.zephyr`` to
    ``zephyr/arch/Kconfig`` and added dependencies to it.

* Bluetooth

  * Audio

    * :c:macro:`BT_BAP_ADV_PARAM_CONN_QUICK`
    * :c:macro:`BT_BAP_ADV_PARAM_CONN_REDUCED`
    * :c:macro:`BT_BAP_CONN_PARAM_SHORT_7_5`
    * :c:macro:`BT_BAP_CONN_PARAM_SHORT_10`
    * :c:macro:`BT_BAP_CONN_PARAM_RELAXED`
    * :c:macro:`BT_BAP_ADV_PARAM_BROADCAST_FAST`
    * :c:macro:`BT_BAP_ADV_PARAM_BROADCAST_SLOW`
    * :c:macro:`BT_BAP_PER_ADV_PARAM_BROADCAST_FAST`
    * :c:macro:`BT_BAP_PER_ADV_PARAM_BROADCAST_SLOW`
    * :c:func:`bt_csip_set_member_set_size_and_rank`
    * :c:func:`bt_csip_set_member_get_info`
    * :c:func:`bt_bap_unicast_group_foreach_stream`
    * :c:func:`bt_cap_unicast_group_create`
    * :c:func:`bt_cap_unicast_group_reconfig`
    * :c:func:`bt_cap_unicast_group_add_streams`
    * :c:func:`bt_cap_unicast_group_delete`
    * :c:func:`bt_cap_unicast_group_foreach_stream`

  * Host

    * :c:func:`bt_le_get_local_features`
    * :c:func:`bt_le_bond_exists`
    * :c:func:`bt_br_bond_exists`
    * :c:func:`bt_conn_lookup_addr_br`
    * :c:func:`bt_conn_get_dst_br`
    * LE Connection Subrating is no longer experimental.
    * Remove deletion of the classic bonding information from :c:func:`bt_unpair`, and add
      :c:func:`bt_br_unpair`.
    * Remove query of the classic bonding information from :c:func:`bt_foreach_bond`, and add
      :c:func:`bt_br_foreach_bond`.
    * Add a new parameter ``limited`` to :c:func:`bt_br_set_discoverable` to support limited
      discoverable mode for the classic.
    * Enable retransmission and flow control for the classic L2CAP, including
      :kconfig:option:`CONFIG_BT_L2CAP_RET`, :kconfig:option:`CONFIG_BT_L2CAP_FC`,
      :kconfig:option:`CONFIG_BT_L2CAP_ENH_RET`, and :kconfig:option:`CONFIG_BT_L2CAP_STREAM`.
    * :c:func:`bt_avrcp_get_cap`
    * Improve the classic hands-free unit, including
      :kconfig:option:`CONFIG_BT_HFP_HF_CODEC_NEG`, :kconfig:option:`CONFIG_BT_HFP_HF_ECNR`,
      :kconfig:option:`CONFIG_BT_HFP_HF_3WAY_CALL`, :kconfig:option:`CONFIG_BT_HFP_HF_ECS`,
      :kconfig:option:`CONFIG_BT_HFP_HF_ECC`, :kconfig:option:`CONFIG_BT_HFP_HF_VOICE_RECG_TEXT`,
      :kconfig:option:`CONFIG_BT_HFP_HF_ENH_VOICE_RECG`,
      :kconfig:option:`CONFIG_BT_HFP_HF_VOICE_RECG`,
      :kconfig:option:`CONFIG_BT_HFP_HF_HF_INDICATORS`,
      :kconfig:option:`CONFIG_BT_HFP_HF_HF_INDICATOR_ENH_SAFETY`, and
      :kconfig:option:`CONFIG_BT_HFP_HF_HF_INDICATOR_BATTERY`.
    * Improve the classic hands-free audio gateway, including
      :kconfig:option:`CONFIG_BT_HFP_AG_CODEC_NEG`, :kconfig:option:`CONFIG_BT_HFP_AG_ECNR`,
      :kconfig:option:`CONFIG_BT_HFP_AG_3WAY_CALL`, :kconfig:option:`CONFIG_BT_HFP_AG_ECS`,
      :kconfig:option:`CONFIG_BT_HFP_AG_ECC`, :kconfig:option:`CONFIG_BT_HFP_AG_VOICE_RECG_TEXT`,
      :kconfig:option:`CONFIG_BT_HFP_AG_ENH_VOICE_RECG`,
      :kconfig:option:`CONFIG_BT_HFP_AG_VOICE_TAG`,
      :kconfig:option:`CONFIG_BT_HFP_AG_HF_INDICATORS`,
      :kconfig:option:`CONFIG_BT_HFP_AG_HF_INDICATOR_ENH_SAFETY`,
      :kconfig:option:`CONFIG_BT_HFP_AG_HF_INDICATOR_BATTERY`, and
      :kconfig:option:`CONFIG_BT_HFP_AG_REJECT_CALL`.
    * Add a callback function ``get_ongoing_call()`` to :c:struct:`bt_hfp_ag_cb`.
    * :c:func:`bt_hfp_ag_ongoing_calls`
    * Support the classic L2CAP signaling echo request and response feature, including
      :c:struct:`bt_l2cap_br_echo_cb`, :c:func:`bt_l2cap_br_echo_cb_register`,
      :c:func:`bt_l2cap_br_echo_cb_unregister`, :c:func:`bt_l2cap_br_echo_req`, and
      :c:func:`bt_l2cap_br_echo_rsp`.
    * :c:func:`bt_a2dp_get_conn`
    * :c:func:`bt_rfcomm_send_rpn_cmd`

* Build system

  * Sysbuild

    * Firmware loader image setup/selection support added to sysbuild when using
      :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_FIRMWARE_UPDATER` via
      ``SB_CONFIG_FIRMWARE_LOADER`` e.g. :kconfig:option:`SB_CONFIG_FIRMWARE_LOADER_IMAGE_SMP_SVR`
      for selecting :zephyr:code-sample:`smp-svr`.
    * Single app RAM load support added to sysbuild using
      :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_SINGLE_APP_RAM_LOAD`.

* Counter

  * :c:func:`counter_reset`

* Debug

  * Core Dump

    * :kconfig:option:`CONFIG_DEBUG_COREDUMP_THREAD_STACK_TOP`, enabled by default for ARM Cortex M when :kconfig:option:`CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN` is selected.
    * :kconfig:option:`CONFIG_DEBUG_COREDUMP_BACKEND_IN_MEMORY`
    * :kconfig:option:`CONFIG_DEBUG_COREDUMP_BACKEND_IN_MEMORY_SIZE`

* Display

    * Added :c:func:`display_clear` API to allow clearing the display content in a standardized way.
    * Character Frame Buffer (CFB) subsystem now supports drawing circles via :c:func:`cfb_draw_circle`.

* I2C

  * :c:func:`i2c_configure_dt`.
  * :c:macro:`I2C_DEVICE_DT_DEINIT_DEFINE`
  * :c:macro:`I2C_DEVICE_DT_INST_DEINIT_DEFINE`

* I3C

  * :kconfig:option:`CONFIG_I3C_MODE`
  * :kconfig:option:`CONFIG_I3C_CONTROLLER_ROLE_ONLY`
  * :kconfig:option:`CONFIG_I3C_TARGET_ROLE_ONLY`
  * :kconfig:option:`CONFIG_I3C_DUAL_ROLE`
  * :c:func:`i3c_ccc_do_rstdaa`

* Kernel

 * :c:macro:`K_TIMEOUT_ABS_SEC`
 * :c:func:`timespec_add`
 * :c:func:`timespec_compare`
 * :c:func:`timespec_equal`
 * :c:func:`timespec_is_valid`
 * :c:func:`timespec_negate`
 * :c:func:`timespec_normalize`
 * :c:func:`timespec_from_timeout`
 * :c:func:`timespec_to_timeout`
 * :c:func:`k_heap_array_get`

* LVGL (Light and Versatile Graphics Library)

    * The LVGL module was synchronized to v9.3, bringing numerous upstream improvements and new features.
    * LVGL subsystem now supports multiple simultaneous displays, including proper input device-to-display binding.
    * Added L8/Y8 pixel format support for displays such as SSD1327, SSD1320, SSD1322, and ST75256.
    * :kconfig:option:`CONFIG_LV_Z_COLOR_MONO_HW_INVERSION`

* LoRaWAN

   * :c:func:`lorawan_request_link_check`

* Management

  * MCUmgr

    * Firmware loader support added to image mgmt group using
      :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER`.
    * Optional boot mode (using retention boot mode) added to OS group reset command using
      :kconfig:option:`CONFIG_MCUMGR_GRP_OS_RESET_BOOT_MODE`.

* Networking:

  * CoAP

    * :c:macro:`COAPS_SERVICE_DEFINE`

  * DHCPv4

    * :kconfig:option:`CONFIG_NET_DHCPV4_INIT_REBOOT`

  * DNS

    * :c:func:`dns_resolve_service`
    * :c:func:`dns_resolve_reconfigure_with_interfaces`

  * HTTP

    * :kconfig:option:`CONFIG_HTTP_SERVER_COMPRESSION`

  * IPv4

    * :kconfig:option:`CONFIG_NET_IPV4_MTU`

  * LwM2M

    * :kconfig:option:`CONFIG_LWM2M_SERVER_BOOTSTRAP_ON_FAIL`
    * Implemented Greater Than, Less Than and Step observe attributes handling
      (see :kconfig:option:`CONFIG_LWM2M_MAX_NOTIFIED_NUMERICAL_RES_TRACKED`).

  * Misc

    * :c:func:`net_if_oper_state_change_time`

  * MQTT

    * :kconfig:option:`CONFIG_MQTT_VERSION_5_0`
    * :c:member:`mqtt_transport.if_name`

  * OpenThread

    * Moved OpenThread-related Kconfig options from :zephyr_file:`subsys/net/l2/openthread/Kconfig`
      to :zephyr_file:`modules/openthread/Kconfig`.
    * Refactored OpenThread networking API, see the OpenThread section of the
      :ref:`migration guide <migration_4.2>`.
    * :kconfig:option:`CONFIG_OPENTHREAD_SYS_INIT`
    * :kconfig:option:`CONFIG_OPENTHREAD_SYS_INIT_PRIORITY`

  * SNTP

    * :c:func:`sntp_init_async`
    * :c:func:`sntp_send_async`
    * :c:func:`sntp_read_async`
    * :c:func:`sntp_close_async`

  * Sockets

    * :kconfig:option:`CONFIG_NET_SOCKETS_INET_RAW`
    * :c:func:`socket_offload_dns_enable`
    * Added a new documentation page for :ref:`socket_service_interface` library.
    * New socket options:

      * :c:macro:`IP_MULTICAST_LOOP`
      * :c:macro:`IPV6_MULTICAST_LOOP`
      * :c:macro:`TLS_CERT_VERIFY_RESULT`

  * Wi-Fi

    * :kconfig:option:`CONFIG_WIFI_USAGE_MODE`
    * Added a new section to the Wi-Fi Management documentation
      (``doc/connectivity/networking/api/wifi.rst``) with step-by-step instructions for generating
      test certificates for Wi-Fi using FreeRADIUS scripts. This helps users reproduce the process
      for their own test environments.
    * Changed the hostap IPC mechanism from socketpair to k_fifo. Depending on the enabled Wi-Fi configuration options, this can save up to 6-8 kB memory when using native Wi-Fi stack.

  * zperf

    * :kconfig:option:`CONFIG_ZPERF_SESSION_PER_THREAD`
    * :c:member:`zperf_upload_params.data_loader`
    * :kconfig:option:`CONFIG_NET_ZPERF_SERVER`

* PCIe

   * :kconfig:option:`CONFIG_NVME_PRP_PAGE_SIZE`

* Power management

    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_USE_SYSTEM_WQ`
    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_USE_DEDICATED_WQ`
    * :kconfig:option:`CONFIG_PM_DEVICE_DRIVER_NEEDS_DEDICATED_WQ`
    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_DEDICATED_WQ_STACK_SIZE`
    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_DEDICATED_WQ_PRIO`
    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_DEDICATED_WQ_INIT_PRIO`
    * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_ASYNC`

* SPI

  * :c:macro:`SPI_DEVICE_DT_DEINIT_DEFINE`
  * :c:macro:`SPI_DEVICE_DT_INST_DEINIT_DEFINE`

* Sensor

  * :c:func:`sensor_value_to_deci`
  * :c:func:`sensor_value_to_centi`

* Stepper

  * :c:func:`stepper_stop()`

* Storage

  * :c:func:`flash_area_copy()`

* Sys

  * :c:func:`util_eq`
  * :c:func:`util_memeq`
  * :c:func:`sys_clock_gettime`
  * :c:func:`sys_clock_settime`
  * :c:func:`sys_clock_nanosleep`

* USB

  * :c:func:`uvc_set_video_dev`

* UpdateHub

  * :c:func:`updatehub_report_error`

* Video

  * :c:type:`video_api_ctrl_t`
  * :c:func:`video_query_ctrl`
  * :c:func:`video_print_ctrl`
  * :c:type:`video_api_selection_t`
  * :c:func:`video_set_selection`
  * :c:func:`video_get_selection`
  * :ref:`video-sw-generator <snippet-video-sw-generator>`
  * :c:func:`video_get_csi_link_freq`
  * :c:macro:`VIDEO_CID_LINK_FREQ`
  * :c:macro:`VIDEO_CID_AUTO_WHITE_BALANCE` and other controls from the BASE control class.
  * :c:macro:`VIDEO_CID_EXPOSURE_ABSOLUTE` and other controls from the CAMERA control class.
  * :c:macro:`VIDEO_PIX_FMT_Y10` and ``Y12``, ``Y14``, ``Y16`` variants
  * :c:macro:`VIDEO_PIX_FMT_SRGGB10P` and ``12P``, ``14P`` variants, for all 4 bayer variants.
  * :c:member:`video_buffer.index` field
  * :c:member:`video_ctrl_query.int_menu` field
  * :c:macro:`VIDEO_MIPI_CSI2_DT_NULL` and other MIPI standard values

* ZBus

  * Zbus has achieved stable status with the release of API version v1.0.0.
  * Runtime observers can work without heap. Now it is possible to choose between static, dynamic,
    and none allocation for the runtime observers nodes.
  * Runtime observers using :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_NONE` must use
    the new function :c:func:`zbus_chan_add_obs_with_node`.

  * :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_DYNAMIC`
  * :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_STATIC`
  * :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_NONE`
  * :kconfig:option:`CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_POOL_SIZE`

.. zephyr-keep-sorted-stop

.. _boards_added_in_zephyr_4_2:

New Boards
**********

..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.

* Adafruit Industries, LLC

   * :zephyr:board:`adafruit_feather_esp32s2` (``adafruit_feather_esp32s2``)
   * :zephyr:board:`adafruit_feather_esp32s2_tft` (``adafruit_feather_esp32s2_tft``)
   * :zephyr:board:`adafruit_feather_esp32s2_tft_reverse` (``adafruit_feather_esp32s2_tft_reverse``)
   * :zephyr:board:`adafruit_feather_esp32s3` (``adafruit_feather_esp32s3``)
   * :zephyr:board:`adafruit_feather_esp32s3_tft` (``adafruit_feather_esp32s3_tft``)
   * :zephyr:board:`adafruit_feather_esp32s3_tft_reverse` (``adafruit_feather_esp32s3_tft_reverse``)

* Advanced Micro Devices (AMD), Inc.

   * :zephyr:board:`versal2_rpu` (``versal2_rpu``)
   * :zephyr:board:`versalnet_rpu` (``versalnet_rpu``)

* Aesc Silicon

   * :zephyr:board:`elemrv_flask_n` (``elemrv``)

* Ai-Thinker Co., Ltd.

   * :zephyr:board:`ai_wb2_12f_kit` (``ai_wb2_12f_kit``)

* Ambiq Micro, Inc.

   * :zephyr:board:`apollo510_evb` (``apollo510_evb``)

* Analog Devices, Inc.

   * :zephyr:board:`max32657evkit` (``max32657evkit``)

* Arduino

   * :zephyr:board:`arduino_nano_matter` (``arduino_nano_matter``)
   * :zephyr:board:`arduino_portenta_c33` (``arduino_portenta_c33``)

* ARM Ltd.

   * :zephyr:board:`mps4` (``mps4``)

* BeagleBoard.org Foundation

   * :zephyr:board:`pocketbeagle_2` (``pocketbeagle_2``)

* Blues Wireless

   * :zephyr:board:`cygnet` (``cygnet``)

* Bouffalo Lab (Nanjing) Co., Ltd.

   * :zephyr:board:`bl604e_iot_dvk` (``bl604e_iot_dvk``)

* Doctors of Intelligence & Technology

   * :zephyr:board:`dt_bl10_devkit` (``dt_bl10_devkit``)

* ENE Technology, Inc.

   * :zephyr:board:`kb1062_evb` (``kb1062_evb``)

* Espressif Systems

   * :zephyr:board:`esp32_devkitc` (``esp32_devkitc``)

* Ezurio

   * :zephyr:board:`bl54l15_dvk` (``bl54l15_dvk``)
   * ``bl54l15u_dvk``

* FANKE Technology Co., Ltd.

   * :zephyr:board:`fk743m5_xih6` (``fk743m5_xih6``)

* IAR Systems AB

   * :zephyr:board:`stm32f429ii_aca` (``stm32f429ii_aca``)

* Infineon Technologies

   * :zephyr:board:`kit_xmc72_evk` (``kit_xmc72_evk``)

* Intel Corporation

   * :zephyr:board:`intel_btl_s_crb` (``intel_btl_s_crb``)

* ITE Tech. Inc.

   * ``it515xx_evb``

* KWS Computersysteme Gmbh

   * :zephyr:board:`pico2_spe` (``pico2_spe``)
   * :zephyr:board:`pico_spe` (``pico_spe``)

* Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd

   * :zephyr:board:`tdongle_s3` (``tdongle_s3``)
   * :zephyr:board:`ttgo_tbeam` (``ttgo_tbeam``)
   * :zephyr:board:`ttgo_toiplus` (``ttgo_toiplus``)
   * :zephyr:board:`twatch_s3` (``twatch_s3``)

* M5Stack

   * :zephyr:board:`m5stack_fire` (``m5stack_fire``)

* Microchip Technology Inc.

   * :zephyr:board:`mec_assy6941` (``mec_assy6941``)
   * :zephyr:board:`sama7g54_ek` (``sama7g54_ek``)

* MikroElektronika d.o.o.

   * :zephyr:board:`mikroe_quail` (``mikroe_quail``)

* Nordic Semiconductor

   * :zephyr:board:`nrf54lm20dk` (``nrf54lm20dk``)

* Nuvoton Technology Corporation

   * :zephyr:board:`npck3m8k_evb` (``npck3m8k_evb``)
   * :zephyr:board:`numaker_m55m1` (``numaker_m55m1``)

* NXP Semiconductors

   * :zephyr:board:`frdm_mcxa153` (``frdm_mcxa153``)
   * :zephyr:board:`imx943_evk` (``imx943_evk``)
   * :zephyr:board:`mcx_n9xx_evk` (``mcx_n9xx_evk``)
   * :zephyr:board:`s32k148_evb` (``s32k148_evb``)

* Octavo Systems LLC

   * :zephyr:board:`osd32mp1_brk` (``osd32mp1_brk``)

* OpenHW Group

   * :zephyr:board:`cv32a6_genesys_2` (``cv32a6_genesys_2``)
   * :zephyr:board:`cv64a6_genesys_2` (``cv64a6_genesys_2``)

* Pimoroni Ltd.

   * :zephyr:board:`pico_plus2` (``pico_plus2``)

* QEMU

   * :zephyr:board:`qemu_rx` (``qemu_rx``)

* Raytac Corporation

   * :zephyr:board:`raytac_an54lq_db_15` (``raytac_an54lq_db_15``)
   * :zephyr:board:`raytac_an7002q_db` (``raytac_an7002q_db``)
   * :zephyr:board:`raytac_mdbt50q_cx_40_dongle` (``raytac_mdbt50q_cx_40_dongle``)

* Renesas Electronics Corporation

   * :zephyr:board:`ek_ra8p1` (``ek_ra8p1``)
   * :zephyr:board:`rsk_rx130` (``rsk_rx130``)
   * :zephyr:board:`rza2m_evk` (``rza2m_evk``)
   * :zephyr:board:`rza3ul_smarc` (``rza3ul_smarc``)
   * :zephyr:board:`rzg2l_smarc` (``rzg2l_smarc``)
   * :zephyr:board:`rzg2lc_smarc` (``rzg2lc_smarc``)
   * :zephyr:board:`rzg2ul_smarc` (``rzg2ul_smarc``)
   * :zephyr:board:`rzn2l_rsk` (``rzn2l_rsk``)
   * :zephyr:board:`rzt2l_rsk` (``rzt2l_rsk``)
   * :zephyr:board:`rzt2m_rsk` (``rzt2m_rsk``)
   * :zephyr:board:`rzv2h_evk` (``rzv2h_evk``)
   * :zephyr:board:`rzv2l_smarc` (``rzv2l_smarc``)
   * :zephyr:board:`rzv2n_evk` (``rzv2n_evk``)

* Seeed Technology Co., Ltd

   * :zephyr:board:`xiao_mg24` (``xiao_mg24``)
   * :zephyr:board:`xiao_ra4m1` (``xiao_ra4m1``)

* sensry.io

   * :zephyr:board:`ganymed_sk` (``ganymed_sk``)

* Shanghai Ruiside Electronic Technology Co., Ltd.

   * :zephyr:board:`art_pi2` (``art_pi2``)
   * :zephyr:board:`ra8d1_vision_board` (``ra8d1_vision_board``)

* Silicon Laboratories

   * :zephyr:board:`siwx917_rb4342a` (``siwx917_rb4342a``)
   * :zephyr:board:`slwrb4180b` (``slwrb4180b``)

* Space Cubics, LLC

   * :zephyr:board:`scobc_a1` (``scobc_a1``)

* STMicroelectronics

   * :zephyr:board:`nucleo_f439zi` (``nucleo_f439zi``)
   * :zephyr:board:`nucleo_u385rg_q` (``nucleo_u385rg_q``)
   * :zephyr:board:`nucleo_wba65ri` (``nucleo_wba65ri``)
   * :zephyr:board:`stm32h757i_eval` (``stm32h757i_eval``)
   * :zephyr:board:`stm32mp135f_dk` (``stm32mp135f_dk``)
   * :zephyr:board:`stm32mp257f_ev1` (``stm32mp257f_ev1``)
   * :zephyr:board:`stm32u5g9j_dk1` (``stm32u5g9j_dk1``)
   * :zephyr:board:`stm32u5g9j_dk2` (``stm32u5g9j_dk2``)

* Texas Instruments

   * :zephyr:board:`am243x_evm` (``am243x_evm``)
   * :zephyr:board:`lp_mspm0g3507` (``lp_mspm0g3507``)
   * :zephyr:board:`sk_am64` (``sk_am64``)

* u-blox

   * :zephyr:board:`ubx_evk_iris_w1` (``ubx_evk_iris_w1``)

* Variscite Ltd.

   * :zephyr:board:`imx8mp_var_dart` (``imx8mp_var_dart``)
   * :zephyr:board:`imx8mp_var_som` (``imx8mp_var_som``)
   * :zephyr:board:`imx93_var_dart` (``imx93_var_dart``)
   * :zephyr:board:`imx93_var_som` (``imx93_var_som``)

* Waveshare Electronics

   * :zephyr:board:`esp32s3_matrix` (``esp32s3_matrix``)
   * :zephyr:board:`rp2040_plus` (``rp2040_plus``)

* WeAct Studio

   * :zephyr:board:`bluepillplus_ch32v203` (``bluepillplus_ch32v203``)
   * :zephyr:board:`weact_stm32f446_core` (``weact_stm32f446_core``)

* WinChipHead

   * :zephyr:board:`ch32v003f4p6_dev_board` (``ch32v003f4p6_dev_board``)
   * :zephyr:board:`ch32v006evt` (``ch32v006evt``)
   * :zephyr:board:`ch32v303vct6_evt` (``ch32v303vct6_evt``)
   * :zephyr:board:`linkw` (``linkw``)

* WIZnet Co., Ltd.

   * :zephyr:board:`w5500_evb_pico2` (``w5500_evb_pico2``)

* Würth Elektronik GmbH.

   * :zephyr:board:`ophelia4ev` (``ophelia4ev``)

.. _shields_added_in_zephyr_4_2:

New shields
===========

* :ref:`Arduino Giga Display Shield <arduino_giga_display_shield>`
* :ref:`Arduino Modulino Buttons <arduino_modulino_buttons>`
* :ref:`Arduino Modulino SmartLEDs <arduino_modulino_pixels>`
* :ref:`DVP 20-pin OV7670 <dvp_20pin_ov7670>`
* :ref:`EVAL AD4052 ARDZ <eval_ad4052_ardz>`
* :ref:`EVAL ADXL367 ARDZ <eval_adxl367_ardz>`
* :ref:`M5Stack Cardputer <m5stack_cardputer>`
* :ref:`MikroElektronika LTE IoT10 Click <mikroe_lte_iot10_click_shield>`
* :ref:`MikroElektronika Stepper 18 Click <mikroe_stepper_18_click_shield>`
* :ref:`MikroElektronika Stepper 19 Click <mikroe_stepper_19_click_shield>`
* :ref:`NPM2100 Evaluation Kit <npm2100_ek>`
* :ref:`NXP ADTJA1101 <nxp_adtja1101>`
* :ref:`NXP M2 WiFi BT <nxp_m2_wifi_bt>`
* :ref:`OpenThread RCP Arduino <openthread_rcp_arduino_shield>`
* :ref:`RTK7 EKA6M3B00001BU <rtk7eka6m3b00001bu>`
* :ref:`RTKLCDPAR1S00001BE Display <rtklcdpar1s00001be>`
* :ref:`ST B-CAMS-IMX-MB1854 <st_b_cams_imx_mb1854>`
* :ref:`ST MB1897 camera module <st_mb1897_cam>`
* :ref:`ST STM32F4DIS CAM <st_stm32f4dis_cam>`
* :ref:`Waveshare Pico LCD 1.14 <waveshare_pico_lcd_1_14>`
* :ref:`Waveshare Pico OLED 1.3 <waveshare_pico_oled_1_3>`
* :ref:`X-Nucleo-GFX01M2 <x_nucleo_gfx01m2_shield>`

New Drivers
***********

..
  Same as above for boards, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description

* :abbr:`ADC (Analog to Digital Converter)`

   * :dtcompatible:`adi,ad4050-adc`
   * :dtcompatible:`adi,ad4052-adc`
   * :dtcompatible:`adi,ad4130-adc`
   * :dtcompatible:`ene,kb106x-adc`
   * :dtcompatible:`ite,it51xxx-adc`
   * :dtcompatible:`microchip,mcp356xr`
   * :dtcompatible:`realtek,rts5912-adc`
   * :dtcompatible:`renesas,rz-adc`
   * :dtcompatible:`silabs,siwx91x-adc`
   * :dtcompatible:`ti,am335x-adc`
   * :dtcompatible:`ti,cc23x0-adc`
   * :dtcompatible:`wch,adc`

* Audio

   * :dtcompatible:`ambiq,pdm`
   * :dtcompatible:`maxim,max98091`
   * :dtcompatible:`ti,pcm1681`
   * :dtcompatible:`ti,tlv320aic3110`
   * :dtcompatible:`wolfson,wm8962`

* Auxiliary Display

   * :dtcompatible:`gpio-7-segment`

* :abbr:`CAN (Controller Area Network)`

   * :dtcompatible:`adi,max32-can`
   * :dtcompatible:`renesas,rz-canfd`
   * :dtcompatible:`renesas,rz-canfd-global`

* Charger

   * :dtcompatible:`ti,bq25713`
   * :dtcompatible:`x-powers,axp2101-charger`

* Clock control

   * :dtcompatible:`bflb,bclk`
   * :dtcompatible:`bflb,bl60x-clock-controller`
   * :dtcompatible:`bflb,bl60x-pll`
   * :dtcompatible:`bflb,bl60x-root-clk`
   * :dtcompatible:`bflb,clock-controller`
   * :dtcompatible:`ite,it51xxx-ecpm`
   * :dtcompatible:`microchip,sam-pmc`
   * :dtcompatible:`microchip,sama7g5-sckc`
   * :dtcompatible:`nordic,nrf51-hfxo`
   * :dtcompatible:`nordic,nrf52-hfxo`
   * :dtcompatible:`nordic,nrf54l-hfxo`
   * :dtcompatible:`nordic,nrfs-audiopll`
   * :dtcompatible:`renesas,rx-cgc-pclk`
   * :dtcompatible:`renesas,rx-cgc-pclk-block`
   * :dtcompatible:`renesas,rx-cgc-pll`
   * :dtcompatible:`renesas,rx-cgc-root-clock`
   * :dtcompatible:`renesas,rza2m-cpg`
   * :dtcompatible:`st,stm32mp13-cpu-clock-mux`
   * :dtcompatible:`st,stm32mp13-pll-clock`
   * :dtcompatible:`st,stm32mp2-rcc`
   * :dtcompatible:`st,stm32u3-msi-clock`
   * :dtcompatible:`ti,mspm0-clk`
   * :dtcompatible:`ti,mspm0-osc`
   * :dtcompatible:`ti,mspm0-pll`
   * :dtcompatible:`wch,ch32v20x_30x-pll-clock`

* Comparator

   * :dtcompatible:`ite,it51xxx-vcmp`
   * :dtcompatible:`renesas,ra-acmphs`
   * :dtcompatible:`renesas,ra-acmphs-global`

* Counter

   * :dtcompatible:`adi,max32-wut`
   * :dtcompatible:`espressif,esp32-counter`
   * :dtcompatible:`ite,it51xxx-counter`
   * :dtcompatible:`ite,it8xxx2-counter`
   * :dtcompatible:`neorv32,gptmr`
   * :dtcompatible:`realtek,rts5912-timer`
   * :dtcompatible:`ti,cc23x0-lgpt`
   * :dtcompatible:`ti,cc23x0-rtc`
   * :dtcompatible:`ti,mspm0-timer-counter`
   * :dtcompatible:`wch,gptm`
   * :dtcompatible:`zephyr,native-sim-counter`

* CPU

   * :dtcompatible:`arm,cortex-r8`
   * :dtcompatible:`intel,bartlett-lake`
   * :dtcompatible:`openhwgroup,cva6`
   * :dtcompatible:`renesas,rx`
   * :dtcompatible:`wch,qingke-v4b`
   * :dtcompatible:`wch,qingke-v4c`
   * :dtcompatible:`wch,qingke-v4f`
   * :dtcompatible:`zephyr,native-sim-cpu`

* Cryptographic accelerator

   * :dtcompatible:`ite,it51xxx-sha`
   * :dtcompatible:`realtek,rts5912-sha`
   * :dtcompatible:`ti,cc23x0-aes`

* :abbr:`DAC (Digital to Analog Converter)`

   * :dtcompatible:`nxp,dac12`
   * :dtcompatible:`ti,dac161s997`

* Debug

   * :dtcompatible:`silabs,pti`

* Display

   * :dtcompatible:`sinowealth,sh1122`
   * :dtcompatible:`sitronix,st75256`
   * :dtcompatible:`sitronix,st7567`
   * :dtcompatible:`sitronix,st7701`
   * :dtcompatible:`solomon,ssd1320`
   * :dtcompatible:`solomon,ssd1327fb`
   * :dtcompatible:`solomon,ssd1331`
   * :dtcompatible:`solomon,ssd1351`
   * :dtcompatible:`solomon,ssd1363`
   * :dtcompatible:`zephyr,displays`

* :abbr:`DMA (Direct Memory Access)`

   * :dtcompatible:`renesas,rz-dma`
   * :dtcompatible:`ti,cc23x0-dma`
   * :dtcompatible:`wch,wch-dma`

* :abbr:`EDAC (Error Detection and Correction)`

   * :dtcompatible:`xlnx,zynqmp-ddrc-2.40a`

* :abbr:`eSPI (Enhanced Serial Peripheral Interface)`

   * :dtcompatible:`realtek,rts5912-espi`

* Ethernet

   * :dtcompatible:`ethernet-phy`
   * :dtcompatible:`microchip,vsc8541`
   * :dtcompatible:`nxp,netc-ptp-clock`
   * :dtcompatible:`nxp,tja11xx`
   * :dtcompatible:`st,stm32-ethernet-controller` has been introduced to ease interoperability
     with :dtcompatible:`st,stm32-mdio`.
   * :dtcompatible:`st,stm32n6-ethernet`
   * :dtcompatible:`ti,dp83867`
   * :dtcompatible:`xlnx,axi-ethernet-1.00.a`

* Firmware

   * :dtcompatible:`nxp,scmi-cpu`
   * :dtcompatible:`ti,k2g-sci`

* Flash controller

   * :dtcompatible:`realtek,rts5912-flash-controller`
   * :dtcompatible:`renesas,ra-ospi-b-nor`
   * :dtcompatible:`renesas,rx-flash`
   * :dtcompatible:`silabs,series2-flash-controller`
   * :dtcompatible:`st,stm32u3-flash-controller`

* File system

   * :dtcompatible:`zephyr,fstab,fatfs`

* Fuel gauge

   * :dtcompatible:`onnn,lc709203f`
   * :dtcompatible:`x-powers,axp2101-fuel-gauge`

* :abbr:`GNSS (Global Navigation Satellite System)`

   * :dtcompatible:`u-blox,f9p`

* :abbr:`GPIO (General Purpose Input/Output)`

   * :dtcompatible:`adi,max14915-gpio`
   * :dtcompatible:`adi,max14917-gpio`
   * :dtcompatible:`adi,max22199-gpio`
   * :dtcompatible:`arducam,dvp-20pin-connector`
   * :dtcompatible:`bflb,gpio`
   * :dtcompatible:`ene,kb106x-gpio`
   * :dtcompatible:`espressif,esp32-lpgpio`
   * :dtcompatible:`ite,it51xxx-gpio`
   * :dtcompatible:`nordic,npm1304-gpio`
   * :dtcompatible:`nxp,lcd-pmod`
   * :dtcompatible:`raspberrypi,csi-connector`
   * :dtcompatible:`raspberrypi,pico-gpio-port`
   * :dtcompatible:`renesas,ra-parallel-graphics-header`
   * :dtcompatible:`renesas,rx-gpio`
   * :dtcompatible:`renesas,rza2m-gpio`
   * :dtcompatible:`renesas,rza2m-gpio-int`
   * :dtcompatible:`st,stm32mp2-gpio`
   * :dtcompatible:`ti,mspm0-gpio`

* IEEE 802.15.4 HDLC RCP interface

   * :dtcompatible:`spi,hdlc-rcp-if`

* :abbr:`I2C (Inter-Integrated Circuit)`

   * :dtcompatible:`cdns,i2c`
   * :dtcompatible:`ite,it51xxx-i2c`
   * :dtcompatible:`litex,litei2c`
   * :dtcompatible:`realtek,rts5912-i2c`
   * :dtcompatible:`renesas,ra-i2c-sci-b`
   * :dtcompatible:`renesas,rx-i2c`
   * :dtcompatible:`renesas,rz-riic`
   * :dtcompatible:`sensry,sy1xx-i2c`
   * :dtcompatible:`wch,i2c`

* :abbr:`I2S (Inter-IC Sound)`

   * :dtcompatible:`ambiq,i2s`
   * :dtcompatible:`nordic,nrf-tdm`
   * :dtcompatible:`renesas,ra-i2s-ssie`
   * :dtcompatible:`silabs,siwx91x-i2s`
   * :dtcompatible:`st,stm32-sai`

* :abbr:`I3C (Improved Inter-Integrated Circuit)`

   * :dtcompatible:`ite,it51xxx-i3cm`
   * :dtcompatible:`ite,it51xxx-i3cs`
   * :dtcompatible:`renesas,ra-i3c`

* IEEE 802.15.4

   * :dtcompatible:`espressif,esp32-ieee802154`

* Input

   * :dtcompatible:`arduino,modulino-buttons`
   * :dtcompatible:`ite,it51xxx-kbd`
   * :dtcompatible:`realtek,rts5912-kbd`
   * :dtcompatible:`st,stm32-tsc`
   * :dtcompatible:`tsc-keys`
   * :dtcompatible:`vishay,vs1838b`

* Interrupt controller

   * :dtcompatible:`ite,it51xxx-intc`
   * :dtcompatible:`ite,it51xxx-wuc`
   * :dtcompatible:`ite,it51xxx-wuc-map`
   * :dtcompatible:`renesas,rx-icu`
   * :dtcompatible:`riscv,clic`
   * :dtcompatible:`wch,exti`

* :abbr:`LED (Light Emitting Diode)`

   * :dtcompatible:`arduino,modulino-buttons-leds`
   * :dtcompatible:`dac-leds`
   * :dtcompatible:`nordic,npm1304-led`
   * :dtcompatible:`x-powers,axp192-led`
   * :dtcompatible:`x-powers,axp2101-led`

* :abbr:`LED (Light Emitting Diode)` strip

   * :dtcompatible:`arduino,modulino-smartleds`

* Mailbox

   * :dtcompatible:`arm,mhuv3`
   * :dtcompatible:`renesas,rz-mhu-mbox`
   * :dtcompatible:`ti,secure-proxy`

* :abbr:`MDIO (Management Data Input/Output)`

   * :dtcompatible:`xlnx,axi-ethernet-1.00.a-mdio`

* Memory controller

   * :dtcompatible:`adi,max32-hpb`
   * :dtcompatible:`realtek,rts5912-bbram`
   * :dtcompatible:`silabs,siwx91x-qspi-memory`
   * :dtcompatible:`st,stm32-xspi-psram`

* :abbr:`MFD (Multi-Function Device)`

   * :dtcompatible:`adi,maxq10xx`
   * :dtcompatible:`ambiq,iom`
   * :dtcompatible:`microchip,sam-flexcom`
   * :dtcompatible:`nordic,npm1304`
   * :dtcompatible:`x-powers,axp2101`

* :abbr:`MIPI DBI (Mobile Industry Processor Interface Display Bus Interface)`

   * :dtcompatible:`nxp,mipi-dbi-dcnano-lcdif`

* Miscellaneous

   * :dtcompatible:`ene,kb106x-gcfg`
   * :dtcompatible:`nordic,ironside-call`
   * :dtcompatible:`nordic,nrf-mpc`
   * :dtcompatible:`nxp,rtxxx-dsp-ctrl`
   * :dtcompatible:`renesas,ra-elc`
   * :dtcompatible:`renesas,ra-ulpt`
   * :dtcompatible:`renesas,rx-external-interrupt`
   * :dtcompatible:`renesas,rx-mtu`
   * :dtcompatible:`renesas,rx-sci`
   * :dtcompatible:`renesas,rz-sci`
   * :dtcompatible:`renesas,rz-sci-b`
   * :dtcompatible:`st,stm32n6-ramcfg`

* Modem

   * :dtcompatible:`quectel,eg800q`
   * :dtcompatible:`simcom,a76xx`

* Multi-bit SPI

   * :dtcompatible:`nordic,nrf-exmif`
   * :dtcompatible:`snps,designware-ssi`

* :abbr:`MTD (Memory Technology Device)`

   * :dtcompatible:`fixed-subpartitions`
   * :dtcompatible:`jedec,mspi-nor`
   * :dtcompatible:`mspi-aps-z8`
   * :dtcompatible:`mspi-is25xX0xx`
   * :dtcompatible:`renesas,ra-nv-code-flash`
   * :dtcompatible:`renesas,ra-nv-data-flash`
   * :dtcompatible:`renesas,rx-nv-flash`
   * :dtcompatible:`ti,tmp11x-eeprom`

* Networking

   * :dtcompatible:`nordic,nrf-nfct-v2`
   * :dtcompatible:`silabs,siwx91x-nwp`

* Octal SPI

   * :dtcompatible:`renesas,ra-ospi-b`

* Pin control

   * :dtcompatible:`ambiq,apollo5-pinctrl`
   * :dtcompatible:`arm,mps2-pinctrl`
   * :dtcompatible:`arm,mps3-pinctrl`
   * :dtcompatible:`arm,mps4-pinctrl`
   * :dtcompatible:`arm,v2m_beetle-pinctrl`
   * :dtcompatible:`bflb,pinctrl`
   * :dtcompatible:`ene,kb106x-pinctrl`
   * :dtcompatible:`microchip,sama7g5-pinctrl`
   * :dtcompatible:`nuvoton,npcx-pinctrl-npckn`
   * :dtcompatible:`renesas,rx-pinctrl`
   * :dtcompatible:`renesas,rx-pinmux`
   * :dtcompatible:`renesas,rza-pinctrl`
   * :dtcompatible:`renesas,rza2m-pinctrl`
   * :dtcompatible:`renesas,rzn-pinctrl`
   * :dtcompatible:`renesas,rzt-pinctrl`
   * :dtcompatible:`renesas,rzv-pinctrl`
   * :dtcompatible:`st,stm32n6-pinctrl`
   * :dtcompatible:`ti,mspm0-pinctrl`
   * :dtcompatible:`wch,00x-afio`
   * :dtcompatible:`wch,20x_30x-afio`

* Power management

   * :dtcompatible:`infineon,cat1b-power`
   * :dtcompatible:`realtek,rts5912-ulpm`

* Power domain

   * :dtcompatible:`ti,sci-pm-domain`

* :abbr:`PSI5 (Peripheral Sensor Interface, 5th generation)`

   * :dtcompatible:`nxp,s32-psi5`

* :abbr:`PWM (Pulse Width Modulation)`

   * :dtcompatible:`arduino-header-pwm`
   * :dtcompatible:`ene,kb106x-pwm`
   * :dtcompatible:`ite,it51xxx-pwm`
   * :dtcompatible:`neorv32,pwm`
   * :dtcompatible:`realtek,rts5912-pwm`
   * :dtcompatible:`renesas,rx-mtu-pwm`
   * :dtcompatible:`silabs,letimer-pwm`
   * :dtcompatible:`silabs,siwx91x-pwm`
   * :dtcompatible:`silabs,timer-pwm`
   * :dtcompatible:`ti,mspm0-timer-pwm`
   * :dtcompatible:`wch,gptm-pwm`

* Regulator

   * :dtcompatible:`nordic,npm1304-regulator`
   * :dtcompatible:`x-powers,axp2101-regulator`

* Reset controller

   * :dtcompatible:`microchip,mpfs-reset`
   * :dtcompatible:`reset-mmio`

* :abbr:`RNG (Random Number Generator)`

   * :dtcompatible:`adi,maxq10xx-trng`
   * :dtcompatible:`brcm,iproc-rng200`
   * :dtcompatible:`virtio,device4`
   * :dtcompatible:`zephyr,native-sim-rng`

* :abbr:`RTC (Real Time Clock)`

   * :dtcompatible:`nxp,pcf2123`
   * :dtcompatible:`realtek,rts5912-rtc`
   * :dtcompatible:`silabs,siwx91x-rtc`

* :abbr:`SDHC (Secure Digital Host Controller)`

   * :dtcompatible:`ambiq,sdio`
   * :dtcompatible:`xlnx,versal-8.9a`

* Sensors

   * :dtcompatible:`adi,ad2s1210`
   * :dtcompatible:`bosch,bmm350`
   * :dtcompatible:`brcm,afbr-s50`
   * :dtcompatible:`everlight,als-pt19`
   * :dtcompatible:`invensense,icm40627`
   * :dtcompatible:`invensense,icm45686`
   * :dtcompatible:`invensense,icp201xx`
   * :dtcompatible:`liteon,ltr329`
   * :dtcompatible:`meas,ms5837-02ba`
   * :dtcompatible:`meas,ms5837-30ba`
   * :dtcompatible:`nordic,npm1304-charger`
   * :dtcompatible:`nxp,lpadc-temp40`
   * :dtcompatible:`nxp,tpm-qdec`
   * :dtcompatible:`peacefair,pzem004t`
   * :dtcompatible:`pixart,paa3905`
   * :dtcompatible:`pixart,paj7620`
   * :dtcompatible:`pixart,pat9136`
   * :dtcompatible:`pni,rm3100`
   * :dtcompatible:`rohm,bh1730`
   * :dtcompatible:`rohm,bh1790`
   * :dtcompatible:`st,lsm6dsv32x`
   * :dtcompatible:`st,lsm9ds1_mag`
   * :dtcompatible:`ti,tmp11x`
   * :dtcompatible:`vishay,veml6031`
   * :dtcompatible:`we,wsen-itds-2533020201601`

* :abbr:`SENT (Single Edge Nibble Transmission)`

   * :dtcompatible:`nxp,s32-sent`

* Serial controller

   * :dtcompatible:`aesc,uart`
   * :dtcompatible:`ambiq,pl011-uart`
   * :dtcompatible:`bflb,uart`
   * :dtcompatible:`ene,kb106x-uart`
   * :dtcompatible:`espressif,esp32-lpuart`
   * :dtcompatible:`ite,it51xxx-uart`
   * :dtcompatible:`nuvoton,npcx-uart-npckn`
   * :dtcompatible:`renesas,rx-uart-sci`
   * :dtcompatible:`renesas,rx-uart-sci-qemu`
   * :dtcompatible:`renesas,rz-sci-b-uart`
   * :dtcompatible:`renesas,rz-sci-uart`
   * :dtcompatible:`renesas,rza2m-scif-uart`
   * :dtcompatible:`ti,mspm0-uart`
   * :dtcompatible:`zephyr,native-pty-uart`
   * :dtcompatible:`zephyr,uart-bridge`

* :abbr:`SPI (Serial Peripheral Interface)`

   * :dtcompatible:`cdns,spi`
   * :dtcompatible:`ite,it51xxx-spi`
   * :dtcompatible:`microchip,mec5-qspi`
   * :dtcompatible:`renesas,rx-rspi`
   * :dtcompatible:`renesas,rz-rspi`
   * :dtcompatible:`silabs,gspi`
   * :dtcompatible:`ti,cc23x0-spi`
   * :dtcompatible:`wch,spi`

* Stepper

   * :dtcompatible:`adi,tmc51xx`
   * :dtcompatible:`allegro,a4979`

* System controller

   * :dtcompatible:`bflb,efuse`

* Tachometer

   * :dtcompatible:`ite,it51xxx-tach`
   * :dtcompatible:`realtek,rts5912-tach`

* :abbr:`TCPC (USB Type-C Port Controller)`

   * :dtcompatible:`onnn,fusb307-tcpc`

* Timer

   * :dtcompatible:`infineon,cat1-lp-timer`
   * :dtcompatible:`ite,it51xxx-timer`
   * :dtcompatible:`microchip,sam-pit64b`
   * :dtcompatible:`renesas,ra-ulpt-timer`
   * :dtcompatible:`renesas,rx-timer-cmt`
   * :dtcompatible:`renesas,rx-timer-cmt-start-control`
   * :dtcompatible:`renesas,rz-gtm-os-timer`
   * :dtcompatible:`renesas,rza2m-ostm`
   * :dtcompatible:`silabs,series2-letimer`
   * :dtcompatible:`silabs,series2-timer`
   * :dtcompatible:`ti,mspm0-timer`

* USB

   * :dtcompatible:`adi,max32-usbhs`
   * :dtcompatible:`nxp,uhc-ehci`
   * :dtcompatible:`nxp,uhc-ip3516hs`
   * :dtcompatible:`nxp,uhc-khci`
   * :dtcompatible:`nxp,uhc-ohci`
   * :dtcompatible:`st,stm32n6-otghs`
   * :dtcompatible:`zephyr,uvc-device`

* Video

   * :dtcompatible:`ovti,ov9655`
   * :dtcompatible:`sony,imx335`
   * :dtcompatible:`st,mipid02`
   * :dtcompatible:`st,stm32-dcmipp`
   * :dtcompatible:`zephyr,video-sw-generator`

* Virtio

   * :dtcompatible:`virtio,mmio`
   * :dtcompatible:`virtio,pci`

* Watchdog

   * :dtcompatible:`ene,kb106x-watchdog`
   * :dtcompatible:`ite,it51xxx-watchdog`
   * :dtcompatible:`nordic,npm1304-wdt`
   * :dtcompatible:`nxp,ewm`
   * :dtcompatible:`realtek,rts5912-watchdog`
   * :dtcompatible:`renesas,ra-wdt`
   * :dtcompatible:`silabs,siwx91x-wdt`
   * :dtcompatible:`ti,cc23x0-wdt`
   * :dtcompatible:`wch,iwdg`

* Wi-Fi

   * :dtcompatible:`espressif,esp-hosted`

New Samples
***********

..
  Same as above for boards and drivers, this will also be recomputed at the time of the release.
 Just link the sample, further details go in the sample documentation itself.

* :zephyr:code-sample:`amp_audio_loopback`
* :zephyr:code-sample:`amp_audio_output`
* :zephyr:code-sample:`amp_blinky`
* :zephyr:code-sample:`amp_mbox`
* :zephyr:code-sample:`auxdisplay_digits`
* :zephyr:code-sample:`bmg160`
* :zephyr:code-sample:`debug-ulp`
* :zephyr:code-sample:`distance_polling`
* :zephyr:code-sample:`echo-ulp`
* :zephyr:code-sample:`fatfs-fstab`
* :zephyr:code-sample:`fuel_gauge`
* :zephyr:code-sample:`heart_rate`
* :zephyr:code-sample:`interrupt-ulp`
* :zephyr:code-sample:`light_sensor_polling`
* :zephyr:code-sample:`lvgl-multi-display`
* :zephyr:code-sample:`min-heap`
* :zephyr:code-sample:`mspi-timing-scan`
* :zephyr:code-sample:`net-pkt-filter`
* :zephyr:code-sample:`nrf_ironside_update`
* :zephyr:code-sample:`paj7620_gesture`
* :zephyr:code-sample:`pressure_interrupt`
* :zephyr:code-sample:`pressure_polling`
* :zephyr:code-sample:`psi5`
* :zephyr:code-sample:`renesas-elc`
* :zephyr:code-sample:`renesas_comparator`
* :zephyr:code-sample:`rz-openamp-linux-zephyr`
* :zephyr:code-sample:`sent`
* :zephyr:code-sample:`spis-wakeup`
* :zephyr:code-sample:`stepper`
* :zephyr:code-sample:`stream_drdy`
* :zephyr:code-sample:`uart_async`
* :zephyr:code-sample:`usb-cdc-acm-bridge`
* :zephyr:code-sample:`uuid`
* :zephyr:code-sample:`uvc`
* :zephyr:code-sample:`veml6031`

Other notable changes
*********************

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

* Added support for Armv8.1-M MPU's PXN (Privileged Execute Never) attribute.
  With this, the MPU attributes for ``__ramfunc`` and ``__ram_text_reloc`` were modified such that,
  PXN attribute is set for these regions if compiled with ``CONFIG_ARM_MPU_PXN`` and ``CONFIG_USERSPACE``.
  This results in a change in behavior for code being executed from these regions because,
  if these regions have pxn attribute set in them, they cannot be executed in privileged mode.

* Removed support for Nucleo WBA52CG board (``nucleo_wba52cg``) since it is NRND (Not Recommended
  for New Design) and is no longer supported in the STM32CubeWBA from version 1.1.0 (July 2023).
  The migration to :zephyr:board:`nucleo_wba55cg` (``nucleo_wba55cg``) is recommended instead.

* Updated Mbed TLS to version 3.6.4 (from 3.6.2). Release notes for 3.6.3 and
  3.6.4 can be found below:

  * 3.6.3: https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.3
  * 3.6.4: https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.4

* Updated TF-M to version 2.2.0 (from 2.1.1). The release notes can be found at:
  https://trustedfirmware-m.readthedocs.io/en/latest/releases/2.2.0.html

* Updated all boards with an external I2C connectors (Qwiic, Stemma, Grove...)
  to use the ``zephyr_i2c`` devicetree label. This allows using the existing
  :ref:`shields` build system feature (``west build --shield``) to interface
  any connectorized i2c module to any board with a compatible i2c port,
  regardless of the specific i2c connector branding.

* Reverted deprecation of receiver option in Nordic UART driver. Receiver mode which is using
  additional TIMER peripheral to count received bytes was previously deprecated
  (e.g. :kconfig:option:`CONFIG_CONFIG_UART_0_NRF_HW_ASYNC`). However, it turned out that this
  previously mode is the only one that is capable of reliably receive data without Hardware
  Flow Control so it should stay in the driver.

---

### Doc Releases Release Notes 4.3 (`doc/releases/release-notes-4.3.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.3:

Zephyr 4.3.0
############

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

Major enhancements with this release include:

**USB Device "Next" stack is now the default**
  The new :ref:`USB device stack <usb_device_stack_next>`, built on the modern UDC (USB Device
  Controller) API, replaces the legacy stack and brings support for multiple simultaneous
  controllers, runtime configuration, and overall better architecture.
  The legacy stack is now deprecated and will be removed in Zephyr 4.5.

**CPU load and dynamic frequency scaling subsystems**
  A new experimental :ref:`CPU frequency <cpu_freq>` scaling subsystem enables dynamic,
  policy-driven, clock adjustments to balance power consumption and performance.
  Alongside it, a new :ref:`cpu_load` subsystem allows users to obtain CPU usage metrics based on
  scheduler statistics, which can be used to drive the frequency scaling policy.

**Instrumentation Subsystem**
  A new :ref:`instrumentation subsystem <instrumentation>` simplifies tracing and profiling of
  Zephyr applications by leveraging compiler-managed function instrumentation, allowing the
  recording of call-graph traces and statistical profiles at runtime.

**OCPP 1.6 library**
  A new :ref:`OCPP (Open Charge Point Protocol) <ocpp_interface>` library enables EV charging
  station development with Zephyr. The library implements OCPP 1.6 Charge Point functionality
  over WebSocket, supporting core profile operations including authorization, transaction
  management, and meter value reporting for communication with Central System servers.

**Twister Display Harness**
  Twister can now :ref:`validate on-target display output <twister_display_capture_harness>` by
  capturing frames from a USB video camera and matching them against pre-recorded visual
  "fingerprints".

**Developer Experience Improvements**
  Several new tools have been introduced to help with common development and troubleshooting tasks:

  - :ref:`dtdoctor` to help diagnose Devicetree build errors.
  - :ref:`traceconfig <kconfig_traceconfig>` build target to help understand where Kconfig symbols
    come from and their final values.
  - :ref:`Interactive footprint charts <footprint_tools_plot>` to visualize RAM/ROM usage of an
    application.

**Expanded Board Support**
  Support for 105 :ref:`new boards <boards_added_in_zephyr_4_3>` and 39
  :ref:`new shields <shields_added_in_zephyr_4_3>` has been added in this release.

An overview of the changes required or recommended when migrating your application from Zephyr
v4.2.0 to Zephyr v4.3.0 can be found in the separate :ref:`migration guide<migration_4.3>`.

The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************
The following CVEs are addressed by this release:

* :cve:`2025-9408` `Zephyr project bug tracker GHSA-3r6j-5mp3-75wr
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3r6j-5mp3-75wr>`_
* :cve:`2025-9557`: Under embargo until 2025-11-24
* :cve:`2025-9558`: Under embargo until 2025-11-24
* :cve:`2025-12035`: Under embargo until 2025-12-13
* :cve:`2025-12899`: Under embargo until 2026-01-28
* :cve:`2025-59438` `Padding oracle through timing of cipher error reporting
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-invalid-padding-error/>`_
* :cve:`2025-54764` `Side channel in RSA key generation and operations (SSBleed, M-Step)
  <https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-ssbleed-mstep/>`_

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

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

..
  Only removed, deprecated and new APIs, changes go in migration guide.

* Crypto

  * The input buffer in :c:struct:`hash_pkt` is now constant

Removed APIs and options
========================

* The TinyCrypt library was removed as the upstream version is no longer maintained.
  PSA Crypto API is now the recommended cryptographic library for Zephyr.
* The legacy pipe object API was removed. Use the new pipe API instead.
* ``bt_le_set_auto_conn``
* ``CONFIG_BT_BUF_ACL_RX_COUNT``
* ``ok`` enum value has now been removed completely from ``base.yaml`` binding ``status`` property in Devicetree.
* STM32 LPTIM clock source selection through Kconfig was removed. Devicetree must now be used instead.
  Affected Kconfig symbols: :kconfig:option:`CONFIG_STM32_LPTIM_CLOCK_LSI` / :kconfig:option:`CONFIG_STM32_LPTIM_CLOCK_LSE`

Deprecated APIs and options
===========================

* :dtcompatible:`maxim,ds3231` is deprecated in favor of :dtcompatible:`maxim,ds3231-rtc`.
* Providing a third argument to :c:macro:`SPI_CONFIG_DT`, :c:macro:`SPI_CONFIG_DT_INST`,
  :c:macro:`SPI_DT_SPEC_GET`, :c:macro:`SPI_DT_SPEC_INST_GET` is deprecated. Providing a
  second argument to :c:macro:`SPI_CS_CONTROL_INIT` is deprecated. Use new DT properties
  ``spi-cs-setup-delay-ns`` and ``spi-cs-hold-delay-ns`` to specify delay instead.

* :c:enum:`bt_hci_bus` was deprecated as it was not used. :c:macro:`BT_DT_HCI_BUS_GET` should be
  used instead.

* :kconfig:option:`CONFIG_BT_AUTO_PHY_UPDATE` was deprecated and has been replaced with
  role-specific (central vs peripheral) options that allow specifying exactly which PHY is
  preferred for automatic updates.

* :kconfig:option:`CONFIG_POSIX_READER_WRITER_LOCKS` is deprecated. Use :kconfig:option:`CONFIG_POSIX_RW_LOCKS` instead.

* :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` is deprecated. Please switch to the
  PSA Crypto API based alternative (i.e. :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA`).

* RISCV's :kconfig:option:`CONFIG_EXTRA_EXCEPTION_INFO` is deprecated. Use :kconfig:option:`CONFIG_EXCEPTION_DEBUG` instead.

New APIs and options
====================

..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

.. zephyr-keep-sorted-start re(^\* \w)

* Architectures

  * :kconfig:option:`CONFIG_ARCH_HAS_HW_SHADOW_STACK`
  * :kconfig:option:`CONFIG_SRAM_SW_ISR_TABLE`

  * x86 Intel CET support

    * :kconfig:option:`CONFIG_X86_CET`
    * :kconfig:option:`CONFIG_X86_CET_IBT`
    * :kconfig:option:`CONFIG_X86_CET_SHADOW_STACK_ALIGNMENT`
    * :kconfig:option:`CONFIG_X86_CET_SOC_PREPARE_SHADOW_STACK_SWITCH`
    * :kconfig:option:`CONFIG_X86_CET_VERIFY_KERNEL_SHADOW_STACK`

  * ARM (Cortex-M) system state save/restore primitives

    * :c:func:`z_arm_save_scb_context` / :c:func:`z_arm_restore_scb_context`
    * :c:func:`z_arm_save_mpu_context` / :c:func:`z_arm_restore_mpu_context`
    * Existing :c:func:`z_arm_save_fp_context` and :c:func:`z_arm_save_fp_context` have also been updated

  * Xtensa

    * :kconfig:option:`CONFIG_XTENSA_HIFI_SHARING_MODEL`
    * :kconfig:option:`CONFIG_XTENSA_EAGER_HIFI_SHARING`
    * :kconfig:option:`CONFIG_XTENSA_LAZY_HIFI_SHARING`
    * :kconfig:option:`CONFIG_XTENSA_EXCEPTION_ENTER_GDB`

* Bluetooth

  * Audio

    * :c:struct:`bt_audio_codec_cfg` now contains a target_latency and a target_phy option
    * :c:func:`bt_bap_broadcast_source_foreach_stream`
    * :c:func:`bt_cap_initiator_broadcast_foreach_stream`
    * :c:struct:`bt_bap_stream` now contains an ``iso`` field as a reference to the ISO channel
    * :c:func:`bt_bap_unicast_group_get_info`
    * :c:func:`bt_cap_unicast_group_get_info`
    * :c:func:`bt_bap_unicast_client_unregister_cb`

  * Host

    * :c:struct:`bt_iso_unicast_info` now contains a ``cig_id`` and a ``cis_id`` field
    * :c:struct:`bt_iso_broadcaster_info` now contains a ``big_handle`` and a ``bis_number`` field
    * :c:struct:`bt_iso_sync_receiver_info` now contains a ``big_handle`` and a ``bis_number`` field
    * :c:struct:`bt_le_ext_adv_info` now contains an ``sid`` field with the Advertising Set ID.
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_PERIPHERAL_NONE`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_PERIPHERAL_1M`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_PERIPHERAL_2M`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_PERIPHERAL_CODED`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_CENTRAL_NONE`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_CENTRAL_1M`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_CENTRAL_2M`
    * :kconfig:option:`CONFIG_BT_AUTO_PHY_CENTRAL_CODED`

* CPUFreq

  * Introduced experimental dynamic CPU frequency scaling subsystem

    * :kconfig:option:`CONFIG_CPU_FREQ`

* Cellular

  * :c:enumerator:`CELLULAR_EVENT_MODEM_COMMS_CHECK_RESULT`

* Crypto

  * :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS`

* Display

  * :c:enumerator:`PIXEL_FORMAT_AL_88`

  * SDL

    * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_AL_88`
    * :kconfig:option:`CONFIG_SDL_DISPLAY_COLOR_TINT`

* Ethernet

   * The devicetree property ``default-speeds`` was added to most of the ethernet phys to configure
     the advertised speeds for auto-negotiation during initialization of the driver.

* Haptics

  * :kconfig:option:`CONFIG_HAPTICS_SHELL`

* Instrumentation subsystem

  * Introduced instrumentation subsystem

    * :kconfig:option:`CONFIG_INSTRUMENTATION`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_CALLGRAPH`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_CALLGRAPH_BUFFER_SIZE`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_CALLGRAPH_BUFFER_OVERWRITE`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_STATISTICAL`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_STATISTICAL_MAX_NUM_FUNC`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_MODE_STATISTICAL_MAX_CALL_DEPTH`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_TRIGGER_FUNCTION`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_STOPPER_FUNCTION`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_EXCLUDE_FUNCTION_LIST`
    * :kconfig:option:`CONFIG_INSTRUMENTATION_EXCLUDE_FILE_LIST`
    * :c:struct:`instr_header`
    * :c:struct:`instr_event_context`
    * :c:struct:`instr_record`
    * :c:func:`instr_tracing_supported`
    * :c:func:`instr_profiling_supported`
    * :c:func:`instr_fundamentals_initialized`
    * :c:func:`instr_init`
    * :c:func:`instr_initialized`
    * :c:func:`instr_enabled`
    * :c:func:`instr_enable`
    * :c:func:`instr_disable`
    * :c:func:`instr_turn_on`
    * :c:func:`instr_turn_off`
    * :c:func:`instr_turned_on`
    * :c:func:`instr_trace_enabled`
    * :c:func:`instr_profile_enabled`
    * :c:func:`instr_dump_buffer_uart`
    * :c:func:`instr_dump_deltas_uart`
    * :c:func:`instr_event_handler`
    * :c:func:`instr_set_trigger_func`
    * :c:func:`instr_set_stop_func`
    * :c:func:`instr_get_trigger_func`
    * :c:func:`instr_get_stop_func`

* Kernel

  * :kconfig:option:`CONFIG_HW_SHADOW_STACK`
  * :kconfig:option:`CONFIG_HW_SHADOW_STACK_ALLOW_REUSE`
  * :kconfig:option:`CONFIG_HW_SHADOW_STACK_MIN_SIZE`
  * :kconfig:option:`CONFIG_HW_SHADOW_STACK_PERCENTAGE_SIZE`
  * :c:macro:`K_THREAD_HW_SHADOW_STACK_SIZE`
  * :c:macro:`K_KERNEL_HW_SHADOW_STACK_DECLARE`
  * :c:macro:`K_KERNEL_HW_SHADOW_STACK_ARRAY_DECLARE`
  * :c:macro:`K_THREAD_HW_SHADOW_STACK_DEFINE`
  * :c:macro:`K_THREAD_HW_SHADOW_STACK_ARRAY_DEFINE`
  * :c:macro:`K_THREAD_HW_SHADOW_STACK_ATTACH`
  * :c:macro:`k_thread_hw_shadow_stack_attach`

* LVGL (Light and Versatile Graphics Library)

  * :kconfig:option:`CONFIG_LV_Z_MEMORY_POOL_ZEPHYR_REGION`
  * :kconfig:option:`CONFIG_LV_Z_MEMORY_POOL_ZEPHYR_REGION_NAME`
  * :kconfig:option:`CONFIG_LV_Z_VDB_ZEPHYR_REGION`
  * :kconfig:option:`CONFIG_LV_Z_VDB_ZEPHYR_REGION_NAME`

* Logging:

  * :kconfig:option:`CONFIG_LOG_BACKEND_SWO_SYNC_PACKETS`

  * Added options to skip timestamp and level in log backends.

    * :kconfig:option:`CONFIG_LOG_BACKEND_SHOW_TIMESTAMP`
    * :kconfig:option:`CONFIG_LOG_BACKEND_SHOW_LEVEL`

  * Added rate-limited logging macros to prevent log flooding when messages are generated frequently.

    * :c:macro:`LOG_ERR_RATELIMIT` - Rate-limited error logging macro (convenience)
    * :c:macro:`LOG_WRN_RATELIMIT` - Rate-limited warning logging macro (convenience)
    * :c:macro:`LOG_INF_RATELIMIT` - Rate-limited info logging macro (convenience)
    * :c:macro:`LOG_DBG_RATELIMIT` - Rate-limited debug logging macro (convenience)
    * :c:macro:`LOG_HEXDUMP_ERR_RATELIMIT` - Rate-limited error hexdump macro (convenience)
    * :c:macro:`LOG_HEXDUMP_WRN_RATELIMIT` - Rate-limited warning hexdump macro (convenience)
    * :c:macro:`LOG_HEXDUMP_INF_RATELIMIT` - Rate-limited info hexdump macro (convenience)
    * :c:macro:`LOG_HEXDUMP_DBG_RATELIMIT` - Rate-limited debug hexdump macro (convenience)
    * :c:macro:`LOG_ERR_RATELIMIT_RATE` - Rate-limited error logging macro (explicit rate)
    * :c:macro:`LOG_WRN_RATELIMIT_RATE` - Rate-limited warning logging macro (explicit rate)
    * :c:macro:`LOG_INF_RATELIMIT_RATE` - Rate-limited info logging macro (explicit rate)
    * :c:macro:`LOG_DBG_RATELIMIT_RATE` - Rate-limited debug logging macro (explicit rate)
    * :c:macro:`LOG_HEXDUMP_ERR_RATELIMIT_RATE` - Rate-limited error hexdump macro (explicit rate)
    * :c:macro:`LOG_HEXDUMP_WRN_RATELIMIT_RATE` - Rate-limited warning hexdump macro (explicit rate)
    * :c:macro:`LOG_HEXDUMP_INF_RATELIMIT_RATE` - Rate-limited info hexdump macro (explicit rate)
    * :c:macro:`LOG_HEXDUMP_DBG_RATELIMIT_RATE` - Rate-limited debug hexdump macro (explicit rate)

* Management

  * hawkBit

    * :kconfig:option:`CONFIG_HAWKBIT_REBOOT_NONE`
    * :kconfig:option:`CONFIG_HAWKBIT_CONFIRM_IMG_ON_INIT`
    * :kconfig:option:`CONFIG_HAWKBIT_ERASE_SECOND_SLOT_ON_CONFIRM`

  * MCUmgr

    * :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UDP_DTLS`
    * :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_SLOT`

* Modem

  * :kconfig:option:`CONFIG_MODEM_DEDICATED_WORKQUEUE`

* NVMEM

  * Introduced :ref:`Non-Volatile Memory (NVMEM)<nvmem>` subsystem

    * :kconfig:option:`CONFIG_NVMEM`
    * :kconfig:option:`CONFIG_NVMEM_EEPROM`
    * :c:struct:`nvmem_cell`
    * :c:func:`nvmem_cell_read`
    * :c:func:`nvmem_cell_write`
    * :c:func:`nvmem_cell_is_ready`
    * :c:macro:`NVMEM_CELL_GET_BY_NAME` - and variants
    * :c:macro:`NVMEM_CELL_GET_BY_IDX` - and variants

* Networking

  * CoAP

    * :c:struct:`coap_client_response_data`
    * :c:member:`coap_client_request.payload_cb`
    * :kconfig:option:`CONFIG_COAP_CLIENT_MAX_PATH_LENGTH`
    * :kconfig:option:`CONFIG_COAP_CLIENT_MAX_EXTRA_OPTIONS`

  * Connection manager

    * :c:macro:`NET_EVENT_CONN_IF_IDLE_TIMEOUT`
    * :c:func:`conn_mgr_if_set_idle_timeout`
    * :c:func:`conn_mgr_if_get_idle_timeout`
    * :c:func:`conn_mgr_if_used`

  * DNS

    * :c:enumerator:`DNS_QUERY_TYPE_CNAME`
    * :c:enumerator:`DNS_QUERY_TYPE_TXT`
    * :c:enumerator:`DNS_QUERY_TYPE_SRV`
    * :c:func:`dns_resolve_enable_packet_forwarding`
    * :c:func:`dns_resolve_remove_server_addresses`

  * HTTP

    * :kconfig:option:`CONFIG_HTTP_SERVER_STATIC_FS_RESPONSE_SIZE`
    * :c:struct:`http_service_config`

  * IPv6

    * :kconfig:option:`CONFIG_NET_IPV6_NS_TIMEOUT`
    * :c:func:`net_ipv6_get_addr_mcast_scope`

  * LwM2M

    * :c:type:`lwm2m_cache_filter_cb_t`
    * :c:func:`lwm2m_set_cache_filter`

  * MQTT-SN

    * :c:func:`mqtt_sn_predefine_topic`
    * :c:func:`mqtt_sn_update_will_topic`
    * :c:func:`mqtt_sn_update_will_message`
    * :c:func:`mqtt_sn_define_short_topic`

  * Misc

    * :kconfig:option:`CONFIG_NET_LATMON`
    * :kconfig:option:`CONFIG_NETMIDI2_HOST`
    * :kconfig:option:`CONFIG_OCPP`
    * :c:member:`npf_rule.priority`
    * :c:macro:`NPF_PRIORITY`
    * :kconfig:option:`CONFIG_NET_CONFIG_CLOCK_SNTP_SET_RTC`
    * :c:func:`ppp_peer_async_control_character_map`

  * OpenThread

    * :kconfig:option:`CONFIG_OPENTHREAD_ZEPHYR_BORDER_ROUTER`
    * :kconfig:option:`CONFIG_OPENTHREAD_BORDER_ROUTING_DHCP6_PD_CLIENT`
    * :kconfig:option:`CONFIG_OPENTHREAD_CHANNEL_MONITOR_AUTO_START`
    * :kconfig:option:`CONFIG_OPENTHREAD_MAC_BEACON_PAYLOAD_PARSING`
    * :kconfig:option:`CONFIG_OPENTHREAD_MULTIPLE_INSTANCE_NUM`
    * :kconfig:option:`CONFIG_OPENTHREAD_PLATFORM_RADIO_COEX_ENABLE`
    * :kconfig:option:`CONFIG_OPENTHREAD_PLATFORM_USEC_TIMER`
    * :kconfig:option:`CONFIG_OPENTHREAD_RCP_RESTORATION_MAX_COUNT`
    * :kconfig:option:`CONFIG_OPENTHREAD_SRP_SERVER_FAST_START`
    * :kconfig:option:`CONFIG_OPENTHREAD_TREL_MANAGE_DNSSD`

  * Sockets

    * :c:func:`zsock_listen` now implements the ``backlog`` parameter support. The TCP server
      socket will limit the number of pending incoming connections to that value.
    * :c:macro:`IP_RECVTTL`
    * :c:macro:`IPV6_PKTINFO`
    * :c:macro:`IPV6_RECVHOPLIMIT`
    * :c:macro:`IPV6_HOPLIMIT`

  * Wi-Fi

    * :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_DEBUG_SHOW_KEYS`
    * Set enterprise crypto insecure because certificate validation is disabled.
    * If the usage mode option has AP enabled, then automatically enable AP mode.
    * Add configuration options for background scanning (bgscan) in wpa_supplicant.
    * Add support for multiple virtual interfaces (VIF).

* Newlib

  * :kconfig:option:`CONFIG_NEWLIB_LIBC_USE_POSIX_LIMITS_H`

* Opamp

  * Introduced opamp device driver APIs selected with :kconfig:option:`CONFIG_OPAMP`. It supports
    initial configuration through Devicetree and runtime configuration through vendor specific APIs.
  * Added support for NXP OPAMP :dtcompatible:`nxp,opamp`.
  * Added support for NXP OPAMP_FAST :dtcompatible:`nxp,opamp_fast`.

* Power management

   * :c:func:`pm_device_driver_deinit`
   * :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME_DEFAULT_ENABLE`
   * :kconfig:option:`CONFIG_PM_S2RAM` has been refactored to be promptless. The application now
     only needs to enable any "suspend-to-ram" power state in the Devicetree.
   * The :kconfig:option:`PM_S2RAM_CUSTOM_MARKING` has been renamed to
     :kconfig:option:`HAS_PM_S2RAM_CUSTOM_MARKING` and refactored to be promptless. This option
     is now selected by SoCs if they need it for their "suspend-to-ram" implementations.

* Settings

   * :kconfig:option:`CONFIG_SETTINGS_TFM_ITS`

* Shell

   * MQTT backend

      * :kconfig:option:`CONFIG_SHELL_MQTT_TOPIC_RX_ID`
      * :kconfig:option:`CONFIG_SHELL_MQTT_TOPIC_TX_ID`
      * :kconfig:option:`CONFIG_SHELL_MQTT_CONNECT_TIMEOUT_MS`
      * :kconfig:option:`CONFIG_SHELL_MQTT_WORK_DELAY_MS`
      * :kconfig:option:`CONFIG_SHELL_MQTT_LISTEN_TIMEOUT_MS`

* State Machine Framework

  * :c:func:`smf_get_current_leaf_state`
  * :c:func:`smf_get_current_executing_state`

* Storage

    * :kconfig:option:`CONFIG_FILE_SYSTEM_SHELL_LS_SIZE`

* Sys

  * :c:func:`sys_count_bits`

* Task Watchdog

  * :kconfig:option:`CONFIG_TASK_WDT_DUMMY`

* Toolchain

  * :c:macro:`__deprecated_version`

* USB

  * Video

    * :c:func:`uvc_add_format`

* Video

  * :c:member:`video_format.size` field
  * :c:func:`video_estimate_fmt_size`
  * :c:func:`video_transfer_buffer`

.. zephyr-keep-sorted-stop

.. _boards_added_in_zephyr_4_3:

New Boards
**********

..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.

* Adafruit Industries, LLC

   * :zephyr:board:`adafruit_feather_adalogger_rp2040` (``adafruit_feather_adalogger_rp2040``)
   * :zephyr:board:`adafruit_feather_canbus_rp2040` (``adafruit_feather_canbus_rp2040``)
   * :zephyr:board:`adafruit_feather_esp32` (``adafruit_feather_esp32``)
   * :zephyr:board:`adafruit_feather_rfm95_rp2040` (``adafruit_feather_rfm95_rp2040``)
   * :zephyr:board:`adafruit_feather_rp2040` (``adafruit_feather_rp2040``)
   * :zephyr:board:`adafruit_itsybitsy_rp2040` (``adafruit_itsybitsy_rp2040``)
   * :zephyr:board:`adafruit_metro_rp2040` (``adafruit_metro_rp2040``)
   * :zephyr:board:`adafruit_metro_rp2350` (``adafruit_metro_rp2350``)
   * :zephyr:board:`adafruit_trinkey_qt2040` (``adafruit_trinkey_qt2040``)

* Advanced Micro Devices (AMD), Inc.

   * :zephyr:board:`versalnet_apu` (``versalnet_apu``)

* Ai-Thinker Co., Ltd.

   * :zephyr:board:`ai_m62_12f_kit` (``ai_m62_12f_kit``)
   * :zephyr:board:`esp32_cam` (``esp32_cam``)

* Ambiq Micro, Inc.

   * :zephyr:board:`apollo2_evb` (``apollo2_evb``)

* Analog Devices, Inc.

   * :zephyr:board:`max32658evkit` (``max32658evkit``)

* Arduino

   * :zephyr:board:`arduino_uno_q` (``arduino_uno_q``)

* Core Devices LLC

   * :zephyr:board:`p2d` (``p2d``)
   * :zephyr:board:`pt2` (``pt2``)

* DFRobot

   * :zephyr:board:`beetle_rp2040` (``beetle_rp2040``)

* Doctors of Intelligence & Technology

   * :zephyr:board:`dt_xt_zb1_devkit` (``dt_xt_zb1_devkit``)

* Egis Technology Inc

   * :zephyr:board:`egis_et171` (``egis_et171``)

* Espressif Systems

   * :zephyr:board:`esp32h2_devkitm` (``esp32h2_devkitm``)

* FANKE Technology Co., Ltd.

   * :zephyr:board:`fk723m1_zgt6` (``fk723m1_zgt6``)

* Firefly

   * :zephyr:board:`roc_rk3588_pc` (``roc_rk3588_pc``)

* FoBE Studio

   * :zephyr:board:`quill_nrf52840_mesh` (``quill_nrf52840_mesh``)

* Guangdong Embedsky Technology Co., Ltd.

   * :zephyr:board:`tq_h503a` (``tq_h503a``)

* Infineon Technologies

   * :zephyr:board:`kit_psc3m5_evk` (``kit_psc3m5_evk``)
   * :zephyr:board:`kit_pse84_ai` (``kit_pse84_ai``)
   * :zephyr:board:`kit_pse84_eval` (``kit_pse84_eval``)

* Intel Corporation

   * :zephyr:board:`intel_ptl_h_crb` (``intel_ptl_h_crb``)

* Microchip Technology Inc.

   * :zephyr:board:`pic32cm_jh01_cnano` (``pic32cm_jh01_cnano``)
   * :zephyr:board:`pic32cm_jh01_cpro` (``pic32cm_jh01_cpro``)
   * :zephyr:board:`pic32cx_sg61_cult` (``pic32cx_sg61_cult``)
   * :zephyr:board:`pic32cz_ca80_cult` (``pic32cz_ca80_cult``)
   * :zephyr:board:`sam_e54_xpro` (``sam_e54_xpro``)
   * :zephyr:board:`sama7d65_curiosity` (``sama7d65_curiosity``)

* Nuvoton Technology Corporation

   * :zephyr:board:`numaker_m3334ki` (``numaker_m3334ki``)
   * :zephyr:board:`numaker_m5531` (``numaker_m5531``)

* NXP Semiconductors

   * :zephyr:board:`frdm_imx91` (``frdm_imx91``)
   * :zephyr:board:`frdm_imx93` (``frdm_imx93``)
   * :zephyr:board:`frdm_k32l2b3` (``frdm_k32l2b3``)
   * :zephyr:board:`frdm_mcxa344` (``frdm_mcxa344``)
   * :zephyr:board:`frdm_mcxa266` (``frdm_mcxa266``)
   * :zephyr:board:`frdm_mcxa346` (``frdm_mcxa346``)
   * :zephyr:board:`frdm_mcxa366` (``frdm_mcxa366``)
   * :zephyr:board:`frdm_mcxe247` (``frdm_mcxe247``)
   * :zephyr:board:`frdm_mcxe31b` (``frdm_mcxe31b``)
   * :zephyr:board:`frdm_mcxw23` (``frdm_mcxw23``)
   * :zephyr:board:`imx91_qsb` (``imx91_qsb``)
   * :zephyr:board:`imx95_evk_15x15` (``imx95_evk_15x15``)
   * :zephyr:board:`mcx_n9xx_evk` (``mcx_n9xx_evk``)
   * :zephyr:board:`mcx_n5xx_evk` (``mcx_n5xx_evk``)
   * :zephyr:board:`mcxw23_evk` (``mcxw23_evk``)

* Panasonic Corporation

   * :zephyr:board:`panb611evb` (``panb611evb``)

* PCB Cupid

   * :zephyr:board:`glyph_c6` (``glyph_c6``)

* RAKwireless Technology Limited

   * :zephyr:board:`rak3112` (``rak3112``)

* Raspberry Pi Foundation

   * :zephyr:board:`rpi_debug_probe` (``rpi_debug_probe``)

* Renesas Electronics Corporation

   * :zephyr:board:`ek_ra4c1` (``ek_ra4c1``)
   * :zephyr:board:`ek_ra8d2` (``ek_ra8d2``)
   * :zephyr:board:`ek_ra8m2` (``ek_ra8m2``)
   * :zephyr:board:`ek_rx261` (``ek_rx261``)
   * :zephyr:board:`fpb_rx261` (``fpb_rx261``)
   * :zephyr:board:`mcb_rx26t` (``mcb_rx26t``)
   * :zephyr:board:`mck_ra8t2` (``mck_ra8t2``)
   * :zephyr:board:`rssk_ra2l1` (``rssk_ra2l1``)

* Seeed Technology Co., Ltd

   * :zephyr:board:`wio_wm1110_dev_kit` (``wio_wm1110_dev_kit``)
   * :zephyr:board:`xiao_nrf54l15` (``xiao_nrf54l15``)

* Shanghai Ruiside Electronic Technology Co., Ltd.

   * :zephyr:board:`art_pi` (``art_pi``)

* Shenzhen Holyiot Technology Co., Ltd.

   * :zephyr:board:`holyiot_yj17095` (``holyiot_yj17095``)

* SiFli Technologies(Nanjing) Co., Ltd

   * :zephyr:board:`sf32lb52_devkit_lcd` (``sf32lb52_devkit_lcd``)

* Silicon Laboratories

   * :zephyr:board:`bgm220_ek4314a` (``bgm220_ek4314a``)
   * :zephyr:board:`pg23_pk2504a` (``pg23_pk2504a``)
   * :zephyr:board:`pg28_pk2506a` (``pg28_pk2506a``)
   * :zephyr:board:`siwx917_dk2605a` (``siwx917_dk2605a``)
   * :zephyr:board:`bg22_ek4108a` (``bg22_ek4108a``)
   * :zephyr:board:`xg22_ek2710a` (``xg22_ek2710a``)
   * :zephyr:board:`mgm260p_ek2713a` (``mgm260p_ek2713a``)
   * :zephyr:board:`pg26_ek2711a` (``pg26_ek2711a``)
   * :zephyr:board:`xg26_ek2709a` (``xg26_ek2709a``)
   * :zephyr:board:`bg29_rb4420a` (``bg29_rb4420a``)
   * :zephyr:board:`slwrb4182a` (``slwrb4182a``)
   * :zephyr:board:`slwrb4311a` (``slwrb4311a``)
   * :zephyr:board:`xg24_rb4186c` (``xg24_rb4186c``)
   * :zephyr:board:`xg24_rb4187c` (``xg24_rb4187c``)
   * :zephyr:board:`xgm240_rb4316a` (``xgm240_rb4316a``)
   * :zephyr:board:`xgm240_rb4317a` (``xgm240_rb4317a``)
   * :zephyr:board:`mgm260p_rb4350a` (``mgm260p_rb4350a``)
   * :zephyr:board:`xg26_rb4118a` (``xg26_rb4118a``)
   * :zephyr:board:`xg26_rb4120a` (``xg26_rb4120a``)
   * :zephyr:board:`bg27_rb4110b` (``bg27_rb4110b``)
   * :zephyr:board:`bg27_rb4111b` (``bg27_rb4111b``)
   * :zephyr:board:`xg27_rb4194a` (``xg27_rb4194a``)
   * :zephyr:board:`xg28_rb4401c` (``xg28_rb4401c``)

* SparkFun Electronics

   * :zephyr:board:`sparkfun_samd21_breakout` (``sparkfun_samd21_breakout``)

* SteelSeries

   * :zephyr:board:`apex_pro_mini` (``apex_pro_mini``)

* STMicroelectronics

   * :zephyr:board:`nucleo_c092rc` (``nucleo_c092rc``)
   * :zephyr:board:`stm32mp257f_dk` (``stm32mp257f_dk``)
   * :zephyr:board:`stm32wba65i_dk1` (``stm32wba65i_dk1``)

* Texas Instruments

   * :zephyr:board:`lp_mspm0g3519` (``lp_mspm0g3519``)
   * :zephyr:board:`lp_mspm0l2228` (``lp_mspm0l2228``)

* Toradex AG

   * :zephyr:board:`verdin_am62` (``verdin_am62``)

* Waveshare Electronics

   * :zephyr:board:`rp2040_geek` (``rp2040_geek``)
   * :zephyr:board:`rp2040_keyboard_3` (``rp2040_keyboard_3``)
   * :zephyr:board:`rp2040_matrix` (``rp2040_matrix``)

* WeAct Studio

   * :zephyr:board:`blackpill_h523ce` (``blackpill_h523ce``)
   * :zephyr:board:`blackpill_u585ci` (``blackpill_u585ci``)
   * :zephyr:board:`weact_esp32c3_mini` (``weact_esp32c3_mini``)
   * :zephyr:board:`weact_esp32c6_mini` (``weact_esp32c6_mini``)
   * :zephyr:board:`weact_esp32s3_mini` (``weact_esp32s3_mini``)
   * :zephyr:board:`weact_stm32g030_core` (``weact_stm32g030_core``)
   * :zephyr:board:`weact_stm32wb55_core` (``weact_stm32wb55_core``)
   * :zephyr:board:`weact_esp32s3_b` (``weact_esp32s3_b``)

.. _shields_added_in_zephyr_4_3:

New Shields
***********

  * :ref:`Adafruit 24LC32 EEPROM Shield <adafruit_24lc32>`
  * :ref:`Adafruit AHT20 Shield <adafruit_aht20>`
  * :ref:`Adafruit APDS9960 Shield <adafruit_apds9960>`
  * :ref:`Adafruit DPS310 Shield <adafruit_dps310>`
  * :ref:`Adafruit DRV2605L Shield <adafruit_drv2605l>`
  * :ref:`Adafruit FeatherWing 128x32 OLED Shield <adafruit_featherwing_128x32_oled>`
  * :ref:`Adafruit HT16K33 LED Matrix Shield <adafruit_ht16k33>`
  * :ref:`Adafruit I2C to 8 Channel Solenoid Driver Shield <adafruit_8chan_solenoid>`
  * :ref:`Adafruit INA219 Shield <adafruit_ina219>`
  * :ref:`Adafruit INA237 Shield <adafruit_ina237>`
  * :ref:`Adafruit LIS2MDL Shield <adafruit_lis2mdl>`
  * :ref:`Adafruit LIS3DH Shield <adafruit_lis3dh>`
  * :ref:`Adafruit LTR-329 Shield <adafruit_ltr329>`
  * :ref:`Adafruit MCP9808 Shield <adafruit_mcp9808>`
  * :ref:`Adafruit PCF8523 Shield <adafruit_pcf8523>`
  * :ref:`Adafruit TSL2591 Shield <adafruit_tsl2591>`
  * :ref:`Adafruit VCNL4040 Shield <adafruit_vcnl4040>`
  * :ref:`Adafruit VEML7700 Shield <adafruit_veml7700>`
  * :ref:`ArduCam CU450 OV5640 Camera Module <arducam_cu450_ov5640>`
  * :ref:`Arduino Modulino Movement <arduino_modulino_movement>`
  * :ref:`Arduino Modulino Thermo <arduino_modulino_thermo>`
  * :ref:`MikroElektronika 3D Hall 3 Click <mikroe_3d_hall_3_click_shield>`
  * :ref:`MikroElektronika Air Quality 3 Click <mikroe_air_quality_3_click_shield>`
  * :ref:`MikroElektronika Ambient 2 Click <mikroe_ambient_2_click_shield>`
  * :ref:`MikroElektronika H Bridge 4 Click <mikroe_h_bridge_4_click_shield>`
  * :ref:`MikroElektronika Illuminance Click <mikroe_illuminance_click_shield>`
  * :ref:`MikroElektronika IR Gesture Click <mikroe_ir_gesture_click_shield>`
  * :ref:`MikroElektronika LSM6DSL Click <mikroe_lsm6dsl_click_shield>`
  * :ref:`MikroElektronika Pressure 3 Click <mikroe_pressure_3_click_shield>`
  * :ref:`MikroElektronika Proximity 9 Click <mikroe_proximity_9_click_shield>`
  * :ref:`MikroElektronika RTC 18 Click <mikroe_rtc_18_click_shield>`
  * :ref:`Nordic nPM1304 EK <npm1304_ek>`
  * :ref:`Olimex SHIELD-MIDI <olimex_shield_midi>`
  * :ref:`Renesas EK-RA8D1 to RTK7EKA6M3B00001BU Display Adapter <ek_ra8d1_rtk7eka6m3b00001bu>`
  * :ref:`Renesas RTK0EG0019B01002BJ Capacitive Touch Application Shield <rtk0eg0019b01002bj>`
  * :ref:`Sierra Wireless HL/RC Module Evaluation Kit Shield <swir_hl78xx_ev_kit>`
  * :ref:`Sparkfun Environmental Combo Shield with ENS160 and BME280 <sparkfun_environmental_combo>`
  * :ref:`Sparkfun RV8803 Shield <sparkfun_rv8803>`
  * :ref:`Sparkfun SHTC3 Shield <sparkfun_shtc3>`

New Drivers
***********

..
  Same as above for boards, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description


* :abbr:`ADC (Analog to Digital Converter)`

   * :dtcompatible:`adi,ad4170-adc`
   * :dtcompatible:`adi,ad4190-adc`
   * :dtcompatible:`adi,ad4195-adc`
   * :dtcompatible:`adi,max32-adc-b-me18`
   * :dtcompatible:`infineon,autanalog-sar-adc`
   * :dtcompatible:`infineon,hppass-sar-adc`
   * :dtcompatible:`nxp,sar-adc`
   * :dtcompatible:`renesas,rx-adc`
   * :dtcompatible:`renesas,rz-adc-c`
   * :dtcompatible:`silabs,iadc`

* ARM architecture

   * :dtcompatible:`microchip,sercom-g1`
   * :dtcompatible:`nuvoton,numaker-npu`
   * :dtcompatible:`renesas,ra-npu`

* Audio

   * :dtcompatible:`dlg,da7212`
   * :dtcompatible:`nxp,micfil`

* Auxiliary Display

   * :dtcompatible:`titanmec,tm1637`

* Cache

   * :dtcompatible:`bflb,l1c`

* Charger

   * :dtcompatible:`nxp,pca9422-charger`

* Clock control

   * :dtcompatible:`bflb,bl61x-clock-controller`
   * :dtcompatible:`bflb,bl70x-clock-controller`
   * :dtcompatible:`infineon,fixed-clock`
   * :dtcompatible:`infineon,fixed-factor-clock`
   * :dtcompatible:`infineon,peri-div`
   * :dtcompatible:`mediatek,mt818x_cpuclk`
   * :dtcompatible:`microchip,sam-d5x-e5x-clock`
   * :dtcompatible:`nordic,nrf-iron-hsfll-local`
   * :dtcompatible:`nxp,mc-cgm`
   * :dtcompatible:`renesas,ra-cgc-utasel`
   * :dtcompatible:`renesas,rz-cgc`
   * :dtcompatible:`sifli,sf32lb-rcc-clk`
   * :dtcompatible:`st,stm32f4-rcc`
   * :dtcompatible:`st,stm32fx-pllsai-clock`
   * :dtcompatible:`st,stm32h5-rcc`
   * :dtcompatible:`st,stm32l0-hsi-clock`
   * :dtcompatible:`st,stm32l4-pllsai-clock`
   * :dtcompatible:`ti,cc23x0-lf-xosc`

* Comparator

   * :dtcompatible:`nxp,cmp`
   * :dtcompatible:`renesas,ra-lvd`
   * :dtcompatible:`renesas,rx-lvd`
   * :dtcompatible:`st,stm32-comp`
   * :dtcompatible:`st,stm32g4-comp`
   * :dtcompatible:`st,stm32h7-comp`

* Counter

   * :dtcompatible:`infineon,tcpwm-counter`
   * :dtcompatible:`microchip,tcc-g1`
   * :dtcompatible:`nxp,imx-snvs-rtc`
   * :dtcompatible:`nxp,lpit`
   * :dtcompatible:`nxp,lpit-channel`
   * :dtcompatible:`nxp,stm`
   * :dtcompatible:`renesas,rz-cmtw-counter`

* CPU

   * :dtcompatible:`arm,cortex-a78`
   * :dtcompatible:`arm,cortex-m52`
   * :dtcompatible:`arm,cortex-m52f`
   * :dtcompatible:`intel,panther-lake`
   * :dtcompatible:`renesas,rxv1`
   * :dtcompatible:`renesas,rxv2`
   * :dtcompatible:`renesas,rxv3`
   * :dtcompatible:`snps,av5rhx`
   * :dtcompatible:`snps,av5rmx`
   * :dtcompatible:`xuantie,e907`

* :abbr:`CRC (Cyclic Redundancy Check)`

   * :dtcompatible:`renesas,ra-crc`

* Cryptographic accelerator

   * :dtcompatible:`espressif,esp32-aes`
   * :dtcompatible:`espressif,esp32-sha`
   * :dtcompatible:`nxp,els`
   * :dtcompatible:`st,stm32-hash`

* :abbr:`DAC (Digital to Analog Converter)`

   * :dtcompatible:`adi,ad5601`
   * :dtcompatible:`adi,ad5611`
   * :dtcompatible:`adi,ad5621`
   * :dtcompatible:`atmel,samd5x-dac`
   * :dtcompatible:`silabs,vdac`

* Debug

   * :dtcompatible:`nordic,coresight-nrf`

* Display

   * :dtcompatible:`chipone,co5300`
   * :dtcompatible:`himax,hx8379c`
   * :dtcompatible:`jdi,lpm013m126`
   * :dtcompatible:`nxp,imx-lcdifv3`
   * :dtcompatible:`sitronix,st7305`
   * :dtcompatible:`sitronix,st7306`
   * :dtcompatible:`sitronix,st7567`
   * :dtcompatible:`solomon,ssd1357`
   * :dtcompatible:`ultrachip,uc8151d`
   * :dtcompatible:`waveshare,7inch-dsi-lcd-c`
   * :dtcompatible:`zephyr,hub12`

* :abbr:`DMA (Direct Memory Access)`

   * :dtcompatible:`andestech,atcdmacx00`
   * :dtcompatible:`bflb,dma`
   * :dtcompatible:`nuvoton,npcx-gdma`
   * :dtcompatible:`renesas,ra-dma`
   * :dtcompatible:`renesas,rz-dmac`
   * :dtcompatible:`sifli,sf32lb-dmac`
   * :dtcompatible:`silabs,gpdma`

* Ethernet

   * :dtcompatible:`intel,eth-plat`
   * :dtcompatible:`intel,igc-mac`
   * :dtcompatible:`microchip,ksz9131`
   * :dtcompatible:`microchip,sam-ethernet-controller`
   * :dtcompatible:`nxp,imx-netc`
   * :dtcompatible:`nxp,imx-netc-blk-ctrl`
   * :dtcompatible:`virtio,net`

* Flash controller

   * :dtcompatible:`adi,max32-spixf-nor`
   * :dtcompatible:`bflb,flash-controller`
   * :dtcompatible:`ite,it51xxx-manual-flash-1k`
   * :dtcompatible:`microchip,nvmctrl-g1-flash`
   * :dtcompatible:`nordic,nrf-mramc`
   * :dtcompatible:`nxp,kinetis-ftfc`
   * :dtcompatible:`nxp,xspi-nor`
   * :dtcompatible:`renesas,ra-flash-lp-controller`
   * :dtcompatible:`renesas,ra-mram-controller`
   * :dtcompatible:`renesas,rz-qspi-spibsc`
   * :dtcompatible:`renesas,rz-qspi-xspi`

* File system

   * :dtcompatible:`zephyr,fstab,ext2`

* Fuel gauge

   * :dtcompatible:`adi,ltc2959`
   * :dtcompatible:`silergy,sy24561`
   * :dtcompatible:`ti,bq40z50`

* :abbr:`GPIO (General Purpose Input/Output)`

   * :dtcompatible:`aesc,gpio`
   * :dtcompatible:`arducam,ffc-40pin-connector`
   * :dtcompatible:`bflb,bl60x_70x-gpio`
   * :dtcompatible:`bflb,bl61x-gpio`
   * :dtcompatible:`fobe,quill-header`
   * :dtcompatible:`microchip,port-g1-gpio`
   * :dtcompatible:`microchip,sam-pio4`
   * :dtcompatible:`nxp,pca6408`
   * :dtcompatible:`nxp,pcal6408`
   * :dtcompatible:`nxp,pcal6416`
   * :dtcompatible:`nxp,pcal9538`
   * :dtcompatible:`nxp,pcal9539`
   * :dtcompatible:`nxp,pcal9722`
   * :dtcompatible:`sifli,sf32lb-gpio`
   * :dtcompatible:`sifli,sf32lb-gpio-parent`
   * :dtcompatible:`silabs,exp-header`
   * :dtcompatible:`silabs,gpio`
   * :dtcompatible:`silabs,gpio-port`

* Hardware information

   * :dtcompatible:`nxp,cmc-reset-cause`
   * :dtcompatible:`nxp,imx-src-rev2`
   * :dtcompatible:`nxp,rstctl-hwinfo`

* :abbr:`I2C (Inter-Integrated Circuit)`

   * :dtcompatible:`infineon,cat1-i2c-pdl`
   * :dtcompatible:`renesas,ra-i2c-sci`
   * :dtcompatible:`renesas,rz-iic`
   * :dtcompatible:`silabs,i2c`
   * :dtcompatible:`ti,cc23x0-i2c`

* :abbr:`I3C (Improved Inter-Integrated Circuit)`

   * :dtcompatible:`adi,max32-i3c`

* IEEE 802.15.4

   * :dtcompatible:`st,stm32wba-ieee802154`

* Input

   * :dtcompatible:`chipsemi,chsc5x`
   * :dtcompatible:`nxp,mcux-kpp`
   * :dtcompatible:`renesas,ra-ctsu`
   * :dtcompatible:`renesas,rx-ctsu`

* Interrupt controller

   * :dtcompatible:`hazard3,hazard3-intc`
   * :dtcompatible:`microchip,dmec-ecia-girq`
   * :dtcompatible:`nxp,wuu`
   * :dtcompatible:`renesas,rz-icu`
   * :dtcompatible:`renesas,rz-intc`
   * :dtcompatible:`sifive,clic-draft`

* :abbr:`LED (Light Emitting Diode)`

   * :dtcompatible:`leds-group-multicolor`
   * :dtcompatible:`nxp,pca9533`

* :abbr:`LED (Light Emitting Diode)` strip

   * :dtcompatible:`worldsemi,ws2812-uart`

* Mailbox

   * :dtcompatible:`renesas,ra-ipc-mbox`

* :abbr:`MDIO (Management Data Input/Output)`

   * :dtcompatible:`intel,igc-mdio`

* Memory controller

   * :dtcompatible:`bflb,bl61x-psram`
   * :dtcompatible:`motorola,mc146818-bbram`
   * :dtcompatible:`nxp,xspi-psram`
   * :dtcompatible:`st,stm32-ospi-psram`

* :abbr:`MFD (Multi-Function Device)`

   * :dtcompatible:`motorola,mc146818-mfd`
   * :dtcompatible:`nxp,pca9422`
   * :dtcompatible:`nxp,sc18is606`
   * :dtcompatible:`sifli,sf32lb-rcc`

* :abbr:`MIPI DSI (Mobile Industry Processor Interface Display Serial Interface)`

   * :dtcompatible:`nxp,mipi-dsi-dwc`
   * :dtcompatible:`st,stm32u5-mipi-dsi`

* Miscellaneous

   * :dtcompatible:`nxp,imx93-mediamix`
   * :dtcompatible:`nxp,rt600-dsp-ctrl`
   * :dtcompatible:`nxp,rt700-dsp-ctrl-hifi4`
   * :dtcompatible:`renesas,rx-dtc`
   * :dtcompatible:`st,stm32-npu`

* Modem

   * :dtcompatible:`quectel,bg96`
   * :dtcompatible:`swir,hl7812`
   * :dtcompatible:`swir,hl7812-gnss`
   * :dtcompatible:`swir,hl7812-offload`
   * :dtcompatible:`swir,hl78xx`
   * :dtcompatible:`swir,hl78xx-gnss`
   * :dtcompatible:`swir,hl78xx-offload`

* Multi-bit SPI

   * :dtcompatible:`nordic,nrf-qspi-v2`

* :abbr:`MTD (Memory Technology Device)`

   * :dtcompatible:`andestech,qspi-nor-xip`
   * :dtcompatible:`atmel,at25xv021a`
   * :dtcompatible:`infineon,fm25xxx`
   * :dtcompatible:`jedec,qspi-nor`
   * :dtcompatible:`renesas,ra-nv-mram`
   * :dtcompatible:`renesas,ra-qspi-nor`
   * :dtcompatible:`sifli,sf32lb-mpi-qspi-nor`

* :abbr:`OPAMP (Operational Amplifier)`

   * :dtcompatible:`nxp,opamp`
   * :dtcompatible:`nxp,opamp-fast`

* Pin control

   * :dtcompatible:`ambiq,apollo2-pinctrl`
   * :dtcompatible:`microchip,port-g1-pinctrl`
   * :dtcompatible:`nxp,imx-blkctrl-ns-aon`
   * :dtcompatible:`nxp,imx-blkctrl-wakeup`
   * :dtcompatible:`nxp,mcxe31x-siul2-pinctrl`
   * :dtcompatible:`sifli,sf32lb52x-pinmux`

* Power management

   * :dtcompatible:`ite,it8xxx2-power-elpm`
   * :dtcompatible:`nxp,cmc`
   * :dtcompatible:`nxp,spc`
   * :dtcompatible:`nxp,vbat`
   * :dtcompatible:`renesas,ra-battery-backup`
   * :dtcompatible:`sifli,sf32lb-aon`
   * :dtcompatible:`sifli,sf32lb52x-pmuc`

* Power domain

   * :dtcompatible:`nordic,nrfs-gdpwr`
   * :dtcompatible:`nordic,nrfs-swext`
   * :dtcompatible:`silabs,siwx91x-power-domain`

* :abbr:`PWM (Pulse Width Modulation)`

   * :dtcompatible:`ambiq,ctimer-pwm`
   * :dtcompatible:`ambiq,timer-pwm`
   * :dtcompatible:`infineon,tcpwm-pwm`
   * :dtcompatible:`microchip,tcc-g1-pwm`
   * :dtcompatible:`renesas,rz-mtu-pwm`
   * :dtcompatible:`ti,cc23x0-lgpt-pwm`

* Quad SPI

   * :dtcompatible:`adi,max32-spixf`
   * :dtcompatible:`renesas,ra-qspi`
   * :dtcompatible:`renesas,rz-spibsc`
   * :dtcompatible:`renesas,rz-xspi`

* Regulator

   * :dtcompatible:`nxp,pca9422-regulator`
   * :dtcompatible:`nxp,vrefv1`

* Reserved memory

   * :dtcompatible:`renesas,ofs-memory`

* Reset controller

   * :dtcompatible:`microchip,rstc-g1-reset`
   * :dtcompatible:`nxp,mrcc-reset`
   * :dtcompatible:`sifli,sf32lb-rcc-rctl`

* Retained memory

   * :dtcompatible:`sifli,sf32lb-rtc-backup`
   * :dtcompatible:`silabs,buram`

* :abbr:`RNG (Random Number Generator)`

   * :dtcompatible:`ambiq,puf-trng`
   * :dtcompatible:`nxp,els-trng`

* :abbr:`RTC (Real Time Clock)`

   * :dtcompatible:`microcrystal,rv3032`
   * :dtcompatible:`nxp,pcf85063a`
   * :dtcompatible:`renesas,ra-rtc`
   * :dtcompatible:`sifli,sf32lb-rtc`
   * :dtcompatible:`silabs,rtcc`
   * :dtcompatible:`silabs,sysrtc`
   * :dtcompatible:`ti,mspm0-rtc`
   * :dtcompatible:`zephyr,rtc-counter`

* Renesas RX

   * :dtcompatible:`renesas,rx-swint`

* :abbr:`SDHC (Secure Digital Host Controller)`

   * :dtcompatible:`microchip,sama7g5-sdmmc`
   * :dtcompatible:`st,stm32-sdio`

* Sensors

   * :dtcompatible:`allegro,als31300`
   * :dtcompatible:`invensense,icm42686`
   * :dtcompatible:`invensense,icm4268x`
   * :dtcompatible:`maxbotix,mb7040`
   * :dtcompatible:`maxim,max32664c`
   * :dtcompatible:`microchip,mtch9010`
   * :dtcompatible:`nxp,pmc-tmpsns`
   * :dtcompatible:`nxp,tmpsns`
   * :dtcompatible:`omron,2smpb-02e`
   * :dtcompatible:`omron,d6f-p0001`
   * :dtcompatible:`omron,d6f-p0010`
   * :dtcompatible:`pni,rm3100`
   * :dtcompatible:`st,iis3dwb`
   * :dtcompatible:`ti,hdc302x`
   * :dtcompatible:`ti,ina228`
   * :dtcompatible:`ti,ina7xx`
   * :dtcompatible:`vishay,veml6046`
   * :dtcompatible:`we,wsen-isds-2536030320001`
   * :dtcompatible:`we,wsen-pdms-25131308XXX05`

* Serial controller

   * :dtcompatible:`infineon,cat1-uart-pdl`
   * :dtcompatible:`microchip,sercom-g1-uart`
   * :dtcompatible:`sifli,sf32lb-usart`
   * :dtcompatible:`virtio,console`
   * :dtcompatible:`zephyr,uart-bitbang`

* :abbr:`SPI (Serial Peripheral Interface)`

   * :dtcompatible:`egis,et171-spi`
   * :dtcompatible:`infineon,cat1-spi-pdl`
   * :dtcompatible:`nxp,sc18is606-spi`
   * :dtcompatible:`renesas,rz-spi`
   * :dtcompatible:`ti,omap-mcspi`

* System controller

   * :dtcompatible:`sifli,sf32lb-cfg`

* Tachometer

   * :dtcompatible:`zephyr,tach-gpio`

* Timer

   * :dtcompatible:`ambiq,ctimer`
   * :dtcompatible:`ambiq,timer`
   * :dtcompatible:`infineon,tcpwm`
   * :dtcompatible:`microchip,xec-basic-timer`
   * :dtcompatible:`renesas,rz-cmtw`
   * :dtcompatible:`renesas,rz-mtu`
   * :dtcompatible:`st,stm32wb0-radio-timer`

* USB

   * :dtcompatible:`espressif,esp32-usb-otg`

* Video

   * :dtcompatible:`himax,hm01b0`
   * :dtcompatible:`renesas,ra-ceu`
   * :dtcompatible:`st,stm32-jpeg`
   * :dtcompatible:`st,stm32-venc`

* Watchdog

   * :dtcompatible:`nxp,cop`
   * :dtcompatible:`renesas,rx-iwdt`
   * :dtcompatible:`renesas,rz-wdt`
   * :dtcompatible:`sifli,sf32lb-wdt`
   * :dtcompatible:`ti,j7-rti-wdt`
   * :dtcompatible:`xlnx,versal-wwdt`

* Wi-Fi

   * :dtcompatible:`nordic,wlan`

* :abbr:`XSPI (Expanded Serial Peripheral Interface)`

   * :dtcompatible:`nxp,xspi`

New Samples
***********

..
  Same as above for boards and drivers, this will also be recomputed at the time of the release.
 Just link the sample, further details go in the sample documentation itself.

* :zephyr:code-sample:`adc_stream`
* :zephyr:code-sample:`capture`
* :zephyr:code-sample:`coap-upload`
* :zephyr:code-sample:`cpu_freq_on_demand`
* :zephyr:code-sample:`crc_drivers`
* :zephyr:code-sample:`crc_subsys`
* :zephyr:code-sample:`ext2-fstab`
* :zephyr:code-sample:`frdm_mcxa156_lpdac_opamp_lpadc`
* :zephyr:code-sample:`hello_hl78xx`
* :zephyr:code-sample:`instrumentation`
* :zephyr:code-sample:`latmon-client`
* :zephyr:code-sample:`max32664c`
* :zephyr:code-sample:`mctp-usb-endpoint`
* :zephyr:code-sample:`mctp_i2c_bus_endpoint`
* PMCI MCTP over I2C+GPIO (``mctp_i2c_bus_owner``)
* :zephyr:code-sample:`msg_queue`
* :zephyr:code-sample:`netmidi2`
* :zephyr:code-sample:`ocpp`
* :zephyr:code-sample:`opamp_output_measure`
* :zephyr:code-sample:`openthread-border-router`
* :zephyr:code-sample:`producer_consumer`
* :zephyr:code-sample:`quality-of-service`
* :zephyr:code-sample:`red-black-tree`
* :zephyr:code-sample:`renesas_lvd`
* :zephyr:code-sample:`rtk0eg0019b01002bj`
* :zephyr:code-sample:`veml6046`
* :zephyr:code-sample:`virtiofs`

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

* Firmware

  * SCMI

    * Added :kconfig:option:`ARM_SCMI_CHAN_SEM_TIMEOUT_USEC` to allow configuring the channel semaphore timeout.
    * Use :c:func:`scmi_status_to_errno` directly for checking the returned command status code.
    * Added new parameter to :c:func:`scmi_send_message` allowing users to specify if they want to use polling or not.
    * [NXP] Various additions related to the NXP-specific CPU protocol.

* Logging:

  * Added hybrid rate-limited logging macros to prevent log flooding when messages are generated frequently.
    The system provides both convenience macros (using default rate from :kconfig:option:`CONFIG_LOG_RATELIMIT_INTERVAL_MS`)
    and explicit rate macros (with custom rate parameter). This follows Linux's ``printk_ratelimited`` pattern
    while providing more flexibility. The rate limiting is per-macro-call-site, meaning that each unique call
    to a rate-limited macro has its own independent rate limit. Rate-limited logging can be globally enabled/disabled
    via :kconfig:option:`CONFIG_LOG_RATELIMIT`. When rate limiting is disabled, the behavior can be controlled
    via :kconfig:option:`CONFIG_LOG_RATELIMIT_FALLBACK` to either log all messages or drop them completely.
    For more details, see :ref:`logging_ratelimited`.

* Mbed TLS

  * Kconfig :kconfig:option:`CONFIG_PSA_CRYPTO` is added to simplify the enablement of a PSA
    Crypto API provider. This is TF-M if :kconfig:option:`CONFIG_BUILD_WITH_TFM` is enabled,
    or Mbed TLS otherwise. :kconfig:option:`CONFIG_PSA_CRYPTO_PROVIDER_TFM` is set in the former
    case while :kconfig:option:`CONFIG_PSA_CRYPTO_PROVIDER_MBEDTLS` is set in the latter.
    :kconfig:option:`CONFIG_PSA_CRYPTO_PROVIDER_CUSTOM` is also added to allow end users to
    provide a custom solution.

  * Updated from version 3.6.4 to version 3.6.5. Release notes for this release can be found at the
    following link:

    * https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.5

* Secure storage

  * The experimental status has been removed. (:github:`96483`)

Other notable changes
*********************

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

* Nordic Semiconductor nRF54L09 PDK (``nrf54l09pdk``), which only targeted an emulator, has been removed
  from the tree. It will be replaced with a proper board definition as soon as it's available.

* Removed support for Nordic Semiconductor nRF54L20 PDK (``nrf54l20pdk``) since it is
  replaced with :zephyr:board:`nrf54lm20dk` (``nrf54lm20dk``).

---

### Doc Releases Release Notes 4.4 (`doc/releases/release-notes-4.4.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.4:

Zephyr 4.4.0
############

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

Major enhancements with this release include:

**OpenRISC support**
  Zephyr now supports the :zephyr:board-catalog:`OpenRISC architecture <#arch=openrisc>`.

**Toolchain updates: Zephyr SDK 1.0 and C17**
  Zephyr 4.4 is the first release to support :ref:`Zephyr SDK 1.0 <toolchain_zephyr_sdk>`, with an
  upgraded GNU toolchain, experimental Clang/LLVM support, and multi-platform QEMU and OpenOCD
  host tools.

  Zephyr now defaults to C17 as its minimum required C standard version.

**Networking enhancements**
  The Wi-Fi management stack now supports :ref:`wifi_mgmt_p2p`, allowing devices to discover and
  connect directly without a traditional access point.

  The networking stack also adds support for :zephyr:code-sample:`WireGuard VPN <wireguard-vpn>`,
  enabling secure, low-overhead tunneling.

**USB host**
  Experimental USB host support has been significantly expanded with a new host-class driver
  framework and support for :abbr:`UVC (USB Video Class)` cameras on Zephyr devices acting as USB
  hosts.

**New driver classes**
  Zephyr 4.4 adds several new driver APIs, including:

  - :ref:`One-Time Programmable (OTP) memory devices <otp>` for provisioning and reading permanent
    device data,

  - A :ref:`biometrics API <biometrics_api>` for integrating biometric sensors such as fingerprint
    scanners or facial recognition systems, and

  - A :ref:`Wake-up Controller (WUC) API <wuc_api>` for managing wake-up sources that can bring the
    system out of low-power states.

**Zbus async listeners and proxy agents**
  Zbus async listeners enable non-blocking observer callbacks via workqueues.

  :ref:`Zbus proxy agents <zbus_proxy_agent>` extend publish-subscribe messaging across CPU and
  domain boundaries over IPC.

**Pressure-based CPU frequency scaling**
  The experimental :ref:`CPU frequency scaling <cpu_freq>` subsystem now includes a
  :ref:`pressure-based policy <pressure_policy>` that adjusts CPU frequency according to scheduler
  load.

**ARM Cortex-M context switching performance improvements**
  A new context switch implementation for ARM Cortex-M, enabled via
  :kconfig:option:`CONFIG_USE_SWITCH`, delivers significant performance improvements.

**NAND flash support**
  A new Flash Translation Layer (FTL) disk driver (:dtcompatible:`zephyr,ftl-dhara`) provides wear
  leveling and bad block management and enables NAND flash memories to be utilized as standard disk
  devices.

**Developer experience improvements**
  This release adds several new tools and improvements to development and testing workflows:

  - A new :ref:`dashboard <dashboard>` consolidates build information such as RAM and ROM footprint,
    Devicetree configuration, subsystem initialization levels, and more in a single report.

  - A new display driver for QEMU targets simplifies development of display-based applications in
    environments where the native simulator is unavailable.

  - A new heap hardening mechanism (:kconfig:option:`CONFIG_SYS_HEAP_HARDENING`) provides multiple
    levels of runtime protection against heap corruption.

  - New :ref:`scope-based cleanup helpers <cleanup_api>` provide :abbr:`RAII (Resource Acquisition
    Is Initialization)`/defer-style automatic cleanup in C when leaving scope.

  - The new :ref:`ztest benchmarking framework <ztest_benchmarking>` provides a standardized way to
    create cycle-accurate benchmarks, with automated data collection, overhead compensation, and
    statistical reporting.

**Bluetooth LE Host qualification**
  This release includes a successfully qualified Bluetooth Low Energy (LE) Host stack, aligned with
  Bluetooth Core Specification 6.2. The scope of qualification covered core components (GAP, ATT,
  GATT, L2CAP, SM) and Device Information Service (DIS). A qualified listing and corresponding
  Design Number (DN) are available here: https://qualification.bluetooth.com/ListingDetails/332380

**Expanded board support**
  This release adds support for 121 :ref:`new boards <boards_added_in_zephyr_4_4>` and 31
  :ref:`new shields <shields_added_in_zephyr_4_4>`.

An overview of the changes required or recommended when migrating your application from Zephyr
v4.3.0 to Zephyr v4.4.0 can be found in the separate :ref:`migration guide<migration_4.4>`.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* :cve:`2025-53022` `(TF-M) FWU does not check the length of the TLV’s payload
  <https://trustedfirmware-m.readthedocs.io/en/latest/security/security_advisories/fwu_tlv_payload_out_of_bounds_vulnerability.html>`_

* :cve:`2026-0849` `Zephyr project bug tracker GHSA-ff4p-3ggg-prp6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-ff4p-3ggg-prp6>`_

* :cve:`2026-1677` Under embargo until 2026-04-15

* :cve:`2026-1678` `Zephyr project bug tracker GHSA-536f-h63g-hj42
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-536f-h63g-hj42>`_

* :cve:`2026-1679` `Zephyr project bug tracker GHSA-qx3g-5g22-fq5w
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qx3g-5g22-fq5w>`_

* :cve:`2026-1681` Under embargo until 2026-04-15

* :cve:`2026-4179` `Zephyr project bug tracker GHSA-9xg7-g3q3-9prf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9xg7-g3q3-9prf>`_

* :cve:`2026-5066` Under embargo until 2026-06-01

* :cve:`2026-5067` Under embargo until 2026-05-23

* :cve:`2026-5068` Under embargo until 2026-05-21

* :cve:`2026-5071` Under embargo until 2026-05-18

* :cve:`2026-5072` Under embargo until 2026-05-18

* :cve:`2026-5589` Under embargo until 2026-06-03

* :cve:`2026-5590` `Zephyr project bug tracker GHSA-4vqm-pw24-g9jp
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4vqm-pw24-g9jp>`_

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

..
  Only removed, deprecated and new APIs. Changes go in migration guide.

Removed APIs and options
========================

* Architectures

  * Xtensa

    * Removed as these are architectural features:

      * :kconfig:option:`CONFIG_XTENSA_MMU_DOUBLE_MAP`
      * :kconfig:option:`CONFIG_XTENSA_RPO_CACHE`
      * :kconfig:option:`CONFIG_XTENSA_CACHED_REGION`
      * :kconfig:option:`CONFIG_XTENSA_UNCACHED_REGION`

* Bluetooth

  * ``CONFIG_BT_TBS_SUPPORTED_FEATURES``

  * The deprecated ``bt_hci_cmd_create()`` function was removed. It has been replaced by
    :c:func:`bt_hci_cmd_alloc`.

  * Controller

    * :kconfig:option:`CONFIG_BT_CTLR_ADV_AUX_SET`, :kconfig:option:`CONFIG_BT_CTLR_ADV_SYNC_SET`
      and :kconfig:option:`CONFIG_BT_CTLR_ADV_DATA_BUF_MAX` no longer require
      :kconfig:option:`CONFIG_BT_CTLR_ADVANCED_FEATURES`

* Kernel

  * :kconfig:option:`CONFIG_LINKER_USE_PINNED_SECTION` and
    :kconfig:option:`CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT` are removed.
    The selective kernel-pinning model they enabled was unsafe with any
    demand-paging eviction algorithm: a CPU exception dispatch could target
    a thread's privileged stack page that was not in the explicit
    ``__pinned_*`` set, escalating to #DF on x86 or a nested abort on ARM64
    if that page had been evicted (:github:`108773`). The Zephyr kernel
    image is now always resident in physical memory; demand paging applies
    only to anonymous mappings (:c:func:`k_mem_map`) and explicit
    ``__ondemand_*`` linker sections.

  * The ``__pinned_func``, ``__pinned_data``, ``__pinned_rodata``,
    ``__pinned_bss``, and ``__pinned_noinit`` attribute macros are removed,
    along with their assembly aliases ``PINNED_TEXT``, ``PINNED_RODATA``,
    ``PINNED_DATA``, ``PINNED_BSS``, and ``PINNED_NOINIT``.

  * The ``K_KERNEL_PINNED_STACK_DEFINE``,
    ``K_KERNEL_PINNED_STACK_ARRAY_DEFINE``,
    ``K_KERNEL_PINNED_STACK_ARRAY_DECLARE``,
    ``K_THREAD_PINNED_STACK_DEFINE``, and
    ``K_THREAD_PINNED_STACK_ARRAY_DEFINE`` macros are removed. Use their
    non-pinned counterparts instead.

* Mbed TLS

  * ``CONFIG_PSA_WANT_KEY_TYPE_DES``
  * ``CONFIG_PSA_WANT_ECC_SECP_K1_192``
  * ``CONFIG_PSA_WANT_ECC_SECP_R1_192``
  * ``CONFIG_PSA_WANT_ECC_SECP_R1_224``
  * ``CONFIG_CUSTOM_MBEDTLS_CFG_FILE``
  * ``CONFIG_MBEDTLS_CHACHAPOLY_AEAD_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_AES_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CAMELLIA_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CCM_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_CHACHA20_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_DES_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_GCM_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_CBC_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_CTR_ENABLED``
  * ``CONFIG_MBEDTLS_CIPHER_MODE_XTS_ENABLED``
  * ``CONFIG_MBEDTLS_CMAC``
  * ``CONFIG_MBEDTLS_DHM_C``
  * ``CONFIG_MBEDTLS_ECDH_C``
  * ``CONFIG_MBEDTLS_ECDSA_C``
  * ``CONFIG_MBEDTLS_ECDSA_DETERMINISTIC``
  * ``CONFIG_MBEDTLS_ECJPAKE_C``
  * ``CONFIG_MBEDTLS_ECP_ALL_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_C``
  * ``CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_CURVE448_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED``
  * ``CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED``
  * ``CONFIG_MBEDTLS_GENPRIME_ENABLED``
  * ``CONFIG_MBEDTLS_HKDF_C``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED``
  * ``CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED``
  * ``CONFIG_MBEDTLS_MD5``
  * ``CONFIG_MBEDTLS_PKCS1_V15``
  * ``CONFIG_MBEDTLS_PKCS1_V21``
  * ``CONFIG_MBEDTLS_POLY1305``
  * ``CONFIG_MBEDTLS_RSA_C``
  * ``CONFIG_MBEDTLS_SHA1``
  * ``CONFIG_MBEDTLS_SHA224``
  * ``CONFIG_MBEDTLS_SHA256``
  * ``CONFIG_MBEDTLS_SHA384``
  * ``CONFIG_MBEDTLS_SHA512``
  * ``CONFIG_MBEDTLS_USE_PSA_CRYPTO``

  * ``CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`` has been renamed to
    :kconfig:option:`CONFIG_MBEDTLS_PSA_DRIVER_GET_ENTROPY`.

  * ``CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT`` has been replaced by the underlying options it used
    to enable: :kconfig:option:`CONFIG_MBEDTLS_PEM_PARSE_C`,
    :kconfig:option:`CONFIG_MBEDTLS_PEM_WRITE_C` and :kconfig:option:`CONFIG_MBEDTLS_BASE64_C`.

  * ``CONFIG_MBEDTLS_SERVER_NAME_INDICATION`` has been renamed to
    :kconfig:option:`CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION`.

  * ``CONFIG_MBEDTLS_TEST`` has been renamed to :kconfig:option:`CONFIG_MBEDTLS_DEBUG_C`.

* Random

  * ``CONFIG_CSPRNG_AVAILABLE`` has been renamed to :kconfig:option:`CONFIG_ENTROPY_NODE_ENABLED`.

Deprecated APIs and options
===========================

* Bluetooth

  * Mesh

    * The function :c:func:`bt_mesh_input_number` was deprecated. Applications should use
      :c:func:`bt_mesh_input_numeric` instead.
    * The callback :c:member:`output_number` in :c:struct:`bt_mesh_prov` structure was deprecated.
      Applications should use :c:member:`output_numeric` callback instead.
    * The :kconfig:option:`CONFIG_BT_MESH_MODEL_VND_MSG_CID_FORCE` option has been deprecated.

  * Host

    * :c:member:`bt_conn_le_info.interval` has been deprecated. Use
      :c:member:`bt_conn_le_info.interval_us` instead. Note that the units have changed:
      ``interval`` was in units of 1.25 milliseconds, while ``interval_us`` is in microseconds.
    * The :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_NONE` option has been deprecated.
      Applications should use :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_NONE`
      option instead.
    * The :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_ENCRYPT` option has been deprecated.
      Applications should use :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_ENCRYPT`
      option instead.
    * The :kconfig:option:`CONFIG_DEVICE_NAME_GATT_WRITABLE_AUTHEN` option has been deprecated.
      Applications should use :kconfig:option:`CONFIG_BT_DEVICE_NAME_GATT_WRITABLE_AUTHEN`
      option instead.
    * The :kconfig:option:`CONFIG_DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN` option has been
      deprecated.
      Applications should use :kconfig:option:`CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN`
      option instead.

  * HCI

    * :c:macro:`BT_HCI_LE_SUPERVISON_TIMEOUT_MIN` and :c:macro:`BT_HCI_LE_SUPERVISON_TIMEOUT_MAX` have been deprecated.
      Use :c:macro:`BT_HCI_LE_SUPERVISION_TIMEOUT_MIN` and :c:macro:`BT_HCI_LE_SUPERVISION_TIMEOUT_MAX` instead.

* Entropy

   * :kconfig:option:`CONFIG_ENTROPY_PSA_CRYPTO_RNG` has been deprecated.

* I2S

  * The following macros have been deprecated and are replaced with equivalent macros whose names
    are aligned with the `latest revision of the I2S specification`_.

    * :c:macro:`I2S_OPT_BIT_CLK_MASTER` -> :c:macro:`I2S_OPT_BIT_CLK_CONTROLLER`
    * :c:macro:`I2S_OPT_FRAME_CLK_MASTER` -> :c:macro:`I2S_OPT_FRAME_CLK_CONTROLLER`
    * :c:macro:`I2S_OPT_BIT_CLK_SLAVE` -> :c:macro:`I2S_OPT_BIT_CLK_TARGET`
    * :c:macro:`I2S_OPT_FRAME_CLK_SLAVE` -> :c:macro:`I2S_OPT_FRAME_CLK_TARGET`

.. _latest revision of the I2S specification: https://www.nxp.com/docs/en/user-manual/UM11732.pdf

* Mbed TLS

  * :kconfig:option:`CONFIG_MBEDTLS_USER_CONFIG_ENABLE` and
    :kconfig:option:`CONFIG_MBEDTLS_CFG_FILE` were deprecated. Instead, use
    :kconfig:option:`CONFIG_MBEDTLS_CONFIG_FILE`.

  * :kconfig:option:`CONFIG_MBEDTLS_LIBRARY` was deprecated. Instead, use
    :kconfig:option:`CONFIG_MBEDTLS_CUSTOM`.


* POSIX

  * :kconfig:option:`CONFIG_XOPEN_STREAMS` was deprecated. Instead, use :kconfig:option:`CONFIG_XSI_STREAMS`

* Random

  * :kconfig:option:`CONFIG_CTR_DRBG_CSPRNG_GENERATOR` has been deprecrated. Instead, use
    :kconfig:option:`CONFIG_PSA_CSPRNG_GENERATOR`.

* Sensors

  * NXP

    * Deprecated the ``mcux_lpcmp`` driver (:zephyr_file:`drivers/sensor/nxp/mcux_lpcmp/mcux_lpcmp.c`). It is
      currently scheduled to be removed in Zephyr 4.6, along with the ``mcux_lpcmp`` sample. (:github:`100998`).

* Timer

  * The legacy Cortex-M SysTick low-power companion compatibility macros
    :c:macro:`z_cms_lptim_hook_on_lpm_entry` and :c:macro:`z_cms_lptim_hook_on_lpm_exit`,
    along with the compatibility header :zephyr_file:`drivers/timer/cortex_m_systick.h`,
    have been deprecated. Out-of-tree SoC/platform code should migrate to
    :c:func:`z_sys_clock_lpm_enter`, :c:func:`z_sys_clock_lpm_exit`, and
    :zephyr_file:`include/zephyr/drivers/timer/system_timer_lpm.h`.
    The legacy Kconfig options:
    :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_NONE`,
    :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_COUNTER`,
    :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_LPM_TIMER_HOOKS`, and
    :kconfig:option:`CONFIG_CORTEX_M_SYSTICK_RESET_BY_LPM` are deprecated in favor of
    :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_NONE`,
    :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_COUNTER`,
    :kconfig:option:`CONFIG_SYSTEM_TIMER_LPM_COMPANION_HOOKS`, and
    :kconfig:option:`CONFIG_SYSTEM_TIMER_RESET_BY_LPM`.
    The chosen property ``/chosen/zephyr,cortex-m-idle-timer`` is deprecated in
    favor of ``/chosen/zephyr,system-timer-companion``.
    The compatibility shim is currently scheduled to be removed in Zephyr 4.6.0.

New APIs and options
====================
..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

.. zephyr-keep-sorted-start re(^\* \w)

* ADC

  * :c:macro:`ADC_DT_SPEC_GET_BY_IDX_OR`
  * :c:macro:`ADC_DT_SPEC_GET_BY_NAME_OR`
  * :c:macro:`ADC_DT_SPEC_GET_OR`
  * :c:macro:`ADC_DT_SPEC_INST_GET_BY_IDX_OR`
  * :c:macro:`ADC_DT_SPEC_INST_GET_BY_NAME_OR`
  * :c:macro:`ADC_DT_SPEC_INST_GET_OR`
  * :c:member:`adc_sequence.priority`
  * :kconfig:option:`CONFIG_ADC_SEQUENCE_PRIORITY`

* Architectures

  * Xtensa

    * :kconfig:option:`CONFIG_XTENSA_MMU_USE_DEFAULT_MAPPINGS`

* Audio

  * :c:macro:`PDM_DT_IO_CFG_GET`
  * :c:macro:`PDM_DT_HAS_LEFT_CHANNEL`
  * :c:macro:`PDM_DT_HAS_RIGHT_CHANNEL`

* Bluetooth

  * Audio

    * :c:func:`bt_bap_ep_get_conn`
    * :c:member:`bt_ccp_call_control_client_cb.user_data`
    * :kconfig:option:`CONFIG_BT_TBS_MAX_FRIENDLY_NAME_LENGTH`
    * :c:member:`bt_cap_handover_cb.unicast_to_broadcast_created`
    * :c:func:`bt_tbs_client_get_by_index`
    * :c:member:`bt_bap_unicast_client_cb.supported_contexts`

  * Host

    * :c:func:`bt_gatt_cb_unregister` Added an API to unregister GATT callback handlers.
    * :c:func:`bt_le_per_adv_sync_cb_unregister`

  * ISO

    * :c:member:`bt_iso_chan_ops.disconnected` will now always be called before
      :c:member:`bt_conn_cb.disconnected` for unicast (CIS) channels,
      to provide a more deterministic order of callback events. (:github:`104695`).

  * Mesh

    * :c:func:`bt_mesh_input_numeric` to provide provisioning numeric input OOB value.
    * :c:member:`output_numeric` callback in :c:struct:`bt_mesh_prov` structure to
      output numeric values during provisioning.
    * :kconfig:option:`CONFIG_BT_MESH_CDB_KEY_SYNC` to enable key synchronization between
      the Configuration Database (CDB) and the local Subnet and AppKey storages when keys are
      added, deleted, or updated during key refresh procedure.
      The option is enabled by default.

  * Services

    * Introduced Alert Notification Service (ANS) :kconfig:option:`CONFIG_BT_ANS`

* Build system

  * Added ``zephyr_constants_library()`` CMake function for generating
    headers with build-time constants derived from C struct layouts
    (:github:`104861`).

  * Added :ref:`slot1-partition <snippet-slot1-partition>` snippet.

  * Sysbuild

    * Added :kconfig:option:`SB_CONFIG_MERGED_HEX_FILES` which allows generating
      :ref:`merged hex files <sysbuild_merged_hex_files>`.

    * Added experimental ``ExternalZephyrVariantProject_Add()`` sysbuild CMake function which
      allows for adding :ref:`variant images<sysbuild_zephyr_application>` to projects which are
      based on existing images in a build.

    * Added :kconfig:option:`SB_CONFIG_MCUBOOT_DIRECT_XIP_GENERATE_VARIANT` which allows for
      generating slot 1 images automatically in sysbuild projects when using MCUboot in
      direct-xip mode.

* CPUFreq

  * :kconfig:option:`CONFIG_CPU_FREQ_POLICY_PRESSURE`

* DAC

  * Added new DAC driver APIs (:github:`104630`)

    * :c:struct:`dac_dt_spec`
    * :c:macro:`DAC_CHANNEL_CFG_DT`
    * :c:macro:`DAC_DT_SPEC_GET_BY_NAME`
    * :c:macro:`DAC_DT_SPEC_GET_BY_NAME_OR`
    * :c:macro:`DAC_DT_SPEC_INST_GET_BY_NAME`
    * :c:macro:`DAC_DT_SPEC_INST_GET_BY_NAME_OR`
    * :c:macro:`DAC_DT_SPEC_GET_BY_IDX`
    * :c:macro:`DAC_DT_SPEC_GET_BY_IDX_OR`
    * :c:macro:`DAC_DT_SPEC_INST_GET_BY_IDX`
    * :c:macro:`DAC_DT_SPEC_INST_GET_BY_IDX_OR`
    * :c:macro:`DAC_DT_SPEC_GET`
    * :c:macro:`DAC_DT_SPEC_GET_OR`
    * :c:macro:`DAC_DT_SPEC_INST_GET`
    * :c:macro:`DAC_DT_SPEC_INST_GET_OR`
    * :c:func:`dac_channel_setup_dt`
    * :c:func:`dac_write_value_dt`
    * :c:func:`dac_millivolts_to_raw`
    * :c:func:`dac_microvolts_to_raw`
    * :c:func:`dac_x_to_raw_dt_chan`
    * :c:func:`dac_millivolts_to_raw_dt`
    * :c:func:`dac_microvolts_to_raw_dt`
    * :c:func:`dac_is_ready_dt`

* DMA

  * Added new DMA driver (:dtcompatible:`nxp,4ch-dma`) (:github:`97841`).

* Display

  * :c:func:`display_register_event_cb` and :c:func:`display_unregister_event_cb`.
  * :kconfig:option:`CONFIG_SSD1325_DEFAULT_CONTRAST`
  * :kconfig:option:`CONFIG_SSD1325_CONV_BUFFER_LINES`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_XRGB_8888`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_888`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_ABGR_8888`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_RGBA_8888`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGRA_8888`
  * :c:enumerator:`PIXEL_FORMAT_XRGB_8888`
  * :c:enumerator:`PIXEL_FORMAT_BGR_888`
  * :c:enumerator:`PIXEL_FORMAT_ABGR_8888`
  * :c:enumerator:`PIXEL_FORMAT_RGBA_8888`
  * :c:enumerator:`PIXEL_FORMAT_BGRA_8888`
  * :c:macro:`PANEL_PIXEL_FORMAT_XRGB_8888`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_ROUNDED_MASK`
  * :kconfig:option:`CONFIG_SDL_DISPLAY_ROUNDED_MASK_COLOR`
  * ``serial-vcom-inversion`` and ``serial-vcom-interval`` properties of :dtcompatible:`sharp,ls0xx`.
  * :kconfig:option:`CONFIG_LS0XX_VCOM_THREAD_PRIO`

* Ethernet

  * Driver MAC address configuration with support for NVMEM cell.

    * :c:func:`net_eth_mac_load`
    * :c:struct:`net_eth_mac_config`
    * :c:macro:`NET_ETH_MAC_DT_CONFIG_INIT` and :c:macro:`NET_ETH_MAC_DT_INST_CONFIG_INIT`

  * Added :c:enum:`ethernet_stats_type` and optional ``get_stats_type`` callback in
    :c:struct:`ethernet_api` to allow filtering of ethernet statistics by type
    (common, vendor, or all). Drivers that support vendor-specific statistics can
    implement ``get_stats_type`` to skip expensive FW queries when only common stats
    are requested. The existing ``get_stats`` API remains unchanged for backward
    compatibility.

* Exception

  * :kconfig:option:`CONFIG_EXCEPTION_DUMP_HOOK_ONLY`

* Flash

  * :dtcompatible:`jedec,mspi-nor` now allows MSPI configuration of read, write and
    control commands separately via devicetree.

  * Added extended operations to the flash API to support marking blocks as bad
    (:c:enum:`FLASH_EX_OP_MARK_BAD_BLOCK`) and checking if a block is bad
    (:c:enum:`FLASH_EX_OP_IS_BAD_BLOCK`).

* Haptics

  * Added error callback to API

    * :c:enum:`haptics_error_type` to enumerate common fault conditions in haptics devices.
    * :c:type:`haptics_error_callback_t` to provide function prototype for error callbacks.
    * :c:func:`haptics_register_error_callback` to register an error callback with a driver.

* Hwspinlock

  * Added new hwspinlock driver (:dtcompatible:`nxp,sema42`) (:github:`101499`).

* IPM

  * IPM callbacks for the mailbox backend now correctly handle signal-only mailbox
    mailbox usage. Applications should be prepared to receive a NULL payload pointer
    in IPM callbacks when no data buffer is provided by the mailbox.

* Management

  * MCUmgr

    * :kconfig:option:`CONFIG_UART_MCUMGR_RAW_PROTOCOL`,
      :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_RAW_UART`,
      :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_RAW_UART_INPUT_TIMEOUT`,
      :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_RAW_UART_INPUT_TIMEOUT_TIME_MS` see
      :ref:`raw UART MCUmgr SMP transport <mcumgr_smp_transport_raw_uart>` for details.

* Mbed TLS

  * :kconfig:option:`CONFIG_TF_PSA_CRYPTO_USER_CONFIG_FILE`
  * :kconfig:option:`CONFIG_PSA_WANT_ALG_SHAKE128`
  * :kconfig:option:`CONFIG_PSA_WANT_ALG_SHAKE256`
  * :kconfig:option:`CONFIG_MBEDTLS_BASE64_C`
  * :kconfig:option:`CONFIG_MBEDTLS_PEM_PARSE_C`
  * :kconfig:option:`CONFIG_MBEDTLS_PEM_WRITE_C`
  * :kconfig:option:`CONFIG_MBEDTLS_PK_PARSE_C`
  * :kconfig:option:`CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT`
  * :kconfig:option:`CONFIG_MBEDTLS_VERSION_C`
  * :kconfig:option:`CONFIG_MBEDTLS_X509_CRT_PARSE_C`
  * :kconfig:option:`CONFIG_MBEDTLS_X509_RSASSA_PSS_SUPPORT`
  * :kconfig:option:`CONFIG_MBEDTLS_X509_USE_C`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_PSK_WITH_AES_256_CBC_SHA384`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS_PSK_WITH_AES_128_GCM_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_ECJPAKE_WITH_AES_128_CCM_8`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS1_3_AES_256_GCM_SHA384`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS1_3_AES_128_GCM_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS1_3_AES_128_CCM_SHA256`
  * :kconfig:option:`CONFIG_MBEDTLS_CIPHERSUITE_TLS1_3_CHACHA20_POLY1305_SHA256`

* Modem

  * :kconfig:option:`CONFIG_MODEM_HL78XX_AT_SHELL`
  * :kconfig:option:`CONFIG_MODEM_HL78XX_AIRVANTAGE`

* NVMEM

  * Flash device support

    * :kconfig:option:`CONFIG_NVMEM_FLASH`
    * :kconfig:option:`CONFIG_NVMEM_FLASH_WRITE`

* Networking

  * CoAP

    * :kconfig:option:`CONFIG_COAP_CLIENT_MULTICAST`

  * DHCP

    * :c:func:`net_dhcpv4_server_set_address_validator_cb`

  * LwM2M

    * :kconfig:option:`CONFIG_LWM2M_SEND_SCHEDULER`
    * :kconfig:option:`CONFIG_LWM2M_IPSO_MAGNETOMETER`
    * :c:func:`lwm2m_cache_free_slots_get`

  * Misc

    * :kconfig:option:`CONFIG_WIREGUARD`
    * :kconfig:option:`CONFIG_NET_ZPERF_RAW_TX`
    * :kconfig:option:`CONFIG_FTP_CLIENT`

  * OpenThread

    * :kconfig:option:`CONFIG_OPENTHREAD_ZEPHYR_BORDER_ROUTER_NAT64_TRANSLATOR`

  * Sockets

    * DTLS server socket now supports multiple parallel client sessions on a
      single socket.
    * :kconfig:option:`CONFIG_NET_SOCKETS_TLS_CONNECT_TIMEOUT`

  * Wi-Fi

    * Add support for Wi-Fi Direct (P2P) mode.
    * Add support for WEP (Wired Equivalent Privacy) security. This is disabled by default
      but can be enabled by :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_WEP`
    * Use PSA crypto by default instead of legacy one. This can be controlled by
      :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_MBEDTLS_PSA` option.
    * :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_CLEANUP_INTERVAL`
    * :kconfig:option:`CONFIG_WIFI_NM_HOSTAPD_CLEANUP_INTERVAL`

* OTP

  * New OTP driver API providing means to provision (:c:func:`otp_program()`) and
    read (:c:func:`otp_read()`) :abbr:`OTP(One Time Programmable)` memory devices
    (:github:`101292`). OTP devices can also be accessed through the
    :ref:`Non-Volatile Memory (NVMEM)<nvmem>` subsystem. Available options are:

    * :kconfig:option:`CONFIG_OTP`
    * :kconfig:option:`CONFIG_OTP_PROGRAM`
    * :kconfig:option:`CONFIG_OTP_INIT_PRIORITY`

* PWM

  * Extended API with PWM events

    * :c:struct:`pwm_event_callback` to hold a pwm event callback
    * :c:func:`pwm_init_event_callback` to help initialize a :c:struct:`pwm_event_callback` object
    * :c:func:`pwm_add_event_callback` to add a callback
    * :c:func:`pwm_remove_event_callback` to remove a callback
    * :c:member:`manage_event_callback` in :c:struct:`pwm_driver_api` to manage pwm events
    * :kconfig:option:`CONFIG_PWM_EVENT`

* Power

  * The new ``voltage-scale`` property of :dtcompatible:`st,stm32u5-pwr` can be used to
    select the voltage scale manually on STM32U5 series via Devicetree. This notably
    enables usage of the USB controller at lower system clock frequencies.

* Random

  * :kconfig:option:`CONFIG_PSA_CSPRNG_GENERATOR`

* Settings

  * :kconfig:option:`CONFIG_SETTINGS_SAVE_SINGLE_SUBTREE_WITHOUT_MODIFICATION`
  * :kconfig:option:`CONFIG_SETTINGS_SAVE_SINGLE_SUBTREE_WITHOUT_MODIFICATION_VALUE_SIZE`

* Shell

  * :c:func:`shell_readline` for :ref:`user input <shell-readline>`

* Stepper

  * :c:func:`stepper_ctrl_configure_ramp`

* Sys

  * :c:macro:`COND_CASE_1`

* Timeutil

  * :kconfig:option:`CONFIG_TIMEUTIL_APPLY_SKEW`

* Userspace

  * :c:func:`k_object_access_check`
  * :c:func:`k_mem_domain_deinit`

* Utilities

  * :abbr:`COBS (Consistent Overhead Byte Stuffing)` streaming support

    * :c:struct:`cobs_decoder`
    * :c:func:`cobs_decoder_init`
    * :c:func:`cobs_decoder_write`
    * :c:func:`cobs_decoder_close`
    * :c:struct:`cobs_encoder`
    * :c:func:`cobs_encoder_init`
    * :c:func:`cobs_encoder_write`
    * :c:func:`cobs_encoder_close`

  * Disjoint-set support
    * :c:struct:`sys_set_node`
    * :c:func:`sys_set_makeset`
    * :c:func:`sys_set_find`
    * :c:func:`sys_set_union`

* Video

  * :kconfig:option:`CONFIG_VIDEO_BUFFER_POOL_HEAP_SIZE`
  * :kconfig:option:`CONFIG_VIDEO_BUFFER_POOL_ZEPHYR_REGION`
  * :kconfig:option:`CONFIG_VIDEO_BUFFER_POOL_ZEPHYR_REGION_NAME`
  * :c:func:`video_transform_cap`
  * :c:macro:`VIDEO_PIX_FMT_SBGGR8P16`
  * :c:macro:`VIDEO_PIX_FMT_SGBRG8P16`
  * :c:macro:`VIDEO_PIX_FMT_SGRBG8P16`
  * :c:macro:`VIDEO_PIX_FMT_SRGGB8P16`
  * :c:macro:`VIDEO_PIX_FMT_Y8P16`
  * :c:macro:`VIDEO_FMT_IS_SEMI_PLANAR`
  * :c:macro:`VIDEO_FMT_IS_PLANAR`
  * :c:macro:`VIDEO_FMT_IS_GRAYSCALE`
  * :c:macro:`VIDEO_FMT_IS_BAYER`
  * :c:macro:`VIDEO_FMT_IS_RGB`
  * :c:macro:`VIDEO_FMT_IS_YUV`
  * :c:macro:`VIDEO_FMT_IS_MIPI_PACKED`
  * :c:macro:`VIDEO_FMT_IS_PADDED`
  * :c:macro:`VIDEO_FMT_IS_SEMI_PLANAR`
  * :c:macro:`VIDEO_FMT_IS_FULL_PLANAR`
  * :c:macro:`VIDEO_FOREACH_BAYER`
  * :c:macro:`VIDEO_FOREACH_BAYER_PADDED`
  * :c:macro:`VIDEO_FOREACH_BAYER_MIPI_PACKED`
  * :c:macro:`VIDEO_FOREACH_BAYER_NON_PACKED`
  * :c:macro:`VIDEO_FOREACH_GRAYSCALE`
  * :c:macro:`VIDEO_FOREACH_GRAYSCALE_NON_PACKED`
  * :c:macro:`VIDEO_FOREACH_GRAYSCALE_PADDED`
  * :c:macro:`VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED`
  * :c:macro:`VIDEO_FOREACH_RGB`
  * :c:macro:`VIDEO_FOREACH_RGB_PACKED`
  * :c:macro:`VIDEO_FOREACH_RGB_NON_PACKED`
  * :c:macro:`VIDEO_FOREACH_RGB_ALPHA`
  * :c:macro:`VIDEO_FOREACH_RGB_PADDED`
  * :c:macro:`VIDEO_FOREACH_YUV`
  * :c:macro:`VIDEO_FOREACH_YUV_NON_PLANAR`
  * :c:macro:`VIDEO_FOREACH_YUV_SEMI_PLANAR`
  * :c:macro:`VIDEO_FOREACH_YUV_FULL_PLANAR`
  * :c:macro:`VIDEO_FOREACH_COMPRESSED`
  * :c:func:`video_import_buffer`

* Zbus

   * :kconfig:option:`CONFIG_ZBUS_ASYNC_LISTENER`
   * :kconfig:option:`CONFIG_ZBUS_ASYNC_LISTENER_EXEC_TIMEOUT`
   * :kconfig:option:`CONFIG_ZBUS_PROXY_AGENT`
   * :kconfig:option:`CONFIG_ZBUS_PROXY_AGENT_IPC`
   * :c:macro:`ZBUS_ASYNC_LISTENER_DEFINE`
   * :c:macro:`ZBUS_ASYNC_LISTENER_DEFINE_WITH_ENABLE`
   * :c:macro:`ZBUS_PROXY_AGENT_DEFINE`
   * :c:macro:`ZBUS_PROXY_ADD_CHAN`
   * :c:macro:`ZBUS_SHADOW_CHAN_DEFINE`
   * :c:macro:`ZBUS_SHADOW_CHAN_DEFINE_WITH_ID`
   * :c:func:`zbus_chan_from_name`. Retrieve a zbus channel reference by its name string.
   * :c:func:`zbus_async_listener_set_work_queue`. Set the work queue for an async listener
     observer.
   * :c:func:`zbus_chan_pub_stats_msg_age`. Get the message age in milliseconds since the last
     publish.

.. zephyr-keep-sorted-stop

.. _boards_added_in_zephyr_4_4:

New Boards
**********

..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.


* Adafruit Industries, LLC

   * :zephyr:board:`adafruit_feather_propmaker_rp2040` (``adafruit_feather_propmaker_rp2040``)
   * :zephyr:board:`adafruit_feather_scorpio_rp2040` (``adafruit_feather_scorpio_rp2040``)

* Advanced Micro Devices (AMD), Inc.

   * :zephyr:board:`versal2_apu` (``versal2_apu``)
   * :zephyr:board:`versal_apu` (``versal_apu``)
   * :zephyr:board:`versal_rpu` (``versal_rpu``)

* Ai-Thinker Co., Ltd.

   * :zephyr:board:`ai_m61_32s_kit` (``ai_m61_32s_kit``)

* Alientek

   * :zephyr:board:`dnesp32s3b` (``dnesp32s3b``)

* Alif Semiconductor

   * :zephyr:board:`ensemble_e1c_dk` (``ensemble_e1c_dk``)
   * :zephyr:board:`ensemble_e8_dk` (``ensemble_e8_dk``)

* Analog Devices, Inc.

   * :zephyr:board:`adi_eval_adin2111d1z` (``adi_eval_adin2111d1z``)

* ARM Ltd.

   * :zephyr:board:`fvp_base_revc_2xaem` (``fvp_base_revc_2xaem``)

* BlackBerry Limited

   * :zephyr:board:`qnxhv_vm` (``qnxhv_vm``)

* Bouffalo Lab (Nanjing) Co., Ltd.

   * :zephyr:board:`bl706_iot_dvk` (``bl706_iot_dvk``)

* Cadence Design Systems Inc.

   * Cadence SweRV (``cdns_swerv``)

* Chengdu Heltec Automation Technology Co., Ltd.

   * :zephyr:board:`heltec_wifi_lora32_v3` (``heltec_wifi_lora32_v3``)
   * :zephyr:board:`heltec_wireless_tracker` (``heltec_wireless_tracker``)

* Cirrus Logic, Inc.

   * :zephyr:board:`crd40l50` (``crd40l50``)

* Cytron Technologies

   * :zephyr:board:`maker_nano_rp2040` (``maker_nano_rp2040``)
   * :zephyr:board:`maker_pi_rp2040` (``maker_pi_rp2040``)
   * :zephyr:board:`maker_uno_rp2040` (``maker_uno_rp2040``)
   * :zephyr:board:`motion_2350_pro` (``motion_2350_pro``)

* DFRobot

   * :zephyr:board:`beetle_esp32c3` (``beetle_esp32c3``)
   * :zephyr:board:`beetle_rp2350` (``beetle_rp2350``)

* Elan Microelectronic Corp.

   * :zephyr:board:`32f967_dv` (``32f967_dv``)

* Espressif Systems

   * :zephyr:board:`esp32c5_devkitc` (``esp32c5_devkitc``)
   * :zephyr:board:`esp_threadbr` (``esp_threadbr``)

* Ezurio

   * :zephyr:board:`lyra_24_dvk_p10` (``lyra_24_dvk_p10``)
   * :zephyr:board:`lyra_24_dvk_p20` (``lyra_24_dvk_p20``)
   * :zephyr:board:`lyra_24_dvk_p20rf` (``lyra_24_dvk_p20rf``)
   * :zephyr:board:`lyra_24_dvk_s10` (``lyra_24_dvk_s10``)
   * :zephyr:board:`lyra_dvk_p` (``lyra_dvk_p``)
   * :zephyr:board:`lyra_dvk_s` (``lyra_dvk_s``)
   * :zephyr:board:`rm126x_dvk_rm1261` (``rm126x_dvk_rm1261``)
   * :zephyr:board:`rm126x_dvk_rm1262` (``rm126x_dvk_rm1262``)

* FocalTech Systems Co.,Ltd

   * :zephyr:board:`ft9001_eval` (``ft9001_eval``)

* Framework Computer, Inc.

   * :zephyr:board:`framework_ledmatrix` (``framework_ledmatrix``)
   * :zephyr:board:`framework_laptop16_keyboard` (``framework_laptop16_keyboard``)

* Infineon Technologies

   * :zephyr:board:`cy8ckit_041s_max` (``cy8ckit_041s_max``)
   * :zephyr:board:`cy8cproto_041tp` (``cy8cproto_041tp``)
   * :zephyr:board:`kit_t2g_b_h_evk` (``kit_t2g_b_h_evk``)
   * :zephyr:board:`kit_t2g_b_h_lite` (``kit_t2g_b_h_lite``)

* Intel Corporation

   * :zephyr:board:`intel_wcl_crb` (``intel_wcl_crb``)

* Longan Labs (Shenzhen Longan Technology Co., Ltd.)

   * :zephyr:board:`canbed_rp2040` (``canbed_rp2040``)

* M5Stack

   * :zephyr:board:`m5stack_nanoc6` (``m5stack_nanoc6``)

* Makerbase Co., Ltd.

   * :zephyr:board:`mks_canable_v10` (``mks_canable_v10``)

* MediaTek Inc.

   * MT8365 ADSP (``mt8365``)

* Microchip Technology Inc.

   * :zephyr:board:`pic32cm_pl10_cnano` (``pic32cm_pl10_cnano``)
   * :zephyr:board:`pic32cx_sg41_cult` (``pic32cx_sg41_cult``)
   * :zephyr:board:`pic32cz_ca90_cult` (``pic32cz_ca90_cult``)
   * :zephyr:board:`pic64gx_curiosity_kit` (``pic64gx_curiosity_kit``)
   * :zephyr:board:`sam_e54_cult` (``sam_e54_cult``)

* Nordic Semiconductor

   * :zephyr:board:`nrf54l15tag` (``nrf54l15tag``)
   * :zephyr:board:`nrf7120dk` (``nrf7120dk``)

* Nuvoton Technology Corporation

   * :zephyr:board:`numaker_gai_m55m1` (``numaker_gai_m55m1``)

* NXP Semiconductors

   * :zephyr:board:`frdm_imxrt1186` (``frdm_imxrt1186``)
   * :zephyr:board:`frdm_ke16z` (``frdm_ke16z``)
   * :zephyr:board:`frdm_mcxa577` (``frdm_mcxa577``)
   * :zephyr:board:`frdm_mcxl255` (``frdm_mcxl255``)
   * :zephyr:board:`frdm_mcxw70` (``frdm_mcxw70``)
   * :zephyr:board:`s32k5xxcvb` (``s32k5xxcvb``)

* Others

   * :zephyr:board:`doit_esp32_devkit_v1` (``doit_esp32_devkit_v1``)
   * :zephyr:board:`esp32c3_lckfb` (``esp32c3_lckfb``)

* PCB Cupid

   * :zephyr:board:`glyph_c3` (``glyph_c3``)
   * :zephyr:board:`glyph_h2` (``glyph_h2``)

* PHYTEC

   * :zephyr:board:`phyboard_atlas` (``phyboard_atlas``)

* Pimoroni Ltd.

   * :zephyr:board:`tiny2040` (``tiny2040``)

* QEMU

   * :zephyr:board:`qemu_or1k` (``qemu_or1k``)

* Qualcomm Technologies, Inc

   * :zephyr:board:`qcc744m_evk` (``qcc744m_evk``)

* RAKwireless Technology Limited

   * :zephyr:board:`rak11160` (``rak11160``)

* Realtek Semiconductor Corp.

   * :zephyr:board:`rtl8721f_evb` (``rtl8721f_evb``)
   * :zephyr:board:`rtl872xd_evb` (``rtl872xd_evb``)
   * :zephyr:board:`rtl872xda_evb` (``rtl872xda_evb``)
   * :zephyr:board:`rtl8752h_evb` (``rtl8752h_evb``)
   * :zephyr:board:`rtl87x2g_evb_a` (``rtl87x2g_evb_a``)
   * :zephyr:board:`rts5817_maa_evb` (``rts5817_maa_evb``)

* Renesas Electronics Corporation

   * :zephyr:board:`aik_ra8d1` (``aik_ra8d1``)
   * :zephyr:board:`cpkcor_ra8d1b` (``cpkcor_ra8d1b``)
   * :zephyr:board:`ek_ra8t2` (``ek_ra8t2``)
   * :zephyr:board:`fpb_ra0e1` (``fpb_ra0e1``)
   * :zephyr:board:`fpb_ra8e1` (``fpb_ra8e1``)
   * :zephyr:board:`fpb_rx140` (``fpb_rx140``)
   * :zephyr:board:`fpb_rx14t` (``fpb_rx14t``)
   * :zephyr:board:`mcb_rx14t` (``mcb_rx14t``)
   * :zephyr:board:`mck_ra4t1` (``mck_ra4t1``)
   * :zephyr:board:`rsk_rx140` (``rsk_rx140``)
   * :zephyr:board:`rzg3e_smarc` (``rzg3e_smarc``)
   * :zephyr:board:`rzn2h_evb` (``rzn2h_evb``)
   * :zephyr:board:`rzt2h_evb` (``rzt2h_evb``)

* Retronix Technology Inc.

   * :zephyr:board:`sparrowhawk_rcar_v4h` (``sparrowhawk_rcar_v4h``)

* Seeed Technology Co., Ltd

   * :zephyr:board:`reterminal_e1002` (``reterminal_e1002``)
   * :zephyr:board:`xiao_rp2350` (``xiao_rp2350``)

* Shenzhen Holyiot Technology Co., Ltd.

   * :zephyr:board:`holyiot_21014` (``holyiot_21014``)
   * :zephyr:board:`holyiot_25008` (``holyiot_25008``)

* Shenzhen Sipeed Technology Co., Ltd.

   * :zephyr:board:`maix_m0s_dock` (``maix_m0s_dock``)

* Shenzhen Xunlong Software CO.,Limited

   * :zephyr:board:`opi_zero` (``opi_zero``)
   * :zephyr:board:`orangepi_5_ultra_rk3588` (``orangepi_5_ultra_rk3588``)

* Silicon Laboratories

   * :zephyr:board:`efm32tg_stk3300` (``efm32tg_stk3300``)
   * :zephyr:board:`xg28_ek2705a` (``xg28_ek2705a``)
   * :zephyr:board:`siwx917_rb4338a` (``siwx917_rb4338a``)
   * :zephyr:board:`siwx917_rb4342a` (``siwx917_rb4342a``)

* Soldered Electronics

   * :zephyr:board:`inkplate_6color` (``inkplate_6color``)

* Space Cubics Inc.

   * :zephyr:board:`scobc_v1` (``scobc_v1``)

* SparkFun Electronics

   * :zephyr:board:`sparkfun_rp2040_mikrobus` (``sparkfun_rp2040_mikrobus``)

* STMicroelectronics

   * :zephyr:board:`nucleo_c542rc` (``nucleo_c542rc``)
   * :zephyr:board:`nucleo_c562re` (``nucleo_c562re``)
   * :zephyr:board:`nucleo_c5a3zg` (``nucleo_c5a3zg``)
   * :zephyr:board:`nucleo_u3c5zi_q` (``nucleo_u3c5zi_q``)
   * :zephyr:board:`nucleo_wba25ce1` (``nucleo_wba25ce1``)
   * :zephyr:board:`stm32h5f5j_dk` (``stm32h5f5j_dk``)
   * :zephyr:board:`stm32mp215f_dk` (``stm32mp215f_dk``)

* Synaptics

   * :zephyr:board:`sr100_rdk` (``sr100_rdk``)

* Texas Instruments

   * :zephyr:board:`am62l_evm` (``am62l_evm``)
   * :zephyr:board:`cc1312r1_launchxl` (``cc1312r1_launchxl``)

* Third Reality, Inc.

   * :zephyr:board:`3r_tnh_sensor_lite` (``3r_tnh_sensor_lite``)

* u-blox

   * :zephyr:board:`ubx_evkninab5` (``ubx_evkninab5``)

* Vicharak

   * :zephyr:board:`shrike_lite` (``shrike_lite``)

* VIEWE Display Co., Ltd.

   * :zephyr:board:`uedx24320028e_wb_a` (``uedx24320028e_wb_a``)

* Waveshare Electronics

   * :zephyr:board:`esp32s3_geek` (``esp32s3_geek``)
   * :zephyr:board:`esp32s3_rlcd_4_2` (``esp32s3_rlcd_4_2``)
   * :zephyr:board:`rp2350_zero` (``rp2350_zero``)

* WeAct Studio

   * :zephyr:board:`can485dbv1` (``can485dbv1``)
   * :zephyr:board:`rp2350b_core` (``rp2350b_core``)
   * :zephyr:board:`weact_stm32g0b1_core` (``weact_stm32g0b1_core``)

* WEMOS Electronics

   * :zephyr:board:`lolin32_lite` (``lolin32_lite``)

* WinChipHead

   * :zephyr:board:`ch32v307v_evt_r1` (``ch32v307v_evt_r1``)

.. _shields_added_in_zephyr_4_4:

New Shields
***********

..
  Same as above, this will also be recomputed at the time of the release.

* :ref:`Adafruit FeatherWing 128x64 OLED Shield <adafruit_featherwing_128x64_oled>`
* :ref:`Adafruit HTS221 Shield <adafruit_hts221>`
* :ref:`Adafruit INA3221 Shield <adafruit_ina3221>`
* :ref:`Adafruit MAX17048 Shield <adafruit_max17048>`
* :ref:`Adafruit MCP4728 Quad DAC Shield <adafruit_mcp4728>`
* :ref:`Analog Devices EVAL-CN0391-ARDZ <eval_cn0391_ardz>`
* :ref:`Arduino Modulino Latch Relay <arduino_modulino_latch_relay>`
* :ref:`ESP Thread BR / Zigbee GW Ethernet <esp_threadbr_ethernet>`
* :ref:`Microchip RNBD451 Add-on Board <rnbd451_add_on_shield>`
* :ref:`MikroElektronika 3 axis Accel 4 Click <mikroe_accel4_click_shield>`
* :ref:`MikroElektronika CAN FD 6 Click <mikroe_can_fd_6_click_shield>`
* :ref:`MikroElektronika EEPROM 13 Click <mikroe_eeprom_13_click_shield>`
* :ref:`MikroElektronika Flash 5 Click <mikroe_flash_5_click_shield>`
* :ref:`MikroElektronika Flash 6 Click <mikroe_flash_6_click_shield>`
* :ref:`MikroElektronika Flash 8 Click <mikroe_flash_8_click_shield>`
* :ref:`MikroElektronika LTE IoT 7 Click <mikroe_lte_iot7_click_shield>`
* :ref:`MikroElektronika MCP251x Click shields <mikroe_mcp251x_click_shield>`
* :ref:`MikroElektronika MCP251xFD Click shields <mikroe_mcp251xfd_click_shield>`
* :ref:`MikroElektronika RS485 Isolator 5 Click <mikroe_rs485_isolator_5_click_shield>`
* :ref:`MikroElektronika Temp&Hum Click <mikroe_temp_hum_click_shield>`
* :ref:`Nordic Semiconductor nRF7002 EB II <nrf7002eb2>`
* :ref:`NXP S32K5XX-MB Shield <nxp_s32k5xx_mb>`
* :ref:`Raspberry Pi Camera Module 2 <raspberry_pi_camera_module_2>`
* :ref:`Renesas AIK OV2640 Camera Shield <renesas_aik_ov2640_cam>`
* :ref:`Seeed Studio 24GHz mmWave Sensor for XIAO <seeed_xiao_hsp24>`
* :ref:`Semtech SX1261MB2BAS LoRa Shield <semtech_sx1261mb2bas>`
* :ref:`ST Microelectronics B-DSI-MB1314 <st_b_dsi_mb1314>`
* :ref:`ST Microelectronics ST87MXX shield <st87mxx_generic>`
* :ref:`ST Microelectronics X-NUCLEO-IKS5A1: MEMS Inertial and Environmental Multi sensor shield <x-nucleo-iks5a1>`
* :ref:`WIZnet W5500 Ethernet Shield <wiznet_w5500>`
* :ref:`ZHAW Luma Matrix Shield <zhaw_lumamatrix>`

New Drivers
***********

..
  Same as above, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description

* :abbr:`ADC (Analog to Digital Converter)`

   * :dtcompatible:`bflb,adc` (:github:`98624`)
   * :dtcompatible:`infineon,sar-adc` (:github:`103453`)
   * :dtcompatible:`maxim,max2253x` (:github:`102115`)
   * :dtcompatible:`microchip,adc-g1` (:github:`99966`)
   * :dtcompatible:`microchip,mcp3221` (:github:`105751`)
   * :dtcompatible:`renesas,ra-adc12` (:github:`95710`)
   * :dtcompatible:`renesas,ra-adc16` (:github:`95710`)
   * :dtcompatible:`renesas,rz-adc-e` (:github:`100575`)
   * :dtcompatible:`renesas,rza2m-adc` (:github:`100637`)
   * :dtcompatible:`sifli,sf32lb-gpadc` (:github:`99460`)
   * :dtcompatible:`ti,ads7950` (:github:`101660`)
   * :dtcompatible:`ti,ads7951` (:github:`101660`)
   * :dtcompatible:`ti,ads7952` (:github:`101660`)
   * :dtcompatible:`ti,ads7953` (:github:`101660`)
   * :dtcompatible:`ti,ads7954` (:github:`101660`)
   * :dtcompatible:`ti,ads7955` (:github:`101660`)
   * :dtcompatible:`ti,ads7956` (:github:`101660`)
   * :dtcompatible:`ti,ads7957` (:github:`101660`)
   * :dtcompatible:`ti,ads7958` (:github:`101660`)
   * :dtcompatible:`ti,ads7959` (:github:`101660`)
   * :dtcompatible:`ti,ads7960` (:github:`101660`)
   * :dtcompatible:`ti,ads7961` (:github:`101660`)

* ARM architecture

   * :dtcompatible:`arm,axi-timing-adapter` (:github:`100356`)
   * :dtcompatible:`nordic,nrf-pwr-antswc` (:github:`101199`)
   * :dtcompatible:`nordic,nrf-tampc` (:github:`99295`)

* Audio

   * :dtcompatible:`awinic,aw88298` (:github:`97006`)
   * :dtcompatible:`infineon,pdm` (:github:`104698`)
   * :dtcompatible:`sifli,sf32lb-audcodec` (:github:`98701`)
   * :dtcompatible:`zephyr,pdm-dmic` (:github:`99351`)

* Biometrics

   * :dtcompatible:`adh-tech,gt5x` (:github:`100139`)
   * :dtcompatible:`zephyr,biometrics-emul` (:github:`100139`)
   * :dtcompatible:`zhiantec,zfm-x0` (:github:`100139`)

* Bluetooth

   * :dtcompatible:`bflb,bl70x-bt-hci` (:github:`104346`)
   * :dtcompatible:`infineon,bt-hci-uart` (:github:`103871`)
   * :dtcompatible:`realtek,bee-bt-hci` (:github:`104580`)
   * :dtcompatible:`sifli,sf32lb-mailbox` (:github:`96692`)

* :abbr:`CAN (Controller Area Network)`

   * :dtcompatible:`infineon,can` (:github:`105471`)
   * :dtcompatible:`infineon,canfd-controller` (:github:`105471`)

* Charger

   * :dtcompatible:`nordic,npm10xx-charger` (:github:`105564`)
   * :dtcompatible:`ti,bq25186` (:github:`97157`)
   * :dtcompatible:`ti,bq25188` (:github:`97157`)
   * :dtcompatible:`zephyr,charger-gpio` (:github:`103112`)

* Clock control

   * :dtcompatible:`alif,clockctrl` (:github:`101244`)
   * :dtcompatible:`bflb,bl70x_l-clock-controller` (:github:`104625`)
   * :dtcompatible:`bflb,bl70x_l-dll` (:github:`104625`)
   * :dtcompatible:`bflb,f32k` (:github:`104738`)
   * :dtcompatible:`bflb,pll` (:github:`104738`)
   * :dtcompatible:`bflb,root-clk` (:github:`104738`)
   * :dtcompatible:`elan,em32-ahb` (:github:`97843`)
   * :dtcompatible:`elan,em32-apb` (:github:`97843`)
   * :dtcompatible:`focaltech,ft9001-cpm` (:github:`95959`)
   * :dtcompatible:`microchip,pic32cm-jh-clock` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-fdpll` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-gclkgen` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-gclkperiph` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-mclkcpu` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-mclkperiph` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-osc32k` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-osc48m` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-rtc` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-xosc` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-jh-xosc32k` (:github:`97160`)
   * :dtcompatible:`microchip,pic32cm-pl-clock` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-gclkgen` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-gclkperiph` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-mclkcpu` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-mclkperiph` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-osc32k` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-oschf` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-rtc` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cm-pl-xosc32k` (:github:`104337`)
   * :dtcompatible:`microchip,pic32cz-ca-clock` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-dfll48m` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-dpll` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-gclkgen` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-gclkperiph` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-mclkdomain` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-mclkperiph` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-rtc` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-xosc` (:github:`101934`)
   * :dtcompatible:`microchip,pic32cz-ca-xosc32k` (:github:`101934`)
   * :dtcompatible:`nordic,nrf71-hfxo` (:github:`103349`)
   * :dtcompatible:`nordic,nrf71-lfxo` (:github:`101199`)
   * :dtcompatible:`realtek,ameba-rcc` (:github:`104843`)
   * :dtcompatible:`realtek,bee-cctl` (:github:`102691`)
   * :dtcompatible:`realtek,rts5817-clock` (:github:`91486`)
   * :dtcompatible:`renesas,r8a779g0-cpg-mssr` (:github:`97783`)
   * :dtcompatible:`st,stm32c5-rcc` (:github:`105577`)
   * :dtcompatible:`st,stm32c5-xsik-clock` (:github:`105577`)
   * :dtcompatible:`st,stm32fx-pll-clock` (:github:`100757`)
   * :dtcompatible:`syna,sr100-clock` (:github:`100172`)
   * :dtcompatible:`ti,k2g-sci-clk` (:github:`90216`)

* Comparator

   * :dtcompatible:`microchip,ac-g1-comparator` (:github:`99155`)
   * :dtcompatible:`nxp,acomp` (:github:`100818`)
   * :dtcompatible:`nxp,hscmp` (:github:`100629`)
   * :dtcompatible:`nxp,lpcmp` (:github:`100998`)

* Counter

   * :dtcompatible:`bflb,rtc` (:github:`104739`)
   * :dtcompatible:`bflb,timer` (:github:`104739`)
   * :dtcompatible:`bflb,timer-channel` (:github:`104739`)
   * :dtcompatible:`microchip,rtc-g1-counter` (:github:`102163`)
   * :dtcompatible:`microchip,sam-pit64b-counter` (:github:`93806`)
   * :dtcompatible:`microchip,tc-g1` (:github:`100070`)
   * :dtcompatible:`microchip,tc-g1-counter` (:github:`101941`)
   * :dtcompatible:`microchip,tc-g2-counter` (:github:`93401`)
   * :dtcompatible:`microchip,tcc-g1-counter` (:github:`100745`)
   * :dtcompatible:`microcrystal,rv3032-counter` (:github:`98918`)
   * :dtcompatible:`nuvoton,npck-lct` (:github:`98548`)
   * :dtcompatible:`nuvoton,npcx-lct-base` (:github:`98548`)
   * :dtcompatible:`nuvoton,npcx-lct-v1` (:github:`98548`)
   * :dtcompatible:`nuvoton,npcx-lct-v2` (:github:`98548`)
   * :dtcompatible:`nxp,imx-gpt` (:github:`101040`)
   * :dtcompatible:`raspberrypi,pico-pit` (:github:`85618`)
   * :dtcompatible:`raspberrypi,pico-pit-channel` (:github:`105006`)
   * :dtcompatible:`realtek,bee-counter-timer` (:github:`104805`)
   * :dtcompatible:`renesas,rza2m-ostm-counter` (:github:`100934`)
   * :dtcompatible:`silabs,burtc-counter` (:github:`102272`)
   * :dtcompatible:`silabs,protimer` (:github:`103428`)
   * :dtcompatible:`silabs,timer-counter` (:github:`103885`)

* CPU

   * :dtcompatible:`adi,max32-rv32` (:github:`97309`)
   * :dtcompatible:`arm,cortex-a320` (:github:`96852`)
   * :dtcompatible:`arm,cortex-a510` (:github:`96852`)
   * :dtcompatible:`arm,cortex-a7` (:github:`101582`)
   * :dtcompatible:`arm,cortex-a9` (:github:`101582`)
   * :dtcompatible:`cdns,swerv,s400` (:github:`102288`)
   * :dtcompatible:`cdns,swerv,s420` (:github:`102288`)
   * :dtcompatible:`intel,wildcat-lake` (:github:`99205`)
   * :dtcompatible:`riscv` (:github:`105006`)
   * :dtcompatible:`spinalhdl,vexriscv` (:github:`97925`)

* :abbr:`CRC (Cyclic Redundancy Check)`

   * :dtcompatible:`nxp,crc` (:github:`100875`)
   * :dtcompatible:`nxp,lpc-crc` (:github:`101528`)
   * :dtcompatible:`sifli,sf32lb-crc` (:github:`98997`)
   * :dtcompatible:`silabs,gpcrc` (:github:`104471`)
   * :dtcompatible:`st,stm32-crc` (:github:`105302`)

* Cryptographic accelerator

   * :dtcompatible:`bflb,sec-eng-aes` (:github:`104371`)
   * :dtcompatible:`bflb,sec-eng-sha` (:github:`104371`)
   * :dtcompatible:`bflb,sec-eng-trng` (:github:`104349`)
   * :dtcompatible:`microchip,aes-g1` (:github:`105389`)
   * :dtcompatible:`microchip,sha-g1-crypto` (:github:`98894`)
   * :dtcompatible:`nxp,s32-crypto-hse-mu` (:github:`79351`)
   * :dtcompatible:`raspberrypi,pico-sha256` (:github:`85036`)
   * :dtcompatible:`sifli,sf32lb-crypto` (:github:`100583`)

* :abbr:`DAC (Digital to Analog Converter)`

   * :dtcompatible:`microchip,dac-g1` (:github:`101431`)
   * :dtcompatible:`nxp,hpdac` (:github:`104642`)
   * :dtcompatible:`ti,dac5311` (:github:`90811`)
   * :dtcompatible:`ti,dac6311` (:github:`90811`)
   * :dtcompatible:`ti,dac7311` (:github:`90811`)
   * :dtcompatible:`ti,dac8311` (:github:`90811`)
   * :dtcompatible:`ti,dac8411` (:github:`90811`)
   * :dtcompatible:`zephyr,dac-emul` (:github:`100306`)

* Disk

   * :dtcompatible:`zephyr,ftl-dhara` (:github:`100858`)

* Display

   * :dtcompatible:`eink,ac057tc1` (:github:`104142`)
   * :dtcompatible:`ilitek,ili9163c` (:github:`104071`)
   * :dtcompatible:`nxp,imx-lcdifv2` (:github:`103646`)
   * :dtcompatible:`qemu,ramfb` (:github:`103887`)
   * :dtcompatible:`sifli,sf32lb-lcdc` (:github:`99549`)
   * :dtcompatible:`sitronix,st7586s` (:github:`103296`)
   * :dtcompatible:`solomon,ssd1325` (:github:`102128`)
   * :dtcompatible:`waveshare,dsi2dpi` (:github:`100140`)

* :abbr:`DMA (Direct Memory Access)`

   * :dtcompatible:`infineon,dmac` (:github:`101583`)
   * :dtcompatible:`microchip,dmac-g1-dma` (:github:`96300`)
   * :dtcompatible:`microchip,dmac-g2-dma` (:github:`104404`)
   * :dtcompatible:`nxp,4ch-dma` (:github:`97841`)

* :abbr:`EDAC (Error Detection and Correction)`

   * :dtcompatible:`nxp,eim` (:github:`94111`)
   * :dtcompatible:`nxp,erm` (:github:`94111`)

* Ethernet

   * :dtcompatible:`davicom,dm9051` (:github:`104715`)
   * :dtcompatible:`ethernet-phy-fixed-link` (:github:`100454`)
   * :dtcompatible:`maxlinear,gpy111` (:github:`100995`)
   * :dtcompatible:`microchip,lan8742` (:github:`96134`)
   * :dtcompatible:`motorcomm,yt8521` (:github:`97535`)
   * :dtcompatible:`motorcomm,yt8531` (:github:`104945`)
   * :dtcompatible:`nxp,t1s-phy` (:github:`105033`)
   * :dtcompatible:`renesas,ra-eswm` (:github:`100995`)
   * :dtcompatible:`renesas,ra-ethernet-rmac` (:github:`100995`)
   * :dtcompatible:`renesas,ra-mdio-rmac` (:github:`100995`)
   * :dtcompatible:`st,stm32h5-ethernet` (:github:`100910`)
   * :dtcompatible:`st,stm32mp13-ethernet` (:github:`96134`)
   * :dtcompatible:`wch,ethernet` (:github:`101390`)
   * :dtcompatible:`wch,ethernet-controller` (:github:`101390`)
   * :dtcompatible:`wch,mdio` (:github:`101390`)
   * :dtcompatible:`wiznet,w6100` (:github:`101753`)
   * :dtcompatible:`xlnx,xps-ethernetlite-1.00.a` (:github:`95073`)
   * :dtcompatible:`xlnx,xps-ethernetlite-1.00.a-mac` (:github:`95073`)
   * :dtcompatible:`xlnx,xps-ethernetlite-1.00.a-mdio` (:github:`103944`)
   * :dtcompatible:`xlnx,xps-ethernetlite-3.00.a` (:github:`95073`)
   * :dtcompatible:`xlnx,xps-ethernetlite-3.00.a-mac` (:github:`95073`)
   * :dtcompatible:`xlnx,xps-ethernetlite-3.00.a-mdio` (:github:`103944`)

* Firmware

   * :dtcompatible:`arm,scmi-smc` (:github:`103584`)
   * :dtcompatible:`arm,scmi-system` (:github:`99037`)
   * :dtcompatible:`qemu,fw-cfg-ioport` (:github:`103717`)
   * :dtcompatible:`qemu,fw-cfg-mmio` (:github:`103717`)

* Flash controller

   * :dtcompatible:`nxp,c40-flash-controller` (:github:`97401`)
   * :dtcompatible:`renesas,rza2m-qspi-spibsc` (:github:`102175`)
   * :dtcompatible:`st,stm32c5-flash-controller` (:github:`105577`)

* Fuel gauge

   * :dtcompatible:`hycon,hy4245` (:github:`105006`)

* :abbr:`GNSS (Global Navigation Satellite System)`

   * :dtcompatible:`globaltop,pa6h` (:github:`104789`)

* :abbr:`GPIO (General Purpose Input/Output)`

   * :dtcompatible:`elan,em32-gpio` (:github:`97843`)
   * :dtcompatible:`espressif,esp-threadbr-header` (:github:`99704`)
   * :dtcompatible:`infineon,cyw43-gpio` (:github:`104728`)
   * :dtcompatible:`infineon,shared-gpio` (:github:`105081`)
   * :dtcompatible:`microchip,xpro-header` (:github:`98043`)
   * :dtcompatible:`nordic,expansion-board-header` (:github:`104138`)
   * :dtcompatible:`nxp,sc18is606-gpio` (:github:`100743`)
   * :dtcompatible:`realtek,ameba-gpio` (:github:`78036`)
   * :dtcompatible:`realtek,bee-gpio` (:github:`102691`)
   * :dtcompatible:`renesas,rz-gpio-common` (:github:`101256`)
   * :dtcompatible:`renesas,rz-gpio-common-v2` (:github:`101256`)
   * :dtcompatible:`renesas,rz-gpio-common-v3` (:github:`104804`)
   * :dtcompatible:`solderedelectronics,easyc-connector` (:github:`104919`)

* Haptics

   * :dtcompatible:`cirrus,cs40l5x` (:github:`100042`)

* Hardware information

   * :dtcompatible:`microchip,hwinfo-g1` (:github:`100147`)
   * :dtcompatible:`nxp,rcm-hwinfo` (:github:`102490`)
   * :dtcompatible:`nxp,sim-uuid` (:github:`102490`)

* Hardware spinlock

   * :dtcompatible:`nxp,sema42` (:github:`101499`)

* :abbr:`I2C (Inter-Integrated Circuit)`

   * :dtcompatible:`bflb,i2c` (:github:`98364`)
   * :dtcompatible:`microchip,sercom-g1-i2c` (:github:`98385`)
   * :dtcompatible:`renesas,rza2m-riic` (:github:`100513`)
   * :dtcompatible:`sifli,sf32lb-i2c` (:github:`96316`)

* :abbr:`I2S (Inter-IC Sound)`

   * :dtcompatible:`adi,max32-i2s` (:github:`91508`)
   * :dtcompatible:`infineon,i2s` (:github:`100606`)

* Input

   * :dtcompatible:`adafruit,seesaw-gamepad` (:github:`105508`)
   * :dtcompatible:`bflb,irx` (:github:`100600`)
   * :dtcompatible:`chipsemi,chsc6540` (:github:`104710`)
   * :dtcompatible:`focaltech,ft6146` (:github:`96330`)
   * :dtcompatible:`hynitron,cst8xx` (:github:`105348`)
   * :dtcompatible:`nxp,tsi-input` (:github:`103116`)
   * :dtcompatible:`parade,tma525b` (:github:`101254`)
   * :dtcompatible:`realtek,bee-keyscan` (:github:`105110`)
   * :dtcompatible:`wch,ch9350l` (:github:`101976`)

* Interrupt controller

   * :dtcompatible:`adi,max32-rv32-intc` (:github:`97309`)
   * :dtcompatible:`cdns,swerv-pic` (:github:`102288`)
   * :dtcompatible:`microchip,aic-g1-intc` (:github:`101016`)
   * :dtcompatible:`microchip,eic-g1-intc` (:github:`100928`)
   * :dtcompatible:`nxp,gint` (:github:`100240`)
   * :dtcompatible:`opencores,or1k-pic-level` (:github:`98160`)
   * :dtcompatible:`renesas,rx-grp-intc` (:github:`96451`)
   * :dtcompatible:`renesas,rz-icu-v2` (:github:`104804`)
   * :dtcompatible:`renesas,rz-intc-v2` (:github:`101256`)
   * :dtcompatible:`renesas,rz-tint` (:github:`101256`)
   * :dtcompatible:`riscv,aplic` (:github:`104730`)
   * :dtcompatible:`riscv,imsic` (:github:`102055`)

* :abbr:`LED (Light Emitting Diode)`

   * :dtcompatible:`issi,is31fl3197` (:github:`96821`)
   * :dtcompatible:`sct,sct2024` (:github:`98698`)

* LoRa

   * :dtcompatible:`semtech,llcc68` (:github:`100705`)
   * :dtcompatible:`semtech,sx1268` (:github:`100705`)
   * :dtcompatible:`semtech,sx1278` (:github:`100705`)

* Mailbox

   * :dtcompatible:`adi,mbox-max32-sema` (:github:`104547`)
   * :dtcompatible:`raspberrypi,pico-mbox` (:github:`94502`)
   * :dtcompatible:`xlnx,mbox-versal-ipi-mailbox` (:github:`92768`)

* :abbr:`MCTP (Management Component Transport Protocol)`

   * :dtcompatible:`zephyr,mctp-i3c-controller` (:github:`105006`)
   * :dtcompatible:`zephyr,mctp-i3c-endpoint` (:github:`105006`)
   * :dtcompatible:`zephyr,mctp-i3c-target` (:github:`105006`)

* Memory controller

   * :dtcompatible:`adi,max32-backup-sram` (:github:`104528`)

* :abbr:`MFD (Multi-Function Device)`

   * :dtcompatible:`adi,max2221x` (:github:`97584`)
   * :dtcompatible:`microcrystal,rv3032-mfd` (:github:`98918`)
   * :dtcompatible:`nordic,npm10xx` (:github:`105447`)

* :abbr:`MIPI DBI (Mobile Industry Processor Interface Display Bus Interface)`

   * :dtcompatible:`bflb,dbi` (:github:`98752`)
   * :dtcompatible:`espressif,esp32-lcd-cam-mipi-dbi` (:github:`99863`)
   * :dtcompatible:`raspberrypi,pico-mipi-dbi-pio` (:github:`91350`)
   * :dtcompatible:`sifli,sf32lb-lcdc-mipi-dbi` (:github:`99549`)

* Miscellaneous

   * :dtcompatible:`adi,max2221x-misc` (:github:`97584`)
   * :dtcompatible:`espressif,esp32-lcd-cam` (:github:`99863`)
   * :dtcompatible:`nordic,axon` (:github:`102160`)
   * :dtcompatible:`raspberrypi,pico-sio` (:github:`94502`)
   * :dtcompatible:`renesas,ra-drw` (:github:`97163`)
   * :dtcompatible:`renesas,ra-sau` (:github:`102379`)
   * :dtcompatible:`renesas,ra-sau-channel` (:github:`102379`)
   * :dtcompatible:`skyworks,sky13348` (:github:`102321`)
   * :dtcompatible:`st,stm32-npu-cache` (:github:`102232`)

* Modem

   * :dtcompatible:`st,st87mxx` (:github:`100366`)

* Multi-bit SPI

   * :dtcompatible:`st,stm32-ospi-controller` (:github:`96670`)
   * :dtcompatible:`st,stm32-qspi-controller` (:github:`96670`)
   * :dtcompatible:`st,stm32-xspi-controller` (:github:`96670`)

* :abbr:`MTD (Memory Technology Device)`

   * :dtcompatible:`jedec,spi-nand` (:github:`100845`)
   * :dtcompatible:`mxicy,mx25u` (:github:`104357`)
   * :dtcompatible:`netsol,s3axx04` (:github:`97867`)
   * :dtcompatible:`nxp,c40-flash` (:github:`97401`)
   * :dtcompatible:`nxp,imx-flexspi-is66wvs8m8` (:github:`100976`)
   * :dtcompatible:`nxp,s32-xspi-device` (:github:`101487`)
   * :dtcompatible:`nxp,s32-xspi-hyperram` (:github:`101487`)
   * :dtcompatible:`zephyr,mapped-partition` (:github:`104398`)

* :abbr:`OPAMP (Operational Amplifier)`

   * :dtcompatible:`st,stm32-opamp` (:github:`99181`)
   * :dtcompatible:`st,stm32g4-opamp` (:github:`99181`)

* :abbr:`OTP (One Time Programmable)` Memory

   * :dtcompatible:`nxp,ocotp` (:github:`103089`)
   * :dtcompatible:`sifli,sf32lb-efuse` (:github:`101926`)
   * :dtcompatible:`st,stm32-bsec` (:github:`102403`)
   * :dtcompatible:`st,stm32-nvm-otp` (:github:`102976`)
   * :dtcompatible:`zephyr,otp-emul` (:github:`101292`)

* :abbr:`P-state (Performance State)`

   * :dtcompatible:`nxp,mcxn-pstate` (:github:`105006`)

* Pin control

   * :dtcompatible:`alif,pinctrl` (:github:`101244`)
   * :dtcompatible:`brcm,bcm2711-pinctrl` (:github:`101008`)
   * :dtcompatible:`nxp,s32k5-pinctrl` (:github:`100803`)
   * :dtcompatible:`realtek,ameba-pinctrl` (:github:`78036`)
   * :dtcompatible:`realtek,bee-pinctrl` (:github:`102691`)
   * :dtcompatible:`realtek,rts5817-pinctrl` (:github:`91486`)
   * :dtcompatible:`renesas,ra0-pinctrl-pfs` (:github:`102379`)
   * :dtcompatible:`st,stm32h5-pinctrl` (:github:`105856`)
   * :dtcompatible:`syna,sr100-pinctrl` (:github:`100172`)

* Power management CPU operations

   * :dtcompatible:`arm,fvp-pwrc` (:github:`96852`)

* Power management

   * :dtcompatible:`bflb,power-controller` (:github:`102063`)
   * :dtcompatible:`st,stm32-dualreg-pwr` (:github:`99171`)
   * :dtcompatible:`st,stm32-iocell` (:github:`100539`)
   * :dtcompatible:`st,stm32h5-iocell` (:github:`104599`)
   * :dtcompatible:`st,stm32h7-pwr` (:github:`99171`)
   * :dtcompatible:`st,stm32h7rs-pwr` (:github:`99171`)
   * :dtcompatible:`st,stm32u5-pwr` (:github:`100319`)
   * :dtcompatible:`st,stm32wba-pwr` (:github:`105279`)

* Power domain

   * :dtcompatible:`arm,scmi-power-domain` (:github:`102370`)

* :abbr:`PS/2 (Personal System/2)`

   * :dtcompatible:`ite,it51xxx-ps2` (:github:`102790`)

* :abbr:`PWM (Pulse Width Modulation)`

   * :dtcompatible:`adi,max2221x-pwm` (:github:`97584`)
   * :dtcompatible:`bflb,pwm-1` (:github:`99195`)
   * :dtcompatible:`bflb,pwm-2` (:github:`99195`)
   * :dtcompatible:`elan,em32-pwm` (:github:`97843`)
   * :dtcompatible:`microchip,tc-g1-pwm` (:github:`100070`)
   * :dtcompatible:`renesas,rza2m-gpt-pwm` (:github:`100932`)
   * :dtcompatible:`sifli,sf32lb-atim-pwm` (:github:`100137`)
   * :dtcompatible:`sifli,sf32lb-gpt-pwm` (:github:`99362`)

* Regulator

   * :dtcompatible:`arduino,modulino-latch-relay` (:github:`104466`)
   * :dtcompatible:`bflb,aon-regulator` (:github:`102063`)
   * :dtcompatible:`bflb,rt-regulator` (:github:`102063`)
   * :dtcompatible:`bflb,soc-regulator` (:github:`102063`)
   * :dtcompatible:`espressif,esp32-regulator` (:github:`105076`)
   * :dtcompatible:`nordic,npm10xx-regulator` (:github:`105562`)
   * :dtcompatible:`nordic,vregusb-regulator` (:github:`97642`)
   * :dtcompatible:`st,stm32-vrefbuf` (:github:`99304`)
   * :dtcompatible:`ti,tps55287` (:github:`98662`)

* Reset controller

   * :dtcompatible:`focaltech,ft9001-cpm-rctl` (:github:`95959`)
   * :dtcompatible:`realtek,rts5817-reset` (:github:`91486`)
   * :dtcompatible:`syna,sr100-reset` (:github:`100172`)

* :abbr:`RNG (Random Number Generator)`

   * :dtcompatible:`gd,gd32-trng` (:github:`101559`)
   * :dtcompatible:`microchip,trng-g1-entropy` (:github:`99183`)
   * :dtcompatible:`raspberrypi,pico-rng` (:github:`83346`)
   * :dtcompatible:`renesas,ra-rsip-e50d-trng` (:github:`100995`)
   * :dtcompatible:`sifli,sf32lb-trng` (:github:`98467`)
   * :dtcompatible:`ti,mspm0-trng` (:github:`94733`)
   * :dtcompatible:`wch,rng` (:github:`101390`)

* :abbr:`RTC (Real Time Clock)`

   * :dtcompatible:`adi,max31331` (:github:`100508`)
   * :dtcompatible:`maxim,ds1302` (:github:`103964`)
   * :dtcompatible:`microchip,rtc-g1` (:github:`99144`)
   * :dtcompatible:`microchip,rtc-g2` (:github:`99889`)
   * :dtcompatible:`nxp,rtc-jdp` (:github:`98114`)

* :abbr:`SDHC (Secure Digital Host Controller)`

   * :dtcompatible:`infineon,sdhc-sdio` (:github:`100644`)
   * :dtcompatible:`litex,mmc` (:github:`93816`)

* Sensors

   * :dtcompatible:`adi,ade7978` (:github:`104030`)
   * :dtcompatible:`adi,adt7410` (:github:`105009`)
   * :dtcompatible:`adi,adt7422` (:github:`105009`)
   * :dtcompatible:`adi,adxl355` (:github:`103387`)
   * :dtcompatible:`adi,max30210` (:github:`100511`)
   * :dtcompatible:`ams,as5048` (:github:`100382`)
   * :dtcompatible:`ams,as6221` (:github:`94899`)
   * :dtcompatible:`avia,hx711-spi` (:github:`104416`)
   * :dtcompatible:`iclegend,s3km1110` (:github:`104279`)
   * :dtcompatible:`invensense,icm45605` (:github:`101061`)
   * :dtcompatible:`invensense,icm45605s` (:github:`101061`)
   * :dtcompatible:`invensense,icm45686s` (:github:`101061`)
   * :dtcompatible:`invensense,icm45688p` (:github:`101061`)
   * :dtcompatible:`liteon,ltr553` (:github:`101669`)
   * :dtcompatible:`microcrystal,rv3032-temp` (:github:`98918`)
   * :dtcompatible:`nordic,npm10xx-adc` (:github:`105597`)
   * :dtcompatible:`nuvoton,npcx-adc-v2t` (:github:`105006`)
   * :dtcompatible:`nxp,mcux-qdc` (:github:`104880`)
   * :dtcompatible:`nxp,tempsense` (:github:`101525`)
   * :dtcompatible:`qst,qmi8658a` (:github:`104345`)
   * :dtcompatible:`sensirion,stcc4` (:github:`104929`)
   * :dtcompatible:`sifli,sf32lb-tsen` (:github:`99463`)
   * :dtcompatible:`st,ism6hg256x` (:github:`95802`)
   * :dtcompatible:`st,lsm6dsv320x` (:github:`95802`)
   * :dtcompatible:`st,lsm6dsv80x` (:github:`95802`)
   * :dtcompatible:`ti,ina232` (:github:`98791`)
   * :dtcompatible:`ti,opt3004` (:github:`99387`)

* Serial controller

   * :dtcompatible:`focaltech,ft9001-usart` (:github:`95959`)
   * :dtcompatible:`microchip,dbgu-g1-uart` (:github:`101016`)
   * :dtcompatible:`realtek,ameba-loguart` (:github:`78036`)
   * :dtcompatible:`realtek,bee-uart` (:github:`102691`)
   * :dtcompatible:`renesas,ra-uart-sau` (:github:`102379`)
   * :dtcompatible:`rpmsg-uart` (:github:`98463`)

* :abbr:`SPI (Serial Peripheral Interface)`

   * :dtcompatible:`bflb,spi` (:github:`94752`)
   * :dtcompatible:`infineon,spi` (:github:`100644`)
   * :dtcompatible:`microchip,sercom-g1-spi` (:github:`101864`)
   * :dtcompatible:`realtek,rts5912-spi` (:github:`96006`)
   * :dtcompatible:`renesas,ra-spi-sci` (:github:`97339`)
   * :dtcompatible:`renesas,ra-spi-sci-b` (:github:`95014`)
   * :dtcompatible:`sensry,sy1xx-spi` (:github:`102323`)
   * :dtcompatible:`sifli,sf32lb-spi` (:github:`97626`)

* Stepper

   * :dtcompatible:`adi,tmc50xx-stepper-ctrl` (:github:`101001`)
   * :dtcompatible:`adi,tmc50xx-stepper-driver` (:github:`101001`)
   * :dtcompatible:`adi,tmc51xx-stepper-ctrl` (:github:`101001`)
   * :dtcompatible:`adi,tmc51xx-stepper-driver` (:github:`101001`)
   * :dtcompatible:`adi,tmcm3216` (:github:`104508`)
   * :dtcompatible:`adi,tmcm3216-stepper-ctrl` (:github:`104508`)
   * :dtcompatible:`adi,tmcm3216-stepper-driver` (:github:`104508`)
   * :dtcompatible:`zephyr,fake-stepper-ctrl` (:github:`101001`)
   * :dtcompatible:`zephyr,fake-stepper-driver` (:github:`101001`)
   * :dtcompatible:`zephyr,gpio-step-dir-stepper-ctrl` (:github:`101001`)
   * :dtcompatible:`zephyr,h-bridge-stepper-ctrl` (:github:`101001`)

* System controller

   * :dtcompatible:`ti,control-module` (:github:`103330`)

* Timer

   * :dtcompatible:`adi,max32-rv32-sys-timer` (:github:`97309`)
   * :dtcompatible:`adi,max32-wut-timer` (:github:`104687`)
   * :dtcompatible:`arm,armv7-timer` (:github:`99675`)
   * :dtcompatible:`infineon,cat1-lp-timer-pdl` (:github:`97831`)
   * :dtcompatible:`infineon,lp-timer` (:github:`100644`)
   * :dtcompatible:`realtek,bee-basic-timer` (:github:`104805`)
   * :dtcompatible:`realtek,bee-enhanced-timer` (:github:`104805`)
   * :dtcompatible:`realtek,bee-timer` (:github:`104805`)
   * :dtcompatible:`renesas,rza2m-gpt` (:github:`100932`)
   * :dtcompatible:`renesas,rza2m-ostm-timer` (:github:`100934`)
   * :dtcompatible:`sifli,sf32lb-atim` (:github:`100137`)
   * :dtcompatible:`sifli,sf32lb-gptim` (:github:`99362`)

* :abbr:`UAOL (USB Audio Offload Link)`

   * :dtcompatible:`intel,adsp-uaol` (:github:`104137`)
   * :dtcompatible:`intel,uaol-dai` (:github:`104137`)

* USB

   * :dtcompatible:`atmel,sam-udp` (:github:`102041`)
   * :dtcompatible:`bflb,udc-1` (:github:`104244`)
   * :dtcompatible:`nordic,nrf-usbhs-wrapper` (:github:`97642`)
   * :dtcompatible:`nuvoton,numaker-hsusbd` (:github:`95709`)

* USB Type-C

   * :dtcompatible:`zephyr,usb-c-pwrctrl` (:github:`103883`)

* Video

   * :dtcompatible:`arducam,mega` (:github:`96234`)
   * :dtcompatible:`himax,hm0360` (:github:`94904`)
   * :dtcompatible:`ovti,ov5642` (:github:`97106`)
   * :dtcompatible:`ovti,ov7675` (:github:`96319`)
   * :dtcompatible:`sony,imx219` (:github:`101754`)

* Wakeup Controller

   * :dtcompatible:`nxp,llwu` (:github:`100559`)

* Watchdog

   * :dtcompatible:`adi,max42500-watchdog` (:github:`102929`)
   * :dtcompatible:`bflb,wdt` (:github:`104243`)
   * :dtcompatible:`microchip,wdt-g1` (:github:`101335`)
   * :dtcompatible:`realtek,rts5817-watchdog` (:github:`91486`)

* Wi-Fi

   * :dtcompatible:`nordic,nrf7120-wifi` (:github:`104055`)

* :abbr:`XSPI (Expanded Serial Peripheral Interface)`

   * :dtcompatible:`nxp,s32-xspi` (:github:`101487`)
   * :dtcompatible:`nxp,s32-xspi-sfp-frad` (:github:`101487`)
   * :dtcompatible:`nxp,s32-xspi-sfp-mdad` (:github:`101487`)
   * :dtcompatible:`st,stm32-xspim` (:github:`104943`)

New Samples
***********

* :zephyr:code-sample:`6dof_fifo_stream` (renamed from ``stream_fifo``)
* :zephyr:code-sample:`accel_stream` (renamed from ``accel_polling``)
* :zephyr:code-sample:`adc_stream`
* :zephyr:code-sample:`amp_talk`
* :zephyr:code-sample:`at_client`
* :zephyr:code-sample:`bflb-bl61x-wo-uart`
* :zephyr:code-sample:`ble_peripheral_ans`
* :zephyr:code-sample:`ble_peripheral_ets`
* :zephyr:code-sample:`ble_peripheral_gap_svc`
* :zephyr:code-sample:`bluetooth_a2dp_sink`
* :zephyr:code-sample:`bluetooth_a2dp_source`
* :zephyr:code-sample:`bluetooth_l2cap_coc_acceptor`
* :zephyr:code-sample:`bluetooth_l2cap_coc_initiator`
* :zephyr:code-sample:`bridge`
* :zephyr:code-sample:`button_interrupt`
* :zephyr:code-sample:`capture`
* :zephyr:code-sample:`coap-upload`
* :zephyr:code-sample:`codec`
* :zephyr:code-sample:`cpu_freq_on_demand`
* :zephyr:code-sample:`cpu_freq_pressure`
* :zephyr:code-sample:`crc_drivers`
* :zephyr:code-sample:`crc_subsys`
* :zephyr:code-sample:`cs40l5x`
* :zephyr:code-sample:`device_pm`
* :zephyr:code-sample:`dsa`
* :zephyr:code-sample:`event`
* :zephyr:code-sample:`ext2-fstab`
* :zephyr:code-sample:`fingerprint-sensor`
* :zephyr:code-sample:`flash-ipm`
* :zephyr:code-sample:`frdm_mcxa156_lpdac_opamp_lpadc`
* :zephyr:code-sample:`ftp-client`
* :zephyr:code-sample:`hello_hl78xx`
* :zephyr:code-sample:`hwspinlock`
* :zephyr:code-sample:`instrumentation`
* :zephyr:code-sample:`is31fl319x`
* :zephyr:code-sample:`latmon-client`
* :zephyr:code-sample:`lp-gpio-wakeup`
* :zephyr:code-sample:`lp-timer-wakeup`
* :zephyr:code-sample:`max32664c`
* :zephyr:code-sample:`mctp_i2c_bus_endpoint`
* PMCI MCTP over I2C+GPIO (``mctp_i2c_bus_owner``)
* :zephyr:code-sample:`mctp_i3c_bus_endpoint`
* PMCI MCTP over I3C (``mctp_i3c_bus_owner``)
* :zephyr:code-sample:`mctp-usb-endpoint`
* :zephyr:code-sample:`msg_queue`
* :zephyr:code-sample:`mtch9010`
* :zephyr:code-sample:`netmidi2`
* :zephyr:code-sample:`nrf_clock_control`
* :zephyr:code-sample:`ocpp`
* :zephyr:code-sample:`opamp_output_measure`
* :zephyr:code-sample:`openthread-border-router`
* :zephyr:code-sample:`pico-w-wifi-led`
* :zephyr:code-sample:`producer_consumer`
* :zephyr:code-sample:`quality-of-service`
* :zephyr:code-sample:`red-black-tree`
* :zephyr:code-sample:`regulator_shell`
* :zephyr:code-sample:`renesas_lvd`
* :zephyr:code-sample:`rtk0eg0019b01002bj`
* :zephyr:code-sample:`s3km1110`
* :zephyr:code-sample:`scmi`
* :zephyr:code-sample:`sct2024`
* :zephyr:code-sample:`shell-devmem-load`
* :zephyr:code-sample:`stm32_pwm_mastermode`
* :zephyr:code-sample:`t1s`
* :zephyr:code-sample:`tmcm3216`
* :zephyr:code-sample:`usb-c-drp`
* :zephyr:code-sample:`usb-host-uvc`
* :zephyr:code-sample:`veml6046`
* :zephyr:code-sample:`virtiofs`
* :zephyr:code-sample:`wireguard-vpn`
* :zephyr:code-sample:`zbus-async-listeners`
* :zephyr:code-sample:`zbus-proxy-agent-ipc`
* :zephyr:code-sample:`ztest_benchmark`

..
  Same as above, this will also be recomputed at the time of the release.
 Just link the sample, further details go in the sample documentation itself.

Devicetree
**********

* Migration guide: :ref:`migration_4.4_devicetree`

* New macros for reg property iteration (:github:`104223`)

  * :c:macro:`DT_FOREACH_REG`
  * :c:macro:`DT_FOREACH_REG_SEP`
  * :c:macro:`DT_FOREACH_REG_VARGS`
  * :c:macro:`DT_FOREACH_REG_SEP_VARGS`
  * Instance number based variants of each, e.g. :c:macro:`DT_INST_FOREACH_REG`

* Definitions for ``*-map`` related properties (:github:`87595`)
  provide first-class support for nexus nodes and specifier mappings.
  See Devicetree Specification v0.4 section 2.5 for more details
  on these properties.

* New :dtcompatible:`zephyr,mapped-partition` binding and associated
  APIs for memory-mapped flash partitions. This is a successor to the
  existing :dtcompatible:`fixed-partitions` binding

* Bindings are no longer allowed to specify any default values for the
  ``status``, ``#address-cells`` and ``#size-cells`` properties.

* :c:macro:`DT_CHILD_BY_UNIT_ADDR_INT`

* :c:macro:`DT_INST_CHILD_BY_UNIT_ADDR_INT`

Kconfig
*******

* Added new preprocessor function ``dt_highest_controller_irq_number`` (:github:`104819`)

Kernel
******

* Dropped CONFIG_SCHED_DUMB and CONFIG_WAITQ_DUMB options which were deprecated
  in Zephyr 4.2.0

* Added tiered heap hardening with :kconfig:option:`CONFIG_SYS_HEAP_HARDENING`
  (Basic, Moderate, Full, Extreme) providing progressive levels of runtime
  corruption detection for :c:func:`sys_heap_alloc` and :c:func:`sys_heap_free`,
  including double-free detection, neighbor consistency checks, and optional
  per-chunk canaries (:github:`104999`).

* :ref:`cleanup_api`

  * :c:macro:`SCOPE_VAR_DEFINE`
  * :c:macro:`SCOPE_GUARD_DEFINE`
  * :c:macro:`SCOPE_DEFER_DEFINE`
  * :c:macro:`scope_var`
  * :c:macro:`scope_var_init`
  * :c:macro:`scope_guard`
  * :c:macro:`scope_defer`

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

* LoRa/LoRaWAN

   * :c:func:`lora_airtime`
   * Added Channel Activity Detection (CAD) support to the LoRa API:
     :c:func:`lora_cad`, :c:func:`lora_cad_async`.
     CAD parameters and LBT mode are configured via
     :c:struct:`lora_modem_config`.
   * Added :c:func:`lora_recv_duty_cycle` for hardware-driven
     wake-on-radio (RX duty cycling).

* Mbed TLS

  * Added :kconfig:option:`CONFIG_MBEDTLS_VERSION_C` to simplify the
    export of version information from Mbed TLS. If enabled, the
    :c:func:`mbedtls_version_get_number()` function will be available.

  * Mbed TLS has been upgraded to version 4.1.0. From now on this repo will only include TLS
    and X.509, while crypto support was moved to TF-PSA-Crypto. A new west module
    has been introduced for the latter and it's based on upstream release 1.1.0.
    Release notes for both projects can be found here:

    * https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-4.1.0
    * https://github.com/Mbed-TLS/TF-PSA-Crypto/releases/tag/tf-psa-crypto-1.1.0

* Zbus

   * Added async listener support. Async listeners execute in a workqueue context instead of the
     publisher's thread, enabling non-blocking operations without requiring a dedicated subscriber
     thread.
   * Added :zephyr:code-sample:`zbus-async-listeners`.
   * Added experimental proxy-agent communication with IPC backend support for
     forwarding channel data across domains.
   * Added :zephyr:code-sample:`zbus-proxy-agent-ipc`.
   * Added the :c:func:`zbus_chan_from_name` function. Retrieve a zbus channel from its name string.
   * Added the :c:func:`zbus_async_listener_set_work_queue` function. Set the work queue for an
     async listener.
   * Added the :c:func:`zbus_chan_pub_stats_msg_age` function. Get the message age in milliseconds
     since the last publish.
   * Clarified observer priority documentation and fixed spelling and grammar.
   * Updated observer types image in documentation.
   * Filtered out tests that are not SMP aware.


Other notable changes
*********************

* TF-M was updated to version 2.2.2 (from 2.2.0). The release notes can be found at:

  * https://trustedfirmware-m.readthedocs.io/en/tf-mv2.2.2/releases/2.2.1.html
  * https://trustedfirmware-m.readthedocs.io/en/tf-mv2.2.2/releases/2.2.2.html

* TF-M NS interface headers are now automatically available to non-secure applications via the
  ``zephyr_interface`` CMake library, removing the need to explicitly link against ``tfm_api``.

* NXP SoC DTSI files have been reorganized by moving them into family-specific
  subdirectories under ``dts/arm/nxp``.

* :zephyr:board:`native_sim` based targets can now be :ref:`cross-compiled<posix_arch_cross_compile>`
  (:github:`100182`)

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

---

### Doc Releases Release Notes 4.5 (`doc/releases/release-notes-4.5.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.5:

Zephyr 4.5.0 (Working Draft)
############################

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

Major enhancements with this release include:

**New architectures: Infineon TriCore and Qualcomm Hexagon**
  Zephyr now supports the :zephyr:board-catalog:`Infineon TriCore architecture <#arch=tricore>`,
  used in AURIX automotive microcontrollers, and the
  :zephyr:board-catalog:`Qualcomm Hexagon DSP architecture <#arch=hexagon>`.

**Multimedia Pipeline (mpipe)**
  The new experimental :ref:`Multimedia Pipeline (mpipe) <mpipe>` subsystem, inspired by
  GStreamer, provides a framework for building media applications from source, transform and
  sink elements linked into a zero-copy pipeline.

**Networking enhancements**
  Optimizations across the IP stack deliver up to 21% higher TCP throughput in the
  :ref:`zperf loopback benchmark <zperf-loopback-icount>`.

  The networking stack also gains several new features:

  - :ref:`QUIC <quic_transport_interface>` and :ref:`HTTP/3 <http_server_interface>` support.

  - :zephyr:code-sample:`SSH server and client <ssh-server-client>`, including a shell backend.

  - :ref:`Model Context Protocol (MCP) server <mcp_server_interface>` to let AI agents use tools
    exposed by a device.

  - Gateway features: IPv4 forwarding, NAT and :ref:`DHCPv6 <dhcpv6_interface>` prefix delegation.

**New driver classes**
  Zephyr 4.5 adds several new driver APIs:

  - :ref:`Buzzer <buzzer_api>` for passive and active buzzers driven by PWM or GPIO,

  - :ref:`Clock Monitor <clock_monitor_api>` for runtime observation of clock frequency,

  - :ref:`DALI <dali_api>` for the Digital Addressable Lighting Interface,

  - :ref:`LIN <lin>` for the Local Interconnect Network automotive serial bus,

  - :ref:`MUX <mux_api>` for hardware signal multiplexers, and

  - :ref:`Pulse IO <pulse_io_api>` for hardware that generates and captures timed digital edges,
    as needed by addressable LED strips and infrared transceivers.

**Security and SBOM improvements**
  This release improves SBOM generation, hardening checks and cryptographic acceleration:

  - :ref:`SPDX 3.0 SBOMs <west-spdx>`, including the :ref:`Build profile <west-spdx-build-profile>`.

  - A revamped :ref:`hardening tool <hardening>` with CWE references and CI integration.

  - Hardware-accelerated :ref:`PSA Crypto <psa_crypto>` on selected Silicon Labs, NXP and STM32
    devices.

**Simulation and testing improvements**
  This release extends simulated targets and test tooling:

  - New host-backed :ref:`native_sim peripherals <native_sim_peripherals>`, including Wi-Fi, audio,
    video, LEDs and host directory mounts.

  - New :ref:`VirtIO <virtio>` drivers (block, input, GPIO, I2C and SPI) for QEMU targets.

  - :ref:`Multi-device testing <twister_multi_duts_testing>` and
    :ref:`multi-toolchain builds <twister_toolchain_selection>` in Twister.

  - :ref:`TTCN-3 conformance test suites <ttcn3_testing>` for the networking stack.

**Debugging and diagnostics**
  This release adds several debugging and diagnostic tools:

  - :ref:`ZASSERT() <assert>` for per-module and per-file assertion levels.

  - Heap memory error detection with :kconfig:option:`CONFIG_SYS_HEAP_SANITIZER_ASAN` (native_sim)
    and :kconfig:option:`CONFIG_SYS_HEAP_KASAN` (real targets).

  - New :ref:`tracing <tracing>` features: terminal viewer, Perfetto export, shell and ITM backend.

**Expanded board support**
  This release adds support for 178 :ref:`new boards <boards_added_in_zephyr_4_5>` and 29
  :ref:`new shields <shields_added_in_zephyr_4_5>`.

An overview of the changes required or recommended when migrating your application from Zephyr
v4.4.0 to Zephyr v4.5.0 can be found in the separate :ref:`migration guide<migration_4.5>`.

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

* :cve:`2026-8718` Under embargo until 2026-08-08

* :cve:`2026-9263` Under embargo until 2026-06-28

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

..
  Only removed, deprecated and new APIs. Changes go in migration guide.

Removed APIs and options
========================

* Architectures

   * ARM

      * ``CONFIG_PLATFORM_SPECIFIC_INIT``
      * ``z_arm_platform_init()``

   * RISC-V

      * ``CONFIG_EXTRA_EXCEPTION_INFO``

   * x86

      * ``CONFIG_SSE``
      * ``CONFIG_SSE_FP_MATH``

   * Xtensa

      * ``CONFIG_XTENSA_BACKTRACE_EXCEPTION_DUMP_HOOK``

* Bluetooth

  * Controller

    * ``CONFIG_BT_CTRL_ADV_ADI_IN_SCAN_RSP``

  * Host

    * The ``CONFIG_BT_RECV_CONTEXT`` choice and its options ``CONFIG_BT_RECV_WORKQ_SYS``
      and ``CONFIG_BT_RECV_WORKQ_BT`` have been removed. The host now always
      processes low-priority HCI packets on the dedicated Bluetooth RX workqueue
      (the former ``CONFIG_BT_RECV_WORKQ_BT`` behavior). See the migration guide.

    * Selected Host work items have moved from the system workqueue to the
      dedicated Bluetooth RX workqueue. Application callbacks reached from
      those work items now run in the Bluetooth RX thread. See the migration
      guide for affected callback families.

    * The ``CONFIG_BT_HCI_RAW_H4`` and ``CONFIG_BT_HCI_RAW_H4_ENABLE`` Kconfig
      options have been removed. They have had no effect since Zephyr 4.2,
      where the HCI raw layer switched to using H:4 packet encoding for all
      buffers unconditionally. Applications still setting these options can
      simply drop them.

    * ``CONFIG_BT_AUTO_PHY_UPDATE``, replaced by the ``BT_AUTO_PHY_CENTRAL`` and
      ``BT_AUTO_PHY_PERIPHERAL`` choices
    * ``_bt_gatt_ccc``
    * ``BT_GATT_CCC_INITIALIZER``
    * ``CONFIG_BT_CONN_TX_MAX``
    * ``CONFIG_BT_FIXED_PASSKEY``
    * ``bt_passkey_set()``
    * ``BT_PASSKEY_INVALID``

  * Mesh

    * ``CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASE``
    * ``CONFIG_BT_MESH_BLOB_IO_FLASH_WITHOUT_ERASE``

  * Services

    * ``CONFIG_BT_DIS_MANUF``
    * ``CONFIG_BT_DIS_MODEL``

* Boards

    * Dropped the following deprecated board aliases:

      * ``arduino_uno_r4_minima``
      * ``arduino_uno_r4_wifi``
      * ``esp32c6_devkitc``
      * ``esp32_devkitc_wroom/esp32/procpu``
      * ``esp32_devkitc_wroom/esp32/appcpu``
      * ``esp32_devkitc_wrover/esp32/procpu``
      * ``esp32_devkitc_wrover/esp32/appcpu``
      * ``neorv32``
      * ``panb511evb``
      * ``raytac_an54l15q_db/nrf54l15/cpuapp``
      * ``scobc_module1``
      * ``xiao_esp32c6``

    * The following boards have been deprecated and renamed:

      * ``adafruit_metro_rp2350/rp2350b/m33`` to ``adafruit_metro_rp2350/rp2350b/m33_0``
      * ``motion_2350_pro/rp2350a/m33`` to ``motion_2350_pro/rp2350a/m33_0``
      * ``motion_2350_pro/rp2350a/hazard3`` to ``motion_2350_pro/rp2350a/hazard3_0``
      * ``beetle_rp2350/rp2350a/m33`` to ``beetle_rp2350/rp2350a/m33_0``
      * ``beetle_rp2350/rp2350a/hazard3`` to ``beetle_rp2350/rp2350a/hazard3_0``
      * ``pico2_spe/rp2350a/m33`` to ``pico2_spe/rp2350a/m33_0``
      * ``pico_plus2/rp2350b/m33`` to ``pico_plus2/rp2350b/m33_0``
      * ``pico_plus2/rp2350b/hazard3`` to ``pico_plus2/rp2350b/hazard3_0``
      * ``rpi_pico2/rp2350a/m33`` to ``rpi_pico2/rp2350a/m33_0``
      * ``rpi_pico2/rp2350a/m33/w`` to ``rpi_pico2/rp2350a/m33_0/w``
      * ``rpi_pico2/rp2350a/m33/mcuboot`` to ``rpi_pico2/rp2350a/m33_0/mcuboot``
      * ``rpi_pico2/rp2350a/m33/w/mcuboot`` to ``rpi_pico2/rp2350a/m33_0/w/mcuboot``
      * ``rpi_pico2/rp2350a/hazard3`` to ``rpi_pico2/rp2350a/hazard3_0``
      * ``xiao_rp2350/rp2350a/m33`` to ``xiao_rp2350/rp2350a/m33_0``
      * ``xiao_rp2350/rp2350a/hazard3`` to ``xiao_rp2350/rp2350a/hazard3_0``
      * ``rp2350_zero/rp2350a/m33`` to ``rp2350_zero/rp2350a/m33_0``
      * ``rp2350_zero/rp2350a/hazard3`` to ``rp2350_zero/rp2350a/hazard3_0``
      * ``rp2350b_core/rp2350b/m33`` to ``rp2350b_core/rp2350b/m33_0``
      * ``rp2350b_core/rp2350b/hazard3`` to ``rp2350b_core/rp2350b/hazard3_0``
      * ``w5500_evb_pico2/rp2350a/m33`` to ``w5500_evb_pico2/rp2350a/m33_0``
      * ``w6100_evb_pico2/rp2350a/m33`` to ``w6100_evb_pico2/rp2350a/m33_0``
      * ``w6300_evb_pico2/rp2350a/m33`` to ``w6300_evb_pico2/rp2350a/m33_0``

* Build system

    * ``CONFIG_BUILD_NO_GAP_FILL``
    * ``cmake/app/boilerplate.cmake``
    * Board revision Kconfig fragments named ``<board>_<revision>.conf``, replaced by
      ``<board>_<revision>_defconfig``
    * Pattern expansion in ``zephyr_code_relocate(FILES ...)``, replaced by ``file(GLOB ...)``
    * The CMake ``flash``, ``debug``, ``debugserver``, ``attach`` and ``rtt`` targets,
      replaced by the corresponding ``west`` commands
    * The ``WEST_DIR`` build system variable
    * The ``ZephyrUnittest`` CMake package, replaced by
      ``find_package(Zephyr COMPONENTS unittest)``

* CAN

    * ``bus-speed``
    * ``bus-speed-data``

* Comparator

    * ``nxp,enable-output-pin``, ``nxp,use-unfiltered-output``, ``nxp,high-speed-mode``,
      ``nxp,enable-sample``, ``nxp,filter-count``, ``nxp,filter-period`` and ``nxp,window-mode``
      properties of :dtcompatible:`nxp,kinetis-acmp`

* Counter

    * ``CONFIG_COUNTER_MAXIM_DS3231``
    * ``prescaler`` property of :dtcompatible:`nxp,lptmr`

* hawkBit

    * ``<zephyr/mgmt/hawkbit.h>``

* Devicetree

    * ``zephyr,memory-region-mpu``


* Ethernet

    * The NuMaker Ethernet driver with ``CONFIG_ETH_NUMAKER`` is superseded by
      :kconfig:option:`CONFIG_ETH_NUMAKER_DWC_ETHER_1000`. See the migration guide.

* Debug

  * The experimental ``CONFIG_ASSERT_CUSTOM_HEADER`` option and its ``zephyr_custom_assert.h``
    include hook have been removed without a deprecation period, per the experimental API policy.
    Applications that need to customize assertion handling should override the weak zassert hooks
    (``zassert_fail``/``zassert_vprint``/``zassert_post_action``) instead.

* LLEXT

    * ``llext_get_fn_table``, replaced by ``llext_get_fn_table_entry``

* Mbed TLS

    * ``CONFIG_MBEDTLS_MD``
    * ``CONFIG_MBEDTLS_LMS``
    * ``CONFIG_MBEDTLS_TLS_VERSION_1_2``
    * ``CONFIG_MBEDTLS_DTLS``
    * ``CONFIG_MBEDTLS_TLS_VERSION_1_3``
    * ``CONFIG_MBEDTLS_TLS_SESSION_TICKETS``
    * ``CONFIG_MBEDTLS_CTR_DRBG_ENABLED``
    * ``CONFIG_MBEDTLS_HMAC_DRBG_ENABLED``

* MCUboot

    * ``CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH``, replaced by
      :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE`

* MCUmgr

    * ``CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM``

* Networking

    * ``CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO``
    * ``CONFIG_NET_SOCKETS_POLL_MAX``
    * ``CONFIG_NET_TEST_PROTOCOL``, together with the
      ``samples/net/sockets/tcp`` sample that was its only system under test.
    * ``CONFIG_NET_GPTP_CLOCK_ACCURACY_*``
    * ``net_ipv6_set_hop_limit()``
    * ``net_if_ipv4_get_netmask()``
    * ``net_if_ipv4_set_netmask()``
    * ``net_if_ipv4_set_netmask_by_index()``
    * ``openthread_state_changed_cb_register()``
    * ``openthread_state_changed_cb_unregister()``
    * ``openthread_start()``
    * ``openthread_api_mutex_lock()``
    * ``openthread_api_mutex_try_lock()``
    * ``openthread_api_mutex_unlock()``
    * ``struct openthread_state_changed_cb``
    * ``TLS_CREDENTIAL_SERVER_CERTIFICATE``
    * ``start_11r_roaming``
    * ``IEEE802154_HW_SLEEP_TO_TX``

* Nordic

    * ``owner-id``, ``perm-read``, ``perm-write``, ``perm-execute``, ``perm-secure`` and
      ``non-secure-callable`` properties of :dtcompatible:`nordic,owned-memory` and
      :dtcompatible:`nordic,owned-partitions`
    * ``CONFIG_BOARD_ENABLE_CPUNET``, replaced by :kconfig:option:`CONFIG_SOC_NRF53_CPUNET_ENABLE`
    * ``CONFIG_GPIO_AS_PINRESET``
    * ``CONFIG_NRFS_LOCAL_DOMAIN_DVFS_SCALE_DOWN_AFTER_INIT``, replaced by
      :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF_HSFLL_LOCAL_REQ_LOW_FREQ`
    * ``CONFIG_SOC_DCDC_NRF52X``
    * ``CONFIG_SOC_DCDC_NRF52X_HV``
    * ``CONFIG_SOC_DCDC_NRF53X_APP``
    * ``CONFIG_SOC_DCDC_NRF53X_NET``
    * ``CONFIG_SOC_DCDC_NRF53X_HV``

* POSIX

    * ``CONFIG_POSIX_READER_WRITER_LOCKS``

* Random

    * ``CONFIG_CTR_DRBG_CSPRNG_GENERATOR``
    * ``CONFIG_CS_CTR_DRBG_PERSONALIZATION``

* Shell

    * ``kernel log_level``, replaced by ``log enable``

* SPI

    * The optional delay argument of :c:macro:`SPI_CONFIG_DT`, :c:macro:`SPI_CONFIG_DT_INST`,
      :c:macro:`SPI_DT_SPEC_GET`, :c:macro:`SPI_DT_SPEC_INST_GET`, :c:macro:`SPI_DT_IODEV_DEFINE`,
      :c:macro:`SPI_DT_INST_IODEV_DEFINE` and :c:macro:`SPI_CS_CONTROL_INIT` has been removed.

* Stream Flash

    * ``stream_flash_erase_page()``

* Tracing

  * The ``_track_list_k_*`` object tracking list heads, ``SYS_PORT_TRACK_NEXT()`` and
    :file:`include/zephyr/tracing/tracking.h`. Object tracking now enumerates objects through
    the :ref:`object core framework <object_cores_api>`.

* ZTest

    * ``CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNT``
    * ``CONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT``

* West sign support for imgtool, which was deprecated in Zephyr 4.0, has been removed.

* The ``scripts/logging/dictionary/log_parser_uart.py`` dictionary logging script, which was
  deprecated in Zephyr 4.3, has been removed. Use
  :zephyr_file:`scripts/logging/dictionary/live_log_parser.py` instead.

* The ``--skip-rebuild`` option of ``west flash``, ``west debug`` and the other commands that
  invoke a runner, which was deprecated in Zephyr 4.3, has been removed. Use ``--no-rebuild``
  instead.

Deprecated APIs and options
===========================

* Audio Codec

  * The :c:struct:`audio_codec_api` struct has been deprecated. Audio codec drivers are now
    expected to use the :c:macro:`DEVICE_API` macro to declare their driver API.

* Bluetooth

  * The :kconfig:option:`CONFIG_BT_CUSTOM` stack selection has been deprecated. It dates from the
    time when a whole Bluetooth Host could be offloaded behind the Zephyr Bluetooth API and has no
    user in the tree; HCI transports are regular device drivers. The HCI-based stack,
    :kconfig:option:`CONFIG_BT_HCI`, is the only selection left in the tree; the choice itself
    stays as the extension point for out-of-tree stacks.

  * The HCI driver ``setup()`` op, :c:func:`bt_hci_setup`,
    :c:struct:`bt_hci_setup_params`, :kconfig:option:`CONFIG_BT_HCI_SETUP` and the
    ``bt_h4_vnd_setup()`` hook of the H:4 driver have been deprecated. A driver performs its
    vendor-specific initialization inside :c:member:`bt_hci_driver_api.open` instead, over its
    own transport. See the migration guide.

* Build system

  * The ``zephyr_file_copy()`` CMake function has been deprecated. Use the native
    ``file(COPY_FILE ...)`` CMake command instead.

* Clock control

  * The function :c:func:`z_nrf_clock_control_get_onoff` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_K32SRC_ACCURACY` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_K32SRC` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_SUBSYS_HFAUDIO` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_SUBSYS_HFAUDIO` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_SUBSYS_HF24M` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_SUBSYS_HF24M` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The macro :c:macro:`CLOCK_CONTROL_NRF_SUBSYS_HF` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The enum :c:enumerator:`clock_control_nrf_type` has been deprecated.
    See the :ref:`migration guide <migration_4.5>` for details.

  * The Kconfig option :kconfig:option:`CONFIG_CLOCK_CONTROL_NRF` and all dependent kconfigs have
    been deprecated. See the :ref:`migration guide <migration_4.5>` for details. The Kconfigs are
    located in the ``drivers/clock_control/Kconfig.nrf`` and  ``modules/hal_nordic/nrfx/Kconfig``
    files.

* Controller Area Network (CAN)

  * :c:func:`can_set_state_change_callback` is deprecated in favor of
    :c:func:`can_init_state_change_callback`, :c:func:`can_add_state_change_callback`, and
    :c:func:`can_remove_state_change_callback`. The new API functions allow adding more than one CAN
    controller state change callback (:github:`117889`).

* CPU Load

  * :kconfig:option:`CONFIG_CPU_LOAD_METRIC` and :c:func:`cpu_load_metric_get` are deprecated. The
    CPU load metric module has been merged into the unified :ref:`cpu_load` module; use
    :kconfig:option:`CONFIG_CPU_LOAD` with the
    :kconfig:option:`CONFIG_CPU_LOAD_BACKEND_RUNTIME_STATS` backend and :c:func:`cpu_load_get_cpu`.

* :abbr:`DMIC (Digital Microphone Interface)`

  * The :c:struct:`_dmic_ops` struct has been deprecated. DMIC drivers are now expected to use the
    :c:macro:`DEVICE_API` macro to declare their driver API.

* Fuel Gauge

  * Deprecated various fuel gauge property enums and union fields in favor of
    new versions with explicit unit suffixes.

* LoRa

  * Renamed :c:func:`lora_recv_duty_cycle` to :c:func:`lora_recv_duty_cycle_async`
    to be consistent with the existing sync/async naming convention.

* MCUmgr

  * The :c:type:`smp_transport_get_mtu_fn` type and the ``get_mtu`` member of
    :c:struct:`smp_transport_api_t` have been deprecated, as the SMP layer does not use them.
    See the :ref:`migration guide <migration_4.5>` for details.

  * :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UART_MTU` and
    :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_MTU` have been deprecated, as they only set the
    value returned by the deprecated ``get_mtu`` callback. See the
    :ref:`migration guide <migration_4.5>` for details.

* Nordic

  * The internal SoC platform Kconfig symbols ``NRF_PLATFORM_HALTIUM`` and
    ``NRF_PLATFORM_LUMOS`` have been deprecated. Use specific SOC_SERIES_* Kconfig options instead.

  * The sysbuild Kconfig option ``SB_CONFIG_NRF_HALTIUM_GENERATE_UICR`` has
    been renamed to :kconfig:option:`SB_CONFIG_NRF_GENERATE_UICR`.

  * The Nordic SoC headers :file:`<haltium_power.h>` and :file:`<haltium_pm_s2ram.h>`
    have been renamed to :file:`<soc_power.h>` and :file:`<soc_pm_s2ram.h>` respectively.

* Raspberry Pi

  * The RP2350 ``SOC_RP2350A_HAZARD3``, ``SOC_RP2350A_M33``, ``SOC_RP2350B_HAZARD3``, and
    ``SOC_RP2350B_M33`` Kconfig symbols, along with the corresponding bare ``hazard3``/``m33``
    cpuclusters in ``soc.yml``, are deprecated in favor of ``SOC_RP2350A_HAZARD3_0``,
    ``SOC_RP2350A_M33_0``, ``SOC_RP2350B_HAZARD3_0``, and ``SOC_RP2350B_M33_0`` and their
    ``hazard3_0``/``m33_0`` cpuclusters, to align RP2350 dual-core cluster naming with the hardware
    model v2. Both the old Kconfig symbols and the ``soc.yml`` entries will be removed
    in a future release. All in-tree boards have been migrated.

* Ring buffer

  * The ring buffer item API (:c:func:`ring_buf_item_init`, :c:func:`ring_buf_item_put`,
    :c:func:`ring_buf_item_get`, :c:func:`ring_buf_item_space_get`) has been deprecated in favor of
    :c:struct:`sys_ringq` (see :ref:`fixed_size_ringq_api`).

  * The zero-copy claim/finish API (:c:func:`ring_buf_put_claim`, :c:func:`ring_buf_put_finish`,
    :c:func:`ring_buf_get_claim`, :c:func:`ring_buf_get_finish`) has been deprecated in favor of
    the new :c:func:`ring_buf_put_ptr` / :c:func:`ring_buf_get_ptr` API. Code still using it must
    enable :kconfig:option:`CONFIG_RING_BUFFER`.

  * :kconfig:option:`CONFIG_RING_BUFFER` is deprecated. The ring buffer API is now header-only and
    always available, so the option is no longer required to use ring buffers. It now only serves
    as the deprecated switch that restores the legacy claim/finish and item APIs while out-of-tree
    code migrates to the replacement APIs.

* Network buffers

  * :c:func:`net_buf_max_len` and :c:func:`net_buf_simple_max_len` have been deprecated. Use
    :c:func:`net_buf_tailroom` and :c:func:`net_buf_simple_tailroom` instead. See the
    :ref:`migration guide <migration_4.5>` for details.

* Networking

  * Deprecated LLMNR support (:kconfig:option:`CONFIG_LLMNR_RESOLVER` and
    :kconfig:option:`CONFIG_LLMNR_RESPONDER`). LLMNR is being phased out; use
    mDNS (:kconfig:option:`CONFIG_MDNS_RESOLVER` /
    :kconfig:option:`CONFIG_MDNS_RESPONDER`) instead.

* Networking Link layer

  * Deprecated :kconfig:option:`CONFIG_NET_L2_PTP`.
    Used :kconfig:option:`CONFIG_NET_L2_PTP_TIMESTAMPING` instead.

* SPI

  * The SPI API now uses inclusive terminology (controller/peripheral, SDO/SDI). The former
    names are deprecated: ``SPI_OP_MODE_MASTER``/``SPI_OP_MODE_SLAVE`` (use
    :c:macro:`SPI_OP_MODE_CONTROLLER`/:c:macro:`SPI_OP_MODE_PERIPHERAL`), the ``slave`` member
    of :c:struct:`spi_config` (use ``peripheral``), the ``SPI_MOSI_OVERRUN_*`` macros (use
    :c:macro:`SPI_SDO_OVERRUN_UNKNOWN`, :c:macro:`SPI_SDO_OVERRUN_DT`,
    :c:macro:`SPI_SDO_OVERRUN_DT_INST`), ``CONFIG_SPI_SLAVE`` (use
    :kconfig:option:`CONFIG_SPI_PERIPHERAL`), the ``zephyr,bt-hci-spi-slave`` devicetree
    compatible (use :dtcompatible:`zephyr,bt-hci-spi-peripheral`) and the
    ``mosi-gpios``/``miso-gpios``-style devicetree properties of the bindings listed in the
    migration guide.

* Timer

  * New :c:func:`sys_clock_no_timeout` hook for handling of
    :kconfig:option:`CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE`, replacing the call to
    :c:func:`sys_clock_set_timeout` with ``ticks=K_TICKS_FOREVER``.
  * New :c:func:`sys_clock_idle_enter` hook for handling of entry in low-power state,
    replacing the call to :c:func:`sys_clock_set_timeout` with ``idle=true``.

* :abbr:`USB (Universal Serial Bus)`

  * Deprecated property ``clock-reference`` of :dtcompatible:`st,stm32u5-otghs-phy`.
    Do not specify the property; it is no longer required by the underlying driver.

* Video

  * All functions in the video driver API (``<zephyr/drivers/video.h>``) have moved to the video
    subsystem (``<zephyr/video/video.h>``). Application only need to rename the ``#include``.

* West

  * ``west spdx --init`` is deprecated. A build with
    :kconfig:option:`CONFIG_BUILD_OUTPUT_META` now asks CMake for the file-based API that
    ``west spdx`` reads, so the build directory no longer has to be prepared before it is
    configured. See :ref:`west-spdx`.

* Work queue

  * :c:member:`k_work_q.thread` has been deprecated. Use :c:member:`k_work_q.thread_id` instead.

New APIs and options
====================
..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

.. zephyr-keep-sorted-start re(^\* \w) ignorecase

* ADC

  * Optional :c:member:`adc_driver_api.ref_get` callback and
    :c:func:`adc_ref_get` so applications and
    :c:func:`adc_raw_to_millivolts_dt` can use a driver-owned runtime
    millivolt scale for any :c:enum:`adc_reference`. Static
    :c:member:`adc_driver_api.ref_internal` remains the fallback for
    :c:enumerator:`ADC_REF_INTERNAL` when the callback is NULL.
    :c:func:`adc_raw_to_millivolts_dt` falls back to channel DT
    ``zephyr,vref-mv`` when :c:func:`adc_ref_get` fails.
  * :kconfig:option:`CONFIG_ADC_STM32_VREFINT_CALIBRATE` (measure VREF+ from
    VREFINT at init and on ``sequence.calibrate``)

* Architectures

  * :kconfig:option:`CONFIG_ARM_MPU_CM7_UNMAPPED_REGION` (Arm Cortex-M7 catch-all MPU region
    for unmapped addresses, erratum 1013783 workaround)
  * :kconfig:option:`CONFIG_CORTEX_M_ERRATUM_440977_WORKAROUND` (keeps an ISB after
    priority-raising BASEPRI writes; enabled by default on Arm Cortex-M7, where erratum
    440977 applies to r0p0/r0p1 cores. Other Cortex-M cores no longer execute barriers in
    the interrupt lock/unlock fast paths, speeding up kernel hot paths)
  * :kconfig:option:`CONFIG_EXCEPTION_DUMP` (enabled by default, can be disabled to compile
    out the fault handler output on size constrained builds)
  * :kconfig:option:`CONFIG_RISCV_ISA_EXT_ZKR` (RISC-V Zkr entropy source extension, enabled
    from the ``riscv,isa-extensions`` devicetree property)
  * :kconfig:option:`CONFIG_RISCV_USER_STRING_NLEN_VALIDATE` (RISC-V, validate the user
    string chunk by chunk in ``arch_user_string_nlen()`` instead of relying on the fault fixup,
    for SoCs whose load access fault is imprecise)
  * :kconfig:option:`CONFIG_RISCV_SOC_HAS_SYSCALL_INTMASK` (RISC-V SoC hook to mask
    interrupts in the user-mode syscall body without clearing ``mstatus.MIE``)
  * :kconfig:option:`CONFIG_RISCV_SOC_SYSCALL_CLOSE_ECALL` (RISC-V SoC hook to leave the
    ecall exception before the user-mode syscall body runs, for SoCs that cannot deliver a
    fault raised by the body while that exception is open)

* Audio

  * :c:member:`pcm_stream_cfg.gain_db`
  * :c:struct:`audio_codec_eq_cfg`

* Bluetooth

  * Audio

    * :c:func:`bt_aics_client_free_instance`
    * :c:func:`bt_ascs_register`
    * :c:func:`bt_ascs_unregister`
    * :c:func:`bt_bap_unicast_client_qos_from_group`
    * :c:func:`bt_bap_qos_cfg_eq`
    * :c:member:`bt_bap_unicast_group_info.c_to_p_interval`
    * :c:member:`bt_bap_unicast_group_info.p_to_c_interval`
    * :c:member:`bt_bap_unicast_group_info.c_to_p_latency`
    * :c:member:`bt_bap_unicast_group_info.p_to_c_latency`
    * :c:member:`bt_bap_unicast_group_info.framing`
    * :c:member:`bt_bap_unicast_group_info.packing`
    * :c:member:`bt_bap_unicast_group_info.has_been_connected`
    * :c:member:`bt_bap_unicast_group_info.c_to_p_ft`
    * :c:member:`bt_bap_unicast_group_info.p_to_c_ft`
    * :c:member:`bt_bap_unicast_group_info.iso_interval`
    * :c:member:`bt_cap_initiator_cb.unicast_start_codec_configured`
    * :c:member:`bt_cap_initiator_cb.unicast_start_qos_configured`
    * :c:member:`bt_cap_initiator_cb.unicast_start_enabled`
    * :c:member:`bt_cap_initiator_cb.unicast_start_connected`
    * :c:member:`bt_cap_initiator_cb.unicast_start_started`
    * :c:member:`bt_cap_initiator_cb.unicast_stop_disabled`
    * :c:member:`bt_cap_initiator_cb.unicast_stop_stopped`
    * :c:member:`bt_cap_initiator_cb.unicast_stop_released`
    * :c:func:`bt_vocs_client_free_instance`

  * Classic

    * :kconfig:option:`CONFIG_BT_SMP_DERIVE_LTK`
    * :kconfig:option:`CONFIG_BT_SMP_DERIVE_LK`
    * :c:func:`bt_sdp_unregister_service`

  * HCI Drivers

    * :c:macro:`BT_HCI_PKT_CMD_DEFINE`
    * :c:macro:`BT_HCI_PKT_CMD_DEFINE_STATIC`
    * :c:macro:`BT_HCI_PKT_CMD_HDR_SIZE` and :c:macro:`BT_HCI_PKT_CMD_SIZE`
    * :c:func:`bt_hci_pkt_reset_cmd`
    * :c:func:`bt_hci_pkt_push_cmd_hdr`
    * :c:func:`bt_hci_pkt_pull_cmd_complete`
    * :c:func:`bt_hci_pkt_pull_cmd_status`
    * :c:func:`bt_hci_pkt_parse_cmd_rsp` and :c:struct:`bt_hci_pkt_cmd_rsp`
    * :c:struct:`bt_hci_lockstep`
    * :c:func:`bt_hci_lockstep_init`
    * :c:func:`bt_hci_lockstep_feed`
    * :c:func:`bt_hci_lockstep_cmd_send_sync`
    * :c:func:`bt_hci_lockstep_reset`
    * :c:func:`bt_h4_vnd_open` and :kconfig:option:`CONFIG_BT_H4_VND_OPEN`
    * :c:struct:`bt_hci_driver_data` and :c:struct:`bt_hci_driver_config`
    * :c:macro:`BT_DT_HCI_DRIVER_CONFIG_GET` and :c:macro:`BT_DT_HCI_DRIVER_CONFIG_INST_GET`
    * :c:func:`bt_hci_recv` and :c:func:`bt_hci_recv_err`
    * :c:func:`bt_hci_set_public_addr` and :c:func:`bt_hci_get_public_addr`
    * :c:func:`bt_hci_can_close`

  * Host

    * :c:func:`bt_att_get_max_notify_size`
    * :c:func:`bt_att_get_max_indicate_size`
    * :c:func:`bt_conn_take`
    * :c:func:`bt_conn_drop`
    * :c:func:`bt_id_reset_irk`
    * :c:macro:`BT_IRK_SIZE`
    * :c:func:`bt_iso_chan_state_str`
    * :c:member:`bt_iso_chan_ops.send_failed`
    * :c:func:`bt_iso_get_chan_by_conn`
    * :c:func:`bt_le_per_adv_update_did`
    * :c:member:`bt_le_adv_param.tx_power` and :c:enumerator:`BT_LE_ADV_OPT_TX_POWER`
      to request a specific TX power level per extended advertising set.
    * :c:member:`bt_conn_cb.le_param_update_rejected`
    * ``BT_HCI_QUIRK_NO_FLOW_CONTROL`` HCI device quirk for controllers that
      advertise but reject the controller to host flow control commands.
    * :c:member:`bt_rfcomm_dlc.rx_credit_limit` to configure per-DLC initial RX credit count.
    * :c:func:`bt_rfcomm_dlc_recv_complete` to return RX credits to the peer. Applications can
      return ``-EINPROGRESS`` from the :c:member:`bt_rfcomm_dlc_ops.recv` callback to defer buffer
      release and flow-control credit refill until processing is complete.
    * :c:func:`bt_le_bond_addr_res_support`, :c:enum:`bt_le_addr_res_support` and
      :c:member:`bt_conn_auth_info_cb.addr_res_support_read`
    * :c:enumerator:`BT_LE_SCAN_OPT_EXT_FILTER_POLICY`
    * :kconfig:option:`CONFIG_BT_SCAN_EXT_FILTER_POLICY`
    * :c:member:`bt_le_scan_recv_info.direct_addr`

  * Mesh

    * :c:struct:`bt_mesh_lpn_timing`
    * :c:func:`bt_mesh_stat_lpn_timing_get`
    * :c:func:`bt_mesh_stat_lpn_timing_reset`
    * :kconfig:option:`CONFIG_BT_MESH_LPN_OFFER_WAIT_TIMEOUT`

* Clock control

  * :kconfig:option:`CLOCK_CONTROL_NRF_ONOFF`
  * The following functions are now supported for devices compatible with ``nordic,nrf-clock-hfclk``,
    ``nordic,nrf-clock-lfclk``, ``nordic,nrf-clock-hfclk192m``, ``nordic,nrf-clock-hfclk24m``,
    ``nordic,nrf-clock-hfclkaudio``, ``nordic,nrf-clock-xo``, ``nordic,nrf-clock-xo24m``:
    See the :ref:`migration guide <migration_4.5>` for details.
    * :c:func:`clock_control_request`
    * :c:func:`clock_control_request_sync`
    * :c:func:`clock_control_release`
    * :c:func:`clock_control_cancel_or_release`

* CPUFreq

  * :kconfig:option:`CONFIG_CPU_FREQ_POLICY_TIMING_NOISE`

* Crypto

  * :c:enumerator:`CRYPTO_CIPHER_MODE_CFB`
  * :c:enumerator:`CRYPTO_CIPHER_MODE_OFB`
  * :c:func:`cipher_cfb_op`
  * :c:func:`cipher_ofb_op`

* Debug

  * Introduced ZASSERT, a granular per-module/file assertion facility.
    Each source file selects an assertion module via ``ZASSERT_MODULE(<MODULE>)``,
    the level is resolved from ``CONFIG_ASSERT_MODULE_<MODULE>_LEVEL`` and
    may be overridden per file.
    Four levels are available: off (compiled out), terse (check only),
    normal (check + location only), and verbose (check + location, condition and message).
    Failure behavior is customizable through the weak hooks ``zassert_fail()``,
    ``zassert_vprint()`` and ``zassert_post_action()``.
    The legacy ``__ASSERT()`` family continues to work largely unchanged as a thin compatibility
    layer over the ZASSERT ``DEFAULT`` module.

* Devicetree

  * :c:macro:`DT_IRQN_BY_NAME`
  * :c:macro:`DT_INST_IRQN_BY_NAME`

* Display

  * :c:enumerator:`PIXEL_FORMAT_YUYV`
  * :c:macro:`PANEL_PIXEL_FORMAT_YUYV`

* Entropy

  * :kconfig:option:`CONFIG_ENTROPY_RISCV_ZKR` (architectural entropy driver based on the
    ``seed`` CSR of the RISC-V Zkr extension)

* FIDO2

  * :c:func:`fido2_up_reset`
  * :c:macro:`FIDO2_BLE_SERVICE_UUID_VAL`
  * :c:macro:`FIDO2_BLE_SERVICE_DATA_PAIRING_MODE`
  * :kconfig:option:`CONFIG_FIDO2_TRANSPORT_BLE`
  * :kconfig:option:`CONFIG_FIDO2_BLE_REQUIRE_AUTHENTICATED_LINK`
  * :kconfig:option:`CONFIG_FIDO2_BLE_RX_WORKQ_STACK_SIZE`
  * :kconfig:option:`CONFIG_FIDO2_BLE_CONTROL_POINT_LENGTH`
  * :kconfig:option:`CONFIG_FIDO2_BLE_RX_QUEUE_DEPTH`
  * :kconfig:option:`CONFIG_FIDO2_BLE_TX_FRAME_COUNT`
  * :kconfig:option:`CONFIG_FIDO2_BLE_KEEPALIVE_INTERVAL_MS`
  * :kconfig:option:`CONFIG_FIDO2_BLE_RX_TIMEOUT_MS`

* Fuel Gauge

  * :c:func:`fuel_gauge_set_buffer_prop` and the optional
    :c:member:`fuel_gauge_driver_api.set_buffer_property` callback for writing variable
    length buffer properties, symmetric to :c:func:`fuel_gauge_get_buffer_prop`.

* Haptics

  * :c:enum:`haptics_monitor`
  * :c:enum:`haptics_monitor_type`
  * :c:enum:`haptics_source`
  * :c:enum:`haptics_trigger_type`
  * :c:union:`haptics_config`
  * :c:func:`haptics_calibrate`
  * :c:func:`haptics_monitor_get`
  * :c:func:`haptics_monitor_set`
  * :c:func:`haptics_select_source`
  * :c:func:`haptics_set_level`
  * :c:func:`haptics_set_trigger`
  * :c:func:`haptics_stream_samples`
  * :c:func:`haptics_trigger`

* HWSPINLOCK

  * :c:macro:`HWSPINLOCK_SPINLOCK_ARRAY_DT_DEFINE`
  * :c:macro:`HWSPINLOCK_SPINLOCK_ARRAY_DT_INST_DEFINE`
  * :c:macro:`HWSPINLOCK_COMMON_CONFIG_FROM_DT_NODE`
  * :c:macro:`HWSPINLOCK_COMMON_CONFIG_FROM_DT_INST`

* Kconfig

  * Add ``dt_partition_mtd`` preprocessor function (:github:`111599`)

* Kernel

  * :c:func:`k_obj_core_evict_range`
  * :kconfig:option:`CONFIG_OBJ_CORE_MAX_DYNAMIC_OBJECTS`
  * :kconfig:option:`CONFIG_OBJ_CORE_EVICT_ON_FREE`
  * :kconfig:option:`CONFIG_OBJ_CORE_QUEUE`
  * :c:func:`k_thread_runtime_stats_is_enabled`
  * :c:func:`atomic_test_and_set_bit_to`
  * :c:macro:`K_MSGQ_DEFINE_STATIC`
  * :c:macro:`K_MSGQ_DEFINE_TYPE`
  * :c:macro:`K_MSGQ_DEFINE_STATIC_TYPE`
  * :c:func:`k_sleep_ticks`
  * Namespaced equivalents of the interrupt control APIs, preferred for new
    code; the unprefixed names remain fully supported:
    :c:func:`k_irq_lock`, :c:func:`k_irq_unlock`, :c:func:`k_irq_enable`,
    :c:func:`k_irq_disable`, :c:func:`k_irq_is_enabled`,
    :c:func:`k_irq_connect_dynamic` and :c:func:`k_irq_disconnect_dynamic`

* LIN

  * :c:func:`lin_start`
  * :c:func:`lin_stop`
  * :c:func:`lin_configure`
  * :c:func:`lin_get_config`
  * :c:func:`lin_send`
  * :c:func:`lin_receive`
  * :c:func:`lin_response`
  * :c:func:`lin_read`
  * :c:func:`lin_wakeup_send`
  * :c:func:`lin_set_event_callback`
  * :c:func:`lin_set_rx_filter`
  * :c:func:`lin_get_transceiver`
  * :kconfig:option:`CONFIG_LIN`

* LoRa

  * :c:func:`lora_recv_duty_cycle`
  * :c:func:`lora_recv_duty_cycle_async`
  * :c:func:`lora_energy_detect`
  * :c:func:`lora_rssi`

* Management

  * MCUmgr

    * Added support for SPI MCUmgr SMP transport, which can be enabled with
      :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SPI`.

    * Added experimental :ref:`transport management group<mcumgr_smp_group_11>`:
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_LOCKING`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_MAX_BRIDGES`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_DEFAULT`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE_GROUP_ID`,
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_FUNCTION` and
      :kconfig:option:`CONFIG_MCUMGR_GRP_TRANSPORT_INFO_FUNCTIONS`.

* Modem

  * :c:enumerator:`CELLULAR_MODEM_INFO_SERIAL_NUMBER`

* Multimedia Pipeline

  * :kconfig:option:`CONFIG_MPIPE` (see :ref:`mpipe`)

* Network

  * Add :c:func:`net_eth_set_if_type_wifi` to set the ethernet interface type to Wi-Fi.
  * Add a public neighbor cache API: :c:func:`net_if_ipv4_nbr_flush` and
    :c:func:`net_if_ipv6_nbr_flush` drop the neighbors an interface has
    learned, and :c:func:`net_if_ipv4_nbr_rm` and :c:func:`net_if_ipv6_nbr_rm`
    remove a single one. On an Ethernet link the IPv4 cache is the ARP cache.
  * Add :c:func:`net_dhcpv4_set_reboot_hint` to seed the DHCPv4 client with a
    previously leased address for INIT-REBOOT.
  * Add an mDNS responder interface policy
    (:kconfig:option:`CONFIG_MDNS_RESPONDER_IFACE_POLICY_ALLOWLIST`,
    :kconfig:option:`CONFIG_MDNS_RESPONDER_IFACE_POLICY_DENYLIST`) together with
    :kconfig:option:`CONFIG_MDNS_RESPONDER_IFACE_LIST` to control on which
    network interfaces the mDNS responder operates.
  * Add :c:func:`mdns_responder_enable_iface` and
    :c:func:`mdns_responder_disable_iface`
    (:kconfig:option:`CONFIG_MDNS_RESPONDER_RUNTIME_IFACE_CONTROL`) to enable or
    disable the mDNS responder on a network interface at runtime.
  * Add a DHCPv6 server with IPv6 prefix delegation support
    (:kconfig:option:`CONFIG_NET_DHCPV6_SERVER`):
    :c:func:`net_dhcpv6_server_start`, :c:func:`net_dhcpv6_server_stop` and
    :c:func:`net_dhcpv6_server_foreach_lease`.
  * Add IPv6 router role, that is, transmission of Router Advertisements
    (:kconfig:option:`CONFIG_NET_IPV6_ND_RA_TX`):
    :c:func:`net_if_ipv6_router_start`, :c:func:`net_if_ipv6_router_stop` and
    :c:func:`net_if_ipv6_prefix_set_advertise`.
  * Add requesting router support to the DHCPv6 client, a delegated prefix can
    be sub-delegated onto downstream links via
    :c:member:`net_dhcpv6_params.downstream_ifaces`.
  * Add :c:func:`net_eth_mcast_addr_add`, :c:func:`net_eth_mcast_addr_rm` and
    :c:func:`net_eth_mcast_addr_foreach`. The Ethernet L2 now keeps track of the
    link layer multicast addresses that an interface listens to, so an Ethernet
    driver is asked to change its receive filter only when a group is joined by
    its first user or left by its last one. Previously the IP level joins and
    the packet socket memberships were forwarded to the driver separately, and
    leaving one group could stop the device from listening to another group that
    needs the same link layer address. This happens easily as IPv4 multicast
    addresses map 32:1 to link layer addresses. A driver can also treat
    ``ETHERNET_CONFIG_TYPE_FILTER`` as a hint that the addresses changed and
    reprogram its filter by iterating them with
    :c:func:`net_eth_mcast_addr_foreach`, which suits devices that filter by a
    hash of the address. How many addresses an interface can track is the sum
    of what the enabled subsystems ask for, and
    :kconfig:option:`CONFIG_NET_L2_ETHERNET_MCAST_FILTER_COUNT` can raise it if
    an application needs more. A multicast destination
    address given to :c:func:`net_eth_mac_filter` or to
    ``NET_REQUEST_ETHERNET_SET_MAC_FILTER`` is counted the same way, so each
    such filter that an application sets must now also be unset by it, and
    unsetting one that was never set fails with ``-ENOENT``.
  * Add ``ZSOCK_PACKET_ADD_MEMBERSHIP`` and ``ZSOCK_PACKET_DROP_MEMBERSHIP``
    socket options at the ``ZSOCK_SOL_PACKET`` level
    (:kconfig:option:`CONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP`), so that a
    packet socket can ask the network interface to start or stop listening to
    an extra L2 multicast address. On Ethernet the address is programmed to the
    receive filter of the device if it supports filtering, and a device that
    does not filter passes the group up anyway. A join that the interface
    cannot serve is reported to the application, ``ENOMEM`` if the interface
    cannot track another address and ``ENOTSUP`` if it is not an Ethernet
    interface. The membership changes are reported by the
    :c:macro:`NET_EVENT_PACKET_MCAST_MEMBERSHIP_ADD` and
    :c:macro:`NET_EVENT_PACKET_MCAST_MEMBERSHIP_DROP` network management events.
    Memberships still held when the socket is closed are dropped automatically,
    and :kconfig:option:`CONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP_COUNT` sets
    how many memberships can be active at the same time.
  * Add TCP selective acknowledgment of received data (:rfc:`2018`,
    :kconfig:option:`CONFIG_NET_TCP_SACK`, enabled by default). Zephyr now
    offers SACK in the handshake and reports out-of-order data held in the
    receive queue, so that a sender which supports SACK can resend only the
    missing data. Incoming SACK blocks are not yet used when retransmitting.
  * :kconfig:option:`CONFIG_PTP_NETWORK_MODE_HYBRID`
  * Add experimental iperf3 support to zperf
    (:kconfig:option:`CONFIG_NET_ZPERF_IPERF3`), chosen in place of iPerf 2
    (:kconfig:option:`CONFIG_NET_ZPERF_IPERF2`). The zperf API and shell commands are the
    same for both. See :ref:`zperf_iperf3`.
  * Add an SNTP server (:kconfig:option:`CONFIG_SNTP_SERVER`) that answers time
    queries on UDP port 123 on every enabled address family. The application
    sets the system clock and then tells the server about its clock source with
    :c:func:`sntp_server_clock_source`; until it does, the server tells clients
    that its time must not be used. The SNTP client is now selected by
    :kconfig:option:`CONFIG_SNTP` alone, both share
    :kconfig:option:`CONFIG_SNTP_LIB`.
  * Add :c:func:`dns_resolve_is_active` to check whether a DNS resolving
    context is active without reading the context internals.
  * Add :c:func:`coap_client_reregister_observe` to refresh an ongoing CoAP
    observation (:rfc:`7641` re-registration) without tearing it down.
  * Add :c:func:`coap_age_is_newer` to compare CoAP Observe option values for
    freshness (:rfc:`7641#section-3.4`).
  * :c:func:`net_config_init_clock_via_sntp` to set system clock via SNTP.
  * :c:func:`net_config_sntp_set_server`
  * Add an experimental RTP (:rfc:`3550`) stack (:kconfig:option:`CONFIG_RTP`)
    to send and receive media streams over UDP, with a BSD socket transport
    (:kconfig:option:`CONFIG_RTP_TRANSPORT_SOCKET`) and a raw ``net_pkt``
    transport (:kconfig:option:`CONFIG_RTP_TRANSPORT_NET_PKT`). See
    :ref:`rtp_interface`.
  * Add :kconfig:option:`CONFIG_NET_GPTP_STATIC_TIME_RECEIVER` to operate a gPTP node as a
    statically configured time receiver, so it can synchronize through IEEE 802.1AS automotive
    profile bridges that transmit no Announce messages.

* POSIX

  * :kconfig:option:`CONFIG_POSIX_AEP_CHOICE_NETAPP`, a Zephyr-specific subprofile with the
    features of PSE52 plus the networking interfaces of PSE53, without multi-process support.

* Power Management

  * :c:macro:`LOG_DBG_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_WRN_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_ERR_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_DBG_PM_DEVICE_RUNTIME_PUT`
  * :c:macro:`LOG_WRN_PM_DEVICE_RUNTIME_PUT`
  * :c:macro:`LOG_ERR_PM_DEVICE_RUNTIME_PUT`
  * :c:macro:`LOG_INST_DBG_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_INST_WRN_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_INST_ERR_PM_DEVICE_RUNTIME_GET`
  * :c:macro:`LOG_INST_DBG_PM_DEVICE_RUNTIME_PUT`
  * :c:macro:`LOG_INST_WRN_PM_DEVICE_RUNTIME_PUT`
  * :c:macro:`LOG_INST_ERR_PM_DEVICE_RUNTIME_PUT`

* Pulse IO

  * Added the :ref:`Pulse IO <pulse_io_api>` subsystem, a vendor-neutral
    API for hardware that generates and captures timed digital edges on a
    GPIO line.

* Ring buffer

  * :c:struct:`sys_ringq` (see :ref:`fixed_size_ringq_api`)
  * :c:func:`ring_buf_put_ptr`
  * :c:func:`ring_buf_get_ptr`
  * :c:func:`ring_buf_commit`
  * :c:func:`ring_buf_consume`

* Secure Storage

  * :kconfig:option:`CONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_CRYPT_CUSTOM` to allow
    implementing your own :c:func:`secure_storage_its_transform_aead_crypt`. (:github:`118542`)
  * :kconfig:option:`CONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_SCHEME_IS_CONFIGURABLE`
  * :kconfig:option:`CONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_KEY_SIZE_IS_CONFIGURABLE`


* Timer

  * :c:func:`z_sys_clock_lpm_enter`

* USB Type-C

  * :kconfig:option:`CONFIG_USBC_LOG_PD_MSG_NAMES`

* Utilities

  * :c:macro:`ARGS_UNUSED` to mark multiple arguments as unused.

* Zbus

  * :kconfig:option:`CONFIG_ZBUS_RUNTIME_CHANNEL_REGISTRATION`
  * :c:func:`zbus_runtime_channel_init`
  * :c:func:`zbus_runtime_channel_register`
  * :c:func:`zbus_runtime_channel_unregister`

.. zephyr-keep-sorted-stop

.. _boards_added_in_zephyr_4_5:

New Boards
**********

..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.

* Adafruit Industries, LLC

  * :zephyr:board:`adafruit_feather_esp32c6` (``adafruit_feather_esp32c6``)
  * :zephyr:board:`adafruit_trrs_trinkey` (``adafruit_trrs_trinkey``)

* Advanced Micro Devices (AMD), Inc.

  * :zephyr:board:`acp_7_0_adsp` (``acp_7_0_adsp``)
  * :zephyr:board:`acp_7_x_adsp` (``acp_7_x_adsp``)
  * :zephyr:board:`zynqmp_apu` (``zynqmp_apu``)
  * :zephyr:board:`zynqmp_rpu` (``zynqmp_rpu``)

* Aesc Silicon

  * :zephyr:board:`elemrv_flask_h` (``elemrv_flask_h``)

* Ai-Thinker Co., Ltd.

  * :zephyr:board:`ai_m64p_32s_kit` (``ai_m64p_32s_kit``)
  * :zephyr:board:`aipi_eyes_s2` (``aipi_eyes_s2``)

* Alif Semiconductor

  * :zephyr:board:`balletto_b1_dk` (``balletto_b1_dk``)
  * :zephyr:board:`balletto_b1_sk` (``balletto_b1_sk``)
  * :zephyr:board:`ensemble_e1c_sk` (``ensemble_e1c_sk``)
  * :zephyr:board:`ensemble_e8_ak` (``ensemble_e8_ak``)

* Analog Devices, Inc.

  * :zephyr:board:`adi_eval_adin1140d1z` (``adi_eval_adin1140d1z``)
  * :zephyr:board:`max32651evkit` (``max32651evkit``)

* Antmicro

  * :zephyr:board:`stm32h7_hdmi_board` (``stm32h7_hdmi_board``)
  * :zephyr:board:`stm32h7_renode_reference_board` (``stm32h7_renode_reference_board``)

* Arduino

  * :zephyr:board:`arduino_nano_connect` (``arduino_nano_connect``)
  * :zephyr:board:`arduino_nano_r4` (``arduino_nano_r4``)
  * :zephyr:board:`arduino_nesso_n1` (``arduino_nesso_n1``)

* ARM Ltd.

  * :zephyr:board:`fvp_corstone1000` (``fvp_corstone1000``)

* Armfly

  * :zephyr:board:`armfly_stm32h743xih6` (``armfly_stm32h743xih6``)

* Barth Elektronik GmbH

  * :zephyr:board:`stg_800` (``stg_800``)

* BeagleBoard.org Foundation

  * :zephyr:board:`beaglebadge` (``beaglebadge``)
  * :zephyr:board:`beagleconnect_zepto` (``beagleconnect_zepto``)
  * :zephyr:board:`pocketbeagle_2_industrial` (``pocketbeagle_2_industrial``)

* BLIIoT Technology Co., Ltd.

  * :zephyr:board:`am62x_m4_bl350` (``am62x_m4_bl350``)

* Bouffalo Lab (Nanjing) Co., Ltd.

  * :zephyr:board:`bl618g0` (``bl618g0``)

* CAN-module, FOP

  * :zephyr:board:`canbridge_g473` (``canbridge_g473``)
  * :zephyr:board:`usbcan_iso` (``usbcan_iso``)
  * :zephyr:board:`usbcanfd_dual` (``usbcanfd_dual``)
  * :zephyr:board:`usbcanfd_solo` (``usbcanfd_solo``)

* Centre for Development of Advanced Computing (C-DAC)

  * :zephyr:board:`aries_v3` (``aries_v3``)

* Chengdu Ebyte Electronic Technology

  * :zephyr:board:`e80_900mbl_01` (``e80_900mbl_01``)
  * :zephyr:board:`eora_hub_900tb` (``eora_hub_900tb``)

* Chengdu Heltec Automation Technology Co., Ltd.

  * :zephyr:board:`heltec_t114_v2` (``heltec_t114_v2``)

* Cirrus Logic, Inc.

  * :zephyr:board:`crd40l26` (``crd40l26``)

* Core Devices LLC

  * :zephyr:board:`pr2` (``pr2``)

* DH electronics GmbH

  * :zephyr:board:`stm32mp255c_dhsbc` (``stm32mp255c_dhsbc``)

* Digilent, Inc.

  * :zephyr:board:`zedboard` (``zedboard``)

* Dongguan Waiken-Smart Technology Co., Ltd.

  * :zephyr:board:`gd32f470zit6_core` (``gd32f470zit6_core``)

* emtrion GmbH

  * :zephyr:board:`emsbc_neon_cm7` (``emsbc_neon_cm7``)

* EnjoyDigital

  * :zephyr:board:`litex_vexiiriscv` (``litex_vexiiriscv``)

* Espressif Systems

  * :zephyr:board:`esp32c61_devkitc` (``esp32c61_devkitc``)
  * :zephyr:board:`esp32p4_function_ev_board` (``esp32p4_function_ev_board``)
  * :zephyr:board:`esp32p4x_function_ev_board` (``esp32p4x_function_ev_board``)
  * :zephyr:board:`esp32s3_box3` (``esp32s3_box3``)

* Eurovibes

  * :zephyr:board:`eurovibes_stm32g431_sertest-ng` (``eurovibes_stm32g431_sertest-ng``)

* FlySky

  * :zephyr:board:`fs_i6s` (``fs_i6s``)

* GigaDevice Semiconductor

  * :zephyr:board:`gd32c231c_eval` (``gd32c231c_eval``)

* Heimann Sensor GmbH

  * :zephyr:board:`htpa_eval` (``htpa_eval``)

* Infineon Technologies

  * :zephyr:board:`cy8cproto_040t` (``cy8cproto_040t``)
  * :zephyr:board:`cy8cproto_040t_auto` (``cy8cproto_040t_auto``)
  * :zephyr:board:`kit_psc3m5_cc2` (``kit_psc3m5_cc2``)
  * :zephyr:board:`kit_psc3m6_evk` (``kit_psc3m6_evk``)
  * :zephyr:board:`kit_t2g_c2d6m_lite` (``kit_t2g_c2d6m_lite``)

* Intel Corporation

  * :zephyr:board:`intel_nvl_s_rvp` (``intel_nvl_s_rvp``)

* Jhoinrch

  * :zephyr:board:`rh02` (``rh02``)
  * :zephyr:board:`rh02_plus_2026` (``rh02_plus_2026``)

* KAGA FEI Co., Ltd.

  * :zephyr:board:`ec4l15ba1` (``ec4l15ba1``)

* KinCony Electronics Co., Ltd.

  * :zephyr:board:`kincony_kc868_a8` (``kincony_kc868_a8``)

* Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd

  * :zephyr:board:`t_deck` (``t_deck``)

* M5Stack

  * :zephyr:board:`m5stack_paper_color` (``m5stack_paper_color``)
  * :zephyr:board:`m5stack_stackchan` (``m5stack_stackchan``)
  * :zephyr:board:`m5stack_sticks3` (``m5stack_sticks3``)
  * :zephyr:board:`m5stack_unitc6l` (``m5stack_unitc6l``)

* Makerfabs

  * :zephyr:board:`matouch_mtro128g` (``matouch_mtro128g``)

* MediaTek Inc.

  * :zephyr:board:`mt8370_genio_510_evk` (``mt8370_genio_510_evk``)
  * :zephyr:board:`mt8390_genio_700_evk` (``mt8390_genio_700_evk``)

* Microchip Technology Inc.

  * :zephyr:board:`m2s010_mkr_kit` (``m2s010_mkr_kit``)
  * :zephyr:board:`m2s_hello_fpga_kit` (``m2s_hello_fpga_kit``)
  * :zephyr:board:`pic32ck_gc01_cult` (``pic32ck_gc01_cult``)
  * :zephyr:board:`pic32ck_sg01_cult` (``pic32ck_sg01_cult``)
  * :zephyr:board:`pic32cm_gc00_cpro` (``pic32cm_gc00_cpro``)
  * :zephyr:board:`pic32cm_sg00_cpro` (``pic32cm_sg00_cpro``)
  * :zephyr:board:`sama5d27_som1_ek1` (``sama5d27_som1_ek1``)

* MuseLab Electronics

  * :zephyr:board:`nano_ch32v317` (``nano_ch32v317``)
  * :zephyr:board:`nano_ch57x` (``nano_ch57x``)

* Nordic Semiconductor

  * :zephyr:board:`nrf54lv10dk` (``nrf54lv10dk``)
  * :zephyr:board:`nrf93m1dk` (``nrf93m1dk``)

* Norik Systems

  * :zephyr:board:`dect_nr_plus_usb_dongle` (``dect_nr_plus_usb_dongle``)

* NUCODE Co., Ltd. (nuworks.io)

  * :zephyr:board:`nucode_nu32` (``nucode_nu32``)
  * :zephyr:board:`nucode_nu40` (``nucode_nu40``)

* Nuvoton Technology Corporation

  * :zephyr:board:`numaker_m031ki` (``numaker_m031ki``)
  * :zephyr:board:`numaker_m3351ki` (``numaker_m3351ki``)

* NXP Semiconductors

  * :zephyr:board:`frdm_imxrt1152` (``frdm_imxrt1152``)
  * :zephyr:board:`frdm_imxrt700` (``frdm_imxrt700``)
  * :zephyr:board:`imx952_evk` (``imx952_evk``)
  * :zephyr:board:`lpc845brk` (``lpc845brk``)
  * :zephyr:board:`lpcxpresso54628` (``lpcxpresso54628``)
  * :zephyr:board:`mimxrt2660_evk` (``mimxrt2660_evk``)
  * :zephyr:board:`mimxrt685_aud_evk` (``mimxrt685_aud_evk``)
  * :zephyr:board:`mr_mcxn_t1` (``mr_mcxn_t1``)
  * :zephyr:board:`mr_navq95b` (``mr_navq95b``)

* OLIMEX Ltd.

  * :zephyr:board:`esp32p4_pc` (``esp32p4_pc``)

* Others

  * :zephyr:board:`bl704l_dvk` (``bl704l_dvk``)
  * :zephyr:board:`esp32h2_supermini` (``esp32h2_supermini``)
  * :zephyr:board:`jz_f407vet6` (``jz_f407vet6``)
  * :zephyr:board:`stm32_debug_probe` (``stm32_debug_probe``)

* Pine64

  * :zephyr:board:`pinecone` (``pinecone``)

* QEMU

  * :zephyr:board:`qemu_cortex_a72` (``qemu_cortex_a72``)
  * :zephyr:board:`qemu_hexagon` (``qemu_hexagon``)
  * :zephyr:board:`qemu_tc3x` (``qemu_tc3x``)
  * :zephyr:board:`qemu_tc4x` (``qemu_tc4x``)

* Radxa

  * :zephyr:board:`rock_3b` (``rock_3b``)
  * :zephyr:board:`rock_5b_plus` (``rock_5b_plus``)

* Raspberry Pi Foundation

  * :zephyr:board:`rpi_zero_2w` (``rpi_zero_2w``)

* Raytac Corporation

  * :zephyr:board:`raytac_an54lv_db_15` (``raytac_an54lv_db_15``)

* Realtek Semiconductor Corp.

  * :zephyr:board:`pke8721daf_c13_f10` (``pke8721daf_c13_f10``)

* Renesas Electronics Corporation

  * :zephyr:board:`ek_rx74m` (``ek_rx74m``)
  * :zephyr:board:`ek_rx74n` (``ek_rx74n``)
  * :zephyr:board:`rcar_ironhide_x5h` (``rcar_ironhide_x5h``)
  * :zephyr:board:`rza3m_ek` (``rza3m_ek``)

* Seeed Technology Co., Ltd

  * :zephyr:board:`reterminal_e1001` (``reterminal_e1001``)
  * :zephyr:board:`reterminal_e1003` (``reterminal_e1003``)
  * :zephyr:board:`wio_tracker_l1` (``wio_tracker_l1``)
  * :zephyr:board:`xiao_esp32c5` (``xiao_esp32c5``)
  * :zephyr:board:`xiao_nrf54lm20a` (``xiao_nrf54lm20a``)
  * :zephyr:board:`xiao_nrf54lm20b` (``xiao_nrf54lm20b``)
  * :zephyr:board:`xiao_stm32c5` (``xiao_stm32c5``)

* SEGGER Microcontroller GmbH

  * :zephyr:board:`nandeval_h743zi` (``nandeval_h743zi``)

* SHAKTI Processor Program

  * :zephyr:board:`nexys_ganga` (``nexys_ganga``)

* Shanghai Ruiside Electronic Technology Co., Ltd.

  * :zephyr:board:`ra8p1_titan` (``ra8p1_titan``)
  * :zephyr:board:`ra8p1_titan_mini` (``ra8p1_titan_mini``)

* Shenzhen JLC Technology Group Co., Ltd.

  * :zephyr:board:`skystar_gd32f407vet6` (``skystar_gd32f407vet6``)

* Shenzhen Luckfox Technology Co., Ltd.

  * :zephyr:board:`pico_ultra` (``pico_ultra``)

* Shenzhen Sipeed Technology Co., Ltd.

  * :zephyr:board:`m0sense` (``m0sense``)
  * :zephyr:board:`m1s_dock` (``m1s_dock``)
  * :zephyr:board:`tang_mega_138k_pro_dock` (``tang_mega_138k_pro_dock``)

* Shenzhen Xunlong Software CO.,Limited

  * :zephyr:board:`opi_zero2w` (``opi_zero2w``)

* Silicon Laboratories

  * :zephyr:board:`kg100s_rb4332a` (``kg100s_rb4332a``)
  * :zephyr:board:`mgm260p_rb4351a` (``mgm260p_rb4351a``)
  * :zephyr:board:`siwx917_ek2708a` (``siwx917_ek2708a``)
  * :zephyr:board:`sixg301_rb4407a` (``sixg301_rb4407a``)
  * :zephyr:board:`xg21_rb4195b` (``xg21_rb4195b``)
  * :zephyr:board:`xg21_rb4196b` (``xg21_rb4196b``)
  * :zephyr:board:`xg22_rb4415a` (``xg22_rb4415a``)
  * :zephyr:board:`xg24_rb4188a` (``xg24_rb4188a``)
  * :zephyr:board:`xg26_dk2608a` (``xg26_dk2608a``)
  * :zephyr:board:`xg26_rb4121a` (``xg26_rb4121a``)
  * :zephyr:board:`xg29_rb4413a` (``xg29_rb4413a``)
  * :zephyr:board:`xgm240_rb4318a` (``xgm240_rb4318a``)

* STMicroelectronics

  * :zephyr:board:`nucleo_g491re` (``nucleo_g491re``)
  * :zephyr:board:`nucleo_u545re_q` (``nucleo_u545re_q``)
  * :zephyr:board:`nucleo_wl33cc1` (``nucleo_wl33cc1``)
  * :zephyr:board:`stm32_micrium` (``stm32_micrium``)

* Sutajio Ko-Usagi PTE Ltd.

  * :zephyr:board:`tomu` (``tomu``)

* T3 Gemstone

  * :zephyr:board:`t3_gem_o1` (``t3_gem_o1``)

* Texas Instruments

  * :zephyr:board:`lp_am13e230` (``lp_am13e230``)
  * :zephyr:board:`lp_am243` (``lp_am243``)
  * :zephyr:board:`lp_mspm33c321a` (``lp_mspm33c321a``)
  * :zephyr:board:`tm4c123gxl` (``tm4c123gxl``)

* Trenz Electronic

  * :zephyr:board:`te0950` (``te0950``)

* Tuya Inc.

  * :zephyr:board:`tyzs3` (``tyzs3``)

* u-blox

  * :zephyr:board:`ubx_evknorab2` (``ubx_evknorab2``)

* Udoo

  * :zephyr:board:`udoo_key` (``udoo_key``)

* Umeta & Ikki Automotive Parts

  * :zephyr:board:`uiapduino_pro_micro_ch32v003` (``uiapduino_pro_micro_ch32v003``)

* Vicharak

  * :zephyr:board:`shrike_fi` (``shrike_fi``)

* VIEWE Display Co., Ltd.

  * :zephyr:board:`uedx24240013_md50e` (``uedx24240013_md50e``)
  * :zephyr:board:`uedx32480035e_wb_a` (``uedx32480035e_wb_a``)

* Waveshare Electronics

  * :zephyr:board:`core2350b` (``core2350b``)
  * :zephyr:board:`esp32c6_lcd_1_47` (``esp32c6_lcd_1_47``)
  * :zephyr:board:`esp32p4_wifi6` (``esp32p4_wifi6``)
  * :zephyr:board:`esp32p4_wifi6_dev_kit` (``esp32p4_wifi6_dev_kit``)
  * :zephyr:board:`rp2350b_plus_w` (``rp2350b_plus_w``)
  * :zephyr:board:`waveshare_esp32p4_eth` (``waveshare_esp32p4_eth``)

* WeAct Studio

  * :zephyr:board:`ch32v00x_core` (``ch32v00x_core``)
  * :zephyr:board:`mini_stm32h750` (``mini_stm32h750``)
  * :zephyr:board:`usb2canfdv2` (``usb2canfdv2``)
  * :zephyr:board:`weact_ra4m1_core` (``weact_ra4m1_core``)

* WinChipHead

  * :zephyr:board:`ch32h417evt` (``ch32h417evt``)
  * :zephyr:board:`ch32v103evt` (``ch32v103evt``)
  * :zephyr:board:`ch32v203c8t6evt` (``ch32v203c8t6evt``)
  * :zephyr:board:`ch32v305f_evt_r0` (``ch32v305f_evt_r0``)

* WIZnet Co., Ltd.

  * :zephyr:board:`w55rp20_evb_pico` (``w55rp20_evb_pico``)
  * :zephyr:board:`w6100_evb_pico` (``w6100_evb_pico``)
  * :zephyr:board:`w6100_evb_pico2` (``w6100_evb_pico2``)
  * :zephyr:board:`w6300_evb_pico2` (``w6300_evb_pico2``)

.. _shields_added_in_zephyr_4_5:

New Shields
***********

..
  Same as above, this will also be recomputed at the time of the release.

* :ref:`AD-APARDPFW-SL <ad_apardpfw_sl>`
* :ref:`Adafruit FeatherWing MAX3421E Shield <adafruit_featherwing_max3421e>`
* :ref:`Adafruit ISM330DHCX Shield <adafruit_ism330dhcx>`
* :ref:`Analog Devices Low-Speed Mixed-Signal Playground <adi_lsmspg>`
* :ref:`ArduCam Mega SPI Camera Shield <arducam_mega>`
* :ref:`DFRobot Gravity TM6605 Haptic Motor Driver Module <dfrobot_gravity_tm6605>`
* :ref:`DH electronics DHSBC RS485 CAN Shield <dhsbc_rs485_can_shield>`
* :ref:`EVAL-AD5529R-ARDZ <eval_ad5529r_ardz>`
* :ref:`M5Stack Unit Gesture <m5stack_unit_gesture_shield>`
* :ref:`M5Stack Unit Mini OLED <m5stack_unit_minioled_shield>`
* :ref:`MB1280 STMod+ fan-out shield <mb1280_stmod_plus>`
* :ref:`MikroElektronika DALI 2 Click <mikroe_dali_2_click_shield>`
* :ref:`MikroElektronika EERAM 3.3V Click <mikroe_eeram_33v_click_shield>`
* :ref:`MikroElektronika LIN Click <mikroe_lin_click_shield>`
* :ref:`MikroElektronika Two Wire ETH Click <mikroe_two_wire_eth_click_shield>`
* :ref:`NXP Arduino WiFi and BT Shield <nxp_arduino_wifi_bt>`
* :ref:`NXP M.2 IEEE 802.15.4 SPI RCP Shield <nxp_m2_ieee802154>`
* :ref:`NXP MX8 DSI OLED1A Panel <nxp_mx8_dsi_oled1a>`
* :ref:`NXP MX9 DSI OLED Panel <nxp_mx9_dsi_oled>`
* :ref:`OD-6010 SLCD Panel Shield <od_6010_shield>`
* :ref:`RAK19007 WisBlock Base Board 2nd Gen <rakwireless_rak19007>`
* :ref:`RTKAPPLCDMS02001BE MIPI Display <rtkapplcdms02001be>`
* :ref:`Seeed Studio COB LED Driver Board for XIAO <seeed_xiao_cob_led>`
* :ref:`ST B-M2MEM-PACK1 M.2 serial memory pack <st_b_m2mem_pack1_shield>`
* :ref:`X-NUCLEO-67W61M1: Wi-Fi 6 expansion board <x_nucleo_67w61m1>`
* :ref:`X-NUCLEO-GFX02Z1 Display expansion board <x_nucleo_gfx02z1_shield>`
* :ref:`X-NUCLEO-GNSS1A1: GNSS expansion board based on Teseo-LIV3F <x-nucleo-gnss1a1>`
* :ref:`X-NUCLEO-PGEEZ1 page EEPROM expansion board <x_nucleo_pgeez1_shield>`
* :ref:`X-NUCLEO-WBA25A1: BLE expansion board <x-nucleo-wba25a1>`

New Drivers
***********

..
  Same as above, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description

* :abbr:`ADC (Analog to Digital Converter)`

  * :dtcompatible:`adi,ad4190-8-adc` (:github:`111922`)
  * :dtcompatible:`adi,ad4195-8-adc` (:github:`111922`)
  * :dtcompatible:`adi,ade7913` (:github:`119917`)
  * :dtcompatible:`infineon,autanalog-sar-fifo` (:github:`110289`)
  * :dtcompatible:`infineon,autanalog-sar-fir` (:github:`110289`)
  * :dtcompatible:`m5stack,m5pm1-adc` (:github:`109961`)
  * :dtcompatible:`nxp,aon-lpadc` (:github:`114823`)
  * :dtcompatible:`realtek,ameba-adc` (:github:`106677`)
  * :dtcompatible:`realtek,bee-adc` (:github:`105264`)
  * :dtcompatible:`renesas,ra-adc-b` (:github:`111255`)
  * :dtcompatible:`renesas,ra-adc-b-controller` (:github:`111255`)
  * :dtcompatible:`renesas,ra-adc-b-scan-group` (:github:`111255`)
  * :dtcompatible:`silabs,series3-adc` (:github:`117617`)
  * :dtcompatible:`ti,adc081c021` (:github:`114289`)
  * :dtcompatible:`ti,adc081c027` (:github:`114289`)
  * :dtcompatible:`ti,adc101c021` (:github:`114289`)
  * :dtcompatible:`ti,adc101c027` (:github:`114289`)
  * :dtcompatible:`ti,adc121c021` (:github:`114289`)
  * :dtcompatible:`ti,adc121c027` (:github:`114289`)
  * :dtcompatible:`ti,adc124s021` (:github:`110376`)
  * :dtcompatible:`ti,ads1118` (:github:`94152`)
  * :dtcompatible:`ti,ads1220` (:github:`102479`)
  * :dtcompatible:`ti,ads1262` (:github:`119341`)
  * :dtcompatible:`ti,ads1263` (:github:`119341`)
  * :dtcompatible:`ti,ads7828` (:github:`114359`)
  * :dtcompatible:`ti,ads7830` (:github:`114359`)
  * :dtcompatible:`ti,mspm0-adc12` (:github:`94736`)
  * :dtcompatible:`ti,tla2528-adc` (:github:`110722`)
  * :dtcompatible:`wisblock-adc` (:github:`113140`)

* ARM architecture

  * :dtcompatible:`infineon,edge-npu` (:github:`106826`)
  * :dtcompatible:`nordic,nrf-wicr` (:github:`108141`)
  * :dtcompatible:`nordic,nrf71-uicr` (:github:`106134`)
  * :dtcompatible:`nordic,nrf71-wifi-antsw` (:github:`118028`)

* Audio

  * :dtcompatible:`cirrus,cs35l56` (:github:`116349`)
  * :dtcompatible:`cirrus,cs35l57` (:github:`116349`)
  * :dtcompatible:`renesas,ra-pdm` (:github:`119641`)
  * :dtcompatible:`st,stm32-dfsdm` (:github:`108302`)
  * :dtcompatible:`st,stm32-dfsdm-dmic` (:github:`108302`)
  * :dtcompatible:`st,stm32-mdf` (:github:`112277`)
  * :dtcompatible:`ti,tas2563` (:github:`103148`)
  * :dtcompatible:`ti,tlv320aic26` (:github:`106836`)
  * :dtcompatible:`wolfson,wm8960` (:github:`106212`)
  * :dtcompatible:`zephyr,dummy-codec` (:github:`109891`)
  * :dtcompatible:`zephyr,native-sim-dmic` (:github:`109898`)

* Auxiliary Display

  * :dtcompatible:`nxp,slcd` (:github:`102796`)
  * :dtcompatible:`slcd-panel` (:github:`102796`)

* Bluetooth

  * :dtcompatible:`espressif,esp-hosted-mcu-bt-hci` (:github:`114532`)
  * :dtcompatible:`realtek,ameba-bt-hci` (:github:`109287`)
  * :dtcompatible:`zephyr,bt-hci-spi-peripheral` (:github:`116155`)

* Buzzer

  * :dtcompatible:`gpio-buzzer` (:github:`108911`)
  * :dtcompatible:`pwm-buzzer` (:github:`108911`)

* :abbr:`CAN (Controller Area Network)`

  * :dtcompatible:`bflb,bl61x-can` (:github:`110672`)
  * :dtcompatible:`espressif,esp32-twaifd` (:github:`107680`)
  * :dtcompatible:`realtek,bee-can` (:github:`105411`)
  * :dtcompatible:`renesas,rcar-rscanfd` (:github:`109782`)
  * :dtcompatible:`renesas,rcar-rscanfd-global` (:github:`109782`)

* Charger

  * :dtcompatible:`adi,adp5360-charger` (:github:`105258`)
  * :dtcompatible:`silergy,sy6974b` (:github:`107439`)
  * :dtcompatible:`ti,bq24295` (:github:`114650`)
  * :dtcompatible:`ti,bq24296` (:github:`114650`)
  * :dtcompatible:`ti,bq24296m` (:github:`114650`)
  * :dtcompatible:`ti,bq24297` (:github:`114650`)
  * :dtcompatible:`ti,bq24298` (:github:`114650`)

* Clock control

  * :dtcompatible:`adi,axi-clkgen` (:github:`115291`)
  * :dtcompatible:`adi,max32-erfo` (:github:`115434`)
  * :dtcompatible:`adi,max32-extclk` (:github:`117709`)
  * :dtcompatible:`aesc,clock-controller` (:github:`116703`)
  * :dtcompatible:`alif,clock-mux` (:github:`119665`)
  * :dtcompatible:`bflb,bl616cl-clock-controller` (:github:`112738`)
  * :dtcompatible:`bflb,bl808-clock-controller` (:github:`105580`)
  * :dtcompatible:`bflb,mm-clk` (:github:`105580`)
  * :dtcompatible:`infineon,cat1c-clk-hf` (:github:`108259`)
  * :dtcompatible:`infineon,clk-osc` (:github:`108259`)
  * :dtcompatible:`infineon,clk-pll` (:github:`108259`)
  * :dtcompatible:`infineon,peri-clk` (:github:`108259`)
  * :dtcompatible:`mediatek,mt8188-infracfg-ao` (:github:`118658`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-clock` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-dfll48m` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-gclkgen` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-gclkperiph` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-mclkcpu` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-mclkperiph` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-pll` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-rtc` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-xosc` (:github:`116592`)
  * :dtcompatible:`microchip,pic32ck-sg-gc-xosc32k` (:github:`116592`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-clock` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-dfll48m` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-dpll` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-gclkgen` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-gclkperiph` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-mclkdomain` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-mclkperiph` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-rtc` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-xosc` (:github:`112582`)
  * :dtcompatible:`microchip,pic32cm-sg-gc-xosc32k` (:github:`112582`)
  * :dtcompatible:`microchip,smartfusion2-clock` (:github:`106926`)
  * :dtcompatible:`nordic,nrf-clock-hfclk` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-clock-hfclk192m` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-clock-hfclkaudio` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-clock-lfclk` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-clock-xo` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-clock-xo24m` (:github:`104658`)
  * :dtcompatible:`nordic,nrf-lfrc` (:github:`118582`)
  * :dtcompatible:`nuvoton,m4-hclk-clock` (:github:`103668`)
  * :dtcompatible:`nuvoton,m4-hxt-clock` (:github:`103668`)
  * :dtcompatible:`nuvoton,m4-lxt-clock` (:github:`103668`)
  * :dtcompatible:`nuvoton,m4-pll-clock` (:github:`103668`)
  * :dtcompatible:`nuvoton,numicro-m4-pcc` (:github:`103668`)
  * :dtcompatible:`nuvoton,numicro-m4-scc` (:github:`103668`)
  * :dtcompatible:`nxp,imx-ccm-rev3` (:github:`118702`)
  * :dtcompatible:`nxp,imx-ccm-rev3-root` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-avpll` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-core-pll` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-frac-pll` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-fro12m` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-fro192m` (:github:`118702`)
  * :dtcompatible:`nxp,imx-cguana-sxosc` (:github:`118702`)
  * :dtcompatible:`nxp,imx9-pll` (:github:`120033`)
  * :dtcompatible:`nxp,imxrt118x-arm-pll` (:github:`106881`)
  * :dtcompatible:`nxp,imxrt11xx-arm-pll` (:github:`106881`)
  * :dtcompatible:`nxp,lpc84x-clock` (:github:`105928`)
  * :dtcompatible:`nxp,mcxw7x-clock` (:github:`101937`)
  * :dtcompatible:`renesas,rx-cgc-pllccr-type` (:github:`118284`)
  * :dtcompatible:`rockchip,rk3588-cru` (:github:`117985`)
  * :dtcompatible:`rockchip,rk3588-cru-clk` (:github:`117985`)
  * :dtcompatible:`silabs,series-clock-output` (:github:`118308`)
  * :dtcompatible:`silabs,series0-cmu` (:github:`111754`)
  * :dtcompatible:`silabs,series0-hfxo` (:github:`111754`)
  * :dtcompatible:`silabs,series0-lfrco` (:github:`111754`)
  * :dtcompatible:`silabs,series0-lfxo` (:github:`111754`)
  * :dtcompatible:`silabs,siwx91x-clock-route` (:github:`113743`)
  * :dtcompatible:`silabs,siwx91x-cmu-aon` (:github:`113743`)
  * :dtcompatible:`silabs,siwx91x-cmu-hp` (:github:`113743`)
  * :dtcompatible:`silabs,siwx91x-cmu-ulp` (:github:`113743`)
  * :dtcompatible:`silabs,siwx91x-physical-clock` (:github:`113743`)
  * :dtcompatible:`silabs,siwx91x-pll` (:github:`113743`)
  * :dtcompatible:`silabs,socpll` (:github:`117617`)
  * :dtcompatible:`st,stm32h5-pll-clock` (:github:`110914`)
  * :dtcompatible:`st,stm32n6-msi-clock` (:github:`108997`)
  * :dtcompatible:`st,stm32wl3-rcc` (:github:`114483`)
  * :dtcompatible:`ti,cdce913` (:github:`118204`)
  * :dtcompatible:`ti,cdce925` (:github:`118204`)
  * :dtcompatible:`ti,cdce937` (:github:`118204`)
  * :dtcompatible:`ti,cdce949` (:github:`118204`)
  * :dtcompatible:`wch,ch32h41x-pll-clock` (:github:`111725`)
  * :dtcompatible:`xlnx,clkx5-wiz-1.0` (:github:`114205`)

* Clock monitor

  * :dtcompatible:`nxp,cmu-fc` (:github:`107879`)
  * :dtcompatible:`nxp,cmu-fm` (:github:`107879`)
  * :dtcompatible:`nxp,fmeas` (:github:`112650`)
  * :dtcompatible:`nxp,freqme` (:github:`112403`)

* Comparator

  * :dtcompatible:`espressif,esp32-ana-cmpr` (:github:`113625`)
  * :dtcompatible:`infineon,autanalog-ptcomp-comp` (:github:`107488`)
  * :dtcompatible:`infineon,hppass-csg-comp` (:github:`109879`)
  * :dtcompatible:`infineon,lp-comp` (:github:`104636`)
  * :dtcompatible:`infineon,lp-comp-channel` (:github:`104636`)
  * :dtcompatible:`nxp,lpacmp` (:github:`114754`)
  * :dtcompatible:`ti,mspm0-comparator` (:github:`94737`)
  * :dtcompatible:`wch,ch5xx-comparator` (:github:`115343`)

* Counter

  * :dtcompatible:`arm,crsas-ma2-counter` (:github:`112815`)
  * :dtcompatible:`arm,crsas-ma2-timer` (:github:`112815`)
  * :dtcompatible:`microcrystal,rv3028-counter` (:github:`115957`)
  * :dtcompatible:`nxp,irtc-wake-timer` (:github:`111552`)
  * :dtcompatible:`nxp,sysctr` (:github:`106300`)
  * :dtcompatible:`nxp,tstmr` (:github:`112255`)
  * :dtcompatible:`nxp,wake-timer` (:github:`110811`)
  * :dtcompatible:`realtek,ameba-counter` (:github:`106664`)
  * :dtcompatible:`realtek,bee-counter-rtc` (:github:`105193`)
  * :dtcompatible:`renesas,ra-ulpt-counter` (:github:`113188`)
  * :dtcompatible:`ti,k3-rtc-counter` (:github:`104048`)
  * :dtcompatible:`wch,adtm` (:github:`109728`)
  * :dtcompatible:`xlnx,ttc` (:github:`103117`)
  * :dtcompatible:`xlnx,ttc-counter` (:github:`103117`)
  * :dtcompatible:`xlnx,zynqmp-rtc` (:github:`107684`)

* :abbr:`CPU (Central Processing Unit)`

  * :dtcompatible:`adi,max32-m4f-cpu1` (:github:`105310`)
  * :dtcompatible:`arm,armv8` (:github:`114145`)
  * :dtcompatible:`arm,cortex-a32` (:github:`107644`)
  * :dtcompatible:`arm,cortex-a57` (:github:`114109`)
  * :dtcompatible:`arm,cortex-a720` (:github:`113087`)
  * :dtcompatible:`arm,cortex-r8f` (:github:`114145`)
  * :dtcompatible:`infineon,tricore` (:github:`107516`)
  * :dtcompatible:`intel,nova-lake` (:github:`111818`)
  * :dtcompatible:`intel,x86_64` (:github:`115174`)
  * :dtcompatible:`litex,vexiiriscv-standard` (:github:`106609`)
  * :dtcompatible:`qcom,hexagon-v67` (:github:`107122`)
  * :dtcompatible:`renesas,rxv3e` (:github:`118284`)
  * :dtcompatible:`spinalhdl,vexiiriscv` (:github:`109932`)
  * :dtcompatible:`wch,qingke-v3c` (:github:`111171`)
  * :dtcompatible:`wch,qingke-v3f` (:github:`111725`)
  * :dtcompatible:`wch,qingke-v5f` (:github:`111725`)

* :abbr:`CPU (Central Processing Unit)` frequency scaling

  * :dtcompatible:`zephyr,cpu-freq-thermal-cap` (:github:`108242`)

* :abbr:`CRC (Cyclic Redundancy Check)`

  * :dtcompatible:`ambiq,hw-crc32` (:github:`110366`)

* Cryptographic accelerator

  * :dtcompatible:`infineon,mxcrypto-crypto` (:github:`108439`)
  * :dtcompatible:`infineon,mxcrypto-trng` (:github:`108439`)
  * :dtcompatible:`infineon,mxcryptolite-crypto` (:github:`109693`)
  * :dtcompatible:`infineon,mxcryptolite-trng` (:github:`109693`)
  * :dtcompatible:`realtek,bee-aes` (:github:`114817`)
  * :dtcompatible:`realtek,bee-sha256` (:github:`114817`)
  * :dtcompatible:`silabs,series3-crypto` (:github:`117617`)
  * :dtcompatible:`st,stm32wba-pka` (:github:`116564`)
  * :dtcompatible:`ti,mspm0-aes` (:github:`94734`)

* :abbr:`DAC (Digital to Analog Converter)`

  * :dtcompatible:`adi,ad5529r` (:github:`106256`)
  * :dtcompatible:`infineon,autanalog-ctdac` (:github:`107490`)
  * :dtcompatible:`infineon,hppass-csg-dac` (:github:`109967`)
  * :dtcompatible:`microchip,dac-g2` (:github:`109820`)
  * :dtcompatible:`ti,dac43508` (:github:`112038`)
  * :dtcompatible:`ti,dac53508` (:github:`112038`)
  * :dtcompatible:`ti,dac63508` (:github:`112038`)
  * :dtcompatible:`ti,mspm0-dac` (:github:`94725`)

* :abbr:`DAI (Digital Audio Interface)`

  * :dtcompatible:`amd,acp-sdw-dai` (:github:`104450`)
  * :dtcompatible:`amd,tdm-dai` (:github:`108314`)

* :abbr:`DALI (Digital Addressable Lighting Interface)`

  * :dtcompatible:`zephyr,dali-pwm` (:github:`88128`)

* Disk

  * :dtcompatible:`virtio,blk` (:github:`112581`)
  * :dtcompatible:`zephyr,memc-ram-disk` (:github:`111528`)

* Display

  * :dtcompatible:`adi,adv7535` (:github:`119977`)
  * :dtcompatible:`adi,adv7535-dsi` (:github:`119977`)
  * :dtcompatible:`charlieplex-led-matrix` (:github:`110137`)
  * :dtcompatible:`chipwealth,ch1115` (:github:`107434`)
  * :dtcompatible:`chipwealth,ch1116` (:github:`107434`)
  * :dtcompatible:`eink,ed2208-doa` (:github:`109961`)
  * :dtcompatible:`eink,ed2208-gca` (:github:`107510`)
  * :dtcompatible:`espressif,esp-dsi-display` (:github:`116548`)
  * :dtcompatible:`fitipower,ek79007` (:github:`116543`)
  * :dtcompatible:`himax,hx8353e` (:github:`108055`)
  * :dtcompatible:`ilitek,ili9881c` (:github:`116701`)
  * :dtcompatible:`ite,it8951` (:github:`108591`)
  * :dtcompatible:`levetop,lt7680` (:github:`112389`)
  * :dtcompatible:`philips,pcd8544` (:github:`120029`)
  * :dtcompatible:`raspberrypi,bcm2711-framebuffer` (:github:`109522`)
  * :dtcompatible:`raydium,rm67199` (:github:`98554`)
  * :dtcompatible:`raydium,rm692c9` (:github:`93134`)
  * :dtcompatible:`renesas,rz-lcdc` (:github:`116701`)
  * :dtcompatible:`sinowealth,sh1107` (:github:`107434`)
  * :dtcompatible:`socionext,dpu` (:github:`93134`)
  * :dtcompatible:`solomon,ssd1305` (:github:`107434`)
  * :dtcompatible:`solomon,ssd1306b` (:github:`107434`)
  * :dtcompatible:`solomon,ssd1315` (:github:`107434`)
  * :dtcompatible:`solomon,ssd1683` (:github:`112893`)
  * :dtcompatible:`st,neochrom-gpu2d` (:github:`105970`)
  * :dtcompatible:`st,stm32-dma2d` (:github:`103687`)
  * :dtcompatible:`ultrachip,uc8253` (:github:`113230`)
  * :dtcompatible:`zephyr,panel-color-palette` (:github:`107945`)

* :abbr:`DMA (Direct Memory Access)`

  * :dtcompatible:`adi,axi-dmac` (:github:`115303`)
  * :dtcompatible:`amd,acp-host-dma` (:github:`104450`)
  * :dtcompatible:`amd,acp-sdw-dma` (:github:`104450`)
  * :dtcompatible:`amd,acp-tdm-dma` (:github:`108314`)
  * :dtcompatible:`amd,versal2-dma-1.0` (:github:`101685`)
  * :dtcompatible:`infineon,mdma` (:github:`110847`)
  * :dtcompatible:`microchip,dmac-g3-dma` (:github:`109209`)
  * :dtcompatible:`nxp,gdma` (:github:`104868`)
  * :dtcompatible:`realtek,ameba-gdma` (:github:`105366`)
  * :dtcompatible:`realtek,bee-dma` (:github:`104754`)
  * :dtcompatible:`renesas,rza2m-dma` (:github:`107009`)
  * :dtcompatible:`ti,mspm0-dma` (:github:`91502`)
  * :dtcompatible:`xlnx,zynqmp-dma-1.0` (:github:`101685`)

* :abbr:`DSA (Distributed Switch Architecture)`

  * :dtcompatible:`zephyr,dsa-port` (:github:`116605`)

* :abbr:`DSP (Digital Signal Processor)`

  * :dtcompatible:`nxp,powerquad` (:github:`110745`)

* :abbr:`EDAC (Error Detection and Correction)`

  * :dtcompatible:`nxp,mecc` (:github:`105341`)

* :abbr:`ESPI (Enhanced Serial Peripheral Interface)`

  * :dtcompatible:`intel,espi-peci` (:github:`103773`)
  * :dtcompatible:`nxp,espi` (:github:`110318`)
  * :dtcompatible:`nxp,espi-taf` (:github:`110318`)

* Ethernet

  * :dtcompatible:`adi,adin1140` (:github:`109227`)
  * :dtcompatible:`adi,adin1140-mdio` (:github:`109227`)
  * :dtcompatible:`adi,adin1140-phy` (:github:`109227`)
  * :dtcompatible:`brcm,genet` (:github:`113360`)
  * :dtcompatible:`brcm,genet-mdio` (:github:`113360`)
  * :dtcompatible:`microchip,gmac-g1-eth` (:github:`105275`)
  * :dtcompatible:`microchip,gmac-g1-mdio` (:github:`105275`)
  * :dtcompatible:`microchip,lan8840` (:github:`110896`)
  * :dtcompatible:`nxp,imx-netc-vsi` (:github:`114331`)
  * :dtcompatible:`rockchip,rk3588-gmac` (:github:`117985`)
  * :dtcompatible:`snps,dwmac` (:github:`114760`)
  * :dtcompatible:`snps,dwmac-mdio` (:github:`108046`)
  * :dtcompatible:`snps,dwmac-ptp-clock` (:github:`114242`)
  * :dtcompatible:`wch,ch9120` (:github:`111708`)
  * :dtcompatible:`wiznet,w5100s` (:github:`113315`)
  * :dtcompatible:`wiznet,w6300` (:github:`102727`)
  * :dtcompatible:`xlnx,gem-mdio` (:github:`87313`)
  * :dtcompatible:`zephyr,native-ptp-clock` (:github:`109265`)
  * :dtcompatible:`zephyr,native-tap` (:github:`117068`)

* Firmware

  * :dtcompatible:`arm,scmi-reset` (:github:`106306`)
  * :dtcompatible:`raspberrypi,bcm283x-firmware` (:github:`107536`)

* Flash controller

  * :dtcompatible:`aesc,spi-flash-controller` (:github:`110957`)
  * :dtcompatible:`infineon,rram-controller` (:github:`108532`)
  * :dtcompatible:`intel,pflash-cfi01` (:github:`112714`)
  * :dtcompatible:`microchip,igloo2-envm-controller` (:github:`111817`)
  * :dtcompatible:`microchip,nvmctrl-g2` (:github:`108440`)
  * :dtcompatible:`microchip,nvmctrl-g3` (:github:`109747`)
  * :dtcompatible:`microchip,smartfusion2-flash-controller` (:github:`106926`)
  * :dtcompatible:`nxp,iap-fmc84x` (:github:`105928`)
  * :dtcompatible:`realtek,ameba-flash-controller` (:github:`106690`)
  * :dtcompatible:`realtek,bee-nor-flash-controller` (:github:`107007`)
  * :dtcompatible:`renesas,ra-faci` (:github:`109125`)
  * :dtcompatible:`renesas,ra-fcb` (:github:`109125`)
  * :dtcompatible:`silabs,series3-extmem` (:github:`117617`)
  * :dtcompatible:`ti,mspm0-flash-controller` (:github:`115203`)
  * :dtcompatible:`wch,ch32v-flash-controller` (:github:`113980`)
  * :dtcompatible:`zephyr,semihost-flash` (:github:`112945`)

* :abbr:`FPGA (Field Programmable Gate Array)`

  * :dtcompatible:`renesas,slg47910` (:github:`107551`)

* Fuel gauge

  * :dtcompatible:`adi,adp5360-fuel-gauge` (:github:`105258`)

* :abbr:`GNSS (Global Navigation Satellite System)`

  * :dtcompatible:`ericsson,f5521gw` (:github:`113055`)
  * :dtcompatible:`u-blox,m10` (:github:`110846`)

* :abbr:`GPIO (General Purpose Input/Output)` & Headers

  * :dtcompatible:`allwinner,sun50i-h618-gpio` (:github:`110502`)
  * :dtcompatible:`allwinner,sunxi-gpio` (:github:`110502`)
  * :dtcompatible:`arduino-mega-header` (:github:`105160`)
  * :dtcompatible:`cdac,thejas32-gpio` (:github:`114202`)
  * :dtcompatible:`diodes,pi4ioe5v6408` (:github:`108505`)
  * :dtcompatible:`esp-01-header` (:github:`109705`)
  * :dtcompatible:`gpio-mmio-latch` (:github:`105732`)
  * :dtcompatible:`m5stack,m5pm1-gpio` (:github:`109961`)
  * :dtcompatible:`mr-mcxn-t1-header` (:github:`117414`)
  * :dtcompatible:`nordic,npm10xx-gpio` (:github:`108508`)
  * :dtcompatible:`nordic,nrf71-p4-gpio` (:github:`118802`)
  * :dtcompatible:`nxp,imx-gpio-v2` (:github:`118702`)
  * :dtcompatible:`raspberrypi,bcm283x-gpio` (:github:`110788`)
  * :dtcompatible:`realtek,rts5817-gpio` (:github:`105542`)
  * :dtcompatible:`renesas,rx-gpio-ioport` (:github:`118284`)
  * :dtcompatible:`renesas,rz-gpio-mipi-header` (:github:`116701`)
  * :dtcompatible:`st,m2-memory-connector` (:github:`109004`)
  * :dtcompatible:`st,stmod-plus-connector` (:github:`109705`)
  * :dtcompatible:`st-zio-header` (:github:`115412`)
  * :dtcompatible:`ti,tca9554` (:github:`111041`)
  * :dtcompatible:`ti,tla2528-gpio` (:github:`110722`)
  * :dtcompatible:`virtio,gpio` (:github:`114983`)
  * :dtcompatible:`wch,ch5xx-gpio` (:github:`111171`)
  * :dtcompatible:`wisblock-io-slot` (:github:`113140`)
  * :dtcompatible:`wisblock-sensor-slot` (:github:`113140`)

* Haptics

  * :dtcompatible:`cirrus,cs40l26` (:github:`106934`)
  * :dtcompatible:`cirrus,cs40l27` (:github:`106934`)
  * :dtcompatible:`cirrus,cs40l50` (:github:`105683`)
  * :dtcompatible:`cirrus,cs40l51` (:github:`105683`)
  * :dtcompatible:`cirrus,cs40l52` (:github:`105683`)
  * :dtcompatible:`cirrus,cs40l53` (:github:`105683`)
  * :dtcompatible:`titanmec,tm6605` (:github:`109104`)

* Hardware information

  * :dtcompatible:`nxp,lpc-pmc-hwinfo` (:github:`114693`)
  * :dtcompatible:`nxp,mc-rgm` (:github:`111359`)
  * :dtcompatible:`nxp,otp-uid` (:github:`111493`)
  * :dtcompatible:`wch,esig` (:github:`115101`)
  * :dtcompatible:`zephyr,hwinfo-nvmem` (:github:`118693`)

* :abbr:`I2C (Inter-Integrated Circuit)`

  * :dtcompatible:`ambiq,ios-i2c` (:github:`96059`)
  * :dtcompatible:`brcm,bcm2711-i2c` (:github:`105601`)
  * :dtcompatible:`ene,kb106x-i2c` (:github:`106693`)
  * :dtcompatible:`realtek,ameba-i2c` (:github:`108235`)
  * :dtcompatible:`realtek,bee-i2c` (:github:`105028`)
  * :dtcompatible:`virtio,i2c` (:github:`115003`)
  * :dtcompatible:`zephyr,i2c-target-tmp103` (:github:`114727`)

* :abbr:`I2S (Inter-Integrated Circuit Sound)`

  * :dtcompatible:`zephyr,native-sim-i2s` (:github:`109902`)

* :abbr:`I3C (Improved Inter-Integrated Circuit)`

  * :dtcompatible:`microchip,xec-i3c` (:github:`116252`)

* IEEE 802.15.4

  * :dtcompatible:`bflb,ieee802154` (:github:`112921`)
  * :dtcompatible:`silabs,efr32-ieee802154` (:github:`108596`)

* Input

  * :dtcompatible:`adsemi,tsm12` (:github:`120170`)
  * :dtcompatible:`tbs,crsf` (:github:`106941`)
  * :dtcompatible:`virtio,input` (:github:`111029`)

* Interrupt controller

  * :dtcompatible:`amd,acp-intc` (:github:`104450`)
  * :dtcompatible:`brcm,bcm2835-armctrl-ic` (:github:`110189`)
  * :dtcompatible:`brcm,bcm2836-l1-intc` (:github:`110189`)
  * :dtcompatible:`cdac,thejas32-intc` (:github:`114202`)
  * :dtcompatible:`infineon,aurix-ir` (:github:`107516`)
  * :dtcompatible:`infineon,sysintc` (:github:`108259`)
  * :dtcompatible:`infineon,sysintc-mux` (:github:`108259`)
  * :dtcompatible:`microchip,smartfusion2-h2f-irqctrl` (:github:`106926`)
  * :dtcompatible:`qcom,hvm-pic` (:github:`107122`)
  * :dtcompatible:`renesas,rx-icum` (:github:`118284`)

* :abbr:`IPC (Inter-Processor Communication)`

  * :dtcompatible:`infineon,ipc` (:github:`117744`)
  * :dtcompatible:`nxp,ipc-rpmsg-lite` (:github:`104807`)

* :abbr:`LED (Light Emitting Diode)`

  * :dtcompatible:`awinic,aw9523b-led` (:github:`115299`)
  * :dtcompatible:`issi,is31fl3193` (:github:`107555`)
  * :dtcompatible:`nordic,npm10xx-led` (:github:`108756`)
  * :dtcompatible:`nxp,pca9530` (:github:`112203`)
  * :dtcompatible:`nxp,pca9531` (:github:`112203`)
  * :dtcompatible:`nxp,pca9532` (:github:`112203`)
  * :dtcompatible:`ti,lp5860` (:github:`108801`)
  * :dtcompatible:`ti,lp5861` (:github:`108801`)
  * :dtcompatible:`ti,lp5862` (:github:`108801`)
  * :dtcompatible:`ti,lp5864` (:github:`108801`)
  * :dtcompatible:`ti,lp5866` (:github:`108801`)
  * :dtcompatible:`ti,lp5868` (:github:`108801`)
  * :dtcompatible:`zephyr,fake-leds` (:github:`110819`)
  * :dtcompatible:`zephyr,native-linux-leds` (:github:`111189`)

* :abbr:`LED (Light Emitting Diode)` strip

  * :dtcompatible:`worldsemi,ws2812-bflb-wo` (:github:`105325`)
  * :dtcompatible:`worldsemi,ws2812-pulse-io` (:github:`110466`)

* :abbr:`LIN (Local Interconnect Network)`

  * :dtcompatible:`renesas,ra-lin-sci-b` (:github:`95975`)

* LoRa

  * :dtcompatible:`semtech,lr1121` (:github:`109912`)

* Mailbox

  * :dtcompatible:`arm,mhuv2` (:github:`110686`)
  * :dtcompatible:`brcm,bcm2711-mbox` (:github:`107536`)
  * :dtcompatible:`infineon,mbox` (:github:`117744`)
  * :dtcompatible:`renesas,rcar-mfis-mbox` (:github:`108868`)

* MCUmgr

  * :dtcompatible:`zephyr,smp-spi` (:github:`106947`)

* Memory controller

  * :dtcompatible:`bflb,bl808-psram-uhs` (:github:`110702`)
  * :dtcompatible:`bflb,bl808-psram-uhs-controller` (:github:`110702`)
  * :dtcompatible:`bflb,sf-bank` (:github:`107223`)
  * :dtcompatible:`bflb,sf-controller` (:github:`107223`)
  * :dtcompatible:`nxp,imx-snvs-gpr` (:github:`109842`)
  * :dtcompatible:`nxp,sramc` (:github:`118087`)

* :abbr:`MIPI-DSI (Mobile Industry Processor Interface Display Serial Interface)`

  * :dtcompatible:`espressif,esp-mipi-dsi` (:github:`116548`)
  * :dtcompatible:`renesas,rz-mipi-dsi` (:github:`116701`)

* Miscellaneous

  * :dtcompatible:`adi,tmc6460` (:github:`113438`)
  * :dtcompatible:`espressif,esp32-ppa` (:github:`117658`)
  * :dtcompatible:`nxp,imx93-video-pll` (:github:`98554`)
  * :dtcompatible:`nxp,mcxw-hw-params` (:github:`108974`)
  * :dtcompatible:`raspberrypi,pico-powman` (:github:`115474`)
  * :dtcompatible:`renesas,rx-sci-b` (:github:`118284`)
  * :dtcompatible:`renesas,rx-system-controller` (:github:`118284`)
  * :dtcompatible:`ti,tdp2004` (:github:`111950`)

* Modem

  * :dtcompatible:`fibocom,le250` (:github:`114755`)
  * :dtcompatible:`nordic,nrf91-sm-v2` (:github:`115058`)
  * :dtcompatible:`nordic,nrf93m1` (:github:`106289`)
  * :dtcompatible:`quectel,bc66` (:github:`111279`)
  * :dtcompatible:`quectel,bc660k` (:github:`111279`)
  * :dtcompatible:`quectel,bc66x` (:github:`111279`)
  * :dtcompatible:`quectel,bg770` (:github:`114859`)
  * :dtcompatible:`quectel,eg21-g` (:github:`115561`)
  * :dtcompatible:`quectel,eg915u` (:github:`95921`)
  * :dtcompatible:`telit,le910c1tx` (:github:`106716`)
  * :dtcompatible:`telit,lex10q1` (:github:`109206`)
  * :dtcompatible:`trasna,lexi-r10` (:github:`107308`)

* :abbr:`MTD (Memory Technology Device)`

  * :dtcompatible:`bflb,sf-device` (:github:`107223`)
  * :dtcompatible:`bflb,sf-flash` (:github:`107223`)
  * :dtcompatible:`infineon,s28hx512t` (:github:`102513`)
  * :dtcompatible:`is66wv` (:github:`111074`)
  * :dtcompatible:`microchip,flash-g2` (:github:`108440`)
  * :dtcompatible:`microchip,flash-g3` (:github:`109747`)
  * :dtcompatible:`microcrystal,rv3028-eeprom` (:github:`115759`)
  * :dtcompatible:`mxicy,mx25um51345g` (:github:`112458`)
  * :dtcompatible:`nordic,tz-nonsecure` (:github:`108883`)
  * :dtcompatible:`nordic,tz-secure` (:github:`108883`)
  * :dtcompatible:`nxp,imx-flexspi-nand` (:github:`104870`)
  * :dtcompatible:`nxp,mcxw-ifr` (:github:`108974`)
  * :dtcompatible:`realtek,bee-nor-flash` (:github:`107007`)
  * :dtcompatible:`st,m95p32` (:github:`117991`)
  * :dtcompatible:`winbond,w25q512nw` (:github:`112458`)

* Multi-bit :abbr:`SPI (Serial Peripheral Interface)`

  * :dtcompatible:`cdns,xspi-nor` (:github:`102513`)
  * :dtcompatible:`microchip,xec-qmspi-controller` (:github:`113243`)
  * :dtcompatible:`microchip,xec-qmspi-device` (:github:`113243`)
  * :dtcompatible:`nxp,qspi` (:github:`108953`)
  * :dtcompatible:`st,nor` (:github:`113368`)
  * :dtcompatible:`st,psram-device` (:github:`105219`)
  * :dtcompatible:`zephyr,peripheral-device` (:github:`103754`)

* Multi-Function Device

  * :dtcompatible:`ambiq,ios` (:github:`96059`)
  * :dtcompatible:`infineon,autanalog` (:github:`106227`)
  * :dtcompatible:`infineon,autanalog-ac-state` (:github:`106227`)
  * :dtcompatible:`infineon,autanalog-ctb` (:github:`107489`)
  * :dtcompatible:`infineon,autanalog-prb` (:github:`107487`)
  * :dtcompatible:`infineon,autanalog-ptcomp` (:github:`107488`)
  * :dtcompatible:`infineon,hppass-ac-state` (:github:`109196`)
  * :dtcompatible:`infineon,hppass-analog` (:github:`109196`)
  * :dtcompatible:`infineon,hppass-csg` (:github:`109694`)
  * :dtcompatible:`infineon,mxcrypto` (:github:`108439`)
  * :dtcompatible:`infineon,mxcryptolite` (:github:`109693`)
  * :dtcompatible:`m5stack,m5pm1` (:github:`109961`)
  * :dtcompatible:`silabs,emu` (:github:`120576`)
  * :dtcompatible:`ti,tla2528` (:github:`110722`)

* :abbr:`MUX (Multiplexer)`

  * :dtcompatible:`adi,adgm3121` (:github:`112088`)
  * :dtcompatible:`adi,adgm3121-gpio` (:github:`112088`)
  * :dtcompatible:`gpio-mux` (:github:`112088`)
  * :dtcompatible:`nxp,inputmux` (:github:`109379`)
  * :dtcompatible:`nxp,trgmux` (:github:`112088`)

* Networking

  * :dtcompatible:`st,stm32wba-radio` (:github:`110546`)

* :abbr:`OPAMP (Operational Amplifier)`

  * :dtcompatible:`infineon,autanalog-ctb-opamp` (:github:`107489`)

* :abbr:`OTP (One-Time Programmable)` memory

  * :dtcompatible:`adi,axi-sysid` (:github:`115280`)
  * :dtcompatible:`nordic,npm10xx-uicr` (:github:`119928`)
  * :dtcompatible:`nxp,otpc` (:github:`111707`)
  * :dtcompatible:`nxp,rt7xx-ocotp` (:github:`108075`)
  * :dtcompatible:`realtek,rts5817-ocotp` (:github:`111141`)

* :abbr:`PCIe (Peripheral Component Interconnect Express)`

  * :dtcompatible:`brcm,iproc-pcie-ep-v2` (:github:`111490`)

* Performance state

  * :dtcompatible:`nxp,imx9-pstate` (:github:`120033`)

* PHY

  * :dtcompatible:`lin-transceiver-gpio` (:github:`95975`)
  * :dtcompatible:`st,stm32f7-usbphyc` (:github:`114696`)
  * :dtcompatible:`st,stm32n6-usbphyc` (:github:`114696`)

* Pin control

  * :dtcompatible:`aesc,pinctrl` (:github:`108137`)
  * :dtcompatible:`arm,v2m_musca_b1-pinctrl` (:github:`114671`)
  * :dtcompatible:`brcm,bcm2712-pinctrl` (:github:`101635`)
  * :dtcompatible:`elan,em32-pinctrl` (:github:`103037`)
  * :dtcompatible:`mediatek,mt8188-pinctrl` (:github:`118658`)
  * :dtcompatible:`nxp,lpc84x-iocon` (:github:`105928`)
  * :dtcompatible:`nxp,lpc84x-swm` (:github:`105928`)
  * :dtcompatible:`nxp,mcux-rt266x-pinctrl` (:github:`118702`)
  * :dtcompatible:`raspberrypi,rp1-pinctrl` (:github:`101635`)
  * :dtcompatible:`renesas,rcar-pfc-x5h` (:github:`108871`)
  * :dtcompatible:`renesas,rx-pinctrl-pfs` (:github:`118284`)
  * :dtcompatible:`ti,tiva-c-pinctrl` (:github:`110025`)
  * :dtcompatible:`wch,ch570-pinctrl` (:github:`111171`)
  * :dtcompatible:`wch,h41x-afio` (:github:`111725`)

* Power domain

  * :dtcompatible:`raspberrypi,bcm283x-power` (:github:`112918`)

* Power management

  * :dtcompatible:`infineon,hibernate-wakeup` (:github:`116691`)
  * :dtcompatible:`microchip,supc-g1` (:github:`115872`)
  * :dtcompatible:`nuvoton,npcx-power-state` (:github:`118685`)
  * :dtcompatible:`nxp,smc` (:github:`102228`)
  * :dtcompatible:`st,stm32-pwr-wkupctrl` (:github:`114092`)
  * :dtcompatible:`st,stm32f1-pwr-wkupctrl` (:github:`114092`)
  * :dtcompatible:`st,stm32f7-pwr-wkupctrl` (:github:`114092`)

* Pulse IO

  * :dtcompatible:`espressif,esp32-rmt` (:github:`110466`)
  * :dtcompatible:`zephyr,pulse-io-loopback` (:github:`110466`)

* :abbr:`PWM (Pulse Width Modulation)`

  * :dtcompatible:`adi,axi-pwmgen` (:github:`115319`)
  * :dtcompatible:`microchip,pwm-g1` (:github:`111745`)
  * :dtcompatible:`nxp,emios` (:github:`111373`)
  * :dtcompatible:`nxp,emios-pwm` (:github:`111373`)
  * :dtcompatible:`nxp,ipwm` (:github:`117075`)
  * :dtcompatible:`realtek,ameba-pwm` (:github:`106669`)
  * :dtcompatible:`realtek,bee-pwm` (:github:`105014`)
  * :dtcompatible:`ti,am3352-ecap` (:github:`88860`)
  * :dtcompatible:`ti,am3352-ehrpwm` (:github:`88757`)
  * :dtcompatible:`wch,adtm-pwm` (:github:`109728`)
  * :dtcompatible:`wisblock-pwm` (:github:`113140`)
  * :dtcompatible:`zephyr,pwm-bitbang` (:github:`106536`)

* Regulator

  * :dtcompatible:`adi,max20362-regulator` (:github:`116023`)
  * :dtcompatible:`gd,gd32-bldo` (:github:`106501`)
  * :dtcompatible:`infineon,autanalog-prb-vref` (:github:`107487`)
  * :dtcompatible:`m5stack,m5pm1-regulator` (:github:`109961`)
  * :dtcompatible:`nxp,spc-bandgap-buffer` (:github:`116489`)
  * :dtcompatible:`realtek,rts5817-regulator` (:github:`108545`)
  * :dtcompatible:`sifli,sf32lb52x-ldo` (:github:`108093`)
  * :dtcompatible:`ti,mspm0-vref` (:github:`94732`)
  * :dtcompatible:`ti,tps6287x` (:github:`119432`)

* Reset controller

  * :dtcompatible:`rockchip,rk3588-cru-rst` (:github:`117985`)
  * :dtcompatible:`wch,ch32-rcc-rctl` (:github:`115714`)

* Retained memory

  * :dtcompatible:`gd,gd32-backup-sram` (:github:`106501`)
  * :dtcompatible:`microcrystal,rv3028-ram` (:github:`115956`)

* :abbr:`RNG (Random Number Generator)`

  * :dtcompatible:`brcm,bcm2835-rng` (:github:`110191`)
  * :dtcompatible:`microchip,trng-g2-entropy` (:github:`108155`)
  * :dtcompatible:`realtek,ameba-trng` (:github:`106670`)
  * :dtcompatible:`realtek,bee-trng` (:github:`105335`)

* :abbr:`RTC (Real Time Clock)`

  * :dtcompatible:`ite,it8xxx2-rtc` (:github:`106350`)
  * :dtcompatible:`microchip,rtc-mss` (:github:`110842`)
  * :dtcompatible:`microchip,xec-hibtimer` (:github:`111476`)
  * :dtcompatible:`microchip,xec-rtc` (:github:`106116`)
  * :dtcompatible:`microcrystal,rv3028-rtc` (:github:`112978`)
  * :dtcompatible:`nxp,rtc-analog` (:github:`107196`)
  * :dtcompatible:`realtek,ameba-rtc` (:github:`105376`)

* :abbr:`SDHC (Secure Digital High Capacity)`

  * :dtcompatible:`bflb,sdhc` (:github:`105243`)
  * :dtcompatible:`microchip,sdhc-g1` (:github:`109211`)
  * :dtcompatible:`nuvoton,numaker-sdhc` (:github:`105437`)
  * :dtcompatible:`realtek,ameba-sdhost` (:github:`106687`)
  * :dtcompatible:`ti,am654-sdhci` (:github:`97172`)

* Sensors

  * :dtcompatible:`adi,adis1647x` (:github:`110012`)
  * :dtcompatible:`adi,adxl313` (:github:`114936`)
  * :dtcompatible:`adi,ltc4286` (:github:`105618`)
  * :dtcompatible:`adi,max30009` (:github:`112988`)
  * :dtcompatible:`ams,tcs34725` (:github:`118531`)
  * :dtcompatible:`bflb,tsen` (:github:`107717`)
  * :dtcompatible:`cfsensor,xgzp68xxd` (:github:`109675`)
  * :dtcompatible:`hamamatsu,s9706` (:github:`107607`)
  * :dtcompatible:`invensense,icm56622` (:github:`112362`)
  * :dtcompatible:`invensense,icm56686` (:github:`112362`)
  * :dtcompatible:`invensense,tad2144` (:github:`107994`)
  * :dtcompatible:`maxim,max30102` (:github:`108697`)
  * :dtcompatible:`maxim,max31826` (:github:`112398`)
  * :dtcompatible:`meas,htu21d` (:github:`106318`)
  * :dtcompatible:`meas,htu31d` (:github:`107532`)
  * :dtcompatible:`meas,ms5637` (:github:`106344`)
  * :dtcompatible:`microchip,pac194x` (:github:`105902`)
  * :dtcompatible:`nordic,nrf-vbat` (:github:`106102`)
  * :dtcompatible:`nxp,mcux-eqdc` (:github:`111927`)
  * :dtcompatible:`plantower,pmsa003i` (:github:`113377`)
  * :dtcompatible:`raspberrypi,bcm283x-vc-thermal` (:github:`110192`)
  * :dtcompatible:`realtek,bee-aon-qdec` (:github:`105129`)
  * :dtcompatible:`realtek,bee-basic-qdec` (:github:`105129`)
  * :dtcompatible:`realtek,bee-qdec` (:github:`105129`)
  * :dtcompatible:`sensylink,cht8315` (:github:`106391`)
  * :dtcompatible:`silabs,emu-temp` (:github:`120576`)
  * :dtcompatible:`st,stm32-vddcore` (:github:`108053`)
  * :dtcompatible:`st,vl53l5cx` (:github:`105238`)
  * :dtcompatible:`ti,fdc1004` (:github:`107233`)
  * :dtcompatible:`ti,tmp451` (:github:`108384`)
  * :dtcompatible:`zephyr,flow-meter` (:github:`111366`)
  * :dtcompatible:`zephyr,generic-emul-sensor` (:github:`115609`)
  * :dtcompatible:`zephyr,native-linux-temp` (:github:`114563`)

* Serial controller

  * :dtcompatible:`elan,em32-uart` (:github:`103037`)
  * :dtcompatible:`infineon,asclin-uart` (:github:`107516`)
  * :dtcompatible:`mediatek,mt8188-uart` (:github:`118658`)
  * :dtcompatible:`microchip,uart-g1` (:github:`114034`)
  * :dtcompatible:`nxp,lpc84x-uart` (:github:`105928`)
  * :dtcompatible:`renesas,rx-uart-sci-b` (:github:`118284`)
  * :dtcompatible:`shakti,uart` (:github:`113000`)
  * :dtcompatible:`snps,dw-apb-uart` (:github:`120368`)
  * :dtcompatible:`ti,tiva-c-uart` (:github:`110025`)
  * :dtcompatible:`wch,ch5xx-uart` (:github:`111171`)
  * :dtcompatible:`wch,sdi-console` (:github:`109777`)

* :abbr:`SMbus (System Management Bus)`

  * :dtcompatible:`ite,it51xxx-smbus` (:github:`114832`)

* :abbr:`SPI (Serial Peripheral Interface)`

  * :dtcompatible:`microchip,flexcom-g1-spi` (:github:`107467`)
  * :dtcompatible:`nuvoton,numaker-usci-spi` (:github:`109123`)
  * :dtcompatible:`nxp,kinetis-l-spi` (:github:`116378`)
  * :dtcompatible:`realtek,ameba-spi` (:github:`108234`)
  * :dtcompatible:`realtek,bee-spi` (:github:`104958`)
  * :dtcompatible:`realtek,rts5817-spi` (:github:`106346`)
  * :dtcompatible:`renesas,rz-spi-b` (:github:`107073`)
  * :dtcompatible:`ti,mspm0-spi` (:github:`94726`)
  * :dtcompatible:`virtio,spi` (:github:`115010`)
  * :dtcompatible:`xlnx,zynqmp-qspi-1.0` (:github:`88466`)

* System controller

  * :dtcompatible:`aesc,syscon` (:github:`116703`)

* Tachometer

  * :dtcompatible:`ene,kb106x-tach` (:github:`106739`)

* Timer

  * :dtcompatible:`amd,xps-timer-1.00.a` (:github:`113123`)
  * :dtcompatible:`infineon,aurix-stm` (:github:`107516`)
  * :dtcompatible:`microchip,pit-g1-timer` (:github:`114034`)
  * :dtcompatible:`qcom,hvm-timer` (:github:`107122`)
  * :dtcompatible:`st,stm32u5-lptim` (:github:`112400`)
  * :dtcompatible:`ti,am26-rtitimer` (:github:`102545`)

* :abbr:`USB (Universal Serial Bus)`

  * :dtcompatible:`brcm,bcm2835-usb` (:github:`110701`)
  * :dtcompatible:`espressif,esp32-usb-otg-hs` (:github:`111508`)
  * :dtcompatible:`infineon,usbhs` (:github:`106841`)
  * :dtcompatible:`infineon,xmc4xxx-usb` (:github:`113279`)
  * :dtcompatible:`ite,it51xxx-usb` (:github:`111002`)
  * :dtcompatible:`microchip,udphs-g1-udc` (:github:`99620`)
  * :dtcompatible:`nordic,nrf-usbhs` (:github:`117567`)
  * :dtcompatible:`nordic,nrf-usbhs-bc12` (:github:`106759`)
  * :dtcompatible:`nordic,nrf-usbhs-phy-type1` (:github:`117567`)
  * :dtcompatible:`nordic,nrf-usbhs-phy-type2` (:github:`117567`)
  * :dtcompatible:`renesas,ra-uhc` (:github:`82730`)

* Video

  * :dtcompatible:`nxp,flexio-camera` (:github:`109382`)
  * :dtcompatible:`nxp,jpegdec` (:github:`101883`)
  * :dtcompatible:`nxp,pngdec` (:github:`109973`)
  * :dtcompatible:`zephyr,native-sim-video-fifo` (:github:`119658`)

* Wakeup Controller

  * :dtcompatible:`nxp,sleepcon-wuc` (:github:`113447`)
  * :dtcompatible:`nxp,wuc-wuu` (:github:`100866`)

* Watchdog

  * :dtcompatible:`arm,crsas-ma2-watchdog` (:github:`112700`)
  * :dtcompatible:`m5stack,m5pm1-wdt` (:github:`109961`)
  * :dtcompatible:`nordic,npm10xx-wdt` (:github:`109381`)
  * :dtcompatible:`nordic,nrf-gswdt` (:github:`110067`)
  * :dtcompatible:`nuvoton,numaker-wdt` (:github:`105247`)
  * :dtcompatible:`realtek,ameba-watchdog` (:github:`106672`)
  * :dtcompatible:`realtek,bee-core-wdt` (:github:`107021`)
  * :dtcompatible:`silabs,wdog` (:github:`117617`)
  * :dtcompatible:`ti,mspm0-watchdog` (:github:`95304`)
  * :dtcompatible:`xen,watchdog` (:github:`117564`)

* Wi-Fi

  * :dtcompatible:`bflb,wifi4` (:github:`112911`)
  * :dtcompatible:`bflb,wifi6` (:github:`113078`)
  * :dtcompatible:`espressif,esp-hosted-mcu` (:github:`114532`)
  * :dtcompatible:`espressif,esp-hosted-mcu-wifi` (:github:`114532`)
  * :dtcompatible:`realtek,ameba-wifi` (:github:`105614`)
  * :dtcompatible:`st,st67w611m1` (:github:`111583`)
  * :dtcompatible:`zephyr,native-sim-wifi` (:github:`110681`)
  * :dtcompatible:`zephyr,wifi-hwsim` (:github:`111236`)

New Samples
***********

..
  Same as above, this will also be recomputed at the time of the release.
  Just link the sample, further details go in the sample documentation itself.

* :zephyr:code-sample:`adi-gpio-wakeup`
* :zephyr:code-sample:`adi-pm`
* :zephyr:code-sample:`assert`
* :zephyr:code-sample:`autanalog_fir_fifo`
* :zephyr:code-sample:`b-m2mem-pack1`
* :zephyr:code-sample:`bluetooth_cap_handover`
* :zephyr:code-sample:`buzzer-tone`
* :zephyr:code-sample:`clock-monitor-check-freq`
* :zephyr:code-sample:`clock-monitor-measure-freq`
* :zephyr:code-sample:`coap-client-tcp`
* :zephyr:code-sample:`color-palette`
* :zephyr:code-sample:`coredump-udp-demo-shell`
* :zephyr:code-sample:`coresight_stm_shell`
* :zephyr:code-sample:`cpu_freq_thermal_cap`
* :zephyr:code-sample:`cpu_freq_timing_noise`
* :zephyr:code-sample:`cs40l26`
* :zephyr:code-sample:`dali`
* :zephyr:code-sample:`dhcpv6-pd`
* :zephyr:code-sample:`esp32-ppa-srm`
* :zephyr:code-sample:`esp32-qdec-trigger`
* :zephyr:code-sample:`espnow`
* :zephyr:code-sample:`fido2`
* :zephyr:code-sample:`flow-meter`
* :zephyr:code-sample:`fota-http`
* :zephyr:code-sample:`frdm-mcxe31b-system-off`
* :zephyr:code-sample:`hash-bench`
* :zephyr:code-sample:`i2c-tiny-usb`
* :zephyr:code-sample:`lin-ncv7430`
* :zephyr:code-sample:`lin-ncv7430-responder`
* :zephyr:code-sample:`lora-duty-cycle`
* :zephyr:code-sample:`lp586x`
* :zephyr:code-sample:`mcp-server-hello-world`
* :zephyr:code-sample:`mfd_charger`
* :zephyr:code-sample:`mimxrt700_evk_system_off`
* :zephyr:code-sample:`mspi-throughput`
* :zephyr:code-sample:`net-rtp`
* :zephyr:code-sample:`nordic-flash`
* :zephyr:code-sample:`npm10xx_uicr`
* :zephyr:code-sample:`nxp_mcx_s2ram`
* :zephyr:code-sample:`nxp_mcx_system_off`
* :zephyr:code-sample:`nxp_rt700_dual_core_pm`
* :zephyr:code-sample:`nxp_smartdma_mem_to_mem`
* :zephyr:code-sample:`object_cores`
* :zephyr:code-sample:`object_monitor`
* :zephyr:code-sample:`precision_timing`
* :zephyr:code-sample:`pulse_io_byte_transfer`
* :zephyr:code-sample:`qdec_multi`
* :zephyr:code-sample:`quic-client-echo`
* :zephyr:code-sample:`quic-service-echo`
* :zephyr:code-sample:`riscv-aia-smp-uart-echo`
* :zephyr:code-sample:`riscv-aia-uart-echo`
* :zephyr:code-sample:`rpi-board-info`
* :zephyr:code-sample:`rpmsg-lite`
* :zephyr:code-sample:`rw612_pm_flash_check`
* :zephyr:code-sample:`sntp-server`
* :zephyr:code-sample:`spi-rtio-loopback`
* :zephyr:code-sample:`ssh-server-client`
* :zephyr:code-sample:`tad2144`
* :zephyr:code-sample:`tflite-neutron`
* :zephyr:code-sample:`tfm_fwu`
* :zephyr:code-sample:`tm6605`
* :zephyr:code-sample:`tmc6460`
* :zephyr:code-sample:`tracing-pipeline`
* :zephyr:code-sample:`tsn-switch`
* :zephyr:code-sample:`wifi-ble-provisioning`
* :zephyr:code-sample:`wifi-mesh`
* :zephyr:code-sample:`wifi-mesh-ip`
* :zephyr:code-sample:`x-nucleo-iks4a1-std-i3c`
* :zephyr:code-sample:`x-nucleo-pgeez1`
* :zephyr:code-sample:`xclk-wiz`
* :zephyr:code-sample:`zms-cycle-count`

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

* Crypto

  * Added AES CFB and OFB cipher mode support.

* Mbed TLS

  * Mbed TLS was updated to version 4.1.1. Release notes can be found
    `here <https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-4.1.1>`_.

  * TF-PSA-Crypto was updated to version 1.1.1. Release notes can be found
    `here <https://github.com/Mbed-TLS/TF-PSA-Crypto/releases/tag/tf-psa-crypto-1.1.1>`_.

  * Added :kconfig:option:`CONFIG_TF_PSA_CRYPTO_DISPATCH_DIR`, which enables TF-PSA-Crypto to use
    custom implementations of crypto operation dispatch. This makes hardware acceleration of
    cryptographic operations possible by using an accelerator-aware dispatch implementation.

* TF-M

  * TF-M was updated from version 2.2.2 to version 2.3.1. Release notes can be
    found at:

    * https://trustedfirmware-m.readthedocs.io/en/latest/releases/2.3.0.html
    * https://trustedfirmware-m.readthedocs.io/en/tf-mv2.3.1/releases/2.3.1.html

  * TF-M can now be compiled using LLVM by setting ``ZEPHYR_TOOLCHAIN_VARIANT``
    to ``zephyr/llvm``.

* DFU

  * Added :kconfig:option:`CONFIG_IMG_CUSTOM_SECTOR_SIZE` to allow MCUboot to use a different
    sector size for reducing the swap-using-offset status area size.

* Management

  * Added the :ref:`fota_http` library, a firmware-over-the-air client that
    downloads an MCUboot image over HTTP or HTTPS straight into the secondary
    slot, with optional resume, redirect following, SHA-256 verification and a
    ``fota`` shell command.

* LoRa / LoRaWAN

  * Added a native LoRaWAN backend
    (:kconfig:option:`CONFIG_LORA_MODULE_BACKEND_NATIVE`) that implements
    LoRaWAN 1.0.x Class A directly on top of the LoRa radio driver, without
    the Semtech LoRaMac-node dependency.  Currently supports the EU868 region.
  * :c:member:`lora_modem_config.sync_word`

* Networking

  * Added tracking of local ports bound through offloaded sockets
    (:kconfig:option:`CONFIG_NET_SOCKETS_OFFLOAD_PORT_TRACKING`). Offloaded
    sockets bind in the offload engine, outside the ``net_context`` layer, so
    :c:func:`net_context_port_in_use` could not see them. The socket layer now
    tracks those bindings and provides ``net_socket_port_in_use()`` to check
    both native and offloaded ports. mDNS probe port selection and DNS-SD
    service checks use this new function.

* Management

  * MCUmgr

    * The image management client now supports SHA-512 image digests. It can
      list and select images for testing or confirmation on targets built with
      :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_USES_SHA512`.
* Networking

  * CoAP

    * The CoAP server accepts an observe registration that carries an empty token, which
      :rfc:`7641` allows, and keys the observer on the endpoint and that empty token.

  * IGMP

    * Hosts now answer Group-Specific Queries, delay query responses by a random time within
      the Max Resp Time, retransmit the unsolicited report of a join and switch to IGMPv1 or
      IGMPv2 when a querier of that version is present, as required by :rfc:`2236` and :rfc:`3376`.
      The number of report transmissions follows the new
      :kconfig:option:`CONFIG_NET_IPV4_IGMP_ROBUSTNESS`. Queries without the IP Router Alert
      option are ignored when :kconfig:option:`CONFIG_NET_IPV4_IGMP_REQUIRE_ROUTER_ALERT`
      is enabled.

  * MLD

    * Nodes now answer Multicast Address Specific Queries, delay query responses by a random
      time within the Maximum Response Delay, retransmit the unsolicited report of a join,
      switch to MLDv1 when an MLDv1 querier is present and drop queries without a link-local
      source or the Router Alert option, as required by :rfc:`2710` and :rfc:`3810`. No report
      is sent for the all-nodes group any more, and all groups are reported again once the
      link-local address of the interface is valid. The number of report transmissions follows
      the new :kconfig:option:`CONFIG_NET_IPV6_MLD_ROBUSTNESS`, and disabling the new
      :kconfig:option:`CONFIG_NET_IPV6_MLD_V1_COMPAT` makes the node ignore MLDv1 messages.

* Secure Storage

  * The ``psa_its_get*()`` functions now return ``PSA_ERROR_INVALID_SIGNATURE`` or
    ``PSA_ERROR_DATA_CORRUPT`` for an entry that fails authentication or is malformed,
    instead of ``PSA_ERROR_GENERIC_ERROR``.

  * The ITS operations that modify an entry are now serialized, and discarding an entry
    that cannot be read back is logged as a warning.

  * ``psa_its_get()`` called with a ``data_size`` of 0 now reports whether the entry exists
    and is valid instead of always returning ``PSA_SUCCESS``.

* Multimedia Pipeline

  * Introducing :ref:`mpipe`, a new subsystem for building multimedia
    applications out of reusable elements - sources, transforms and sinks -
    linked together into a pipeline. It lets an application describe the media
    flow it wants instead of driving each audio, video or display device itself.

* Precision timing

  * Introducing :ref:`precision_timing`, experimental reusable mechanisms for PTP, gPTP and other
    users of high-resolution clocks: checked time arithmetic, clock operations and PI control.

* Video

  * Introducing a video subsystem that inherits all the function names previously in
    video drivers.

* Zbus

  * :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION` now works without requiring
    a dedicated pool on every channel (channels fall back to the shared pool until
    :c:func:`zbus_chan_set_msg_sub_pool` is called)

* __assert

   * ``__ASSERT_ON`` define has been removed.


Devicetree
**********
* Nodes can now use phandles to refer to their children without causing a cycle in the
  dependency graph and a build error. See :ref:`dt-bindings-dependency-mode` how to
  use this new feature. (:github:`108892`)

  * :c:macro:`DT_NODELABEL_C_TOKEN`
  * :c:macro:`DT_NODELABEL_C_TOKEN_BY_IDX`

* Bindings can declare device class membership with the new ``class:`` key
  (see :ref:`dt-bindings-class`), enabling build-time enumeration of all
  nodes of a device class:

  * :c:macro:`DT_NODE_HAS_CLASS`
  * :c:macro:`DT_HAS_CLASS_STATUS_OKAY`
  * :c:macro:`DT_NUM_CLASS_STATUS_OKAY`
  * :c:macro:`DT_FOREACH_CLASS_STATUS_OKAY`
  * :c:macro:`DT_FOREACH_CLASS_STATUS_OKAY_VARGS`
  * The ``$(dt_class_enabled,<class name>)`` Kconfig preprocessor function

* The ADC shell now enumerates ADC controllers through the ``adc`` device
  class instead of a hardcoded list of compatibles, so it also covers
  out-of-tree ADC drivers.

* The I3C shell now enumerates I3C controllers through the ``i3c`` device
  class instead of a hardcoded list of compatibles, so it also covers
  out-of-tree I3C drivers.

Other notable changes
*********************

* ADC

  * STM32 ADC driver (:dtcompatible:`st,stm32-adc`): when
    :kconfig:option:`CONFIG_ADC_STM32_VREFINT_CALIBRATE` is enabled,
    :c:func:`adc_ref_internal` may return a measured scale instead of DT
    ``vref-mv``. Any ADC named by an :dtcompatible:`st,stm32-vref`
    ``io-channels`` property can take that measurement; the result is
    cached SoC-wide. See the :ref:`migration guide<migration_4.5>` ADC section.

  * STM32G4 SoC dtsi files now describe the extra VREFINT inputs that exist in
    silicon: :dtcompatible:`st,stm32-vref` ``vref3`` (ADC3, G491 and up),
    ``vref4`` and ``vref5`` (ADC4/ADC5, G473 and up). Nodes stay disabled;
    boards enable the instance they use. ADC2 has no VREFINT mux.

* Bluetooth

  * :kconfig:option:`CONFIG_SYSTEM_WORKQUEUE_PRIORITY` is no longer forced to a
    cooperative priority by :kconfig:option:`CONFIG_BT` alone. Only the components
    that submit work to the system workqueue require it now, so a build without any
    of them, such as an HCI raw image driving an external controller, can select a
    preemptible priority again (:github:`119123`).

* Build system

  * The minimum required CMake version has been raised to 3.28.0, a version satisfied by the CMake package in the
    Ubuntu 24.04 LTS package repositories. See the :ref:`migration guide <migration_4.5>` for
    options if your distribution ships an older version.

  * The :ref:`hardening tool <hardening>` (``west build -t hardenconfig``) now sources its
    recommendations from a schema-validated YAML database instead of a CSV file: profiles in
    :file:`scripts/kconfig/hardening.yaml` and per-subsystem ``hardening.yaml`` fragments living
    next to the Kconfig files they relate to. Every recommendation now carries a rationale,
    displayed in the report, and may reference CWE/CVE entries; recommendations are grouped into
    profiles (``base`` and ``strict``, selectable with ``-DHARDENCONFIG_PROFILE=``); integer
    recommendations can express minimum/maximum constraints; JSON output and a failing exit code
    are available for CI use; and out-of-tree databases can be layered with
    ``-DHARDENCONFIG_EXTRA_SOURCES=``. The database is validated in CI against the actual Kconfig
    tree so entries can no longer go stale.

* Kernel

  * The :ref:`object core framework <object_cores_api>` no longer keeps registry state inside
    the objects it tracks. Statically defined objects are enumerated in place and objects
    initialized at run time are referenced from a bounded registry, so a kernel object may be
    declared on a stack, embedded in freed memory or initialized again without corrupting the
    registry. Objects in stack storage are not tracked.

  * :kconfig:option:`CONFIG_SCHED_CPU_MASK` no longer depends on
    :kconfig:option:`CONFIG_SCHED_SIMPLE`.  CPU affinity masks are now
    supported on all three scheduler backends: ``SCHED_SIMPLE`` (O(N) list
    scan), ``SCHED_SCALABLE`` (O(N) red/black tree walk), and ``SCHED_MULTIQ``
    (O(P·N) per-priority bucket scan).  See the updated
    :ref:`SMP documentation<smp_cpu_mask>` for per-backend performance notes.

  * :kconfig:option:`CONFIG_SCHED_CPU_MASK_PIN_ONLY` now enforces the
    one-CPU-bit invariant at both the API boundary (``cpu_mask_mod()``) and at
    queue time (``thread_runq()``).  Calling :c:func:`k_thread_cpu_mask_clear`,
    :c:func:`k_thread_cpu_mask_enable_all`, or
    :c:func:`k_thread_cpu_mask_disable` in PIN_ONLY mode triggers an assertion
    failure.  Use :c:func:`k_thread_cpu_pin` to reassign a thread to a
    different CPU.

* Timer

  * With :kconfig:option:`CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE` enabled, a driver may no
    longer stop its time base as soon as no timeout is pending, if that breaks
    :c:func:`sys_clock_cycle_get_32` / :c:func:`sys_clock_cycle_get_64`. Those must
    keep counting while the CPU runs. Stopping the time base is permitted only from
    :c:func:`sys_clock_idle_enter`, where :c:func:`sys_clock_idle_exit` is
    guaranteed to follow.

  * Tickless system-timer drivers can now be built on a shared implementation
    header, :file:`drivers/timer/system_timer_generic.h`, which owns the tick
    accounting each driver previously open-coded: the cycle-to-tick conversion,
    the announce baseline, the tick-aligned deadline and the counter wrap and
    range handling. A driver reduces to a few cycle-domain primitives, a
    cycle-counter read plus an absolute-compare arm. See the
    :ref:`migration guide <migration_4.5>` for how to use it (:github:`115844`).

* Networking

  * The DHCPv4 client now takes the leased address, the lease's DNS servers and
    the gateway it installed off the interface on every path that gives a lease
    up, and waits about ten seconds before restarting after a refused request
    or a declined address.

* Wi-Fi

  * Removed the ``samples/net/wifi/test_certs/rsa2k`` enterprise test
    certificates (DES-encrypted private keys). Use ``rsa2k_no_des`` instead.

  * The connection result event can now say that the access point rejected the
    authentication or the association, through the new
    :c:enumerator:`WIFI_STATUS_CONN_AUTH_REJECT` and
    :c:enumerator:`WIFI_STATUS_CONN_ASSOC_REJECT` values, and
    :c:struct:`wifi_status` carries the raw IEEE 802.11 status and reason codes
    behind the failure. The supplicant fills these in, and the Wi-Fi shell prints
    them with the connection and disconnection results. (:github:`116704`)

  * The ESP32 Wi-Fi driver gained 802.11k/v/r and MBO support, all off by
    default. :kconfig:option:`CONFIG_ESP32_WIFI_11KV_SUPPORT` turns on 802.11k
    and 802.11v, :kconfig:option:`CONFIG_ESP32_WIFI_MBO_SUPPORT` turns on MBO
    on top of them, and :kconfig:option:`CONFIG_ESP32_WIFI_11R_SUPPORT` turns
    on 802.11r. The ``wifi 11k`` and ``wifi 11v_btm_query`` shell commands now
    work on ESP32 while the station is associated, and
    :kconfig:option:`CONFIG_ESP32_WIFI_SIGNAL_CHANGE_EVENT` raises
    :c:macro:`NET_EVENT_WIFI_SIGNAL_CHANGE` when the signal of the connected
    access point weakens, for an application that decides when to roam.

  * The transmit power ceiling properties in ``wifi-tx-power-2g.yaml`` and
    ``wifi-tx-power-5g.yaml`` are no longer ``required`` and now carry
    conservative defaults, so a board that has not been characterised errs on
    the side of transmitting too little rather than exceeding a regulatory
    limit. Boards that have measured their own limits continue to state them
    explicitly, so no board changes behaviour.

  * P2P gained shell commands to set the local device name and to query the
    current P2P status, backed by the new :c:enumerator:`WIFI_P2P_SET_DEV_NAME`
    and :c:enumerator:`WIFI_P2P_STATUS` :c:enum:`wifi_p2p_op` operations. The
    corresponding ``device_name`` and ``status`` members were added to
    :c:struct:`wifi_p2p_params`, along with the new
    :c:macro:`WIFI_P2P_STATUS_BUF_SIZE` buffer-size macro.

* MCUboot

  * :kconfig:option:`SB_CONFIG_BOOT_SIGNATURE_KEY_FILE` now accepts a comma-separated list of
    key files, embedding the public half of each in the MCUboot bootloader. When more
    than one key is given, MCUboot accepts an image signed with any of them -- the
    typical use is a development bootloader that boots both development- and
    production-signed images, while production bootloaders embed only the production
    key. The first entry is the key the application is signed with and the rest are
    verification-only public keys. See :ref:`build-signing`.

  * Espressif boards no longer force overwrite-only mode and unsigned images under sysbuild.
    They now build a swap-using-offset MCUboot with rollback and an RSA-2048 signed
    application, and the shared Espressif partition tables no longer reserve a scratch
    partition. See the :ref:`migration guide <migration_4.5>`.

* NXP

  * The NXP LPC DTSI files have been reorganized from the flat
    ``dts/arm/nxp/lpc/`` directory into per-series subdirectories
    (``lpc11u6x/``, ``lpc51u68/``, ``lpc54xxx/``, ``lpc55xxx/``, ``lpc84x/``).
    See the :ref:`migration guide <migration_4.5>` for how to update out-of-tree
    board includes.

  * The NXP Kinetis DTSI files have been reorganized from the flat
    ``dts/arm/nxp/kinetis/`` directory into per-series subdirectories
    (``k2x/``, ``k32lx/``, ``k6x/``, ``k8x/``, ``ke1xf/``, ``ke1xz/``,
    ``kl2x/``, ``kv5x/``, ``kwx/``).
    See the :ref:`migration guide <migration_4.5>` for how to update
    out-of-tree board includes.

  * The NXP MCX DTSI files have been reorganized from the flat
    ``dts/arm/nxp/mcx/`` directory into per-series subdirectories
    (``mcxa/``, ``mcxc/``, ``mcxe/``, ``mcxl/``, ``mcxn/``, ``mcxw/``).
    See the :ref:`migration guide <migration_4.5>` for how to update
    out-of-tree board includes.

  * The NXP i.MX RT DTSI files have been reorganized from the flat
    ``dts/arm/nxp/imxrt/`` directory into per-series subdirectories
    (``imxrt10xx/``, ``imxrt11xx/``, ``imxrt5xx/``, ``imxrt6xx/``,
    ``imxrt7xx/``, ``imxrt118x/``).
    See the :ref:`migration guide <migration_4.5>` for how to update
    out-of-tree board includes.

* Arm

  * The non-secure variant of
      :zephyr:board:`Arm Musca-S1 <v2m_musca_s1>` (``v2m_musca_s1/musca_s1/ns``)
      has been removed due to TF-M removing platform support for this board.

  * As a consequence of the above, the secure variant of
    :zephyr:board:`Arm Musca-S1 <v2m_musca_s1>` (``v2m_musca_s1``) has been deprecated.
    This is to avoid a confusing state of partial support.

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

Trusted Firmware-A
******************

* ``CONFIG_TFA_BUILD_FIP`` is introduced to configure FIP (Firmware Image Package) generation.
  FIP generation is by default disabled, but can be enabled by setting ``CONFIG_TFA_BUILD_FIP=y``
  in ``prj.conf`` or for custom boards, in the board's ``<board>_defconfig`` file.

---

### Doc Releases Release Notes 4.6 (`doc/releases/release-notes-4.6.rst`)

:orphan:

..
  What goes here: removed/deprecated apis, new boards, new drivers, notable
  features. If you feel like something new can be useful to a user, put it
  under "Other Enhancements" in the first paragraph, if you feel like something
  is worth mentioning in the project media (release blog post, release
  livestream) put it under "Major enhancement".
..
  If you are describing a feature or functionality, consider adding it to the
  actual project documentation rather than the release notes, so that the
  information does not get lost in time.
..
  No list of bugfixes, minor changes, those are already in the git log, this is
  not a changelog.
..
  Does the entry have a link that contains the details? Just add the link, if
  you think it needs more details, put them in the content that shows up on the
  link.
..
  Are you thinking about generating this? Don't put anything at all.
..
  Does the thing require the user to change their application? Put it on the
  migration guide instead. (TODO: move the removed APIs section in the
  migration guide)

.. _zephyr_4.6:

Zephyr 4.6.0 (Working Draft)
############################

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

Major enhancements with this release include:

An overview of the changes required or recommended when migrating your application from Zephyr
v4.5.0 to Zephyr v4.6.0 can be found in the separate :ref:`migration guide<migration_4.6>`.

The following sections provide detailed lists of changes by component.

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

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

..
  Only removed, deprecated and new APIs. Changes go in migration guide.

Removed APIs and options
========================

Deprecated APIs and options
===========================

New APIs and options
====================
..
  Link to new APIs here, in a group if you think it's necessary, no need to get
  fancy just list the link, that should contain the documentation. If you feel
  like you need to add more details, add them in the API documentation code
  instead.

.. zephyr-keep-sorted-start re(^\* \w) ignorecase

.. zephyr-keep-sorted-stop

.. _boards_added_in_zephyr_4_6:

New Boards
**********

..
  You may update this list as you contribute a new board during the release cycle, in order to make
  it visible to people who might be looking at the working draft of the release notes. However, note
  that this list will be recomputed at the time of the release, so you don't *have* to update it.
  In any case, just link the board, further details go in the board description.

.. _shields_added_in_zephyr_4_6:

New Shields
***********

..
  Same as above, this will also be recomputed at the time of the release.

New Drivers
***********

..
  Same as above, this will also be recomputed at the time of the release.
  Just link the driver, further details go in the binding description

New Samples
***********

..
  Same as above, this will also be recomputed at the time of the release.
  Just link the sample, further details go in the sample documentation itself.

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

Other notable changes
*********************

..
  Any more descriptive subsystem or driver changes. Do you really want to write
  a paragraph or is it enough to link to the api/driver/Kconfig/board page above?

---

### Doc Safety Index (`doc/safety/index.rst`)

.. _safety_section:

Safety
######

These documents describe the processes, developer guidelines and requirements
for ensuring safety is addressed within the Zephyr project.

.. toctree::
   :maxdepth: 1
   :glob:

   safety_overview.rst
   safety_requirements/index

---

### Doc Safety Safety Overview (`doc/safety/safety_overview.rst`)

.. _safety_overview:

Zephyr Safety Overview
########################

Introduction
************

This document is the safety documentation providing an overview over the safety-relevant activities
and what the Zephyr Project and the Zephyr Safety Working Group / Committee try to achieve.

This overview is provided for people who are interested in the functional safety development part
of the Zephyr RTOS and project members who want to contribute to the safety aspects of the
project.

Overview
********

In this section we give the reader an overview of what the general goal of the safety certification
is, what standard we aim to achieve and what quality standards and processes need to be implemented
to reach such a safety certification.

Safety Document update
**********************

This document is a living document and may evolve over time as new requirements, guidelines, or
processes are introduced.

#. Changes will be submitted from the interested party(ies) via pull requests to the Zephyr
   documentation repository.

#. The Zephyr Safety Committee will review these changes and provide feedback or acceptance of
   the changes.

#. Once accepted, these changes will become part of the document.

.. _general_safety_scope:

General safety scope
********************

The general scope of the Safety Committee is to achieve a certification for the `IEC 61508
<https://en.wikipedia.org/wiki/IEC_61508>`__ standard and the Safety Integrity Level (SIL) 3 /
Systematic Capability (SC) 3 for a limited source scope (see certification scope TBD). Since the
code base is pre-existing, we use the route 3s/1s approach defined by the IEC 61508 standard.

Route 3s
   *Assessment of non-compliant development. Which is basically the route 1s with existing
   sources.*

Route 1s
   *Compliant development. Compliance with the requirements of this standard for the avoidance and
   control of systematic faults in software.*

Summarization IEC 61508 standard
================================

The IEC 61508 standard is a widely recognized international standard for functional safety of
electrical, electronic, and programmable electronic safety-related systems. Here's an overview of
some of the key safety aspects of the standard:

#. **Hazard and Risk Analysis**: The IEC 61508 standard requires a thorough analysis of potential
   hazards and risks associated with a system in order to determine the appropriate level of safety
   measures needed to reduce those risks to acceptable levels.

#. **Safety Integrity Level (SIL)**: The standard introduces the concept of Safety Integrity Level
   (SIL) to classify the level of risk reduction required for each safety function. The higher the
   SIL, the greater the level of risk reduction required.

#. **System Design**: The IEC 61508 standard requires a systematic approach to system design that
   includes the identification of safety requirements, the development of a safety plan, and the
   use of appropriate safety techniques and measures to ensure that the system meets the required
   SIL.

#. **Verification and Validation**: The standard requires rigorous testing and evaluation of the
   safety-related system to ensure that it meets the specified SIL and other safety requirements.
   This includes verification of the system design, validation of the system's functionality, and
   ongoing monitoring and maintenance of the system.

#. **Documentation and Traceability**: The IEC 61508 standard requires a comprehensive
   documentation process to ensure that all aspects of the safety-related system are fully
   documented and that there is full traceability from the safety requirements to the final system
   design and implementation.

Overall, the IEC 61508 standard provides a framework for the design, development, and
implementation of safety-related systems that aims to reduce the risk of accidents and improve
overall safety. By following the standard, organizations can ensure that their safety-related
systems are designed and implemented to the highest level of safety integrity.

Why IEC 61508?
==============
The IEC 61508 standard was selected because it serves as a foundational functional safety standard
applicable across various industry sectors. It provides a robust framework that can be used as
base for specific standards for different industries. This makes IEC 61508 particularly relevant
for Zephyr, as the operating system's versatility allows it to be effectively utilized across a
wide range of industry sectors.

The following diagram illustrates the relationship between the IEC 61508 standard and other related
standards:

.. figure:: images/IEC-61508-basis.svg
   :align: center
   :alt: IEC 61508 relation to other standards
   :figclass: align-center

   IEC 61508 relation to other standards

Quality
*******

Quality is a mandatory expectation for software across the industry. The code base of the project
must achieve various software quality goals in order to be considered an auditable code base from a
safety perspective and to be usable for certification purposes. But software quality is not an
additional requirement caused by functional safety standards. Functional safety considers quality
as an existing pre-condition and therefore the "quality managed" status should be pursued for any
project regardless of the functional safety goals. The following list describes the quality goals
which need to be reached to achieve an auditable code base:

1. Basic software quality standards

   a. :ref:`coding_guidelines` (including: static code analysis, coding style, etc.)
   b. :ref:`safety_requirements` and requirements tracing
   c. Test coverage

2. Software architecture design principles

   a. Layered architecture model
   b. Encapsulated components
   c. Encapsulated single functionality (if not fitable and manageable in safety)

Basic software quality standards - Safety view
==============================================

In this chapter the Safety Committee describes why they need the above listed quality goals as
pre-condition and what needs to be done to achieve an auditable code base from the safety
perspective. Generally speaking, it can be said that all of these quality measures regarding safety
are used to minimize the error rate during code development.

Coding Guidelines
-----------------

The coding guidelines are the basis to a common understanding and a unified ruleset and development
style for industrial software products. For safety the coding guidelines are essential and have
another purpose beside the fact of a unified ruleset. It is also necessary to prove that the
developers follow a unified development style to prevent **systematic errors** in the process of
developing software and thus to minimize the overall **error rate** of the complete software
system.

Also the **IEC 61508 standard** sets a pre-condition and recommendation towards the use of coding
standards / guidelines to reduce likelihood of errors.

The project TSC and the Safety Committee of the project agreed to implement
a staged and incremental approach for complying with a set of coding rules (AKA
Coding Guidelines) to improve quality and consistency of the code base. Below
are the agreed upon stages:

Stage I (COMPLETED)
  Coding guideline rules are available to be followed and referenced,
  but not enforced. Rules are not yet enforced in CI and pull-requests cannot be
  blocked by reviewers/approvers due to violations.

Stage II
  Reviewers/approvers can block pull-requests due to violations of the coding guidelines
  in pull-requests across the codebase.

  Begin enforcement on a limited scope of the code base. Initially, this would be
  the safety certification scope. For rules easily applied across codebase, we
  should not limit compliance to initial scope. This step requires tooling,
  CI setup and an enforcement strategy.

Stage III
  Revisit the coding guideline rules and based on experience from previous
  stages, refine/iterate on selected rules.

Stage IV
   Expand enforcement to the wider codebase. Exceptions may be granted on some
   areas of the codebase with a proper justification. Exception would require
   TSC approval.

.. note::

    Coding guideline rules may be removed/changed at any time by filing a
    GH issue/RFC.

.. important::

    **Current stage:**
    The prerequisites to complete **Stage II** are currently being looked at:
    The tooling is in evaluation, CI setup and `enforcement strategy
    <https://github.com/zephyrproject-rtos/zephyr/issues/58903>`__ is being worked on.

Requirements and requirements tracing
-------------------------------------

Requirements and requirement management are not only important for software development, but also
very important in terms of safety. On the one hand, this specifies and describes in detail and on a
technical level what the software should do, and on the other hand, it is an important and
necessary tool to verify whether the described functionality is implemented as expected. For this
purpose, tracing the requirements down to the code level is used. With the requirements management
and tracing in hand, it can now be verified whether the functionality has been tested and
implemented correctly, thus minimizing the systematic error rate.

Also the IEC 61508 standard highly recommends (which is like a must-have for the certification)
requirements and requirements tracing.

Test coverage
-------------

A high test coverage, in turn, is evidence of safety that the code conforms precisely to what it
was developed for and does not execute any unforeseen instructions. If the entire code is tested
and has a high (ideally 100%) test coverage, it has the additional advantage of quickly detecting
faulty changes and further minimizing the error rate. However, it must be noted that different
requirements apply to safety for test coverage, and various metrics must be considered, which are
prescribed by the IEC 61508 standard for the SIL 3 / SC3 target. The following must be fulfilled,
among other things:

* Structural test coverage (entry points) 100%
* Structural test coverage (statements) 100%
* Structural test coverage (branches) 100%

If the 100% cannot be reached (e.g. statement coverage of defensive code) that part needs to be
described and justified in the documentation.

Software architecture design principles
=======================================

To create and maintain a structured software product it is also necessary to consider individual
software architecture designs and implement them in accordance with safety standards because some
designs and implementations are not reasonable in safety, so that the overall software and code
base can be used as auditable code. However, most of these software architecture designs have
already been implemented in the Zephyr project and need to be verified by the Safety Committee /
Safety Working Group and the safety architect.

Layered architecture model
--------------------------

The **IEC 61508 standard** strongly recommends a modular approach to software architecture. This
approach has been pursued in the Zephyr project from the beginning with its layered architecture.
The idea behind this architecture is to organize modules or components with similar functionality
into layers. As a result, each layer can be assigned a specific role in the system. This model has
the advantage in safety that interfaces between different components and layers can be shown at a
very high level, and thus it can be determined which functionalities are safety-relevant and can be
limited. Furthermore, various analyses and documentations can be built on top of this architecture,
which are important for certification and the responsible certification body.

Encapsulated components
-----------------------

Encapsulated components are an essential part of the architecture design for safety at this point.
The most important aspect is the separation of safety-relevant components from non-safety-relevant
components, including their associated interfaces. This ensures that the components have no
**repercussions** on other components.

Encapsulated single functionality (if not reasonable and manageable in safety)
------------------------------------------------------------------------------

Another requirement for the overall system and software environment is that individual
functionalities can be disabled within components. This is because if a function is absolutely
unacceptable for safety (e.g. complete dynamic memory management), then these individual
functionalities should be able to be turned off. The Zephyr Project already offers such a
possibility through the use of Kconfig and its flexible configurability.

Processes and workflow
**********************

.. figure:: images/zephyr-safety-process.svg
   :align: center
   :alt: Safety process and workflow overview
   :figclass: align-center

   Safety process and workflow overview

The diagram describes the rough process defined by the Safety Committee to ensure safety in the
development of the Zephyr project. To ensure understanding, a few points need to be highlighted and
some details explained regarding the role of the safety architect and the role of the safety
committee in the whole process. The diagram only describes the paths that are possible when a
change is related to safety.

#. On the main branch, the safety scope of the project should be identified, which typically
   represents a small subset of the entire code base. This subset should then be made auditable
   during normal development on “main”, which means that special attention is paid to quality goals
   (`Quality`_) and safety processes within this scope. The Safety Architect works alongside the
   Technical Steering Committee (TSC) in this area, monitoring the development process to ensure
   that the architecture meets the safety requirements.

#. At this point, the safety architect plays an increasingly important role. For PRs/issues that
   fall within the safety scope, the safety architect should ideally be involved in the discussions
   and decisions of minor changes in the safety scope to be able to react to safety-relevant
   changes that are not conformant. If a pull request or issue introduces a significant and
   influential change or improvement that requires extended discussion or decision-making, the
   safety architect should bring it to the attention of the Safety Committee or the Technical
   Steering Committee (TSC) as appropriate, so that they can make a decision on the best course of
   action.

#. This section describes the certification side. At this point, the code base has to be in an
   "auditable" state, and ideally no further changes should be necessary or made to the code base.
   There is still a path from the main branch to this area. This is needed in case a serious bug or
   important change is found or implemented on the main branch in the safety scope, after the LTS
   and the auditable branch were created. In this case, the Safety Committee, together with the
   safety architect, must decide whether this bug fix or change should be integrated into the LTS
   so that the bug fix or change could also be integrated into the auditable branch. This
   integration can take three forms: First either as only a code change or second as only an update
   to the safety documentation or third as both.

#. This describes the necessary safety process required for certification itself. Here, the final
   analyses, tests, and documents are created and conducted which must be created and conducted
   during the certification, and which are prescribed by the certifying authority and the standard
   being certified. If the certification body approves everything at this stage and the safety
   process is completed, a safety release can be created and published.

#. This transition from the auditable branch to the main branch should only occur in exceptional
   circumstances, specifically when something has been identified during the certification process
   that needs to be quickly adapted on the “auditable” branch in order to obtain certification. In
   order to prevent this issue from arising again during the next certification, there needs to be
   a path to merge these changes back into the main branch so that they are not lost, and to have
   them ready for the next certification if necessary.

.. important::
   Safety should not block the project and minimize the room to grow in any way.

.. important::
   **TODO:** Find and define ways, guidelines and processes which minimally impact the daily work
   of the maintainers, reviewers and contributors and also the safety architect itself.
   But which are also suitable for safety.

---

### Doc Security Control Flow Integrity (`doc/security/control-flow-integrity.rst`)

.. _control_flow_integrity:

Control Flow Integrity
######################

Control Flow Integrity (CFI) is a security feature that ensures that the control flow of a program follows a predefined path, preventing attackers from diverting execution to malicious code. CFI is particularly useful in defending against control flow hijacking attacks, such as return-oriented programming (ROP) and jump-oriented programming (JOP).

CFI works by validating the control flow of a program at runtime, ensuring that function calls and returns are made to legitimate targets. This is typically achieved through instrumentation of the code, which adds checks to verify that the control flow adheres to the expected paths defined by the program's control flow graph.

Forward and return edges
------------------------

In the context of CFI, control flow edges can be categorized into two types:

1. **Forward edges**: These represent the flow of control from one function to another, such as a function call. Forward edges are typically validated to ensure that the target of a call is a legitimate function within the program.
2. **Return edges**: These represent the return from a function back to the caller. Return edges are validated to ensure that the return address is legitimate and corresponds to a valid call site.

Forward edges can be supported by compiler instrumentation, which adds checks to verify that the target of a function call is valid. Return edges can be supported by maintaining a shadow stack or using other mechanisms to ensure that return addresses are legitimate.

Zephyr does support maintaining a shadow stack which can be enabled via :kconfig:option:`CONFIG_HW_SHADOW_STACK`. Then, the kernel will use macros like :c:macro:`K_THREAD_HW_SHADOW_STACK_DEFINE`, in tandem with other thread stack related macros, to provide the area for shadow stacks used by threads. Usually, applications only need to enable :kconfig:option:`CONFIG_HW_SHADOW_STACK` (and related ones, such as :kconfig:option:`CONFIG_HW_SHADOW_STACK_PERCENTAGE_SIZE` and :kconfig:option:`CONFIG_HW_SHADOW_STACK_MIN_SIZE`) to enable shadow stack support. The kernel will then automatically manage the shadow stack for each thread.

Implementation details
**********************

The ``K_THREAD_HW_SHADOW_STACK*`` family of macros does a minimal setup of the shadow stack parameters. Then, they invoke arch-specific ``ARCH_THREAD_HW_SHADOW_STACK*`` macros to perform the actual setup.

Hardware support
----------------

While CFI can be implemented in software, hardware support can significantly enhance its effectiveness and performance. Currently, Zephyr supports Intel Control-flow Enforcement Technology (CET), which provides hardware-based support for CFI.

Intel CET
*********

Intel Control-flow Enforcement Technology (CET) is a set of hardware features that enhance the security of applications by providing support for CFI. CET includes two main components:

1. **Shadow Stack**: This feature maintains a separate stack for return addresses, ensuring that return addresses cannot be tampered with. When a function returns, the return address is popped from the shadow stack and compared to that of the regular stack, providing an additional layer of protection against control flow hijacking.
2. **Indirect Branch Tracking (IBT)**: This feature tracks indirect branches (such as function pointers) and ensures that they only target valid locations in the code. It prevents attackers from redirecting execution to arbitrary code through techniques like ROP.

These two features proved the return and forward edge validation, respectively. To enable shadow stack support in Zephyr, on supported hardware, you can use the :kconfig:option:`CONFIG_HW_SHADOW_STACK` Kconfig option. To enable IBT, use :kconfig:option:`CONFIG_X86_CET_IBT`.

As IBT is effectively implemented by the compiler, toolchain support is necessary. Currently, Zephyr SDK x86 toolchain can be used to build applications with IBT support. However, their precompiled artifacts, such as ``libc`` and ``libgcc``, do not have IBT enabled. Therefore, for ``libc``, one needs to build it as a module, for example, by using :kconfig:option:`CONFIG_PICOLIBC_USE_MODULE`. For other bits, one would need a custom toolchain.

Intel CET Limitations
^^^^^^^^^^^^^^^^^^^^^

Currently, the shadow stacks that are created behind the scenes live on the global namespace. Thus, one *cannot* reuse thread stack names, even across different compilation units.

ARM Pointer Authentication and Branch Target Identification
*************************************************************

ARM platforms provide hardware-based CFI features through Pointer Authentication (PAC) and Branch Target Identification (BTI), available on both Cortex-M and ARM64 (Cortex-A/R) architectures:

1. **Pointer Authentication (PAC)**: Signs return addresses and other pointers using cryptographic signatures. When a return address is pushed to the stack, it is signed with a key unique to each thread. Before returning, the signature is verified, ensuring the return address has not been tampered with. This protects against Return-Oriented Programming (ROP) attacks. Available in ARMv8.1-M Mainline (Cortex-M) and ARMv8.3-A and later (ARM64).

2. **Branch Target Identification (BTI)**: Marks legitimate indirect branch targets with special BTI landing pad instructions. The processor verifies that indirect branches land only on valid targets marked with BTI instructions. This protects against Jump-Oriented Programming (JOP) attacks. Available in ARMv8.1-M Mainline (Cortex-M) and ARMv8.5-A and later (ARM64).

These features provide return and forward edge validation, respectively. PAC and BTI can be enabled via the :kconfig:option:`ARM_PACBTI` menu. Available options include :kconfig:option:`CONFIG_ARM_PACBTI_STANDARD` (both PAC and BTI), :kconfig:option:`CONFIG_ARM_PACBTI_PACRET` (PAC only), :kconfig:option:`CONFIG_ARM_PACBTI_BTI` (BTI only), and other variants. Both features can be used independently or combined for comprehensive control flow integrity.

Like x86 CET IBT, these features require compiler support and proper C library instrumentation. PAC requires that functions use the appropriate signing and verification instructions, while BTI requires that all legitimate branch targets include BTI landing pad instructions. Precompiled C libraries from toolchains typically lack this instrumentation.

For BTI support, the C library must be compiled with ``-mbranch-protection`` flags to include BTI landing pads in all functions. Therefore, when using any option that enables BTI, only :kconfig:option:`CONFIG_MINIMAL_LIBC` or picolibc built as a module via :kconfig:option:`CONFIG_PICOLIBC_USE_MODULE` can be used. Newlib from toolchains is not supported with BTI.

PAC has less strict requirements as it primarily affects function prologues and epilogues, but for optimal security, building the C library with PAC support is recommended.

---

### Doc Security Hardening Tool (`doc/security/hardening-tool.rst`)

.. _hardening:

Hardening Tool
##############

Before launching a product, it's crucial to ensure that your software is as secure as possible. This
process, known as "hardening", involves strengthening the security of a system to protect it from
potential threats and vulnerabilities.

At a high-level, hardening a Zephyr application can be seen as a two-fold process:

#. Disabling features and compilation flags that might lead to security vulnerabilities (ex. making
   sure that no "experimental" features are being used, disabling features typically used for
   debugging purposes such as assertions, shell, etc.).
#. Enabling optional features that can lead to improve security (ex. stack sentinel, hardware stack
   protection, etc.). Some of these features might be hardware-dependent.

To simplify this process, Zephyr offers a **hardening tool** designed to analyze an application's
configuration against the **hardening database**, a set of recommendations curated by the Zephyr
**Security Working Group**. The tool looks at the Kconfig options in the build target and provides
tailored suggestions and recommendations to adjust security-related options, along with the
rationale behind each recommendation.

Usage
*****

.. zephyr-app-commands::
    :tool: all
    :zephyr-app: samples/hello_world
    :board: reel_board
    :goals: hardenconfig

The output should be similar to the table below. For each configuration option set to a value that
could lead to a security vulnerability, the table will propose a recommended value that should be
used instead, together with the reason the option matters.

.. code-block:: console

   Hardening report for profile: strict
   +------------------------------+-----------+---------------+----------------+--------------------------------------------------+
   | Name                         | Current   | Recommended   | Check result   | Rationale                                        |
   +==============================+===========+===============+================+==================================================+
   | CONFIG_BUILD_OUTPUT_STRIPPED | n         | y             | FAIL           | Produces a stripped copy of the ELF next to the  |
   |                              |           |               |                | unstripped one, so a product that distributes or |
   |                              |           |               |                | flashes the ELF itself ships no symbol names or  |
   |                              |           |               |                | debug information for an attacker to work from.  |
   |                              |           |               |                | Both files are built; deploying the stripped one |
   |                              |           |               |                | remains the user's responsibility.               |
   +------------------------------+-----------+---------------+----------------+--------------------------------------------------+
   | CONFIG_STACK_SENTINEL        | n         | y             | FAIL           | Places a software sentinel value at the end of   |
   |                              |           |               |                | each thread stack and checks it at context       |
   |                              |           |               |                | switches, catching overflows on hardware without |
   |                              |           |               |                | MPU/MMU stack protection.                        |
   +------------------------------+-----------+---------------+----------------+--------------------------------------------------+

Options that are not applicable to the current target (for example, MPU-based protections on
hardware without an MPU, or options with no visible prompt in the current configuration) are not
reported.

In addition to the database-driven checks, the tool flags any enabled option that is marked in
Kconfig itself as experimental, deprecated or not secure (i.e. options selecting
:kconfig:option:`CONFIG_EXPERIMENTAL`, :kconfig:option:`CONFIG_DEPRECATED` or
:kconfig:option:`CONFIG_NOT_SECURE`).

Profiles
********

Recommendations are grouped into **profiles**. Two profiles are provided in-tree:

``base``
   Baseline hardening every production build should satisfy: enable available memory-protection
   and exploit-mitigation features, and disable inherently insecure options.

``strict`` (default)
   Everything in ``base``, plus removal of debugging, tracing and observability features (logging,
   shell, assertions, etc.) that enlarge the attack surface or disclose internal state. Some
   products legitimately keep a subset of these enabled — if that is your case, check against the
   ``base`` profile instead:

.. code-block:: shell

   west build -t hardenconfig -- -DHARDENCONFIG_PROFILE=base

Configuration options
*********************

The tool is controlled through CMake cache variables (passed after ``--`` on the ``west build``
command line, as above) or environment variables of the same name:

.. list-table::
   :header-rows: 1

   * - Option
     - Effect
   * - ``HARDENCONFIG_PROFILE``
     - Hardening profile to check against. Default: ``strict``.
   * - ``HARDENCONFIG_SHOW_ALL``
     - When set, also list passing and non-applicable options instead of only failures.
   * - ``HARDENCONFIG_STRICT``
     - When set, exit with a non-zero code if any check fails. Useful to gate CI pipelines or
       release processes on a clean hardening report.
   * - ``HARDENCONFIG_JSON``
     - Path to a file where results are additionally written as JSON, for consumption by scripts
       and dashboards.
   * - ``HARDENCONFIG_EXTRA_SOURCES``
     - Semicolon-separated list of additional hardening database files (see below).

The hardening database
**********************

The database is distributed so that each rule lives with the code it hardens and is reviewed by
that code's maintainers:

* :zephyr_file:`scripts/kconfig/hardening.yaml` — the central file, owned by the Security Working
  Group. It defines the hardening **profiles**, plus rules for symbols defined in the top-level
  Kconfig files.
* ``hardening.yaml`` **fragments** next to the Kconfig files they relate to (for example
  :zephyr_file:`subsys/bluetooth/hardening.yaml` or :zephyr_file:`arch/x86/hardening.yaml`),
  containing rules only. Fragments are discovered automatically under ``arch/``, ``boards/``,
  ``drivers/``, ``kernel/``, ``lib/``, ``modules/``, ``share/``, ``soc/`` and ``subsys/``.
  Defining the same symbol in two files is an error, as is defining profiles in a fragment.

All files use the same JSON schema, :zephyr_file:`scripts/schemas/hardening-schema.yaml`. Each
rule is keyed by the Kconfig symbol it applies to and recommends either an exact value or an
integer constraint:

.. code-block:: yaml

   rules:
     BOOT_BANNER:
       value: n
       rationale: |
         The boot banner prints the exact Zephyr version to the console,
         letting anyone with console access fingerprint the firmware and
         match it against known vulnerabilities for that release.
       references: [CWE-200]

     STACK_POINTER_RANDOM:
       min: 100
       rationale: |
         Randomizing each thread's initial stack pointer makes stack
         addresses unpredictable. The offset is taken out of the thread's
         own stack, which keeps the recommended value small.
       references: [CWE-121]

Contributing a new rule means adding it to the ``hardening.yaml`` fragment next to the relevant
Kconfig file (creating the fragment if the subsystem does not have one yet) and requires a
``rationale`` — that requirement is enforced by the schema. Continuous integration additionally
verifies that every file parses and matches the schema, that every rule references an existing
Kconfig symbol with a value coherent with the symbol's type, that no rule is defined twice, and
that no file looks like a misnamed fragment — so entries cannot silently go stale or silently
fail to load.

The ``rationale`` is what the report shows the reader, wrapped into a narrow column, and is usually
all they have to go on. State the security consequence of the option in one or two sentences,
present tense, with the feature as the subject:

``value: n``
   The exposure enabling it creates and, where it matters, who can reach it: "Verbose modem logging
   dumps all data exchanged with the modem, which can include credentials such as APN settings,
   PINs and server addresses."

``value: y``
   The attack it defeats, or what leaving it off permits, whichever reads better.

``value: 0``, ``min`` and ``max``
   What the other values emit or fail to prevent, and what the boundary value itself does.

Do not:

* Say where the option belongs. The profile is what decides whether a product should accept the
  consequence; write "…discloses internal transfer state and addresses", not "…and belongs only
  in development builds".
* Claim an effect that is not complete without further action. For example, an option may enable
  the generation of a stripped binary, but making sure that is the one deployed is up to the user.
* Restate a column the report already shows. In "0 disables randomization entirely; at least 100
  bytes of random offset is recommended", the second half is the Recommended column.
* Repeat another rule's wording. Two rules that can fail in the same report should read differently
  enough for the reader to tell them apart.

Do not add an ``n`` rule for an option that can only be enabled while another ``n`` rule covering
at least the same profiles is already violated; for example, a rule for a shell command module is
redundant once :kconfig:option:`CONFIG_SHELL` itself is flagged, and CI rejects it. A rule for an
option that merely ``select``\ s a flagged one is not redundant: it names what the user must
actually change.

Rules do not carry applicability conditions: whether a recommendation applies to a given target
is already encoded in Kconfig itself (dependencies, hardware support), and the tool reports
options that are not applicable to the current target as not applicable rather than as failures.

Extending the database out of tree
**********************************

Product teams can layer their own recommendations on top of the in-tree database with
``HARDENCONFIG_EXTRA_SOURCES``. Each additional file uses the same schema and may define new
profiles (optionally extending in-tree ones) and new rules, as well as override in-tree rules.
Redefining an existing profile is rejected, so an in-tree profile keeps the meaning documented
here whatever a product layers on top of it:

.. code-block:: yaml

   profiles:
     acme-production:
       extends: strict
       description: ACME product security policy.

   rules:
     MY_VENDOR_DEBUG_INTERFACE:
       value: n
       profiles: [acme-production]
       rationale: |
         The vendor debug interface bypasses the product's authentication.

.. code-block:: shell

   west build -t hardenconfig -- \
     -DHARDENCONFIG_EXTRA_SOURCES=/path/to/acme-hardening.yaml \
     -DHARDENCONFIG_PROFILE=acme-production

---

### Doc Security Index (`doc/security/index.rst`)

.. _security_section:

Security
########

These documents describe the requirements, processes, and developer guidelines
for ensuring security is addressed within the Zephyr project.

.. toctree::
   :maxdepth: 1
   :glob:

   security-overview.rst
   reporting.rst
   secure-coding.rst
   sensor-threat.rst
   hardening-tool.rst
   control-flow-integrity.rst
   vulnerabilities.rst
   standards/index.rst

---

### Doc Security Reporting (`doc/security/reporting.rst`)

.. _reporting:

Security Vulnerability Reporting
################################

Introduction
============

Vulnerabilities in the Zephyr project should preferably be reported by opening
a draft `security advisory`_ on the Zephyr repository's
`security advisories page`_.
Alternatively, reports may be submitted to the project security incident
response team via email to vulnerabilities@zephyrproject.org.
These reports will be acknowledged and analyzed by the security response team
within 1 week.

All vulnerabilities are tracked and managed through the Zephyr project's
`security advisories page`_ on GitHub, where the original submitter will be
granted access to view the issues that they have reported.

.. _security advisory: https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability
.. _security advisories page: https://github.com/zephyrproject-rtos/zephyr/security/advisories

Vulnerability Reporting Guidelines
==================================

Security research and vulnerability reporting are valued contributions to the
Zephyr project. To keep this process safe and productive for everyone, all
reports and related activities must comply with the Zephyr project
`Code of Conduct`_.

The guidelines below describe what is expected when researching and reporting
security vulnerabilities in Zephyr.

.. _Code of Conduct: https://github.com/zephyrproject-rtos/zephyr/blob/main/CODE_OF_CONDUCT.md

Reporting expectations
----------------------

To help the security response team triage and resolve issues efficiently, a
report should:

- Describe the affected component, version, board or platform, and
  configuration needed to reproduce the issue.

- Include clear, step-by-step reproduction instructions and a minimal
  proof-of-concept where possible.

- Explain the security impact (for example, loss of confidentiality,
  integrity, or availability) and any known mitigations.

- Avoid including destructive payloads or components that could cause harm to
  users or systems if the report were inadvertently disclosed.

Reporters are expected to make a good-faith effort to give the project a
reasonable opportunity to investigate and remediate the issue before any public
disclosure, consistent with the embargo and disclosure process described in the
following sections.

Security Issue Management
=========================

Issues within this bug tracking system will transition through a
number of states according to this diagram:

.. graphviz::

   digraph {
      node [style = rounded];
      init [shape = point];
      New [shape = box];
      Triage [shape = box];
      {
        rank = same;
        rankdir = LR;
        Assigned [shape = box];
        Rejected [shape = box];
      }
      Review [shape = box];
      Accepted [shape = box];
      Public [shape = box];

      init -> New;
      New -> Triage;
      Triage -> Rejected [dir = both];
      Triage -> Assigned;
      Assigned -> Review [dir = both];
      Review -> Accepted;
      Review -> Rejected;
      Accepted -> Public;

   }

- New: This state represents new reports that have been entered
  directly by a reporter.  When entered by the response team in
  response to an email, the issue shall be transitioned directly to
  Triage.

- Triage: This issue is awaiting Triage by the response team.  The
  response team will analyze the issue, determine a responsible
  entity, assign it to that individual, and move the
  issue to the Assigned state.  Part of triage will be to set the
  issue's priority.

- Assigned: The issue has been assigned, and is awaiting a fix by the
  assignee.

- Review: Once there is a Zephyr pull request for the issue, the PR
  link will be added to a comment in the issue, and the issue moved to
  the Review state.

- Accepted: Indicates that this issue has been merged into the
  appropriate branch within Zephyr.

- Public: The embargo period has ended.  The issue will be made
  publicly visible, the associated CVE updated, and the
  vulnerabilities page in the docs updated to include the detailed
  information.

The security advisories created are kept private, due to the
sensitive nature of security reports.  The issues are only visible to
certain parties:

- Members of the PSIRT mailing list

- the reporter

- others, as proposed and ratified by the Zephyr Security
  Subcommittee.  In the general case, this will include:

  - The code owner responsible for the fix.

  - The Zephyr release owners for the relevant releases affected by
    this vulnerability.

The Zephyr Security Subcommittee shall review the reported
vulnerabilities during any meeting with more than three people in
attendance.  During this review, they shall determine if new issues
need to be embargoed.

The guideline for embargo will be based on: 1. Severity of the issue,
and 2. Exploitability of the issue.  Issues that the subcommittee
decides do not need an embargo will be reproduced in the regular
Zephyr project bug tracking system.

.. _vulnerability_timeline:

Security sensitive vulnerabilities shall be made public after an
embargo period of at most 90 days.  The intent is to allow 30 days
within the Zephyr project to fix the issues, and 60 days for external
parties building products using Zephyr to be able to apply and
distribute these fixes.

.. _vulnerability_fix_recommendations:

Fixes to the code shall be made through pull requests PR in the Zephyr
project github.  Developers shall make an attempt to not reveal the
sensitive nature of what is being fixed, and shall not refer to CVE
numbers that have been assigned to the issue.  The developer instead
should merely describe what has been fixed.

The security subcommittee will maintain information mapping embargoed
CVEs to these PRs (this information is within the Github security
advisories), and produce regular reports of the state of security
issues.

Each issue that is considered a security vulnerability shall be
assigned a CVE number.  As fixes are created, it may be necessary to
allocate additional CVE numbers, or to retire numbers that were
assigned.

Vulnerability Notification
==========================

Each Zephyr release shall contain a report of CVEs that were fixed in
that release.  Because of the sensitive nature of these
vulnerabilities, the release shall merely include a list of CVEs that
have been fixed.  After the embargo period, the vulnerabilities page
shall be updated to include additional details of these
vulnerabilities.  The vulnerability page shall give credit to the
reporter(s) unless a reporter specifically requests anonymity.

The Zephyr project shall maintain a vulnerability-alerts mailing list.
This list will be seeded initially with a contact from each project
member.  Additional parties can request to join this list by filling
out the form at the `Vulnerability Registry`_.  These parties will be
vetted by the project director to determine that they have a
legitimate interest in knowing about security vulnerabilities during
the embargo period.

.. _Vulnerability Registry: https://www.zephyrproject.org/vulnerability-registry/ 

Periodically, the security subcommittee will send information to this
mailing list describing known embargoed issues, and their backport
status within the project.  This information is intended to allow them
to determine if they need to backport these changes to any internal
trees.

When issues have been triaged, this list will be informed of:

- The Zephyr Project security advisory link (GitHub).

- The CVE number assigned.

- The subsystem involved.

- The severity of the issue.

After acceptance of a PR fixing the issue (merged), in addition to the
above, the list will be informed of:

- The association between the CVE number and the PR fixing it.

- Backport plans within the Zephyr project.

Backporting of Security Vulnerabilities
=======================================

Each security issue fixed within zephyr shall be backported to the
following releases:

- The current Long Term Stable (LTS) release.

- The most recent two releases.

The developer of the fix shall be responsible for any necessary
backports, and apply them to any of the above listed release branches,
unless the fix does not apply (the vulnerability was introduced after
this release was made). All recommendations for
:ref:`vulnerability fixes <vulnerability_fix_recommendations>` apply
for backport pull requests (and associated issues). Additionally, it is
recommended that the developer privately informs the responsible
release manager that the backport pull request and issue are addressing
a vulnerability.

Backports will be tracked on the security advisory.

Need to Know
============

Due to the sensitive nature of security vulnerabilities, it is
important to share details and fixes only with those parties that have
a need to know.  The following parties will need to know details about
security vulnerabilities before the embargo period ends:

- Maintainers will have access to all information within their domain
  area only.

- The current release manager, and the release manager for historical
  releases affected by the vulnerability (see backporting above).

- The Project Security Incident Response (PSIRT) team will have full
  access to information.  The PSIRT is made up of representatives from
  platinum members, and volunteers who do work on triage from other
  members.

- As needed, release managers and maintainers may be invited to attend
  additional security meetings to discuss vulnerabilities.

---

### Doc Security Secure Coding (`doc/security/secure-coding.rst`)

.. _secure code:

Secure Coding
#############

Traditionally, microcontroller-based systems have not placed much
emphasis on security.
They have usually been thought of as isolated, disconnected
from the world, and not very vulnerable, just because of the
difficulty in accessing them.  The Internet of Things has changed
this.  Now, code running on small microcontrollers often has access to
the internet, or at least to other devices (that may themselves have
vulnerabilities).  Given the volume they are often deployed at,
uncontrolled access can be devastating [#attackf]_.

This document describes the requirements and process for ensuring
security is addressed within the Zephyr project.  All code submitted
should comply with these principles.

Much of this document comes from [CIIBPB]_.

Introduction and Scope
**********************

This document covers guidelines for the `Zephyr Project`_, from a
security perspective.  Many of the ideas contained herein are captured
from other open source efforts.

.. todo: Reference main document here

.. _Zephyr Project: https://www.zephyrproject.org/

We begin with an overview of secure design as it relates to
Zephyr.  This is followed by
a section on `Secure development knowledge`_, which
gives basic requirements that a developer working on the project will
need to have.  This section gives references to other security
documents, and full details of how to write secure software are beyond
the scope of this document.  This section also describes
vulnerability knowledge that at least one of the primary developers
should have.  This knowledge will be necessary for the review process
described below this.

Following this is a description of the review process used to
incorporate changes into the Zephyr codebase.  This is followed by
documentation about how security-sensitive issues are handled by the
project.

Finally, the document covers how changes are to be made to this
document.

Secure Coding
*************

Designing an open software system such as Zephyr to be secure requires
adhering to a defined set of design standards. In [SALT75]_, the following,
widely accepted principles for protection mechanisms are defined to
help prevent security violations and limit their impact:

- **Open design** as a design guideline incorporates the maxim that
  protection mechanisms cannot be kept secret on any system in
  widespread use. Instead of relying on secret, custom-tailored
  security measures, publicly accepted cryptographic algorithms and
  well established cryptographic libraries shall be used.

- **Economy of mechanism** specifies that the underlying design of a
  system shall be kept as simple and small as possible. In the context
  of the Zephyr project, this can be realized, e.g., by modular code
  [PAUL09]_ and abstracted APIs.

- **Complete mediation** requires that each access to every object and
  process needs to be authenticated first. Mechanisms to store access
  conditions shall be avoided if possible.

- **Fail-safe defaults** defines that access is restricted by default
  and permitted only in specific conditions defined by the system
  protection scheme, e.g., after successful authentication.
  Furthermore, default settings for services shall be chosen in a way
  to provide maximum security.  This corresponds to the "Secure by
  Default" paradigm [MS12]_.

- **Separation of privilege** is the principle that two conditions or
  more need to be satisfied before access is granted. In the context
  of the Zephyr project, this could encompass split keys [PAUL09]_.

- **Least privilege** describes an access model in which each user,
  program, and thread, shall have the smallest possible subset
  of permissions in the system required to perform their task. This
  positive security model aims to minimize the attack surface of the
  system.

- **Least common mechanism** specifies that mechanisms common to more
  than one user or process shall not be shared if not strictly
  required. The example given in [SALT75]_ is a function that should be
  implemented as a shared library executed by each user and not as a
  supervisor procedure shared by all users.

- **Psychological acceptability** requires that security features are
  easy to use by the developers in order to ensure their usage and the
  correctness of its application.

In addition to these general principles, the following points are
specific to the development of a secure RTOS:

- **Complementary Security/Defense in Depth**: do not rely on a single
  threat mitigation approach. In case of the complementary security
  approach, parts of the threat mitigation are performed by the
  underlying platform. In case such mechanisms are not provided by the
  platform, or are not trusted, a defense in depth [MS12]_ paradigm
  shall be used.

- **Less commonly used services off by default**: to reduce the
  exposure of the system to potential attacks, features or services
  shall not be enabled by default if they are only rarely used (a
  threshold of 80% is given in [MS12]_). For the Zephyr project, this can
  be realized using the configuration management. Each functionality
  and module shall be represented as a configuration option and needs
  to be explicitly enabled. Then, all features, protocols, and drivers
  not required for a particular use case can be disabled. The user
  shall be notified if low-level options and APIs are enabled but not
  used by the application.

- **Change management**: to guarantee a traceability of changes to the
  system, each change shall follow a specified process including a
  change request, impact analysis, ratification, implementation, and
  validation phase. In each stage, appropriate documentation shall be
  provided. All commits shall be related to a bug report or change
  request in the issue tracker. Commits without a valid reference
  shall be denied.

Secure development knowledge
****************************

Secure designer
===============

The Zephyr project must have at least one primary developer who knows
how to design secure software.

This requires understanding the following design principles,
including the 8 principles from [SALT75]_:

- economy of mechanism (keep the design as simple and small as
  practical, e.g., by adopting sweeping simplifications)

- fail-safe defaults (access decisions shall deny by default, and
  projects' installation shall be secure by default)

- complete mediation (every access that might be limited must be
  checked for authority and be non-bypassable)

.. todo: Explain better the constraints of embedded devices, and that
   we typically do edge detection, not at each function. Perhaps
   relate this to input validation below.

- open design (security mechanisms should not depend on attacker
  ignorance of its design, but instead on more easily protected and
  changed information like keys and passwords)

- separation of privilege (ideally, access to important objects should
  depend on more than one condition, so that defeating one protection
  system won't enable complete access. For example, multi-factor
  authentication, such as requiring both a password and a hardware
  token, is stronger than single-factor authentication)

- least privilege (processes should operate with the least privilege
  necessary)

- least common mechanism (the design should minimize the mechanisms
  common to more than one user and depended on by all users, e.g.,
  directories for temporary files)

- psychological acceptability (the human interface must be designed
  for ease of use - designing for "least astonishment" can help)

- limited attack surface (the set of the
  different points where an attacker can try to enter or extract data)

- input validation with allowlists (inputs should typically be checked
  to determine if they are valid before they are accepted; this
  validation should use allowlists (which only accept known-good
  values), not blocklists (which attempt to list known-bad values)).

Vulnerability Knowledge
=======================

A "primary developer" in a project is anyone who is familiar with the
project's code base, is comfortable making changes to it, and is
acknowledged as such by most other participants in the project. A
primary developer would typically make a number of contributions over
the past year (via code, documentation, or answering questions).
Developers would typically be considered primary developers if they
initiated the project (and have not left the project more than three
years ago), have the option of receiving information on a private
vulnerability reporting channel (if there is one), can accept commits
on behalf of the project, or perform final releases of the project
software. If there is only one developer, that individual is the
primary developer.

At least one of the primary developers **must** know of common kinds of
errors that lead to vulnerabilities in this kind of software, as well
as at least one method to counter or mitigate each of them.

Examples (depending on the type of software) include SQL
injection, OS injection, classic buffer overflow, cross-site
scripting, missing authentication, and missing authorization. See the
`CWE/SANS top 25`_ or `OWASP Top 10`_ for commonly used lists.

A free class from the nonprofit OpenSecurityTraining2 for C/C++ developers
is available at `OST2_1001`_. It teaches how to prevent, detect, and
mitigate linear stack/heap buffer overflows, non-linear out of bound writes,
integer overflows, and other integer issues. The follow-on class, `OST2_1002`_,
covers uninitialized data access, race conditions, use-after-free, type confusion,
and information disclosure vulnerabilities.

.. Turn this into something specific. Can we find examples of
   mistakes.  Perhaps an example of things static analysis tool has sent us.

.. _CWE/SANS top 25: https://cwe.mitre.org/top25/

.. _OWASP Top 10: https://owasp.org/www-project-top-ten/

.. _OST2_1001: https://ost2.fyi/Vulns1001

.. _OST2_1002: https://ost2.fyi/Vulns1002

Zephyr Security Subcommittee
============================

There shall be a "Zephyr Security Subcommittee", responsible for
enforcing this guideline, monitoring reviews, and improving these
guidelines.

This team will be established according to the Zephyr Project charter.

Code Review
***********

The Zephyr project shall use a code review system that all changes are
required to go through.  Each change shall be reviewed by at least one
primary developer that is not the author of the change.  This
developer shall determine if this change affects the security of the
system (based on their general understanding of security), and if so,
shall request the developer with vulnerability knowledge, or the
secure designer to also review the code.  Any of these individuals
shall have the ability to block the change from being merged into the
mainline code until the security issues have been addressed.

Issues and Bug Tracking
***********************

The Zephyr project shall have an issue tracking system (such as GitHub_)
that can be used to record and track defects that are found in the
system.

.. _GitHub: https://www.github.com

Because security issues are often sensitive, this issue tracking
system shall have a field to indicate a security issue.  Setting this
field shall result in the issue only being visible to the Zephyr Security
Subcommittee. In addition, there shall be a
field to allow the Zephyr Security Subcommittee to add additional users that will
have visibility to a given issue.

This embargo, or limited visibility, shall only be for a fixed
duration, with a default being a project-decided value.  However,
because security considerations are often external to the Zephyr
project itself, it may be necessary to increase this embargo time.
The time necessary shall be clearly annotated in the issue itself.

The list of issues shall be reviewed at least once a month by the
Zephyr Security Subcommittee.  This review should focus on
tracking the fixes, determining if any external parties need to be
notified or involved, and determining when to lift the embargo on the
issue.  The embargo should **not** be lifted via an automated means, but
the review team should avoid unnecessary delay in lifting issues that
have been resolved.

Modifications to This Document
******************************

Changes to this document shall be reviewed by the Zephyr Security Subcommittee,
and approved by consensus.

.. [#attackf]  An attack_ resulted in a significant portion of DNS
   infrastructure being taken down.

.. _attack: https://www.theverge.com/2016/10/21/13362354/dyn-dns-ddos-attack-cause-outage-status-explained

---

### Doc Security Security Citations (`doc/security/security-citations.rst`)

:orphan:

.. _security-citations:

Security Document Citations
###########################

.. [SALT75] J. H. Saltzer and M. D. Schroeder, "The protection of
   information in computer systems," Proceedings of the IEEE, vol. 63, no.
   9, pp. 1278-1308, Sep 1975. [Online].
   Available: https://web.mit.edu/Saltzer/www/publications/protection/.

.. [PAUL09] M. Paul, "The Ten Best Practices for Secure Software
   Development," International Information Systems Security Certification
   Consortium, Inc. [(ISC)2®], Palm Harbor, FL, USA, 2009.

.. [MS12] Microsoft Corporation, Security Development Lifecycle - SDL
   Process Guidance Version 5.2,2012.

.. [CCITSE12] Common Criteria for Information Technology Security
   Evaluation ver. 3.1 rev. 4, 2012.

.. [MICR16] Micrium, "Certification Kits," 2016. [Online]. Available:
   https://www.micrium.com/certification/certification-kits/.

.. [NIST02] National Institute of Standards and Technology, FIPS PUB 140-2:
   Security Requirements for COMPANY PUBLIC Application note Cryptographic
   Modules, Gaithersburg, 2002.

.. [GHS10] Green Hills Software, "INTEGRITY-178B Separation Kernel Security
   Target v4.2," 2010.

.. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels",
   BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. [Online]. Available:
   https://www.rfc-editor.org/info/rfc2119.

.. [STRIDE09] Microsoft Corporation, "The STRIDE Threat Model, 2009". [Online].
   Available: https://msdn.microsoft.com/en-us/library/ee823878%28v=cs.20%29.aspx.

.. [CVSS] Forum of Incident Response and Security Teams,
   "Common Vulnerability Scoring System v3.0: Specification Document". [Online].
   Available: https://www.first.org/cvss/specification-document.

.. [OWASP] Open Web Application Security Project,
   "Application Threat Modeling". [Online].
   Available: https://www.owasp.org/index.php/Application_Threat_Modeling.

.. [CIIBPB] Core Infrastructure Initiative Best Practices Badge. [Online].
   Available: https://github.com/linuxfoundation/cii-best-practices-badge

.. [CRA24] Regulation (EU) 2024/2847 of the European Parliament and of the Council
   of 23 October 2024 on horizontal cybersecurity requirements for products with
   digital elements (Cyber Resilience Act). [Online].
   Available: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202402847

---

### Doc Security Security Overview (`doc/security/security-overview.rst`)

.. _security-overview:

Zephyr Security Overview
########################

Introduction
************

This document outlines the steps of the Zephyr Security Subcommittee towards a
defined security process that helps developers build more secure
software while addressing security compliance requirements. It presents
the key ideas of the security process and outlines which documents need
to be created. After the process is implemented and all supporting
documents are created, this document is a top-level overview and entry
point.

Overview and Scope
==================

We begin with an overview of the Zephyr development process, which
mainly focuses on security functionality.

In subsequent sections, the individual parts of the process are treated
in detail. As depicted in Figure 1, these main steps are:

1. **Secure Development:** Defines the system architecture and
   development process that ensures adherence to relevant coding
   principles and quality assurance procedures.

2. **Secure Design:** Defines security procedures and implement measures
   to enforce them. A security architecture of the system and
   relevant sub-modules is created, threats are identified, and
   countermeasures designed. Their correct implementation and the
   validity of the threat models are checked by code reviews.
   Finally, a process shall be defined for reporting, classifying,
   and mitigating security issues.

3. **Security Certification:** Defines the certifiable part of the
   Zephyr RTOS. This includes an evaluation target, its assets, and
   how these assets are protected. Certification claims shall be
   determined and backed with appropriate evidence.

.. figure:: media/security-process-steps.png

   Figure 1. Security Process Steps

Intended Audience
=================

This document is a guideline for the development of a security process
by the Zephyr Security Subcommittee and the Zephyr Technical Steering
Committee. It provides an overview of the Zephyr security process for
(security) engineers and architects.

Nomenclature
============

In this document, the keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" are to be interpreted as described in [RFC2119]_.

These words are used to define absolute requirements (or prohibitions),
highly recommended requirements, and truly optional requirements. As
noted in RFC-2119, "These terms are frequently used to specify behavior
with security implications. The effects on security of not implementing
a MUST or SHOULD, or doing something the specification says MUST NOT or
SHOULD NOT be done may be very subtle. Document authors should take the
time to elaborate the security implications of not following
recommendations or requirements as most implementers will not have had
the benefit of the experience and discussion that produced the
specification."

Security Document Update
========================

This document is a living document. As new requirements, features, and
changes are identified, they will be added to this document through the
following process:

1. Changes will be submitted from the interested party(ies) via pull
   requests to the Zephyr documentation repository.

2. The Zephyr Security Subcommittee will review these changes and provide feedback
   or acceptance of the changes.

3. Once accepted, these changes will become part of the document.

Current Security Definition
***************************

This section recapitulates the current status of secure development
within the Zephyr RTOS. Currently, focus is put on functional security
and code quality assurance, although additional security features are
scoped.

The three major security measures currently implemented are:

-  **Security** **Functionality** with a focus on cryptographic
   algorithms and protocols. Support for cryptographic hardware is
   scoped for future releases. The Zephyr runtime architecture is a
   monolithic binary and removes the need for dynamic loaders,
   thereby reducing the exposed attack surface.

-  **Quality Assurance** is driven by using a development process that
   requires all code to be reviewed before being committed to the
   common repository. Furthermore, the reuse of proven building
   blocks such as network stacks increases the overall quality level
   and guarantees stable APIs. Static code analyses provide additional
   quality checks.

-  **Execution Protection** including thread separation, stack and
   memory protection is currently available in the upstream
   Zephyr RTOS starting with version 1.9.0 (stack protection).  Memory
   protection and thread separation were added in version 1.10.0 for X86
   and in version 1.11.0 for ARM and ARC.

These topics are discussed in more detail in the following subsections.

Security Functionality
======================

The security functionality in Zephyr hinges mainly on the inclusion of
cryptographic algorithms, and on its monolithic system design.

The cryptographic features are provided through PSA Crypto, with
Mbed TLS as the underlying implementation. Applications leverage PSA
Crypto APIs, ensuring a standardized and secure approach to
cryptographic operations. Mbed TLS, as the implementation of PSA
Crypto, supports a wide range of cryptographic algorithms, making it
suitable for various application requirements.

APIs for vendor specific cryptographic IPs in both hardware and software
are planned, including secure key storage in the form of secure access
modules (SAMs), Trusted Platform Modules (TPMs), and
Trusted Execution Environments (TEEs).

The security architecture is based on a monolithic design where the
Zephyr kernel and all applications are compiled into a single static
binary. System calls are implemented as function calls without requiring
context switches. Static linking eliminates the potential for
dynamically loading malicious code.

Additional protection features are available in later releases.  Stack
protection mechanisms are provided to protect against stack overruns.
In addition, applications can take advantage of thread separation
features to split the system into privileged and unprivileged execution
environments.  Memory protection features provide the capability to
partition system resources (memory, peripheral address space, etc.) and
assign resources to individual threads or groups of threads.  Stack,
thread execution level, and memory protection constraints are enforced
at the time of context switch.

Quality Assurance
=================

The Zephyr project uses an automated quality assurance process. The goal
is to have a process including mandatory code reviews, feature and issue
management/tracking, and static code analyses.

Code reviews are documented and enforced using a voting system before
getting checked into the repository by the responsible subsystem's
maintainer. The main goals of the code review are:

-  Verifying correct functionality of the implementation

-  Increasing the readability and maintainability of the contributed
   source code

-  Ensuring appropriate usage of string and memory functions

-  Validation of the user input

-  Reviewing the security relevant code for potential issues

The current coding principles focus mostly on coding styles and
conventions. Functional correctness is ensured by the build system and
the experience of the reviewer. Especially for security relevant code,
concrete and detailed guidelines need to be developed and aligned with
the developers (see: :ref:`secure code`).

Static code analyses are run on the Zephyr code tree on a regular basis,
see :ref:`static_analysis`.

Bug and issue tracking and management is performed using Github. The term
"survivability" was coined to cover pro-active security tasks such as
security issue categorization and management. A problem identified as
vulnerability is managed within Github security advisories.

Issues determined by static analyses should have more stringent reviews before
they are closed as non-issues (at least another person educated in
security processes need to agree on non-issue before closing).

A security subcommittee has been formed to develop a security process in
more detail; this document is part of that process.

Execution Protection
====================

Execution protection is supported and can be categorized into the
following tasks:

-  **Memory separation:** Memory will be partitioned into regions and
   assigned attributes based on the owner of that region of memory.
   Threads will only have access to regions they control.

-  **Stack protection:** Stack guards would provide mechanisms for
   detecting and trapping stack overruns. Individual threads should
   only have access to their own stacks.

-  **Thread separation:** Individual threads should only have access to
   their own memory resources. As threads are scheduled, only memory
   resources owned by that thread will be accessible. Topics such as
   program flow protection and other measures for tamper resistance
   are currently not in scope.

System Level Security (Ecosystem, ...)
======================================

System level security encompasses a wide variety of categories. Some
examples of these would be:

-  Secure/trusted boot
-  Over the air (OTA) updates
-  External Communication
-  Device authentication
-  Access control of onboard resources

   -  Flash updating
   -  Secure storage
   -  Peripherals

-  Root of trust
-  Reduction of attack surface

Some of these categories are interconnected and rely on multiple pieces
to be in place to produce a full solution for the application.

Secure Development Process
**************************

The development of secure code shall adhere to certain criteria. These
include coding guidelines and development processes that can be roughly
separated into two categories related to software quality and related to
software security. Furthermore, a system architecture document shall be
created and kept up-to-date with future development.

System Architecture
===================

.. figure:: media/security-zephyr-system-architecture.png

   Figure 2: Zephyr System Architecture

A high-level schematic of the Zephyr system architecture is given in
Figure 2. It separates the architecture into an OS part (*kernel + OS
Services*) and a user-specific part (*Application Services*). The OS
part itself contains low-level, platform specific drivers and the
generic implementation of I/O APIs, file systems, kernel-specific
functions, and the cryptographic library.

A document describing the system architecture and design choices shall
be created and kept up to date with future development. This document
shall include the base architecture of the Zephyr OS and an overview of
important submodules. For each of the modules, a dedicated architecture
document shall be created and evaluated against the implementation.
These documents shall serve as an entry point to new developers and as a
basis for the security architecture. Please refer to the
:ref:`Zephyr subsystem documentation <os_services>` for
detailed information.

Secure Coding
=============

Designing an open software system such as Zephyr to be secure requires
adhering to a defined set of design standards. These standards are
included in the Zephyr Project documentation, specifically in its
:ref:`secure code` section. In [SALT75]_, the following, widely
accepted principles for protection mechanisms are defined to prevent
security violations and limit their impact:

-  **Open design** as a design principle incorporates the maxim that
   protection mechanisms cannot be kept secret on any system in
   widespread use. Instead of relying on secret, custom-tailored
   security measures, publicly accepted cryptographic algorithms and
   well established cryptographic libraries shall be used.

-  **Economy of mechanism** specifies that the underlying design of a
   system shall be kept as simple and small as possible. In the
   context of the Zephyr project, this can be realized, e.g., by
   modular code [PAUL09]_ and abstracted APIs.

-  **Complete mediation** requires that each access to every object and
   process needs to be authenticated first. Mechanisms to store
   access conditions shall be avoided if possible.

-  **Fail-safe defaults** defines that access is restricted by default
   and permitted only in specific conditions defined by the system
   protection scheme, e.g., after successful authentication.
   Furthermore, default settings for services shall be chosen in a
   way to provide maximum security. This corresponds to the "Secure
   by Default" paradigm [MS12]_.

-  **Separation of privilege** is the principle that two conditions or
   more need to be satisfied before access is granted. In the
   context of the Zephyr project, this could encompass split keys
   [PAUL09]_.

-  **Least privilege** describes an access model in which each user,
   program and thread shall have the smallest possible
   subset of permissions in the system required to perform their
   task. This positive security model aims to minimize the attack
   surface of the system.

-  **Least common mechanism** specifies that mechanisms common to more
   than one user or process shall not be shared if not strictly
   required. The example given in [SALT75]_ is a function that should
   be implemented as a shared library executed by each user and not
   as a supervisor procedure shared by all users.

-  **Psychological acceptability** requires that security features are
   easy to use by the developers in order to ensure its usage and
   the correctness of its application.

In addition to these general principles, the following points are
specific to the development of a secure RTOS:

-  **Complementary Security/Defense in Depth:** do not rely on a single
   threat mitigation approach. In case of the complementary security
   approach, parts of the threat mitigation are performed by the
   underlying platform. In case such mechanisms are not provided by
   the platform, or are not trusted, a defense in depth [MS12]_
   paradigm shall be used.

-  **Less commonly used services off by default**: to reduce the
   exposure of the system to potential attacks, features or services
   shall not be enabled by default if they are only rarely used (a
   threshold of 80% is given in [MS12]_). For the Zephyr project,
   this can be realized using the configuration management. Each
   functionality and module shall be represented as a configuration
   option and needs to be explicitly enabled. Then, all features,
   protocols, and drivers not required for a particular use case can
   be disabled. The user shall be notified if low-level options and
   APIs are enabled but not used by the application.

-  **Change management:** to guarantee a traceability of changes to the
   system, each change shall follow a specified process including a
   change request, impact analysis, ratification, implementation,
   and validation phase. In each stage, appropriate documentation
   shall be provided. All commits shall be related to a bug report
   or change request in the issue tracker. Commits without a valid
   reference shall be denied.

Based on these design principles and commonly accepted best practices, a
secure development guide shall be developed, published, and implemented
into the Zephyr development process. Further details on this are given
in the `Secure Design`_ section.

Quality Assurance
=================

The quality assurance part encompasses the following criteria:

-  **Adherence to the Coding Conventions** with respect to coding style,
   naming schemes of modules, functions, variables, and so forth.
   This increases the readability of the Zephyr code base and eases
   the code review. These coding conventions are enforced by
   automated scripts prior to check-in.

-  **Adherence to Deployment Guidelines** is required to ensure
   consistent releases with a well-documented feature set and a
   trackable list of security issues.

-  **Code Reviews** ensure the functional correctness of the code base
   and shall be performed on each proposed code change prior to
   check-in. Code reviews shall be performed by at least one
   independent reviewer other than the author(s) of the code change.
   These reviews shall be performed by the subsystem maintainers and
   developers on a functional level and are to be distinguished from
   security reviews as laid out in the `Secure Design`_ section.
   Refer to the :ref:`development_model` documentation for more information.

-  **Static Code Analysis** tools efficiently detect common coding
   mistakes in large code bases. All code shall be analyzed using an
   appropriate tool prior to merges into the main repository. This
   is not per individual commit, but is to be run on some interval
   on specific branches. It is mandatory to remove all findings or
   waive potential false-positives before each release.
   Waivers shall be documented centrally and
   in the form of a comment inside the source code itself. The
   documentation shall include the employed tool and its version,
   the date of the analysis, the branch and parent revision number,
   the reason for the waiver, the author of the respective code, and
   the approver(s) of the waiver. This shall as a minimum run on the
   main release branch and on the security branch. It shall be
   ensured that each release has zero issues with regard to static
   code analysis (including waivers).
   Refer to the :ref:`development_model` documentation for more information.


-  **Complexity Analyses** shall be performed as part of the development
   process and metrics such as cyclomatic complexity shall be
   evaluated. The main goal is to keep the code as simple as
   possible.

-  **Automation:** the review process and checks for coding rule
   adherence are a mandatory part of the precommit checks. To
   ensure consistent application, they shall be automated as part of
   the precommit procedure. Prior to merging large pieces of code
   in from subsystems, in addition to review process and coding rule
   adherence, all static code analysis must have been run and issues
   resolved.

Release and Lifecycle Management
================================

Lifecycle management contains several aspects:

-  **Device management** encompasses the possibility to update the
   operating system and/or security related sub-systems of Zephyr
   enabled devices in the field.

-  **Lifecycle management:** system stages shall be defined and
   documented along with the transactions between the stages in a
   system state diagram. For security reasons, this shall include
   locking of the device in case an attack has been detected, and a
   termination if the end of life is reached.

-  **Release management** describes the process of defining the release
   cycle, documenting releases, and maintaining a record of known
   vulnerabilities and mitigations. Especially for certification
   purposes the integrity of the release needs to be ensured in a
   way that later manipulation (e.g., inserting of backdoors, etc.)
   can be easily detected.

-  **Rights management and NDAs:** if required by the chosen
   certification, the confidentiality and integrity of the system
   needs to be ensured by an appropriate rights management (e.g.,
   separate source code repository) and non-disclosure agreements
   between the relevant parties. In case of a repository shared
   between several parties, measures shall be taken that no
   malicious code is checked in.

These points shall be evaluated with respect to their impact on the
development process employed for the Zephyr project.

Secure Design
*************

In order to obtain a certifiable system or product, the security process
needs to be clearly defined and its application needs to be monitored
and driven. This process includes the development of security related
modules in all of its stages and the management of reported security
issues. Furthermore, threat models need to be created for currently
known and future attack vectors, and their impact on the system needs to
be investigated and mitigated. Please refer to the
:ref:`secure code` outlined in the Zephyr project documentation
for detailed information.

The software security process includes:

-  **Adherence to the Secure Development Coding** is mandatory to
   avoid that individual components breach the system security and
   to minimize the vulnerability of individual modules. While this
   can be partially achieved by automated tests, it is inevitable to
   investigate the correct implementation of security features such
   as countermeasures manually in security-critical modules.

-  **Security Reviews** shall be performed by a security architect in
   preparation of each security-targeted release and each time a
   security-related module of the Zephyr project is changed. This
   process includes the validation of the effectiveness of
   implemented security measures, the adherence to the global
   security strategy and architecture, and the preparation of audits
   towards a security certification if required.

-  **Security Issue Management** encompasses the evaluation of potential
   system vulnerabilities and their mitigation as described in
   :ref:`Security Issue Management <reporting>`.

These criteria and tasks need to be integrated into the development
process for secure software and shall be automated wherever possible. On
system level, and for each security related module of the secure branch
of Zephyr, a directly responsible security architect shall be defined to
guide the secure development process.

Security Architecture
=====================

The general guidelines above shall be accompanied by an architectural
security design on system- and module-level. The high level
considerations include

-  The identification of **security and compliance requirements**

-  **Functional security** such as the use of cryptographic functions
   whenever applicable

-  Design of **countermeasures** against known attack vectors

-  Recording of security relevant **auditable events**

-  Support for **Trusted Platform Modules (TPM)** and
   **Trusted Execution Environments (TEE)**

-  Mechanisms to allow for **in-the-field** **updates** of devices using
   Zephyr

-  Task scheduler and separation

The security architecture development is based on assets derived from
the structural overview of the overall system architecture. Based on
this, the individual steps include:

1. **Identification of assets** such as user data, authentication and
   encryption keys, key generation data (obtained from RNG),
   security relevant status information.

2. **Identification of threats** against the assets such as breaches of
   confidentiality, manipulation of user data, etc.

3. **Definition of requirements** regarding security and protection of
   the assets, e.g., countermeasures or memory protection schemes.

The security architecture shall be harmonized with the existing system
architecture and implementation to determine potential deviations and
mitigate existing weaknesses. Newly developed sub-modules that are
integrated into the secure branch of the Zephyr project shall provide
individual documents describing their security architecture.
Additionally, their impact on the system level security shall be
considered and documented.

Security Vulnerability Reporting
================================

Please see :ref:`reporting` for information on reporting security
vulnerabilities.

Threat Modeling and Mitigation
==============================

The modeling of security threats against the Zephyr RTOS is required for
the development of an accurate security architecture and for most
certification schemes. The first step of this process is the definition
of assets to be protected by the system. The next step then models how
these assets are protected by the system and which threats against them
are present. After a threat has been identified, a corresponding threat
model is created. This model contains the asset and system
vulnerabilities, as well as the description of the potential exploits of
these vulnerabilities. Additionally, the impact on the asset, the module
it resides in, and the overall system is to be estimated. This threat
model is then considered in the module and system security architecture
and appropriate countermeasures are defined to mitigate the threat or
limit the impact of exploits.

In short, the threat modeling process can be separated into these steps
(adapted from [OWASP]_):

1. Definition of assets

2. Application decomposition and creation of appropriate data flow
   diagrams (DFDs)

3. Threat identification and categorization using the [STRIDE09]_ and
   [CVSS]_ approaches

4. Determination of countermeasures and other mitigation approaches

This procedure shall be carried out during the design phase of modules
and before major changes of the module or system architecture.
Additionally, new models shall be created, or existing ones shall be
updated whenever new vulnerabilities or exploits are discovered. During
security reviews, the threat models and the mitigation techniques shall
be evaluated by the responsible security architect.

From these threat models and mitigation techniques tests shall be
derived that prove the effectiveness of the countermeasures. These tests
shall be integrated into the continuous integration workflow to ensure
that the security is not impaired by regressions.

Vulnerability Analyses
======================

In order to find weak spots in the software implementation,
vulnerability analyses (VA) shall be performed. Of special interest are
investigations on cryptographic algorithms, critical OS tasks, and
connectivity protocols.

On a pure software level, this encompasses

-  **Penetration testing** of the RTOS on a particular hardware
   platform, which involves testing the respective Zephyr OS
   configuration and hardware as one system.

-  **Side channel attacks** (timing invariance, power invariance, etc.)
   should be considered. For instance, ensuring **timing
   invariance** of the cryptographic algorithms and modules is
   required to reduce the attack surface. This applies to both the
   software implementations and when using cryptographic hardware.

-  **Fuzzing tests** shall be performed on both exposed APIs and
   protocols.

The list given above serves primarily illustration purposes. For each
module and for the complete Zephyr system (in general on a particular
hardware platform), a suitable VA plan shall be created and executed.
The findings of these analyses shall be considered in the security issue
management process, and learnings shall be formulated as guidelines and
incorporated into the secure coding guide.

If possible (as in case of fuzzing analyses), these tests shall be
integrated into the continuous integration process.

Security Certification
**********************

One goal of creating a secure branch of the Zephyr RTOS is to create a
certifiable system or certifiable submodules thereof. The certification
scope and scheme are yet to be decided. However, many certifications such
as Common Criteria [CCITSE12]_ require evidence that the evaluation
claims are indeed fulfilled, so a general certification process is
outlined in the following. Based on the final choices for the
certification scheme and evaluation level, this process needs to be
refined.

Generic Certification Process
=============================

In general, the steps towards a certification or precertification
(compare [MICR16]_) are:

1. The **definition of assets** to be protected within the Zephyr RTOS.
   Potential candidates are confidential information such as
   cryptographic keys, user data such as communication logs, and
   potentially IP of the vendor or manufacturer.

2. Developing a **threat model** and **security architecture** to
   protect the assets against exploits of vulnerabilities of the
   system. As a complete threat model includes the overall product
   including the hardware platform, this might be realized by a
   split model containing a precertified secure branch of Zephyr
   which the vendor could use to certify their Zephyr-enabled
   product.

3. Formulating an **evaluation target** that includes the
   **certification claims** on the security of the assets to be
   evaluated and certified, as well as assumptions on the operating
   conditions.

4. Providing **proof** that the claims are fulfilled. This includes
   consistent documentation of the security development process,
   etc.

These steps are partially covered in previous sections as well. In
contrast to these sections, the certification process only requires to
consider those components that shall be covered by the certification.
The security architecture, for example, considers assets on system level
and might include items not relevant for the certification.

Certification Options
=====================

For the security certification as such, the following options can be
pursued:

1. **Abstract precertification of Zephyr as a pure software system:**
   this option requires assumptions on the underlying hardware
   platform and the final application running on top of Zephyr. If
   these assumptions are met by the hardware and the application, a
   full certification can be more easily achieved. This option is
   the most flexible approach but puts the largest burden on the
   product vendor.

2. **Certification of Zephyr on specific hardware platform without a
   specific application in mind:** this scenario describes the
   enablement of a secure platform running the Zephyr RTOS. The
   hardware manufacturer certifies the platform under defined
   assumptions on the application. If these are met, the final
   product can be certified with little effort.

3. **Certification of an actual product:** in this case, a full product
   including a specific hardware, the Zephyr RTOS, and an
   application is certified.

In all three cases, the certification scheme (e.g., FIPS 140-2 [NIST02]_
or Common Criteria [CCITSE12]_), the scope of the certification
(main-stream Zephyr, security branch, or certain modules), and the
certification/assurance level need to be determined.

In case of partial certifications (options 1 and 2), assumptions on
hardware and/or software are required for certifications. These can
include [GHS10]_

-  **Appropriate physical security** of the hardware platform and its
   environment.

-  **Sufficient protection of storage and timing channels**  on
   the hardware platform itself and all connected devices. (No mentioning of
   remote connections.)

-  Only **trusted/assured applications** running on the device

-  The device and its software stack is configured and operated by
   **properly trained and trusted individuals** with no malicious
   intent.

These assumptions shall be part of the security claim and evaluation
target documents.

---

### Doc Security Sensor Threat (`doc/security/sensor-threat.rst`)

.. _sensor-threat:

Sensor Device Threat Model
##########################

This document describes a threat model for an IoT sensor device.
Spelling out a threat model helps direct development effort, and can
be used to help prioritize these efforts as well.

This device contains a sensor of some type (for example temperature, or a
pressure in a pipe), which sends this data to an SoC running a
microcontroller. This microcontroller connects to a cloud service, and
relays this sensor data to this service. The cloud service is also able
to send configuration data to the device, as well as software update
images. A general diagram can be seen in Figure 1:

.. figure:: media/sensor-model.svg

   Figure 1. Sensor General Diagram

In this sensor device, the sensor connects with the SoC via an SPI bus,
and the SoC has a network interface that it uses to communicate with the
cloud service. The particulars of these interfaces can impact the threat
model in unexpected ways, and variants on this will need to be
considered (for example, using a separate network interface SoC
connected via some type of bus).

This model also focuses on communicating via the MQTT-over-TLS protocol,
as this seems to be in wide use [1]_.

Assets
======

One aspect of the threat model to consider are assets involved in the
operation of the device. The following list enumerates the assets
included in this model:

1. **The bootloader**. This is a small code/data image contained in
   on-device flash that is the first code to run. In order to establish
   a root of trust, this image must be immutable. This model assumes
   that the SoC provides a mechanism to protect a region of the flash
   from future writes, and that this will be done after this image is
   programmed into the device, early in production [th-imboot]_.

2. **The application firmware image**. This asset consists of the
   remainder of the firmware run by the microcontroller. The distinction
   is made because this part of the image will need to be updated
   periodically as security vulnerabilities are discovered. Requirements
   for updates to this image are:

   a. The image shall only be replaced with an authorized image
      [th-authrepl]_.

   b. When an authorized replacement image is available, the update
      shall be done in a timely manner [th-timely-update]_.

   c. The image update shall be seen as atomic, meaning that when the
      image is run, the flash shall contain either the update image in
      its entirety, or the old image in its entirety
      [th-atomic-update]_.

3. **Root certificate list**. In order to authenticate the cloud service
   (server), the IoT device must have a list of root certificates that
   are allowed to sign the certificate on the server. For cloud-provider
   based services, this list will generally be provided by the service
   provider. Because the root certificates can expire, and possibly be
   revoked, this list will need to be periodically updated
   [th-root-certs]_, [th-root-check]_.

4. **Client secrets**. To authenticate the client to the service, the
   client must possess some kind of secret. This is generally a private
   key, usually either an RSA key or an EC private key. When
   establishing communication with the server, the device will use
   this secret either as part of the TLS establishment, or to sign a
   message used in the communication.

   This secret is generally generated by the service provider, or by
   software running elsewhere, and must be securely installed on the
   device. Policy may dictate that this secret be replaced
   periodically, which will require a way to update the client secret.
   Typically, the service will allow two or three active keys to allow
   this update to proceed while the old key is used.

   These secrets must be protected from read, and the smallest amount
   of code necessary shall have access to them. [th-secret-storage]_

5. **Current date/time**. TLS certificate verification requires
   knowledge of the current date and time in order to determine if the
   current time falls within the certificate's current validity time.
   Also, token based client authentication will generally require the
   client to sign a message containing a time window that the token is
   valid. Certificate validation requires the device's notion of date and
   time to be accurate within a day or so. Token generation generally
   requires the time to be accurate within 5-10 minutes.

   It may be possible to approximate secure time by querying an
   external time server.  Secure NTP is possibly beyond the
   capabilities of an IoT device.  The main risks of having incorrect
   time are denial of service (the device rejects valid certificates),
   and the generation of tokens with invalid times.  It could be
   possible to trick the device into generating tokens that are valid in
   the future, but the attacker would also have to spoof the server's
   certificate to be able to intercept this. [th-time]_

6. **Sensor data**. The data received from the sensor itself, and
   delivered to the service shall be delivered without modification or
   tampering.

7. **Device configuration**. Various configuration data, such as the
   hostname of the service to connect to, the address of a time server,
   frequency and parameters of when sensor data is sent to the service,
   and other need to be kept by the device. This configuration data will
   need to be updated periodically as the configuration changes. Updates
   should be allowed only from authorized parties. [th-conf]_

8. **Logs**. In order to assist with analysis of security issues, the
   device shall log information about security-pertinent events. IoT
   devices generally have limited storage, and as such, these logs need
   to be carefully selected. It may also be possible to send these log
   events to the cloud service where they can be stored in a more
   resource-available environment. Types of events that should be logged
   include:

   a. **Firmware image updates**. The system should log the download of
      new images, and when an image is successfully updated.

   b. **Client secret changes**. Changes and new client secrets should be
      logged.

   c. **Changes to the device configuration**.

   [th-logs]_

Communication
=============

In addition to assets, the threat model also considers the locations
where data or assets are communicated between entities of the system.

1. **Flash contents**. The flash device contains several regions. The
   contents of flash can be modified programmatically by the SoC's CPU.

   a. **The bootloader**. As described in the Assets section, the
      bootloader is a small section of the flash device containing the
      code initially run. This section shall be written early in the
      lifecycle of the device, and the flash device then configured to
      permanently disallow modification of this section. This
      configuration should also prevent modification via external
      interfaces, such as JTAG or SWD debuggers.

      The bootloader is responsible for verifying the signature of the
      application image as well as updating the application image from
      the update image when an update is needed.

      The bootloader shall verify the signature of the update image
      before installing it.

      The bootloader shall only accept an update image with a newer
      version number than the current image.

   b. **The application image**. The application image contains the code
      executed during normal operation of the device. Before running
      this image, the bootloader shall verify a digital signature of the
      image, to avoid running an image that has been tampered with. The
      flash/system shall be configured such that after the bootloader
      has completed, the CPU will be unable to write to the application
      image.

   c. **The update image**. This is an area of flash that holds a new
      version of the application image. This image will be downloaded
      and stored by the application during normal operation. When this
      has completed, the application can trigger a reboot, and the
      bootloader can install the new image.

   d. **Secret storage**. An area of the flash will be used to store
      client secrets. This area is written and read by a subset of the
      application image. The application shall be configured to
      protect this area from both reads and writes by code that does
      not need to have access to it, giving consideration to possible
      exploits found within a majority of the application code.
      Revealing the contents of the secrets would allow the attacker
      to spoof this device.

      Initial secrets shall be placed in the device during a
      provisioning activity, distinct from normal operation of the
      device. Later updates can be made under the direction of
      communication received over a secured channel to the service.

   e. **Configuration storage**. There shall be an area to store other
      configuration information. On resource-constrained devices, it is
      allowed for this to be stored in the same region as the secret
      storage, however, this adds additional code that has access to the
      secret storage area, and as such, more code that must be
      scrutinized.

   f. **Log storage**. The device may have an area of flash where log
      events can be written.

2. **Sensor/Actuator interface**. In this design, the sensor or actuator
   communicates with the SoC via a bus, such as SPI. The hardware design
   shall be made to make intercepting this bus difficult for an attack.
   Required techniques depend on the sensitivity and use of the sensor
   data, and can range from having the sensor mounted on the same PCB as
   the MCU to epoxy potting the entire device.

3. **Communication with cloud service**. Communication between the
   device, and the cloud service will be done over the general
   internet. As such, it shall be assumed that an attacker can
   arbitrarily intercept this channel and, for example, return spoofed
   DNS results or attempt man-in-the-middle attacks
   against communication with cloud services.

   The device shall use TLS for all communication with the cloud
   service [th-all-tls]_. The TLS stack shall be configured to use only cipher suites
   that are generally considered secure [2]_, including forward
   secrecy. The communication shall be secured by the following:

   a. **Cipher suite selection**. The device shall only allow
      communication with generally agreed secure cipher suites
      [th-tls-ciphers]_.

   b. **Server certificate verification**. The server presented by the
      server shall be verified [th-root-check]_.

      i.   **Naming**. The certificate shall name the host and service
           the cloud service server is providing.
           :rfc:`6125` describes best practices for this.
           It is permissible for the device to
           require the certificate to be more restrictive than as
           described in this RFC, provided the service can use a
           certificate that can comply.

      ii.  **Path validation**. The device shall verify that the
           certificate chain has a valid signature path from a root
           certificate contained within the device, to the certificate
           presented by the service.
           :rfc:`4158` describes this in general.
           The device is permitted to require a more
           restricted path, provided the server certificate used
           complies with this restriction.

      iii. **Validity period**. The validity period of all presented
           certificates shall be checked against the device's best
           notion of the current time.

   c. **Client authentication**. The client shall authenticate itself to
      the service using a secret known only to that particular device.
      There are several options, and the technique used is generally
      mandated by the particular service provider being used
      [th-tls-client-auth]_.

      i.  **TLS client certificates**. The TLS protocol allows the
          client to present a certificate, and assert its knowledge of
          the secret described by that certificate. Generally, these
          certificates will be stored within the service provider. These
          certificates can be self-signed, or signed by a CA. Since the
          service provider maintains a list of valid certificates
          (mapping them to a device identity), having these certificates
          signed by a CA does not add any additional security, but may
          be useful in the management of these certificates.

      ii. **Token-based authentication**. It is also possible for the
          client to authenticate itself using the *password* field of
          the MQTT CONNECT packet. However, the secret itself must not
          be transmitted in this packet. Instead, a token-based
          protocol, such as :rfc:`7519`'s JSON Web
          Token (JWT) can be used. These tokens will generally have a
          small validity period (e.g. 1 hour), to prevent them from
          being reused if they are intercepted. The token shall not be
          sent until the device has verified the identity of the server.

   d. **Random/Entropy source**. Cryptographic communication requires the
      generation of secure pseudorandom numbers. The device shall use a
      modern, accepted cryptographic random-bit generator to generate
      these random numbers. It shall use either a Non-Deterministic
      Random Bit Generator (True RBG) implemented in hardware within the
      SoC, or a Deterministic Random Bit Generator (Pseudo RBG) seeded
      by an entropy source within the SoC.  Please see NIST SP 800-90A
      for information on approved RBGs and NIST SP 800-90B for
      information on testing a device's entropy source [th-entropy]_.

4. **Communication with the time service**. Ideally, the device shall
   contain hardware that maintains a secure time. However, most SoCs in
   use do not have support for this, and it will be necessary to consult
   an external time service.
   :rfc:`4330` and referenced RFCs describe the Simple Network Time
   Protocol that can be used to query the current time from a network time
   server.

5. **Device lifecycle**. An IoT device will have a lifecycle from
   production to destruction and disposal of the device. Aspects of this
   lifecycle that impact security include initial provisioning, normal
   operation, re-provisioning, and destruction.

   a. **Initial provisioning**. During the initial provisioning stage,
      it is necessary to program the bootloader, an initial application
      image, a device secret, and initial configuration data
      [th-initial-provision]_. In
      addition, the bootloader flash protection shall be installed. Of
      this information, only the device secret needs to differ per
      device. This secret shall be securely maintained, and destroyed in
      all locations outside of the device once it has been programmed
      [th-initial-secret]_.

   b. **Normal operation**. Normal operation includes the behavior
      described by the rest of this document.

   c. **Re-provisioning**. Sometimes it is necessary to re-provision a
      device, such as for a different application. One way to do this is
      to keep the same device secret, and replace the configuration
      data, as well as the cloud service data associated with the
      device. It is also possible to program a new device secret, but if
      this is done it shall be done securely, and the new secret
      destroyed externally once programmed into the device
      [th-reprovision]_.

   d. **Destruction**. To prevent the device secret from being used to
      spoof the device, upon decommissioning, the secret for a
      particular device shall be rendered ineffective
      [th-destruction]_. Possibilities include:

      i.    Hardware destruction of the device.

      ii.   Securely wiping the flash area containing the
            secret [3]_.

      iii.  Removing the device identity and certificate from the
            service.

Other Considerations
====================

In addition to the above, network connected devices generally will need
a way to configure them to connect to the network environment they are
placed in. There are numerous ways of doing this, and it is important
for these configuration methods to not circumvent the security
requirements described above.

Threats
=======

.. [th-imboot] Must boot with an immutable bootloader.

.. [th-authrepl] Application image shall only be replaced with an
   authorized image.

.. [th-timely-update]
   Application updates shall be done in a timely manner.

.. [th-atomic-update]
   Application updates shall be atomic.

.. [th-root-certs]
   TLS must have a list of trusted root certificates.

.. [th-root-check]
   TLS must verify root certificate from server is valid.

.. [th-secret-storage]
   There must be a mechanism to securely store client secrets.  The
   least amount of code necessary shall have access to these secrets.

.. [th-time]
   System must have moderately accurate notion of the current
   date/time.

.. [th-conf]
   The system must receive, and keep configuration data.

.. [th-logs]
   The system must log security-related events, and either store them
   locally, or send to a service.

.. [th-all-tls]
   All communications with the cloud service shall use TLS.

.. [th-tls-ciphers]
   TLS shall be configured to allow only generally agreed cipher
   suites (including forward secrecy).

.. [th-tls-client-auth]
   The device shall authenticate itself with the cloud provider using
   one of the methods described.

.. [th-entropy]
   The TLS layer shall use a modern, accepted cryptographic random-bit
   generator seeded by an entropy source within the SoC.

.. [th-initial-provision]
   The device shall have a per-device secret loaded before deployment.

.. [th-initial-secret]
   The initial secret shall be securely maintained, and destroyed in
   any external location as soon as the device is provisioned.

.. [th-reprovision]
   Reprovisioning a device shall be done securely.

.. [th-destruction]
   Upon decommissioning, the device secret shall be rendered
   ineffective.

Notes
=====

.. [1]
   See https://www.slideshare.net/kartben/iot-developer-survey-2018. As
   of this writing, the three major cloud IoT service providers, AWS
   IoT, Google Cloud IoT, and Microsoft Azure IoT all provide MQTT over
   TLS. Some feedback has suggested that some find difficulty with UDP
   protocols and routing issues on various networks.

.. [2]
   As new exploits are discovered, what is considered secure can
   change.
   Organizations such as https://www.ssllabs.com/ provide information on
   current ideas of how TLS must be configured to be secure.

.. [3]
   Note that merely erasing this flash area is unlikely to be
   sufficient.

---

### Doc Security Vulnerabilities (`doc/security/vulnerabilities.rst`)

.. _vulnerabilities:

Vulnerabilities
###############

This page collects all of the vulnerabilities that are discovered and
fixed in each release.  It will also often have more details than is
available in the releases.  Some vulnerabilities are deemed to be
sensitive, and will not be publicly discussed until there is
sufficient time to fix them.  Because the release notes are locked to
a version, the information here can be updated after the embargo is
lifted.

Vulnerabilities from previous years are collected on separate pages:

.. toctree::
   :maxdepth: 1

   vulnerabilities/2017
   vulnerabilities/2019
   vulnerabilities/2020
   vulnerabilities/2021
   vulnerabilities/2022
   vulnerabilities/2023
   vulnerabilities/2024
   vulnerabilities/2025

CVE-2026
========

:cve:`2026-0849`
----------------

crypto: ATAES132A response length allows stack buffer overflow

Malformed ATAES132A responses with an oversized length field overflow a 52-byte
stack buffer in the Zephyr crypto driver, allowing a compromised device or bus
attacker to corrupt kernel memory and potentially hijack execution.

- `Zephyr project bug tracker GHSA-ff4p-3ggg-prp6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-ff4p-3ggg-prp6>`_

This has been fixed in main for v4.4.0

- `PR 103163 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/103163>`_

:cve:`2026-1677`
----------------

net: TLS 1.2 connections allowed on TLS 1.3 sockets

Zephyr sockets created with ``IPPROTO_TLS_1_3`` can still negotiate a TLS 1.2 connection when both
TLS versions are enabled in Kconfig, because the socket-level protocol selection is not propagated
to mbedTLS (e.g. via ``mbedtls_ssl_conf_min_tls_version``). The ClientHello advertises both versions
and the peer can establish TLS 1.2, so applications that assumed ``IPPROTO_TLS_1_3`` enforces TLS
1.3 may silently use TLS 1.2 and remain exposed to TLS 1.2-specific weaknesses.

- `Zephyr project bug tracker GHSA-23r2-m5wx-4rvq
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-23r2-m5wx-4rvq>`_

This has been fixed in main for v4.4.0

- `PR 102570 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/102570>`_


:cve:`2026-1678`
----------------

dns: memory‑safety issue in the DNS name parser

``dns_unpack_name()`` caches the buffer tailroom once and reuses it while appending
DNS labels. As the buffer grows, the cached size becomes incorrect, and the final
null terminator can be written past the buffer. With assertions disabled (default),
a malicious DNS response can trigger an out-of-bounds write when ``CONFIG_DNS_RESOLVER``
is enabled.


- `Zephyr project bug tracker GHSA-536f-h63g-hj42
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-536f-h63g-hj42>`_

This has been fixed in main for v4.4.0

- `PR 99683 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/99683>`_

- `PR 99830 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/99830>`_

- `PR 99829 fix for 4.2
  <https://github.com/zephyrproject-rtos/zephyr/pull/99829>`_

- `PR 99828 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/99828>`_

:cve:`2026-1679`
----------------

The eswifi socket offload driver copies user-provided payloads into a fixed buffer without checking
available space; oversized sends overflow eswifi->buf, corrupting kernel memory (CWE-120). Exploit
requires local code that can call the socket send API; no remote attacker can reach it directly.

- `Zephyr project bug tracker GHSA-qx3g-5g22-fq5w
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qx3g-5g22-fq5w>`_

This has been fixed in main for v4.4.0

- `PR 102119 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/102119>`_

:cve:`2026-1681`
----------------

net: Stack Overflow with Ping (to own IP Address) via Shell

Issuing an ICMP ping via the ``net ping`` shell command to a device's own IPv4 address causes the
network stack to recursively re-enter the input path on the same system work-queue stack. Because
the destination is recognized as a local address, both the echo request and the resulting echo reply
are processed inline before the current frame returns. The nested input-path frames exceed the
work-queue stack and trigger a stack overflow.

- `Zephyr project bug tracker GHSA-6fcc-8rwr-w7xx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6fcc-8rwr-w7xx>`_

This has been fixed in main for v4.4.0

- `PR 102268 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/102268>`_

:cve:`2026-4179`
----------------

stm32: usb: Infinite while loop in Interrupt Handler

Issues in stm32 USB device driver can lead to an infinite while loop.

- `Zephyr project bug tracker GHSA-9xg7-g3q3-9prf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9xg7-g3q3-9prf>`_

This has been fixed in main for v4.4.0

- `PR 104390 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104390>`_

:cve:`2026-5066`
----------------

net: sockets: tls: Potential out-of-bounds write/read in socket_op_vtable::connect function

A potential out-of-bounds write/read exists in the TLS socket connect path of the
network sockets subsystem (``subsys/net/lib/sockets/sockets_tls.c``). When the TLS
session cache is enabled, ``tls_session_store()`` and ``tls_session_restore()``
``memcpy`` the caller-supplied address into a fixed-size buffer using the
caller-controlled ``addrlen`` value without validating it against the destination
size. Since ``struct net_sockaddr`` is an opaque type, an application can pass an
``addrlen`` larger than ``sizeof(struct net_sockaddr)`` (for example 128 bytes into
a 24-byte stack buffer), causing the ``memcpy`` to read and write past the end of
the address memory used by the TLS session cache. This can lead to a crash and
denial of service, and potentially to arbitrary code execution.

- `Zephyr project bug tracker GHSA-wgrc-jrf6-24f3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wgrc-jrf6-24f3>`_

This has been fixed in main for v4.4.0

- `PR 104871 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104871>`_

- `PR 105044 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/105044>`_

- `PR 105043 fix for 4.2
  <https://github.com/zephyrproject-rtos/zephyr/pull/105043>`_

- `PR 105042 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/105042>`_

:cve:`2026-5067`
----------------

Out-of-bounds read/write in HTTP WebSocket upgrade via non-null-terminated
Sec-WebSocket-Key

A remote, unauthenticated attacker can trigger memory corruption in Zephyr's
HTTP server WebSocket upgrade path by sending a crafted ``Sec-WebSocket-Key``
header that is copied without guaranteed NUL termination and then passed to
``strlen()``. This can cause out-of-bounds read and out-of-bounds write on
stack memory, leading to a crash (denial of service) and potentially code
execution. The path is reachable when ``CONFIG_HTTP_SERVER_WEBSOCKET`` is
enabled.

- `Zephyr project bug tracker GHSA-wgr4-9pwq-94vj
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wgr4-9pwq-94vj>`_

This has been fixed in main for v4.4.0

- `PR 104740 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104740>`_

- `PR 107927 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/107927>`_

- `PR 107926 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/107926>`_

:cve:`2026-5068`
----------------

Bluetooth: L2CAP LE CoC: remote out-of-bounds write via segmentation counter
stored in net_buf user_data

A remote, unauthenticated BLE peer can trigger a 2-byte out-of-bounds write in
the Bluetooth host during L2CAP LE CoC SDU reassembly. When the application
enables segmentation (via ``chan_ops.alloc_buf``) and the chosen RX pool has a
``user_data_size`` smaller than 2 bytes, the segmentation counter stored in the
``net_buf`` user_data area is written out of bounds in
``l2cap_chan_le_recv_seg`` (``subsys/bluetooth/host/l2cap.c``). This can lead to
heap corruption and a fatal error.

- `Zephyr project bug tracker GHSA-qrcq-hxwj-mqxm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qrcq-hxwj-mqxm>`_

This has been fixed in main for v4.4.0

- `PR 104913 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104913>`_

- `PR 108335 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108335>`_

- `PR 108336 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108336>`_

:cve:`2026-5071`
----------------

can: Local Denial of Service via SocketCAN Send

The SocketCAN send path (``zcan_sendto_ctx``) validated the caller-supplied buffer
length with a ``NET_ASSERT`` instead of a real runtime check. In production builds
where assertions are compiled out, a userspace app could pass a buffer shorter
than ``struct socketcan_frame``, and ``socketcan_to_can_frame()`` would dereference
fields past the end of that buffer — an out-of-bounds read that can crash the
system (local DoS) or, because the parsed frame is then transmitted, potentially
leak adjacent memory.

- `Zephyr project bug tracker GHSA-c3w6-x7m3-3c58
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c3w6-x7m3-3c58>`_

This has been fixed in main for v4.4.0

- `PR 104654 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104654>`_

- `PR 104679 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/104679>`_

- `PR 104678 fix for 4.2
  <https://github.com/zephyrproject-rtos/zephyr/pull/104678>`_

- `PR 104677 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/104677>`_

:cve:`2026-5072`
----------------

net: ptp: Potential Denial of Service via PTP Interval Shift

A bitwise shift vulnerability allows a remote attacker to cause undefined
behavior and potential crashes in the PTP subsystem by sending a crafted PTP
Management or Delay Response packet containing a large, unvalidated, negative
log_announce_interval used in the bitwise shift operation.

- `Zephyr project bug tracker GHSA-3v98-458v-388r
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3v98-458v-388r>`_

This has been fixed in main for v4.4.0

- `PR 104613 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104613>`_

- `PR 108337 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108337>`_

- `PR 108338 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108338>`_

:cve:`2026-5589`
----------------

Bluetooth: Mesh: Out-of-bounds write caused by an integer underflow

An integer underflow in ``bt_mesh_sol_recv()`` in the Bluetooth Mesh solicitation
handling (``subsys/bluetooth/mesh/solicitation.c``) leads to an out-of-bounds write.
When ``CONFIG_BT_MESH_OD_PRIV_PROXY_SRV`` is enabled, the function parses solicitation
PDUs from raw BLE advertising payloads. The AD parsing loop reads an attacker-controlled
length byte and computes ``reported_len - 3`` without checking that ``reported_len`` is
at least 3. When the value is smaller, the signed subtraction yields a negative number
that bypasses the length guard and is then implicitly converted to a very large
``size_t``, advancing the buffer pointer far out of bounds so that subsequent reads
dereference invalid memory. A nearby BLE device can trigger this with a non-connectable
advertisement carrying a UUID16 AD structure and a crafted length byte, with no pairing
or prior association required, potentially leading to denial of service or arbitrary
code execution.

- `Zephyr project bug tracker GHSA-4pm9-4v7f-x6gr
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4pm9-4v7f-x6gr>`_

This has been fixed in main for v4.4.0

- `PR 105585 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/105585>`_

- `PR 108334 fix for 4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108334>`_

- `PR 108333 fix for 3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108333>`_

:cve:`2026-5590`
----------------

net: ip/tcp: Null pointer dereference can be triggered by a race condition

A race condition during TCP connection teardown can cause tcp_recv() to operate on a connection that
has already been released. If tcp_conn_search() returns NULL while processing a SYN packet, a NULL
pointer derived from stale context data is passed to tcp_backlog_is_full() and dereferenced without
validation, leading to a crash.

- `Zephyr project bug tracker GHSA-4vqm-pw24-g9jp
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4vqm-pw24-g9jp>`_

This has been fixed in main for v4.4.0

- `PR 102110 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/102110>`_

:cve:`2026-8718`
----------------

Out-of-bounds write in DTLS peer Connection ID getsockopt (``TLS_DTLS_PEER_CID_VALUE``) in Zephyr net sockets/TLS

``tls_opt_dtls_peer_connection_id_value_get()`` in
``subsys/net/lib/sockets/sockets_tls.c``, which handles ``getsockopt(SOL_TLS,
TLS_DTLS_PEER_CID_VALUE)``, passed the caller-supplied ``optval`` directly to
``mbedtls_ssl_get_peer_cid()`` without verifying the buffer was at least
``MBEDTLS_SSL_CID_OUT_LEN_MAX`` (default 32) bytes. ``mbedtls_ssl_get_peer_cid()``
copies the peer-negotiated DTLS Connection ID (length 1..\
``MBEDTLS_SSL_CID_OUT_LEN_MAX``) into that buffer without a destination-size parameter,
so a caller-supplied ``optlen`` smaller than the CID causes a write of up to 31 bytes
past the buffer end.

In ``CONFIG_USERSPACE`` builds the getsockopt syscall verifier
(``z_vrfy_zsock_getsockopt``) bounce-buffers the user's ``optval`` into a kernel
allocation of exactly ``optlen`` bytes (``k_usermode_alloc_from_copy`` ->
``z_thread_malloc``), so an unprivileged user thread that passes a small ``optlen`` on a
connected DTLS socket with Connection ID enabled induces a kernel-heap buffer overflow,
with the overflowing content being the remote peer's CID.

The defect requires ``CONFIG_MBEDTLS_SSL_DTLS_CONNECTION_ID``, an established DTLS
session with a negotiated peer CID, and (for the kernel-crossing case)
``CONFIG_USERSPACE``. Introduced when the ``TLS_DTLS_CID`` option was added (v3.5.0).

The fix rejects callers whose ``optlen`` is below ``MBEDTLS_SSL_CID_OUT_LEN_MAX`` with
-EINVAL.

- `Zephyr project bug tracker GHSA-p3r6-mx6c-33gq
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p3r6-mx6c-33gq>`_

This has been fixed in main for v4.5.0

- `PR 109244 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109244>`_

- `PR 109624 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109624>`_

- `PR 113749 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113749>`_

- `PR 113750 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113750>`_

:cve:`2026-9263`
----------------

Out-of-bounds read in Bluetooth Controller ISOAL framed RX reassembly leaks adjacent memory into host HCI ISO packets

The Zephyr Bluetooth controller ISO Adaptation Layer
(``subsys/bluetooth/controller/ll_sw/isoal.c``) fails to validate the length field of a
framed ISO PDU start segment. Per the Bluetooth specification a start segment (``sc=0``)
always carries a 3-byte ``time_offset``, so its segment-header ``len`` must be at least
``PDU_ISO_SEG_TIMEOFFSET_SIZE`` (3). ``isoal_check_seg_header()`` accepted start
segments with ``len`` < 3 as valid, and ``isoal_rx_framed_consume()`` then computed
``length = seg_hdr->len - 3`` in a ``uint8_t``, underflowing to 253-255 when ``len`` is
0-2. That oversized length is passed to ``isoal_rx_append_to_sdu()``, whose copy is
clamped only against the destination SDU buffer size, not the source PDU length, so up
to ~255 bytes of controller memory beyond the received PDU are copied (via
``sink_sdu_write_hci()``/``net_buf_add_mem``) into an HCI ISO data packet and delivered
to the host. The PDU and its segment headers are entirely attacker-controlled and arrive
over the air, reachable through both the CIS and BIS-sync HCI data paths
(``hci_driver.c``) and the vendor data path (``ull_iso.c``), so a remote CIS peer or a
broadcaster the device is synced to can trigger an out-of-bounds read causing
information disclosure to the host and potential denial of service (faults or malformed
oversized HCI ISO packets). The flaw affects all Zephyr releases since framed ISO
reception was introduced in v3.0.0. The fix rejects ``sc=0`` segments with ``len`` < 3
in ``isoal_check_seg_header()`` and adds a guard before the subtraction in
``isoal_rx_framed_consume()``.

- `Zephyr project bug tracker GHSA-6gvp-pmh8-fjh2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6gvp-pmh8-fjh2>`_

This has been fixed in main for v4.5.0

- `PR 109369 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109369>`_

- `PR 109617 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109617>`_

- `PR 109619 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/109619>`_

- `PR 109618 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109618>`_

:cve:`2026-10593`
-----------------

Remotely triggerable NULL-pointer dereference in Bluetooth LE Audio BAP unicast client QoS-state handling

The Zephyr Bluetooth LE Audio Basic Audio Profile (BAP) unicast client mishandles
peer-supplied ASE state notifications. In ``unicast_client_ep_qos_state()``
(``subsys/bluetooth/audio/bap_unicast_client.c``), the handler writes
attacker-controlled QoS fields (``interval``, ``framing``, ``phy``, ``sdu``, ``rtn``,
``latency``, ``pd``) through the ``stream->qos`` pointer with only a ``stream != NULL``
guard. ``stream->qos`` is ``NULL`` for any stream that has been codec-configured via
``bt_bap_stream_config()`` but not yet added to a unicast group (it is set only by
``unicast_group_add_stream()``).

A malicious or buggy remote ASCS server, to which the local device is connected as a BAP
unicast client, can send a GATT notification announcing the ASE has entered the QoS
Configured state while the local endpoint is still in the Codec Configured state — a
transition the dispatcher explicitly permits — during that window, causing a write
through a NULL pointer and a crash (denial of service). The data written is itself
remote-controlled.

The defect shipped in v4.3.0 and v4.4.0 (and earlier). The fix re-points all BAP QoS
storage to the always-valid embedded ``ep->qos`` struct, eliminating the NULL
dereference.

- `Zephyr project bug tracker GHSA-22q8-m94g-2pwh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-22q8-m94g-2pwh>`_

This has been fixed in main for v4.5.0

- `PR 104887 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104887>`_

- `PR 110779 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110779>`_

- `PR 110777 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110777>`_

:cve:`2026-10634`
-----------------

Use-after-free in Zephyr native TCP ``net_tcp_foreach()`` due to dropping ``tcp_lock`` during the callback

Zephyr's native TCP stack iterates the global connection list in ``net_tcp_foreach()``
(``subsys/net/ip/tcp.c``) using the ``SYS_SLIST_FOR_EACH_CONTAINER_SAFE`` macro, which
caches a pointer to the next list node. Prior to this fix the function released
``tcp_lock`` while invoking the per-connection callback and re-acquired it afterwards.
During that window a concurrent ``tcp_conn_release()``, running on the dedicated TCP
work-queue thread when a connection's reference count drops to zero (e.g. a remote peer
closing or resetting the connection), can remove and ``k_mem_slab_free()`` the cached
next connection. When the iterator advances it dereferences the freed (and possibly
reallocated) slab memory — a use-after-free that can crash the system (denial of
service) and, if the slot has been reused, cause the callback to operate on an
attacker-influenced object (potential information disclosure or further fault).
``net_tcp_foreach()`` is reached in production via the ``net conn`` network shell
command and via ``net_tcp_close_all_for_iface()`` on interface-down; the freeing side is
driven by ordinary TCP traffic. The fix moves the connection/context teardown in
``tcp_conn_release()`` inside the ``tcp_lock`` critical section and keeps ``tcp_lock``
held across the callback in ``net_tcp_foreach()``. The defect was introduced with the
modern (TCP2) stack in 2020 and affects releases up to and including v4.4.0.

- `Zephyr project bug tracker GHSA-6c57-xfhw-j26x
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6c57-xfhw-j26x>`_

This has been fixed in main for v4.5.0

- `PR 106992 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/106992>`_

- `PR 107287 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/107287>`_

- `PR 107288 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/107288>`_

- `PR 107289 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107289>`_

:cve:`2026-10635`
-----------------

Dangling memory-domain pointer (use-after-free) in Xtensa MMU page-table code on memory-domain de-init

On Xtensa targets with ``CONFIG_USERSPACE`` and ``CONFIG_XTENSA_MMU``, the page-table
code (``arch/xtensa/core/ptables.c``) maintains a global list, ``xtensa_domain_list``,
of active memory domains using a list node embedded inside the caller-owned ``struct
k_mem_domain``. When a domain is destroyed via ``k_mem_domain_deinit()`` ->
``arch_mem_domain_deinit()``, the page tables are torn down and ``domain->arch.ptables``
is set to ``NULL``, but the domain's node was not removed from ``xtensa_domain_list``.
The freed/deinitialized domain therefore remained linked into the global list as a
dangling pointer into caller-owned storage that may then be freed or reused.

Any subsequent ``arch_mem_map()``/``arch_mem_unmap()`` operation (widely invoked by
kernel memory-mapping and demand-paging code) traverses the stale node and dereferences
``domain->ptables``: at minimum a NULL pointer dereference causing a fatal MMU exception
(denial of service), and if the ``k_mem_domain`` storage has been freed or reused, a
use-after-free in which a stale/controlled ``ptables`` value is dereferenced and written
through during the page-table walk (``l2_page_table_map`` writes ``l1_table[...]`` and
``l2_table[...]``, and ``xtensa_mmu_compute_domain_regs`` writes into the domain struct
and the L1 table), yielding page-table memory corruption that can undermine userspace
isolation.

The vulnerable path is reachable only from privileged kernel/supervisor code
(``k_mem_domain_deinit`` is not a syscall), not directly from unprivileged user threads
or remotely. Affected: Zephyr v4.4.0 (the Xtensa memory-domain de-initialization feature
was introduced in commit 3032b58f52d and first shipped in v4.4.0); fixed on ``main`` by
adding ``sys_slist_find_and_remove()`` in ``arch_mem_domain_deinit()``. The Xtensa MPU
path is unaffected.

- `Zephyr project bug tracker GHSA-39v7-cx8j-gq82
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-39v7-cx8j-gq82>`_

This has been fixed in main for v4.5.0

- `PR 106923 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/106923>`_

- `PR 110758 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110758>`_

:cve:`2026-10636`
-----------------

Use-after-free in Zephyr IPv4 IGMP send path (``igmp_send``)

In Zephyr's IPv4 IGMP implementation, ``igmp_send()`` in ``subsys/net/ip/igmp.c`` read
the network interface back out of the packet via ``net_pkt_iface(pkt)`` after the packet
had been handed to ``net_send_data()``. On the successful-send path the packet's last
reference may already have been released by the L2 driver or by the network stack's TX
handling (synchronously in the default ``NET_TC_TX_COUNT=0`` immediate-transmit
configuration), returning the ``net_pkt`` slab block to its free list. The subsequent
``net_pkt_iface(pkt)`` dereferences the freed packet, a use-after-free read; with
``CONFIG_NET_STATISTICS_PER_INTERFACE`` the resulting dangling interface pointer is
further dereferenced for a statistics-counter write. The IGMP send path is reachable
without authentication from inbound IPv4 IGMP membership queries addressed to 224.0.0.1
(``net_ipv4_igmp_input`` -> ``send_igmp_report``/``send_igmp_v3_report`` ->
``igmp_send``), as well as from local multicast join/leave/rejoin operations. Realistic
impact is undefined behavior and potential denial of service (sporadic crash or stats
corruption); a controllable write requires the asynchronous TX path plus a concurrent
slab reuse. The flaw was introduced with IGMPv2 support and affects releases from v2.6.0
through v4.4.0. The fix caches the interface pointer before sending. Note the analogous
IPv6 MLD path (``mld_send`` in ``subsys/net/ip/ipv6_mld.c``) retains the same unfixed
pattern.

- `Zephyr project bug tracker GHSA-fj6q-975v-65c9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fj6q-975v-65c9>`_

This has been fixed in main for v4.5.0

- `PR 107100 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107100>`_

- `PR 110659 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110659>`_

- `PR 110658 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110658>`_

- `PR 107369 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107369>`_

:cve:`2026-10637`
-----------------

Use-after-free of ``net_pkt`` in IPv6 MLD send path triggerable by a link-local MLD Query

``subsys/net/ip/ipv6_mld.c``:``mld_send()`` read the packet interface via
``net_pkt_iface(pkt)`` after ``net_send_data(pkt)`` returned successfully. Per the
network stack's ownership contract (``include/zephyr/net/net_core.h``, and the explicit
warning in ``subsys/net/ip/net_core.c``:453-460 'do not use pkt after that call'), a
successful send transfers ownership of the ``net_pkt`` and the L2 driver frees it (e.g.
``ethernet_send()`` unrefs the packet on success,
``subsys/net/l2/ethernet/ethernet.c``:790), returning it to its ``k_mem_slab``. The
subsequent ``net_pkt_iface(pkt)`` is therefore a read of a freed object; the recovered
interface pointer is then dereferenced and incremented by the per-interface statistics
path (``net_stats.h`` ``UPDATE_STAT``/``SET_STAT``) when
``CONFIG_NET_STATISTICS_PER_INTERFACE`` is enabled. If the freed slot is concurrently
reallocated, ``pkt->iface`` may read back as ``NULL`` (NULL-pointer dereference / crash)
or as a stale/garbage pointer (stray increment write / memory corruption). The path is
reachable remotely on the local link without authentication: ``handle_mld_query()``
(registered for ``NET_ICMPV6_MLD_QUERY``) responds to a valid MLDv2 General Query
(unspecified multicast address, hop limit 1) by calling ``send_mld_report()`` ->
``mld_send()``. The result is a remotely triggerable denial of service of the networking
stack, with a narrow possibility of memory corruption. The fix caches the interface in a
local before sending and no longer touches the packet after ``net_send_data()``. The
IPv4/IGMP sibling (``igmp_send``) already used the corrected pattern.

- `Zephyr project bug tracker GHSA-m23w-34pp-4h92
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m23w-34pp-4h92>`_

This has been fixed in main for v4.5.0

- `PR 107100 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107100>`_

- `PR 110659 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110659>`_

- `PR 110658 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110658>`_

- `PR 107369 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107369>`_

:cve:`2026-10638`
-----------------

Use-after-free in Zephyr ICMPv6 RX path when updating statistics after sending an echo reply or error

``subsys/net/ip/icmpv6.c`` reads the network interface from a ``net_pkt`` after that
packet has been handed to ``net_try_send_data()``. In ``icmpv6_handle_echo_request()``
and ``net_icmpv6_send_error()``, the post-send statistics update calls
``net_pkt_iface(reply)``/``net_pkt_iface(pkt)`` on the just-sent packet. The send path
(``net_try_send_data`` -> ``net_if_tx``) unreferences and may free the packet back to
its memory slab before returning — synchronously in the RX thread when no TX queue is
configured (``CONFIG_NET_TC_TX_COUNT`` == 0), and asynchronously the driver/L2 may
already have freed it otherwise. ``net_pkt_iface()`` therefore dereferences a freed (and
possibly reused) ``net_pkt``; with ``CONFIG_NET_STATISTICS_PER_INTERFACE`` the stale
``iface`` pointer is further dereferenced and written through
(``iface->stats.icmp.sent++``), turning the use-after-free read into a write through an
attacker-influenceable pointer. The core stack already documents this hazard in
``net_core.c`` ("do not use pkt after that call") and caches ``iface`` before sending;
the ICMPv6 callers did not. An unauthenticated remote attacker triggers the flaw simply
by sending an ICMPv6 Echo Request (ping) or an IPv6 packet that elicits an ICMPv6 error
(unknown next header, fragment reassembly timeout, destination unreachable), leading to
denial of service via crash and potential memory corruption. Affected: Zephyr networking
with ``CONFIG_NET_NATIVE_IPV6``, roughly v4.2.0 through v4.4.0. The fix caches the
interface pointer before sending and uses it for all statistics updates; the sibling
commit 86e21665d46 fixes the identical bug in ICMPv4.

- `Zephyr project bug tracker GHSA-m92g-94xv-wvw2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m92g-94xv-wvw2>`_

This has been fixed in main for v4.5.0

- `PR 107100 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107100>`_

- `PR 110659 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110659>`_

- `PR 110658 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110658>`_

- `PR 107369 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107369>`_

:cve:`2026-10639`
-----------------

Use-after-free reading ``net_pkt_iface()`` of a sent ICMPv4 echo-reply packet in ``icmpv4_handle_echo_request()``

In Zephyr's native IPv4 stack, ``icmpv4_handle_echo_request()`` in
``subsys/net/ip/icmpv4.c`` builds an echo-reply packet (``reply``), hands it to
``net_try_send_data()``, and then, on success, calls
``net_stats_update_icmp_sent(net_pkt_iface(reply))``. ``net_try_send_data()`` transfers
ownership of ``reply`` to the TX path (``net_if_try_queue_tx`` -> ``net_if_tx`` ->
L2/driver send, or the asynchronous ``net_if_tx_thread``), which can unref it to
refcount 0 and return the ``struct net_pkt`` to its slab (``net_pkt_unref`` ->
``k_mem_slab_free``) before the stats line runs. ``net_core.c`` documents this exact
contract ('the pkt might contain garbage already ... do not use pkt after that call').

The post-send ``net_pkt_iface(reply)`` therefore reads ``reply->iface`` out of a freed
(and possibly already reallocated) ``net_pkt``, a use-after-free read; with
``CONFIG_NET_STATISTICS_PER_INTERFACE`` the stats macro additionally increments a
counter through that value, i.e. a dereference/write through a stale or recycled-slot
pointer.

The path is reached unauthenticated by any remote host that pings the device
(``net_icmpv4_input`` -> ``net_icmp_call_ipv4_handlers`` ->
``icmpv4_handle_echo_request``) and is gated on ``CONFIG_NET_STATISTICS_ICMP``. Impact
is a probabilistic read of recycled packet memory plus a possible wild-pointer write
under a timing race, leading most likely to corrupted interface statistics or a remotely
triggerable crash (DoS).

The defect was introduced in 2019 (v1.14) and is present through v4.4.0. The companion
change in ``net_icmpv4_send_error()`` is not a use-after-free because it reads
``net_pkt_iface(orig)``, the caller-owned received packet, which stays alive across the
send. The fix caches the interface pointer from the live received packet before sending
and uses it for the post-send stats updates.

- `Zephyr project bug tracker GHSA-qhrf-w466-qmpw
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qhrf-w466-qmpw>`_

This has been fixed in main for v4.5.0

- `PR 107100 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107100>`_

- `PR 110659 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110659>`_

- `PR 110658 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110658>`_

- `PR 107369 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107369>`_

:cve:`2026-10640`
-----------------

Use-after-free reading ``net_pkt`` ``iface`` after send in IPv6 Neighbor Discovery (``ipv6_nbr.c``)

Zephyr's IPv6 Neighbor Discovery send paths (``net_ipv6_send_na``, ``net_ipv6_send_ns``,
``net_ipv6_send_rs`` in ``subsys/net/ip/ipv6_nbr.c``) updated the per-interface ICMP-
sent statistics by calling ``net_pkt_iface(pkt)`` after ``net_send_data(pkt)`` had
already returned successfully. On the success path the network stack owns and releases
the packet's reference (the L2/driver send unrefs it, e.g. ``ethernet_send`` ->
``net_pkt_unref``), so for a freshly allocated packet with refcount 1 the ``net_pkt``
slab block can be freed before the statistics line runs (synchronously when no TX queue
thread is configured, or via a concurrent TX thread otherwise).

The subsequent ``net_pkt_iface(pkt)`` reads ``pkt->iface`` from the freed slab block,
and with ``CONFIG_NET_STATISTICS_PER_INTERFACE`` enabled that loaded pointer is
dereferenced to increment ``iface->stats.icmp.sent``, a use-after-free (CWE-416). If the
slab block was reallocated in the meantime the read/increment targets unrelated or
attacker-influenced memory, yielding corrupted statistics, a fault/crash (denial of
service), or potential limited memory corruption.

The vulnerable Neighbor Advertisement path is reachable by any unauthenticated on-link
node simply by sending ICMPv6 Neighbor Solicitations to a Zephyr node with native IPv6
enabled (``handle_ns_input`` -> ``net_ipv6_send_na``).

Affected from v3.3.0 through v4.4.0; the fix uses the already-available ``iface``
argument instead of touching the sent packet. Configurations without per-interface
statistics dereference only a global counter and are not affected by the memory-safety
aspect.

- `Zephyr project bug tracker GHSA-r74c-mr4m-7g9g
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-r74c-mr4m-7g9g>`_

This has been fixed in main for v4.5.0

- `PR 107100 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107100>`_

- `PR 110659 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110659>`_

- `PR 110658 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110658>`_

- `PR 107369 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/107369>`_

:cve:`2026-10641`
-----------------

Out-of-bounds write in Bluetooth HFP Hands-Free CIND indicator parsing (cind_handle_values)

Zephyr's Bluetooth Classic Hands-Free Profile (HFP) Hands-Free role parser
(subsys/bluetooth/host/classic/hfp_hf.c) contains an out-of-bounds write. During Service
Level Connection setup the HF sends AT+CIND=? and parses the AG's +CIND: response in
cind_handle(), which assigns a per-entry counter ``index`` and calls
cind_handle_values() for each list element. cind_handle_values() then wrote
``hf->ind_table[index] = i`` without verifying that ``index`` is within the 20-element
int8_t ind_table[] array of struct bt_hfp_hf. Because the parser places no cap on the
number of +CIND: list entries, a remote Attendant Gateway (a malicious, compromised, or
spoofed peer the device connects to over Bluetooth) can send a response with more than
20 recognized indicator entries and drive ``index`` arbitrarily large, writing a small
attacker-positioned value past the array into adjacent struct fields (feature masks,
SDP/version state, the calls[] array, work/atomic bookkeeping) and potentially beyond
the static connection pool slot. This yields memory corruption and at least denial of
service of the Bluetooth host, triggered by a single malformed AT response with no user
interaction. The sibling consumer ag_indicator_handle_values() already performed the
equivalent bounds check; this commit adds the same ``index >=
ARRAY_SIZE(hf->ind_table)`` guard to close the gap. Affects builds with CONFIG_BT_HFP_HF
enabled; introduced with the original HFP HF CIND parser (~v1.7) and present through
v4.4.0.

- `Zephyr project bug tracker GHSA-wx5j-q6f2-59p3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wx5j-q6f2-59p3>`_

This has been fixed in main for v4.5.0

- `PR 107331 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107331>`_

- `PR 110765 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110765>`_

- `PR 110764 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110764>`_

- `PR 110763 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110763>`_

:cve:`2026-10642`
-----------------

Unbounded TX busy-loop DoS in Zephyr PL011 UART driver under CTS hardware flow control

The Zephyr PL011 UART driver (``drivers/serial/uart_pl011.c``) contains an unbounded
software loop in ``pl011_irq_tx_enable()`` that repeatedly invokes the interrupt-driven
application callback while the TX interrupt mask bit (``PL011_IMSC_TXIM``) is set, to
work around the controller's level-transition TX-interrupt behavior.

When CTS hardware flow control is enabled (devicetree ``hw-flow-control`` or runtime
``UART_CFG_FLOW_CTRL_RTS_CTS``) and the wired serial peer de-asserts CTS, the controller
stops draining the TX FIFO; ``pl011_fifo_fill()`` then returns 0 on every call while the
application still has pending data and therefore never disables the TX interrupt. The
loop condition never clears, so the thread that called ``uart_irq_tx_enable()`` (e.g.
``h4_send()`` in the Bluetooth HCI H4 driver) spins indefinitely, hanging the executing
context and stalling the transport — a denial of service (CWE-835).

An attacker controlling the device attached to the UART's CTS line can trigger the hang
by withholding CTS during transmission. Because that peer is the device wired to the
UART — which may be a removable or external module (e.g. an off-board Bluetooth
controller on the HCI H4 link) rather than a permanently-bonded on-PCB part — the attack
vector is scored Adjacent (AV:A) rather than Physical; the security subcommittee should
confirm the vector against the specific deployment. Impact is availability only; there
is no memory-safety, confidentiality, or integrity consequence.

The vulnerable loop was introduced in commit b783bc8448ef (Feb 2025) and shipped in
releases v4.1.0 through v4.4.0. The fix breaks out of the loop when CTS is blocking and
arms the CTS modem-status interrupt to resume transmission when CTS re-asserts.

- `Zephyr project bug tracker GHSA-3fgh-73jh-2q5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3fgh-73jh-2q5j>`_

This has been fixed in main for v4.5.0

- `PR 103684 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/103684>`_

- `PR 110768 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110768>`_

- `PR 110767 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110767>`_

:cve:`2026-10643`
-----------------

Out-of-bounds heap write in Zephyr ``recvmsg()`` ancillary-data path (``insert_pktinfo`` undersizes the control-buffer capacity check)

Zephyr's IP socket ``recvmsg()`` implementation
(``subsys/net/lib/sockets/sockets_inet.c``, ``insert_pktinfo()``) validated the
user-supplied ancillary (``msg_control``) buffer using only the payload length
(``msg->msg_controllen`` < ``pktinfo_len``) before writing a full control message
consisting of an aligned cmsg header plus the payload. Because the check omitted the
cmsg header size, a control buffer whose length falls in the under-checked window (e.g.
16-27 bytes for IPv4 ``IP_PKTINFO`` on a 64-bit target, where a single element actually
occupies 28 bytes) passes the guard yet causes a fixed-size out-of-bounds write of up to
one cmsg header (~12 bytes) past the end of the buffer.

Under ``CONFIG_USERSPACE`` the ``recvmsg`` verifier allocates a kernel-heap copy of the
control buffer sized to ``msg_controllen`` and runs the implementation against it, so
the overflow corrupts kernel heap memory and is triggerable from an unprivileged
userspace thread; in supervisor mode it corrupts the caller's buffer.

The path is reachable on a UDP/IP socket with ``IP_PKTINFO``/``IPV6_RECVPKTINFO`` (or
hoplimit/timestamping) enabled when the application calls ``recvmsg()`` with an
undersized control buffer and a datagram is received; part of the overwritten bytes (the
destination IP in ``ipi_addr``) is influenced by the received packet.

The fix makes the capacity check use ``NET_CMSG_SPACE(pktinfo_len)`` (aligned header +
aligned data) and returns ``-ENOMEM`` when the buffer is too small. Affected: v3.6.0
through v4.4.0.

- `Zephyr project bug tracker GHSA-pvf7-7mrp-35w7
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-pvf7-7mrp-35w7>`_

This has been fixed in main for v4.5.0

- `PR 106464 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/106464>`_

- `PR 110668 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110668>`_

- `PR 110669 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110669>`_

- `PR 110670 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110670>`_

:cve:`2026-10644`
-----------------

Out-of-bounds write in Microchip SERCOM-G1 (PIC32CM-JH) async UART RX with 1-byte buffer

The Microchip SERCOM-G1 UART driver (``drivers/serial/uart_mchp_sercom_g1.c``), used by
the PIC32CM-JH SoC family, contains an out-of-bounds write in its asynchronous (DMA)
receive path. When ``uart_rx_enable()`` is invoked with a one-byte receive buffer (``len
== 1``) and ``CONFIG_UART_MCHP_ASYNC`` is enabled, the RX-complete ISR starts a
single-beat DMA transfer while a received byte is already pending in the SERCOM DATA
register. On this SoC the peripheral-triggered DMA start sequencing then writes one byte
past the end of the caller-supplied buffer (CWE-787).

The overflowed byte's value is the UART RX data supplied by the connected serial peer
(adjacent attacker), while its size and location are fixed at one byte immediately after
the buffer.

Exploitation requires the async UART config (not enabled by default on the in-tree
PIC32CM-JH boards) and a consumer that enables RX with a one-byte buffer; impact is
limited single-byte memory corruption adjacent to the RX buffer (possible crash / denial
of service).

The defect shipped in v4.4.0. The fix reads the first byte with the CPU and, for
one-byte buffers, performs no DMA at all; for larger buffers it sizes the DMA for the
remaining ``len-1`` bytes.

- `Zephyr project bug tracker GHSA-xv2x-56j7-6wc3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xv2x-56j7-6wc3>`_

This has been fixed in main for v4.5.0

- `PR 107400 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107400>`_

- `PR 110750 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110750>`_

:cve:`2026-10645`
-----------------

Out-of-bounds read in Zephyr ext2 directory entry traversal from a crafted filesystem image

The Zephyr ext2 filesystem driver (``subsys/fs/ext2``) trusted the on-disk directory
entry fields ``de_rec_len`` and ``de_name_len`` when walking a directory block.
``ext2_fetch_direntry()`` guarded only with ``de_name_len > EXT2_MAX_FILE_NAME``, but
``de_name_len`` is a ``uint8_t`` and ``EXT2_MAX_FILE_NAME`` is 255, so the check is
always false; the function then ``memcpy``'d up to 255 name bytes and the lookup/readdir
paths advanced traversal by an unvalidated ``de_rec_len``. Each directory block is read
into a ``block_size``-sized slab buffer, and ``block_off`` can be driven near the block
end by preceding entries' ``rec_len``, so the 8-byte header read and the subsequent name
``memcpy`` can read up to ~263 bytes past the end of the block buffer into adjacent
heap/slab memory. On the readdir path those bytes are returned to the caller in
``fs_dirent.name``, leaking adjacent kernel heap memory; a ``de_rec_len`` of 0 also
causes a zero-progress infinite loop (denial of service), and the unlink path's
``memmove(de, next, next_reclen)`` over unvalidated records is an additional OOB
read/write source. The defect is reached by any path-based operation (open, stat,
unlink, rename, mkdir) or directory listing on a mounted ext2 volume, so a crafted or
corrupted ext2 image on attacker-supplied storage (SD card, USB mass storage, or
otherwise mounted image) triggers it. Affected: Zephyr ext2 from its introduction in
v3.5.0 through v4.4.0. The fix validates ``rec_len`` and ``name_len`` in the parser and
rejects entries whose header does not fit the remaining block or whose ``rec_len``
crosses the block boundary in every traversal caller.

- `Zephyr project bug tracker GHSA-hwrh-9h3x-vccm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hwrh-9h3x-vccm>`_

This has been fixed in main for v4.5.0

- `PR 108226 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108226>`_

- `PR 110031 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110031>`_

- `PR 110033 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110033>`_

- `PR 110030 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110030>`_

:cve:`2026-10646`
-----------------

Use-after-return in ``zsock_getaddrinfo()`` when a timed-out DNS query is retried without cancellation

Zephyr's BSD-sockets ``getaddrinfo()`` implementation
(``subsys/net/lib/sockets/getaddrinfo.c``) passes a pointer to a stack-allocated state
object (``struct getaddrinfo_state ai_state``) as the ``user_data`` of an asynchronous
DNS resolver query. The socket layer waits on a semaphore with a timeout deliberately
set slightly longer than the resolver's own per-query timeout. When that semaphore wait
nonetheless times out (``-EAGAIN``) - which can occur when the resolver's timeout work
is delayed by workqueue contention, or in the documented multi-retry configuration where
``CONFIG_NET_SOCKETS_DNS_TIMEOUT`` exceeds ``CONFIG_NET_SOCKETS_DNS_BACKOFF_INTERVAL`` -
the pre-fix code retries the query (``goto again``) without cancelling the previous one
and without resetting the semaphore.

The previous query slot remains active in the resolver with its callback and the stack
pointer as ``user_data``, and ``ai_state->dns_id`` is overwritten so the stale query can
no longer be cancelled. A subsequent DNS response delivered over UDP and matched by its
16-bit transaction id (in ``dispatcher_cb()``/``dns_read()``), or the resolver's own
delayed query-timeout work, then invokes ``dns_resolve_cb()`` against the now
out-of-scope stack frame, writing through the stale pointer (``state->status``,
``state->idx``, ``state->ai_arr[]``, and ``k_sem_give()``).

Because the triggering response is network-delivered and its 16-bit id is
spoofable/replayable by an on- or off-path attacker, this is a network-influenceable
use-after-return that can corrupt reused stack memory, leading to crashes/denial of
service or memory corruption.

The fix cancels the timed-out query by name and type before retrying and resets the
local semaphore, eliminating the stale callback path. Affected: Zephyr v4.0.0 through
v4.4.0.

- `Zephyr project bug tracker GHSA-h752-vhmf-29w6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-h752-vhmf-29w6>`_

This has been fixed in main for v4.5.0

- `PR 107609 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107609>`_

- `PR 110774 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110774>`_

- `PR 110773 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110773>`_

:cve:`2026-10647`
-----------------

Deadlock denial of service in USB CDC-NCM device class on TX enqueue failure

The USB CDC-NCM device class (``subsys/usb/device_next/class/usbd_cdc_ncm.c``) ignores
the return value of ``usbd_ep_enqueue()`` in its ethernet transmit callback
``cdc_ncm_send()``. When the enqueue fails, the function still calls
``k_sem_take(&data->sync_sem, K_FOREVER)``, blocking on a completion semaphore that is
only ever signaled from the bulk-IN transfer-completion callback. Because nothing was
enqueued, that callback never fires and the calling thread — a shared network
traffic-class TX thread — deadlocks permanently while holding the interface TX lock,
halting transmission until reboot (and leaking the transmit buffer).

The enqueue fails under conditions controlled by the attached USB host:
``usbd_ep_enqueue()`` returns ``-EPERM`` whenever the bus is suspended (a standard,
persistent host operation), and the underlying ``udc_ep_enqueue()`` returns
``-EPERM``/``-ENODEV`` on disconnect, bus reset, or endpoint disable. The
``cdc_ncm_send()`` guard only checks the ``DATA_IFACE_ENABLED`` and ``IFACE_UP`` flags,
not the suspended state, so a packet transmitted while the host holds the bus suspended
reaches the failing enqueue and deadlocks the TX path.

The realistic trigger is a bus suspend that occurs while the exported network interface
is active and has traffic to send — host sleep, USB selective/auto-suspend, or hub power
management — after which any device-originated packet deadlocks the path, recoverable
only by reboot. The impact is a persistent loss of the virtual network connection
between the host's NCM interface and the Zephyr device; because the deadlocked thread is
a shared traffic-class TX thread, egress on other network interfaces can stall as well.
There is no memory corruption or information disclosure.

The defect was introduced with the CDC-NCM driver and shipped in releases through
v4.4.0; it is fixed by checking the ``usbd_ep_enqueue()`` return value and freeing the
buffer before the blocking wait.

- `Zephyr project bug tracker GHSA-xcf7-r86m-5q9f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xcf7-r86m-5q9f>`_

This has been fixed in main for v4.5.0

- `PR 107126 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107126>`_

- `PR 110652 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110652>`_

- `PR 110653 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110653>`_

:cve:`2026-10648`
-----------------

NULL-pointer dereference in MCUmgr serial/console SMP transport on buffer-pool exhaustion

``mcumgr_serial_process_frag()`` in ``subsys/mgmt/mcumgr/transport/src/serial_util.c``
calls ``net_buf_reset()`` on the result of ``smp_packet_alloc()`` before checking it for
``NULL``. ``smp_packet_alloc()`` uses ``net_buf_alloc(K_NO_WAIT)`` against the shared
MCUmgr packet pool (``CONFIG_MCUMGR_TRANSPORT_NETBUF_COUNT``, default 4), which returns
``NULL`` when the pool is exhausted. In default builds the ``__ASSERT_NO_MSG`` in
``net_buf_reset`` is a no-op, so ``net_buf_simple_reset`` writes through the ``NULL``
pointer (``buf->len = 0; buf->data = buf->__buf``), causing a fault/crash.

The fragment data reaches this code from attacker-controlled bytes on the MCUmgr
serial/UART/shell-console transports (``smp_uart.c``, ``smp_raw_uart.c``,
``smp_shell.c``), and a fresh buffer is allocated at the start of essentially every new
packet. An attacker on the serial/console link can flood the transport to drive the
4-entry buffer pool to exhaustion and induce the ``NULL`` dereference, crashing the
device (denial of service).

The defect was introduced after the original MCUmgr rework and shipped in Zephyr v4.4.0.
The fix moves the ``NULL`` check ahead of ``net_buf_reset``.

- `Zephyr project bug tracker GHSA-j64f-h3ww-f32c
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-j64f-h3ww-f32c>`_

This has been fixed in main for v4.5.0

- `PR 107812 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107812>`_

- `PR 108026 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/108026>`_

:cve:`2026-10651`
-----------------

Out-of-bounds read in Bluetooth Classic SDP attribute parsing (``bt_sdp_parse_attribute``)

``bt_sdp_parse_attribute()`` in ``subsys/bluetooth/host/classic/sdp.c`` validated only
that the SDP record buffer held the type-marker byte plus the 2-byte attribute ID (a
check of ``buf->len < 3``) but then read a fourth byte, the data-element descriptor
(``type``), via ``net_buf_simple_pull_u8()``. Because ``net_buf_simple_pull_u8()``
dereferences ``buf->data[0]`` before its only bounds guard (an ``__ASSERT_NO_MSG`` that
compiles out when ``CONFIG_ASSERT`` is disabled, the production default), a record of
exactly three bytes (0x09 followed by a 2-byte attribute ID) causes a one-byte read past
the end of the logical buffer. The parser is reachable from inbound, remote-controlled
data: a Bluetooth BR/EDR peer acting as an SDP server returns discovery-response records
that are stored verbatim in the client receive buffer and parsed via the public
``bt_sdp_get_attr()``/``bt_sdp_has_attr()``/``bt_sdp_record_parse()`` helpers. The
over-read is bounded to a single byte that is used only as an internal length selector
and is never leaked to the attacker; subsequent length checks then reject the malformed
record. Realistic impact is therefore limited to an edge-case denial of service (a fault
only if the record ends exactly at a mapped-memory boundary, or a deterministic assert
panic when ``CONFIG_ASSERT=y``). Affects Zephyr v4.3.0 and v4.4.0; fixed by adding
``sizeof(type)`` to the length check.

- `Zephyr project bug tracker GHSA-p93g-3r68-cj53
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p93g-3r68-cj53>`_

This has been fixed in main for v4.5.0

- `PR 107325 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107325>`_

- `PR 110850 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110850>`_

- `PR 110851 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110851>`_

:cve:`2026-10652`
-----------------

Out-of-bounds read in Zephyr DNS resolver TXT/SRV record parsing (unvalidated ``rdlength``)

Zephyr's DNS resolver (``subsys/net/lib/dns``) parses resource records from DNS
responses in ``dns_unpack_answer()``, which validated only the fixed RR header (type,
class, TTL, ``rdlength``) and accepted any attacker-declared ``rdlength``, including one
extending past the end of the received datagram. The TXT and SRV consumers in
``dns_validate_record()`` (``resolve.c``) then read up to ``rdlength`` bytes (clamped
only to a record-type maximum such as ``DNS_MAX_TEXT_SIZE``, default 64, not to the
packet) from the receive buffer via ``memcpy`` without their own bounds check, and pass
the result to the application's resolve callback. A malicious or spoofed DNS server, an
on-path attacker forging UDP DNS replies, or (with mDNS/LLMNR enabled) any LAN node can
craft a truncated TXT or SRV response that causes an out-of-bounds read of adjacent
receive-pool memory; the disclosed stale bytes (residual contents of prior DNS packets /
uninitialized pool memory) are returned to the application as TXT/SRV record contents,
an information leak, and may in some configurations cross the allocation boundary and
fault, causing a denial of service. The read is bounded (~64 bytes for TXT, ~6 for SRV)
and read-only (no write). The fix rejects any record whose declared rdata extends past
``dns_msg->msg_size`` at the single chokepoint in ``dns_unpack_answer()``. Affected:
v4.3.0 and v4.4.0.

- `Zephyr project bug tracker GHSA-3jxq-xx8g-q8j2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3jxq-xx8g-q8j2>`_

This has been fixed in main for v4.5.0

- `PR 107977 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107977>`_

- `PR 108844 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/108844>`_

- `PR 108843 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108843>`_

- `PR 108845 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108845>`_

:cve:`2026-10653`
-----------------

Non-atomic ``net_buf`` reference counts cause double-free / free-list corruption under concurrent unref

The Zephyr ``net_buf`` library (``lib/net_buf/buf.c``) manipulated both of its reference
counts -- the per-header ``buf->ref`` and the per-data-block ``ref_count`` at the start
of each variable/heap data allocation -- with plain non-atomic C operators
(``buf->ref++``, ``if (--buf->ref > 0)``, ``if (--(*ref_count))``).

The API is documented as self-synchronizing: callers may share one buffer across threads
(e.g. via ``k_fifo``) and each holder independently calls ``net_buf_unref()`` with no
surrounding lock. Under true concurrency (SMP, or single-core preemption between the
non-atomic load and store while another context unrefs the same buffer), two holders can
both observe the same prior reference value and both conclude they are the last
reference.

For heap/variable-data pools (``mem_pool_data_unref``/``heap_data_unref``, used by zbus
message subscribers, the IP stack RX/TX buffers when
``CONFIG_NET_BUF_FIXED_DATA_SIZE=n``, capture, wireguard, ISO-TP and usbip) this
produces a double ``k_heap_free()``/``k_free()`` of the same block -- heap-metadata
corruption and a use-after-free on the heap-hardening poison pattern.

For the per-header refcount the buffer is returned to the pool free LIFO twice for any
pool type (including fixed-data pools used by Bluetooth and networking), corrupting the
free list so a later allocation hands the same buffer to two owners.

The fix converts both refcounts to ``atomic_inc``/``atomic_dec`` (overlaying
``buf->ref`` in an ``atomic_t``-sized union and changing the data-block refcount from
``uint8_t`` to ``atomic_t``).

Impact is gated on genuine concurrency and on an application architecture that shares
one buffer among multiple independent unref'ers; the trigger is a refcount/timing race
rather than packet content, so an external attacker has at most weak indirect influence
over the race window. Affects all Zephyr releases through v4.4.0.

- `Zephyr project bug tracker GHSA-284j-5jm9-55hh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-284j-5jm9-55hh>`_

This has been fixed in main for v4.5.0

- `PR 108065 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108065>`_

- `PR 110853 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110853>`_

- `PR 110852 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110852>`_

:cve:`2026-10654`
-----------------

RFCOMM session-disconnect race leaks session/L2CAP and denies further RFCOMM service in Zephyr Bluetooth Classic

A race condition in the Zephyr Bluetooth Classic RFCOMM host stack
(``subsys/bluetooth/host/classic/rfcomm.c``) mishandles a simultaneous bidirectional
session disconnect. When the local device has initiated a session teardown (state
``BT_RFCOMM_STATE_DISCONNECTING``, DISC sent, RTX timer armed) and the connected peer
concurrently sends its own DISC frame for dlci 0, ``rfcomm_handle_disc()`` invokes
``rfcomm_session_disconnected()``, which unconditionally forced the session to
``BT_RFCOMM_STATE_DISCONNECTED`` without ever calling ``bt_l2cap_chan_disconnect()``.

Because the recovery timer was also cancelled and a later UA is ignored in the
DISCONNECTED state, the session becomes permanently wedged: the underlying L2CAP channel
is never released and the session slot in the fixed
``bt_rfcomm_pool[CONFIG_BT_MAX_CONN]`` array is never reclaimed (its ``conn`` pointer
stays set).

Subsequent ``bt_rfcomm_dlc_connect()`` calls on that connection fail with ``-EINVAL``
due to the invalid session state, so RFCOMM service is denied for that peer, and
repeated occurrences can exhaust the session pool. The DISC frame is peer-controlled
over the air, but exploitation requires the peer's DISC to collide with a
local-initiated disconnect (a high-complexity timing race). Impact is
availability/resource-leak only; there is no memory-safety, confidentiality, or
integrity consequence. The defect shipped in released versions (present in v4.4.0 and
earlier).

The fix only transitions to DISCONNECTED when the session is not already in
DISCONNECTING, preserving the proper L2CAP teardown path.

- `Zephyr project bug tracker GHSA-4m37-wp5x-hq4h
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4m37-wp5x-hq4h>`_

This has been fixed in main for v4.5.0

- `PR 108089 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108089>`_

- `PR 110865 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110865>`_

- `PR 110864 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110864>`_

- `PR 110863 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110863>`_

:cve:`2026-10655`
-----------------

Use-after-free race in SNTP async client when closing the socket while the socket service is still polling it

The asynchronous SNTP client in Zephyr (``subsys/net/lib/sntp/sntp.c``,
``sntp_close_async``) closed the UDP socket file descriptor directly from the calling
thread immediately after detaching it from the network socket service, without
synchronizing with the socket-service poll thread.

The socket service thread polls each socket via ``zvfs_poll``, which (in
``zsock_poll_prepare_ctx``) registers a ``k_poll_event`` pointing into the socket's
``net_context`` (``&ctx->recv_q``) and then blocks in ``k_poll`` without holding a
reference or lock. ``net_context`` objects are allocated from a fixed pool
(``contexts[CONFIG_NET_MAX_CONTEXTS]``) and reused after close.

When ``sntp_close_async`` is invoked from a different thread than the poll thread (in
the in-tree consumer ``subsys/net/lib/config/init_clock_sntp.c``, the SNTP timeout
handler runs on the system workqueue while the socket service thread is blocked in poll
on the same fd), the close frees and may reuse the ``net_context`` while the poll thread
still has a poller node linked into the freed object, resulting in a use-after-free /
object confusion of kernel poll structures.

The SNTP timeout path is the normal no-response failure mode, so a network peer or
off-path attacker who drops or delays the SNTP/NTP response can drive the racing close
repeatedly (and periodically with ``NET_CONFIG_SNTP_INIT_RESYNC``). The most likely
consequence is a crash of the networking thread (denial of service), with potential
memory corruption when the freed context slot is reallocated.

The fix defers the close to the socket service thread itself via
``net_socket_service_close`` (``NET_SOCKET_SERVICE_CLOSE_SOCKETS``), so the same thread
that polls performs the close, eliminating the race. Affected releases: v4.2.0 through
v4.4.0.

- `Zephyr project bug tracker GHSA-34wr-cg29-c4mw
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-34wr-cg29-c4mw>`_

This has been fixed in main for v4.5.0

- `PR 108180 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108180>`_

- `PR 110860 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110860>`_

- `PR 110858 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110858>`_

:cve:`2026-10656`
-----------------

NULL-pointer dereference DoS in MAX32 USB device controller transfer-completion handlers

The MAX32xxx USB device controller driver (``drivers/usb/udc/udc_max32.c``, compatible
``adi_max32_usbhs``) dereferenced an endpoint buffer in its OUT and IN
transfer-completion handlers without checking it for ``NULL``.
``udc_event_xfer_out_done()`` called ``net_buf_add(buf, ep_request->actlen)``
immediately after ``buf = udc_buf_get(ep_cfg)``, where ``udc_buf_get()`` returns
``NULL`` when the endpoint FIFO is empty.

A transfer-completion event is queued from interrupt context and processed
asynchronously by the driver thread; between queuing and processing, the endpoint FIFO
can be drained by host-controlled control flow — in particular ``udc_setup_received()``
drains the EP0 OUT/IN FIFOs whenever a new SETUP packet arrives, and
dequeue/disable/purge paths drain it likewise.

A USB host that aborts an in-flight EP0 control transfer with a new SETUP packet (legal
USB behavior) can therefore cause a stale ``XFER_OUT_DONE`` event to be processed
against an empty FIFO, producing ``net_buf_add(NULL, ...)``, a near-NULL pointer
dereference that faults and crashes the device. No authentication is required; the
attacker is the USB host the device is connected to (physical bus access). Impact is
denial of service (device crash).

The defect was introduced when the MAX32 UDC driver was added and shipped in Zephyr
v4.4.0. The fix adds NULL-buffer checks that return early with
``UDC_EVT_ERROR``/-ENOBUFS in both the OUT-done and IN-done handlers.

- `Zephyr project bug tracker GHSA-58p9-6mjq-rf2m
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-58p9-6mjq-rf2m>`_

This has been fixed in main for v4.5.0

- `PR 108447 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108447>`_

- `PR 109517 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109517>`_

:cve:`2026-10657`
-----------------

Out-of-bounds read in Zephyr DNS resolver mDNS suffix check (memcmp past string NUL)

Zephyr's DNS resolver detects mDNS (.local) queries in ``dns_resolve_name_internal()``
(``subsys/net/lib/dns/resolve.c``) with ``memcmp(strrchr(query, '.'), ".local", 7)``,
which always reads a fixed 7 bytes from the suffix pointer. When the resolved hostname's
final label is shorter than 7 bytes (e.g. names ending in .org, .com, .net, .io, or a
trailing dot), the comparison reads 1-2 bytes past the string's NUL terminator.

The hostname (``query``) is the caller-supplied name passed through the standard
``getaddrinfo()``/``dns_get_addr_info()``/``dns_resolve_name()`` path and is
influenceable by operators or remote inputs (server names from configuration, parsed
URLs, or app-facing interfaces).

On a tightly-sized buffer with no slack (for example a userspace ``getaddrinfo`` call
where the hostname is copied with ``k_usermode_string_alloc_copy`` to exactly
``strlen+1`` bytes), the over-read crosses the allocation boundary; if that boundary is
unmapped (guard page, memory-domain boundary under MPU, or an address sanitizer) the
over-read faults, causing a denial of service. The over-read bytes are never returned,
so there is no information disclosure.

The flaw is compiled only when ``CONFIG_MDNS_RESOLVER`` is enabled, exists since
v1.10.0, and is fixed by replacing the fixed-length ``memcmp`` with a NUL-safe
``strcmp(ptr, ".local")``.

- `Zephyr project bug tracker GHSA-76jh-3j5f-9vq4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-76jh-3j5f-9vq4>`_

This has been fixed in main for v4.5.0

- `PR 108372 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108372>`_

- `PR 110870 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110870>`_

- `PR 110867 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110867>`_

- `PR 110868 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110868>`_

:cve:`2026-10658`
-----------------

Out-of-bounds access in Bluetooth ISO receive (``bt_iso_recv``) due to missing SDU-header length validation

``bt_iso_recv()`` in ``subsys/bluetooth/host/iso.c`` pulled the ISO SDU header (4 bytes)
or, when the timestamp flag is set, the timestamped SDU header (8 bytes) from the
inbound HCI ISO Data buffer via ``net_buf_pull_mem()`` without first checking
``buf->len``. The upstream ``hci_iso()`` handler enforces ``buf->len`` == the
controller-declared ISO Data_Load length, so a malicious or buggy controller / adjacent
BLE peer on an established CIS/BIS can present a first-fragment (``BT_ISO_START``) or
single (``BT_ISO_SINGLE``) PDU shorter than the SDU header. Because
``net_buf_simple_pull_mem`` only guards length with ``__ASSERT_NO_MSG`` (compiled out
when ``CONFIG_ASSERT`` is disabled, the production default), the pull underflows
``buf->len`` (``uint16_t``, e.g. ``0 - 8 = 0xFFF8``) and advances ``buf->data`` past
valid data: the subsequent reads of ``hdr->slen`` and ``hdr->sn`` are out-of-bounds
reads of adjacent pool memory. For the multi-fragment (START) case the corrupted buffer
is retained as ``iso->rx``, and a following CONT/END fragment's ``net_buf_tailroom()``
guard underflows to a near-``SIZE_MAX`` value, defeating the bounds check and causing
``net_buf_add_mem()`` to ``memcpy`` attacker-supplied fragment data far past the RX pool
buffer (out-of-bounds write). The flaw affects ISO receive builds (``CONFIG_BT_ISO_RX``,
selected by the default-off LE Audio options
``BT_ISO_PERIPHERAL``/``BT_ISO_CENTRAL``/``BT_ISO_SYNC_RECEIVER``) and has existed since
the ISO subsystem was introduced (v2.6.0) through v4.4.0. The fix adds explicit
``buf->len < sizeof(*ts_hdr)`` and ``buf->len < sizeof(*hdr)`` checks that drop the
buffer before pulling.

- `Zephyr project bug tracker GHSA-26g8-rmpf-j6cw
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-26g8-rmpf-j6cw>`_

This has been fixed in main for v4.5.0

- `PR 108603 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108603>`_

- `PR 111024 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111024>`_

- `PR 110959 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110959>`_

- `PR 110958 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110958>`_

:cve:`2026-10659`
-----------------

NULL pointer dereference in Zephyr Dhara FTL disk driver on flash read error during journal resume

The Dhara flash translation layer disk driver (``drivers/disk/ftl_dhara.c``) implemented
the ``dhara_nand_*`` callbacks so that, on a flash error, the error code was written
unconditionally through the caller-supplied ``dhara_error_t *err`` pointer (e.g. ``*err
= DHARA_E_ECC`` in ``dhara_nand_read``, and similar in
``dhara_nand_erase``/``prog``/``copy``).

The upstream Dhara library calls these callbacks with ``err == NULL`` along its
journal-resume binary search: ``find_last_checkblock()`` invokes ``find_checkblock(j,
mid, &found, NULL)``, which forwards the NULL pointer into ``dhara_nand_read()``. This
path runs during ``disk_ftl_access_init()`` -> ``dhara_map_resume()`` whenever the FTL
disk is mounted/initialised.

If a flash read error (uncorrectable ECC, bad block, controller error) occurs on one of
the probed checkpoint pages, the driver dereferences and writes to ``NULL``, faulting
the kernel (denial of service). The trigger is conditioned on the NAND medium
content/health, which can be influenced by media wear, induced faults, or a
corrupted/crafted on-flash image.

The fix routes all error assignments through the library's NULL-safe
``dhara_set_error()`` helper. Affects Zephyr v4.4.0, where the driver was introduced.

- `Zephyr project bug tracker GHSA-q28v-3729-f82g
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-q28v-3729-f82g>`_

This has been fixed in main for v4.5.0

- `PR 108594 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108594>`_

- `PR 110955 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110955>`_

:cve:`2026-10660`
-----------------

Shared reassembly buffer in Bluetooth BAP Broadcast Assistant enables cross-connection memory corruption

The Bluetooth BAP Broadcast Assistant GATT client in
``subsys/bluetooth/audio/bap_broadcast_assistant.c`` reassembled remote Broadcast
Receive State data into a single file-static ``net_buf_simple`` (``att_buf``,
``BT_ATT_MAX_ATTRIBUTE_LEN`` = 512 bytes) shared by all connection instances, while the
BUSY flag, long-read handle, and reset/offset state were per-connection.

When the device acts as a Broadcast Assistant connected to multiple Scan Delegator
peripherals, notification and long-read callbacks from different connections interleave
on the shared buffer: the append in ``notify_handler`` (``net_buf_simple_add_mem`` at
the not-busy branch) performs no tailroom check, so receive-state notifications from two
or more delegators accumulate on the same 512-byte buffer and, with a sufficiently large
configured ATT MTU (``BT_L2CAP_TX_MTU`` up to 2000) and two-to-three concurrent
connections, write past the buffer into adjacent .bss (``net_buf_simple_add`` only
asserts in debug builds).

Even below the overflow threshold, one connection's ``net_buf_simple_reset`` zeroes the
shared length while another connection's reassembly and GATT read offset are in flight,
mixing one peer's data into another's parse. A malicious or compromised Scan Delegator
(or two colluding peers) over BLE can trigger this, causing out-of-bounds writes (memory
corruption / denial of service) and cross-connection data corruption.

The fix moves the buffer into the per-connection instance struct so each connection
reassembles into its own buffer. Affects Zephyr releases shipping the Broadcast
Assistant with the shared buffer, including v4.4.0 and earlier.

- `Zephyr project bug tracker GHSA-73c7-3rh7-v5p9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-73c7-3rh7-v5p9>`_

This has been fixed in main for v4.5.0

- `PR 107563 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107563>`_

- `PR 111066 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111066>`_

- `PR 111065 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111065>`_

- `PR 111182 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111182>`_

:cve:`2026-10663`
-----------------

Use-after-free / double-free of the root USB device in the experimental USB host stack

In Zephyr's experimental USB host stack (``CONFIG_USB_HOST_STACK``),
``usbh_device_disconnect()`` (``subsys/usb/host/usbh_device.c``) freed the root
``usb_device`` slab object without clearing the cached pointer ``ctx->root``. The bus
removal handler ``dev_removed_handler()`` (``subsys/usb/host/usbh_core.c``) decides what
to tear down solely from ``ctx->root``, checking only that it is non-NULL.

Because UHC controller drivers (e.g. ``uhc_max3421e``, ``uhc_mcux_common``) synthesize
``UHC_EVT_DEV_REMOVED`` directly from physical bus line state with no debounce or state
guard, an attacker with physical USB access (or a rogue device that bounces its
connection) can deliver a second device-removed event after a root device disconnect.
The handler then re-enters ``usbh_device_disconnect()`` with the dangling pointer,
locking a mutex inside the freed object (use-after-free), removing the freed node from
the device list, and calling ``k_mem_slab_free()`` on the already-freed block
(double-free). If the slab block has been reissued to a newly attached device in
between, this corrupts a live object.

Impact is denial of service (crash) and memory corruption; the attack vector is
physical/local. The flaw was introduced in v4.4.0 by the connect/disconnect refactor and
is fixed by clearing ``ctx->root`` in ``usbh_device_disconnect()`` before freeing.

- `Zephyr project bug tracker GHSA-26q8-xjq3-f5p6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-26q8-xjq3-f5p6>`_

This has been fixed in main for v4.5.0

- `PR 108796 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108796>`_

- `PR 111021 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111021>`_

:cve:`2026-10664`
-----------------

Out-of-bounds write in nRF70 Wi-Fi driver power-save event handler (unbounded TWT flow count)

The nRF70 Wi-Fi driver's power-save event handler
``nrf_wifi_event_proc_get_power_save_info()`` in
``drivers/wifi/nrf_wifi/src/wifi_mgmt.c`` copied TWT (Target Wake Time) flow entries
from an ``nrf_wifi_umac_event_power_save_info`` event into the fixed-size
``twt_flows[WIFI_MAX_TWT_FLOWS]`` (8-element) array of a caller-supplied ``struct
wifi_ps_config``, looping over event-provided ``num_twt_flows`` without validating it
against ``WIFI_MAX_TWT_FLOWS`` or checking ``event_len``. When ``num_twt_flows`` exceeds
8, the handler writes past the destination array (which is typically on the caller's
stack, e.g. the ``wifi ps`` shell command) -- an out-of-bounds write of ~40-byte TWT
entries -- and reads ``twt_flow_info[i]`` past the event buffer. The event is delivered
by the nRF70 co-processor firmware in response to a host-initiated power-save GET, so
reaching the overflow requires the firmware to emit a malformed or out-of-range event;
the trust boundary is host-to-trusted-coprocessor rather than a direct remote-AP write,
with over-the-air influence on the flow count being indirect and bounded by the 3-bit
TWT flow-id space. Affected: builds with ``CONFIG_NRF70_STA_MODE`` on releases through
v4.4.0. The fix rejects events with ``num_twt_flows`` > ``WIFI_MAX_TWT_FLOWS`` or with
``event_len`` shorter than the claimed entries, and adds a NULL check on the caller
buffer.

- `Zephyr project bug tracker GHSA-3r6j-pm38-r43m
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3r6j-pm38-r43m>`_

This has been fixed in main for v4.5.0

- `PR 108849 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108849>`_

- `PR 109067 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109067>`_

- `PR 109068 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/109068>`_

:cve:`2026-10665`
-----------------

Heap buffer overflow on WireGuard receive path via unbounded incoming packet length

In Zephyr's WireGuard subsystem (``subsys/net/lib/wireguard``),
``wg_process_data_message()`` in ``wg_crypto.c`` linearizes an inbound transport-data
payload into a fixed pool buffer of ``CONFIG_WIREGUARD_BUF_LEN`` bytes before
decryption. The call ``net_buf_linearize(buf->data, data_len, pkt->buffer, ...,
data_len)`` passed the attacker-derived ``data_len`` as both the destination capacity
and the copy length, defeating the function's internal ``len = min(len, dst_len)``
bound. ``data_len`` is derived from the received UDP datagram length and is only
lower-bounded by ``wg_ctrl_recv()`` (no upper bound). When ``data_len`` exceeds
``CONFIG_WIREGUARD_BUF_LEN`` — e.g. when the buffer length is lowered below the link
MTU, on links with MTU above the buffer size, or via reassembled IPv4/IPv6 fragments
that exceed it — the underlying ``memcpy`` writes past the end of the pool buffer, an
out-of-bounds write (CWE-787). The overflow occurs before the Poly1305 authentication
check, so it requires only a valid receiver session index rather than a valid
authenticator, and is reachable by a malicious or compromised peer (or an on-path
attacker driving an established session) over the network, yielding remote memory
corruption and at minimum a reliable denial of service. The defect was present in the
WireGuard implementation shipped in Zephyr 4.4.0. The fix adds an explicit ``data_len >
CONFIG_WIREGUARD_BUF_LEN`` rejection and corrects the linearize call to pass
``net_buf_max_len(buf)`` as the destination capacity.

- `Zephyr project bug tracker GHSA-3wqm-wgx2-9367
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3wqm-wgx2-9367>`_

This has been fixed in main for v4.5.0

- `PR 108841 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108841>`_

- `PR 111084 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111084>`_

:cve:`2026-10667`
-----------------

SMP use-after-free in Zephyr ``CONFIG_USERSPACE`` dynamic kernel-object tracking, reachable from unprivileged user threads

Zephyr's dynamic kernel-object tracking (``kernel/userspace/userspace.c``, formerly
``kernel/userspace.c``) maintains a doubly-linked list (``obj_list``) of dynamically
allocated kernel objects. Iteration over this list in ``k_object_wordlist_foreach()``
was performed under ``lists_lock`` using the SAFE iterator (which caches the next node),
but list removal and freeing of nodes was performed under different, disjoint spinlocks:
``objfree_lock`` in ``k_object_free()`` and ``obj_lock`` in ``unref_check()``. On an SMP
system, while one CPU iterated ``obj_list`` under ``lists_lock``, another CPU could
unlink and ``k_free()`` the ``dyn_obj`` node that the iterator had cached as its next
pointer, causing the iterator to dereference freed kernel memory (use-after-free /
dangling list traversal). All of the racing operations are reachable from unprivileged
user-mode threads via system calls: ``k_object_alloc``/``k_object_alloc_size`` and
``k_object_release`` drive removals through ``unref_check()`` (under ``obj_lock``),
while ``k_thread_abort`` and thread creation drive the iteration through
``k_thread_perms_all_clear()``/``k_thread_perms_inherit()`` (under ``lists_lock``). A
deprivileged user thread on a ``CONFIG_SMP`` + ``CONFIG_USERSPACE`` build can therefore
corrupt the kernel's object-tracking structures across the userspace security boundary,
yielding kernel memory corruption (potential privilege escalation) or a kernel crash
(denial of service). The fix removes ``objfree_lock`` and serializes every ``obj_list``
modification under ``lists_lock``, including holding it across find+remove in
``k_object_free()`` and around ``unref_check()`` in ``k_thread_perms_clear()``. Affects
``CONFIG_SMP``+``CONFIG_USERSPACE``+``CONFIG_DYNAMIC_OBJECTS`` configurations; the
defect dates to the 2019 spinlockification (commit 8a3d57b6cc6, first released in
v1.14.0) and shipped through v4.4.0.

- `Zephyr project bug tracker GHSA-9x5j-h3rh-x579
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9x5j-h3rh-x579>`_

This has been fixed in main for v4.5.0

- `PR 108721 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108721>`_

- `PR 111067 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111067>`_

- `PR 111019 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111019>`_

- `PR 111018 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111018>`_

:cve:`2026-10668`
-----------------

Host-triggerable control-endpoint wedge (DoS) in Nuvoton NuMaker HSUSBD UDC driver

The Nuvoton NuMaker HSUSBD USB device-controller driver
(``drivers/usb/udc/udc_numaker.c``) armed the control Data IN stage unconditionally
(``base->CEPTXCNT = len`` in ``numaker_hsusbd_ep_trigger``). Because the HSUSBD hardware
cannot disarm a control Data IN already armed for a previous transfer, a USB host that
cancels an in-flight control transfer (timeout) and then issues a new SETUP packet can
drive the driver out of sync: stale data may be transmitted in the new transfer and the
control endpoint can become permanently stuck NAK'ing every subsequent control transfer.

A malicious or buggy host (physical/adjacent attacker driving the bus) can repeatedly
cancel-and-re-SETUP to wedge the device's USB control endpoint, denying service to the
device's USB function (the device stops enumerating/responding on the control pipe)
until a USB reset or re-plug. The flaw is an availability-only denial of service; the
FIFO copy loops (bounded by ``net_buf`` length and the hardware BUFFULL flag) and the
``net_buf`` lifecycle are independent of the arming desync, so there is no out-of-bounds
access, use-after-free, or information leak.

The fix monitors the IN-token and new-SETUP events (``k_event``) and only arms control
Data IN when an IN token is present and no new SETUP has arrived, cancelling the current
transfer on a new SETUP. Affects boards using the Nuvoton NuMaker HSUSBD controller
(``CONFIG_UDC_NUMAKER`` with ``DT_HAS_NUVOTON_NUMAKER_HSUSBD_ENABLED``); shipped in
v4.4.0.

- `Zephyr project bug tracker GHSA-rm28-x84j-4qrx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rm28-x84j-4qrx>`_

This has been fixed in main for v4.5.0

- `PR 107010 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107010>`_

- `PR 110646 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110646>`_

:cve:`2026-10669`
-----------------

Xtensa MPU ``arch_buffer_validate()`` integer-overflow lets a user thread bypass syscall pointer validation

On Xtensa SoCs built with ``CONFIG_XTENSA_MPU`` and ``CONFIG_USERSPACE``,
``arch_buffer_validate()`` in ``arch/xtensa/core/mpu.c`` — the architecture hook that
verifies a user-mode-supplied buffer is accessible to the calling user thread with the
requested permission — defaulted its return value to 0 (access permitted) and only set a
denial result inside its per-MPU-region probe loop. When the rounded extent of the
buffer wraps the 32-bit address space (size + alignment offset near ``SIZE_MAX``, or
``ROUND_UP(size + offset)`` overflowing to 0), the loop executes zero iterations and the
function returns 0 = permitted without probing any MPU region.

The syscall-layer pre-checks (``K_SYSCALL_MEMORY_SIZE_CHECK`` /
``Z_DETECT_POINTER_OVERFLOW``) only catch a raw ``addr+size`` wrap and do not cover the
``ROUND_UP``-induced wrap, and the string path (``arch_user_string_nlen`` ->
``arch_buffer_validate``) has no syscall-layer guard at all.

An unprivileged user-mode thread can therefore pass a crafted ``(addr, size)`` to any
syscall that validates user buffers via ``k_usermode_from_copy``/``to_copy`` or
``k_usermode_string_copy`` and have validation succeed for memory it must not access;
the kernel then reads from (disclosure) or, with ``write=1``, writes to (corruption)
attacker-chosen kernel or other-partition memory on the thread's behalf, enabling
information disclosure, memory corruption, privilege escalation, and denial of service.

Affected from v3.7.0 (when Xtensa MPU userspace support was added) through v4.4.0. The
fix changes the default to ``-EINVAL`` (deny by default), adds an explicit
``size_add_overflow`` check, and sets the success value only after the full range has
been validated.

- `Zephyr project bug tracker GHSA-4r4p-gh69-v6w4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4r4p-gh69-v6w4>`_

This has been fixed in main for v4.5.0

- `PR 109000 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109000>`_

- `PR 109239 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109239>`_

- `PR 109238 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/109238>`_

- `PR 109236 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109236>`_

:cve:`2026-10670`
-----------------

User-triggerable kernel NULL-pointer dereference (DoS) in ``k_thread_name_copy()`` syscall verifier

The ``CONFIG_USERSPACE`` verification handler for the ``k_thread_name_copy()`` system
call (``z_vrfy_k_thread_name_copy()`` in ``kernel/thread.c``) calls ``k_object_find()``
on the caller-supplied thread pointer and then dereferences the returned ``struct
k_object`` without checking it for ``NULL``. ``k_object_find()`` returns ``NULL``
whenever the supplied pointer is not a registered (static or dynamic) kernel object.

The pre-fix guard tested ``thread == NULL`` instead of ``ko == NULL``, so an
unprivileged user-mode thread that invokes ``k_thread_name_copy()`` with any non-NULL
but unregistered pointer (e.g. an arbitrary address) passes the NULL test, after which
the verifier reads ``ko->type`` through a NULL pointer.

Because the syscall verifier runs in supervisor mode, this NULL dereference is a
kernel-mode fault that halts or reboots the system, allowing untrusted user code to
crash the kernel across the userspace security boundary (denial of service). The
marshaller passes the thread argument to the verifier without any prior
``K_SYSCALL_OBJ`` validation, so the bad pointer reaches the defect directly.

The flaw affects builds with ``CONFIG_USERSPACE`` and ``CONFIG_THREAD_NAME`` enabled and
has been present since the special-case lookup was introduced around v2.0.0; it is
present in v4.4.0 and earlier. The fix changes the guard to check the
``k_object_find()`` return value (``ko == NULL``) before dereferencing it.

- `Zephyr project bug tracker GHSA-82h2-v4vm-q2g9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-82h2-v4vm-q2g9>`_

This has been fixed in main for v4.5.0

- `PR 109076 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109076>`_

- `PR 111088 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111088>`_

- `PR 111089 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111089>`_

- `PR 109364 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109364>`_

:cve:`2026-10671`
-----------------

User thread can re-initialize an in-use ``k_pipe``, corrupting kernel wait queues (``CONFIG_USERSPACE``)

In Zephyr's kernel pipe implementation, the userspace syscall verifier
``z_vrfy_k_pipe_init()`` in ``kernel/pipe.c`` used ``K_SYSCALL_OBJ()`` (which requires
the kernel object to already be initialized) instead of ``K_SYSCALL_OBJ_NEVER_INIT()``
(which rejects an already-initialized object). As a result, on ``CONFIG_USERSPACE``
builds an unprivileged user thread that has been granted access to a ``k_pipe`` object
can invoke the ``k_pipe_init`` syscall to re-initialize a pipe that is already in use.

``z_impl_k_pipe_init()`` unconditionally resets the ring buffer, sets ``pipe->waiting``
to 0, and re-initializes both wait queues (``z_waitq_init`` on ``pipe->data`` and
``pipe->space``) without waking or accounting for threads currently blocked on the pipe.
Any thread already pended in ``k_pipe_read()``/``k_pipe_write()`` is left orphaned:
still marked pending with ``pended_on`` pointing at the cleared wait queue and with
stale ``qnode_dlist`` links into the (now re-initialized) embedded list head.

When such an orphaned waiter is later timed out or woken, the scheduler calls
``sys_dlist_remove()`` on its stale node, writing through dangling ``prev``/``next``
pointers into kernel wait-queue/scheduler structures, causing list corruption (an
attacker-driven invalid kernel write), lost wakeups, indefinitely blocked threads, and
silent data loss. The flaw lets a deprivileged user thread corrupt the state of a kernel
object shared with other threads/partitions.

The fix switches the verifier to ``K_SYSCALL_OBJ_NEVER_INIT()``, matching the existing
``k_msgq_init`` verifier, so a user thread can no longer re-initialize a live pipe. The
vulnerable code shipped in v4.1.0 and remained through v4.4.0.

- `Zephyr project bug tracker GHSA-p8w8-3x99-mg8f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p8w8-3x99-mg8f>`_

This has been fixed in main for v4.5.0

- `PR 109091 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109091>`_

- `PR 111101 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111101>`_

- `PR 111102 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111102>`_

:cve:`2026-10672`
-----------------

Unterminated URI buffer causes out-of-bounds read in LwM2M firmware pull (Package URI)

``subsys/net/lib/lwm2m/lwm2m_pull_context.c`` copied the firmware-update Package URI
into a fixed static buffer (``context.uri``, size
``CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN``, default 128) with ``memcpy(context.uri, uri,
LWM2M_PACKAGE_URI_LEN)``, copying exactly the destination size with no length
validation. The Firmware-Update object stores the server-supplied Package URI (/5/0/1)
in a 255-byte buffer, so a LwM2M management server (or an on-path attacker on a session
lacking strong DTLS) can WRITE a URI of 128-254 characters; only the first 128 bytes are
then copied into ``context.uri`` with no NUL terminator. That buffer is subsequently
consumed as a C string by ``http_parser_parse_url(context.uri, strlen(context.uri),
...)``, ``strlen``-based CoAP URI-path/PROXY-URI option appends, and
``lwm2m_parse_peerinfo()``, causing an out-of-bounds read of adjacent static memory. The
over-read bytes are appended to outbound CoAP requests (information disclosure of
adjacent device memory to the server/proxy) and can crash the device (denial of
service). The vulnerable copy was introduced by the pull-context refactor (first
released in v3.0.0) and is present through v4.4.0; the default-on
``CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT`` path is affected. The fix adds a
``strlen(uri) >= sizeof(context.uri)`` check returning ``-ENOMEM`` and switches to
``strcpy()``, guaranteeing a bounded, NUL-terminated buffer.

- `Zephyr project bug tracker GHSA-rf6j-4mpp-j9mf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rf6j-4mpp-j9mf>`_

This has been fixed in main for v4.5.0

- `PR 108964 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108964>`_

- `PR 109235 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109235>`_

- `PR 109234 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/109234>`_

- `PR 109233 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109233>`_

:cve:`2026-10674`
-----------------

DoS (hard fault) in NXP LPUART driver: unsupported runtime UART config leaves clocks disabled

The NXP LPUART serial driver (``drivers/serial/uart_mcux_lpuart.c``), when
``CONFIG_UART_USE_RUNTIME_CONFIGURE`` is enabled, called ``LPUART_Deinit()`` at the
start of ``mcux_lpuart_configure()``, which disables the LPUART peripheral clocks. The
requested configuration is validated only afterwards (in
``mcux_lpuart_configure_basic``), and unsupported parity/data-bit/stop-bit/flow-control
values return ``-ENOTSUP`` before the clock is re-enabled.

As a result, a ``uart_configure()`` request with an unsupported configuration left the
LPUART in a clock-disabled state; any subsequent access to LPUART registers
(``poll_out``/``poll_in``, interrupt handling, or a later reconfigure) faults on the
gated peripheral and escalates to a hard fault, crashing the system.

``uart_configure()`` is a Zephyr syscall whose verifier (``z_vrfy_uart_configure``) only
checks that ``cfg`` is readable user memory and forwards the caller-supplied
configuration unchanged, so an unprivileged userspace thread with access to an LPUART
device can deterministically trigger the fault, a persistent system-wide denial of
service.

Introduced in v2.5.0 and present in all subsequent releases until this fix, which
removes the ``LPUART_Deinit()`` call and instead only disables the transmitter/receiver,
leaving the clock running.

- `Zephyr project bug tracker GHSA-mw68-r353-m3vf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mw68-r353-m3vf>`_

This has been fixed in main for v4.5.0

- `PR 107186 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107186>`_

- `PR 111106 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111106>`_

- `PR 111105 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111105>`_

- `PR 111104 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111104>`_

:cve:`2026-10675`
-----------------

Bluetooth Mesh PB-ADV: invalidated provisioning link kept alive indefinitely, blocking (re)provisioning (DoS)

In Zephyr's Bluetooth Mesh PB-ADV provisioning bearer
(``subsys/bluetooth/mesh/pb_adv.c``), ``prov_msg_recv()`` rescheduled the provisioning
protocol watchdog timer unconditionally at the top of the function, before the FCS check
and before the ``ADV_LINK_INVALID`` check. Once a provisioning attempt fails,
``prov_failed()`` sets ``ADV_LINK_INVALID`` and the only recovery path is the protocol
timer firing (``protocol_timeout`` -> ``prov_link_close`` -> ``close_link`` ->
``reset_adv_link`` and re-enabling of scanning and the unprovisioned device beacon).

A remote, unauthenticated attacker on the BLE advertising channel can first induce a
provisioning failure (e.g. with a malformed generic-provisioning PDU) and then transmit
any FCS-valid PB-ADV transaction PDU on the same link ID more often than once per
protocol timeout (60 s, or 120 s for OOB input/output). Because each such packet reset
the timer even on an invalidated link, ``protocol_timeout`` never fired, the dead link
was never torn down, and the device remained pinned in an un-provisionable state with
its unprovisioned beacon disabled and new Link Open requests rejected.

PB-ADV PDUs are processed without authentication and the FCS is a keyless CRC, so no
pairing or prior trust is required and the attacker chooses the link ID itself. The
impact is a persistent denial of provisioning/re-provisioning service; there is no
memory-safety, confidentiality, or integrity impact.

The vulnerable code shipped in releases through v4.4.1. The fix moves the timer
reschedule to after the ``ADV_LINK_INVALID`` check (and the FCS check before the reset)
so an invalidated link can no longer be kept alive by incoming packets.

- `Zephyr project bug tracker GHSA-4rwg-6mr4-55hc
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4rwg-6mr4-55hc>`_

This has been fixed in main for v4.5.0

- `PR 109324 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109324>`_

- `PR 110910 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110910>`_

- `PR 110909 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110909>`_

- `PR 110911 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110911>`_

:cve:`2026-10677`
-----------------

Kernel heap memory leak in ``z_vrfy_k_poll()`` lets an unprivileged user thread exhaust the kernel resource pool

The ``CONFIG_USERSPACE`` syscall verifier ``z_vrfy_k_poll()`` in ``kernel/poll.c``
allocates a kernel-side copy of the user-supplied ``k_poll_event[]`` via
``z_thread_malloc()`` and then validates each event's object handle. Before this fix,
validation used ``K_OOPS(K_SYSCALL_OBJ(...))`` inline inside the loop, which kills the
calling thread without freeing ``events_copy``.

A user thread can pass ``num_events >= 1`` with a forged object handle to leak the
allocation; because newly spawned user threads inherit the parent's ``resource_pool``
(``kernel/thread.c``), an attacker spawns sacrificial threads to repeat the leak until
the shared kernel heap is exhausted. Once depleted, legitimate kernel allocations from
that pool (``k_queue`` alloc nodes, ``k_msgq`` buffers, future ``k_poll`` calls, etc.)
fail, causing a system-level denial of service.

The fix replaces each inline ``K_OOPS`` with a conditional ``goto oops_free`` so the
buffer is freed before the thread is killed. Affects Zephyr releases from v1.12.0 (when
``k_poll`` was first exposed to user mode) through v4.4.1.

- `Zephyr project bug tracker GHSA-r3cc-8wcr-xfj9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-r3cc-8wcr-xfj9>`_

This has been fixed in main for v4.5.0

- `PR 109361 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109361>`_

- `PR 111111 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111111>`_

- `PR 111112 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111112>`_

- `PR 109535 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109535>`_

:cve:`2026-10678`
-----------------

NULL-pointer / out-of-bounds write in Zephyr MCTP I2C+GPIO target binding driven by an unauthenticated I2C controller

The MCTP-over-I2C+GPIO target binding in Zephyr
(``subsys/pmci/mctp/mctp_i2c_gpio_target.c``) processes pseudo-register writes from an
I2C bus master byte-by-byte in ``mctp_i2c_gpio_target_write_received()`` without
validating the order or the receive buffer. In the affected versions the
``MCTP_I2C_GPIO_RX_MSG_ADDR`` (data) handler dereferences and writes through
``b->rx_pkt`` without checking that the receive buffer was allocated: a controller that
selects the data register and writes a byte without first sending the length register
(which is what allocates the buffer) causes a write of an attacker-chosen byte through a
NULL/unallocated ``mctp_pktbuf`` pointer (i.e. into a small attacker-advanceable offset
above address 0), producing memory corruption or a hard fault.

The same handler also performs a write-then-check bounds test, allowing a one-byte heap
overflow at ``data[255]`` when more than 255 data bytes are sent.

Because the I2C target callback is invoked with raw bytes supplied by whatever device is
the bus master and the binding performs no authentication, a malicious or malfunctioning
controller on the bus can trigger these without any prior protocol state, leading to
memory corruption and/or denial of service on the target device.

The vulnerable code was introduced when the I2C+GPIO target binding was added and
shipped in Zephyr v4.3.0 and v4.4.0. The fix defers allocation to the first data byte
with a NULL check, treats a missing length as a zero-sized packet rejected by libmctp,
and moves the bounds check before the store.

- `Zephyr project bug tracker GHSA-pmwm-5rcm-39rr
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-pmwm-5rcm-39rr>`_

This has been fixed in main for v4.5.0

- `PR 109428 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109428>`_

- `PR 111118 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111118>`_

- `PR 111117 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111117>`_

:cve:`2026-10679`
-----------------

Divide-by-zero in DesignWare SPI driver reachable from spi_transceive syscall (local DoS)

The DesignWare SPI driver (``drivers/spi/spi_dw.c``) computed the SPI BAUDR clock
divider as ``info->clock_frequency / config->frequency`` without validating
``config->frequency``.

``spi_transceive`` is a Zephyr ``__syscall`` and its verify handler
(``drivers/spi/spi_handlers.c``) copies the caller-supplied ``spi_config`` from
userspace without checking the frequency field, so a userspace thread that has been
granted access to a DesignWare SPI device kernel object can pass ``frequency = 0`` and
trigger an unsigned integer divide-by-zero in ``spi_dw_configure()``.

On Cortex-M Mainline (``SCB->CCR.DIV_0_TRP`` is set in ``z_arm_fault_init()``) and on
ARC (a dedicated ``__ev_div_zero`` vector) this raises a CPU exception, resulting in a
kernel fault and local denial of service.

The fix rejects zero frequency and frequencies above ``clock_frequency / 2`` (the
DesignWare SSI databook minimum SCKDIV of 2) with ``-EINVAL``. The defect affects all
Zephyr releases up to and including v4.4.0; exploitation requires ``CONFIG_USERSPACE=y``
and an unprivileged thread already granted SPI driver permission. There is no
memory-corruption or information-disclosure impact.

- `Zephyr project bug tracker GHSA-3qcm-qwh2-v4hq
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3qcm-qwh2-v4hq>`_

This has been fixed in main for v4.5.0

- `PR 105452 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/105452>`_

- `PR 111121 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111121>`_

- `PR 111120 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111120>`_

:cve:`2026-10680`
-----------------

Out-of-bounds access in Zephyr BR/EDR L2CAP configuration request handling via ``uint16_t`` length underflow

The Classic (BR/EDR) L2CAP signaling handlers ``l2cap_br_conf_req()`` and
``l2cap_br_conf_rsp()`` in ``subsys/bluetooth/host/classic/l2cap_br.c`` validated the
minimum command size against ``buf->len`` (the bytes remaining in the whole received
PDU) instead of ``len`` (the per-command data length from the L2CAP signaling header).
Because multiple signaling commands can be packed into one PDU, ``buf->len`` may exceed
a command's ``len``. An attacker can send a ``CONF_REQ`` command with a header length
smaller than the configuration-request structure (e.g. 0), followed by another command
so that ``buf->len`` still satisfies the check. The check then passes incorrectly and
``opt_len = len - sizeof(*req)`` underflows the ``uint16_t`` to a near-0xFFFF value. The
configuration-option loop, which lacks an ``opt_len``-versus-``buf->len`` guard, then
walks far past the end of the pooled ACL receive buffer using ``net_buf`` pull
primitives that perform no runtime bounds check, producing an out-of-bounds read of host
memory and, when the out-of-bounds option bytes encode an MTU or flush-timeout option,
an out-of-bounds write. The BR/EDR signaling channel is processed before
pairing/encryption and an L2CAP channel to an L0 service such as SDP can be opened
without pairing, so an unauthenticated peer within radio range that can establish an ACL
connection can trigger the flaw, leading to memory corruption and denial of service
(host/device crash). The defect is present in released versions including v4.4.0. The
fix validates against ``len`` instead of ``buf->len`` in both handlers.

- `Zephyr project bug tracker GHSA-vrwx-p97q-8854
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vrwx-p97q-8854>`_

This has been fixed in main for v4.5.0

- `PR 109308 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109308>`_

- `PR 110661 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110661>`_

- `PR 110662 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110662>`_

- `PR 111405 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111405>`_

:cve:`2026-10681`
-----------------

SMP race in ``thread_idx_alloc()`` lets concurrent ``k_object_alloc(K_OBJ_THREAD)`` callers share a kernel-object permission slot

In Zephyr's userspace dynamic-objects subsystem, ``thread_idx_alloc()`` in
``kernel/userspace/userspace.c`` allocated a new thread permission index from the global
``_thread_idx_map[]`` bitmap without holding ``lists_lock``.

On SMP systems, two user-mode threads invoking the ``k_object_alloc(K_OBJ_THREAD)``
syscall concurrently can both observe the same low free bit, perform the same non-atomic
RMW to clear it, and return the identical ``tidx``.

The two newly created ``K_OBJ_THREAD`` objects are then assigned the same ``thread_id``,
so the two user threads alias a single bit position in every kernel object's ``perms[]``
bitfield: any subsequent grant of access on a kernel object to one thread is implicitly
a grant to the other, defeating userspace ACL isolation. A secondary lost-update window
between the unlocked ``&=~BIT()`` in alloc and the locked ``|= BIT()`` in
``thread_idx_free()`` can also leak entries from the thread-index pool.

The defect is reachable from any user-mode thread via the unrestricted ``__syscall``
``k_object_alloc`` and is gated on ``CONFIG_USERSPACE``, ``CONFIG_DYNAMIC_OBJECTS``, and
``CONFIG_SMP``. The flaw was introduced when the per-thread permission index was added
in 2018 and is present in every release up to and including v4.4.0. Fixed by holding
``lists_lock`` across the bitmap RMW and the permissions clear (and inlining the
``obj_list`` traversal that previously took the lock itself).

- `Zephyr project bug tracker GHSA-j693-5rh5-8g8h
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-j693-5rh5-8g8h>`_

This has been fixed in main for v4.5.0

- `PR 109616 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109616>`_

- `PR 111409 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111409>`_

- `PR 111410 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111410>`_

- `PR 111408 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111408>`_

:cve:`2026-10682`
-----------------

Out-of-bounds write in Zephyr ``log_filter_set`` syscall verifier reachable from userspace

The userspace verifier ``z_vrfy_log_filter_set()`` for the ``log_filter_set`` syscall in
``subsys/logging/log_mgmt.c`` performed a signed comparison against the ``int16_t``
``src_id`` parameter: ``src_id < (int16_t)log_src_cnt_get(domain_id)``. Any negative
value for ``src_id`` (e.g. -1) trivially satisfied this check and was forwarded into
``z_impl_log_filter_set``, where it propagated to ``filter_set()`` and ultimately to
``get_dynamic_filter()``, which uses ``source_id`` as an unsigned index into the
linker-section array ``&TYPE_SECTION_START(log_dynamic)[source_id].filters``.

After implicit conversion through ``uint32_t``, an ``int16_t`` -1 becomes 0xFFFFFFFF,
indexing ``log_dynamic`` far out of bounds and causing the kernel to perform an OOB read
and an OOB read-modify-write (``LOG_FILTER_SLOT_GET/SET``) against memory adjacent to
the ``log_dynamic`` section.

The written value is a constrained 3-bit log level slot within the targeted 32-bit word,
but the target address is attacker-chosen (a small negative offset from ``log_dynamic``)
and the write occurs in supervisor mode following a syscall from an unprivileged user
thread, providing a kernel memory-corruption / privilege-escalation primitive.

The defect is reachable on any build with ``CONFIG_USERSPACE=y`` and
``CONFIG_LOG_RUNTIME_FILTERING=y``. Present from Zephyr v3.3.0 through v4.4.1. The fix
replaces the signed bound check with an unsigned comparison: ``(uint32_t)src_id <
log_src_cnt_get(domain_id)``, which correctly rejects negative inputs.

- `Zephyr project bug tracker GHSA-6vqh-mg7h-58qh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6vqh-mg7h-58qh>`_

This has been fixed in main for v4.5.0

- `PR 109690 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109690>`_

- `PR 111418 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111418>`_

- `PR 111419 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111419>`_

- `PR 111417 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111417>`_

:cve:`2026-10683`
-----------------

DesignWare I2C target driver can be wedged into a permanent stuck state by an on-bus master (DoS)

In the Synopsys DesignWare I2C driver (``drivers/i2c/i2c_dw.c``) operating in
target/slave mode, the ``rx_full`` interrupt handler gates the ``write_requested()``
callback on ``dw->state`` != ``CMD_SEND``, and ``dw->state`` is only reset to READY on a
STOP interrupt. The ``START_DET`` interrupt, whose handler in
``i2c_dw_slave_read_clear_intr_bits()`` would reset the state on every (re)START, was
never added to the enabled interrupt mask in ``i2c_dw_slave_register()``, so that
recovery path was dead code.

As a result, if the STOP interrupt is lost (bus glitch/reset, or a concurrent master
driving STOP) or the bus master issues a legal WRITE-repeated-START-WRITE sequence with
the same direction, the driver remains in ``CMD_SEND`` permanently and never invokes
``write_requested()`` again for the life of the target.

An I2C master on the same physical bus can deliberately trigger this, causing the I2C
target function to malfunction for all subsequent write transactions and desynchronizing
consumer framing state (e.g. MCTP-over-I2C), a recoverable-by-reset denial of service of
the target peripheral.

The fix unmasks ``START_DET`` so the state is reset at every bus (re)START. Impact is
availability-only over a local board-level bus; no memory corruption results in the
in-tree consumer, whose per-byte buffer write is independently bounds-checked.

- `Zephyr project bug tracker GHSA-fj9c-r5qw-3639
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fj9c-r5qw-3639>`_

This has been fixed in main for v4.5.0

- `PR 107537 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107537>`_

- `PR 111415 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111415>`_

- `PR 111414 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111414>`_

:cve:`2026-10684`
-----------------

Out-of-bounds read in coredump shell when printing stored-dump target code

In ``subsys/debug/coredump/coredump_shell.c``, ``print_coredump_hdr()`` used the 16-bit
``tgt_code`` field of a stored Zephyr coredump header directly as an index into
``coredump_target_code2str[]``, a fixed 7-element array of string pointers, with no
bounds check.

A stored coredump whose ``tgt_code`` is >= 7 causes an out-of-bounds read of a ``char*``
up to ~64K entries past the array; that value is passed as the ``%s`` argument to
``shell_print``, which dereferences and walks it as a string. The result is either
disclosure of device memory contents to the shell user or a crash when the out-of-bounds
pointer is unmapped.

The defect is reached via the ``coredump print`` shell command
(``cmd_coredump_print_stored_dump`` -> ``pretty_print_coredump`` ->
``parse_and_print_coredump`` -> ``print_coredump_hdr``). The ``tgt_code`` field is
device-generated and in-range during normal crash handling, so triggering requires local
shell access plus the ability to stage or corrupt the stored coredump in the
flash/in-memory backend.

Introduced in v4.2.0 (commit 13abd7fe730) and present through v4.4.0; fixed by clamping
out-of-range codes to the 'unknown' (index 0) entry.

- `Zephyr project bug tracker GHSA-9fw2-4429-49q8
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9fw2-4429-49q8>`_

This has been fixed in main for v4.5.0

- `PR 109630 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109630>`_

- `PR 111421 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111421>`_

- `PR 111422 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111422>`_

:cve:`2026-10685`
-----------------

Use-after-free of GATT subscribe params in Bluetooth host CCC-write response handler

The Zephyr Bluetooth GATT client CCC-write response handler ``gatt_write_ccc_rsp()`` in
``subsys/bluetooth/host/gatt.c`` invoked the application's ``params->subscribe()``
callback after it had already called ``params->notify(conn, params, NULL, 0)``.

Per the public GATT API, a notify callback with ``NULL`` data is the documented signal
that the subscription has terminated and the ``bt_gatt_subscribe_params`` struct may be
freed or reused by the application; calling ``subscribe()`` on the struct afterwards is
a use-after-free, including an indirect call through the freed ``params->subscribe``
function pointer.

The error branch is remotely (adjacent) reachable: a Zephyr device acting as a GATT
client that calls ``bt_gatt_subscribe()`` can be driven into this ordering when a
connected GATT server peer answers the CCC write with an ATT Error Response (the
peer-supplied error code flows through ``att_error_rsp`` -> ``att_handle_rsp`` into
``gatt_write_ccc_rsp``).

For applications that free or recycle subscription parameters in their
notification-termination handler, this results in memory corruption, a crash (denial of
service), or potentially attacker-influenced control flow. The fix reorders the handler
so the ``subscribe()`` callback runs before the terminating ``notify(NULL)`` in both the
error and unsubscribe paths.

- `Zephyr project bug tracker GHSA-29xh-jm2m-4qvx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-29xh-jm2m-4qvx>`_

This has been fixed in main for v4.5.0

- `PR 99920 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/99920>`_

- `PR 111430 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111430>`_

- `PR 111429 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111429>`_

- `PR 111428 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111428>`_

:cve:`2026-10686`
-----------------

Missing hop-limit decrement on IPv6 forwarding path allows unbounded packet looping (DoS) in Zephyr routers

Zephyr's IPv6 forwarding path re-sent routed unicast packets without ever decrementing
the IPv6 hop limit. Both routing branches of ``ipv6_route_packet()`` (``subsys/net/ip``)
were affected: the explicit-route path (``net_route_packet()``) and the on-link
cross-interface path (``net_route_packet_if()``). Each set the packet forwarding flag
and called ``net_send_data()`` with the hop limit untouched and no expiry check.

Per RFC 8200 the hop-limit decrement is the mechanism that bounds packet lifetime and
terminates routing loops; without it, a device acting as an IPv6 router relays looping
packets indefinitely. An on-path attacker who can induce or exploit a transient L3 loop
turns it into a permanent forwarding storm, causing CPU/bandwidth resource exhaustion
(availability DoS) on the forwarder and adjacent links; path-discovery and loop
diagnostics that rely on hop-limit expiry are also defeated.

**Affected configurations.** In every affected release the forwarding path is reached
via ``CONFIG_NET_ROUTE`` (enabled by default when ``CONFIG_NET_IPV6_NBR_CACHE`` is set),
together with ``CONFIG_NET_ROUTING`` for cross-interface routing. Note that
``CONFIG_NET_IPV6_FORWARDING`` and ``CONFIG_NET_IPV4_FORWARDING`` — which appear in the
fix and in this advisory's evidence notes — were introduced *after* v4.4.0, when the
routing options were split and renamed; they do not exist in any affected release. When
auditing a v4.4.1-or-earlier configuration, look for ``CONFIG_NET_ROUTE`` and
``CONFIG_NET_ROUTING``.

**IPv4 is not affected in any release.** The IPv4 forwarding path
(``net_route_ipv4_packet()`` in ``route_ipv4.c``) was added after v4.4.0 and has never
shipped in a release. Its TTL decrement and IPv4 header-checksum recomputation landed on
``main`` as part of the same fix, so the evidence notes below discuss it, but no
released version is reachable by way of IPv4.

Affected releases are v1.8.0 through v4.4.1: v1.8.0 introduced ``net_route_packet()``
and v2.2.0 added ``net_route_packet_if()``, and neither decremented the hop limit.
v4.3.1 carries the explicit-route fix but not the on-link one, so it is affected as
well. Fixed on ``main`` by 7d8f1afa7345 (explicit-route path) and 589eadc74efa (on-link
path).

- `Zephyr project bug tracker GHSA-4cg6-6jc4-2r6h
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4cg6-6jc4-2r6h>`_

This has been fixed in main for v4.5.0

- `PR 109585 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109585>`_

- `PR 111451 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111451>`_

- `PR 111450 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111450>`_

- `PR 111449 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111449>`_

:cve:`2026-10687`
-----------------

Under embargo until 2026-08-01

:cve:`2026-10772`
-----------------

Under embargo until 2026-08-01

:cve:`2026-10773`
-----------------

Out-of-bounds read in DHCPv4 client message-type name lookup (net_dhcpv4_msg_type_name)

The DHCPv4 client helper ``net_dhcpv4_msg_type_name()`` in
``subsys/net/lib/dhcpv4/dhcpv4.c`` indexes a static 8-element ``const char *`` name
table after a faulty bounds check. The guard used ``msg_type <= sizeof(name)`` instead
of ``msg_type <= ARRAY_SIZE(name)``; ``sizeof`` returns the byte size of the pointer
array (32 on 32-bit, 64 on 64-bit targets) rather than the element count of 8, so
message-type values from 9 up to that byte size pass the check and cause ``name[msg_type
- 1]`` to read past the end of the array.

The ``msg_type`` value originates from the DHCP MESSAGE TYPE option, which is read as an
unchecked raw byte from a received packet (``net_pkt_read_u8``) and passed unmodified
into the lookup. A DHCP server, or any host able to inject a spoofed DHCP reply onto the
client's link, can therefore drive the index out of bounds. The out-of-range slot yields
a garbage ``const char *`` that is then dereferenced by a ``%s`` log conversion.

The lookup is reached only from a debug log statement (``NET_DBG`` / ``LOG_DBG``), so
the out-of-bounds read is triggerable only when the DHCPv4 log module is built at DEBUG
level (``CONFIG_NET_DHCPV4_LOG_LEVEL_DBG``), which is not the default configuration.
When that condition holds, the result is an out-of-bounds read and a wild-pointer
dereference: most likely a crash of the DHCP client (denial of service) and potentially
disclosure of an adjacent pointer's contents through the log output. The fix replaces
``sizeof`` with ``ARRAY_SIZE``, restoring the correct 1..8 acceptance window.

- `Zephyr project bug tracker GHSA-r5hq-xq42-wcfq
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-r5hq-xq42-wcfq>`_

This has been fixed in main for v4.5.0

- `PR 110135 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110135>`_

- `PR 112423 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112423>`_

- `PR 115146 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/115146>`_

:cve:`2026-10774`
-----------------

PSA key-slot leak in Bluetooth Mesh subnet deletion leading to resource-exhaustion DoS

Zephyr's Bluetooth Mesh subnet key management leaks one PSA Crypto key slot on every
subnet-key teardown. In ``subsys/bluetooth/mesh/subnet.c``, ``net_keys_create()``
imports the Private Beacon Key into a PSA key slot under ``CONFIG_BT_MESH_PRIV_BEACONS``
(enabled by default), but ``subnet_keys_destroy()`` guarded the matching
``psa_destroy_key()`` with ``CONFIG_BT_MESH_V1d1``. That Kconfig symbol was removed when
explicit Mesh 1.0.1 support was dropped, so the destroy branch became permanently dead
code and the import is never balanced by a destroy.

The imbalanced teardown is reached every time subnet keys are destroyed: deleting a
subnet (Config Server NetKey Delete), completing a Key Refresh Procedure (which retires
the old key set), and resetting/re-provisioning the node. The over-the-air triggers are
processed only under the node's device key, so they are exercisable by the provisioner
or network administrator that owns the node, reachable over the Bluetooth Mesh network.

With the default ``CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT`` of 16, repeated add/delete or
key-refresh cycles exhaust the shared PSA key-slot pool after roughly a dozen rounds.
Once exhausted, ``bt_mesh_private_beacon_key()`` and thus subnet creation fail: the node
can no longer add subnets or complete key refresh, and other PSA crypto consumers on the
device may be starved, until the device is rebooted. The fix aligns the destroy guard
with the import guard (``CONFIG_BT_MESH_PRIV_BEACONS``) so each slot is freed.

- `Zephyr project bug tracker GHSA-6q7g-798f-76p2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6q7g-798f-76p2>`_

This has been fixed in main for v4.5.0

- `PR 110235 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110235>`_

- `PR 110438 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110438>`_

- `PR 110437 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110437>`_

- `PR 110436 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110436>`_

:cve:`2026-10848`
-----------------

Out-of-bounds read in Zephyr OCPP 1.6 RPC message parser (parse_rpc_msg)

The OCPP 1.6 client in ``subsys/net/lib/ocpp`` parsed inbound WAMP RPC frames in
``parse_rpc_msg()`` (``subsys/net/lib/ocpp/ocpp_j.c``) using a hand-rolled helper,
``extract_string_field()``, that copied the message's ``uid`` and ``action`` fields with
``strncpy(out_buf, token + 1, outlen - 1)`` and then scanned the result with
``strchr(out_buf, '"')``. Because ``strncpy`` does not NUL-terminate the destination
when the source is at least ``outlen - 1`` (127) bytes long, the subsequent ``strchr``
reads past the 128-byte destination buffer into adjacent stack memory; if a ``"`` byte
is found beyond the buffer, a one-byte out-of-bounds NUL write also occurs. A related
defect in ``extract_payload()`` runs ``strchr``/``strrchr`` over the receive buffer,
which may not be NUL-terminated when a maximal-length frame fills it.

The parsed bytes come directly from the OCPP central-system server over a websocket: the
reader thread fills ``recv_buf`` via ``websocket_recv_msg()`` and calls
``parse_rpc_msg()`` on each inbound DATA frame (``subsys/net/lib/ocpp/ocpp.c``). A
malicious or compromised central server, or an on-path attacker (OCPP is commonly
deployed over plain ``ws://``), can send an RPC frame whose ``uid`` or ``action`` field
is 127+ bytes with no closing quote, triggering the out-of-bounds access.

The primary impact is a remotely triggerable denial of service: the unbounded scan can
fault on an unmapped page, and the stray NUL write can corrupt adjacent stack state. The
over-read data is not reflected to the peer, so disclosure is limited. The feature is
EXPERIMENTAL and must be explicitly enabled (``CONFIG_OCPP``). The fix replaces the
manual parser with the bounds-respecting ``json_mixed_arr_parse()`` and copies the
extracted ``uid`` with an explicitly NUL-terminated buffer, eliminating both over-reads.

- `Zephyr project bug tracker GHSA-jgqq-7mjj-w642
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jgqq-7mjj-w642>`_

This has been fixed in main for v4.5.0

- `PR 95399 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/95399>`_

- `PR 112426 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112426>`_

:cve:`2026-10849`
-----------------

Heap out-of-bounds write in Zephyr hawkBit OTA client when terminating server response body

The hawkBit device management client in ``subsys/mgmt/hawkbit`` accumulates the body of
an HTTP response from the update server into a heap buffer in ``response_json_cb()``
(``subsys/mgmt/hawkbit/hawkbit.c``). The buffer is sized to hold the received body bytes
but reserves no space for a terminating NUL. When the full response has arrived, the
code writes ``response_data[downloaded_size] = '\0'`` — and whenever the accumulated
body length equals the allocation, that terminator lands one byte past the end of the
heap object (a heap-based out-of-bounds write, CWE-122 / CWE-787).

The body length and fragmentation are taken directly from the parsed HTTP response
(``rsp->body_frag_start`` / ``rsp->body_frag_len``) and are fully controlled by the
remote hawkBit server, which chooses its own response length. The precise trigger
depends on how the buffer grows, and both forms are remotely reachable. Since v4.0.0 the
reallocation is sized to exactly ``downloaded_size + body_len``, so **any** response
body larger than the 1100-byte initial buffer makes the out-of-bounds write
deterministic; such response sizes are normal for hawkBit deployment metadata. Before
v4.0.0 the buffer grew by doubling and the growth check (``(downloaded_size + body_len)
> response_buffer_size``) is false at equality, so a response body whose length is
exactly the current allocation — 1100 bytes with the default initial buffer — skips the
reallocation entirely and writes the terminator at ``response_data[1100]`` of an
1100-byte object. The HTTP length-mismatch check does not catch this, because the
declared and received lengths genuinely agree. Either form is reachable by a malicious,
compromised, or man-in-the-middle update server (TLS is optional and, when enabled, does
not protect against a hostile server), with no authentication of response content and no
client-side length cap protecting the write.

The out-of-bounds write is a fixed single NUL byte immediately following the allocation,
corrupting adjacent allocator metadata or the next allocation. The practical impact is
heap corruption leading to denial of service (fault on a subsequent allocation or free),
with the bounded, allocator-dependent possibility of further corruption. The fix sizes
the buffer to the body length plus one and copies with ``memcpy``, ensuring the
terminator always lands within the allocation.

- `Zephyr project bug tracker GHSA-39h3-7phx-pwhv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-39h3-7phx-pwhv>`_

This has been fixed in main for v4.5.0

- `PR 109285 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109285>`_

- `PR 112429 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112429>`_

- `PR 112428 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112428>`_

- `PR 115262 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/115262>`_

:cve:`2026-11368`
-----------------

Use-after-free in Bluetooth host ATT TX completion on disconnect mid-transfer

The Bluetooth host ATT layer (``subsys/bluetooth/host/att.c``) associates each in-flight
ATT TX buffer with its owning channel via the static ``tx_meta_data_storage[]`` array
(``data->att_chan = chan``). When a buffer's last reference is dropped, its net-buf
destroy callback defers the completion handling to the system workqueue
(``att_tx_destroy`` -> ``att_tx_destroy_work_handler`` -> ``att_on_sent_cb`` ->
``bt_att_sent``), where ``bt_att_sent`` dereferences the channel and its ATT context
(``sys_slist_get(&att->reqs)``).

When a peer disconnects while an ATT PDU (a server notification/indication or any
response) is still in flight in the controller TX path, L2CAP tears the channel down in
``l2cap_chan_del()``: it runs the disconnected callback and then the released callback
(``bt_att_released``), which frees the channel slab slot. Because the in-flight buffer
is held by the connection TX path rather than the channel's own queue, its deferred
destroy work can run after the channel has been freed. The ``att_on_sent_cb`` guard
intended to drop the stale callback itself dereferences ``meta->att_chan``, which is now
a dangling pointer into a freed (and possibly reused) slab slot.

A remote peer with an ATT connection can drive this by disconnecting during routine ATT
traffic; no pairing or user interaction is required to reach the ATT bearer. The result
is a use-after-free read/write of freed channel memory, reliably crashing the Bluetooth
host (denial of service) and, because the channel slab slot may be reused, potentially
corrupting live memory.

The fix makes ``bt_att_released()`` ``NULL`` the ``att_chan`` field of every
``tx_meta_data_storage[]`` entry still referencing the channel before freeing it, so the
deferred guard observes a ``NULL`` pointer and drops the callback. Teardown and the
destroy work both run on the cooperative system workqueue, so the array update is
serialized and needs no lock.

- `Zephyr project bug tracker GHSA-85vg-gwc4-77g7
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-85vg-gwc4-77g7>`_

This has been fixed in main for v4.5.0

- `PR 110416 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110416>`_

- `PR 112431 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112431>`_

:cve:`2026-11742`
-----------------

Use-after-free race in kernel ``k_queue_peek_head/tail`` due to missing spinlock

The kernel queue helper ``z_queue_node_peek()`` in ``kernel/queue.c`` dereferences a
node taken from a queue's ``data_q`` list, reading the node's flag byte and, for items
enqueued via ``k_queue_alloc_append``/``alloc_prepend``, the data pointer of an
internally allocated ``alloc_node`` struct. The implementations of
``z_impl_k_queue_peek_head()`` and ``z_impl_k_queue_peek_tail()`` performed this
read-and-dereference without holding the queue's spinlock, while every other accessor of
the same list — including ``k_queue_get()``, which unlinks a node and ``k_free()``\ s
its backing ``alloc_node`` — operates under that lock.

Because peek was unsynchronized, a concurrent ``k_queue_get()`` on the same queue (on an
SMP build, or under preemption/ISR concurrency) can free the node between the moment
peek obtains the node pointer and the moment it dereferences it. The peek then reads
flag bits and a data pointer out of freed, potentially re-allocated heap memory and
returns a stale or dangling pointer to its caller. ``k_fifo`` and ``k_lifo`` are thin
wrappers over ``k_queue``, so this affects buffer queues used throughout the
``net_buf``, Bluetooth, USB, and networking subsystems; the peek operations are also
system calls reachable from ``CONFIG_USERSPACE`` threads.

The consequences are a use-after-free read that can leak stale heap contents (one
pointer word) and, when the returned dangling pointer is subsequently consumed as a live
buffer, a dereference that can crash the system or corrupt memory. Exploitation requires
winning a small race window with local access (e.g. a userspace process racing
``k_queue_peek_*`` against ``k_queue_get`` on a shared queue, or two CPUs), so practical
impact is bounded and of low severity.

The fix wraps both peek implementations with ``k_spin_lock``/``k_spin_unlock`` on the
queue lock, making the read-and-dereference atomic with respect to the concurrent
unlink-and-free and bringing peek into line with the rest of the queue's locking
discipline.

- `Zephyr project bug tracker GHSA-8xm3-4w69-29mm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8xm3-4w69-29mm>`_

This has been fixed in main for v4.5.0

- `PR 110576 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110576>`_

- `PR 112439 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112439>`_

- `PR 112438 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112438>`_

- `PR 112437 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112437>`_

:cve:`2026-11743`
-----------------

Missing negative-offset/overflow check in SF32LB MPI QSPI NOR flash driver allows out-of-bounds read and write

The SF32LB MPI QSPI NOR flash driver (drivers/flash/flash_sf32lb_mpi_qspi_nor.c)
validated the flash offset and length on its read and write paths with the test
``(offset + size) > data->size``. Because ``offset`` is a signed ``off_t`` while
``size`` is unsigned, a negative offset is converted to a large unsigned value and the
addition can wrap to a small result that passes the check. The read path then performs
``memcpy(dst, (void *)(data->base + offset), size)`` and the write path programs flash
at ``offset`` and cache-invalidates ``data->base + offset``, in both cases accessing
memory outside the mapped flash window. The driver's erase path already rejected
negative offsets, but read and write did not.

In builds with ``CONFIG_USERSPACE``, ``flash_read`` and ``flash_write`` are syscalls
whose verifiers validate the device object and the caller's buffer but deliberately
delegate offset bounds checking to the driver. An unprivileged thread that has been
granted access to this flash device can therefore call the syscall with a crafted
negative offset and a buffer valid in its own memory domain, and reach the unchecked
access.

The most direct impact is on the read path: by choosing a negative offset and matching
size, an attacker slides the ``memcpy`` source below the flash base and copies arbitrary
CPU-addressable memory into its own buffer, disclosing memory it is not authorized to
read. The write path additionally allows programming flash at an out-of-range address
and invalidating an attacker-chosen cache range, affecting integrity and availability.
Reachability requires userspace to be enabled and the raw flash device object to be
granted to an untrusted thread.

The fix replaces the check with ``qspi_nor_range_is_valid()``, which rejects negative
offsets and performs the bound comparison in overflow-safe 64-bit arithmetic on both
paths, and additionally adds an SRAM DMA bounce buffer plus source/destination overlap
rejection to prevent a separate DMA bus-hang condition.

- `Zephyr project bug tracker GHSA-c6wh-gwg4-fj5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c6wh-gwg4-fj5j>`_

This has been fixed in main for v4.5.0

- `PR 107793 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107793>`_

- `PR 112433 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112433>`_

- `PR 112434 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112434>`_

:cve:`2026-11809`
-----------------

UpdateHub probe: uninitialized-heap out-of-bounds read of network-supplied metadata

The UpdateHub OTA client in ``subsys/mgmt/updatehub/updatehub.c`` contains an
out-of-bounds / uninitialized-memory read in ``z_impl_updatehub_probe()``. The probe
response from the UpdateHub server is copied into a heap buffer (``metadata``) that is
correctly NUL-terminated, but a second buffer (``metadata_copy``) is allocated with
``k_malloc`` (unzeroed) and filled with ``memcpy(metadata_copy, metadata,
strlen(metadata))``, which omits the terminating NUL. Everything after the copied
content remains uninitialized heap.

When the first ``json_obj_parse()`` over the array descriptor fails, the code falls back
to ``json_obj_parse(metadata_copy, strlen(metadata_copy), ...)``. The ``strlen()`` call
scans past the copied bytes through uninitialized heap and, if no zero byte is found
before the end of the allocation, reads beyond the buffer; the resulting over-long
length is then parsed as JSON. The probe payload is fully controlled by the (malicious,
compromised, or — without the optional ``CONFIG_UPDATEHUB_DTLS`` — on-path) UpdateHub
server, which can craft a large payload that fails the first parse to drive this path.

The consequence is a read of uninitialized heap, with a worst case of an out-of-bounds
read past the ``metadata_copy`` allocation that can fault and crash the update
thread/device, producing a network-triggerable denial of service. The over-read data is
consumed only internally to evaluate the update and is not returned to the attacker, so
there is no direct information disclosure and no out-of-bounds write.

The fix zeroes ``metadata_copy`` with ``memset`` before the copy, guaranteeing NUL
termination and bounding ``strlen()`` within the allocation.

- `Zephyr project bug tracker GHSA-6r86-hvv2-h6g4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6r86-hvv2-h6g4>`_

This has been fixed in main for v4.5.0

- `PR 104704 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104704>`_

- `PR 112445 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112445>`_

- `PR 112444 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112444>`_

- `PR 112443 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112443>`_

:cve:`2026-11810`
-----------------

NULL-pointer dereference in UpdateHub OTA agent on empty inner metadata array (remote DoS)

The UpdateHub firmware-update agent's probe handler (``z_impl_updatehub_probe()`` in
``subsys/mgmt/updatehub/updatehub.c``) parses the JSON metadata returned by the update
server into a fixed two-level nested-array struct. After parsing it validates only the
outer array length (``objects_len != 2``) and then dereferences
``objects[1].objects[0].objects.sha256sum`` via ``strlen()`` without checking that the
inner object array of element ``[1]`` is non-empty.

The metadata is attacker-influenceable network input: the agent fetches it over CoAP
from the configured UpdateHub server during its routine OTA probe. A malicious or
compromised update server (or, when DTLS is disabled, a network man-in-the-middle) can
return a response whose second outer object array is empty. Because the parse target is
zero-initialised, the corresponding ``objects[1].objects[0].objects.sha256sum`` pointer
is NULL, and the subsequent ``strlen()`` dereferences address zero. The same defect
exists in both the 'any boards' and 'some boards' metadata layouts.

The resulting CPU fault is fatal under Zephyr's default error handling, halting or
resetting the device, so the flaw is a remotely triggerable denial of service. Impact is
limited to availability; it is a read from NULL with no out-of-bounds write, memory
corruption, or information disclosure. The fix rejects metadata whose inner object array
is empty before any dereference, on both layouts.

- `Zephyr project bug tracker GHSA-jfpc-324j-84ww
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jfpc-324j-84ww>`_

This has been fixed in main for v4.5.0

- `PR 104704 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104704>`_

- `PR 112445 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112445>`_

- `PR 112444 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112444>`_

- `PR 112443 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112443>`_

:cve:`2026-11811`
-----------------

Socket file-descriptor leak in UpdateHub OTA client start_coap_client() leading to resource-exhaustion DoS

The UpdateHub over-the-air update client's ``start_coap_client()`` in
``subsys/mgmt/updatehub/updatehub.c`` leaks the CoAP/DTLS socket descriptor on its
connection-setup failure paths. The shared ``error:`` cleanup gated socket closing on a
``ret > 0`` flag, but ``ret`` was set to ``-1`` immediately after the socket was
created, so when ``zsock_setsockopt()`` (DTLS) or ``zsock_connect()`` subsequently
failed the gate was false and ``cleanup_connection()`` was never called. The open
descriptor in the global ``ctx.sock`` was then overwritten by the next attempt,
permanently leaking it from the socket / net_context pool until reboot.

The failing setup path is reached every time the OTA client tries to contact the
UpdateHub server and the connection cannot be established — driven automatically by the
periodic ``autohandler()`` poll (and on demand via the
``updatehub_probe()``/``updatehub_update()`` API or the ``updatehub run`` shell
command). The DTLS handshake/connect outcome is influenceable by a network or on-path
attacker who drops, resets, or otherwise disrupts traffic to the server, and also fails
naturally whenever the server is unreachable.

Each failed attempt permanently leaks one descriptor; once the shared socket pool is
exhausted, networking degrades device-wide until the device is rebooted, a
denial-of-service condition. Severity is low because the leak rate is bounded by the
configured OTA poll interval (default once per 24 hours), the effect is gradual and
recovered by reboot, and only builds with the UpdateHub client enabled are affected.
There is no memory-corruption, information-disclosure, or authentication impact.

- `Zephyr project bug tracker GHSA-q3mh-4wj7-mq7f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-q3mh-4wj7-mq7f>`_

This has been fixed in main for v4.5.0

- `PR 104704 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104704>`_

- `PR 112445 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112445>`_

- `PR 112444 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112444>`_

- `PR 112443 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112443>`_

:cve:`2026-11812`
-----------------

UpdateHub: race condition on shared context causes out-of-bounds write and DoS

The UpdateHub management subsystem (subsys/mgmt/updatehub/updatehub.c) drives every
update operation through a single file-scope ``ctx`` structure that holds the CoAP block
context, payload buffer, status code, socket, and a one-element poll-fd array
``fds[1]``. Access to ``ctx`` was not serialized, and ``prepare_fds()`` wrote
``ctx.fds[ctx.nfds]`` and incremented ``ctx.nfds`` with no bounds check.

Two independent paths mutate ``ctx`` concurrently: the background autohandler running on
the system workqueue, and user-triggered operations reached through the ``updatehub
run`` shell command, direct API calls, or — since the operations are exposed as syscalls
— userspace threads. When a second flow enters ``prepare_fds()`` while ``ctx.nfds`` is
already 1, the write lands one element past the array; by struct layout it overlaps the
adjacent ``ctx.sock``/``ctx.nfds`` members. More broadly, the unsynchronized sharing
lets two flows interleave connection setup and teardown, double-closing a socket
descriptor or scribbling the shared buffers.

The result is corruption of the update subsystem's internal state and denial of service
of the firmware-update path; the out-of-bounds write is contained within the ``ctx``
structure and there is no demonstrated path to memory outside it or to code execution.
Triggering requires a local actor able to invoke update operations (or, with
CONFIG_USERSPACE, an unprivileged userspace thread) and to win a timing race against the
background handler; remote peers cannot control the race timing. The fix serializes the
entry points with a mutex and adds a bounds check to ``prepare_fds()``.

- `Zephyr project bug tracker GHSA-vprh-rff6-46xp
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vprh-rff6-46xp>`_

This has been fixed in main for v4.5.0

- `PR 104704 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104704>`_

- `PR 112445 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112445>`_

- `PR 112444 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112444>`_

- `PR 112443 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112443>`_

:cve:`2026-11893`
-----------------

Double free / use-after-free in Bouffalo Lab HCI driver send() error paths (hci_bflb)

The Bluetooth HCI driver for Bouffalo Lab on-chip BLE controllers (BL60x/BL70x/BL61x),
``bt_bflb_send()`` in ``drivers/bluetooth/hci/hci_bflb.c``, violates the
``bt_hci_driver_api.send()`` buffer-ownership contract. That contract (documented at
``include/zephyr/drivers/bluetooth.h``) requires the buffer reference to be consumed
only on success; on error the caller still owns the reference and unrefs it. The driver
instead routed all error paths through a shared label that unconditionally called
``net_buf_unref(buf)`` before returning the error code, consuming the buffer on failure
as well.

When ``send()`` returns an error, the host TX path (``send_buf()`` in
``subsys/bluetooth/host/conn.c``) unrefs the same buffer again, believing it still owns
it. This double-unref over-decrements the net_buf reference count. Because the buffer is
a TX fragment whose destroy callback also decrements its still-queued parent buffer, the
parent is freed prematurely while reachable on the connection TX queue, producing a
use-after-free and corruption of the shared net_buf pool rather than a benign leak.

The error conditions are on the host-to-controller transmit path (controller send
failure, or an unsupported H:4 packet type), so they are not driven directly by
attacker-supplied radio bytes; a remote/adjacent peer can influence them only
indirectly, e.g. by inducing controller TX failures under heavy link load. The
consequence when reached is BLE-stack denial of service (crash / pool corruption) with
possible further memory corruption, bounded to devices using one of these Bouffalo Lab
on-chip controllers.

- `Zephyr project bug tracker GHSA-ph42-6rqx-728c
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-ph42-6rqx-728c>`_

This has been fixed in main for v4.5.0

- `PR 110711 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110711>`_

- `PR 112558 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112558>`_

:cve:`2026-11894`
-----------------

Double-free / use-after-free in Realtek BEE Bluetooth HCI driver ``send()`` error paths

The Realtek BEE Bluetooth HCI driver's send callback, ``bt_hci_bee_send()`` in
``drivers/bluetooth/hci/hci_bee.c``, violated the ``bt_hci_driver_api`` buffer-ownership
contract. That contract requires the driver to consume (unref) the transmit ``net_buf``
only on success; on an error return the host caller retains ownership and unrefs the
buffer itself. The pre-fix code routed all error paths through a shared cleanup label
that unconditionally called ``net_buf_unref(buf)`` before returning the error code.

Because the host TX paths (in ``subsys/bluetooth/host/hci_core.c``) unref the buffer
again after ``send()`` returns an error, the buffer is freed twice: the driver returns
it to its ``net_buf`` pool and the host then unrefs the already-freed buffer, corrupting
the shared pool / underflowing the reference count (CWE-415). The same error branch
additionally dereferenced ``buf->len`` inside a ``LOG_ERR`` call after the buffer had
already been unref'd, a read of freed memory (CWE-416) that is compiled in at the
default error log level.

The failing edges are reached when the controller's host-to-controller buffer allocation
fails or the controller send fails (resource-exhaustion / IO conditions). A remote
Bluetooth peer can push the device toward these conditions indirectly by driving heavy
host transmit activity, at which point the double-free corrupts the host ``net_buf``
pool and most likely crashes the device, with residual potential for further memory
corruption. The impact is confined to builds using this specific Realtek BEE HCI driver.

The fix returns early from each error path without unreffing and unrefs the buffer only
on the success path, restoring the ownership contract and eliminating both the
double-free and the use-after-free read.

- `Zephyr project bug tracker GHSA-v9mj-h2m6-v9c6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-v9mj-h2m6-v9c6>`_

This has been fixed in main for v4.5.0

- `PR 110711 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110711>`_

- `PR 112558 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112558>`_

:cve:`2026-11985`
-----------------

Cross-thread FPU register leak on ARM when FPU enabled without register sharing

On the Zephyr ARM port, enabling the hardware FPU (``CONFIG_FPU``) forces the "Floating
point ABI" choice, which defaults to ``CONFIG_FP_HARDABI``. Both ``FP_HARDABI`` and
``FP_SOFTABI`` permit the compiler to emit hardware FP instructions in any function,
even code that never uses floating-point types. However, the callee-saved FP registers
(s16-s31 / d8-d15) are only saved and restored across a context switch when
``CONFIG_FPU_SHARING`` is enabled (``arch/arm/core/cortex_m/swap_helper.S`` and
``arch/arm/core/cortex_a_r/swap_helper.S``), and prior to this fix selecting an ABI did
not enable FPU register sharing, which defaults off.

In a build that enables the FPU with the default ABI but leaves ``CONFIG_FPU_SHARING``
disabled, the kernel preserves no callee-saved FP register state across thread switches.
The documented precondition for this "unshared" mode — that only a single thread ever
executes FP instructions — is silently violated because the compiler may generate FP
instructions in every thread.

Under ``CONFIG_USERSPACE``, where threads are mutually isolated, this becomes an
information-disclosure boundary crossing: a victim thread can leave secret-derived
values in s16-s31, and a co-resident unprivileged thread can read those registers
directly (FP register access is not privilege-gated), recovering data left behind by
another thread. Without userspace the same defect causes cross-thread FP state
corruption (a correctness fault). The leak is bounded to the 16 callee-saved
single-precision registers and is opportunistic, so impact is low.

The fix makes ``FP_HARDABI`` and ``FP_SOFTABI`` select ``CONFIG_FPU_SHARING`` and tags
every thread with ``K_FP_REGS`` at creation, so callee-saved FP state is always
preserved across context switches whenever the compiler may emit FP instructions.

- `Zephyr project bug tracker GHSA-qxr9-wh3c-hvgv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qxr9-wh3c-hvgv>`_

This has been fixed in main for v4.5.0

- `PR 110300 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110300>`_

- `PR 112547 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112547>`_

- `PR 112551 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112551>`_

- `PR 112550 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112550>`_

:cve:`2026-12051`
-----------------

NULL pointer dereference in USB DFU device_next download handler (handle_download)

The USB DFU class implementation in Zephyr's new (experimental) ``device_next`` USB
device stack contains a NULL pointer dereference in ``handle_download()``
(subsys/usb/device_next/class/usbd_dfu.c). The handler computes ``MIN(setup->wLength,
buf->len)`` and passes ``buf->data`` to the image write callback without checking that
the ``buf`` net_buf pointer is non-NULL.

The handler is reached over the USB control endpoint, driven by the USB host. For a
``DFU_DNLOAD`` (download) request with no Data OUT stage — notably the zero-length
terminating download that the DFU protocol uses to end a firmware transfer — the USB
core invokes the class handler with a NULL buffer. After the device has been advanced to
the ``DFU_DNLOAD_IDLE`` state (by sending one valid download block and a
``GET_STATUS``), a zero-length ``DFU_DNLOAD`` reaches ``handle_download()`` with ``buf
== NULL``, dereferencing it.

The result is a NULL+offset read that triggers a fatal CPU fault, i.e. a denial of
service (device crash/reset). The attacker is whatever controls the USB host the device
is attached to; DFU download support must be enabled with a registered image. There is
no memory corruption or information disclosure — impact is limited to availability. The
fix adds an explicit ``if (buf != NULL)`` guard so the callback receives a zero-length,
NULL-data transfer instead of crashing.

- `Zephyr project bug tracker GHSA-vhvq-q6rw-jvm4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vhvq-q6rw-jvm4>`_

This has been fixed in main for v4.5.0

- `PR 110830 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110830>`_

- `PR 112560 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112560>`_

:cve:`2026-12052`
-----------------

Out-of-bounds write in USB CDC NCM control handler when host wLength is smaller than the response

The USB device-side CDC NCM class control-to-host handler ``usbd_cdc_ncm_cth`` in
``subsys/usb/device_next/class/usbd_cdc_ncm.c`` builds a fixed-size response for the
``GET_NTB_PARAMETERS`` (28-byte ``struct ntb_parameters``) and ``GET_NTB_INPUT_SIZE``
(8-byte ``struct ntb_input_size``) class requests and copies the whole structure into
the control DATA IN buffer with ``net_buf_add_mem(buf, ..., sizeof(...))``, ignoring the
host-supplied ``wLength``.

The control DATA IN buffer is allocated by the USB stack with a capacity of exactly
``wLength`` bytes (``usbd_ep_ctrl_data_in_alloc`` -> ``udc_ctrl_data_alloc`` ->
``net_buf_alloc_len(&udc_ep_pool, wLength)``; no round-up is applied for the IN
endpoint). Because ``net_buf_add_mem``/``net_buf_simple_add`` only bounds the copy with
an ``__ASSERT_NO_MSG``, which is compiled out in production builds, a host that issues
one of these standard CDC NCM control requests with a ``wLength`` smaller than the
response structure (e.g. ``wLength = 1``) causes the handler to ``memcpy`` up to 27
bytes past the end of the allocated pool buffer.

The request fields come straight from the USB SETUP packet, so any host (or USB
interposer) the Zephyr device enumerates against can trigger the overflow with no
authentication once an image built with the device_next USB stack and the CDC NCM class
is connected. The out-of-bounds write corrupts adjacent allocations and metadata in the
shared ``udc_ep_pool``, primarily causing memory corruption and denial of service of the
USB stack; the overflow length is bounded (<= 27 bytes) and the written content is fixed
device constants, and the bug reads nothing back so there is no information disclosure.
The fix clamps the copy with ``MIN(sizeof(...), setup->wLength)``, matching the existing
CDC ACM handler.

- `Zephyr project bug tracker GHSA-vr4p-6rg5-qgpx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vr4p-6rg5-qgpx>`_

This has been fixed in main for v4.5.0

- `PR 110831 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110831>`_

- `PR 112615 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112615>`_

- `PR 112614 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112614>`_

:cve:`2026-12232`
-----------------

Out-of-bounds read via unvalidated stream_id in Intel ALH DAI get_properties

The Intel ALH digital-audio-interface driver function ``dai_alh_get_properties()`` in
``drivers/dai/intel/alh/alh.c`` used a caller-supplied ``int stream_id`` with no range
validation. The value indexes the fixed-size ``static const uint8_t
alh_handshake_map[64]`` array and scales a FIFO register address, so an out-of-range
``stream_id`` produces an out-of-bounds read of one byte at an attacker-chosen signed
offset from the array. That byte is written into ``prop->dma_hs_id`` and the resulting
``struct dai_properties`` is copied back to the caller, leaking it.

``dai_get_properties_copy()`` is a Zephyr ``__syscall``, and its verifier
``z_vrfy_dai_get_properties_copy()`` (``drivers/dai/dai_handlers.c``) validates only the
device-object permission and the destination buffer, not ``stream_id``. A user-mode
thread that has been granted access to the ALH DAI device object can therefore call the
syscall with an arbitrary ``stream_id``, crossing the userspace/kernel sandbox boundary.

The impact is a one-byte-per-call arbitrary-offset kernel information disclosure (and
leakage of a computed kernel address via ``fifo_address``); a ``stream_id`` that
resolves to an unmapped page faults in kernel context, giving a local denial of service.
Exploitation requires ``CONFIG_USERSPACE`` and device access, making this a local,
moderate-severity issue. The fix rejects negative and too-large ``stream_id`` values up
front and returns NULL, which the copy wrapper maps to ``-ENOENT``.

- `Zephyr project bug tracker GHSA-3557-j848-pv24
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3557-j848-pv24>`_

This has been fixed in main for v4.5.0

- `PR 110946 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110946>`_

- `PR 112747 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112747>`_

- `PR 112745 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112745>`_

:cve:`2026-12233`
-----------------

Uninitialized mutex in TLS trusted-credential backend causes kernel NULL-deref DoS under contention

The PSA Protected Storage credential backend
(subsys/net/lib/tls_credentials/tls_credentials_trusted.c) declared its credential-store
mutex as a plain zero-filled ``static struct k_mutex credential_lock;`` and never called
``k_mutex_init()`` on it. A statically zero-filled ``k_mutex`` has an uninitialized wait
queue (its dlist head/tail are NULL instead of the self-referential sentinels that
``k_mutex_init``/``K_MUTEX_DEFINE`` install). The uncontended lock path does not touch
the wait queue, so the defect is latent and serialized use behaves correctly.

When two execution contexts contend on the lock, ``k_mutex_lock()`` pends the blocking
thread on the wait queue via ``z_pend_curr()``, which calls ``sys_dlist_append()`` on
the zeroed list and dereferences a NULL tail pointer (``tail->next = node``), faulting
the kernel. The lock is held during TLS handshake credential loading and by all
credential add/get/delete operations, so a deployment performing concurrent TLS
handshakes (for example a server handling multiple simultaneous connections from a
remote peer) or a credential-management operation concurrent with a handshake can
trigger the dereference.

The impact is a denial of service: a deterministic kernel panic / device reset on the
first contention. There is no memory corruption beyond the NULL dereference and no
confidentiality or integrity impact; mutual exclusion on the fast path remains correct.
Exposure is limited to builds with ``CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE``
enabled (PSA Protected Storage / TF-M platforms); the default volatile RAM backend
initializes its lock correctly and is unaffected.

The fix initializes the mutex statically with ``K_MUTEX_DEFINE(credential_lock)``,
providing a valid wait queue so the contended path no longer touches a NULL list.

- `Zephyr project bug tracker GHSA-57c4-xcq2-fqj7
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-57c4-xcq2-fqj7>`_

This has been fixed in main for v4.5.0

- `PR 110943 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110943>`_

- `PR 112741 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112741>`_

- `PR 112740 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112740>`_

- `PR 112739 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112739>`_

:cve:`2026-12234`
-----------------

TOCTOU double-fetch in ``zsock_sendmsg``/``recvmsg`` userspace verifiers allows kernel-heap out-of-bounds write

The userspace syscall verifiers ``z_vrfy_zsock_sendmsg()`` and
``z_vrfy_zsock_recvmsg()`` in ``subsys/net/lib/sockets/sockets.c`` snapshot the
caller-supplied ``struct net_msghdr`` into a kernel-side copy with
``k_usermode_from_copy()``, but then re-read the still-live user struct for subsequent
decisions. The kernel ``iovec`` shadow buffer is sized from one read of
``msg->msg_iovlen``, while the population loop is bounded by a second, live read of the
same field.

Because ``msg`` points into ordinary user memory, a cooperating second thread in the
same memory domain can inflate ``msg->msg_iovlen`` in the window between the sizing read
and the loop test (a classic double-fetch / TOCTOU). The population loop then iterates
past the number of ``net_iovec`` slots actually allocated, writing attacker-influenced
``iov_base``/``iov_len`` values beyond the end of the kernel-heap shadow buffer. The
``recvmsg`` verifier has the same defect on both its inbound and result write-back
loops.

The code is reachable from an unprivileged user thread whenever ``CONFIG_USERSPACE`` is
enabled and the ``zsock_sendmsg``/``zsock_recvmsg`` syscalls are available. A successful
race corrupts kernel-managed heap memory across the user-to-kernel privilege boundary,
yielding a local privilege-escalation primitive or, at minimum, a kernel-fault denial of
service. The fix copies the header once and derives every size, bound, and gate from the
snapshot, copying each ``iovec`` entry atomically so its base and length can no longer
be raced apart.

- `Zephyr project bug tracker GHSA-fcp3-vrr2-xfjv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fcp3-vrr2-xfjv>`_

This has been fixed in main for v4.5.0

- `PR 108079 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108079>`_

- `PR 112619 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112619>`_

- `PR 112624 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112624>`_

- `PR 112625 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112625>`_

:cve:`2026-12235`
-----------------

Out-of-bounds write in Xtensa llext PLT relocation from malformed ELF (CWE-787)

The Linkable Loadable Extensions (llext) subsystem mis-handles PLT/RELA relocation
entries when linking a relocatable (partially-linked) ELF extension. In
``llext_link_plt()`` (subsys/llext/llext_link.c), the relocatable branch (``tgt !=
NULL``, the path used for Xtensa relocatable objects) computed the patch address as
``ext->mem[LLEXT_MEM_TEXT] - text.sh_offset + rela.r_offset + tgt->sh_offset`` and then
performed the relocation write there without validating ``rela.r_offset``. Its sibling
shared/dynamic branch already rejected out-of-range offsets via ``llext_file_offset()``.

``rela.r_offset`` is read directly from the ELF's RELA table, so a crafted entry with an
offset larger than the target section makes the write land arbitrarily far outside the
extension's text buffer. The result is an attacker-influenced out-of-bounds write (the
location via ``r_offset``, the written value being the resolved symbol address)
performed in supervisor context at link time, before any extension code runs.

The path is reached from ``llext_load()`` whenever an application loads an
attacker-influenced ELF extension on Xtensa with writable storage; llext is documented
to accept extensions of untrusted origin. Impact is supervisor-context memory corruption
(integrity and availability loss, and a sandbox-boundary escape for user-mode
extensions). Exploitation is gated by the Xtensa relocatable PLT path and writable
storage, and turning the out-of-range write into a useful primitive is non-trivial.

The fix adds a bound check rejecting any RELA entry whose ``r_offset >= tgt->sh_size``,
mirroring the existing validation in the shared branch.

- `Zephyr project bug tracker GHSA-xv9q-6mrf-8j49
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xv9q-6mrf-8j49>`_

This has been fixed in main for v4.5.0

- `PR 109875 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109875>`_

- `PR 112635 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112635>`_

- `PR 112634 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112634>`_

- `PR 111541 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111541>`_

:cve:`2026-12236`
-----------------

Infinite loop (DoS) in Bluetooth GATT client parsing of Read-By-Type responses with zero data length

The Bluetooth host GATT client function ``parse_read_std_char_desc()`` in
``subsys/bluetooth/host/gatt.c`` parses an ATT Read By Type Response received from a
remote GATT server during ``BT_GATT_DISCOVER_STD_CHAR_DESC`` discovery. The per-entry
stride ``rsp->len`` is taken directly from the peer's PDU, and the parse loop both tests
its exit condition (``length >= rsp->len``) and advances (``length -= rsp->len``, ``pdu
+= rsp->len``) using that value. The minimum value of ``rsp->len`` was never validated
before the loop.

A malicious or malfunctioning peer can reply with ``rsp->len = 0``. Because ``length``
is unsigned and never decreases, the loop condition stays true forever and the read
pointer never advances; as long as the body is at least a few bytes with a non-zero
handle and a matching descriptor UUID, the host repeatedly re-parses the same bytes and
invokes the discovery callback, never terminating. This hangs the Bluetooth host
processing thread (CWE-835, loop with unreachable exit condition).

The condition is reachable by any connected peer once the local device initiates
standard-descriptor-value discovery; GATT discovery does not require bonding or
encryption, so an unauthenticated adjacent attacker that the device connects to can
trigger it. The impact is denial of service of the Bluetooth subsystem (and likely a
watchdog reset on constrained targets); there is no memory disclosure or corruption.

The fix adds a ``rsp->len < sizeof(struct bt_att_data)`` check before the loop,
rejecting under-length responses so the stride is always non-zero and the loop
terminates. The sibling parsers ``parse_include()`` and ``parse_characteristic()``
already validated ``rsp->len`` and are unaffected.

- `Zephyr project bug tracker GHSA-483r-jq2x-5cp9
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-483r-jq2x-5cp9>`_

This has been fixed in main for v4.5.0

- `PR 109066 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109066>`_

- `PR 112840 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112840>`_

- `PR 112839 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112839>`_

- `PR 112841 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112841>`_

:cve:`2026-7007`
----------------

Division by zero in Zephyr ext2 superblock parsing allows DoS via crafted filesystem image

The Zephyr ext2 file system validates the on-disk superblock in
``ext2_verify_disk_superblock()`` (``subsys/fs/ext2/ext2_impl.c``) before completing a
mount. The validator checked the magic number, block size, revision and feature flags,
but did not verify that the on-disk fields ``s_blocks_per_group`` and
``s_inodes_per_group`` are non-zero. Both fields are read directly from the image and
are later used as divisors during mount-time initialization.

During mount, ``get_ngroups()`` divides and modulos ``s_blocks_count`` by
``s_blocks_per_group`` (reached via ``ext2_fetch_block_group()`` from
``ext2_init_fs()``), and ``get_itable_entry()`` divides ``(ino - 1)`` by
``s_inodes_per_group`` when fetching the root inode (both in
``subsys/fs/ext2/ext2_diskops.c``). A superblock with either field set to zero therefore
causes an integer division by zero during the mount sequence.

An attacker who can present a crafted ext2 image to a device that mounts ext2 —
removable media such as an SD card or a USB mass-storage device — can trigger this. On
ARMv7-M / ARMv8-M-mainline Cortex-M targets, divide-by-zero trapping is enabled
(``SCB_CCR_DIV_0_TRP``), so the division raises a UsageFault that Zephyr treats as a
fatal error, producing a denial of service. The impact is limited to availability; the
malformed value is consumed only as a divisor.

The fix rejects a zero ``s_blocks_per_group`` or ``s_inodes_per_group`` in the
superblock validator, returning ``-EINVAL`` so the mount fails before any block-group or
inode I/O occurs.

- `Zephyr project bug tracker GHSA-wrf2-79mm-cvw5
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wrf2-79mm-cvw5>`_

This has been fixed in main for v4.5.0

- `PR 107929 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107929>`_

- `PR 113331 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113331>`_

- `PR 110884 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110884>`_

- `PR 110883 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/110883>`_

:cve:`2026-8023`
----------------

Path traversal in Zephyr HTTP server static-filesystem resource handler allows unauthenticated remote arbitrary file read

Zephyr's HTTP server (``subsys/net/lib/http``) provides a static-filesystem resource
type (``HTTP_RESOURCE_TYPE_STATIC_FS``, available when ``CONFIG_FILE_SYSTEM`` is
enabled) that serves files from a configured root directory. Before this fix, both the
HTTP/1 and HTTP/2 front-ends placed the raw, attacker-controlled request path into
``client->url_buffer`` (assembled in ``on_url()`` for HTTP/1 and copied verbatim from
the ``:path`` pseudo-header for HTTP/2) without resolving ``.``/``..`` segments. The
static-FS handler then built the on-disk filename by directly concatenating the
configured root with that raw URL (``snprintk(fname, ..., "%s%s",
static_fs_detail->fs_path, client->url_buffer)`` at ``http_server_http1.c:603`` and
``http_server_http2.c:490``) and opened it with ``fs_open(fname, FS_O_READ)``. Because
the handler is reached via wildcard/leading-dir (``fnmatch`` ``FNM_LEADING_DIR``) or
fallback resource matching, a request such as ``GET /<prefix>/../../<file>`` is
dispatched to the handler and, after the underlying filesystem (e.g. LittleFS/FAT)
resolves the ``..`` segments, escapes the configured web root, letting an
unauthenticated remote client read arbitrary readable files on the mounted volume
(information disclosure). The HTTP server requires no TLS or authentication to reach
this path. The fix adds ``http_server_remove_dot_segments()``, which canonicalizes the
path portion of the URL before resource lookup in both protocol handlers, neutralizing
the traversal. Affects releases v4.0.0 through v4.4.0 for deployments that register a
static-filesystem resource.

- `Zephyr project bug tracker GHSA-hch3-53g6-jj3h
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hch3-53g6-jj3h>`_

This has been fixed in main for v4.5.0

- `PR 108531 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108531>`_

- `PR 111347 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111347>`_

- `PR 111346 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111346>`_

:cve:`2026-9728`
----------------

TOCTOU race in mbox_send syscall verifier allows userspace to leak kernel memory

The userspace syscall verifier ``z_vrfy_mbox_send()`` in
``drivers/mbox/mbox_handlers.c`` validated the nested ``msg->data``/``msg->size`` fields
by reading them directly out of live userspace memory, and then forwarded the original,
still-mutable userspace ``struct mbox_msg *`` pointer to ``z_impl_mbox_send()`` and the
underlying driver. Between the access check and the driver's use of ``msg->data``, the
validated pointer could be replaced, leaving a time-of-check/time-of-use window.

On a system built with ``CONFIG_USERSPACE``, any unprivileged userspace thread may
invoke the ``mbox_send()`` system call. A second thread sharing the caller's address
space can race to overwrite ``msg->data`` with a supervisor (kernel) address after the
verifier's bounds check has passed but before the driver dereferences it. The driver
then reads from the attacker-chosen address in supervisor context (for example
``memcpy(&data32, msg->data, msg->size)`` in the NXP mailbox driver, whose bytes are
subsequently emitted to the peer mailbox endpoint).

The impact is a userspace-to-supervisor access-control bypass: disclosure of kernel
memory contents (high confidentiality impact), or, for an invalid/unmapped target
address, a faulting kernel read causing denial of service. The fix snapshots the entire
``struct mbox_msg`` into a kernel-stack copy with ``k_usermode_from_copy()`` and
validates and forwards that immutable copy, closing the race.

- `Zephyr project bug tracker GHSA-47q2-w832-7w67
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-47q2-w832-7w67>`_

This has been fixed in main for v4.5.0

- `PR 109946 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109946>`_

- `PR 110657 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110657>`_

- `PR 110656 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110656>`_

- `PR 113308 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113308>`_

:cve:`2026-9771`
----------------

Missing device-pointer validation in flash_copy() syscall allows userspace privilege escalation

The ``flash_copy()`` system call is verified by ``z_vrfy_flash_copy()`` in
``drivers/flash/flash_util.c``. On builds with ``CONFIG_USERSPACE`` enabled, this
handler is the kernel-side trust boundary for a user-mode caller. Prior to the fix it
validated only the output buffer (``K_SYSCALL_MEMORY_WRITE``) and passed the two
``struct device *`` arguments, ``src_dev`` and ``dst_dev``, directly into the
implementation without any object validation — unlike every sibling flash syscall, which
guards its device pointer with ``K_SYSCALL_DRIVER_FLASH``.

A user-mode thread fully controls the values of ``src_dev``/``dst_dev`` and the contents
of its own address space. The implementation ``z_impl_flash_copy()`` dereferences these
pointers and calls through their driver-API function tables (e.g.
``api->get_parameters(dst_dev)``, ``flash_read(src_dev, ...)``, ``flash_write(dst_dev,
...)``). By supplying a pointer to a forged ``struct device`` whose ``api`` table
contains attacker-chosen function pointers, an unprivileged thread can cause the kernel
to call arbitrary code in supervisor mode; passing any arbitrary or invalid address
otherwise yields a kernel crash or out-of-bounds read.

The result is a local privilege escalation out of the userspace sandbox (with kernel
denial-of-service and information disclosure as lesser outcomes). The fix adds
``K_SYSCALL_DRIVER_FLASH(src_dev, read)`` and ``K_SYSCALL_DRIVER_FLASH(dst_dev, write)``
to ``z_vrfy_flash_copy()``, which verify each device is a registered flash-driver kernel
object the calling thread is permitted to use before any dereference, closing the path
completely.

- `Zephyr project bug tracker GHSA-68cj-3hg4-5vpm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-68cj-3hg4-5vpm>`_

This has been fixed in main for v4.5.0

- `PR 109962 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109962>`_

- `PR 110874 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/110874>`_

- `PR 110873 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/110873>`_

:cve:`2026-12363`
-----------------

Out-of-bounds write in LoRaWAN fragmented transport from a fragment index of 0

The LoRaWAN Fragmented Data Block Transport service
(``subsys/lorawan/services/frag_transport.c``) does not validate the fragment counter in
a received ``DATA_FRAGMENT`` command before forwarding it to the configured decoder. In
``frag_transport_package_callback()`` the value ``frag_counter = hdr->frag_index_n &
0x3FFF`` is taken directly from the downlink payload and passed to the decoder, which
derives an array index and flash offset as ``frag_counter - 1``. DataFragment fragments
are 1-indexed, so a ``frag_counter`` of ``0`` underflows that arithmetic.

With the default Semtech/LoRaMAC-node decoder, this reaches
``FragDecoder.FragNbMissingIndex[fragCounter - 1] = 0;`` in ``FragDecoderProcess()``,
where ``fragCounter - 1`` evaluates to ``-1`` and writes a ``uint16_t`` zero out of
bounds, just before the array and into the adjacent ``MatrixM2B`` recovery-matrix state
of the static decoder object (``CWE-787``). A companion write derives a wild flash
offset, but that path is rejected by the ``flash_area_write()`` bounds check. The
in-tree low-memory decoder (``frag_dec()``) is not corrupted: its out-of-range bit-array
and flash accesses are caught by ``sys_bitarray_*`` and ``flash_area_*`` bounds checks.

The handler is the registered downlink callback for the fragmentation transport port,
reachable whenever an active fragmentation session exists, so the triggering byte is
attacker-influenceable LoRaWAN/FUOTA network input. Triggering it requires authenticated
downlinks (LoRaWAN MAC session keys or a malicious/compromised network or FUOTA server)
and an active fragmentation session. The impact is contained: corruption of decoder
state and denial of the firmware-update (FUOTA) session rather than controllable memory
corruption or code execution. The fix adds a transport-layer check that rejects
``frag_counter == 0``, closing the defect for both decoder backends.

- `Zephyr project bug tracker GHSA-fvm7-7whg-8gj6
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fvm7-7whg-8gj6>`_

This has been fixed in main for v4.5.0

- `PR 111287 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111287>`_

- `PR 112928 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112928>`_

:cve:`2026-12364`
-----------------

Missing user-space pointer validation in logging syscall z_log_msg_static_create allows kernel memory disclosure and denial of service

The user-space system-call verifier ``z_vrfy_z_log_msg_static_create()`` in
``subsys/logging/log_msg.c`` was a pure pass-through: it forwarded the caller-supplied
``source``, ``desc``, ``package``, and ``data`` arguments directly to the kernel-mode
implementation ``z_impl_z_log_msg_static_create()`` without performing any of the
mandatory ``K_SYSCALL_*`` checks. Because ``z_log_msg_static_create()`` is declared
``__syscall``, under ``CONFIG_USERSPACE`` any unprivileged user-mode thread can invoke
it directly with fully attacker-controlled arguments.

The kernel-mode handler dereferences each of these untrusted values:
``frontend_runtime_filtering()`` reads through the ``source`` pointer as a ``struct
log_source_dynamic_data``, ``cbprintf_package_copy()`` reads ``desc.package_len`` bytes
from the ``package`` pointer, and ``z_log_msg_finalize()`` performs a ``memcpy()`` of
``desc.data_len`` bytes from the ``data`` pointer. With no verification, a user thread
can supply arbitrary kernel addresses and arbitrary lengths, and the kernel will read
from them.

The impact is a kernel-mode denial of service (the kernel faults dereferencing an
attacker-chosen pointer) and, where a log backend output is observable to the attacker,
disclosure of arbitrary kernel memory copied into the emitted log message — a
confidentiality breach across the user/kernel boundary that the userspace sandbox is
meant to enforce. The reads do not corrupt kernel memory, so there is no out-of-bounds
write primitive.

The fix adds the required validation to the verifier: it bounds ``desc.package_len``
against ``Z_LOG_MSG_MAX_PACKAGE``, rejects non-NULL/length mismatches, and applies
``K_SYSCALL_MEMORY_READ()`` to ``package``, ``data``, and (when runtime filtering with a
frontend is enabled) ``source``, so any out-of-bounds or kernel pointer now raises
``K_OOPS`` instead of being honored.

- `Zephyr project bug tracker GHSA-h7rf-g9mg-g23f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-h7rf-g9mg-g23f>`_

This has been fixed in main for v4.5.0

- `PR 110506 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110506>`_

- `PR 112853 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112853>`_

- `PR 112854 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112854>`_

- `PR 116338 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/116338>`_

:cve:`2026-12365`
-----------------

Use-after-free in Zephyr delayable work-queue cancellation under SMP timing race

A use-after-free exists in the Zephyr second-generation work queue (``kernel/work.c``)
in the handling of delayable work timeouts. When a delayable work item's timeout has
been dequeued and its handler ``work_timeout()`` is in flight (blocked acquiring the
work-queue spinlock), a concurrent cancellation does not wait for that handler to
finish. In ``unschedule_locked()`` the pre-fix code called ``z_abort_timeout()``, which
for an already-announcing record returns ``-EINVAL`` without removing it;
``cancel_async_locked()`` then observes the work as idle, so even
``k_work_cancel_delayable_sync()`` and ``k_work_flush_delayable()`` return without
blocking on the in-flight handler.

Because those are the APIs the kernel header documents as the safe way to cancel before
freeing a ``k_work_delayable``, a caller that frees the object immediately after a
successful sync cancel can race the still-pending handler. ``work_timeout()``
subsequently dereferences the freed record: it reads ``to->dticks`` via
``z_is_timeout_handler_canceled()`` and, if the freed slot has been reused so the bail
check fails, performs a read-modify-write of ``wp->flags`` (``K_WORK_DELAYED_BIT``) and
submits work against a stale ``dw->queue`` pointer — a use-after-free read and write.

The ``k_work`` API is kernel-mode only (no ``__syscall`` entry point), so this is a
kernel-internal concurrency defect rather than a userspace privilege escalation.
Triggering it requires an SMP build and a subsystem that schedules and then frees (or
reschedules) a delayable work item in the narrow window while its timeout is announcing;
an attacker able to influence the timing of such teardown (for example via connection
churn driving subsystem timers) has a plausible but probabilistic path. The impact is
kernel memory corruption or crash (denial of service).

The fix makes ``unschedule_locked()`` wait, by spinning on ``z_try_abort_timeout()``
returning ``-EAGAIN`` while releasing and re-acquiring the work spinlock, until any
in-flight handler completes before returning, and switches ``work_timeout()`` to atomic
``K_WORK_DELAYED_BIT`` ownership. This closes both the free-then-handler use-after-free
and the related reschedule early-fire race.

- `Zephyr project bug tracker GHSA-rhmh-r93p-6g99
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rhmh-r93p-6g99>`_

This has been fixed in main for v4.5.0

- `PR 109977 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109977>`_

- `PR 112961 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112961>`_

:cve:`2026-12366`
-----------------

Use-after-free freeing an armed dynamically-allocated k_timer in Zephyr userspace object disposal

Zephyr's dynamic kernel-object disposal path ``unref_check()`` in
``kernel/userspace/userspace.c`` frees an object's storage (``k_free(dyn->data)``) once
its reference count reaches zero, after running a per-object-type cleanup. The cleanup
``switch`` handled only ``K_OBJ_MSGQ`` and ``K_OBJ_STACK``; there was no ``K_OBJ_TIMER``
case. A dynamically-allocated, initialized, and armed ``k_timer`` keeps its embedded
``struct _timeout`` dnode linked in the global timeout queue (``_timeout_q``), so
freeing the timer storage without cancelling the timeout leaves a dangling node in that
queue.

When the timer next expires, the timeout machinery walks ``_timeout_q`` and invokes
``z_timer_expiration_handler()`` on the freed node, dereferencing and writing freed (and
reusable) kernel heap in kernel/ISR context. This is a deterministic use-after-free that
does not depend on SMP: the queued node is simply never unlinked at free time.

The disposal is reachable from an unprivileged user thread under ``CONFIG_USERSPACE`` +
``CONFIG_DYNAMIC_OBJECTS``: a thread that holds the last permission on such a timer
drops it via the ``k_object_release()`` syscall (or by exiting, through
``k_thread_perms_all_clear()``), and can arm the timer itself via the
``k_timer_start()`` syscall. The free and the expiration handler run at kernel privilege
while the actor is a user thread, so the bug is a sandbox-escape memory-corruption
primitive usable for privilege escalation. The fix adds ``k_timer_cleanup()`` (cancel
the timeout and wait for any in-flight handler) and calls it for ``K_OBJ_TIMER`` before
freeing.

- `Zephyr project bug tracker GHSA-x96g-542c-gccq
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x96g-542c-gccq>`_

This has been fixed in main for v4.5.0

- `PR 109977 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/109977>`_

- `PR 112961 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112961>`_

:cve:`2026-12519`
-----------------

Out-of-bounds stack read and write in Zephyr WNC-M14A2A modem socket-notify parsing

The WNC-M14A2A LTE-M modem driver mishandles unsolicited ``%NOTIFYEV:`` events in
``on_cmd_socknotifyev()`` (``drivers/modem/vendor_standalone/wncm14a2a.c``). The
response line is linearized into a fixed 40-byte stack buffer via
``net_buf_linearize()``, which caps the copy at 39 bytes and returns ``out_len <= 39``.
The two quote-delimiter scanning loops, however, were bounded by ``len`` — the full
CR/LF-delimited frame length returned by ``net_buf_findcrlf()`` — rather than by
``out_len``.

When a ``%NOTIFYEV:`` line longer than 39 bytes contains no ``"`` within the linearized
region, the loop indices ``p1``/``p2`` walk past ``value[39]`` and read adjacent stack
memory until a stray quote byte is found or the index reaches ``len``. The over-read
string is then passed to ``strncmp()``/``atoi()``/``LOG_*``, and if a quote byte is
found out of bounds the subsequent ``value[p2] = '\0'`` performs a single-NUL
out-of-bounds stack write at an attacker-influenced offset.

The ``%NOTIFYEV:`` payload carries network-derived content (``LTIME`` network time,
``SIB1`` base-station system information, ``CSPS``/``RRCSTATE``), so a rogue cellular
base station, a malicious or compromised modem module, or RF manipulation that induces
an over-long notify line reaches the defect without any application interaction; the
handler runs automatically on the unsolicited event in the modem RX thread.

The impact is out-of-bounds stack disclosure (into logs and parsing) and stack
corruption that can crash the modem RX thread (denial of service). The write offset is
only weakly controlled, so memory-safe code execution is not demonstrated. The fix
bounds both scanning loops by ``out_len``, keeping all accesses within the linearized
buffer.

- `Zephyr project bug tracker GHSA-8hrc-q8cp-6xhf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8hrc-q8cp-6xhf>`_

This has been fixed in main for v4.5.0

- `PR 111243 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111243>`_

- `PR 113040 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113040>`_

- `PR 113042 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113042>`_

- `PR 113041 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113041>`_

:cve:`2026-12520`
-----------------

Stack buffer overflow and off-by-one writes in Zephyr HL7800 modem AT response handlers

The Sierra Wireless HL7800 cellular modem driver
(``drivers/modem/vendor_standalone/hl7800.c``, located at ``drivers/modem/hl7800.c`` in
v4.4.0 and earlier) parses AT responses with roughly twenty handlers that call
``net_buf_linearize(value, sizeof(value), *buf, 0, len)`` into a 128-byte stack buffer
and then write ``value[out_len] = 0``. Because ``net_buf_linearize()``
(``lib/net_buf/buf.c``) can return a count equal to its destination-length argument, a
field that exactly fills the buffer makes the terminating NUL land one byte past the
end, a single-byte out-of-bounds write into adjacent stack memory.

The ``+KCELLMEAS`` cell-measurement handler ``on_cmd_atcmdinfo_rssi()`` is worse: it
passed the wire length ``len`` as the destination size (``net_buf_linearize(value, len,
*buf, 0, len)``), so a response line longer than 128 bytes overflows the ``value`` stack
buffer with attacker-influenceable content. The line length comes from
``net_buf_findcrlf()``, which accumulates bytes across the whole ``net_buf`` fragment
chain and is not bounded to 128, so an over-long line reaches the defect.

The data originates from the cellular modem over UART, driven by the network:
operator-scan results, ``+CGCONTRDP`` IP/DNS info, socket indications, and
``+KCELLMEAS`` neighbour-cell reports. An attacker able to shape what the modem emits —
a rogue base station, a compromised modem baseband, or a remote peer feeding oversized
response framing — can drive a line past 128 bytes. The handlers run in the driver's RX
thread in kernel context, so the corruption is kernel-side.

The ``+KCELLMEAS`` path is a full stack buffer overflow whose worst case is code
execution in kernel context and whose floor is a reliable crash; the remaining sites are
single-byte NUL out-of-bounds writes. Exploitation requires the modem to emit an
over-long AT response line, giving high attack complexity over an adjacent (cellular
radio) vector. The fix passes ``sizeof(dst) - 1`` (and correct explicit bounds for the
IMSI and ``+KCELLMEAS`` sites) so the terminator always stays in bounds.

- `Zephyr project bug tracker GHSA-9xc4-j5x8-v6jx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9xc4-j5x8-v6jx>`_

This has been fixed in main for v4.5.0

- `PR 111243 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111243>`_

- `PR 113040 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113040>`_

- `PR 113042 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113042>`_

- `PR 113041 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113041>`_

:cve:`2026-12521`
-----------------

Zephyr HTTP server kernel timeout-list corruption on spurious zsock_poll() return

The HTTP server core loop ``http_server_run()`` in
``subsys/net/lib/http/http_server_core.c`` polls the listening, stop, and client sockets
with an infinite timeout and treats a ``zsock_poll()`` return of ``0`` as impossible,
executing ``break`` and returning ``0`` without reaching its ``closing:`` cleanup.
However, ``zsock_poll()`` (``zvfs_poll_internal()`` in ``lib/os/zvfs/zvfs_poll.c``) can
legitimately return ``0`` even with an infinite timeout: after ``k_poll()`` wakes, the
``ZFD_IOCTL_POLL_UPDATE`` pass may find every fd reporting no ``revents`` (a spurious
wakeup), yielding ``ret == 0``.

On that path ``close_all_sockets()`` is skipped, so the per-client ``inactivity_timer``
(``struct k_work_delayable``) cancellations in ``close_client_connection()`` never run.
Control returns to ``http_server_thread()`` with ``server_running`` still true, which
re-enters ``http_server_init()``. ``http_server_init()`` then ``memset()``\ s the
``ctx->clients`` array — including the ``k_work_delayable`` timeout nodes — while one or
more of those timers are still armed and linked in the kernel sys-timeout list.

When the kernel later services such a timeout it operates on a reinitialized object and
follows the now-zeroed list links, corrupting the kernel timeout list and producing a
delayed fault. The HTTP server loop is driven by unauthenticated remote network peers
(``CONFIG_HTTP_SERVER``, all of HTTP/1/2/3), and connection churn raises the probability
of the spurious-wakeup race, so a remote peer can influence the trigger. The realistic
impact is a denial of service (kernel crash/hang) from the corrupted timeout list.

The fix replaces ``break`` with ``continue``, re-polling on a spurious ``0`` return,
which leaves the sockets and their armed timers intact and never re-initializes the
context over live timers.

- `Zephyr project bug tracker GHSA-g5v9-xmfp-7gxm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-g5v9-xmfp-7gxm>`_

This has been fixed in main for v4.5.0

- `PR 111239 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111239>`_

- `PR 112942 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112942>`_

- `PR 112941 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112941>`_

- `PR 112940 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/112940>`_

:cve:`2026-12522`
-----------------

Stack buffer overflow in Zephyr hl7800 modem driver parsing network-supplied +CGCONTRDP address fields

The HL7800 cellular modem driver's ``+CGCONTRDP:`` response handler
``on_cmd_atcmdinfo_ipaddr()`` in ``drivers/modem/vendor_standalone/hl7800.c`` parses the
PDP-context dynamic parameters (local address, subnet mask, gateway, and DNS servers)
that the cellular network assigns to the device. The response is linearized into a
256-byte stack buffer, after which each address field length is computed from
comma/``.`` delimiter positions in the network-supplied data and used directly as the
length argument to ``strncpy()`` into the fixed 64-byte stack buffer ``temp_addr_str``
(and the 16-byte ``iface_ctx.dns_v4_string``).

Because the field length is derived from attacker-controlled delimiter positions and was
not bounded against the destination buffer, a single field can be far larger than 64
bytes. A malicious or impersonated cellular network (for example a rogue base station)
can return a crafted ``+CGCONTRDP`` response with an overlong address field, causing
``strncpy()`` to write past ``temp_addr_str`` on the modem worker thread's stack, plus
an out-of-bounds NUL write at ``temp_addr_str[addr_len]``.

No device-side privileges or user interaction are required: the device itself issues the
``AT+CGCONTRDP=1`` query during normal network attach and parses whatever the network
returns. The overflow corrupts adjacent stack memory in supervisor context, yielding at
minimum a remotely triggerable crash and potentially control-flow hijacking on targets
without stack protection.

The fix bounds every field length against its destination buffer (``temp_addr_str`` and
``dns_v4_string``) before each copy, rejecting overlong fields.

- `Zephyr project bug tracker GHSA-hchc-6489-w66v
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hchc-6489-w66v>`_

This has been fixed in main for v4.5.0

- `PR 111243 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111243>`_

- `PR 113040 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113040>`_

- `PR 113042 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113042>`_

- `PR 113041 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113041>`_

:cve:`2026-7656`
----------------

Broken IPv6 Neighbor Discovery input validation allows spoofed RA/NS/NA acceptance in Zephyr net stack

The IPv6 Neighbor Discovery handlers in ``subsys/net/ip/ipv6_nbr.c``
(``handle_ra_input``, ``handle_ns_input``, ``handle_na_input``) used an incorrect
boolean expression that combined the RFC 4861 validity checks with the ICMPv6 code check
using the wrong operator precedence: the form was ``((length/hop/source/target checks)
&& (icmp_hdr->code != 0))``. Because every legitimate ND message carries ICMPv6 code 0,
an attacker setting ``code == 0`` (the normal value) caused the entire predicate to
evaluate false, so the packet was never dropped and all of the other checks were
silently skipped. The bypassed checks include the mandatory Hop Limit == 255
verification (which proves an ND packet originated on-link and was not forwarded) and,
for Router Advertisements, the requirement that the source be a link-local address, as
well as multicast-target sanity checks. As a result, an adjacent on-link attacker — and,
because the Hop-Limit-255 guard is bypassed, potentially a remote/off-link attacker
whose packets would otherwise be rejected — can have forged Router Advertisement,
Neighbor Solicitation, and Neighbor Advertisement messages accepted. A forged RA lets
the attacker reconfigure the victim's default router, on-link prefixes (SLAAC), MTU,
reachable/retransmit timers, and (with ``CONFIG_NET_IPV6_RA_RDNSS``) DNS servers, while
forged NS/NA enable neighbor-cache poisoning, enabling man-in-the-middle, traffic
redirection, and denial of service. The flaw is an input-validation/authentication
weakness rather than a memory-safety issue: the underlying packet-parsing primitives
(``net_pkt_get_data``, ``net_pkt_read``, ``net_pkt_skip``) are independently bounds-safe
and the validated ``length`` is the true buffer length, so skipping the length check
causes no out-of-bounds access. The defect has existed since the logic was introduced in
2018 and shipped in all releases through v4.4.0; it is fixed by splitting the condition
so any failing check drops the packet.

- `Zephyr project bug tracker GHSA-cpjw-rvwx-ph9f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-cpjw-rvwx-ph9f>`_

This has been fixed in main for v4.5.0

- `PR 107902 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/107902>`_

- `PR 108131 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/108131>`_

- `PR 108192 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108192>`_

- `PR 108195 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108195>`_

:cve:`2026-10666`
-----------------

Stack buffer overflow in ``net_ipaddr_parse()`` IPv4 address-with-port parsing in ``subsys/net/ip/utils.c``

``parse_ipv4()`` in ``subsys/net/ip/utils.c`` (reached via ``net_ipaddr_parse()`` for
strings of the form "a.b.c.d:port") copies the port substring into a fixed 17-byte stack
buffer (``char ipaddr[NET_IPV4_ADDR_LEN + 1]``) using a length of ``str_len - end - 1``,
where ``str_len`` is the full, unbounded input length and end is only the (<=15-byte)
offset of the ':' delimiter. Because the destination size is never consulted, a crafted
address string with a long suffix after the colon (e.g. "1.2.3.4:" followed by hundreds
of bytes) causes an out-of-bounds stack write whose length and contents are fully
attacker-controlled (``memcpy`` of the suffix plus a trailing NUL), enabling memory
corruption and at minimum a denial of service, and potentially control-flow hijack. The
parser is reached from the standard socket API (``zsock_getaddrinfo`` / literal-address
resolution), DNS server-string configuration, and the eswifi Wi-Fi co-processor
DNS-response path, so an application that resolves a network-influenced address string
is exposed. The bug was introduced when the parser was added (Zephyr v1.9.0) and shipped
in all releases through v4.4.0. The fix removes the unbounded copy and validates the
port length before copying into a small dedicated buffer. Note: the equivalent IPv6
"[addr]:port" path in ``parse_ipv6()`` retains the same unbounded copy at this commit
and remains a separate, still-reachable instance of the defect.

- `Zephyr project bug tracker GHSA-532c-7g7f-jhmh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-532c-7g7f-jhmh>`_

This has been fixed in main for v4.5.0

- `PR 108529 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108529>`_

- `PR 109058 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/109058>`_

- `PR 109072 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/109072>`_

- `PR 109065 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/109065>`_

:cve:`2026-10673`
-----------------

Out-of-bounds write in ADIN2111/ADIN1110 OA SPI Ethernet RX frame reassembly

The Zephyr ADIN2111/ADIN1110 10BASE-T1S/T1L Ethernet driver
(``drivers/ethernet/eth_adin2111.c``) reassembles received Ethernet frames in OPEN
Alliance (OA) SPI mode by copying device-supplied 64-byte data chunks into a fixed
static buffer ``ctx->buf`` of size ``CONFIG_ETH_ADIN2111_BUFFER_SIZE`` (default 1524
bytes). In ``eth_adin2111_oa_data_read()``, each valid chunk was ``memcpy``'d into
``ctx->buf[ctx->scur]`` and the write cursor ``scur`` advanced, with no check that
``scur`` + len stayed within the buffer. The number of chunks (up to 255, from the
BUFSTS RCA field) and the per-chunk length are taken entirely from the frame data
received off the wire; the cursor is only reset on a start-of-frame chunk. An attacker
on the single-pair Ethernet segment can therefore send a frame whose reassembled size
exceeds the configured buffer, causing the driver's RX offload thread to write
attacker-controlled frame bytes past the end of the static buffer into adjacent
driver/kernel memory (up to roughly 14.8 KB in the worst case). This is a
remotely/adjacently reachable out-of-bounds write (CWE-787) that can corrupt memory and
cause denial of service or potentially code execution. The defect was introduced when OA
SPI support was added (commit 0ca8b0756b1) and shipped in releases v3.7.0 through
v4.4.0. The fix adds a bounds check that drops the oversized frame and resets the cursor
before the copy.

- `Zephyr project bug tracker GHSA-hm6v-4jh4-3qc4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hm6v-4jh4-3qc4>`_

This has been fixed in main for v4.5.0

- `PR 108200 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108200>`_

- `PR 108900 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/108900>`_

- `PR 108901 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/108901>`_

- `PR 108899 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/108899>`_

:cve:`2026-12629`
-----------------

PL011 UART error interrupts never cleared, enabling an external-peer interrupt-storm denial of service

The ARM PL011 UART driver in ``drivers/serial/uart_pl011.c`` fails to acknowledge
receive error interrupts. On the PL011, the framing, parity, break, and overrun error
interrupts (``PL011_IMSC_ERROR_MASK``) are cleared only by writing the interrupt-clear
register ``UARTICR``; reading the data register clears the RX interrupt and the per-byte
RSR status but not the error interrupt status in ``MIS``. The interrupt service routine
``pl011_isr()`` acknowledged only the CTS modem-status interrupt and never wrote ``icr``
for the error bits, so an asserted error interrupt remains pending after the ISR
returns.

When an application enables error-interrupt reporting via the public
``uart_irq_err_enable()`` API, an attacker who controls the serial peer can
deterministically assert these error bits by injecting line errors on the RX line — a
baud/stop-bit mismatch or mid-character break (framing/break error), a flipped parity
bit (parity error), or FIFO flooding (overrun error). Because the error interrupt is
never cleared, the interrupt line stays asserted and the CPU re-enters ``pl011_isr()``
immediately and indefinitely, producing an interrupt-storm livelock from which the core
makes no forward progress.

The impact is an availability-only denial of service (permanent hang), reachable from an
external or removable UART peer. Exploitation is gated by configuration: the error
interrupt is off by default and no in-tree subsystem enables it, so only applications
that explicitly call ``uart_irq_err_enable()`` on a PL011-based, interrupt-driven port
are affected. The fix makes ``pl011_isr()`` acknowledge the pending error bits via
``uart->icr``, breaking the loop, and additionally clears the latched RSR status in
``pl011_err_check()``.

- `Zephyr project bug tracker GHSA-36rp-2hcp-f5hv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-36rp-2hcp-f5hv>`_

This has been fixed in main for v4.5.0

- `PR 111222 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111222>`_

- `PR 112933 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112933>`_

- `PR 112932 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112932>`_

:cve:`2026-12630`
-----------------

6LoWPAN IPHC uncompression out-of-bounds read on reserved destination addressing mode

Zephyr's 6LoWPAN IP Header Compression (IPHC) uncompression code contains an
out-of-bounds read in ``get_ihpc_inlined_size()`` (``subsys/net/ip/6lo.c``). The
destination inline size is looked up in ``da_inline_size_table``, which has 13 entries,
using an index built from the ``M``, ``DAC`` and ``DAM`` bits of the received IPHC
dispatch word (``iphc & NET_6LO_IPHC_DA_MASK``, a 4-bit value of 0-15). The reserved
combinations 13, 14 and 15 are not bounds-checked and read past the end of the table.

The ``iphc`` word is taken directly from the received frame, and
``get_ihpc_inlined_size()`` is reached on every inbound 6LoWPAN frame via
``net_6lo_uncompress()`` from the 802.15.4 receive path
(``subsys/net/l2/ieee802154/ieee802154_6lo.c`` and ``ieee802154_6lo_fragment.c``). An
unauthenticated attacker on the radio/adjacent link can therefore craft a frame whose
destination addressing-mode nibble selects an out-of-range index, with no privileges or
user interaction.

The out-of-bounds value becomes the computed ``inline_size``, which then drives header
reconstruction before the buffer-length check: it is used to dereference
``*(pkt->buffer->data + sizeof(iphc) + inline_size)`` and to compute a ``size_t``
``diff`` that can underflow, leading to a further out-of-bounds read of the packet
buffer and malformed uncompression. The practical impact is a radio-triggerable
out-of-bounds read / denial-of-service on the receiver; the leaked byte is not returned
to the attacker. The fix rejects any destination index beyond the table, aborting
processing of the malformed frame.

- `Zephyr project bug tracker GHSA-45c8-pmgj-6jrc
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-45c8-pmgj-6jrc>`_

This has been fixed in main for v4.5.0

- `PR 111272 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111272>`_

- `PR 113046 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113046>`_

- `PR 113044 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113044>`_

:cve:`2026-12631`
-----------------

Broken access-control denial in k_thread_join/k_thread_abort syscall validation in Zephyr kernel

The Zephyr kernel validates the ``k_thread_join()`` and ``k_thread_abort()`` system
calls (declared ``__syscall`` in ``include/zephyr/kernel.h``) through
``thread_obj_validate()`` in ``kernel/thread.c``. Its ``default`` switch branch is the
access-denied path, taken when ``k_object_validate()`` returns ``-EPERM`` (the calling
user thread was never granted access to the target thread object) or ``-EBADF`` (the
supplied pointer is not a registered kernel object of the right type). That branch
invoked ``K_OOPS(K_SYSCALL_VERIFY_MSG(ret, "access denied"))``, but
``K_SYSCALL_VERIFY_MSG`` treats a true expression as success; the non-zero error code
``ret`` therefore read as "verified OK", the kernel oops was never raised, and control
fell through to ``CODE_UNREACHABLE``.

Because ``k_thread_join()`` and ``k_thread_abort()`` are system calls, an unprivileged
user-mode thread (under ``CONFIG_USERSPACE``) can reach this denial path directly by
calling either syscall on a thread object it does not own. Instead of the offending
thread being cleanly terminated, execution reaches ``__builtin_unreachable()`` while
running in supervisor mode inside the syscall handler.

On Clang builds ``CODE_UNREACHABLE`` emits an illegal-instruction trap, so a user thread
can deterministically crash the kernel — a locally triggerable denial of service that
escapes the userspace sandbox. On GCC builds the path is undefined behavior: the
compiler may drop the return-value handling for ``thread_obj_validate()``, so it can
return an undefined ``bool``; if that is ``false``, the caller proceeds into the real
``k_thread_join()``/``k_thread_abort()`` implementation for a thread the user was never
authorized to access, an access-control bypass.

The fix changes the verification expression to ``ret == 0``, so a denied (non-zero)
result now correctly raises ``K_OOPS`` and terminates the offending caller.

- `Zephyr project bug tracker GHSA-crfw-75jw-hjm3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-crfw-75jw-hjm3>`_

This has been fixed in main for v4.5.0

- `PR 111301 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111301>`_

- `PR 113287 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113287>`_

- `PR 113286 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113286>`_

- `PR 113285 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113285>`_

:cve:`2026-12632`
-----------------

Out-of-bounds read in Zephyr PTP message parsing from unvalidated message type

Zephyr's Precision Time Protocol receive handler ``ptp_msg_post_recv()`` in
``subsys/net/lib/ptp/msg.c`` takes the 4-bit message type straight off the wire via
``ptp_msg_type()`` (``msg->header.type_major_sdo_id & 0xF``, range 0-15) and uses it to
index the ``msg_size[]`` table. That table only defines entries up to
``PTP_MSG_MANAGEMENT`` (0xD), giving it ``ARRAY_SIZE == 14``. Before the fix there was
no upper-bound check, so the undefined types ``0xE`` and ``0xF`` indexed one or two
``int`` slots past the end of the array — an out-of-bounds read of adjacent read-only
data.

The out-of-bounds value is then reused as a length: it gates ``msg_size[type] > cnt``,
and when it is small or negative it makes ``cnt - msg_size[type]`` a large positive
budget passed to ``msg_tlv_post_recv()``, whose TLV loop then walks the message suffix
past the received bytes, performing further out-of-bounds reads and in-place byte-swap
writes on memory beyond the message slab.

The defect is reached directly from the network: ``ptp_port_event_gen()`` in
``subsys/net/lib/ptp/port.c`` reads a PTP frame with ``ptp_transport_recv()`` and calls
``ptp_msg_post_recv()`` with the attacker-chosen type. PTP uses UDP multicast or raw
Ethernet (``0x88F7``) and is unauthenticated, so any host on the same link can trigger
the indexing on a ``CONFIG_PTP``-enabled node with no preconditions.

The reliably reproducible impact is a denial of service (fault/crash); a limited
memory-corruption path exists but depends on the build-specific value adjacent to
``msg_size[]``, which the attacker cannot tune. The fix rejects ``type >=
ARRAY_SIZE(msg_size)`` with ``-EBADMSG`` before any indexing.

- `Zephyr project bug tracker GHSA-frjr-h396-7wh4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-frjr-h396-7wh4>`_

This has been fixed in main for v4.5.0

- `PR 111271 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111271>`_

- `PR 111665 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111665>`_

- `PR 111667 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111667>`_

- `PR 111666 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111666>`_

:cve:`2026-12633`
-----------------

Out-of-bounds write in IPv6 6LoWPAN Context Option handling via unauthenticated Router Advertisement

The IPv6 neighbor-discovery code in ``subsys/net/ip/ipv6_nbr.c`` processes the 6LoWPAN
Context Option (6CO, RFC 6775) carried inside ICMPv6 Router Advertisements. In
``handle_ra_6co()`` the 8-bit ``context_len`` field is taken directly from the packet
and was never bounded to the RFC maximum of 128. The function computes
``context->context_len / 8`` and then performs ``memset(context->prefix + context_len,
0, sizeof(context->prefix) - context_len)``, where ``context->prefix`` is a fixed
16-byte array.

With ``context_len`` between 136 and 255 (and the option length field set to 3, which
the pre-fix validation accepts), ``context_len / 8`` evaluates to 17..31, so the
``memset`` length ``16 - context_len/8`` underflows the unsigned ``size_t`` argument to
roughly ``SIZE_MAX``. This produces an unbounded out-of-bounds ``memset`` that zeroes
kernel memory well past the 6lo context structure.

The defect is reachable from unauthenticated, link-local input: any host on the same
link can send a crafted Router Advertisement with a 6CO option. The RA handler validates
only the option length field before calling ``handle_ra_6co()``, so a single packet
triggers the wild write. The code is compiled when ``CONFIG_NET_6LO_CONTEXT`` is
enabled.

The impact is a reliable remote (adjacent) denial of service via memory corruption, with
collateral integrity loss as the ``memset`` zeroes contiguous memory before the system
faults. Router Advertisements are link-scoped and not forwarded, so the attacker must be
on the same link (``AV:A``). The fix rejects any ``context_len`` greater than 128 before
the length computation.

- `Zephyr project bug tracker GHSA-h5m5-hm6j-cgpf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-h5m5-hm6j-cgpf>`_

This has been fixed in main for v4.5.0

- `PR 111275 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111275>`_

- `PR 113049 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113049>`_

- `PR 113051 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113051>`_

- `PR 113050 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113050>`_

:cve:`2026-12634`
-----------------

Out-of-bounds stack write in the settings NVS backend from over-reported nvs_read length

The NVS backend of the Zephyr settings subsystem
(``subsys/settings/src/settings_nvs.c``) reads stored setting-name entries into fixed
74-byte stack buffers and NUL-terminates them with ``buf[rc] = '\0'``, where ``rc`` is
the return value of ``nvs_read()``. Per its contract, ``nvs_read()`` returns the *full
stored entry length* (``wlk_ate.len``), which can exceed the supplied buffer length —
only ``MIN(len, stored_len)`` bytes are actually copied, but the return value may be
much larger, bounded only by the NVS sector size. Three sites
(``settings_nvs_cache_match()``, ``settings_nvs_load()``, and ``settings_nvs_save()``)
used this value directly as the NUL index without clamping, so an oversized stored name
entry causes a single ``\0`` byte to be written past the end of the stack buffer at an
attacker-influenced offset (CWE-787).

The oversized entry cannot arise through the normal settings API, where names are
bounded by ``SETTINGS_MAX_NAME_LEN``. It requires an actor able to write the flash that
backs the settings partition — a co-resident or untrusted component sharing the flash
device, a malicious settings image/restore, or offline/physical flash access (a
shared-flash threat model). The malformed entry is parsed when ``settings_load()`` runs
at boot or subsystem init, or during ``settings_save()``.

The out-of-bounds write is a single NUL byte at an offset equal to the crafted entry
length (up to the NVS sector size), so the practical impact is a crash or denial of
service and limited stack corruption rather than reliable code execution. There is no
confidentiality impact, and the path is not reachable from the network through the
ordinary settings interface. The fix skips any entry whose ``nvs_read()`` length is
greater than or equal to the buffer size before performing the NUL store.

- `Zephyr project bug tracker GHSA-q7c8-m2qg-385c
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-q7c8-m2qg-385c>`_

This has been fixed in main for v4.5.0

- `PR 111314 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111314>`_

- `PR 113298 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113298>`_

- `PR 113296 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113296>`_

- `PR 113297 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113297>`_

:cve:`2026-12999`
-----------------

Infineon Airoc Wi-Fi driver leaks TX buffers on send failure, leading to permanent pool exhaustion

The Infineon Airoc Wi-Fi driver's transmit callback ``airoc_mgmt_send()`` in
``drivers/wifi/infineon/airoc_wifi.c`` allocates a ``net_buf`` from the fixed
``airoc_pool`` for every outbound packet. When ``whd_network_send_ethernet_data()``
returns a synchronous failure, the underlying WHD library does not take ownership of the
buffer, but the pre-fix driver returned ``-EIO`` without releasing it. Each failed
transmit therefore permanently leaks one buffer from the pool.

``airoc_pool`` is small and fixed (``AIROC_WIFI_TX_PACKET_POOL_COUNT`` +
``AIROC_WIFI_RX_PACKET_POOL_COUNT``, default 20 buffers) and is shared by WHD's
``whd_host_buffer_get`` callback for both transmit and receive. Once enough send
failures have leaked the pool dry, ``airoc_wifi_host_buffer_get()`` returns
``WHD_BUFFER_ALLOC_FAIL`` for all subsequent allocations, so both transmit and the
WHD-driven receive path fail and Wi-Fi connectivity is lost until the device is
rebooted.

The leak occurs only on the transmit error path. A Wi-Fi-adjacent attacker can influence
the conditions that cause synchronous send failures (for example by
deauthenticating/disassociating the station while the local stack continues to attempt
transmits), and ordinary transient failures over the device's lifetime accumulate toward
the same state. Reliable on-demand triggering is of high complexity and the impact is
availability-only, but the resulting denial of service is permanent and non-recoverable
without a reboot.

The fix releases the buffer with ``airoc_wifi_buffer_release()`` on the failure branch,
returning it to the pool. The commit also removes a redundant ``k_sem_give()`` in
``airoc_mgmt_disconnect()``; because ``data->sema_common`` is a binary semaphore (limit
1) the duplicate give merely saturated at 1 and had no security impact.

- `Zephyr project bug tracker GHSA-8w97-ghfm-5wjp
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8w97-ghfm-5wjp>`_

This has been fixed in main for v4.5.0

- `PR 111163 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111163>`_

- `PR 113304 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113304>`_

- `PR 113306 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113306>`_

- `PR 113305 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113305>`_

:cve:`2026-13212`
-----------------

Zephyr virtio driver calls an arbitrary function pointer from an out-of-range used-ring descriptor id

The Zephyr virtio driver does not validate the descriptor-chain head id that the virtio
device writes into the used ring. In ``virtio_isr()``
(``drivers/virtio/virtio_common.c``), the device-written ``vq->used->ring[idx].id`` is
used directly as an index into ``vq->recv_cbs[]`` and ``vq->desc[]``, which are both
allocated with exactly ``vq->num`` entries. ``recv_cbs[]`` holds ``{cb, opaque}``
callback entries, and the indexed callback pointer is then invoked as
``cbe.cb(cbe.opaque, used_len)``.

Because the id is consumed as a 16-bit value with no bound check, a malicious or
compromised virtio backend (an untrusted hypervisor, or an untrusted
hardware/peer-processor virtio device on a PCI or MMIO transport) can supply an id far
beyond ``vq->num``. This causes an out-of-bounds read of a ``{function pointer,
argument}`` pair from heap memory beyond ``recv_cbs[]``, after which the driver calls
that attacker-shaped pointer in the guest's interrupt context. No guest privileges or
user interaction are required; the backend triggers it by writing the shared used ring
and raising the queue interrupt.

The result is an arbitrary / attacker-influenced function-pointer call in the Zephyr
guest, i.e. a control-flow-hijack primitive that can lead to code execution or, at
minimum, a reliable crash. The fix rejects any used-ring id ``>= vq->num`` before
indexing ``recv_cbs[]``/``desc[]`` or invoking the callback. This affects builds using
``CONFIG_VIRTIO`` with the PCI or MMIO transport.

- `Zephyr project bug tracker GHSA-7884-373w-qqhx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7884-373w-qqhx>`_

This has been fixed in main for v4.5.0

- `PR 111289 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111289>`_

- `PR 113344 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113344>`_

- `PR 113345 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113345>`_

:cve:`2026-13213`
-----------------

Bluetooth HAS: NULL-pointer dereference DoS when a bonded peer reconnects before bt_has_register

The Hearing Access Service (HAS) GATT server in ``subsys/bluetooth/audio/has.c``
installs a connection-callback set unconditionally via ``BT_CONN_CB_DEFINE``, so
``security_changed()`` runs for every connection that establishes security even before
the application has called ``bt_has_register()``. The service attribute pointers
``hearing_aid_features_attr``, ``preset_control_point_attr``, and
``active_preset_index_attr`` remain ``NULL`` until ``bt_has_register()`` resolves them
and sets ``has.registered``.

With ``CONFIG_BT_SETTINGS``, ``settings_set_cb()`` restores each bonded client's
persisted context at boot and unconditionally sets ``context->flags`` to
``BONDED_CLIENT_INIT_FLAGS`` (non-zero). When a previously bonded peer reconnects and
re-establishes security during the startup window before ``bt_has_register()`` has been
called, ``security_changed()`` sees the non-zero flags and schedules
``notify_work_handler``, which calls ``bt_gatt_is_subscribed()`` with a still-``NULL``
attribute pointer. That triggers an assertion (``__ASSERT(attr, ...)`` in
``bt_gatt_is_subscribed()``), or a NULL dereference of ``attr->uuid`` when assertions
are compiled out.

The result is a remotely triggerable (Bluetooth, adjacent) crash of the HAS peripheral.
Exploitation requires the peer to have previously bonded with the device and to
reconnect within the boot-time race window before the application registers the service;
a peer that reconnects persistently can prolong the outage. Impact is denial of service
only, with no memory corruption or information disclosure.

The fix adds an early ``if (!has.registered) { return; }`` guard in
``security_changed()``, so no notification work is scheduled until the GATT service is
registered and its attribute pointers are valid.

- `Zephyr project bug tracker GHSA-9rj8-3fvm-cc9f
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9rj8-3fvm-cc9f>`_

This has been fixed in main for v4.5.0

- `PR 111767 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111767>`_

- `PR 113349 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113349>`_

- `PR 113347 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113347>`_

- `PR 113348 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113348>`_

:cve:`2026-13214`
-----------------

Stack buffer overflow in OCPP GetConfiguration key parsing

The OCPP 1.6 client in ``subsys/net/lib/ocpp/ocpp_j.c`` contains a stack buffer overflow
in ``parse_getconfig_msg()``. When handling a ``GetConfiguration`` request from the
central system, the handler copied the attacker-controlled JSON ``"key"`` string into
the caller's fixed 50-byte stack buffer (``skey[CISTR50]``, declared in
``subsys/net/lib/ocpp/ocpp.c``) using an unbounded ``strcpy()``. The parsed key value
points directly into the receive buffer, so its length is bounded only by the message
size (``CONFIG_OCPP_RECV_BUFFER_SIZE``, default 2048).

The ``GetConfiguration`` message is delivered over the WebSocket connection that the
charge point opens to its configured central system. The reader thread
``ocpp_wsreader()`` reads the message into ``ui->recv_buf`` and dispatches it to
``parse_getconfig_msg()`` via the PDU function table. An attacker who controls the
central system endpoint, or a man-in-the-middle on an unencrypted connection, can send a
``GetConfiguration`` request whose ``"key"`` field exceeds 50 bytes and overflow the
reader thread's stack with attacker-chosen bytes.

The consequence is a remotely triggerable stack smash on the OCPP reader thread: at
minimum a denial of service, and plausibly remote code execution depending on build-time
hardening such as stack canaries and MPU configuration. The fix replaces the
``strcpy()`` with a bounded ``strncpy(key, payload.key[0], CISTR50 - 1)`` followed by
explicit NUL termination, matching the bounded copies already used by the sibling
handlers.

- `Zephyr project bug tracker GHSA-fqhf-6v24-4px2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fqhf-6v24-4px2>`_

This has been fixed in main for v4.5.0

- `PR 111242 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111242>`_

- `PR 113330 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113330>`_

- `PR 113329 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113329>`_

:cve:`2026-13215`
-----------------

Zephyr ext2 mount: unvalidated superblock block size causes out-of-bounds write from a crafted filesystem image

The Zephyr ext2 filesystem driver fails to validate the ``s_log_block_size`` field of
the on-disk superblock when mounting a filesystem. ``ext2_verify_disk_superblock()`` in
``subsys/fs/ext2/ext2_impl.c`` checks the magic number, revision, inode size and group
counts, but never bounds ``s_log_block_size``. On a successful verify,
``subsys/fs/ext2/ext2_ops.c`` computes ``fs->block_size = 1024 <<
superblock.s_log_block_size`` from this attacker-controlled ``uint32_t``, so a crafted
value either overflows the shift (undefined behaviour) or yields a block size far larger
than ``CONFIG_EXT2_MAX_BLOCK_SIZE``.

That block size is then passed to ``k_mem_slab_init()`` by ``ext2_init_blocks_slab()``
to carve ``CONFIG_EXT2_MAX_BLOCK_COUNT`` blocks out of the fixed static buffer
``__ext2_block_memory_buffer``, whose size is ``CONFIG_EXT2_MAX_BLOCK_COUNT *
CONFIG_EXT2_MAX_BLOCK_SIZE``. ``k_mem_slab_init()`` does not verify that the requested
blocks fit the buffer, and the ext2 wrapper discards its return value, so the slab is
laid out past the end of the static buffer. The mount immediately reads block-group,
bitmap and inode blocks of ``fs->block_size`` bytes each into these slab blocks,
producing an out-of-bounds write into adjacent static memory on the first block read.

The entire path is gated only by data read from the mounted image, making this reachable
by any attacker who can present a crafted ext2 image to a device that mounts it (for
example a removable SD card or storage medium). Because the ext2 driver runs in kernel
mode, supplying image bytes yields a supervisor-mode memory-corruption primitive, with
impact ranging from denial of service to potential code execution.

The fix rejects ``s_log_block_size`` values that overflow the shift (greater than 11) or
that produce a block size exceeding ``CONFIG_EXT2_MAX_BLOCK_SIZE``, so the block slab
can no longer be initialized larger than its backing buffer.

- `Zephyr project bug tracker GHSA-j52j-gfj9-rwjm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-j52j-gfj9-rwjm>`_

This has been fixed in main for v4.5.0

- `PR 111241 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111241>`_

- `PR 113754 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113754>`_

- `PR 113327 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113327>`_

- `PR 113326 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113326>`_

:cve:`2026-13216`
-----------------

Out-of-bounds stack write in Zephyr virtio PCI driver from unvalidated device-supplied capability length

The virtio PCI driver (``drivers/virtio/virtio_pci.c``) parses a device's PCI capability
list during driver initialization. In ``virtio_pci_read_cap()`` the device-supplied
capability length byte ``cap_len`` (read from PCI config space via ``pcie_conf_read()``)
was only checked with ``assert(tmp.cap_len == cap_struct_size)``. That ``assert``
resolves to ``__ASSERT_NO_MSG()``, gated by ``CONFIG_ASSERT``, which defaults off in
production builds, so the value reached the copy logic completely unvalidated.

The length then drives a loop that copies extra capability dwords into a fixed-size
stack buffer supplied by the caller. A ``cap_len`` below the 24-byte base ``struct
virtio_pci_cap`` underflows the unsigned ``extra_data_words`` count to a
near-``SIZE_MAX`` value, producing an effectively unbounded stack write; a ``cap_len``
above the caller's buffer (up to 255) writes up to roughly 228 bytes of
device-controlled data past the buffer. Both are out-of-bounds writes of
attacker-controlled content executed in kernel mode during boot-time device probe.

The input originates from the virtio device. In the common deployment where Zephyr runs
as a guest under a hypervisor, the device backend is the host, which already fully
outranks the guest, so the bug yields no privilege escalation. The exploitable case is a
virtio device that is untrusted relative to the Zephyr kernel — an untrusted or
physical/passthrough virtio PCIe device on a bare-metal system, or a
confidential-computing posture where the guest must defend against the host — where a
malicious device can corrupt the kernel stack and potentially achieve code execution or
a crash.

The fix replaces the compiled-out assert with a runtime range check rejecting
``cap_len`` outside ``[sizeof(struct virtio_pci_cap), cap_struct_size]`` before any
arithmetic or copy.

- `Zephyr project bug tracker GHSA-qrh3-4mvv-w667
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-qrh3-4mvv-w667>`_

This has been fixed in main for v4.5.0

- `PR 111289 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111289>`_

- `PR 113344 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113344>`_

- `PR 113345 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113345>`_

:cve:`2026-13217`
-----------------

NULL-pointer dereference in Zephyr OCPP CALLRESULT parsing via unchecked strtok_r/atoi

The OCPP 1.6 client in ``subsys/net/lib/ocpp/ocpp.c`` reconstructs a session handle and
PDU id from the ``uid`` field of a CALLRESULT message. In ``ocpp_process_server_msg()``
the code calls ``atoi(strtok_r(uid, "-", &tmp))`` without checking the ``strtok_r``
return value. When the server-supplied ``uid`` is empty or contains no ``-`` delimiter,
``strtok_r()`` returns ``NULL`` and ``atoi(NULL)`` dereferences a NULL pointer, which is
undefined behaviour.

The ``uid`` originates from network data: ``parse_rpc_msg()`` in
``subsys/net/lib/ocpp/ocpp_j.c`` JSON-parses a frame received from the OCPP central
system over TCP/WebSocket and copies the server-controlled string into the local buffer.
A malicious or compromised central system, or a man-in-the-middle on a non-TLS ``ws://``
connection, can return a malformed ``uid`` to reach the defect. No authentication beyond
the existing server connection (or MITM position) is required, and the reconstructed
pointer is membership-validated by ``ocpp_session_is_valid()``, so the impact is limited
to the NULL dereference rather than arbitrary pointer use.

On Zephyr targets that trap access to address 0 (MMU/MPU platforms or
``CONFIG_NULL_POINTER_EXCEPTION_DETECTION``), the dereference faults inside the OCPP
reader thread and invokes the fatal handler, producing a remote denial of service of the
charge point; on bare targets where address 0 is readable the call returns 0 and is
benign, so the impact is availability-only and platform-conditional.

The applied fix guards only the first ``atoi()``; the second ``strtok_r(NULL, "-",
&tmp)`` followed by ``pdu = atoi(buf)`` in the same function remains unguarded and the
identical NULL dereference is still reachable from the same network input when the
``uid`` has a first token but no second ``-``-delimited token. A complete fix should
validate the second token as well.

- `Zephyr project bug tracker GHSA-w234-pcxp-4q8r
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-w234-pcxp-4q8r>`_

This has been fixed in main for v4.5.0

- `PR 111242 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111242>`_

- `PR 113330 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113330>`_

- `PR 113329 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113329>`_

:cve:`2026-13343`
-----------------

Uninitialised stack memory disclosure in the MIDI 2.0 UMP Stream responder

The UMP Stream responder library in ``lib/midi2/ump_stream_responder.c`` builds reply
packets in a 16-byte ``struct midi_ump`` (``uint32_t data[4]``). The builders
``make_endpoint_info()`` and ``make_function_block_info()`` populate only the first two
words (``res.data[0]`` and ``res.data[1]``) and, before this fix, declared their result
as an uninitialised local (``struct midi_ump res;``). The remaining two words
(``res.data[2]``, ``res.data[3]``) retain stale stack contents.

Endpoint Info and Function Block Info notifications are UMP Stream messages
(``UMP_MT_UMP_STREAM``), which are 4 words long, so the full 16-byte packet — including
the two uninitialised words — is transmitted verbatim by ``cfg->send()``. The responder
is driven by attacker-supplied UMP Stream Endpoint-Discovery / Function-Block-Discovery
requests via ``ump_stream_respond()``. In the in-tree Network MIDI 2.0 server
(``subsys/net/lib/midi2/netmidi2.c``) these requests arrive as UDP datagrams and, with
the default no-authentication endpoint, a remote peer can establish a session and
trigger the responses; the same library also serves USB MIDI 2.0 hosts.

Each discovery request causes the device to disclose 8 bytes of its own uninitialised
stack memory to the peer, and the request is freely repeatable. This is a
confidentiality-only information leak (root cause is use of an uninitialised variable,
CWE-457/CWE-908); the leaked words could include residual data or pointer values. There
is no memory-corruption, integrity, or availability impact.

The fix zero-initialises both result structs (``struct midi_ump res = {0};``), so the
trailing words are cleared before transmission. These are the only two responder
builders that left trailing words unset (``send_string()`` already zeroes its buffer),
so the leak is fully closed.

- `Zephyr project bug tracker GHSA-4w5x-w7j4-6xxc
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4w5x-w7j4-6xxc>`_

This has been fixed in main for v4.5.0

- `PR 111286 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111286>`_

- `PR 113341 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113341>`_

:cve:`2026-13351`
-----------------

net: Maliciously fragmented IPv6 packets can prevent receiving/processing future incoming packets

The Zephyr network stack can be prevented from receiving or processing future
incoming packets by sending a few maliciously fragmented IPv6 packets. When
``net_ipv6_handle_fragment_hdr()`` triggers an ICMPv6 error response for a
malformed fragment, it returns ``NET_OK`` without unreferencing the packet,
leaking the RX network packet buffer. Each call to ``k_mem_slab_alloc()`` lacks a
counterpart ``k_mem_slab_free()``, so replaying such a packet a few times
exhausts the RX buffer slab, after which the driver repeatedly fails to obtain RX
buffers, resulting in a denial of service.

- `Zephyr project bug tracker GHSA-cv4q-2j56-4wqf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-cv4q-2j56-4wqf>`_

This has been fixed in main for v4.4.0

- `PR 104044 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/104044>`_

- `PR 104205 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/104205>`_

- `PR 104206 fix for v4.2
  <https://github.com/zephyrproject-rtos/zephyr/pull/104206>`_

- `PR 104209 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/104209>`_

:cve:`2026-13478`
-----------------

Out-of-bounds read in Zephyr ext2 block-bitmap validation from a crafted s_blocks_count

The Zephyr ext2 filesystem driver validates the on-disk block bitmap in
``ext2_init_fs()`` (``subsys/fs/ext2/ext2_impl.c``) by passing ``fs_blocks =
s_blocks_count - s_first_data_block`` to ``ext2_bitmap_count_set()``. That helper
(``subsys/fs/ext2/ext2_bitmap.c``) treats its argument as a number of bits and reads one
bitmap byte per eight bits, but the bitmap buffer (``BGROUP_BLOCK_BITMAP``) is a single
fetched block of only ``fs->block_size`` bytes (capacity ``fs->block_size * 8`` bits).
``s_blocks_count`` and ``s_first_data_block`` are taken verbatim from the superblock and
were never bounded against this single-group capacity; ``ext2_verify_disk_superblock()``
checks the magic, revision, and block-size shift but not the block count.

A crafted ext2 image with an oversized ``s_blocks_count`` (up to ~4 billion, against a
maximum 4096-byte block / 32768-bit bitmap) makes ``ext2_bitmap_count_set()`` scan
roughly 512 MB of memory past the bitmap block — a large out-of-bounds read of the
static block slab and adjacent memory.

The defect is reached during mount: ``ext2_init_fs()`` is invoked from ``ext2_mount()``
(``subsys/fs/ext2/ext2_ops.c``), the registered ``.mount`` operation. Any path that
mounts an attacker-supplied ext2 image (removable media, a disk/flash partition, or a
downloaded image) triggers it. The kernel-privileged parser operates on
attacker-controlled data, so the bug is exploitable wherever untrusted ext2 media can be
mounted.

Impact is an out-of-bounds read only: the resulting bit count is compared internally and
the mount is rejected, so no attacker-controlled bytes are returned (not a useful
information leak). The ~512 MB over-read will almost certainly cross an unmapped or
MPU-protected boundary and fault, crashing the system — a denial of service triggered by
mounting a single malformed image. The fix rejects any image whose ``fs_blocks`` exceeds
``fs->block_size * 8`` before the scan.

- `Zephyr project bug tracker GHSA-gj29-7f7m-4c29
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gj29-7f7m-4c29>`_

This has been fixed in main for v4.5.0

- `PR 111970 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111970>`_

- `PR 112132 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112132>`_

- `PR 112131 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/112131>`_

- `PR 113351 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113351>`_

:cve:`2026-13479`
-----------------

Out-of-bounds read in LoRaWAN clock-sync AppTimeAns downlink handler

The LoRaWAN application-layer clock-synchronization service parses downlinks in
``clock_sync_package_callback()`` (``subsys/lorawan/services/clock_sync.c``). Its
command loop only guarantees that the one-byte command id is in bounds; for the
``CLOCK_SYNC_CMD_APP_TIME`` (``AppTimeAns``) command the handler then reads a 4-byte
time correction via ``sys_get_le32()`` plus a 1-byte token without checking that 5 bytes
remain in the receive buffer (``len - rx_pos``). A short or crafted ``AppTimeAns``
therefore reads up to 5 bytes past the end of the decrypted payload.

The payload (``rx_buf``/``len``) is the decrypted application frame delivered to the
registered downlink callback (``mcps_indication->Buffer``/``BufferSize``). Reaching the
handler requires a frame on the clock-sync port that passes LoRaWAN's MAC integrity
check and FRMPayload decryption, so the practical attacker is a malicious or compromised
network/application server (the designated sender of ``AppTimeAns``) or a party holding
the session keys, rather than an arbitrary radio listener.

The over-read is bounded: the backing store is a fixed 255-byte static buffer, so the
few stray bytes do not fault, and the read values (``time_correction``, ``token``) are
used only internally and never transmitted, so there is no disclosure to the attacker
and no crash. The sole effect is that a stale ``token`` matching ``ctx.req_token`` can
apply a garbage ``time_correction`` to the device's own clock offset
(``ctx.time_offset``), a minor integrity impact confined to the victim's time estimate.
The fix adds an explicit length check that drops a too-short ``AppTimeAns``. Note the
sibling one-byte reads in the periodicity and force-resync handlers remain unguarded
with the same negligible impact.

- `Zephyr project bug tracker GHSA-2m6g-p3vx-p2fh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2m6g-p3vx-p2fh>`_

This has been fixed in main for v4.5.0

- `PR 111983 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111983>`_

- `PR 113433 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113433>`_

- `PR 113432 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113432>`_

- `PR 113431 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113431>`_

:cve:`2026-13480`
-----------------

Out-of-bounds read in LoRaWAN fragmented data block transport (FUOTA) downlink handler

The LoRaWAN TS004 Fragmented Data Block Transport handler
``frag_transport_package_callback()`` in ``subsys/lorawan/services/frag_transport.c``
parses downlink command bytes without validating that enough payload bytes remain before
each access. The loop's only bound is ``rx_pos < len``; after consuming the one-byte
command id the handler cast ``rx_buf + rx_pos`` to a 10-byte ``struct
frag_transport_setup_req``, and for a ``DATA_FRAGMENT`` command passed
``&rx_buf[rx_pos]`` to the fragment decoder, which reads exactly ``ctx.frag_size`` bytes
— with no remaining-length check in either case.

The fragment size is attacker-chosen in a preceding ``FRAG_SESSION_SETUP`` command
(``ctx.frag_size = req->frag_size``, capped at
``CONFIG_LORAWAN_FRAG_TRANSPORT_MAX_FRAG_SIZE``, default 232). ``rx_buf`` aliases the
255-byte static ``MacCtx.RxPayload`` buffer in the loramac-node MAC layer, while ``len``
is the actual decrypted payload length. By padding a downlink with mismatched-index
``DATA_FRAGMENT`` filler commands (each advancing ``rx_pos`` by three bytes without
producing an answer) and appending one matching-index fragment near the end of the
payload, an attacker can make the decoder read up to roughly ``frag_size`` bytes past
the end of ``RxPayload``, copying adjacent static memory into the decoder buffers and
the FUOTA flash image.

The handler runs only on downlinks that have already passed the LoRaWAN frame MIC and
FRMPayload decryption, so the defect is reachable only by a party holding the device's
session keys (the FUOTA server or an attacker who has compromised those keys). The
out-of-bounds bytes are never returned to the sender — the only uplink emitted is a
status answer carrying fragment counts — so there is no direct disclosure channel, and
on typical flat-memory LoRaWAN MCUs the over-read stays within mapped memory, making a
crash unlikely. The impact is therefore a bounded out-of-bounds read with limited
confidentiality consequence and no write or control-flow primitive. The fix adds
remaining-length guards before each access.

- `Zephyr project bug tracker GHSA-845m-2m84-g5h2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-845m-2m84-g5h2>`_

This has been fixed in main for v4.5.0

- `PR 111983 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111983>`_

- `PR 113433 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113433>`_

- `PR 113432 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113432>`_

- `PR 113431 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113431>`_

:cve:`2026-13481`
-----------------

Out-of-bounds read in PTP management TLV TIME parsing in Zephyr net PTP

The IEEE 1588 PTP management-message parser in ``subsys/net/lib/ptp/tlv.c`` mishandles
the ``PTP_MGMT_TIME`` management id. In ``tlv_mgmt_post_recv()``, the ``PTP_MGMT_TIME``
case casts ``mgmt_tlv->data`` to a 10-byte ``struct ptp_timestamp`` and reads it (then
byte-swaps and writes it back) without first checking that the TLV data field is at
least ``sizeof(struct ptp_timestamp)``. Every sibling management id in the same switch
validates its length first; ``PTP_MGMT_TIME`` was the only case lacking that check.

The length passed in is the management data size (``tlv->length - 2``), and the upstream
guard in ``ptp_tlv_post_recv()`` only requires ``tlv->length > 2``, while
``msg_tlv_post_recv()`` validates only that the TLV fits within the received byte count,
not a per-id minimum. A peer on the local PTP segment can therefore send a
``PTP_MSG_MANAGEMENT`` message carrying a short ``PTP_MGMT_TIME`` TLV (data as small as
2 bytes), causing the parser to read and write 8 bytes beyond the validated data. The
message type and TLV contents are taken straight off the wire, so the path is reachable
by any adjacent attacker when ``CONFIG_PTP`` is enabled.

The over-read and write-back stay within the ``struct ptp_msg`` allocation
(``mgmt_tlv->data`` lives in the leading ``mtu[NET_ETH_MTU]`` union member, so ``data +
10`` lands at most a few bytes past ``mtu[]``, inside the same object), so this is an
out-of-bounds read of adjacent in-object memory plus a bounded in-place corruption of
the message's parsed timestamp, not past-allocation memory corruption. Impact is limited
to minor information exposure of adjacent bytes and corruption of the device's parsed
management TIME value; there is no crash on the access and no reachable reference-count
corruption.

The fix adds ``if (length < sizeof(struct ptp_timestamp)) { return -EBADMSG; }`` before
the cast, matching the other management-id cases and fully closing the receive-path
defect.

- `Zephyr project bug tracker GHSA-mh5r-jxh8-hxwx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mh5r-jxh8-hxwx>`_

This has been fixed in main for v4.5.0

- `PR 111969 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111969>`_

- `PR 113353 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113353>`_

- `PR 117480 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/117480>`_

- `PR 117479 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/117479>`_

:cve:`2026-13734`
-----------------

Zephyr WireGuard mutates peer state before anti-replay check, enabling capture-replay endpoint hijack

Zephyr's WireGuard VPN data-plane receive handler ``wg_process_data_message()`` in
``subsys/net/lib/wireguard/wg_crypto.c`` validated the anti-replay counter too late.
After AEAD decryption of a ``MESSAGE_TRANSPORT_DATA`` packet succeeded, the code
committed several peer-state changes — ``update_peer_addr()`` (endpoint roaming update),
the ``keypair->last_rx``/``peer->last_rx`` liveness timers, and ``keypair_update()``
(promote ``next``\ →\ ``current`` and destroy the previous keypair) — and only afterward
called ``wg_check_replay()``. On a replayed packet the replay check returned
``-EINVAL``, but none of the preceding mutations were rolled back.

The AEAD tag authenticates content but not freshness, so a replayed-but-authentic
transport packet decrypts correctly. An attacker who captures one valid ciphertext off
the wire (an on-path or shared-medium observer) can re-inject it from an arbitrary
spoofed source address. Reaching the handler requires no credentials: it is driven
directly from inbound UDP datagrams via the dispatch in
``subsys/net/lib/wireguard/wg.c``.

Because the state mutations committed before the replay check, the replay repoints the
peer endpoint to the attacker-chosen source address (roaming hijack), redirecting the
victim's subsequent outbound tunnel traffic until the legitimate peer's next packet
re-corrects it; it also prematurely destroys the previous keypair and refreshes the RX
liveness timer. The tunnel payload stays encrypted under the session keypair, so this is
an integrity/availability impact (traffic redirection and session disruption), not
payload disclosure. The fix moves ``wg_check_replay()`` to immediately after a
successful decrypt, before any peer-state mutation, matching the WireGuard specification
and the Linux reference implementation.

- `Zephyr project bug tracker GHSA-x7q7-fjx9-4vj2
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x7q7-fjx9-4vj2>`_

This has been fixed in main for v4.5.0

- `PR 111043 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111043>`_

- `PR 112250 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112250>`_

:cve:`2026-13735`
-----------------

WireGuard keepalive transport-data messages accepted without Poly1305 authentication

Zephyr's WireGuard implementation in ``subsys/net/lib/wireguard/wg_crypto.c`` mishandled
keepalive packets. In ``wg_process_data_message()``, any type-4 transport-data message
whose payload was exactly 16 bytes (an empty plaintext plus a bare Poly1305 tag, i.e. a
keepalive) was accepted and returned immediately, before ``wg_decrypt_packet()`` was
ever called. The Poly1305 authentication tag was therefore never verified; the only
preceding gates were a cleartext receiver-index lookup (``get_peer_keypair_for_index()``
on the attacker-supplied ``data_hdr->receiver``) and a non-cryptographic keypair
validity/expiry check.

The path is reachable entirely from the network: inbound UDP on the WireGuard port is
dispatched by ``wg_input()`` to ``handle_transport_data()`` and then
``wg_process_data_message()``. The 32-bit receiver index is transmitted in cleartext in
WireGuard handshake and data messages, so an on-path observer learns it directly and an
off-path attacker can brute-force it against the UDP port. Given an active
receiving-valid session for that index, an attacker could send a 16-byte garbage payload
and have it accepted without possessing the session key.

On acceptance the unauthenticated message caused the management layer to observe a
spoofed ``NET_EVENT_VPN_CONNECTED`` signal (setting ``peer->first_valid`` and notifying
any ``net_mgmt`` listener) and incremented the keepalive-RX statistic. The impact is
limited to integrity of this status signal: no plaintext is decrypted or injected, no
key is disclosed, and the early-return path did not update the peer endpoint or liveness
timers, so there is no traffic-injection, session-takeover, or availability consequence.

The fix removes the pre-decrypt early return so a 16-byte payload flows through
``wg_decrypt_packet()``, which verifies the Poly1305 tag over the empty plaintext,
followed by the existing anti-replay check; only an authenticated, non-replayed message
is then recognised as a keepalive. Forged keepalives now fail the tag check and are
counted as decrypt failures.

- `Zephyr project bug tracker GHSA-xxrw-r78f-f6mx
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xxrw-r78f-f6mx>`_

This has been fixed in main for v4.5.0

- `PR 111043 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111043>`_

- `PR 112250 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/112250>`_

:cve:`2026-14366`
-----------------

SiWx91x WiFi driver double-unref / use-after-free of caller-owned TX net_pkt

The Silicon Labs SiWx917 WiFi driver's transmit callback ``siwx91x_send()`` in
``drivers/wifi/siwx91x/siwx91x_wifi.c`` frees a network packet it does not own. In the
Zephyr TX path the ``net_pkt`` is owned by the L2/networking stack; the driver only
borrows it to copy the frame bytes into a local ``net_buf``. Before the fix, after
transmitting, ``siwx91x_send()`` additionally called ``net_pkt_unref(pkt)`` on the
caller-owned packet, dropping its last reference and returning it to the shared packet
pool prematurely. This code path is compiled in by default
(``CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE``).

The caller, ``ethernet_send()`` in ``subsys/net/l2/ethernet/ethernet.c``, keeps using
the packet after the driver returns: it reads ``net_pkt_get_len(pkt)``, updates TX
statistics, and then performs its own ``net_pkt_unref(pkt)``. Because the driver already
released the packet, these are use-after-free reads followed by a second unref (a double
free). When concurrent network activity recycles the freed slab slot between the two
unrefs, the trailing unref decrements a different, live packet's reference count and
frees it, corrupting the ``net_pkt`` pool shared by both the receive and transmit paths.

The defect is exercised by ordinary transmission over the native-stack SiWx917 WiFi
interface, and an adjacent attacker on the same WiFi network can induce transmissions
(for example ARP or ICMP echo replies, or TCP handshakes) to drive the path. The primary
observable impact is loss of availability (transmit hangs and crashes from pool
corruption), with race-dependent memory corruption of the kernel networking buffer pool.
The fix removes the erroneous ``net_pkt_unref(pkt)`` from ``siwx91x_send()``; the
driver's receive-path unref, which correctly frees a packet the driver itself allocated,
is unaffected.

- `Zephyr project bug tracker GHSA-f9qq-jv4w-pqxg
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-f9qq-jv4w-pqxg>`_

This has been fixed in main for v4.5.0

- `PR 112180 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112180>`_

- `PR 113523 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113523>`_

- `PR 113522 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113522>`_

:cve:`2026-14367`
-----------------

I3C IBI work-node free-list data race between ISR and workqueue thread

The I3C IBI subsystem in ``drivers/i3c/i3c_ibi_workq.c`` hands out statically-allocated
work nodes through a free-list ``i3c_ibi_work_nodes_free`` implemented as a plain
``sys_slist_t``, which provides no synchronization. The allocation helpers
(``i3c_ibi_work_enqueue``, ``i3c_ibi_work_enqueue_target_irq``,
``i3c_ibi_work_enqueue_hotjoin``, ``i3c_ibi_work_enqueue_controller_request``,
``i3c_ibi_work_enqueue_cb``) called ``sys_slist_get()`` directly from **ISR context**,
while the workqueue handler ``i3c_ibi_work_handler()`` returned nodes with
``sys_slist_append()`` from the **workqueue thread**, with no lock on either side.

Because ``sys_slist_get()`` and ``sys_slist_append()`` are neither atomic nor
interrupt-safe, an IBI interrupt that fires while the workqueue thread is mid-append (or
a truly parallel access under ``CONFIG_SMP``) races on the shared list. This corrupts
the list linkage: a node may be handed to two consumers, a node may be lost, or the
head/tail pointers may be left inconsistent so ``sys_slist_get()`` returns a stale or
garbage pointer. In the double-hand-out case the subsequent ``memcpy(ibi_node, ibi_work,
sizeof(*ibi_node))`` overwrites a node still in flight; a garbage pointer turns the same
``memcpy`` into an out-of-bounds write.

The race is driven by I3C bus traffic — IBIs, hot-joins, and controller-role requests
originate from target devices on the bus, and I3C supports hot-joining devices. An
attacker controlling an I3C peripheral on the board's chip-to-chip bus can generate
high-frequency interrupts timed to collide with the free operation. Exploitation
requires physical access to the bus and winning a narrow timing window; the most
realistic impact is a crash or hang (denial of service), with memory corruption possible
but hard to control.

The fix wraps all free-list ``sys_slist_get()``/``sys_slist_append()`` operations in the
new ``ibi_work_alloc()``/``ibi_work_free()`` helpers, each guarded by a ``k_spinlock``
(``ibi_work_lock``), closing the race across ISR and thread contexts.

- `Zephyr project bug tracker GHSA-gfj5-gcxv-9jqm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gfj5-gcxv-9jqm>`_

This has been fixed in main for v4.5.0

- `PR 110786 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/110786>`_

- `PR 113436 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113436>`_

- `PR 113437 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113437>`_

- `PR 117902 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/117902>`_

:cve:`2026-14368`
-----------------

Off-by-one out-of-bounds NUL write in Zephyr LwM2M JSON string parser

The LwM2M JSON content formatter's ``get_string()`` in
``subsys/net/lib/lwm2m/lwm2m_rw_json.c`` copies a parsed JSON string into a
caller-supplied buffer and NUL-terminates it. The length guard used ``if (string_length
> buflen)``, which accepts a string whose length is exactly ``buflen``. After
``memcpy()`` fills the whole buffer, ``buf[string_length] = '\0'`` then writes one byte
past the end of the buffer (CWE-787).

The string value and its length are taken directly from the incoming CoAP payload during
a LwM2M WRITE: ``do_write_op_json()`` parses the payload obtained from
``coap_packet_get_payload()``, and ``get_string()`` is invoked from
``lwm2m_write_handler()`` (``engine_get_string()`` in
``subsys/net/lib/lwm2m/lwm2m_message_handling.c``) for a ``LWM2M_RES_TYPE_STRING``
resource. The destination ``buf``/``buflen`` is either the resource instance's fixed
data buffer (``res_inst->data_ptr``/``max_data_len``) or the engine validation buffer
(``msg->ctx->validate_buf``). A LwM2M server (the client's DTLS peer) can therefore
write a string resource with a value whose length equals the target buffer size and
force a one-byte overflow.

The overflow is a single out-of-bounds write of the constant byte ``0x00`` immediately
past the resource or validation buffer, corrupting the adjacent byte in memory. It is
not an information leak and the written value is fixed, so it is not a direct
code-execution primitive, but it can corrupt adjacent state (an adjacent resource value,
a length/flag field, or a struct field) and cause data corruption or a crash. Triggering
the write is deterministic; the resulting impact depends on memory layout.

The fix changes the guard to ``string_length >= buflen``, rejecting the exact-length
case and aligning the JSON formatter with the other content formatters
(``lwm2m_rw_plain_text.c``, ``lwm2m_rw_oma_tlv.c``, ``lwm2m_rw_senml_json.c``,
``lwm2m_rw_cbor.c``, ``lwm2m_rw_senml_cbor.c``), which already used the correct boundary
check.

- `Zephyr project bug tracker GHSA-vg53-h6qq-xx7h
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vg53-h6qq-xx7h>`_

This has been fixed in main for v4.5.0

- `PR 112021 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112021>`_

- `PR 113446 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113446>`_

- `PR 113444 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113444>`_

- `PR 113519 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113519>`_

:cve:`2026-14696`
-----------------

Ethernet bridge RX packet leak enables denial of service via RX buffer-pool exhaustion

When Ethernet bridging is enabled (``CONFIG_NET_ETHERNET_BRIDGE``),
``eth_bridge_input_process()`` in ``subsys/net/l2/ethernet/bridge/bridge_input.c``
decides how each frame received on a bridge member interface is handled. For frames that
must also be delivered to the local stack, the code called
``eth_bridge_handle_locally()`` and returned ``NET_OK``. That helper does not consume
the packet — it only calls ``bridge_iface_recv()`` (via ``virtual_recv()``), which
returns ``NET_CONTINUE`` without taking ownership of ``pkt``.

The ``NET_OK`` verdict then propagates through ``ethernet_recv()`` up to
``processing_data()`` in ``subsys/net/ip/net_core.c``, where ``NET_OK`` is interpreted
as "the packet was consumed, do not free it." Because no consumer actually took
ownership, the RX ``net_pkt`` is never returned to the pool and is leaked. The
concretely reproducible leak occurs for frames whose EtherType has no registered L3
handler when ``CONFIG_NET_ETHERNET_FORWARD_UNRECOGNISED_ETHERTYPE`` is set (default
``y`` when ``CONFIG_NET_SOCKETS_PACKET`` is enabled): the fall-through L3 dispatch does
not overwrite the ``NET_OK`` verdict, so ``ethernet_recv()`` returns ``NET_OK`` and the
buffer is never released.

Any device on a bridged L2 segment can emit broadcast/multicast frames carrying an
arbitrary EtherType with no authentication. Each such frame permanently consumes one
buffer from the finite RX pool (``CONFIG_NET_PKT_RX_COUNT``), so a brief broadcast flood
exhausts the pool and the device can no longer receive traffic until it is rebooted — a
persistent denial of service. There is no confidentiality or integrity impact.

The fix makes ``eth_bridge_handle_locally()`` propagate the real ``net_verdict`` and
return ``NET_CONTINUE`` for locally-kept frames, writing the bridge interface back
through a new ``dst_iface`` out-parameter so the packet follows the normal receive path
and is unreferenced exactly once.

- `Zephyr project bug tracker GHSA-3m4w-wc4v-766q
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3m4w-wc4v-766q>`_

This has been fixed in main for v4.5.0

- `PR 111931 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/111931>`_

- `PR 113524 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113524>`_

:cve:`2026-14697`
-----------------

IPv6 Neighbor Solicitation packet leak causes TX pool exhaustion denial of service

``net_ipv6_send_ns()`` in ``subsys/net/ip/ipv6_nbr.c`` allocates a transmit ``net_pkt``
for a Neighbor Solicitation. When it is called with a data packet pending on an
unresolved neighbor and that neighbor's ``pending_queue`` is already non-empty (an NS is
already outstanding), the function appends the data packet and returns early without
ever sending the NS via ``net_send_data()`` or releasing it with ``net_pkt_unref()``.
The freshly allocated NS ``net_pkt`` and its attached TX buffers are held only by a
local variable and are leaked permanently, never returning to
``CONFIG_NET_PKT_TX_COUNT`` / ``CONFIG_NET_BUF_TX_COUNT``.

The leaking branch sits on the normal IPv6 transmit path:
``net_ipv6_prepare_for_send()`` (called from ``net_if.c``) invokes
``net_ipv6_send_ns()`` for any outbound or forwarded IPv6 packet whose next hop is not
yet in the neighbor cache. An on-link (adjacent) attacker can drive it deterministically
by sending a burst of request packets (for example ICMPv6 echo requests or UDP
datagrams) that all spoof a single non-existent on-link source address: the node
generates a reply to each, the first reply queues an NS, and every subsequent reply
during the roughly three-second ``INCOMPLETE`` resolution window takes the leaking
branch and loses one TX packet. Router-configured nodes forwarding attacker traffic
toward a non-existent on-link host leak identically.

Because the leaked packets are never reclaimed and ``CONFIG_NET_PKT_TX_COUNT`` defaults
to only 4 (14 for Ethernet), a brief low-rate burst exhausts the TX pool. Once exhausted
the node can no longer allocate any transmit packet and cannot send TCP/UDP, ARP/ND, or
any reply at all, producing a complete and persistent network denial of service that
does not self-heal until reboot. The fix releases the unsent NS packet with
``net_pkt_unref(pkt)`` before the early return.

- `Zephyr project bug tracker GHSA-x956-p489-8mf5
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x956-p489-8mf5>`_

This has been fixed in main for v4.5.0

- `PR 112372 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112372>`_

- `PR 113655 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113655>`_

- `PR 113654 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113654>`_

:cve:`2026-14986`
-----------------

Under embargo until 2026-09-04

:cve:`2026-15460`
-----------------

Missing channel-state validation in Zephyr Bluetooth Classic L2CAP receive path

The Bluetooth Classic (BR/EDR) L2CAP receive handler ``bt_l2cap_br_recv()`` in
``subsys/bluetooth/host/classic/l2cap_br.c`` dispatched inbound data PDUs based only on
the destination channel ID, without checking that the target channel had reached the
``BT_L2CAP_CONNECTED`` state. A dynamic channel is assigned its RX CID and added to the
connection's channel list while still in ``BT_L2CAP_CONNECTING`` (and later
``BT_L2CAP_CONFIG``) — before configuration completes and, for PSMs that require
security, before the peer is authenticated (``l2cap_br_conn_req()``).

Because the channel is already findable by ``bt_l2cap_br_lookup_rx_cid()`` during this
window, a remote peer within radio range can send a data PDU addressed to that CID and
have it processed on a not-yet-established channel. The dispatch keys off channel fields
(``BR_CHAN(chan)->rx.mode``, ``rx.mps``) that are only initialized during configuration
by ``l2cap_br_conf()``; since channel objects are pooled and ``bt_l2cap_br_chan_del()``
does not reset ``rx.mode`` or the reassembly buffer ``_sdu``, a reused channel can carry
stale state into the ``CONNECTING`` window and route the frame into the
retransmission/flow-control path (``bt_l2cap_br_ret_fc_recv()``) with stale parameters
and a possibly stale ``_sdu`` pointer.

The impact is delivery of attacker data to upper-layer protocol handlers on a half-open
(and possibly unauthenticated) channel, plus operation on stale or partially initialized
channel state on reused channel objects — leading to channel/link teardown (denial of
service) and, in the stale-``_sdu`` case, a dangling-pointer condition. The fix adds an
explicit ``BR_CHAN(chan)->state < BT_L2CAP_CONNECTED`` guard that drops any data
received before the channel is fully connected.

- `Zephyr project bug tracker GHSA-hx89-rm6c-hjrh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hx89-rm6c-hjrh>`_

This has been fixed in main for v4.5.0

- `PR 112394 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112394>`_

- `PR 113700 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113700>`_

- `PR 113701 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113701>`_

- `PR 113710 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113710>`_

:cve:`2026-15461`
-----------------

Type confusion in Zephyr HL78xx GNSS NMEA driver causes wild-pointer write from GNSS input

The Sierra Wireless HL78xx modem GNSS driver (``drivers/modem/hl78xx/``, later
``drivers/modem/vendor_standalone/hl78xx/``) embeds a generic ``struct
gnss_nmea0183_match_data match_data`` inside ``struct hl78xx_gnss_data``. The generic
NMEA0183 match helper (``drivers/gnss/gnss_nmea0183_match.c``) requires that context to
be the *first* member because its callbacks cast ``user_data`` directly to ``struct
gnss_nmea0183_match_data *``. In the affected releases ``match_data`` was the second
member (after ``const struct device *dev``), so it sat at a non-zero offset while
``gnss_nmea0183_match_init()`` initialized it at the correct address. The registered
NMEA handlers instead pass the whole device data object (``data->devices.gnss->data``,
offset 0), producing an offset-shifted type confusion between where state is initialized
and where the parse callbacks read and write it.

When NMEA sentences from the GNSS receiver are parsed, the GGA/RMC callbacks write
parsed fix data into the wrong location within the struct, and the GSV callback
(``gnss_nmea0183_match_gsv_callback``, active under ``CONFIG_GNSS_SATELLITES``) reads
its ``satellites`` pointer and bound from the wrong offsets — non-pointer bytes of
``struct hl78xx_gnss_data`` — and then writes parsed ``struct gnss_satellite`` entries
through that bogus pointer. This is a write through an uninitialized/wild pointer with a
garbage bound.

The NMEA handlers are registered by default (``CONFIG_HL78XX_GNSS_SOURCE_NMEA`` is the
default GNSS source) on devices using the HL78xx GNSS. The driver runs in kernel context
and the NMEA data originates from the GNSS radio front-end, so a party able to influence
the GNSS signal (for example GNSS/GPS spoofing at radio proximity) can drive the
kernel-side parser into the faulty write. The most likely impact is a crash (denial of
service) because the bogus pointer resolves to a fixed near-NULL value, with
adjacent-memory corruption possible on MMU-less targets. Confidentiality is not
affected. Exploitation requires the satellites feature to be enabled and active, so
attack complexity is high.

- `Zephyr project bug tracker GHSA-vvjg-6rg4-7235
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vvjg-6rg4-7235>`_

This has been fixed in main for v4.5.0

- `PR 112937 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112937>`_

- `PR 113705 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113705>`_

:cve:`2026-6682`
----------------

Integer overflow in FatFs FAT32 volume mount (mount_volume) yields an attacker-controlled file size and out-of-bounds access in Zephyr

Zephyr bundles ChaN's FatFs (via the ``zephyrproject-rtos/fatfs`` west module) as the
FAT/exFAT filesystem backing ``subsys/fs/fat_fs.c``. In ``mount_volume()``
(``modules/fs/fatfs/ff.c``), the FAT area size is computed as ``fasize =
ld_32(BPB_FATSz32); ... fasize *= fs->n_fats;`` — a 32-bit multiply with no overflow
check.

A crafted FAT32 volume that sets ``BPB_FATSz32 = 0x80000001`` with two FATs makes the
product wrap (to ``0x00000002``), so the computed data region overlaps the FAT region.
Because the pre-multiply value is kept in ``fs->fsize``, the later plausibility check
does not catch the wrap.

An attacker who can get the device to mount such a volume (a malicious SD card or USB
medium) can place forged directory entries in the overlapped region, causing
``f_stat()``/directory reads to return attacker-controlled file sizes; application code
that reads a file using that size as a length then overflows its buffers, giving
heap- or stack-based memory corruption during ordinary file operations.

This is a core FAT32 code path with no compile-time gate (FAT12/16/32 is always built),
so a default Zephyr FatFs configuration is affected. Upstream FatFs is unmaintained for
security purposes (the maintainer did not respond to runZero or JPCERT/CC), so Zephyr
carries the fix in its vendored copy. Tracked upstream as CVE-2026-6682.

- `Zephyr project bug tracker GHSA-m537-wqw2-2wrj
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m537-wqw2-2wrj>`_

This has been fixed in main for v4.5.0

:cve:`2026-6683`
----------------

Divide-by-zero in FatFs exFAT sync (sync_fs) crashes Zephyr on a crafted exFAT volume

Zephyr's bundled FatFs (``zephyrproject-rtos/fatfs``) supports exFAT when
``CONFIG_FS_FATFS_EXFAT`` is enabled. In ``sync_fs()`` (``modules/fs/fatfs/ff.c``) the
free-cluster bookkeeping divides by ``(fs->n_fatent - 2)``.

The cluster count is read from the exFAT boot region as ``ncl = ld_32(BPB_NumClusEx)``
and is validated only against an upper bound (``> MAX_EXFAT``), never a lower bound, so
a crafted exFAT volume with ``BPB_NumClusEx = 0`` yields ``n_fatent = 2`` and a divisor
of zero.

Mounting such a volume and performing any write/sync triggers a divide-by-zero (SIGFPE /
CPU fault), a denial of service.

The defect is present only when exFAT is compiled in, which is not the default Zephyr
configuration; devices that enable exFAT and mount untrusted removable media are
exposed. Upstream FatFs is unmaintained for security, so Zephyr carries the fix in its
vendored copy. Tracked upstream as CVE-2026-6683.

- `Zephyr project bug tracker GHSA-c5j5-mrhx-hjg4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c5j5-mrhx-hjg4>`_

This has been fixed in main for v4.5.0

:cve:`2026-6685`
----------------

Integer underflow in FatFs dirty-sector cache (f_read/f_write) causes wrong-sector I/O on crafted fragmented media in Zephyr

In FatFs's read/write path (``f_read``/``f_write`` in ``modules/fs/fatfs/ff.c``), the
dirty-sector cache-refill decision compares ``fp->sect - sect`` against the run length
``cc`` using unsigned arithmetic. On a fragmented FAT layout where a later cluster maps
to a lower absolute sector than the currently cached one, the subtraction underflows
(wraps to a large unsigned value), so the guard that decides whether the cached window
overlaps the requested range is evaluated incorrectly.

The result is that FatFs flushes or reuses the wrong cached sector, reading or writing
file data to/from an incorrect on-disk location — cross-file data corruption and
potential disclosure of unrelated file contents, and a path to out-of-bounds behaviour
during ordinary file operations.

A crafted volume with a deliberately fragmented cluster chain (attacker-controlled
removable media) triggers the condition. This is on the default read/write path (no
exFAT or LFN gating). Upstream FatFs is unmaintained for security, so Zephyr carries the
fix in its vendored copy. Tracked upstream as CVE-2026-6685.

- `Zephyr project bug tracker GHSA-rg3p-32gq-hqw3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rg3p-32gq-hqw3>`_

This has been fixed in main for v4.5.0

:cve:`2026-6686`
----------------

FatFs f_lseek past end-of-file exposes uninitialized/stale cluster contents (deleted file data) in Zephyr

In FatFs (``f_lseek`` in ``modules/fs/fatfs/ff.c``), seeking a file opened for write to
an offset beyond its current end extends the cluster chain via ``create_chain()`` but
does not zero the newly allocated clusters.

FatFs marks the file as larger without initializing the backing sectors, so a subsequent
read of the grown region returns whatever was previously on the medium in those clusters
— typically the residual contents of deleted files. On a device where a lower-privileged
or later actor can read a file that was extended this way, previously deleted or
unrelated file data is disclosed (CWE-908, use of uninitialized resource). No
memory-safety corruption occurs; the impact is confidentiality of on-media data.

The bug is on the default write path (no exFAT/LFN gating). Upstream FatFs is
unmaintained for security, so Zephyr carries the fix in its vendored copy. Tracked
upstream as CVE-2026-6686.

- `Zephyr project bug tracker GHSA-rjhg-f2h7-rffm
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rjhg-f2h7-rffm>`_

This has been fixed in main for v4.5.0

:cve:`2026-6687`
----------------

Stack buffer overflow in FatFs exFAT volume-label read (f_getlabel) via an unvalidated on-disk length in Zephyr

In FatFs's ``f_getlabel()`` (``modules/fs/fatfs/ff.c``), the exFAT volume-label copy
loop is bounded by the raw on-disk byte ``dj.dir[XDIR_NumLabel]`` (0–255) rather than
the spec maximum of 11 characters.

A crafted exFAT volume that sets ``XDIR_NumLabel`` to a large value (e.g. 128) makes the
loop read label characters past the 32-byte directory entry and write up to that many
UTF-decoded characters into the caller-supplied ``label[]`` buffer, overflowing a
typical fixed-size label array (e.g. ``char label[12]``/``label[24]``) on the stack —
memory corruption with potential control-flow impact.

In Zephyr this is reachable only in downstream applications: ``f_getlabel`` is compiled
solely with ``CONFIG_FS_FATFS_EXTRA_NATIVE_API=y``, exFAT must be enabled, and no
in-tree Zephyr code calls it (application code supplies the buffer). It is nonetheless a
genuine defect in the vendored library, and because upstream FatFs is unmaintained for
security Zephyr carries the fix (clamp the label length) in its vendored copy so
opted-in applications are protected. Tracked upstream as CVE-2026-6687.

- `Zephyr project bug tracker GHSA-fxw6-w668-cgfh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fxw6-w668-cgfh>`_

This has been fixed in main for v4.5.0

:cve:`2026-15890`
-----------------

Under embargo until 2026-09-21

:cve:`2026-15891`
-----------------

NULL pointer dereference in Zephyr MQTT-SN client when removing a non-responsive gateway

The MQTT-SN client keepalive handler ``process_ping()`` in
``subsys/net/lib/mqtt_sn/mqtt_sn.c`` removes the gateway record after ``PINGREQ``
retries are exhausted. It invoked ``SYS_SLIST_PEEK_HEAD_CONTAINER(&client->gateways, gw,
next)`` but discarded the result. That macro is a pure expression that does not assign
to ``gw``, so ``gw`` retained its ``NULL`` initializer regardless of the list contents.

The code then dereferences the NULL ``gw`` (``gw->gw_id``) and passes it to
``mqtt_sn_gw_destroy()``, reaching ``k_mem_slab_free(&gateways, NULL)``. With
``CONFIG_MEM_SLAB_POINTER_VALIDATE`` enabled this triggers ``k_panic()``; in the default
configuration it performs a write through the NULL pointer (``*(char **)mem =
slab->free_list;``) and corrupts the slab free list. The outcome is a crash/kernel panic
or, on targets where address 0 is writable, silent memory-allocator corruption.

The vulnerable branch runs whenever the connected MQTT-SN gateway fails to answer
keepalive ``PINGREQ``\ s for the configured number of retries. This condition is
controlled by the remote peer: a malicious or compromised gateway, or an
on-path/adjacent attacker that advertises itself as a gateway and then stops responding
(or blackholes the real gateway's ``PINGRESP``\ s), forces the client into the defect.
MQTT-SN runs over UDP and no authentication is required.

The impact is a remotely triggerable denial of service (availability) of the affected
MQTT-SN client; there is no attacker-controlled data written. The sibling remover
``process_advertise()`` uses ``SYS_SLIST_FOR_EACH_CONTAINER_SAFE`` and is not affected.
The fix assigns the macro's return value to ``gw``.

- `Zephyr project bug tracker GHSA-c4g8-4f9p-4746
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c4g8-4f9p-4746>`_

This has been fixed in main for v4.5.0

- `PR 113142 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113142>`_

- `PR 113718 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113718>`_

- `PR 113723 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113723>`_

:cve:`2026-15892`
-----------------

Heap memory leak in mcumgr settings-management handlers on access-hook rejection leads to denial of service

The mcumgr SMP settings-management group handlers ``settings_mgmt_read()``,
``settings_mgmt_write()``, and ``settings_mgmt_delete()`` in
``subsys/mgmt/mcumgr/grp/settings_mgmt/src/settings_mgmt.c`` allocate a ``key_name``
buffer (and, for read, a ``data`` buffer) via ``k_malloc()`` when
``CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP`` is enabled, relying on the ``end:``
label to ``k_free()`` them. When ``CONFIG_MCUMGR_GRP_SETTINGS_ACCESS_HOOK`` is also
enabled and the application access hook rejects a request by returning status
``MGMT_CB_ERROR_RC``, the handler executed ``return ret_rc;`` directly, bypassing
``end:`` and leaking the heap allocation on every rejected request.

The settings handlers are reachable over the unauthenticated SMP transport (Bluetooth
LE, UART, or UDP, depending on product configuration). The access hook is the mechanism
applications use to deny unauthorized settings access, and ``MGMT_CB_ERROR_RC`` is a
common rejection style, so an attacker who can send ``settings
read``/``write``/``delete`` commands that the hook rejects triggers a heap leak on each
attempt.

Because the leaked memory is never reclaimed until reboot, a sustained stream of
rejected requests monotonically exhausts the kernel heap until ``k_malloc()`` fails,
denying mcumgr service and impacting any other heap consumer on the device — a denial of
service. The impact is availability-only; there is no memory corruption or information
disclosure. Only configurations that select the heap buffer type, enable the access
hook, and register a hook that returns ``MGMT_CB_ERROR_RC`` are affected (the default
stack buffer type cannot leak).

- `Zephyr project bug tracker GHSA-rq68-wgv4-hcq3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rq68-wgv4-hcq3>`_

This has been fixed in main for v4.5.0

- `PR 113178 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113178>`_

- `PR 113507 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113507>`_

- `PR 113506 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113506>`_

- `PR 113505 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113505>`_

:cve:`2026-15893`
-----------------

Zephyr IPv6 Neighbor Discovery zero reachable time from crafted Router Advertisement causes assertion/DoS

``net_if_ipv6_calc_reachable_time()`` in ``subsys/net/ip/net_if.c`` derives a randomized
ND reachable time from ``ipv6->base_reachable_time`` as ``min_reachable +
sys_rand32_get() % (max_reachable - min_reachable)``, where ``min_reachable = base/2``
and ``max_reachable = 3*base/2`` using integer division. When ``base_reachable_time`` is
``1``, both ``min_reachable`` and the modulus collapse so the function returns ``0``,
and ``net_if_ipv6_set_reachable_time()`` stores that ``0`` into
``ipv6->reachable_time``.

The ``base_reachable_time`` is attacker-controlled: ``handle_ra_input()`` in
``subsys/net/ip/ipv6_nbr.c`` accepts the Reachable Time field of an incoming Router
Advertisement whenever it is nonzero and ``<= MAX_REACHABLE_TIME``, so a single
unauthenticated, link-local RA carrying a Reachable Time of ``1`` drives the computed
reachable time to ``0``. Router Advertisements are unauthenticated by default and
require only adjacency to the target link.

When a neighbor is subsequently confirmed reachable,
``net_ipv6_nbr_set_reachable_timer()`` reads the value and executes ``NET_ASSERT(time,
"Zero reachable timeout!")``. On builds with ``CONFIG_ASSERT`` enabled this triggers a
fatal kernel assertion — a remote denial of service; on builds without assertions the
reachable timer is armed with ``K_MSEC(0)`` and fires immediately, forcing reachable
neighbors into perpetual re-solicitation (``STALE``), degrading Neighbor Discovery. The
impact is limited to availability; there is no memory-safety, confidentiality, or
integrity consequence.

- `Zephyr project bug tracker GHSA-8v32-9xf8-r765
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8v32-9xf8-r765>`_

This has been fixed in main for v4.5.0

- `PR 113226 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113226>`_

- `PR 113605 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113605>`_

- `PR 113686 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113686>`_

- `PR 113687 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113687>`_

:cve:`2026-15894`
-----------------

Under embargo until 2026-10-07

:cve:`2026-15923`
-----------------

Infinite loop denial of service in Zephyr SDIO byte-I/O from a card-supplied zero max_blk_size

The Zephyr SDIO subsystem function ``sdio_io_rw_extended_helper()`` in
``subsys/sd/sdio.c`` finishes transfers with a byte-I/O loop that uses ``size =
MIN(remaining, func->cis.max_blk_size)`` as the per-iteration step. The value
``func->cis.max_blk_size`` is decoded directly from the SDIO card's CIS FUNCE tuple in
``sdio_decode_cis()`` and is not validated. When a card reports a maximum block size of
zero, ``size`` is always ``0``, ``remaining`` never decreases, and the loop spins
forever.

The loop is reached from the public SDIO client API used by drivers, including
``sdio_read_fifo()``, ``sdio_write_fifo()``, and the incrementing register read/write
helpers, each of which enters the loop while holding the per-card mutex
``func->card->lock``. A card advertising ``max_blk_size == 0`` therefore hangs the
calling thread permanently on its first non-block-aligned transfer and never releases
the mutex, denying service to the SDIO peripheral (and any subsystem such as Wi-Fi that
depends on it) until the device is reset.

The malicious value must come from the SDIO card itself, so the defect is exploitable
where a removable SDIO/combo card slot lets an attacker insert a crafted or
malfunctioning card (a physical attack vector); on boards with a soldered SDIO
peripheral it is not attacker-influenceable. There is no memory-safety, confidentiality,
or integrity impact — only a permanent availability loss. The fix returns ``-EIO`` when
``func->cis.max_blk_size`` is zero, before the loop is entered.

- `Zephyr project bug tracker GHSA-4pvm-wrcp-jjf5
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4pvm-wrcp-jjf5>`_

This has been fixed in main for v4.5.0

- `PR 112628 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/112628>`_

- `PR 113730 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113730>`_

- `PR 113731 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113731>`_

- `PR 113732 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113732>`_

:cve:`2026-15924`
-----------------

Use-after-free / double-free from unsynchronized concurrent access to the TLS client session cache in Zephyr sockets

Zephyr's TLS socket layer in ``subsys/net/lib/sockets/sockets_tls.c`` keeps a single
process-global array, ``client_cache``, of cached client sessions that is shared by
every TLS socket context. The functions that mutate and read it —
``tls_session_save()``, ``tls_session_get()``, ``tls_session_cache_reset()``, and the
settings restore handler — allocate, free, and dereference each entry's heap buffer
(``entry->session``). Before the fix these accesses were serialized only by the
*per-socket* context mutex ``ctx->lock`` (assigned per socket in ``ctx_set_lock()``),
which provides no mutual exclusion between different sockets touching the shared cache.

Because ``CONFIG_NET_SOCKETS_TLS_MAX_CLIENT_SESSION_COUNT`` defaults to ``1``, any two
concurrent client sockets contend for the same slot. A thread in ``tls_session_get()``
reading ``entry->session`` inside ``mbedtls_ssl_session_load()`` can run concurrently
with another thread in ``tls_session_save()`` that selects the same entry for reuse and
executes ``mbedtls_free(entry->session)`` before reallocating — a use-after-free read,
and a double-free when two saves evict the same entry. Both corrupt the mbedTLS heap.
The cache is reached on ordinary client paths: at connect time via
``tls_session_store()``/``tls_session_restore()``, and (on ``main``) whenever a TLS 1.3
session ticket arrives during ``recv()``/``poll()`` via ``tls_session_store_current()``.

Exploitation requires an application that opts into per-socket client session caching
(the ``TLS_SESSION_CACHE`` socket option, off by default) and runs concurrent TLS client
connections on multiple threads; the timing that opens the window is influenced by the
remote peer(s), so a malicious or compromised server can raise session-ticket frequency
to widen it. The reliably-demonstrable impact is memory corruption leading to a crash or
heap corruption (denial of service). The fix adds a dedicated ``session_cache_lock``
mutex taken across every accessor of ``client_cache``, serializing all reads and frees
and closing the race.

- `Zephyr project bug tracker GHSA-wcgm-pq6x-v2gf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wcgm-pq6x-v2gf>`_

This has been fixed in main for v4.5.0

- `PR 113405 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113405>`_

- `PR 113736 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113736>`_

- `PR 113737 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113737>`_

- `PR 113738 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113738>`_

:cve:`2026-16147`
-----------------

it82xx2 USB device controller submits incomplete OUT transfer buffers, causing use-after-free and event-list corruption

The ITE IT82xx2 USB device-controller driver (``drivers/usb/udc/udc_it82xx2.c``)
mishandles multi-packet OUT transfers on non-control endpoints. In
``work_handler_out()`` the active transfer buffer is obtained with ``udc_buf_peek()``
(which does not dequeue it); when a full max-packet-size packet arrives but the buffer
still has tailroom (the transfer is not yet complete), the pre-fix code both re-arms the
endpoint to keep filling that same ``buf`` via ``work_handler_xfer_continue()`` and
simultaneously hands the same, still-being-filled buffer to the upper stack with
``udc_submit_ep_event()``.

Because ``udc_submit_ep_event()`` transfers ownership of the buffer to the USB device
stack (``usbd_event_carrier()`` appends ``&buf->node`` to ``uds_ctx->ep_events``, after
which the class handler processes and ``net_buf_unref()``\ s it), the driver continues
to DMA subsequent host-controlled OUT packets into a buffer the upper stack may already
have freed and recycled — a use-after-free write. In addition, since the buffer was
never dequeued, the completing packet runs ``udc_buf_get()`` on the same object and
submits it a second time, appending ``&buf->node`` to the event slist twice
(singly-linked-list corruption) and causing a double ``net_buf_unref()``.

The IT82xx2 is a USB peripheral controller, so the untrusted USB host controls
OUT-transfer packetization and can force this path against any non-control OUT endpoint
whose queued buffer exceeds one packet — an ordinary bulk/interrupt pattern. The driver
and USB device stack run in kernel context above the external host, giving the host a
device-side kernel heap-corruption primitive: a reliable denial of service and, because
the written bytes are attacker-controlled, plausible corruption of adjacent ``net_buf``
pool memory. The vector is physical (USB attach). The fix defers submission until the
buffer is completely filled and lets ``xfer_work_handler()`` drive continuation, so each
OUT buffer is submitted to the upper stack exactly once.

- `Zephyr project bug tracker GHSA-3q4g-7w6j-8qfp
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3q4g-7w6j-8qfp>`_

This has been fixed in main for v4.5.0

- `PR 113463 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113463>`_

- `PR 113847 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113847>`_

- `PR 113850 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113850>`_

- `PR 113849 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113849>`_

:cve:`2026-16148`
-----------------

Kernel panic in the it82xx2 USB device controller driver via re-initialization of a busy delayable work item

The ITE it82xx2 USB device-controller driver initialized its bus-suspend detection work
with ``k_work_init_delayable(&priv->suspended_work, suspended_handler)`` inside
``it82xx2_enable()`` (the driver's ``.enable`` op) in ``drivers/usb/udc/udc_it82xx2.c``.
This work item is scheduled essentially continuously while the USB bus is active: the
interrupt handler reschedules it on every SOF frame and ``suspended_handler()``
reschedules itself, so its timeout node is normally linked in the kernel timeout list /
a workqueue pending queue.

``k_work_init_delayable()`` (``kernel/work.c``) unconditionally overwrites the entire
``k_work_delayable`` structure, including its timeout and queue linkage, with no busy
check. Because ``it82xx2_disable()`` does not cancel the work, a normal
disable-then-enable cycle re-runs ``api->enable()`` (``udc_enable()`` only rejects a
redundant enable, not a re-enable after disable) and re-initializes the still-pending
work in place, corrupting the kernel timeout/workqueue linked lists and causing a kernel
panic.

An external USB host — for example a host performing USB DFU detach (``dfu-util
--detach``) or forcing repeated attach/reset/re-enumeration — drives the
``udc_disable()``/``udc_enable()`` transitions and controls suspend/resume timing, so it
can arrange for the suspend work to be pending across a re-enable. This yields an
unauthenticated denial of service (kernel panic) reachable across the USB boundary from
a removable, physically-connected host, with no confidentiality or integrity impact
demonstrated.

The fix moves the ``k_work_init_delayable()`` call into the one-time preinit function so
the work is initialized exactly once, eliminating the re-initialization of an in-use
item.

- `Zephyr project bug tracker GHSA-fvp9-j2pq-477x
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-fvp9-j2pq-477x>`_

This has been fixed in main for v4.5.0

- `PR 113463 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/113463>`_

- `PR 113847 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/113847>`_

- `PR 113850 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/113850>`_

- `PR 113849 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/113849>`_

:cve:`2026-16511`
-----------------

Under embargo until 2026-11-02

:cve:`2026-16512`
-----------------

Under embargo until 2026-09-18

:cve:`2026-16513`
-----------------

Under embargo until 2026-09-25

:cve:`2026-16514`
-----------------

Under embargo until 2026-09-18

:cve:`2026-16515`
-----------------

Under embargo until 2026-09-18

:cve:`2026-17050`
-----------------

Under embargo until 2026-09-19

:cve:`2026-17051`
-----------------

Under embargo until 2026-09-20

:cve:`2026-17052`
-----------------

Under embargo until 2026-09-20

:cve:`2026-17053`
-----------------

Under embargo until 2026-09-20

:cve:`2026-17054`
-----------------

Under embargo until 2026-09-21

:cve:`2026-2411`
----------------

Bluetooth GATT notify/indicate enforces the wrong attribute's permissions, bypassing encryption/authentication requirements on characteristic values

Zephyr's Bluetooth host declares a GATT characteristic as two consecutive attributes: a
Characteristic Declaration whose permission is hard-coded to ``BT_GATT_PERM_READ``, and
a Characteristic Value attribute that carries the application-specified security
permissions (e.g. ``BT_GATT_PERM_READ_ENCRYPT`` / ``READ_AUTHEN`` / ``READ_LESC``). The
public notify and indicate APIs explicitly accept either attribute, and passing the
declaration is the documented, common idiom. Before sending each notification or
indication, the host re-checks link security with ``bt_gatt_check_perm()`` against
``params->attr`` in ``gatt_notify()``, ``gatt_indicate()``, and
``gatt_notify_multiple_verify_params()`` (``subsys/bluetooth/host/gatt.c``).

When the application passed the Characteristic Declaration attribute, the host correctly
redirected the value handle but left ``params->attr`` pointing at the declaration, so
the security check evaluated the declaration's permissions (no security required)
instead of the value's. As a result the encryption/authentication/LESC requirement
configured on the characteristic value was skipped. The Notify-Multiple path
additionally used a mask that omitted the LE Secure Connections requirement.

A remote peer triggers the disclosure by connecting (optionally without pairing or
encryption) and writing the Client Characteristic Configuration descriptor to enable
notifications or indications, causing the server to emit the protected value over a link
that has not reached the required security level. The impact is information disclosure /
access-control bypass for characteristic values the application intended to expose only
over a secured link; exposure depends on the application declaring
encrypt/authen-required notify/indicate characteristics and on the CCC being writable at
a lower security tier. There is no memory-safety or availability impact.

The fix adds ``bt_gatt_attr_resolve_value()``, which maps a declaration attribute to the
following value attribute before the permission check, and switches the Notify-Multiple
path to the full ``BT_GATT_PERM_READ_ENCRYPT_MASK`` so the LESC requirement is also
enforced.

- `Zephyr project bug tracker GHSA-4w3r-v9q9-4462
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4w3r-v9q9-4462>`_

This has been fixed in main for v4.5.0

- `PR 108371 fix for main
  <https://github.com/zephyrproject-rtos/zephyr/pull/108371>`_

- `PR 111535 fix for v4.4
  <https://github.com/zephyrproject-rtos/zephyr/pull/111535>`_

- `PR 111536 fix for v4.3
  <https://github.com/zephyrproject-rtos/zephyr/pull/111536>`_

- `PR 111620 fix for v3.7
  <https://github.com/zephyrproject-rtos/zephyr/pull/111620>`_

:cve:`2026-18413`
-----------------

Under embargo until 2026-09-26

:cve:`2026-18414`
-----------------

Under embargo until 2026-09-26

:cve:`2026-18415`
-----------------

Under embargo until 2026-09-26

:cve:`2026-18416`
-----------------

Under embargo until 2026-09-26

:cve:`2026-18417`
-----------------

Under embargo until 2026-09-27

:cve:`2026-18418`
-----------------

Under embargo until 2026-10-11

:cve:`2026-18746`
-----------------

Under embargo until 2026-09-28

:cve:`2026-18747`
-----------------

Under embargo until 2026-09-28

:cve:`2026-18748`
-----------------

Under embargo until 2026-10-20

:cve:`2026-19184`
-----------------

Under embargo until 2026-10-04

:cve:`2026-19185`
-----------------

Under embargo until 2026-10-04

:cve:`2026-19186`
-----------------

Under embargo until 2026-10-07

:cve:`2026-19569`
-----------------

Under embargo until 2026-10-09

:cve:`2026-19570`
-----------------

Under embargo until 2026-10-09

:cve:`2026-19571`
-----------------

Under embargo until 2026-10-09

:cve:`2026-19574`
-----------------

Under embargo until 2026-10-09

:cve:`2026-19575`
-----------------

Under embargo until 2026-10-09

:cve:`2026-19576`
-----------------

Under embargo until 2026-10-10

:cve:`2026-19577`
-----------------

Under embargo until 2026-10-10

:cve:`2026-19595`
-----------------

Under embargo until 2026-10-18

:cve:`2026-19669`
-----------------

Under embargo until 2026-10-10

:cve:`2026-19673`
-----------------

Under embargo until 2026-10-14

:cve:`2026-19676`
-----------------

Under embargo until 2026-10-17

:cve:`2026-19735`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19736`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19737`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19738`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19739`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19740`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19741`
-----------------

Under embargo until 2026-10-22

:cve:`2026-19742`
-----------------

Under embargo until 2026-10-25

:cve:`2026-19809`
-----------------

Under embargo until 2026-10-19

:cve:`2026-19935`
-----------------

Under embargo until 2026-10-11

:cve:`2026-19936`
-----------------

Under embargo until 2026-10-12

:cve:`2026-19937`
-----------------

Under embargo until 2026-10-12

:cve:`2026-19938`
-----------------

Under embargo until 2026-10-12

:cve:`2026-19939`
-----------------

Under embargo until 2026-10-13

:cve:`2026-19940`
-----------------

Under embargo until 2026-10-13

:cve:`2026-19947`
-----------------

Under embargo until 2026-10-21

:cve:`2026-75083`
-----------------

Under embargo until 2026-10-14

:cve:`2026-75084`
-----------------

Under embargo until 2026-10-14

:cve:`2026-75085`
-----------------

Under embargo until 2026-10-14

:cve:`2026-76787`
-----------------

Under embargo until 2026-10-16

:cve:`2026-76788`
-----------------

Under embargo until 2026-10-16

:cve:`2026-77684`
-----------------

Under embargo until 2026-10-18

:cve:`2026-77685`
-----------------

Under embargo until 2026-10-18

:cve:`2026-78116`
-----------------

Under embargo until 2026-10-20

:cve:`2026-78117`
-----------------

Under embargo until 2026-10-20

:cve:`2026-78118`
-----------------

Under embargo until 2026-10-20

:cve:`2026-78119`
-----------------

Under embargo until 2026-10-20

:cve:`2026-79976`
-----------------

Under embargo until 2026-10-21

:cve:`2026-79977`
-----------------

Under embargo until 2026-10-22

:cve:`2026-79978`
-----------------

Under embargo until 2026-10-23

:cve:`2026-79979`
-----------------

Under embargo until 2026-10-23

:cve:`2026-79980`
-----------------

Under embargo until 2026-10-23

:cve:`2026-79981`
-----------------

Under embargo until 2026-10-23

:cve:`2026-79982`
-----------------

Under embargo until 2026-10-23

:cve:`2026-81038`
-----------------

Under embargo until 2026-10-24

:cve:`2026-81039`
-----------------

Under embargo until 2026-10-24

:cve:`2026-82388`
-----------------

Under embargo until 2026-10-26

:cve:`2026-82389`
-----------------

Under embargo until 2026-10-26

:cve:`2026-82390`
-----------------

Under embargo until 2026-10-26

:cve:`2026-82391`
-----------------

Under embargo until 2026-10-26

:cve:`2026-82961`
-----------------

Under embargo until 2026-10-27

:cve:`2026-82962`
-----------------

Under embargo until 2026-10-27

:cve:`2026-85032`
-----------------

Under embargo until 2026-10-30

:cve:`2026-85033`
-----------------

Under embargo until 2026-10-31

:cve:`2026-85034`
-----------------

Under embargo until 2026-10-31

:cve:`2026-85035`
-----------------

Under embargo until 2026-10-31

:cve:`2026-85036`
-----------------

Under embargo until 2026-10-31

:cve:`2026-86086`
-----------------

Under embargo until 2026-12-01

:cve:`2026-86092`
-----------------

Under embargo until 2026-12-03

:cve:`2026-87038`
-----------------

Under embargo until 2026-11-02

:cve:`2026-87039`
-----------------

Under embargo until 2026-11-02

:cve:`2026-87040`
-----------------

Under embargo until 2026-11-02

:cve:`2026-87041`
-----------------

Under embargo until 2026-11-02

:cve:`2026-87042`
-----------------

Under embargo until 2026-11-03

:cve:`2026-87043`
-----------------

Under embargo until 2026-11-03

:cve:`2026-87044`
-----------------

Under embargo until 2026-11-03

:cve:`2026-87045`
-----------------

Under embargo until 2026-11-06

:cve:`2026-90585`
-----------------

Under embargo until 2026-11-07

:cve:`2026-90586`
-----------------

Under embargo until 2026-11-08

:cve:`2026-90587`
-----------------

Under embargo until 2026-11-08

:cve:`2026-90588`
-----------------

Under embargo until 2026-11-08

:cve:`2026-90589`
-----------------

Under embargo until 2026-11-08

:cve:`2026-90590`
-----------------

Under embargo until 2026-11-09

:cve:`2026-90591`
-----------------

Under embargo until 2026-11-09

:cve:`2026-90832`
-----------------

Under embargo until 2026-11-10

:cve:`2026-90833`
-----------------

Under embargo until 2026-11-10

:cve:`2026-90834`
-----------------

Under embargo until 2026-11-10

:cve:`2026-91007`
-----------------

Under embargo until 2026-11-12

---

--- METRICS ---
- Files Extracted: 100
- Estimated Token Budget: ~947757 tokens
- Canonical Reference: https://codewiki.google/github.com/zephyrproject-rtos/zephyr
