This is the documentation for the latest (main) 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.7.0 (Working draft)

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

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

Deprecated in this release

Modified in this release

  • The following Bluetooth macros and structures in 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:`CONFIG_BT_PERIPHERAL_PREF_LATENCY`

  • The CONFIG_BT_CTLR_SLAVE_FEAT_REQ_SUPPORT Kconfig option is now :kconfig:`CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT`

  • The CONFIG_BT_CTLR_SLAVE_FEAT_REQ Kconfig option is now :kconfig:`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_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

Kernel

Architectures

  • ARC

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

    • AARCH64

  • x86

Bluetooth

  • Audio

  • Host

  • Mesh

    • Added return value for opcode callback

  • Bluetooth LE split software Controller

  • HCI Driver

Boards & SoC Support

  • Added support for these SoC series:

  • Removed support for these SoC series:

  • Made these changes in other SoC series:

  • Changes for ARC boards:

  • Added support for these ARM boards:

  • Added support for these ARM64 boards:

  • Removed support for these ARM boards:

  • Removed support for these X86 boards:

  • Made these changes in other boards:

  • Added support for these following shields:

Drivers and Sensors

  • ADC

  • Bluetooth

  • CAN

  • Clock Control

  • Console

  • Counter

  • DAC

    • Added support for Microchip MCP4725

  • Disk

    • Added SDMMC support on STM32L4+

  • Display

    • Added support for ST7735R

  • Disk

  • DMA

    • Added support on STM32G0 and STM32H7

  • EEPROM

    • Added support for EEPROM emulated in flash.

  • ESPI

    • Added support for Microchip eSPI SAF

  • Ethernet

  • Flash

  • GPIO

  • Hardware Info

  • I2C

  • I2S

  • IEEE 802.15.4

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

  • Modem

  • PWM

  • Sensor

  • Serial

  • SPI

  • Timer

  • USB

  • Watchdog

  • WiFi

Networking

  • CoAP:

  • DHCPv4:

  • DNS:

  • HTTP:

  • IPv4:

  • LwM2M:

  • Misc:

  • OpenThread:

  • Socket:

  • TCP:

  • TLS:

USB

Build and Infrastructure

  • Devicetree

    • Various compatibles had incorrect vendor prefixes in their compatible properties; the following changes were made to fix these.

      • nios,i2c is now altr,nios2-i2c

      • colorway,lpd8803 is now greeled,lpd8803

      • colorway,lpd8806 is now greeled,lpd8806

      • grove,light is now seeed,grove-light

      • grove,temperature is now seeed,grove-temperature

      • max,max30101 is now maxim,max30101

      • ublox,sara-r4 is now u-blox,sara-r4

      • xtensa,core-intc is now cdns,xtensa-core-intc

      Out of tree users of these compatibles 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";
              ...
      };
      
  • West (extensions)

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

  • Logging

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