Zephyr 4.4.0

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

Major enhancements with this release include:

OpenRISC support

Zephyr now supports the OpenRISC architecture.

Toolchain updates: Zephyr SDK 1.0 and C17

Zephyr 4.4 is the first release to support Zephyr SDK 1.0, with an upgraded GNU toolchain, experimental Clang/LLVM support, and multi-platform QEMU and OpenOCD host tools.

Zephyr now defaults to C17 as its minimum required C standard version.

Networking enhancements

The Wi-Fi management stack now supports Wi-Fi P2P (Wi-Fi Direct), allowing devices to discover and connect directly without a traditional access point.

The networking stack also adds support for WireGuard VPN, enabling secure, low-overhead tunneling.

USB host

Experimental USB host support has been significantly expanded with a new host-class driver framework and support for UVC cameras on Zephyr devices acting as USB hosts.

New driver classes

Zephyr 4.4 adds several new driver APIs, including:

Zbus async listeners and proxy agents

Zbus async listeners enable non-blocking observer callbacks via workqueues.

Zbus proxy agents extend publish-subscribe messaging across CPU and domain boundaries over IPC.

Pressure-based CPU frequency scaling

The experimental CPU frequency scaling subsystem now includes a pressure-based policy that adjusts CPU frequency according to scheduler load.

ARM Cortex-M context switching performance improvements

A new context switch implementation for ARM Cortex-M, enabled via CONFIG_USE_SWITCH, delivers significant performance improvements.

NAND flash support

A new Flash Translation Layer (FTL) disk driver (zephyr,ftl-dhara) provides wear leveling and bad block management and enables NAND flash memories to be utilized as standard disk devices.

Developer experience improvements

This release adds several new tools and improvements to development and testing workflows:

  • A new dashboard consolidates build information such as RAM and ROM footprint, Devicetree configuration, subsystem initialization levels, and more in a single report.

  • A new display driver for QEMU targets simplifies development of display-based applications in environments where the native simulator is unavailable.

  • A new heap hardening mechanism (CONFIG_SYS_HEAP_HARDENING) provides multiple levels of runtime protection against heap corruption.

  • New scope-based cleanup helpers provide RAII/defer-style automatic cleanup in C when leaving scope.

  • The new ztest benchmarking framework provides a standardized way to create cycle-accurate benchmarks, with automated data collection, overhead compensation, and statistical reporting.

Expanded board support

This release adds support for 121 new boards and 31 new shields.

An overview of the changes required or recommended when migrating your application from Zephyr v4.3.0 to Zephyr v4.4.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

  • Architectures

    • Xtensa

      • Removed as these are architectural features:

        • CONFIG_XTENSA_MMU_DOUBLE_MAP

        • CONFIG_XTENSA_RPO_CACHE

        • CONFIG_XTENSA_CACHED_REGION

        • CONFIG_XTENSA_UNCACHED_REGION

  • Bluetooth

  • Mbed TLS

    • CONFIG_PSA_WANT_KEY_TYPE_DES

    • CONFIG_PSA_WANT_ECC_SECP_K1_192

    • CONFIG_PSA_WANT_ECC_SECP_R1_192

    • CONFIG_PSA_WANT_ECC_SECP_R1_224

    • CONFIG_CUSTOM_MBEDTLS_CFG_FILE

    • CONFIG_MBEDTLS_CHACHAPOLY_AEAD_ENABLED

    • CONFIG_MBEDTLS_CIPHER_AES_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CAMELLIA_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CCM_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CHACHA20_ENABLED

    • CONFIG_MBEDTLS_CIPHER_DES_ENABLED

    • CONFIG_MBEDTLS_CIPHER_GCM_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_CBC_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_CTR_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_XTS_ENABLED

    • CONFIG_MBEDTLS_CMAC

    • CONFIG_MBEDTLS_DHM_C

    • CONFIG_MBEDTLS_ECDH_C

    • CONFIG_MBEDTLS_ECDSA_C

    • CONFIG_MBEDTLS_ECDSA_DETERMINISTIC

    • CONFIG_MBEDTLS_ECJPAKE_C

    • CONFIG_MBEDTLS_ECP_ALL_ENABLED

    • CONFIG_MBEDTLS_ECP_C

    • CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_CURVE448_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED

    • CONFIG_MBEDTLS_GENPRIME_ENABLED

    • CONFIG_MBEDTLS_HKDF_C

    • CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED

    • CONFIG_MBEDTLS_MD5

    • CONFIG_MBEDTLS_PKCS1_V15

    • CONFIG_MBEDTLS_PKCS1_V21

    • CONFIG_MBEDTLS_POLY1305

    • CONFIG_MBEDTLS_RSA_C

    • CONFIG_MBEDTLS_SHA1

    • CONFIG_MBEDTLS_SHA224

    • CONFIG_MBEDTLS_SHA256

    • CONFIG_MBEDTLS_SHA384

    • CONFIG_MBEDTLS_SHA512

    • CONFIG_MBEDTLS_USE_PSA_CRYPTO

    • CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR has been renamed to CONFIG_MBEDTLS_PSA_DRIVER_GET_ENTROPY.

    • CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT has been replaced by the underlying options it used to enable: CONFIG_MBEDTLS_PEM_PARSE_C, CONFIG_MBEDTLS_PEM_WRITE_C and CONFIG_MBEDTLS_BASE64_C.

    • CONFIG_MBEDTLS_SERVER_NAME_INDICATION has been renamed to CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION.

    • CONFIG_MBEDTLS_TEST has been renamed to CONFIG_MBEDTLS_DEBUG_C.

  • Random

Deprecated APIs and options

New APIs and options

New Boards

New Shields

New Drivers

New Samples

Devicetree

Kconfig

  • Added new preprocessor function dt_highest_controller_irq_number (GitHub #104819)

Kernel

Libraries / Subsystems

  • LoRa/LoRaWAN

  • Mbed TLS

  • Zbus

    • Added async listener support. Async listeners execute in a workqueue context instead of the publisher’s thread, enabling non-blocking operations without requiring a dedicated subscriber thread.

    • Added zbus Async Listeners.

    • Added experimental proxy-agent communication with IPC backend support for forwarding channel data across domains.

    • Added zbus Proxy agent - IPC.

    • Added the zbus_chan_from_name() function. Retrieve a zbus channel from its name string.

    • Added the zbus_async_listener_set_work_queue() function. Set the work queue for an async listener.

    • Added the zbus_chan_pub_stats_msg_age() function. Get the message age in milliseconds since the last publish.

    • Clarified observer priority documentation and fixed spelling and grammar.

    • Updated observer types image in documentation.

    • Filtered out tests that are not SMP aware.

Other notable changes