This is the documentation for the latest (master) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

Zephyr 2.5.0 (Working Draft)

We are pleased to announce the release of Zephyr RTOS version 2.5.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

  • Removed SETTINGS_USE_BASE64 support as its been deprecated for more than two releases.

  • The 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 curent session.

  • Changed vcnl4040 dts binding default for property ‘proximity-trigger’. Changed the default to match the HW POR state for this property.

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

Deprecated in this release

  • ARM Musca-A board and SoC support deprecated and planned to be removed in 2.6.0.

Removed APIs in this release

Stable API changes in this release



  • ARC

  • ARM

    • AARCH32

    • AARCH64


  • RISC-V

  • x86

Boards & SoC Support

  • Added support for these SoC series:

  • Made these changes in other SoC series:

  • Changes for ARC boards:

  • Added support for these ARM boards:

  • 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

  • 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

  • Improved support for additional toolchains:

  • Devicetree

    • DT_ENUM_IDX_OR: new macro

    • 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 Devicetree access from C/C++. Information on flash partitions has moved to Flash map.

Libraries / Subsystems

  • Disk

  • Management

    • MCUmgr

    • updatehub

  • Settings

  • Random

  • POSIX subsystem

  • Power management

  • Logging

  • LVGL

  • Shell

  • Storage

  • Tracing

  • Debug


  • HALs are now moved out of the main tree as external modules and reside in their own standalone repositories.


  • 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 boostrapping 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 ini, by disableing HW stack protection (temporary hack).

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

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


Tests and Samples