Zephyr 4.1.0 (Working Draft)

We are pleased to announce the release of Zephyr version 4.1.0.

Major enhancements with this release include:

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 migration guide.

The following sections provide detailed lists of changes by component.

API Changes

Removed APIs in this release

  • The deprecated Bluetooth HCI driver API has been removed. It has been replaced by a Bluetooth HCI APIs that follows the normal Zephyr driver model.

  • The deprecated CAN_MAX_STD_ID (replaced by CAN_STD_ID_MASK) and CAN_MAX_EXT_ID (replaced by CAN_EXT_ID_MASK) CAN API macros have been removed.

  • The deprecated can_get_min_bitrate() (replaced by can_get_bitrate_min()) and can_get_max_bitrate() (replaced by can_get_bitrate_max()) CAN API functions have been removed.

  • The deprecated can_calc_prescaler() CAN API function has been removed.

Deprecated in this release

  • Deprecated the 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 bt_conn_cb.disconnected callback is invoked.

  • Deprecated TinyCrypt library. The reasons for this are (GitHub #43712):

    • The upstream version of this library is no longer maintained.

    • Reducing the number of cryptographic libraries in Zephyr to reduce maintenance overhead.

    • The PSA Crypto API is the recommended cryptographic library for Zephyr.

Architectures

Kernel

Bluetooth

Boards & SoC Support

  • Added support for these SoC series:

  • Made these changes in other SoC series:

  • Added support for these boards:

  • Made these board changes:

    • All HWMv1 board name aliases which were added as deprecated in v3.7 are now removed (GitHub #82247).

  • Added support for the following shields:

Build system and Infrastructure

  • 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 scripts/utils/twister_to_list.py script to automatically migrate Twister configuration files.

Drivers and Sensors

  • ADC

  • Battery

  • CAN

  • Charger

  • Clock control

  • Counter

  • DAC

  • Disk

  • Display

    • Added flag frame_incomplete to display_write that indicates whether a write is the last write of the frame, allowing display drivers to implement double buffering / tearing enable signal handling (GitHub #81250)

    • Added frame_incomplete handling to SDL display driver (zephyr,sdl-dc) (GitHub #81250)

    • Added transparency support to SDL display driver (zephyr,sdl-dc) (GitHub #81184)

  • Ethernet

  • Flash

  • FPGA

  • GNSS

  • GPIO

  • Hardware info

  • I2C

  • I2S

  • I3C

  • Input

  • LED

    • Added a new set of devicetree based LED APIs, see led_dt_spec.

    • lp5569: added use of auto-increment functionality.

    • lp5569: implemented write_channels api.

    • lp5569: demonstrate led_write_channels in the sample.

  • LED Strip

  • LoRa

  • Mailbox

  • MDIO

  • MFD

  • Modem

  • MIPI-DBI

  • MSPI

  • Pin control

  • PWM

  • Regulators

  • Reset

  • RTC

  • RTIO

  • SDHC

  • Sensors

  • Serial

  • SPI

  • Stepper

  • USB

  • Video

    • Changed include/zephyr/drivers/video-controls.h to have control IDs (CIDs) matching those present in the Linux kernel.

  • Watchdog

  • Wi-Fi

Networking

  • ARP:

  • CoAP:

  • Connection manager:

  • DHCPv4:

  • DHCPv6:

  • DNS/mDNS/LLMNR:

  • gPTP/PTP:

  • HTTP:

  • IPSP:

  • IPv4:

  • IPv6:

  • LwM2M:

  • Misc:

  • MQTT:

  • Network Interface:

  • OpenThread:

  • PPP

  • Shell:

  • Sockets:

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

  • Syslog:

  • TCP:

  • Websocket:

  • Wi-Fi:

  • zperf:

USB

Devicetree

Kconfig

Libraries / Subsystems

  • Debug

  • Demand Paging

  • Formatted output

  • Management

  • Logging

  • Modem modules

  • Power management

  • Crypto

    • The Kconfig symbol CONFIG_MBEDTLS_PSA_STATIC_KEY_SLOTS was added to allow Mbed TLS to use statically allocated buffers to store key material in its PSA Crypto core instead of heap-allocated ones. This can help reduce (or remove, if no other component makes use of it) heap memory requirements from the final application.

    • The Kconfig symbol CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT was added to allow selecting the number of key slots available in the Mbed TLS implementation of the PSA Crypto core. It defaults to 16. Since each slot consumes RAM memory even if unused, this value can be tweaked in order to minimize RAM usage.

  • CMSIS-NN

  • FPGA

  • Random

  • SD

  • State Machine Framework

  • Storage

  • Task Watchdog

  • POSIX API

  • LoRa/LoRaWAN

  • ZBus

HALs

  • Nordic

  • STM32

  • ADI

  • Espressif

MCUboot

OSDP

Trusted Firmware-M

LVGL

  • Added frame_incomplete support to indicate whether a write is the last write of the frame (GitHub #81250)

Tests and Samples