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 byCAN_STD_ID_MASK
) andCAN_MAX_EXT_ID
(replaced byCAN_EXT_ID_MASK
) CAN API macros have been removed.The deprecated
can_get_min_bitrate()
(replaced bycan_get_bitrate_min()
) andcan_get_max_bitrate()
(replaced bycan_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 thebt_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
Common
Introduced
CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL
, which can be selected when an architecture implemented and enabled its ownarch_current_thread()
andarch_current_thread_set()
functions for faster retrieval of the current CPU’s thread pointer. When enabled,_current
variable will be routed to thearch_current_thread()
(GitHub #80716).
ARC
ARM
ARM64
RISC-V
Implements
arch_current_thread_set()
&arch_current_thread()
, which can be enabled byCONFIG_RISCV_CURRENT_VIA_GP
(GitHub #80716).
Xtensa
native/POSIX
CONFIG_NATIVE_APPLICATION
has been deprecated.For the native_sim target
CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT
has been switched ton
by default, and this option has been deprecated.
Kernel
Bluetooth
Audio
Host
CONFIG_BT_BUF_ACL_RX_COUNT
has been deprecated andCONFIG_BT_BUF_ACL_RX_COUNT_EXTRA
has been added.
HCI Drivers
Mesh
Introduced a
bt_mesh_health_cli::update
callback which is used to update the message published periodically.
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).
mimxrt1050_evk
andmimxrt1060_evk
revisions forqspi
andhyperflash
have been converted into variants.mimxrt1060_evkb
has been converted into revisionB
ofmimxrt1060_evk
.Enabled USB, RTC on NXP
frdm_mcxn236
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.
Twister
Test Case names for Ztest now include Ztest suite name, so 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 (GitHub #80088).The
--no-detailed-test-id
command line option also shortens Ztest Test Case names excluding its Test Scenario name prefix which is the same as the parent Test Suite id (GitHub #82302). Twister XML reports have full testsuite name astestcase.classname property
resolving possible duplicate testcase elements intwister_report.xml
testsuite container.
Drivers and Sensors
ADC
Battery
CAN
Charger
Clock control
Counter
DAC
Disk
Display
Added flag
frame_incomplete
todisplay_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
NXP MCUX FlexSPI: Add support for 4-byte addressing mode of Micron MT25Q flash family (GitHub #82532)
FPGA
Extracted from
lattice,ice40-fpga
the compatible and driver forlattice,ice40-fpga-bitbang
. This replaces the originalload_mode
property from the binding, which selected either the SPI or GPIO bitbang load mode.
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
Added new driver for Silabs Series 2 (
silabs,dbus-pinctrl
).
PWM
Regulators
Reset
RTC
RTIO
SDHC
Sensors
Serial
SPI
Stepper
Added driver for ADI TMC2209.
adi,tmc2209
.Added driver for TI DRV8424.
ti,drv8424
.Added
CONFIG_STEP_DIR_STEPPER
to enable common functions for step/dir steppers.
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:
Removed the implicit enabling of the
CONFIG_NVS
Kconfig option by theCONFIG_NET_L2_OPENTHREAD
symbol.
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 theCONFIG_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 azsock_
string.
Syslog:
TCP:
Websocket:
Wi-Fi:
hostap: Removed the unused default Crypto module
CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO
Kconfig option.
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
Fixed incorrect alpha values in samples/drivers/display. (GitHub #81184)
Added samples/modules/lvgl/screen_transparency. (GitHub #81184)