Zephyr 2.6.0 (Working Draft)

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

Major enhancements with this release include:

The following sections provide detailed lists of changes by component.

Known issues

You can check all currently known issues by listing them using the GitHub interface and listing all issues with the bug label.

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 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 disconnected() callback of 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

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



  • ARC

  • 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.

    • AARCH64


  • RISC-V

  • x86

Boards & SoC Support

  • Added support for these SoC series:

  • Removed support for these SoC series:

    • ARM Musca-A

  • Made these changes in other SoC series:

  • Changes for ARC boards:

  • Added support for these ARM boards:

    • MPS3-AN547

  • Removed support for these ARM boards:

    • ARM V2M Musca-A

    • Nordic nRF5340 PDK

  • Made these changes in other boards:

  • Added support for these following shields:

Drivers and Sensors

  • ADC

  • Audio

  • Bluetooth

  • CAN

  • Clock Control

  • Console

  • Counter

  • Crypto

  • DAC

  • Debug

  • Display

  • DMA


  • Entropy

  • ESPI

  • Ethernet

  • 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.

  • GPIO

  • Hardware Info

  • I2C

  • I2S

  • IEEE 802.15.4

  • Interrupt Controller

  • IPM

  • Keyboard Scan

  • LED

  • LED Strip

  • LoRa

  • Modem

  • PECI

  • Pinmux

  • PS/2

  • PWM

  • Sensor

  • Serial

  • SPI

  • Timer

  • USB

  • Video

  • Watchdog

  • WiFi



  • Host

  • Mesh

  • BLE split software Controller

  • HCI Driver

Build and Infrastructure

Libraries / Subsystems

  • Disk

  • Management

    • MCUmgr

    • updatehub

  • Settings

  • Random

  • POSIX subsystem

  • 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.

  • Logging

  • LVGL

  • Shell

  • Storage

  • 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.

  • Debug

  • 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 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


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:

    filter: dt_compat_enabled_with_alias("gpio-leds", "led0")


    filter: dt_enabled_alias_with_parent_compat("led0", "gpio-leds")