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 Renesas RX

The Renesas RX architecture is now supported, including a QEMU-based board target.

USB Video Class Driver

The USB device stack now supports USB Video Class (UVC) allowing camera devices and other image/video sources to be exposed as standard USB video devices. See USB Video webcam to get started.

Twister Power Harness

A new Twister harness enables measurement of the power consumption of the device under test and ensures it remains within a given tolerance.

MQTT 5.0

The networking stack now includes full support for the MQTT 5.0 protocol.

Bluetooth Classic improvements

The Bluetooth Classic stack now includes support for Hands-Free Profile (HFP) for both Audio Gateway (AG) and Hands-Free (HF) roles.

Zbus

The Zbus library graduates to stable status with the release of API version v1.0.0.

Expanded Board Support

Support for 96 new boards and 22 new shields has been added in this 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 net_buf_put() and net_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 with meas,ms5837-30ba and meas,ms5837-02ba.

  • Removed the get_ctrl driver API from video_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 and CONFIG_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 using CONFIG_LWM2M_COAP_MAX_MSG_SIZE. Special care should be taken to ensure that the CoAP block size used (CONFIG_LWM2M_COAP_BLOCK_SIZE) can fit the given message size with headers. Previous headroom was 48 bytes.

  • TLS credential type TLS_CREDENTIAL_SERVER_CERTIFICATE was renamed and deprecated, use TLS_CREDENTIAL_PUBLIC_CERTIFICATE instead.

  • arduino_uno_r4_minima and arduino_uno_r4_wifi board targets have been deprecated in favor of a new arduino_uno_r4 board with revisions (arduino_uno_r4@minima and arduino_uno_r4@wifi).

  • esp32c6_devkitc board target has been deprecated and renamed to esp32c6_devkitc/esp32c6/hpcore.

  • xiao_esp32c6 board target has been deprecated and renamed to xiao_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 the CONFIG_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 use CONFIG_BT_MESH_USES_MBEDTLS_PSA or CONFIG_BT_MESH_USES_TFM_PSA instead.

Stable API changes in this release

New APIs and options

  • Architectures

    • NIOS2 Architecture was removed from Zephyr.

    • ARCH_HAS_VECTOR_TABLE_RELOCATION

    • CONFIG_SRAM_VECTOR_TABLE moved from zephyr/Kconfig.zephyr to zephyr/arch/Kconfig and added dependencies to it.

  • Kernel

New Boards

New shields

New Drivers

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 with CONFIG_ARM_MPU_PXN and CONFIG_USERSPACE. This results in a change in behavior 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 is no longer supported 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.

  • Reverted deprecation of receiver option in Nordic UART driver. Receiver mode which is using additional TIMER peripheral to count received bytes was previously deprecated (e.g. CONFIG_CONFIG_UART_0_NRF_HW_ASYNC). However, it turned out that this previously mode is the only one that is capable of reliably receive data without Hardware Flow Control so it should stay in the driver.