Zephyr 4.2.0 (Working Draft)
We are pleased to announce the release of Zephyr version 4.2.0.
Major enhancements with this release include:
Initial support for the Renesas RX 32-bit architecture has been added, including a QEMU-based board target.
The USB device stack now supports USB Video Class (UVC).
The networking stack now includes full support for the MQTT 5.0 protocol.
Zbus graduates to stable status with the release of API version v1.0.0.
Bluetooth Classic stack now supports Hands-Free Profile (HFP) for both Audio Gateway (AG) and Hands-Free (HF) roles.
96 new boards have been added since the last release.
An overview of the changes required or recommended when migrating your application from Zephyr v4.1.0 to Zephyr v4.2.0 can be found in the separate migration guide.
The following sections provide detailed lists of changes by component.
API Changes
Removed APIs and options
Removed the deprecated the
net_buf_put()
andnet_buf_get()
API functions.Removed the deprecated
include/zephyr/net/buf.h
header file.Removed the
--disable-unrecognized-section-test
Twister option. Test has been removed and the option became the default behavior.Removed the deprecated
kscan
subsystem.Removed
meas,ms5837
and replaced withmeas,ms5837-30ba
andmeas,ms5837-02ba
.Removed the
get_ctrl
driver API fromvideo_driver_api
.Removed
CONFIG_I3C_USE_GROUP_ADDR
and support for group addresses for I3C devices.
Deprecated APIs and options
The scheduler Kconfig options CONFIG_SCHED_DUMB and CONFIG_WAITQ_DUMB were renamed and deprecated. Use
CONFIG_SCHED_SIMPLE
andCONFIG_WAITQ_SIMPLE
instead.The
CONFIG_LWM2M_ENGINE_MESSAGE_HEADER_SIZE
Kconfig option has been removed. The required header size should be included in the message size, configured usingCONFIG_LWM2M_COAP_MAX_MSG_SIZE
. Special care should be taken to ensure that used CoAP block sizeCONFIG_LWM2M_COAP_BLOCK_SIZE
can fit given message size with headers. Previous headroom was 48 bytes.TLS credential type
TLS_CREDENTIAL_SERVER_CERTIFICATE
was renamed and deprecated, useTLS_CREDENTIAL_PUBLIC_CERTIFICATE
instead.arduino_uno_r4_minima
andarduino_uno_r4_wifi
board targets have been deprecated in favor of a newarduino_uno_r4
board with revisions (arduino_uno_r4@minima
andarduino_uno_r4@wifi
).esp32c6_devkitc
board target has been deprecated and renamed toesp32c6_devkitc/esp32c6/hpcore
.xiao_esp32c6
board target has been deprecated and renamed toxiao_esp32c6/esp32c6/hpcore
.CONFIG_HAWKBIT_DDI_NO_SECURITY
Kconfig option has been deprecated, because support for anonymous authentication had been removed from the hawkBit server in version 0.8.0.The
CONFIG_BT_CONN_TX_MAX
Kconfig option has been deprecated. The number of pending TX buffers is now aligned with theCONFIG_BT_BUF_ACL_TX_COUNT
Kconfig option.The
CONFIG_CRYPTO_TINYCRYPT_SHIM
Kconfig option has been removed. It was deprecated since Zephyr 4.0, and users were advised to migrate to alternative crypto backends.The
CONFIG_BT_MESH_USES_TINYCRYPT
Kconfig option has been removed. It was deprecated since Zephyr 4.0. Users were advised to useCONFIG_BT_MESH_USES_MBEDTLS_PSA
orCONFIG_BT_MESH_USES_TFM_PSA
instead.
Stable API changes in this release
The API signature of
net_mgmt
event handlernet_mgmt_event_handler_t
and request handlernet_mgmt_request_handler_t
has changed. The event value type is changed fromuint32_t
touint64_t
.
New APIs and options
Architectures
NIOS2 Architecture was removed from Zephyr.
ARCH_HAS_VECTOR_TABLE_RELOCATION
CONFIG_SRAM_VECTOR_TABLE
moved fromzephyr/Kconfig.zephyr
tozephyr/arch/Kconfig
and added dependencies to it.
Kernel
I2C
I3C
SPI
Bluetooth
Audio
Host
LE Connection Subrating is no longer experimental.
Remove deletion of the classic bonding information from
bt_unpair()
, and addbt_br_unpair()
.Remove query of the classic bonding information from
bt_foreach_bond()
, and addbt_br_foreach_bond()
.Add a new parameter
limited
tobt_br_set_discoverable()
to support limited discoverable mode for the classic.Enable retransmission and flow control for the classic L2CAP, including
CONFIG_BT_L2CAP_RET
,CONFIG_BT_L2CAP_FC
,CONFIG_BT_L2CAP_ENH_RET
, andCONFIG_BT_L2CAP_STREAM
.Improve the classic hands-free uint, including
CONFIG_BT_HFP_HF_CODEC_NEG
,CONFIG_BT_HFP_HF_ECNR
,CONFIG_BT_HFP_HF_3WAY_CALL
,CONFIG_BT_HFP_HF_ECS
,CONFIG_BT_HFP_HF_ECC
,CONFIG_BT_HFP_HF_VOICE_RECG_TEXT
,CONFIG_BT_HFP_HF_ENH_VOICE_RECG
,CONFIG_BT_HFP_HF_VOICE_RECG
,CONFIG_BT_HFP_HF_HF_INDICATORS
,CONFIG_BT_HFP_HF_HF_INDICATOR_ENH_SAFETY
, andCONFIG_BT_HFP_HF_HF_INDICATOR_BATTERY
.Improve the classic hands-free audio gateway, including
CONFIG_BT_HFP_AG_CODEC_NEG
,CONFIG_BT_HFP_AG_ECNR
,CONFIG_BT_HFP_AG_3WAY_CALL
,CONFIG_BT_HFP_AG_ECS
,CONFIG_BT_HFP_AG_ECC
,CONFIG_BT_HFP_AG_VOICE_RECG_TEXT
,CONFIG_BT_HFP_AG_ENH_VOICE_RECG
,CONFIG_BT_HFP_AG_VOICE_TAG
,CONFIG_BT_HFP_AG_HF_INDICATORS
,CONFIG_BT_HFP_AG_HF_INDICATOR_ENH_SAFETY
,CONFIG_BT_HFP_AG_HF_INDICATOR_BATTERY
, andCONFIG_BT_HFP_AG_REJECT_CALL
.Add a callback function
get_ongoing_call()
tobt_hfp_ag_cb
.Support the classic L2CAP signaling echo request and response feature, including
bt_l2cap_br_echo_cb
,bt_l2cap_br_echo_cb_register()
,bt_l2cap_br_echo_cb_unregister()
,bt_l2cap_br_echo_req()
, andbt_l2cap_br_echo_rsp()
.
Build system
Sysbuild
Firmware loader image setup/selection support added to sysbuild when using
SB_CONFIG_MCUBOOT_MODE_FIRMWARE_UPDATER
viaSB_CONFIG_FIRMWARE_LOADER
e.g.SB_CONFIG_FIRMWARE_LOADER_IMAGE_SMP_SVR
for selecting SMP server.Single app RAM load support added to sysbuild using
SB_CONFIG_MCUBOOT_MODE_SINGLE_APP_RAM_LOAD
.
Display
Management
MCUmgr
Firmware loader support added to image mgmt group using
CONFIG_MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER
.Optional boot mode (using retention boot mode) added to OS group reset command using
CONFIG_MCUMGR_GRP_OS_RESET_BOOT_MODE
.
Networking:
CoAP
DHCPv4
DNS
HTTP
IPv4
LwM2M
Implemented Greater Than, Less Than and Step observe attributes handling (see
CONFIG_LWM2M_MAX_NOTIFIED_NUMERICAL_RES_TRACKED
).
Misc
MQTT
OpenThread
Moved OpenThread-related Kconfig options from subsys/net/l2/openthread/Kconfig to modules/openthread/Kconfig.
Refactored OpenThread networking API, see the OpenThread section of the migration guide.
SNTP
Sockets
Added a new documentation page for Socket Services library.
New socket options:
Wi-Fi
Added a new section to the Wi-Fi Management documentation (
doc/connectivity/networking/api/wifi.rst
) with step-by-step instructions for generating test certificates for Wi-Fi using FreeRADIUS scripts. This helps users reproduce the process for their own test environments.Changed the hostap IPC mechanism from socketpair to k_fifo. Depending on the enabled Wi-Fi configuration options, this can save up to 6-8 kB memory when using native Wi-Fi stack.
zperf
zperf_upload_params.data_loader
Power management
Sensor
Stepper
Storage
Counter
Sys
- LoRaWAN
Video
VIDEO_CID_AUTO_WHITE_BALANCE
and other controls from the BASE control class.VIDEO_CID_EXPOSURE_ABSOLUTE
and other controls from the CAMERA control class.VIDEO_PIX_FMT_Y10
andY12
,Y14
,Y16
variantsVIDEO_PIX_FMT_SRGGB10P
and12P
,14P
variants, for all 4 bayer variants.video_buffer.index
fieldvideo_ctrl_query.int_menu
fieldVIDEO_MIPI_CSI2_DT_NULL
and other MIPI standard values
PCIe
Debug
Core Dump
CONFIG_DEBUG_COREDUMP_THREAD_STACK_TOP
, enabled by default for ARM Cortex M whenCONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN
is selected.
UpdateHub
USB
Other
ZBus
Zbus has achieved stable status with the release of API version v1.0.0.
Runtime observers can work without heap. Now it is possible to choose between static, dynamic, and none allocation for the runtime observers nodes.
Runtime observers using
CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_NONE
must use the new functionzbus_chan_add_obs_with_node()
.
New Boards
Adafruit Industries, LLC
Adafruit Feather ESP32S2 (
adafruit_feather_esp32s2
)Adafruit Feather ESP32S2 TFT (
adafruit_feather_esp32s2_tft
)Adafruit Feather ESP32S2 TFT Reverse (
adafruit_feather_esp32s2_tft_reverse
)Adafruit Feather ESP32S3 (
adafruit_feather_esp32s3
)Adafruit Feather ESP32S3 TFT (
adafruit_feather_esp32s3_tft
)Adafruit ESP32-S3 Reverse TFT Feather (
adafruit_feather_esp32s3_tft_reverse
)
Advanced Micro Devices (AMD), Inc.
Versal 2 RPU development board (
versal2_rpu
)Versal NET RPU development board (
versalnet_rpu
)
Aesc Silicon
ElemRV-N (
elemrv
)
Ai-Thinker Co., Ltd.
Ai-Thinker WB2-12F development board (
ai_wb2_12f
)
Ambiq Micro, Inc.
Apollo510 SOC Evaluation Board (
apollo510_evb
)
Analog Devices, Inc.
max32657evkit (
max32657evkit
)
Arduino
Arduino Nano Matter (
arduino_nano_matter
)Arduino Portenta C33 (
arduino_portenta_c33
)
ARM Ltd.
MPS4 (
mps4
)
BeagleBoard.org Foundation
PocketBeagle 2 (
pocketbeagle_2
)
Blues Wireless
Cygnet (
cygnet
)
Bouffalo Lab (Nanjing) Co., Ltd.
BL604E IOT DVK development board (
bl604e_iot_dvk
)
Doctors of Intelligence & Technology
DT-BL10 coexistence Module Development Kit (
dt_bl10_devkit
)
ENE Technology, Inc.
ENE KB1062_EVB (
kb1062_evb
)
Espressif Systems
ESP32-DevKitC (
esp32_devkitc
)
Ezurio
BL54L15 DVK (
bl54l15_dvk
)BL54L15u DVK (
bl54l15u_dvk
)
FANKE Technology Co., Ltd.
FK743M5-XIH6 (
fk743m5_xih6
)
IAR Systems AB
STM32F429II-ACA (
stm32f429ii_aca
)
Infineon Technologies
XMC7200 Evaluation Kit (
kit_xmc72_evk
)
Intel Corporation
Bartlett Lake P CRB (
intel_btl_s_crb
)
ITE Tech. Inc.
IT51XXX series (
it515xx_evb
)
KWS Computersysteme Gmbh
Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd
T-Dongle S3 (
tdongle_s3
)TTGO TBeam (
ttgo_tbeam
)TTGO T-OI-PLUS (
ttgo_toiplus
)T-Watch S3 (
twatch_s3
)
M5Stack
Fire (
m5stack_fire
)
Microchip Technology Inc.
MEC17xxEVB ASSY6941 (
mec_assy6941
)SAMA7G54 Evaluation Kit (
sama7g54_ek
)
MikroElektronika d.o.o.
MikroE Quail (
mikroe_quail
)
Nordic Semiconductor
nRF54LM20 DK (
nrf54lm20dk
)
Nuvoton Technology Corporation
NPCK3M8K_EVB (
npck3m8k_evb
)NUMAKER M55M1 (
numaker_m55m1
)
NXP Semiconductors
FRDM-MCXA153 (
frdm_mcxa153
)FRDM-MCXA166 (
frdm_mcxa166
)FRDM-MCXA276 (
frdm_mcxa276
)i.MX943 EVK (
imx943_evk
)MCX-N9XX-EVK (
mcx_n9xx_evk
)S32K148EVB-Q176 (
s32k148_evb
)
Octavo Systems LLC
OSD32MP1-BRK (
osd32mp1_brk
)
OpenHW Group
cv32a6_genesys_2 (
cv32a6_genesys_2
)cv64a6_genesys_2 (
cv64a6_genesys_2
)
Pimoroni Ltd.
Pimoroni Pico Plus2 (
pico_plus2
)
QEMU
QEMU Emulation for Renesas RX (
qemu_rx
)
Raytac Corporation
AN54L15Q-DB (
raytac_an54l15q_db
)AN7002Q-DB-5340 (
raytac_an7002q_db
)MDBT50Q-CX-40 Dongle (
raytac_mdbt50q_cx_40_dongle
)
Renesas Electronics Corporation
RA8P1 Evaluation Kit (
ek_ra8p1
)Renesas Starter Kit for RX130 (
rsk_rx130
)RZ/A2M Evaluation Kit (
rza2m_evk
)RZ/A3UL SMARC Evaluation Board Kit (
rza3ul_smarc
)RZ/G2L SMARC Evaluation Board Kit (
rzg2l_smarc
)RZ/G2LC SMARC Evaluation Board Kit (
rzg2lc_smarc
)RZ/G2UL SMARC Evaluation Board Kit (
rzg2ul_smarc
)Renesas Starter Kit+ for RZ/N2L (
rzn2l_rsk
)Renesas Starter Kit+ for RZ/T2L (
rzt2l_rsk
)Renesas Starter Kit+ for RZ/T2M (
rzt2m_rsk
)RZ/V2H Evaluation Board Kit (
rzv2h_evk
)RZ/V2L SMARC Evaluation Board Kit (
rzv2l_smarc
)RZ/V2N Evaluation Board Kit (
rzv2n_evk
)
Seeed Technology Co., Ltd
XIAO MG24 (
xiao_mg24
)XIAO RA4M1 (
xiao_ra4m1
)
sensry.io
Ganymed Starter Kit (SK) (
ganymed_sk
)
Shanghai Ruiside Electronic Technology Co., Ltd.
ART-Pi2 (
art_pi2
)RA8D1 Vision Board (
ra8d1_vision_board
)
Silicon Laboratories
SiWx917 Wi-Fi 6 and Bluetooth LE 8 MB Flash + 8 MB ext PSRAM Radio Board (SLWRB4342A) (
siwx917_rb4342a
)EFR32xG21 2.4 GHz 20 dBm (SLWRB4180B) (
slwrb4180b
)
Space Cubics, LLC
SC-OBC Module A1 (
scobc_a1
)
STMicroelectronics
Nucleo F439ZI (
nucleo_f439zi
)Nucleo U385RG Q (
nucleo_u385rg_q
)Nucleo WBA65RI (
nucleo_wba65ri
)STM32H757I Eval (
stm32h757i_eval
)STM32MP135F-DK Discovery (
stm32mp135f_dk
)STM32MP257F-EV1 Evaluation Board (
stm32mp257f_ev1
)STM32U5G9J Discovery Kit 1 (
stm32u5g9j_dk1
)STM32U5G9J Discovery Kit (
stm32u5g9j_dk2
)
Texas Instruments
TI AM243x-EVM (
am243x_evm
)MSPM0G3507 Launchpad (
lp_mspm0g3507
)SK-AM64 (
sk_am64
)
u-blox
EVK-IRIS-W106-RW612 (
ubx_evk_iris_w1
)
Variscite Ltd.
DART-MX8M-PLUS (
imx8mp_var_dart
)VAR-SOM-MX8M-PLUS (
imx8mp_var_som
)DART-MX93 (
imx93_var_dart
)VAR-SOM-MX93 (
imx93_var_som
)
Waveshare Electronics
ESP32-S3-Matrix (
esp32s3_matrix
)RP2040-Plus (
rp2040_plus
)
WeAct Studio
BluePill Plus CH32V203 (
bluepillplus_ch32v203
)STM32F446 Core Board V1.1 (
weact_stm32f446_core
)
WinChipHead
WCH CH32V003F4P6 Development Board (
ch32v003f4p6_dev_board
)WCH CH32V006EVT (
ch32v006evt
)WCH CH32V303VCT6_EVT (
ch32v303vct6_evt
)WCH LinkW (
linkw
)
WIZnet Co., Ltd.
W5500-EVB-Pico2 (
w5500_evb_pico2
)
Würth Elektronik GmbH.
Ophelia-IV DK (
ophelia4ev
)
New shields
New Drivers
ADC
Audio
Auxiliary Display
CAN
Charger
Clock control
Comparator
Counter
CPU
Cryptographic accelerator
DAC
Debug
Display
DMA
EDAC
eSPI
Ethernet
Firmware
Flash controller
File system
Fuel gauge
GNSS
GPIO
IEEE 802.15.4 HDLC RCP interface
I2C
I2S
I3C
IEEE 802.15.4
Input
Interrupt controller
LED
LED
Mailbox
MDIO
Memory controller
MFD
MIPI DBI
Miscellaneous
Modem
Multi-bit SPI
MTD
Networking
Octal SPI
Pin control
Power management
Power domain
PSI5
PWM
Regulator
Reset controller
RNG
RTC
SDHC
Sensors
SENT
Serial controller
SPI
Stepper
System controller
Tachometer
TCPC
Timer
USB
Video
Virtio
Watchdog
Wi-Fi
New Samples
Other notable changes
Added support for Armv8.1-M MPU’s PXN (Privileged Execute Never) attribute. With this, the MPU attributes for
__ramfunc
and__ram_text_reloc
were modified such that, PXN attribute is set for these regions if compiled withCONFIG_ARM_MPU_PXN
andCONFIG_USERSPACE
. This results in a change in behaviour for code being executed from these regions because, if these regions have pxn attribute set in them, they cannot be executed in privileged mode.Removed support for Nucleo WBA52CG board (
nucleo_wba52cg
) since it is NRND (Not Recommended for New Design) and it is not supported anymore in the STM32CubeWBA from version 1.1.0 (July 2023). The migration to Nucleo WBA55CG (nucleo_wba55cg
) is recommended instead.Updated Mbed TLS to version 3.6.4 (from 3.6.2). Release notes for 3.6.3 and 3.6.4 can be found below:
Updated TF-M to version 2.1.2 (from 2.1.1). The release notes can be found at: https://trustedfirmware-m.readthedocs.io/en/tf-mv2.1.2/releases/2.1.2.html
Updated all boards with an external I2C connectors (Qwiic, Stemma, Grove…) to use the
zephyr_i2c
devicetree label. This allows using the existing Shields build system feature (west build --shield
) to interface any connectorized i2c module to any board with a compatible i2c port, regardless of the specific i2c connector branding.