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 and options

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

  • The 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 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 can_calc_prescaler() CAN API function has been removed.

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

  • Removed video_pix_fmt_bpp() function that was returning a byte count and only supported 8-bit depth to video_bits_per_pixel() returning the bit count and supporting any color depth.

  • CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO

  • The CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE option has been removed after being deprecated in favor of CONFIG_PM_DEVICE_SYSTEM_MANAGED.

  • The z_pm_save_idle_exit() PM API function has been removed.

Deprecated APIs and options

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

  • CONFIG_NATIVE_APPLICATION has been deprecated.

  • Deprecated the stream_flash_erase_page() from Stream Flash API. The same functionality can be achieved using flash_area_erase() or flash_erase(). Nevertheless erasing of a device, while stream flash is supposed to do so, as configured, will result in data lost from stream flash. There are only two situations where device should be erased directly:

    1. when Stream Flash is not configured to do erase on its own

    2. when erase is used for removal of a data prior or after Stream Flash uses the designated area.

  • For the native_sim target CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT has been switched to n by default, and this option has been deprecated.

  • CONFIG_BT_BUF_ACL_RX_COUNT

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

  • The TinyCrypt library has been deprecated as the upstream version is no longer maintained. PSA Crypto API is now the recommended cryptographic library for Zephyr.

New APIs and options

New Boards

New Drivers

New Samples

Other notable changes

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

  • Test case names for Ztest now include the Ztest suite name, meaning 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.

  • The --no-detailed-test-id command line option can be used to shorten the test case name by excluding the test scenario name prefix which is the same as the parent test suite id.