doc/releases/release-notes-3.7.rst
:orphan:
.. _zephyr_3.7:
Zephyr 3.7.0 ############
We are pleased to announce the release of Zephyr version 3.7.0.
This release is the last non-maintenance 3.x release and, as such, will be the next
:ref:Long Term Support (LTS) release <release_process_lts>.
Major enhancements with this release include:
overhauled hardware model <hw_model_v2> has been introduced.
It changes the way both SoCs and boards are named, defined and constructed in Zephyr.
Additional information can be found in the :ref:board_porting_guide.HTTP Server <http_server_interface> library, and associated service API,
allow to easily implement HTTP/1.1 and HTTP/2 servers in Zephyr. Resources can be registered
statically or dynamically, and WebSocket support is included.POSIX support <posix_support> has been extended, with most Options of the IEEE 1003-2017
:ref:System Interfaces <posix_system_interfaces_required> receiving support, as well as most
Options and Option groups required for :ref:PSE51 <posix_aep_pse51>,
:ref:PSE52 <posix_aep_pse52>, and :ref:PSE53 <posix_aep_pse53>.read-then-decode approach <sensor-read-and-decode> that enables more types of sensors and
data flows than the previous fetch/get APIs.LLEXT Extension Developer Kit (EDK) <llext_build_edk> makes it easier to develop and
integrate custom extensions into Zephyr, including outside of the Zephyr tree.Native simulator <native_sim> now supports leveraging the native host networking
stack without having to rely on a complex setup of the host environment.psa_crypto has been adopted as a replacement
for TinyCrypt and provides enhanced security and performance.Precision Time Protocol <ptp_interface> (PTP, IEEE
1588) allows to synchronize time across devices with sub-microsecond accuracy.vscode_ide and :ref:clion_ide.An overview of the changes required or recommended when migrating your application from Zephyr
v3.6.0 to Zephyr v3.7.0 can be found in the separate :ref:migration guide<migration_3.7>.
While you may refer to release notes from previous 3.x releases for a full change log, other major enhancements and changes since previous LTS release, Zephyr 2.7.0, include:
Added support for Picolibc as the new default C library.
Added support for the following types of hardware peripherals:
Added support for snippets. Snippets are common configuration settings that can be used across platforms.
Added support for Linkable Loadable Extensions (LLEXT).
Summary of breaking changes (refer to release notes and migration guides from previous release notes for more details):
All Zephyr public headers have been moved to :file:include/zephyr, meaning they need to be
prefixed with <zephyr/...> when included.
Pinmux API has been removed. Pin control needs to be used as its replacement, refer to
:ref:pinctrl-guide for more details.
The following deprecated or experimental features have been removed:
http_server_interface as a replacement.The following sections provide detailed lists of changes by component.
Security Vulnerability Related
The following CVEs are addressed by this release:
More detailed information can be found in: https://docs.zephyrproject.org/latest/security/vulnerabilities.html
CVE-2024-3077 Zephyr project bug tracker GHSA-gmfv-4vfh-2mh8 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gmfv-4vfh-2mh8>_
CVE-2024-3332 Zephyr project bug tracker GHSA-jmr9-xw2v-5vf4 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jmr9-xw2v-5vf4>_
CVE-2024-4785: Under embargo until 2024-08-07
CVE-2024-5754: Under embargo until 2024-09-04
CVE-2024-5931: Under embargo until 2024-09-10
CVE-2024-6135: Under embargo until 2024-09-11
CVE-2024-6137: Under embargo until 2024-09-11
CVE-2024-6258: Under embargo until 2024-09-05
CVE-2024-6259: Under embargo until 2024-09-12
CVE-2024-6442: Under embargo until 2024-09-22
CVE-2024-6443: Under embargo until 2024-09-22
CVE-2024-6444: Under embargo until 2024-09-22
API Changes
The Bluetooth subsystem specific debug symbols are removed. They have been replaced with the Zephyr logging ones.
Removed deprecated pcie_probe and pcie_bdf_lookup functions from the PCIe APIs.
Removed deprecated CONFIG_EMUL_EEPROM_AT2X Kconfig option.
Removed pm_device_state_lock, pm_device_state_is_locked and pm_device_state_unlock
functions from the Device PM APIs.
Removed deprecated MCUmgr transport API functions: zephyr_smp_rx_req,
zephyr_smp_alloc_rsp and zephyr_smp_free_buf.
Bluetooth advertiser options :code:BT_LE_ADV_OPT_USE_NAME and
:code:BT_LE_ADV_OPT_FORCE_NAME_IN_AD are now deprecated. That means the following macro are
deprecated:
BT_LE_ADV_CONN_NAMEBT_LE_ADV_CONN_NAME_ADBT_LE_ADV_NCONN_NAMEBT_LE_EXT_ADV_CONN_NAMEBT_LE_EXT_ADV_SCAN_NAMEBT_LE_EXT_ADV_NCONN_NAMEBT_LE_EXT_ADV_CODED_NCONN_NAMEApplication developers will now need to set the advertised name themselves by updating the advertising data or the scan response data.
CAN
can_calc_prescaler API function, as it allows for bitrate
errors. Bitrate errors between nodes on the same network leads to them drifting apart after the
start-of-frame (SOF) synchronization has taken place, leading to bus errors.can_get_min_bitrate and :c:func:can_get_max_bitrate API functions in
favor of :c:func:can_get_bitrate_min and :c:func:can_get_bitrate_max.CAN_MAX_STD_ID and :c:macro:CAN_MAX_EXT_ID macros in favor of
:c:macro:CAN_STD_ID_MASK and :c:macro:CAN_EXT_ID_MASK.PM
CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE. Similar behavior can be achieved
using :kconfig:option:CONFIG_PM_DEVICE_SYSTEM_MANAGED... _zephyr_3.7_posix_api_deprecations:
POSIX API
Deprecated :c:macro:PTHREAD_BARRIER_DEFINE has been removed.
Deprecated :c:macro:EFD_IN_USE and :c:macro:EFD_FLAGS_SET have been removed.
In efforts to use Kconfig options that map directly to the Options and Option Groups in IEEE 1003.1-2017, the following Kconfig options have been deprecated (replaced by):
CONFIG_EVENTFD_MAX (:kconfig:option:CONFIG_ZVFS_EVENTFD_MAX)CONFIG_FNMATCH (:kconfig:option:CONFIG_POSIX_C_LIB_EXT)CONFIG_GETOPT (:kconfig:option:CONFIG_POSIX_C_LIB_EXT)
* :kconfig:option:CONFIG_MAX_PTHREAD_COUNT (:kconfig:option:CONFIG_POSIX_THREAD_THREADS_MAX)CONFIG_MAX_PTHREAD_KEY_COUNT (:kconfig:option:CONFIG_POSIX_THREAD_KEYS_MAX)CONFIG_MAX_TIMER_COUNT (:kconfig:option:CONFIG_POSIX_TIMER_MAX)CONFIG_POSIX_LIMITS_RTSIG_MAX (:kconfig:option:CONFIG_POSIX_RTSIG_MAX)CONFIG_POSIX_CLOCK (:kconfig:option:CONFIG_POSIX_CLOCK_SELECTION,
:kconfig:option:CONFIG_POSIX_CPUTIME, :kconfig:option:CONFIG_POSIX_MONOTONIC_CLOCK,
:kconfig:option:CONFIG_POSIX_TIMERS, and :kconfig:option:CONFIG_POSIX_TIMEOUTS)CONFIG_POSIX_FS (:kconfig:option:CONFIG_POSIX_FILE_SYSTEM)CONFIG_POSIX_MAX_FDS (:kconfig:option:CONFIG_POSIX_OPEN_MAX and
:kconfig:option:CONFIG_ZVFS_OPEN_MAX)CONFIG_POSIX_MAX_OPEN_FILES (:kconfig:option:CONFIG_POSIX_OPEN_MAX and
:kconfig:option:CONFIG_ZVFS_OPEN_MAX)CONFIG_POSIX_MQUEUE (:kconfig:option:CONFIG_POSIX_MESSAGE_PASSING)CONFIG_POSIX_PUTMSG (:kconfig:option:CONFIG_XOPEN_STREAMS)CONFIG_POSIX_SIGNAL (:kconfig:option:CONFIG_POSIX_SIGNALS)CONFIG_POSIX_SYSCONF (:kconfig:option:CONFIG_POSIX_SINGLE_PROCESS)CONFIG_POSIX_UNAME (:kconfig:option:CONFIG_POSIX_SINGLE_PROCESS)CONFIG_PTHREAD (:kconfig:option:CONFIG_POSIX_THREADS)CONFIG_PTHREAD_BARRIER (:kconfig:option:CONFIG_POSIX_BARRIERS)CONFIG_PTHREAD_COND (:kconfig:option:CONFIG_POSIX_THREADS)CONFIG_PTHREAD_IPC (:kconfig:option:CONFIG_POSIX_THREADS)CONFIG_PTHREAD_KEY (:kconfig:option:CONFIG_POSIX_THREADS)CONFIG_PTHREAD_MUTEX (:kconfig:option:CONFIG_POSIX_THREADS)CONFIG_PTHREAD_RWLOCK (:kconfig:option:CONFIG_POSIX_READER_WRITER_LOCKS)CONFIG_PTHREAD_SPINLOCK (:kconfig:option:CONFIG_POSIX_SPIN_LOCKS)CONFIG_SEM_NAMELEN_MAX (:kconfig:option:CONFIG_POSIX_SEM_NAMELEN_MAX)CONFIG_SEM_VALUE_MAX (:kconfig:option:CONFIG_POSIX_SEM_VALUE_MAX)CONFIG_TIMER (:kconfig:option:CONFIG_POSIX_TIMERS)CONFIG_TIMER_DELAYTIMER_MAX (:kconfig:option:CONFIG_POSIX_DELAYTIMER_MAX)Please see the :ref:POSIX API migration guide <zephyr_3.7_posix_api_migration>.
SPI
Deprecated :c:func:spi_is_ready API function has been removed.
Deprecated :c:func:spi_transceive_async API function has been removed.
Deprecated :c:func:spi_read_async API function has been removed.
Deprecated :c:func:spi_write_async API function has been removed.
Architectures
ARC
ARM
ARM64
Implemented symbol names in the backtraces, enable by selecting :kconfig:option:CONFIG_SYMTAB
Add compiler tuning for Cortex-R82
RISC-V
The fatal error message triggered from a fault now contains the callee-saved-registers states.
Implemented stack unwinding
Frame-pointer can be selected to enable precise stack traces at the expense of slightly increased size and decreased speed.
Symbol names can be enabled by selecting :kconfig:option:CONFIG_EXCEPTION_STACK_TRACE_SYMTAB
Xtensa
Added support to save/restore HiFi AudioEngine registers.
Added support to utilize MPU.
Added support to automatically generate interrupt handlers.
Added support to generate vector table at build time to be included in the linker script.
Added kconfig :kconfig:option:CONFIG_XTENSA_BREAK_ON_UNRECOVERABLE_EXCEPTIONS to guard
using break instruction for unrecoverable exceptions. Enabling the break instruction via
this kconfig may result in an infinite interrupt storm which may hinder debugging efforts.
Fixed an issue where passing the 7th argument via syscall was handled incorrectly.
Fixed an issue where :c:func:arch_user_string_nlen accessing unmapped memory resulted
in an unrecoverable exception.
Kernel
Added :c:func:k_uptime_seconds function to simplify k_uptime_get() / 1000 usage.
Added :c:func:k_realloc, that uses kernel heap to implement traditional :c:func:realloc
semantics.
Devices can now store devicetree metadata such as nodelabels by turning on
:kconfig:option:CONFIG_DEVICE_DT_METADATA. This option may be useful in
e.g. shells as devices can be obtained using human-friendly names thanks to
APIs like :c:func:device_get_by_dt_nodelabel.
Any device initialization can be deferred if its associated devicetree node
has the special zephyr,deferred-init property set. The device can be
initialized later in time by using :c:func:device_init.
The declaration of statically allocated thread stacks has been updated to utilize
:c:macro:K_THREAD_STACK_LEN for both single thread stack declaration and array thread
stack declarations. This ensures correct alignment for all thread stacks. For user
threads, this may increase the size of the statically allocated stack objects depending
on architecture alignment requirements.
Fix an edge case deadlock in :c:func:k_thread_abort (and join)
where racing ISRs on SMP systems could become stuck spinning to
signal each other's interrupted threads.
Fix a bug where :kconfig:option:CONFIG_SCHED_SCALABLE and
:kconfig:option:CONFIG_SCHED_DEADLINE would corrupt the
scheduling queue when used together.
Bluetooth
Audio
Removed err from :c:struct:bt_bap_broadcast_assistant_cb.recv_state_removed as it was
redundant.
The broadcast_audio_assistant sample has been renamed to bap_broadcast_assistant. The broadcast_audio_sink sample has been renamed to bap_broadcast_sink. The broadcast_audio_source sample has been renamed to bap_broadcast_source. The unicast_audio_client sample has been renamed to bap_unicast_client. The unicast_audio_server sample has been renamed to bap_unicast_server. The public_broadcast_sink sample has been renamed to pbp_public_broadcast_sink. The public_broadcast_source sample has been renamed to pbp_public_broadcast_source.
The CAP Commander and CAP Initiator now no longer require CAS to be discovered for
:code:BT_CAP_SET_TYPE_AD_HOC sets. This allows applications to use these APIs on e.g.
BAP Unicast Servers that do not implement the CAP Acceptor role.
Host
Added Nordic UART Service (NUS), enabled by the :kconfig:option:CONFIG_BT_ZEPHYR_NUS.
This Service exposes the ability to declare multiple instances of the GATT service,
allowing multiple serial endpoints to be used for different purposes.
Implemented Hands-free Audio Gateway (AG), enabled by the :kconfig:option:CONFIG_BT_HFP_AG.
It works as a device that is the gateway of the audio. The typical device acting as Audio
Gateway is a cellular phone. It controls the device (Hands-free Unit), that is the remote
audio input and output mechanism.
Implemented Advanced Audio Distribution Profile (A2DP) and Audio/Video Distribution Transport
Protocol (AVDTP), A2DP is enabled by :kconfig:option:CONFIG_BT_A2DP, AVDTP is enabled
by :kconfig:option:CONFIG_BT_AVDTP. They implement the protocols and procedures that
realize distribution of audio content of high quality in mono, stereo, or multi-channel modes.
A typical use case is the streaming of music content from a stereo music player to headphones
or speakers. The audio data is compressed in a proper format for efficient use of the limited
bandwidth.
Reworked the transmission path for data and commands. The "BT TX" thread has been removed, along with the buffer pools for HCI fragments and L2CAP segments. All communication with the Controller is now exclusively done in the system workqueue context.
:kconfig:option:CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER and
:kconfig:option:CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER now depend on
:kconfig:option:CONFIG_BT_CONN as they do not work without connections.
Improve :c:func:bt_foreach_bond to support Bluetooth Classic key traversal.
HCI Drivers
migration_3.7 for more information.CONFIG_BT_NXP_NW612.Boards & SoC Support
Added support for these SoC series:
Made these changes in other SoC series:
Intel ACE Audio DSP: Use dedicated registers to report boot status instead of arbitrary memory.
ITE: Rename the Kconfig symbol for all ITE SoC variants.
STM32: Enabled ART Accelerator, I-cache, D-cache and prefetch on compatible series.
STM32H5: Added support for Stop mode and :kconfig:option:CONFIG_PM.
STM32WL: Decreased Sub-GHz SPI frequency from 12 to 8MHz.
STM32C0: Added support for :kconfig:option:CONFIG_POWEROFF.
STM32U5: Added support for Stop3 mode.
Synopsys:
NXP IMX8M: added resource domain controller support
NXP s32k146: set RTC clock source to internal oscillator
GD32F4XX: Fixed an incorrect uart4 irq number.
Nordic nRF54L: Added support for the FLPR (fast lightweight processor) RISC-V CPU.
Espressif: Removed idf-bootloader dependency from all ESP32 SoC variants.
Espressif: Added Simple boot support for ESP32 SoC variants, which allows loading application using a single binary image without a 2nd stage bootloader.
Espressif: Re-worked and optimized all SoCs memory map.
LiteX:
sys_arch_reboot().CONFIG_RISCV_ISA_EXT_A is no longer erroneously y-selected.rp2040: The proprietary UART driver has been discontinued and replaced with PL011.
Renesas RZ/T2M: Added default values for System Clock Control register.
Added support for these boards:
Ambiq Apollo3 Blue board <apollo3_evb>: apollo3_evb.Ambiq Apollo3 Blue Plus board <apollo3p_evb>: apollo3p_evb.Raspberry Pi 5 board <rpi_5>: rpi_5.Seeed Studio XIAO RP2040 board <xiao_rp2040>: xiao_rp2040.Mikroe RA4M1 Clicker board <mikroe_clicker_ra4m1>: mikroe_clicker_ra4m1.Arduino UNO R4 WiFi board <arduino_uno_r4>: arduino_uno_r4_wifi.Renesas EK-RA8M1 board <ek_ra8m1>: ek_ra8m1.ST Nucleo H533RE <nucleo_h533re>: nucleo_h533re.ST STM32C0116-DK Discovery Kit <stm32c0116_dk>: stm32c0116_dk.ST STM32H745I Discovery <stm32h745i_disco>: stm32h745i_disco.ST STM32H7S78-DK Discovery <stm32h7s78_dk>: stm32h7s78_dk.ST STM32L152CDISCOVERY board <stm32l1_disco>: stm32l152c_disco.ST STEVAL STWINBX1 Development kit <steval_stwinbx1>: steval_stwinbx1.frdm_mcxn947, ke17z512, rd_rw612_bga, frdm_rw612, frdm_ke15z, frdm_ke17zSynopsys ARC-V RMX1xx nSIM-based simulation platform <nsim_arc_v>: nsim_arc_v/rmx100.Analog Devices MAX32690EVKIT <max32690evkit>: max32690evkit.Analog Devices MAX32680EVKIT <max32680evkit>: max32680evkit.Analog Devices MAX32672EVKIT <max32672evkit>: max32672evkit.Analog Devices MAX32672FTHR <max32672fthr>: max32672fthr.Analog Devices MAX32670EVKIT <max32670evkit>: max32670evkit.Analog Devices MAX32655EVKIT <max32655evkit>: max32655evkit.Analog Devices MAX32655FTHR <max32655fthr>: max32655fthr.Analog Devices AD-APARD32690-SL <apard32690>: ad_apard32690_sl.Infineon Technologies CYW920829M2EVK-02 <cyw920829m2evk_02>: cyw920829m2evk_02.Nuvoton Numaker M2L31KI board <numaker_m2l31ki>: numaker_m2l31ki.Espressif ESP32-S2 DevKit-C <esp32s2_devkitc>: esp32s2_devkitc.Espressif ESP32-S3 DevKit-C <esp32s3_devkitc>: esp32s3_devkitc.Espressif ESP32-C6 DevKit-C <esp32c6_devkitc>: esp32c6_devkitc.Waveshare ESP32-S3-Touch-LCD-1.28 <esp32s3_touch_lcd_1_28>: esp32s3_touch_lcd_1_28.M5Stack ATOM Lite <m5stack_atom_lite>: m5stack_atom_lite.CTHINGS.CO Connectivity Card nRF52840 <ctcc>: ctcc.Made these board changes:
ST STM32H7B3I Discovery Kit <stm32h7b3i_dk>: stm32h7b3i_dk,
enabled full cache management, Chrom-ART, double frame buffer and full refresh for
optimal LVGL performance.--extload option.mimxrt1010_evk, mimxrt1160_evk, frdm_rw612, rd_rw612_bga, frdm_mcxn947nrf54l15bsim<nrf54l15bsim> target.nrf54h20dknrf54h20dk runs from RAM by default. A
new xip variant has been introduced which runs from MRAM (XIP).beagleconnect_freedom external antenna switch handling.<nrf53_cpunet_mgmt.h>.Added support for the following shields:
adafruit_2_8_tft_touch_v2 (adafruit_2_8_tft_touch_v2)adafruit_neopixel_grid_bff (adafruit_neopixel_grid_bff)arduino_uno_click (arduino_uno_click)dvp_fpc24_mt9m114 (dvp_fpc24_mt9m114)lcd_par_s035 (lcd_par_s035)mikroe_weather_click (mikroe_weather_click)nxp_btb44_ov5640 (nxp_btb44_ov5640)reyax_lora (reyax_lora)rk043fn02h_ct (rk043fn02h_ct)rk043fn66hs_ctg (rk043fn66hs_ctg)rpi_pico_uno_flexypin (rpi_pico_uno_flexypin)seeed_xiao_expansion_board (seeed_xiao_expansion_board)seeed_xiao_round_display (seeed_xiao_round_display)sparkfun_carrier_asset_tracker (sparkfun_carrier_asset_tracker)st_b_lcd40_dsi1_mb1166 (st_b_lcd40_dsi1_mb1166)waveshare_epaper (waveshare_epaper)x_nucleo_bnrg2a1 (x_nucleo_bnrg2a1)Build system and Infrastructure
CI-enabled blackbox tests were added to verify the correctness of most Twister flags.
A socs folder for applications has been introduced that allows for Kconfig fragments and
devicetree overlays that should apply to any board target using a particular SoC and board
qualifier (:github:70418). Support has also been added to sysbuild (:github:71320).
:ref:Board/SoC flashing configuration<flashing-soc-board-config> settings have been added
(:github:69748).
Deprecated the global CSTD cmake property in favor of the :kconfig:option:CONFIG_STD_C
choice to select the C Standard version. Additionally, subsystems can select a minimum
required C Standard version, with, for example, :kconfig:option:CONFIG_REQUIRES_STD_C11.
Fixed issue with passing UTF-8 configs to applications using sysbuild (:github:74152).
Fixed issue whereby domain file in sysbuild projects would be loaded and used with outdated
information if sysbuild configuration was changed, and west flash was ran directly after
(:github:73864).
Fixed issue with Zephyr modules not being listed in sysbuild if they did not have a Kconfig
file set (:github:72070).
Added sysbuild SB_CONFIG_COMPILER_WARNINGS_AS_ERRORS Kconfig option to turn on
"warning as error" toolchain flags for all images, if set (:github:70217).
Fixed issue whereby files used in a project (e.g. devicetree overlays or Kconfig fragments)
were not correctly watched and CMake would not reconfigure if they were changed
(:github:74655).
Added flash support for Intel Hex files for the LinkServer runner.
Added sysbuild sysbuild/CMakeLists.txt entry point and added support for
APPLICATION_CONFIG_DIR which allows for adjusting how sysbuild functions (:github:72923).
Fixed issue with armfvp find path if it contained a colon-separated list (:github:74868).
Fixed issue with version.cmake field sizes not being enforced (:github:74357).
Fixed issue with sysbuild not clearing EXTRA_CONF_FILE before processing images which
prevented this option being passed on to the image (:github:74082).
Added sysbuild root support which works similarly to the existing root module, adjusting paths
relative to APP_DIR (:github:73390).
Added warning/error message for blobs that are missing (:github:73051).
Fixed issue with correct python executable detection on some systems (:github:72232).
Added support for enabling LTO for whole application (:github:69519).
Fixed FILE_SUFFIX issues relating to double application of suffixes, non-application in
sysbuild and variable name clashes in CMake functions (:github:70124, :github:71280).
Added support for new aggressive size optimisation flag (for GCC and Clang) using
:kconfig:option:CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE (:github:70511).
Fixed issue with printing out BUILD_VERSION if it was empty (:github:70970).
Fixed sysbuild issue of sysbuild_cache_set() cmake function wrongly detecting partial
matches for de-duplication (:github:71381).
Fixed issue with detecting wrong VERSION file (:github:71385).
Added support for disabling output disassembly having the source code in using
:kconfig:option:CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE (:github:71535).
Twister now supports --flash-before parameter that allows flashing DUT before
opening serial port (:github:47037).
Drivers and Sensors
ADC
Added ADC_DT_SPEC_*BY_NAME() macros to get ADC IO-channel information from DT by name.
Added support for voltage biasing:
CONFIG_ADC_CONFIGURABLE_VBIAS_PIN selected by drivers that support
voltage biasing.zephyr,vbias-pins property to the adc-controller base binding to describe voltage
bias pins.Sample changes
adc_sequence features.New ADC Drivers
ADI AD559x changes
adc_raw_to_millivolts().CONFIG_THREAD_NAME.ESP32 changes
nRF changes
adc_nrfx_saadc.c device driver.
Note that this fix prevents the nRF54H and nRF54L series from performing
8-bit resolution single-ended readings due to hardware limitations.NXP LPADC changes
nxp,reference-supply to phandle-array type DT property
nxp,references in nxp,lpc-lpadc binding. The NXP LPADC driver now supports passing
the reference voltage value by using nxp,references.Smartbond changes
CONFIG_PM_DEVICE_RUNTIME in the Smartbond ADC driver.STM32 changes
Other driver changes
adc_raw_to_millivolts returning half the actual voltage with
the tla2021 driver by correcting the reference voltage value.Added support for Nuvoton Numaker M2L31X series.
Battery
re-charge-voltage-microvolt property to the battery binding. This allows to set
limit to automatically start charging again.Battery backed up RAM
CAN
can_calc_timing and
:c:func:can_calc_timing_data.min-bitrate devicetree property for CAN transceivers.DT_CAN_TRANSCEIVER_MIN_BITRATE and
:c:macro:DT_INST_CAN_TRANSCEIVER_MIN_BITRATE for getting the minimum supported bitrate of a CAN
transceiver.CAN_DT_DRIVER_CONFIG_GET and CAN_DT_DRIVER_CONFIG_INST_GET macros.can_get_bitrate_min and :c:func:can_get_bitrate_max for retrieving the minimum
and maximum supported bitrate for a given CAN controller/CAN transceiver combination, reflecting
that retrieving the bitrate limits can no longer fail. Deprecated the existing
:c:func:can_get_max_bitrate API function.sample-point and sample-point-data devicetree properties optional.bus_speed and bus_speed_data fields of :c:struct:can_driver_config to
bitrate and bitrate_data.nordic,nrf-can.nuvoton,numaker-canfd driver.Charger
chgin-to-sys-current-limit-microamp property to maxim,max20335-charger.system-voltage-min-threshold-microvolt property to maxim,max20335-charger.re-charge-threshold-microvolt property to maxim,max20335-charger.thermistor-monitoring-mode property to maxim,max20335-charger.Clock control
drivers/clock_control/clock_control_litex.c) added return code checking for
:c:func:litex_clk_get_duty_cycle() and :c:func:litex_clk_get_clkout_divider.Counter
resolution property in nxp,lptmr binding to represent the maximum width
in bits the LPTMR peripheral uses for its counter.DAC
nxp,gau-dac).adi,ad5691, :dtcompatible:adi,ad5692 and :dtcompatible:adi,ad5693).ti,dacx0501).Disk
CONFIG_SDMMC_STM32_EMMC.loopback_disk_access_registerDISK_IOCTL_CTRL_INIT and
:c:macro:DISK_IOCTL_CTRL_DEINIT macros, which allow for initializing
and de-initializing a disk at runtime. This allows hotpluggable
disk devices (like SD cards) to be removed and reinserted at runtime.Display
mipi_dbi_api have
been converted to use it. GC9X01X, UC81XX, SSD16XX, ST7789V, ST7735R based
displays have been converted to this API. Boards using these displays will
need their devicetree updated, see the display section of
:ref:migration_3.7 for examples of this process.sitronix,st7796s)display_read API to ILI9XXX display driver,
which can be enabled with :kconfig:option:CONFIG_ILI9XXX_READdisplay_set_orientation API to SSD16XXX
display driverfrida,nt35510)led-strip-matrix)display_set_pixel_format API to NXP eLCDIF
driver. ARGB8888, RGB888, and BGR565 formats are supported.display_set_pixel_format API.sitronix,st7789v) using the inversion-off property.DMA
DMIC
rd_rw612_bgaEntropy
EEPROM
address-width to :dtcompatible:zephyr,i2c-target-eeprom.eSPI
Ethernet
Introduced :kconfig:option:CONFIG_ETH_DRIVER_RAW_MODE. This option allows building
ethernet drivers without the zephyr L2 ethernet layer.
Removed the ethernet-fixed-link DT binding.
Removed VLAN handling from ethernet drivers since it is now handled by the generic ethernet L2 code.
Implemented/reworked HW MAC Address filtering in the eth_mcux, eth_nxp_enet, and eth_nxp_s32_gmac, eth_stm32, and eth_nxp_s32_netc drivers.
New Drivers
NXP ENET driver changes
nxp,kinetis-ethernet compatible nodes
reworked to use the new :dtcompatible:nxp,enet binding.nxp,enet1g.NXP S32 ethernet changes
CONFIG_MDIO.Adin2111 driver changes
STM32 ethernet driver changes
ESP32 ethernet driver changes
CONFIG_NET_STATISTICS is enabled.Other ethernet driver changes
Phy driver changes
Flash
flash_parameters and the utility function
:c:func:flash_params_get_erase_cap that allows to obtain the erase type
provided by a device; added :c:macro:FLASH_ERASE_C_EXPLICIT, which is
currently the only supported erase type and is set by all flash devices.flash_flatten function that can be used on devices,
with or without erase requirement, when erase has been used not for preparing
a device for a random data write, but rather to remove/scramble data from
that device.flash_fill utility function which allows to write
a single value across a provided range in a selected device.st,stm32-xspi-nor).st,stm32-ospi).Fuel Gauge
GNSS
u-blox,m8).luatos,air530z).GPIO
STM32_GPIO_WKUP flag which allows to configure specific pins as wakeup source
from Power Off state on STM32 L4, U5, WB, & WL SoC series.renesas,rzt2m-gpio).Hardware info
I2C
Added support for Ambiq Apollo3 series.
In STM32 V2 driver, added support for a new :kconfig:option:CONFIG_I2C_STM32_V2_TIMING
which automatically computes bus timings which should be used to configure the hardware
block depending on the clock configuration in use. To avoid embedding this heavy algorithm
in a production application, a dedicated sample :zephyr:code-sample:stm32_i2c_v2_timings is provided
to get the output of the algorithm. Once bus timings configuration is available,
:kconfig:option:CONFIG_I2C_STM32_V2_TIMING could be disabled, bus timings configured
using device tree.
Added support for STM32H5 series.
Added support to NXP MCXN947
Added driver for Analog Devices MAX32 SoC series.
Added support for Nuvoton Numaker M2L31X series.
LiteX I2C driver (:file:drivers/i2c/i2c_litex.c):
i2c_litex_recover_bus() and :c:func:i2c_litex_get_config() API
implementations.I2S
I3C
Added shell support for querying bus and CCC commands.
Added driver to support the I3C controller on NPCX.
Improvements and bug fixes on :dtcompatible:nxp,mcux-i3c, including handling the bus
being busy more gracefully instead of simply returning errors.
Input
adc-keys, :dtcompatible:chipsemi,chsc6x,
:dtcompatible:cirque,pinnacle, :dtcompatible:futaba,sbus,
:dtcompatible:pixart,pat912x, :dtcompatible:pixart,paw32xx,
:dtcompatible:pixart,pmw3610 and :dtcompatible:sitronix,cf1133.holtek,ht16k33 and
:dtcompatible:microchip,xec-kbd from kscan to input subsystem.LED
Added device completion to LED shell commands and made the get_info command display
colors as strings.
Added driver for Lumissil Microsystems (a division of ISSI) IS31FL3194 controller
(:dtcompatible:issi,is31fl3194).
LED Strip
The chain-length and color-mapping properties have been added to all LED strip
bindings.
The length of a strip is now checked before updating it, an error is returned if the provided data is too long.
A length function has been added which returns the length of the LED strip
(:c:func:led_strip_length).
The update channels function is now optional and can be left unimplemented.
The in-gpios and output-pin properties of the respective
:dtcompatible:worldsemi,ws2812-gpio and :dtcompatible:worldsemi,ws2812-rpi_pico-pio
devicetree bindings have been renamed to gpios.
Removed CONFIG_WS2812_STRIP and CONFIG_WS2812_STRIP_DRIVER Kconfig options. They became
useless after refactoring.
Added driver for Texas Instruments TLC59731 RGB controller.
LoRa
Mailbox
MDIO
bus_enable and bus_disable functions optional for drivers to
implement, and removed empty implementation from many drivers.CONFIG_MDIO_NXP_ENET_TIMEOUT units change to microseconds.MFD
nxp,lp-flexcomm.rohm,bd8lb600fs.maxim,max31790.infineon,tle9104adi,ad559xx-powers,axp192.nordic,npm1300.nordic,npm1300.nordic,npm6001.Modem
Removed deprecated GSM_PPP driver along with its dts compatible zephyr,gsm-ppp.
Removed deprecated UART_MUX and GSM_MUX previously used by GSM_PPP.
Removed support for dts compatible zephyr,gsm-ppp from MODEM_CELLULAR driver.
Removed integration with UART_MUX from MODEM_IFACE_UART_INTERRUPT module.
Removed integration with UART_MUX from MODEM_SHELL module.
Implemented modem pipelinks in MODEM_CELLULAR driver for additional DLCI channels
available by the different modems. This includes generic AT mode DLCI channels, named
user_pipe_<index> and DLCI channels reserved for GNSS tunneling named
gnss_pipe.
Added new set of shell commands for sending AT commands directly to a modem using the
newly implemented modem pipelinks. The implementation of the new shell commands is
both functional and together with the MODEM_CELLULAR driver will provide an
example of how to implement and use the modem pipelink module.
PCIE
pcie_bdf_lookup and pcie_probe have been removed since they have been
deprecated since v3.3.0.MIPI-DBI
MSPI
MSPI(Multi-bit SPI) <mspi_api> API, enabling support for
advanced SPI controllers and peripherals that typically require command, address and data
phases as well as variable latency for a transfer. The API now supports from single wire
SDR up to hex wires DDR communication in sync/async ways.mspi-async and :zephyr:code-sample:mspi-flash samples to
showcase the use of MSPI device drivers.Pin control
PWM
pwm-blinky code sample to demonstrate PWM support for
:zephyr:board:beagleconnect_freedom.Regulators
cirrus,cp9314.regulator-boot-off property to common regulator driver.
Updated :dtcompatible:adi,adp5360-regulator, :dtcompatible:nordic,npm1300-regulator,
:dtcompatible:nordic,npm6001-regulator and :dtcompatible:x-powers,axp192-regulator
to use this new property.renesas,smartbond-regulator.is_enabled shell command.x-powers,axp192-regulator.renesas,smartbond-regulator.adset shell command.Reset
RTC
CONFIG_RTC_ALARM on all STM32 MCU series (except STM32F1).RTIO
rtio_ prefix to SPSC and MPSC queues.SDHC
espressif,esp32-sdhc).renesas,rcar-mmc).Sensors
General
sensor_read.sensor_submit_callback into an asynchronous request.AMS
ams,tsl2591).Aosong
Added DHT20 digital-output humidity and temperature sensor driver
(:dtcompatible:aosong,dht20).
Added :kconfig:option:CONFIG_DHT_LOCK_IRQS for the dht11 driver which allows for locking
interrupts during sensor reading to prevent issues with reading the sensor.
Bosch
Infineon
infineon,tle9104-diagnostics).Maxim
maxim,ds18s20).maxim,max31790-fan-fault and :dtcompatible:maxim,max31790-fan-speed).NXP
nxp,lpcmp).Rohm
rohm,bd8lb600fs-diagnostics).Silabs
ST
st,stm32-qdec).st,stm32-digi-temp).st,iis328dq).TDK
TI
ti,tmp114).ti,ina226).national,lm95234).Other vendors
ap,fcx-mldx5).ene,kb1200-tach).festo,veaa-x-3).ist,tsic-xx6).onnn,nct75).sciosense,ens160).Serial
Added driver to support UART over Bluetooth LE using NUS (Nordic UART Service). This driver enables using Bluetooth as a transport to all the subsystems that are currently supported by UART (e.g: Console, Shell, Logging).
Added :kconfig:option:CONFIG_NOCACHE_MEMORY support in async DMA mode in STM32 driver.
It is now possible to use UART in DMA mode with :kconfig:option:CONFIG_DCACHE enabled
on STM32 F7 & H7 SoC series, as long as DMA buffers are placed in an uncached memory section.
Added support for STM32H7R/S series.
Added support for HSCIF (High Speed Serial Communication Interface with FIFO) in the UART driver for Renesas RCar platforms.
Added driver for ENE KB1200 UART.
Added driver for UART on Analog Devices MAX32 series microcontrollers.
Added driver for UART on Renesas RA8 devices.
uart_emul (:dtcompatible:zephyr,uart-emul):
uart_esp32 (:dtcompatible:espressif,esp32-uart):
Added support to invert TX and RX pin signals.
Added support for ESP32C6 SoC.
uart_native_tty (:dtcompatible:zephyr,native-tty-uart):
uart_mcux_lpuart (:dtcompatible:nxp,kinetis-lpuart):
Added support for single wire half-duplex communication.
Added support to invert TX and RX pin signals.
uart_npcx (:dtcompatible:nuvoton,npcx-uart):
Added support for asynchronous API.
Added support for baud rate of 3MHz.
uart_nrfx_uarte (:dtcompatible:nordic,nrf-uarte):
uart_nrfx_uarte2 (:dtcompatible:nordic,nrf-uarte):
Prevents UART from transmitting when device is suspended.
Fixed some events not being triggered.
uart_pl011 (:dtcompatible:arm,pl011):
Added support for runtime configuration.
Added support for reset device.
Added support to use clock control to determine frequency.
Added support for hardware flow control.
Added support for UART on Ambiq Apollo3 SoC.
uart_smartbond (:dtcompatible:renesas,smartbond-uart):
Added support for power management.
Added support to wake up via DTR and RX lines.
uart_stm32 (:dtcompatible:st,stm32-uart):
Added support for Nuvoton Numaker M2L31X series.
SPI
CONFIG_PM and :kconfig:option:CONFIG_PM_DEVICE_RUNTIME on STM32 SPI driver.CONFIG_NOCACHE_MEMORY in DMA SPI mode for STM32F7x SoC series.USB
Video
st,stm32-dcmi).Watchdog
CONFIG_WDT_NPCX_WARNING_LEADING_TIME_MS to set the leading warning time
in milliseconds. Removed no longer used :kconfig:option:CONFIG_WDT_NPCX_DELAY_CYCLES.Wi-Fi
bind and :c:func:recvfrom for UDP sockets for esp-at.Networking
ARP:
CoAP:
CONFIG_COAP_MAX_RETRANSMIT).coap_client_cancel_requests API which allows
to cancel active observations.Connection manager:
Added support for new net_mgmt events, which allow to track IPv4 and IPv6 connectivity independently:
NET_EVENT_L4_IPV4_CONNECTEDNET_EVENT_L4_IPV4_DISCONNECTEDNET_EVENT_L4_IPV6_CONNECTEDNET_EVENT_L4_IPV6_DISCONNECTEDDHCPv4:
CONFIG_NET_DHCPV4_OPTION_CALLBACKS_VENDOR_SPECIFIC callbacks can be
registered with :c:func:net_dhcpv4_add_option_vendor_callback to handle these options after
being initialised with :c:func:net_dhcpv4_init_option_vendor_callback.CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER to enable it and
:kconfig:option:CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER_STRING to set it.CONFIG_NET_CONFIG_CLOCK_SNTP_INIT is enabled.CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION is enabled.CONFIG_NET_DHCPV4_SERVER_NAK_UNRECOGNIZED_REQUESTS which
allows to override RFC-defined behavior, and NAK requests from unrecognized
clients.DHCPv6:
CONFIG_NET_DHCPV6_DUID_MAX_LEN which allows to configure
maximum supported DUID length.DNS/mDNS/LLMNR:
gPTP/PTP:
HTTP:
IPSP:
CONFIG_NET_L2_BT does not exist anymore.IPv4:
net_ipv4_is_private_addr API function.IPv6:
net_ipv6_is_private_addr API function.net_if_nbr_reachability_hint to report Neighbor reachability and
avoid unnecessary Neighbor Discovery solicitations.CONFIG_NET_IPV6_MTU allowing to set custom IPv6 MTU.CONFIG_NET_MCAST_ROUTE_MAX_IFACES which allows to set
multiple interfaces for multicast forwarding entries.CONFIG_NET_MCAST_ROUTE_MLD_REPORTS which allows to
report multicast routes in MLDv2 reports.LwM2M:
Added new API functions:
lwm2m_set_bulklwm2m_rd_client_set_ctxAdded new offset parameter to :c:type:lwm2m_engine_set_data_cb_t callback type.
This affects post write and validate callbacks as well as some firmware callbacks.
Fixed block context not being reset upon receiving block number 0 in block transfer.
Fixed block size negotiation with the server in block transfer.
Added :kconfig:option:CONFIG_LWM2M_ENGINE_ALWAYS_REPORT_OBJ_VERSION which
allows to force the client to always report object version.
Block transfer is now possible with resource w/o registered callback.
Fixed a bug, where an empty ACK sent from the registered callback would not be sent immediately.
Removed deprecated API functions and definitions.
Other minor fixes and improvements.
Misc:
zsock_* API.sntp_simple_addr API function to perform SNTP query
when the server IP address is already known.CONFIG_NET_TC_THREAD_PRIO_CUSTOM allowing to override
default traffic class threads priority.native_posix to native_sim support in various tests and
samples.tcp_first_msg :c:struct:net_pkt flag.secure-mqtt-sensor-actuator sample.mqtt-azure with new CA certificates, the current
on expires soon.mgmt_event_work_handler
when :kconfig:option:CONFIG_NET_MGMT_EVENT_SYSTEM_WORKQUEUE is enabled.MQTT:
mqtt_client context structure.Network Interface:
Added new API functions:
net_if_ipv4_maddr_foreachnet_if_ipv6_maddr_foreachImproved debug logging in the network interface code.
Added reference counter to the :c:struct:net_if_addr structure.
Fixed IPv6 DAD and MLDv2 operation when interface goes up.
Added unique default name for OpenThread interfaces.
Other minor fixes.
OpenThread
openthread_set_state_changed_cb() function.PPP
gsm_modem driver and sample.cellular-modem sampleShell:
net ipv4 gateway command to set IPv4 gateway address.net iface set_mac command.Sockets:
Implemented new networking POSIX APIs:
if_nameindexinet_ntoainet_addrAdded support for tracing socket API calls.
TLS sockets are no longer experimental API.
Fixed the protocol field endianness for AF_PACKET type sockets.
Fixed :c:func:getsockname for TCP.
Improve :c:func:sendmsg support when using DTLS sockets.
Fixed :c:func:net_socket_service_register function stall in case socket
services thread stopped.
Fixed potential socket services thread stoppage when deregistering service.
Removed support for asynchronous timeouts in socket services library.
Fixed potential busy looping when using :c:func:zsock_accept in case of
file descriptors shortage.
Syslog:
Added new API functions:
log_backend_net_set_ip to initialize syslog net backend with IP
address directly.log_backend_net_start to facilitate syslog net backend activation.Added structured logging support to syslog net backend.
Added TCP support to syslog net backend.
TCP:
CONFIG_NET_TCP_ACK_TIMEOUT as it was redundant with other configs.Websocket:
Added new Websocket APIs:
websocket_registerwebsocket_unregisterConverted Websocket library to use zsock_* API.
Added Object Core support to Websocket sockets.
Added POLLOUT monitoring when sending.
Wi-Fi:
max_inactivity BSS parameter. Users can set this both
build and runtime duration to control the maximum time duration after which AP may
disconnect a STA due to inactivity from STA.inactivity_poll BSS parameter. Users can set build
only AP parameter to control whether AP may poll the STA before throwing away STA
due to inactivity.max_num_sta BSS parameter. Users can set this both
build and run time parameter to control the maximum number of STA entries.zperf:
IP_TOS and IPV6_TCLASS options handling in zperf.ZPERF_SESSION_PERIODIC_RESULT event for periodic updates
during TCP upload sessions.USB
New USB device stack:
Devicetree
DT_INST_NODE_HAS_COMPAT to check if a node has a compatible.
This is useful for nodes that have multiple compatibles.DT_CHILD_NUM and variants to count the number of children of a node.DT_FOREACH_NODELABEL and variants, which can be used to iterate over the
node labels of a devicetree node.DT_NODELABEL_STRING_ARRAY and :c:macro:DT_NUM_NODELABELS and their variants.DT_REG_HAS_NAME and variants.DT_ANY_INST_HAS_PROP_STATUS_OKAY so that the result can
be used with macros like :c:macro:IS_ENABLED, IF_ENABLED, or COND_CODE_x.DT_NODE_HAS_COMPAT_STATUS so that it can be evaluated at preprocessor time.Kconfig
substring Kconfig preprocessor function.dt_node_ph_prop_path Kconfig preprocessor function.dt_compat_any_has_prop Kconfig preprocessor function.Libraries / Subsystems
Debug
symtab
By enabling :kconfig:option:CONFIG_SYMTAB, the symbol table will be
generated with Zephyr link stage executable on supported architectures.
Demand Paging
NRU (Not Recently Used) eviction algorithm has updated its selection logic to avoid picking the same page to evict constantly. The updated login now searches for a new candidate linearly after the last evicted page.
Added LRU (Least Recently Used) eviction algorithm.
Formatted output
Management
hawkBit
The hawkBit subsystem has been reworked to use the settings subsystem to store the hawkBit configuration.
By enabling :kconfig:option:CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME, the hawkBit settings can
be configured at runtime. Use the :c:func:hawkbit_set_config function to set the hawkBit
configuration. It can also be set via the hawkBit shell, by using the hawkbit set
command.
When using the hawkBit autohandler and an update is installed, the device will now automatically reboot after the installation is complete.
By enabling :kconfig:option:CONFIG_HAWKBIT_CUSTOM_DEVICE_ID, a callback function can be
registered to set the device ID. Use the :c:func:hawkbit_set_device_identity_cb function to
register the callback.
By enabling :kconfig:option:CONFIG_HAWKBIT_CUSTOM_ATTRIBUTES, a callback function can be
registered to set the device attributes that are sent to the hawkBit server. Use the
:c:func:hawkbit_set_custom_data_cb function to register the callback.
MCUmgr
Instructions for the deprecated mcumgr go tool have been removed, a list of alternative,
supported clients can be found on :ref:mcumgr_tools_libraries.
Fixed an issue with the SMP structure not being packed which would cause a fault on devices that do not support unaligned memory accesses.
Added :kconfig:option:CONFIG_MCUMGR_TRANSPORT_BT_DYNAMIC_SVC_REGISTRATION that allows users
to select whether MCUmgr BT service is statically registered at compile time or
dynamically at run time.
In FS group, TinyCrypt has been replaced with PSA calls for SHA calculation.
Logging
By enabling :kconfig:option:CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION, the IP address of the
syslog server for the networking backend is set by the DHCPv4 Log Server Option (7).
Use real time clock as timestamp on POSIX.
Add support for syslog (POSIX).
Add :c:macro:LOG_WRN_ONCE for logging warning message where only the first occurrence is
logged.
Add :c:func:log_thread_trigger for triggering processing of the log messages.
Fix case when deferred logging not compiling when :kconfig:option:CONFIG_MULTITHREADING was
disabled.
Fix case when logging strings could be stripped from the binary when dictionary based logging was mixed with non-dictionary.
Fix dictionary database not being generated in certain situations.
Fix dictionary logging parser not handling long long arguments correctly.
Fix support for :kconfig:option:CONFIG_LOG_MSG_APPEND_RO_STRING_LOC.
Modem modules
Added modem pipelink module which shares modem pipes globally, allowing device drivers to create and set up pipes for the application to use.
Simplified the modem pipe module's synchronization mechanism to only protect the callback and user data. This matches the actual in-tree usage of the modem pipes.
Added modem_stats module which tracks the usage of buffers throughout the modem
subsystem.
Power management
Devices can now declare which system power states cause power loss.
This information can be used to set and release power state
constraints when it is needed by the device. This feature is enabled with
:kconfig:option:CONFIG_PM_POLICY_DEVICE_CONSTRAINTS. Use functions
:c:func:pm_policy_device_power_lock_get and :c:func:pm_policy_device_power_lock_put
to lock and unlock all power states that cause power loss in a device.
Added shell support for device power management.
Device power management was de-coupled from system power management. The new
:kconfig:option:CONFIG_PM_DEVICE_SYSTEM_MANAGED option is used to enable
whether devices must be suspended when the system sleeps.
Make it possible to disable system device power management individually per
power state using zephyr,pm-device-disabled. This allows targets tuning which
states should (and which should not) trigger device power management.
Crypto
CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT is enabled), desired PSA features
must now be explicitly selected through CONFIG_PSA_WANT_xxx symbols.CONFIG_MBEDTLS_PSA_CRYPTO_LEGACY_RNG and
:kconfig:option:CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG were added in order
to allow the user to specify how Mbed TLS PSA crypto core should generate random numbers.
The former option, which is the default, relies on legacy entropy and CTR_DRBG/HMAC_DRBG
modules, while the latter relies on CSPRNG drivers.CONFIG_MBEDTLS_PSA_P256M_DRIVER_ENABLED enables support
for the Mbed TLS's p256-m driver PSA crypto library. This is a Cortex-M SW
optimized implementation of secp256r1 curve.CMSIS-NN
FPGA
reset, load, get_status, and get_info
methods.Random
sys_rand32_get function, :c:func:sys_rand8_get,
:c:func:sys_rand16_get and :c:func:sys_rand64_get are now also available.
These functions are all implemented on top of :c:func:sys_rand_get.SD
72705).State Machine Framework
SMF_CREATE_STATE macro now always takes 5 arguments.NULL to :c:func:smf_set_state is now not allowed.Storage
FAT FS: It is now possible to expose file system formatting functionality for FAT without also
enabling automatic formatting on mount failure by setting the
:kconfig:option:CONFIG_FS_FATFS_MKFS Kconfig option. This option is enabled by default if
:kconfig:option:CONFIG_FILE_SYSTEM_MKFS is set.
FS: It is now possible to truncate a file while opening using :c:func:fs_open
and by passing FS_O_TRUNC flag.
Flash Map: TinyCrypt has been replaced with PSA Crypto in Flash Area integrity check.
Flash Map: :c:func:flash_area_flatten has been added to be used where an erase
operation has been previously used for removing/scrambling data rather than
to prepare a device for a random data write.
Flash Map: :c:macro:FIXED_PARTITION_NODE_OFFSET, :c:macro:FIXED_PARTITION_NODE_SIZE
and :c:macro:FIXED_PARTITION_NODE_DEVICE have been added to allow obtaining
fixed partition information from a devicetree node rather than a label.
Added :kconfig:option:CONFIG_NVS_DATA_CRC, to add CRC protection for data.
Note that enabling this option makes NVS incompatible with existing storage
that have not been previously using CRC on data.
Fixed NVS issue where :c:func:nvs_calc_free_space would return larger
size than available, because space for reserved ate was not subtracted.
Fixed ext2 incorrectly calculating free space when attempting to format partition.
Fixed FAT driver leaving disk in initialized state after unmount.
Task Watchdog
POSIX API
Improved Kconfig options to reflect standard POSIX Options and Option Groups.
Added support for the following Option Groups
POSIX_MAPPED_FILES <posix_option_group_mapped_files>POSIX_MEMORY_PROTECTION <posix_option_group_memory_protection>POSIX_NETWORKING <posix_option_group_networking>POSIX_SINGLE_PROCESS <posix_option_group_single_process>POSIX_TIMERS <posix_option_group_timers>XSI_SYSTEM_LOGGING <posix_option_group_xsi_system_logging>Added support for the following Options
_POSIX_ASYNCHRONOUS_IO <posix_option_asynchronous_io>_POSIX_CPUTIME <posix_option_cputime>_POSIX_FSYNC <posix_option_fsync>_POSIX_MEMLOCK <posix_option_memlock>_POSIX_MEMLOCK_RANGE <posix_option_memlock_range>_POSIX_READER_WRITER_LOCKS <posix_option_reader_writer_locks>_POSIX_SHARED_MEMORY_OBJECTS <posix_shared_memory_objects>_POSIX_THREAD_CPUTIME <posix_option_thread_cputime>_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>_POSIX_THREAD_PRIORITY_SCHEDULING <posix_option_thread_priority_scheduling>_XOPEN_STREAMS <posix_option_xopen_streams>Fixed eventfd F_SETFL handling to avoid overwriting internal flags.
Fixed thread stack address printed in debug message.
Fixed macro parameter usage in signal code.
LoRa/LoRaWAN
Added the Fragmented Data Block Transport service, which can be enabled via
:kconfig:option:CONFIG_LORAWAN_FRAG_TRANSPORT. In addition to the default fragment decoder
implementation from Semtech, an in-tree implementation with reduced memory footprint is
available.
Added a sample to demonstrate LoRaWAN firmware-upgrade over the air (FUOTA).
ZBus
Improved the VDED process by optimizing the channel reference copying for the clones delivered during the message subscriber delivery notification.
Improved the initialization phase by statically initiating the semaphores and runtime observer list. That decreased the duration of the zbus initialization.
Added a way of isolating a channel message subscribers pool. Some channels can now share an
isolated pool to avoid delivery failures and shorten communication latency. It is only necessary
to enable the :kconfig:option:CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION and use the
function :c:func:zbus_chan_set_msg_sub_pool to change the msg pool used by the channel.
Channels can share the same message pool.
HALs
Nordic
STM32
ADI
hal_adi module, which is a subset of the Maxim Software
Development Kit (MSDK) that contains device header files and bare metal
peripheral drivers (:github:72391).Espressif
MCUboot
Fixed memory leak in bootutil HKDF implementation
Fixed enforcing TLV entries to be protected
Fixed disabling instruction/data caches
Fixed estimated image overhead size calculation
Fixed issue with swap-move algorithm failing to validate multiple-images
Fixed align script error in imgtool
Fixed img verify for hex file format in imgtool
Fixed issue with reading the flash image reset vector
Fixed too-early check_config.h include in mbedtls
Refactored image dependency functions to reduce code size
Added MCUboot support for ESP32-C6
Added optional MCUboot boot banner
Added TLV querying for protected region
Added using builtin keys for verification in bootutil
Added builtin ECDSA key support for PSA Crypto backend
Added OVERWRITE_ONLY_KEEP_BACKUP option for secondary images
Added defines for SOC_FLASH_0_ID and SPI_FLASH_0_ID
Fixed ASN.1 support for mbedtls version >= 3.1
Fixed bootutil signed/unsigned comparison in boot_read_enc_key
Updated imgtool version.py to take command line arguments
Added imgtool improvements to dumpinfo
Fixed various imgtool dumpinfo issues
Fixed imgtool verify command for edcsa-p384 signed images
Added support for NXP MCXN947
The MCUboot version in this release is version 2.1.0+0-dev.
OSDP
Trusted Firmware-M
TF-M was updated to 2.1.0. Release notes can be found at: https://tf-m-user-guide.trustedfirmware.org/releases/2.1.0.html
Support for MCUboot signature types other than RSA-3072 has been added.
The type can be chosen with the :kconfig:option:CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE Kconfig option.
Using EC-P256, the new default, reduces flash usage by several KBs compared to RSA.
LVGL
LVGL was updated to 8.4.0. Release notes can be found at: https://docs.lvgl.io/8.4/CHANGELOG.html#v8-4-0-19-march-2024
Additionally, the following changes in Zephyr were done:
Added support to place memory pool buffers in .lvgl_heap section by enabling
:kconfig:option:CONFIG_LV_Z_MEMORY_POOL_CUSTOM_SECTION
Removed kscan-based pointer input wrapper code.
Corrected encoder button behavior to emit LV_KEY_ENTER events correctly.
Improved handling for :samp:invert-{x,y} and swap-xy configurations.
Added LV_MEM_CUSTOM_FREE call on file closure.
Added missing Kconfig stubs for DMA2D symbols.
Integrated support for LVGL rounder callback function.
Tests and Samples
Added snippet for easily enabling UART over Bluetooth LE by passing -S nus-console during
west build. This snippet sets the :kconfig:option:CONFIG_BT_ZEPHYR_NUS_AUTO_START_BLUETOOTH
which allows non-Bluetooth samples that use the UART APIs to run without modifications
(e.g.: Console and Logging examples).
Removed GSM_PPP specific configuration overlays from samples net/cloud/tagoio and
net/mgmt/updatehub. The GSM_PPP device driver has been deprecated and removed. The new
MODEM_CELLULAR device driver which replaces it uses the native networking stack and PM
subsystem, which like ethernet, requires no application specific actions to set up networking.
Removed net/gsm_modem sample as the GSM_PPP device driver it depended on has been
deprecated and removed. The sample has been replaced by the sample net/cellular_modem
based on the MODEM_CELLULAR device driver.
BT LE Coded PHY is now runtime tested in CI with the nrf5x bsim targets.
External ethernet network interfaces have been disabled in the tests/net tests, since these
tests are meant to use simulated network interfaces.
Issue Related Items
74345 - Bluetooth: Non functional on nRF51 with fault