1:orphan: 2 3.. _zephyr_3.4: 4 5Zephyr 3.4.0 6############ 7 8We are pleased to announce the release of Zephyr version 3.4.0. 9 10Major enhancements with this release include: 11 12* Input subsystem: handles input events from various types of input devices and 13 distributes them to other threads in the application. 14* Barrier API: added architecture agnostic API for data memory barriers. 15* USB Device support: 16 17 * USB device controller API (UDC API) and nRF USBD controller driver. 18 * USB device stack implementation using new UDC API. 19 20* Added Power Delivery Source Support to the USB-C Stack. 21* Bluetooth: Added support for Periodic Advertising with Responses (PAwR). 22* Cache API functions are now fully in-lined by compilers. 23* Added an API for real-time clocks (RTC). 24* Added Retention subsystem. 25* Added initial support for MMU on Xtensa. 26* SMBus (System Management Bus) API. 27* Various improvements to the testing framework and twister: 28 29 - Introduction of 3 new test harnesses into twister supporting pyTest, 30 GoogleTest and Robot Framework. 31 - Transitioning to new Ztest API was completed and legacy Ztest was deprecated. 32 33* Added Snippets: Support common configuration settings that can be used across 34 platforms. 35 36The following sections provide detailed lists of changes by component. 37 38Security Vulnerability Related 39****************************** 40 41The following CVEs are addressed by this release: 42 43More detailed information can be found in: 44https://docs.zephyrproject.org/latest/security/vulnerabilities.html 45 46* CVE-2023-1901: Under embargo until 2023-07-04 47 48* CVE-2023-1902: Under embargo until 2023-07-04 49 50API Changes 51*********** 52 53Changes in this release 54======================= 55 56* Any applications using the mcuboot image manager 57 (:kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`) will now need to also select 58 :kconfig:option:`CONFIG_FLASH_MAP` and :kconfig:option:`CONFIG_STREAM_FLASH`, 59 this prevents a cmake dependency loop if the image manager Kconfig is enabled 60 manually without also manually enabling the other options. 61 62* Including hawkbit in an application now requires additional Kconfig options 63 to be selected, previously these options would have been selected 64 automatically but have changed from ``select`` options in Kconfig files to 65 ``depends on``: 66 67 +--------------------------------------------------+ 68 | :kconfig:option:`CONFIG_NVS` | 69 +--------------------------------------------------+ 70 | :kconfig:option:`CONFIG_FLASH` | 71 +--------------------------------------------------+ 72 | :kconfig:option:`CONFIG_FLASH_MAP` | 73 +--------------------------------------------------+ 74 | :kconfig:option:`CONFIG_STREAM_FLASH` | 75 +--------------------------------------------------+ 76 | :kconfig:option:`CONFIG_REBOOT` | 77 +--------------------------------------------------+ 78 | :kconfig:option:`CONFIG_HWINFO` | 79 +--------------------------------------------------+ 80 | :kconfig:option:`CONFIG_NET_TCP` | 81 +--------------------------------------------------+ 82 | :kconfig:option:`CONFIG_NET_SOCKETS` | 83 +--------------------------------------------------+ 84 | :kconfig:option:`CONFIG_IMG_MANAGER` | 85 +--------------------------------------------------+ 86 | :kconfig:option:`CONFIG_NETWORKING` | 87 +--------------------------------------------------+ 88 | :kconfig:option:`CONFIG_HTTP_CLIENT` | 89 +--------------------------------------------------+ 90 | :kconfig:option:`CONFIG_DNS_RESOLVER` | 91 +--------------------------------------------------+ 92 | :kconfig:option:`CONFIG_JSON_LIBRARY` | 93 +--------------------------------------------------+ 94 | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | 95 +--------------------------------------------------+ 96 | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT` | 97 +--------------------------------------------------+ 98 99* Including updatehub in an application now requires additional Kconfig options 100 to be selected, previously these options would have been selected 101 automatically but have changed from ``select`` options in Kconfig files to 102 ``depends on``: 103 104 +--------------------------------------------------+ 105 | :kconfig:option:`CONFIG_FLASH` | 106 +--------------------------------------------------+ 107 | :kconfig:option:`CONFIG_STREAM_FLASH` | 108 +--------------------------------------------------+ 109 | :kconfig:option:`CONFIG_FLASH_MAP` | 110 +--------------------------------------------------+ 111 | :kconfig:option:`CONFIG_REBOOT` | 112 +--------------------------------------------------+ 113 | :kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER` | 114 +--------------------------------------------------+ 115 | :kconfig:option:`CONFIG_IMG_MANAGER` | 116 +--------------------------------------------------+ 117 | :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` | 118 +--------------------------------------------------+ 119 | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT` | 120 +--------------------------------------------------+ 121 | :kconfig:option:`CONFIG_MPU_ALLOW_FLASH_WRITE` | 122 +--------------------------------------------------+ 123 | :kconfig:option:`CONFIG_NETWORKING` | 124 +--------------------------------------------------+ 125 | :kconfig:option:`CONFIG_NET_UDP` | 126 +--------------------------------------------------+ 127 | :kconfig:option:`CONFIG_NET_SOCKETS` | 128 +--------------------------------------------------+ 129 | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | 130 +--------------------------------------------------+ 131 | :kconfig:option:`CONFIG_COAP` | 132 +--------------------------------------------------+ 133 | :kconfig:option:`CONFIG_DNS_RESOLVER` | 134 +--------------------------------------------------+ 135 | :kconfig:option:`CONFIG_JSON_LIBRARY` | 136 +--------------------------------------------------+ 137 | :kconfig:option:`CONFIG_HWINFO` | 138 +--------------------------------------------------+ 139 140* The sensor driver API clarified :c:func:`sensor_trigger_set` to state that 141 the user-allocated sensor trigger will be stored by the driver as a pointer, 142 rather than a copy, and passed back to the handler. This enables the handler 143 to use :c:macro:`CONTAINER_OF` to retrieve a context pointer when the trigger 144 is embedded in a larger struct and requires that the trigger is not allocated 145 on the stack. Applications that allocate a sensor trigger on the stack need 146 to be updated. 147 148* Converted few drivers to the :ref:`input` subsystem. 149 150 * ``gpio_keys``: moved out of ``gpio``, replaced the custom API to use input 151 events instead, the :dtcompatible:`zephyr,gpio-keys` binding is unchanged 152 but now requires ``zephyr,code`` to be set. 153 * ``ft5336``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig 154 options from ``CONFIG_KSCAN_FT5336``, ``CONFIG_KSCAN_FT5336_PERIOD`` and 155 ``KSCAN_FT5336_INTERRUPT`` to :kconfig:option:`CONFIG_INPUT_FT5336`, 156 :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD` and 157 :kconfig:option:`CONFIG_INPUT_FT5336_INTERRUPT`. 158 * ``kscan_sdl``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig 159 option from ``KSCAN_SDL`` to :kconfig:option:`CONFIG_INPUT_SDL_TOUCH` and the 160 compatible from ``zephyr,sdl-kscan`` to 161 :dtcompatible:`zephyr,input-sdl-touch`. 162 * ``nuvoton,npcx-kscan`` moved to :ref:`input`, renamed the Kconfig option 163 names from ``KSCAN_NPCX_...`` to ``INPUT_NPCX_KBD...`` and the compatible 164 from ``nuvoton,npcx-kscan`` to :dtcompatible:`nuvoton,npcx-kbd`. 165 * Touchscreen drivers converted to use the input APIs can use the 166 :dtcompatible:`zephyr,kscan-input` driver to maintain Kscan compatibility. 167 168* The declaration of :c:func:`main` has been changed from ``void 169 main(void)`` to ``int main(void)``. The main function is required to 170 return the value zero. All other return values are reserved. This aligns 171 Zephyr with the C and C++ language specification requirements for 172 "hosted" environments, avoiding compiler warnings and errors. These 173 compiler messages are generated when applications are built in "hosted" 174 mode (which means without the ``-ffreestanding`` compiler flag). As the 175 ``-ffreestanding`` flag is currently enabled unless the application is 176 using picolibc, only applications using picolibc will be affected by this 177 change at this time. 178 179* The following network interface APIs now take additional, 180 ``struct net_if * iface`` parameter: 181 182 * :c:func:`net_if_ipv4_maddr_join` 183 * :c:func:`net_if_ipv4_maddr_leave` 184 * :c:func:`net_if_ipv6_maddr_join` 185 * :c:func:`net_if_ipv6_maddr_leave` 186 187* MCUmgr transports now need to set up the struct before registering it by 188 setting the function pointers to the function handlers, these have been 189 moved to a ``functions`` struct object of type 190 :c:struct:`smp_transport_api_t`. Because of these changes, the legacy 191 transport registration function and object are no longer available. The 192 registration function now returns a value which is 0 for success or a 193 negative error code if an error occurred. 194 195* Added a new flag :c:struct:`dac_channel_cfg` ``buffered`` for DAC channels in 196 :c:struct:`dac_channel_cfg` to allow the configuration of the output buffer. 197 The actual interpretation of this depends on the hardware and is so far only 198 implemented for the STM32 DAC driver. Implicitly for this driver this changes 199 the default from being buffered to unbuffered. 200 201* MCUmgr fs_mgmt group's file access hook is now called for all fs_mgmt group 202 functions (adding support for file status and file hash/checksum). In 203 addition, if the file access state is not lost, it will now only be called 204 once for the file access instead of each time a command is received. 205 Note that the structure for the notification has changed, the ``upload`` bool 206 has been replaced with an enum to indicate what function is used, see 207 :c:struct:`fs_mgmt_file_access` for the new structure definition. 208 209* Iterable sections API is now available at 210 :zephyr_file:`include/zephyr/sys/iterable_sections.h`. LD linker snippets are 211 available at :zephyr_file:`include/zephyr/linker/iterable_sections.h`. 212 213* Cache API functions are now fully inlined by compilers. 214 215* The Bluetooth HCI headers have been reworked, with ``hci.h`` now containing 216 only the function prototypes and the new ``hci_types.h`` defining all 217 HCI-related macros and structs. The previous ``hci_err.h`` has been merged 218 into ``hci_types.h``. 219 220Removed APIs in this release 221============================ 222 223* Pinmux API has been removed. Pin control needs to be used as its replacement, 224 refer to :ref:`pinctrl-guide` for more details. 225 226Deprecated in this release 227========================== 228 229* Configuring applications with ``prj_<board>.conf`` files has been deprecated, 230 this should be replaced by using a prj.conf with the common configuration and 231 board-specific configuration in board Kconfig fragments in the ``boards`` 232 folder of the application. 233 234* On nRF51 and nRF52-based boards, the behavior of the reset reason being 235 provided to :c:func:`sys_reboot` and being set in the GPREGRET register has 236 been dropped. This function will now just reboot the device without changing 237 the register contents. The new method for setting this register uses the boot 238 mode feature of the retention subsystem, see the 239 :ref:`boot mode API <boot_mode_api>` for details. To restore the deprecated 240 functionality, enable 241 :kconfig:option:`CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET`. 242 243* Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` in favor of the standardized 244 :c:func:`pthread_barrier_init` 245 246* On all STM32 targets except STM32F2 series, Ethernet drivers implementation 247 based on STM32Cube Ethernet API V1 (:kconfig:option:`CONFIG_ETH_STM32_HAL_API_V1`) 248 is now deprecated in favor of implementation based on more reliable and performant 249 STM32Cube Ethernet API V2. 250 251* Legacy Ztest API was deprecated. All new tests shall use the new Ztest API. 252 253Stable API changes in this release 254================================== 255 256* Removed ``bt_set_oob_data_flag`` and replaced it with two new API calls: 257 * :c:func:`bt_le_oob_set_sc_flag` for setting/clearing OOB flag in SC pairing 258 * :c:func:`bt_le_oob_set_legacy_flag` for setting/clearing OOB flag in legacy paring 259 260* :c:macro:`SYS_INIT` callback no longer requires a :c:struct:`device` argument. 261 The new callback signature is ``int f(void)``. A utility script to 262 automatically migrate existing projects can be found in 263 :zephyr_file:`scripts/utils/migrate_sys_init.py`. 264 265* Changed :c:struct:`spi_config` ``cs`` (:c:struct:`spi_cs_control`) from 266 pointer to struct member. This allows using the existing SPI dt-spec macros in 267 C++. SPI controller drivers doing ``NULL`` checks on the ``cs`` field to check 268 if CS is GPIO-based or not, must now use :c:func:`spi_cs_is_gpio` or 269 :c:func:`spi_cs_is_gpio_dt` calls. 270 271New APIs in this release 272======================== 273 274* Introduced :c:func:`flash_ex_op` function. This allows to perform extra 275 operations on flash devices, defined by Zephyr Flash API or by vendor specific 276 header files. Support for extra operations is enabled by 277 :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED` which depends on 278 :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` selected by driver. 279 280* Introduced :ref:`rtc_api` API which adds experimental support for real-time clock 281 devices. These devices previously used the :ref:`counter_api` API combined with 282 conversion between unix-time and broken-down time. The new API adds the mandatory 283 functions :c:func:`rtc_set_time` and :c:func:`rtc_get_time`, the optional functions 284 :c:func:`rtc_alarm_get_supported_fields`, :c:func:`rtc_alarm_set_time`, 285 :c:func:`rtc_alarm_get_time`, :c:func:`rtc_alarm_is_pending` and 286 :c:func:`rtc_alarm_set_callback` are enabled with 287 :kconfig:option:`CONFIG_RTC_ALARM`, the optional function 288 :c:func:`rtc_update_set_callback` is enabled with 289 :kconfig:option:`CONFIG_RTC_UPDATE`, and lastly, the optional functions 290 :c:func:`rtc_set_calibration` and :c:func:`rtc_get_calibration` are enabled with 291 :kconfig:option:`CONFIG_RTC_CALIBRATION`. 292 293* Introduced :ref:`auxdisplay_api` for auxiliary (alphanumeric-based) displays. 294 295* Introduced :ref:`barriers_api` for barrier operations. 296 297* Added :c:macro:`CAN_FRAME_ESI` CAN-FD Error State Indicator flag. 298 299Kernel 300****** 301 302* Removed absolute symbols :c:macro:`___cpu_t_SIZEOF`, 303 :c:macro:`_STRUCT_KERNEL_SIZE`, :c:macro:`K_THREAD_SIZEOF` and 304 :c:macro:`_DEVICE_STRUCT_SIZEOF` 305 306Architectures 307************* 308 309* ARC 310 311 * Added MPUv8 support 312 * Add support of virtual UART over ARC hostlink channel 313 * Improved ARCv2 HS4x processors handling - added proper Kconfig options, provided default mcpu 314 * Improved ARCMWDT toolchain handling: 315 316 * added rollback to check METAWARE_ROOT if ARCMWDT_TOOLCHAIN_PATH missing 317 * reworked extra warnings options handling in twister so it can be used with ARCMWDT 318 * used 64bit MDB binary by default 319 320 * Fixed excessive ROM memory consumption if MPU is enabled and ROM & RAM are located in different 321 memory regions 322 * Fixed DSP registers handling in case of ARCMWDT 323 * Improved SMP handling: 324 325 * Fixed potential livelock in thread abort due to exception 326 * Fixed IDU mask setup 327 328 * Removed absolute symbols :c:macro:`___callee_saved_t_SIZEOF` and 329 :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` 330 331* ARM 332 333 * Removed absolute symbols :c:macro:`___basic_sf_t_SIZEOF`, 334 :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`, :c:macro:`___cpu_context_t_SIZEOF` 335 and :c:macro:`___thread_stack_info_t_SIZEOF` 336 * Enabled fp16 for Cortex-M55 337 * Fixed a compilation issue with arm-clang and TrustZone 338 * Implemented a new cache-management API 339 * Added support for generating zImage headers 340 * Introduced a new :c:func:`z_arm_on_enter_cpu_idle` hook on CPU idle 341 342* ARM64 343 344 * Removed absolute symbol :c:macro:`___callee_saved_t_SIZEOF` 345 * Enabled FPU and FPU_SHARING for v8r aarch64 346 * Fixed the STACK_INIT logic during the reset 347 * Introduced and enabled safe exception stack 348 * Fixed possible deadlock on SMP with FPU sharing 349 * Added ISBs after SCTLR Modifications 350 351* NIOS2 352 353 * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` 354 355* POSIX: 356 357 * Added :c:macro:`Z_SPIN_DELAY` to allow to conditionally compile a k_busy_wait() for this arch 358 in tests and samples. 359 360* RISC-V 361 362 * Added :kconfig:option:`CONFIG_PMP_NO_TOR`, :kconfig:option:`CONFIG_PMP_NO_NA4`, and 363 :kconfig:option:`CONFIG_PMP_NO_NAPOT` to allow disabling unsupported PMP range modes. 364 * Removed unused symbols: :c:macro:`_thread_offset_to_tp`, 365 :c:macro:`_thread_offset_to_priv_stack_start`, :c:macro:`_thread_offset_to_user_sp`. 366 * Added support for setting PMP granularity with :kconfig:option:`CONFIG_PMP_GRANULARITY`. 367 * Switched from accessing CSRs from inline assembly to using the :c:func:`csr_read` helper 368 function. 369 * Enabled single-threading support. 370 371* SPARC 372 373 * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` 374 375* Xtensa 376 377 * Fixed the cross stack call mechanism during nested interrupts where stack would be 378 corrupted under certain conditions. 379 * Added initial support for MMU on Xtensa. 380 * Now supports building with :kconfig:option:`CONFIG_MULTITHREADING` disabled so 381 target can run in single thread only operations. 382 * Added C structs to represent interrupt frames to help with debugging. 383 384Bluetooth 385********* 386 387* General 388 389 * Moved all logging symbols together in a new ``Kconfig.logging`` file. 390 * Deprecated the ``BT_DEBUG_LOG`` option. Instead ``BT_LOG`` should be used. 391 * Made the ``BT_LOG`` and ``BT_LOG_LEGACY`` options hidden. 392 * Removed ``BT_DEBUG`` entirely. 393 394 395* Audio 396 397 * Implemented the CAP initiator broadcast audio start, stop and metadata 398 update procedures. 399 * Implemented the CAP unicast audio start, stop and metadata update procedures. 400 * Implemented the Telephony and Media Audio Service (TMAS). 401 * Added additional validation for MCC and MCS, including opcodes, values, etc. 402 * Refactored and extended the scan delegator implementation, including 403 integration with broadcast sink. 404 * Added support for creating a broadcast sink from a PA sink. 405 * Added support for optional characteristics in CSIP. 406 * Implemented discovery by UUID instead of reading by UUID for multiple 407 characteristics. 408 * Added support for long reads and writes for multiple profiles. 409 * Added support for long BAP ASE notifications and optimized long notify 410 reads. 411 * Offloaded MCS notifications to the system workqueue. 412 * Added the CAP initiator cancel procedure. 413 414* Direction Finding 415 416* Host 417 418 * Updated the Host to the v5.4 specification. 419 * The GATT DB Hash is now recalculated upon loading settings. 420 * Added experimental support for SMP keypress notifications. 421 * Downgraded the severity of select log messages to avoid log flooding. 422 * Separated the handling of LE SC OOB pairing from the legacy OOB logic. 423 * Implemented the Encrypted Advertising Data feature. 424 * Added support for the new Periodic Advertising with Responses (PAwR), both 425 as an advertiser and as a scanner. 426 * Added support for initiating connections from PAwR, as well as receiving 427 connections while synced. 428 * Clarified the behavior that is enabled by the ``BT_PRIVACY`` Kconfig option. 429 * Introduced a new ``seg_recv`` L2CAP API for an application to receive 430 segments directly and manage credits explicitly. 431 432* Mesh 433 434 * Added experimental support for Mesh Protocol d1.1r18 specification, gated 435 by a new configuration option. This includes: 436 437 * Enhanced Provisioning Authentication support. 438 * Mesh Remote Provisioning support including: 439 440 * Remote Provisioning Server and Client models. 441 * Composition Data Page 128 and Models Metadata Page 128 support. 442 443 * Large Composition Data support including: 444 445 * Large Composition Data Server and Client models. 446 * Models Metadata Page 0 support. 447 448 * New Transport Segmentation and Reassembly (SAR) implementation including: 449 450 * SAR Configuration Server and Client models. 451 452 * Mesh Private Beacons support including: 453 454 * Mesh Private Beacon Server and Client models. 455 456 * Opcodes Aggregator support including: 457 458 * Opcodes Aggregator Server and Client models. 459 460 * Proxy Solicitation support including: 461 462 * Solicitation PDU RPL Configuration Server and Client models. 463 * On-Demand Private Proxy Server and Client models. 464 465 * Composition Data Page 1 support. 466 * Other Mesh Profile Enhancements. 467 * Added experimental support for Mesh Binary Large Object Transfer Model d1.0r04_PRr00 specification. 468 * Added experimental support for Mesh Device Firmware Update Model d1.0r04_PRr00 specification. 469 * Fixed multiple profile errata. 470 * Added experimental support for the PSA crypto APIs. 471 * Added a new work queue to store mesh settings, including a new API for 472 storing user data. 473 * Disabled the models initialization macros for C++ as they use the compound 474 literal feature from C99. 475 * Deprecated Health Client and Configuration Client API have been removed. 476 477* Controller 478 479 * Implemented support for the central with multiple CIS usecase. 480 * Implemented support for multiple peripheral CIS establishment. 481 * Updated the Controller to the v5.4 specification. 482 * Added support for coexistence with other transceivers. 483 * Added support for multiple CIS/CIG setup/connect and teardown procedures in 484 sequence. 485 * Extended the ticker API to return expiration info. 486 * Re-implemented Extended and Periodic Advertising, as well as and Broadcast 487 ISO, using the new ticket expiration info feature. 488 * Modified the ticker implementation to reschedule unreserved tickers that use 489 ``ticks_slot_window``. Implement continuous scanning with it. 490 * Added support for considering the SDU interval, along with the packet 491 sequence number and time stamps, in SDU fragmentation. 492 * Added a new ``BT_CTRL_TX_PWR_DBM`` option to set the TX power directly in 493 dBm. 494 * Optimized the RX path with support for piggy-backing notifications on 495 already-allocated RX nodes. 496 497* HCI Driver 498 499Boards & SoC Support 500******************** 501 502* Added support for these SoC series: 503 504 * STM32C0 series are now supported (with introduction of STM32C031 SoC). 505 * STM32H5 series are now supported (with introduction of STM32H503 and STM32H573 SoCs). 506 * Added support for STM32U599 SoC variants 507 * Nordic Semiconductor nRF9161 508 509* Removed support for these SoC series: 510 511* Made these changes in other SoC series: 512 513* Added support for these ARC boards: 514 515 * DesignWare ARC HS4x/HS4xD Development Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 cores 516 * nsim_hs3x_hostlink - simulation (nSIM-based) platform with hostlink UART 517 518* Added support for these ARM boards: 519 520 * Aconno ACN52832 521 * Alientek STM32L475 Pandora 522 * Arduino GIGA R1 Wi-Fi 523 * BeagleConnect Freedom 524 * Infineon PSoC™ 6 BLE Prototyping Kit (CY8CPROTO-063-BLE) 525 * Infineon PSoC™ 6 Wi-Fi BT Prototyping Kit (CY8CPROTO-062-4343W) 526 * Infineon XMC4700 Relax Kit 527 * MXChip AZ3166 IoT DevKit 528 * Nordic Semiconductor nRF9161 DK 529 * NXP MIMXRT1040-EVK 530 * NXP MIMXRT1062 FMURT6 531 * PHYTEC PhyBOARD Polis (NXP i.MX8M Mini) 532 * PHYTEC PhyBOARD Pollux (NXP i.MX8M Plus) 533 * Raspberry Pi Pico W 534 * Raytac MDBT50Q-DB-33 535 * Raytac MDBT50Q-DB-40 536 * Seeed Studio Wio Terminal 537 * Seeed Studio XIAO BLE Sense 538 * Silicon Labs BRD2601B 539 * Silicon Labs BRD4187C 540 * Silicon Labs EFR32 Thunderboard-style boards 541 * ST Nucleo C031C6 542 * ST Nucleo F042K6 543 * ST Nucleo H563ZI 544 * ST STM32H573I-DK Discovery 545 * Xilinx KV260 (Cortex-R5) 546 547* Added support for these ARM64 boards: 548 549 * PHYTEC phyCORE-AM62x A53 550 * NXP i.MX93 EVK A55 (SOF variant) 551 552* Added support for these RISC-V boards: 553 554 * Intel FPGA Nios® V/m 555 * ITE IT82XX2 EV-Board 556 557* Added support for these X86 boards: 558 559* Added support for these Xtensa boards: 560 561 * ESP32S3-DevKitM 562 563* Made these changes for ARC boards: 564 565 * Added ARC MWDT toolchain support for qemu_arc_hs 566 * Improved emsdp platform support: 567 568 * Added DFSS driver support 569 * Added pinctrl support 570 571* Made these changes for ARM boards: 572 573 * ``atsamc21n_xpro``: Enable support to CAN. 574 * ``atsame54_xpro``: Read Ethernet MAC from I2C. 575 * Changed the default board revision to 0.14.0 for the Nordic boards 576 ``nrf9160dk_nrf9160`` and ``nrf9160dk_nrf52840``. To build for an 577 older revision of the nRF9160 DK without external flash, specify that 578 older board revision when building. 579 * ``nrf9160dk_nrf52840``: Enabled external_flash_pins_routing switch by default. 580 * ``nrf9160dk_nrf9160``: Changed the order of buttons and switches on the GPIO 581 expander to match the order when using GPIO directly on the nRF9160 SoC. 582 * ``STM32H747i_disco``: Enabled support for ST B-LCD40-DSI1 display extension 583 * ``qemu_cortex_m0``: Fixed prescaler of the system timer so that its frequency 584 is actually 1 MHz, not 2 MHz. 585 586* Made these changes for ARM64 boards: 587 588 * FVP revc_2xaemv8a / aemv8r: Added ethernet, PHY and MDIO nodes 589 590* Made these changes to POSIX boards: 591 592 * nrf52_bsim now includes support and models for: 593 594 * 802.15.4 in the RADIO. 595 * EGU. 596 * FLASH (NVMC & UICR). 597 * TEMP. 598 * UART connected to a host ptty. 599 * Many more minor CMSIS API and nRF APIs and drivers. 600 601* Made these changes for RISC-V boards: 602 603 * ``gd32vf103``: No longer requires special OpenOCD version. 604 605* Made these changes for X86 boards: 606 607* Made these changes for Xtensa boards: 608 609* Removed support for these ARC boards: 610 611* Removed support for these ARM boards: 612 613* Removed support for these RISC-V boards: 614 615 * BeagleV Starlight JH7100 616 617* Removed support for these X86 boards: 618 619* Removed support for these Xtensa boards: 620 621* Made these changes in other boards: 622 623* Added support for these following shields: 624 625 * Adafruit Data Logger Shield 626 * nPM1300 EK (Power Management Integrated Circuit (PMIC)) 627 * Panasonic Grid-EYE Shields 628 * ST B_LCD40_DSI1_MB1166 629 630Build system and infrastructure 631******************************* 632 633* Fixed an issue whereby older versions of the Zephyr SDK toolchain were used 634 instead of the latest compatible version. 635 636* Fixed an issue whereby building an application with sysbuild and specifying 637 mcuboot's verification to be checksum only did not build a bootable image. 638 639* Fixed an issue whereby if no prj.conf file was present then board 640 configuration files would not be included by emitting a fatal error. As a 641 result, prj.conf files are now mandatory in projects. 642 643* Introduced support for extending/replacing the signing mechanism in zephyr, 644 see :ref:`West extending signing <west-extending-signing>` for further 645 details. 646 647* Fixed an issue whereby when using ``*_ROOT`` variables with Sysbuild, these 648 were lost for images. 649 650* Enhanced ``zephyr_get`` CMake helper function to optionally support merging 651 of scoped variables into a list. 652 653* Added a new CMake helper function for setting/updating sysbuild CMake cache 654 variables: ``sysbuild_cache_set``. 655 656* Enhanced ``zephyr_get`` CMake helper function to lookup multiple variables 657 and return the result in a variable of different name. 658 659* Introduced ``EXTRA_CONF_FILE``, ``EXTRA_DTC_OVERLAY_FILE``, and 660 ``EXTRA_ZEPHYR_MODULES`` for better naming consistency and uniform behavior 661 for applying extra build settings in addition to Zephyr automatic build 662 setting lookup. 663 ``EXTRA_CONF_FILE`` replaces ``OVERLAY_CONFIG``. 664 ``EXTRA_ZEPHYR_MODULES`` replaces ``ZEPHYR_EXTRA_MODULES``. 665 ``EXTRA_DTC_OVERLAY_FILE`` is new, see 666 :ref:`Set devicetree overlays <set-devicetree-overlays>` for further details. 667 668* Twister now supports ``gtest`` harness for running tests written in gTest. 669 670* Added an option to validate device initialization priorities at build time. 671 To use it, enable :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES`, see 672 :ref:`check_init_priorities.py` for more details. 673 674* Added a new option to disable tracking of macro expansion when compiling, 675 :kconfig:option:`CONFIG_COMPILER_TRACK_MACRO_EXPANSION`. This option may be 676 disabled to reduce compiler verbosity when errors occur during macro 677 expansions, e.g. in device definition macros. 678 679* Twister now supports loading test configurations from alternative root 680 folder/s by using ``--alt-config-root``. When a test is found, Twister will 681 check if a test configuration file exist in any of the alternative test 682 configuration root folders. For example, given 683 ``$test_root/tests/foo/testcase.yaml``, Twister will use 684 ``$alt_config_root/tests/foo/testcase.yaml`` if it exists. 685 686* Twister now uses native YAML lists for fields that were previously defined 687 using space-separated strings. For example: 688 689 .. code-block:: yaml 690 691 platform_allow: foo bar 692 693 can now be written as: 694 695 .. code-block:: yaml 696 697 platform_allow: 698 - foo 699 - bar 700 701 This applies to the following properties: 702 703 - ``arch_exclude`` 704 - ``arch_allow`` 705 - ``depends_on`` 706 - ``extra_args`` 707 - ``extra_sections`` 708 - ``platform_exclude`` 709 - ``platform_allow`` 710 - ``tags`` 711 - ``toolchain_exclude`` 712 - ``toolchain_allow`` 713 714 Note that the old behavior is kept as deprecated. The 715 :zephyr_file:`scripts/utils/twister_to_list.py` script can be used to 716 automatically migrate Twister configuration files. 717 718* When MCUboot image signing is enabled, a warning will now be emitted by cmake 719 if no signing key is set in the project, this warning can be safely ignored 720 if signing is performed manually or outside of zephyr. This warning informs 721 the user that the generated image will not be bootable by MCUboot as-is. 722 723* Babblesim is now included in the west manifest. Users can fetch it by enabling 724 the ``babblesim`` group with west config. 725 726* ``west sign`` now uses DT labels, of "fixed-partition" compatible nodes, to identify 727 application image slots, instead of previously used DT node label properties. 728 If you have been using custom partition layout for MCUboot, you will have to label 729 your MCUboot slot partitions with proper DT node labels; for example partition 730 with "image-0" label property will have to be given slot0_partition DT node label. 731 Label property does not have to be removed from partition node, but will not be used. 732 733 DT node labels used are listed below 734 735 .. table:: 736 :align: center 737 738 +---------------------------------+---------------------------+ 739 | Partition with label property | Required DT node label | 740 +=================================+===========================+ 741 | "image-0" | slot0_partition | 742 +---------------------------------+---------------------------+ 743 | "image-1" | slot1_partition | 744 +---------------------------------+---------------------------+ 745 746* Fixed an issue whereby relative paths supplied for the ``BOARD_ROOT`` value 747 might wrongly emit a warning about a ``boards`` directory not being found. 748 749* Fixed an issue whereby relative paths did not work for sysbuild images. 750 751Drivers and Sensors 752******************* 753 754* Device model 755 756 * Devices that do not require an initialization routine can now pass ``NULL`` 757 to the ``DEVICE_*_DEFINE()`` macros. 758 759* Auxiliary display 760 761 * New auxiliary display (auxdisplay) peripheral has been added, this allows 762 for interfacing with simple alphanumeric displays that do not feature 763 graphic capabilities. This peripheral is marked as unstable. 764 765 * HD44780 driver added. 766 767 * Noritake Itron driver added. 768 769 * Grove LCD driver added (ported from existing sample). 770 771* ADC 772 773 * MCUX LPADC driver now uses the channel parameter to select a software channel 774 configuration buffer. Use ``zephyr,input-positive`` and 775 ``zephyr,input-negative`` devicetree properties to select the hardware 776 channel(s) to link a software channel configuration to. 777 * MCUX LPADC driver ``voltage-ref`` and ``power-level`` devicetree properties 778 were shifted to match the hardware as described in reference manual instead 779 of matching the NXP SDK enum identifiers. 780 * Added support for STM32C0 and STM32H5. 781 * Added DMA support for STM32H7. 782 * STM32: Resolutions are now listed in the device tree for each ADC instance 783 * STM32: Sampling times are now listed in the device tree for each ADC instance 784 * Added driver for Atmel SAM family ADC. 785 * Added driver for Gecko Incremental ADC. 786 * Added driver for Infineon CAT1 ADC. 787 * Added driver for TI ADS7052. 788 * Added driver for TI ADS114S0x family. 789 * Added drivers for Renesas SmartBond GPADC and SDADC. 790 791* Battery-backed RAM 792 793 * Added MCP7940N battery-backed RTC SRAM driver. 794 795* CAN 796 797 * The CAN statistics are now reset when calling :c:func:`can_start`. 798 799 * Renamed the NXP FlexCAN devicetree binding compatible from ``nxp,kinetis-flexcan`` to 800 :dtcompatible:`nxp,flexcan`. 801 802 * Added support for the CAN-FD variant of the NXP FlexCAN controller using devicetree binding 803 :dtcompatible:`nxp,flexcan-fd`. 804 805 * Added support for the NXP NXP S32 CANEXCEL controller using devicetree binding 806 :dtcompatible:`nxp,s32-canxl`. 807 808 * Added support for the Atmel SAM0 CAN controller using devicetree binding 809 :dtcompatible:`atmel,sam0-can`. 810 811 * Refactored the Bosch M_CAN controller driver backend to allow for per-instance configuration via 812 devicetree. 813 814 * Now supports STM32H5 series. 815 816* Clock control 817 818 * Atmel SAM/SAM0: Introduced peripheral clock control. 819 * Atmel SAM0: Improved ``samd20``/``samd21``/``samr21`` clocking mechanism. 820 * STM32F4: Added support for PLL I2S 821 822* Console: 823 824 * The native_posix and bsim console drivers have been merged into one generic 825 driver usable by all POSIX arch based boards. 826 827* Counter 828 829 * Added support on timer based counter on STM32H7 and STM32H5 830 * Added support on RTC based counter on STM32C0 and STM32H5 831 832* Crypto 833 834 * Added support for STM32H5 AES 835 836* DAC 837 838 * Added support on STM32H5 series. 839 840* Disk 841 842 * SDMMC STM32L4+: Now compatible with internal DMA 843 * NVME disks are now supported using FATFS, with a single I/O queue enabled 844 845* Display 846 847 * Improved MCUX ELCDIF and SSD16XX display controller drivers 848 * Added support for ILI9342C display controller 849 * Added support for OTM8009A panel 850 851* DMA 852 853 * STM32C0: Added support for DMA 854 * STM32H5: Added support for GPDMA 855 * STM32H7: Added support for BDMA 856 * Added DMA support for the RP2040 SoC 857 858* EEPROM 859 860 * Switched from :dtcompatible:`atmel,at24` to dedicated :dtcompatible:`zephyr,i2c-target-eeprom` for I2C EEPROM target driver. 861 862* Entropy 863 864 * Added support for STM32H5 series. 865 866* Flash 867 868 * Introduced new flash API call :c:func:`flash_ex_op` which calls 869 :c:func:`ec_op` callback provided by a flash driver. This allows to perform 870 extra operations on flash devices, defined by Zephyr Flash API or by vendor 871 specific header files. :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` should be 872 selected by the driver to indicate that extra operations are supported. 873 To enable extra operations user should select 874 :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED`. 875 * STM32F4: Now supports write protection and readout protection through 876 new flash API call :c:func:`flash_ex_op`. 877 * nrf_qspi_nor: Replaced custom API function ``nrf_qspi_nor_base_clock_div_force`` 878 with ``nrf_qspi_nor_xip_enable`` which apart from forcing the clock divider 879 prevents the driver from deactivating the QSPI peripheral so that the XIP 880 operation is actually possible. 881 * flash_simulator: 882 883 * A memory region can now be used as the storage area for the 884 flash simulator. Using the memory region allows the flash simulator to keep 885 its contents over a device reboot. 886 * When building in native_posix, command line options have been added to select 887 if the flash should be cleared at boot, the flash content kept in RAM, 888 or the flash content file be deleted on exit. 889 890 * spi_flash_at45: Fixed erase procedure to properly handle chips that have 891 their initial sector split into two parts (usually marked as 0a and 0b). 892 * STM32H5 now supports OSPI 893 894* GPIO 895 896 * Converted the ``gpio_keys`` driver to the input subsystem. 897 * Added single-ended IO support for the RP2040 SoC 898 899 * STM32: Supports newly introduced experimental API to enable/disable interrupts 900 without re-config 901 902* I2C 903 904 * Added support for STM32C0 and STM32H5 series 905 906* I2S 907 908 * STM32: Domain clock should now be configured by device tree. 909 910* Input 911 912 * Introduced the :ref:`input` subsystem. 913 914* KSCAN 915 916 * Added a :dtcompatible:`zephyr,kscan-input` input to kscan compatibility driver. 917 * Converted the ``ft5336`` and ``kscan_sdl`` drivers to the input subsystem. 918 919* MIPI-DSI 920 921 * Added support on STM32H7 922 923* Misc 924 925 * Added PIO support for the RP2040 SoC 926 927* PCIE 928 929 * Enable filtering PCIe devices by class/revision. 930 931* PECI 932 933* Retained memory 934 935 * Retained memory (retained_mem) driver has been added with backends for 936 Nordic nRF GPREGRET, and uninitialised RAM. 937 938* Pin control 939 940 * Added support for Infineon CAT1 941 * Added support for TI K3 942 * Added support for ARC emdsp 943 944* PWM 945 946 * Added support for STM32C0. 947 * STM32: Now supports 6-PWM channels 948 * Added PWM driver for Microchip XEC BBLED. 949 950* Power domain 951 952* Regulators 953 954 * The regulator API can now be built without thread-safe reference counting 955 by using :kconfig:option:`CONFIG_REGULATOR_THREAD_SAFE_REFCNT`. This 956 feature can be useful in applications that do not enable 957 :kconfig:option:`CONFIG_MULTITHREADING`. 958 * Added support for ADP5360 PMIC 959 * Added support for nPM1300 PMIC 960 * Added support for Raspberry Pi Pico core supply regulator 961 962* SDHC 963 964 * Support was added for using CPOL/CPHA SPI clock modes with SD cards, as 965 some cards require the SPI clock switch to low when not active 966 967* Sensor 968 969 * Added generic voltage measurement sample 970 * Removed STM32 Vbat measurement sample (replaced by a generic one) 971 * Added STM32 Vref sensor driver 972 * Added STM32 Vref/Vbat measurement through the new generic voltage measurement sample 973 * Added temperature measurement driver for STM32C0 and STM32F0x0 974 * Removed STM32 temperature measurement sample (replaced by a generic one) 975 * Added STM32 temperature measurement through the generic temperature measurement sample 976 977* Serial 978 979 * Added UART3 and UART4 configuration for ``gd32vf103`` SoCs. 980 * uart_altera: added new driver for Altera Avalon UART. 981 * uart_emul: added new driver for emulated UART. 982 * uart_esp32: 983 * Added support for ESP32S3 SoC. 984 * Added support for RS-485 half duplex mode. 985 * uart_hostlink: added new driver for virtual UART via Synopsys ARC hostlink channels. 986 * uart_ifx_cat1: added new driver for Infineon CAT1 UART. 987 * uart_mcux: added power management support. 988 * uart_mcux_flexcomm: added support for asynchronous operations. 989 * uart_mcux_lpuart: added support for parity. 990 * uart_ns16550: now supports per instance hardware access mode instead of 991 one access mode for all instances. 992 * uart_pl011: fixed interrupt support. 993 * uart_rpi_pico_pio: added new driver to support UART via 994 Programmable Input/Output (PIO) on Raspberry Pi Pico. 995 * uart_xmc4xxx: added support for asynchronous operations. 996 * uart_stm32: Now support driver enable mode 997 * Added hardware flow control support for the RP2040 SoC 998 999* SPI 1000 1001 * Added support on STM32H5 series. 1002 1003* Timer 1004 1005 * Support added for stopping Nordic nRF RTC system timer, which fixes an 1006 issue when booting applications built in prior version of Zephyr. 1007 1008 * STM32: Now supports a prescaler at the input of clock (default not divided). 1009 Prescaler allows to achieve higher LPTIM timeout (up to 256s when lptim clocked by LSE) 1010 and consequently higher core sleep durations but impacts the tick precision. 1011 To be used with caution. 1012 1013* USB 1014 1015 * Added remote wakeup support for the RP2040 SoC 1016 * Added Battery Charging (BC12) API and PI3USB9201 driver implementation. 1017 * Added new USB device controller drivers (using usb_dc API) for ITE IT82xx2 1018 and smartbond platforms. 1019 * Added USB device controller driver skeleton for UDC API. 1020 * Reworked DWC2 driver and added support for STM32F4 SoC family 1021 1022* W1 1023 1024 * Added DS2482-800 1-Wire master driver. See the :dtcompatible:`maxim,ds2482-800` 1025 devicetree binding for more information. 1026 * Added :kconfig:option:`CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING` which can be 1027 enabled force the 1-Wire network layer to use multidrop addressing. 1028 1029* Watchdog 1030 1031 * Added support for STM32C0 and STM32H5 series 1032 1033Networking 1034********** 1035 1036* CoAP: 1037 1038 * Added :c:func:`coap_append_descriptive_block_option` and 1039 :c:func:`coap_get_block1_option` APIs to facilitate block transfer handling. 1040 * Added a :ref:`coap_client_interface` helper library, based on the existing CoAP APIs. 1041 * Fixed missing token length validation in :c:func:`coap_header_get_token`. 1042 * Fixed missing response check in :c:func:`coap_response_received`. 1043 1044* Connection Manager: 1045 1046 * Extended the library with a generic L2 connectivity API. 1047 * Refactored library internals significantly. 1048 * Improved thread safety in the library. 1049 * Reworked how Connection Manager events are notified - they are no longer 1050 raised for each interface individually, but instead: 1051 1052 * ``NET_EVENT_L4_CONNECTED`` is called only once after the first 1053 interface gains connectivity. 1054 * ``NET_EVENT_L4_DISCONNECTED`` is called only after connectivity is 1055 lost on all interfaces. 1056 1057 * Improved Connection Manager test coverage. 1058 1059* DHCPv4: 1060 1061 * Fixed a potential packet leak in DHCPv4 input handler. 1062 * Fixed a potential NULL pointer dereference in ``dhcpv4_create_message()``. 1063 * Added a mechanism to register a callback for handling DHCPv4 options. 1064 * Modified ``dhcpv4_client`` sample to trigger DHCP on all network interfaces 1065 in the system. 1066 1067* DNS: 1068 1069 * Fixed a possible crash on NULL pointer as a query callback. 1070 * Added a check on existing DNS servers before reconfigure. 1071 * Improved debug logging in DNS SD. 1072 * Fixed IPv4/IPv6 address handling in mDNS responder, if both are IPv4 and IPv6 are enabled. 1073 * Removed dead code in DNS SD query parsing. 1074 1075* Ethernet: 1076 1077 * Fixed double packet dereference in case of ARP request transmission errors. 1078 * Fixed a possible slist corruption in case Ethernet interface went up before 1079 LLDP initialization. 1080 1081* HTTP: 1082 1083 * Added HTTP service and resource iterable sections. 1084 1085* ICMPv6: 1086 1087 * Implemented IPv6 RA Recursive DNS Server option handling. 1088 1089* IEEE802154: 1090 1091 * Fixed a corner case with 6LoWPAN IP Header Compression and fragmentation, where 1092 for a short range of packet sizes, fragmentation did not work correctly after IPHC. 1093 * Added new radio API function to start continuous carrier wave transmission. 1094 * Several improvements/fixes in IEEE802154 L2 security. 1095 * Fixed a packet leak when handling beacon/command frames. 1096 * Deprecated :kconfig:option:`CONFIG_IEEE802154_2015` Kconfig option. 1097 * Added simple Babblesim echo test over IEEE802154 L2. 1098 * Improved IEEE802154 L2 test coverage. 1099 * Multiple other minor IEEE802154 L2 and documentation improvements/fixes. 1100 1101* IPv4: 1102 1103 * Implemented a fallback to IPv4 Link Local address if no other address is available. 1104 * Fixed :c:func:`net_ipv4_is_ll_addr` helper function to correctly identify LL address. 1105 * Fixed possible NULL pointer dereference in IPv4 fragmentation. 1106 1107* LwM2M: 1108 1109 * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_UPDATE` event. 1110 * Added missing ``const`` qualifier in the APIs, where applicable. 1111 * Fixed socket error handling on packet transmission. 1112 * Improved LwM2M context cleanup when falling back to regular Registration. 1113 * Added possibility to register a callback function for FW update cancel action. 1114 * Added possibility to register a callback function for LwM2M send operation. 1115 * Added ISPO voltage sensor object support. 1116 * Fixed stopping of the LwM2M client when it's suspended. 1117 * Fixed a minor CoAP RFC incompatibility, where it should not be assumed that 1118 consecutive data blocks in block transfer will carry the same token. 1119 * Added block transfer support on TX. 1120 * Fixed a possible out-of-bounds memory access when creating FW update object. 1121 * Added possibility to override default socket option configuration with a 1122 dedicated callback function (``set_socketoptions``). 1123 * Improved LwM2M test coverage. 1124 * Several other minor improvements and cleanups. 1125 1126* Misc: 1127 1128 * Added generic ``OFFLOADED_NETDEV_L2`` for offloaded devices to allow 1129 offloaded implementations to detect when interface is brought up/down. 1130 * Factored out ``net_buf_simple`` routines to a separate source file. 1131 * Fixed possible NULL pointer dereference in ``net_pkt_cursor_operate()``. 1132 * Reimplemented ``net_mgmt`` to use message queue internally. This also fixed 1133 a possible event loss with the old implementation. 1134 * Fixed error handling in ``net ping`` shell command to avoid shell freeze. 1135 * Improved Ethernet error statistics logging in ``net stats`` shell command. 1136 * Moved SLIP TAP implementation into a separate file, to prevent build warnings 1137 about missing sources for Ethernet drivers. 1138 * Fixed crashes in ``echo_server`` and ``echo_client`` samples, when 1139 userspace is enabled. 1140 * Fixed IPv6 support in ``mqtt_sn_publisher`` sample. 1141 * Fixed build issues with arm-clang in the networking stack. 1142 * Added new ``NET_IF_IPV6_NO_ND`` and ``NET_IF_IPV6_NO_MLD`` interface flags, 1143 which allow to disable ND/MLD respectively on an interface. 1144 * Reworked network interface mutex protection, to use individual mutex for 1145 each interface, instead of a global one. 1146 * Added new :zephyr:code-sample:`aws-iot-mqtt`. 1147 * Added a few missing NULL pointer checks in network interface functions. 1148 1149* OpenThread: 1150 1151 * Implemented the following OpenThread platform APIs: 1152 1153 * ``otPlatRadioSetMacFrameCounterIfLarger()``, 1154 * ``otPlatCryptoEcdsaGenerateAndImportKey()``, 1155 * ``otPlatCryptoEcdsaExportPublicKey()``, 1156 * ``otPlatCryptoEcdsaVerifyUsingKeyRef()``, 1157 * ``otPlatCryptoEcdsaSignUsingKeyRef()``. 1158 1159 * Added :kconfig:option:`CONFIG_OPENTHREAD_CSL_TIMEOUT` option. 1160 * Removed no longer needed ``CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB``. 1161 * Added simple Babblesim echo test over OpenThread. 1162 1163* SNTP: 1164 1165 * Switched to use ``zsock_*`` functions internally. 1166 1167* Sockets: 1168 1169 * Fixed ``SO_RCVBUF`` and ``SO_SNDBUF`` socket options handling, so that they 1170 configure TCP window sizes correctly. 1171 * Fixed ``SO_SNDTIMEO`` socket option handling - the timeout value was ignored 1172 and socket behaved as in non-blocking mode when used. 1173 * Reworked TLS sockets implementation, to allow parallel TX/RX from 1174 different threads. 1175 * Implemented TLS handshake timeout. 1176 * Added support for asynchronous connect for TCP sockets. 1177 * Fixed blocking :c:func:`recv` not being interrupted on socket close. 1178 * Fixed blocking :c:func:`accept` not being interrupted on socket close. 1179 * Improved sockets test coverage. 1180 1181* TCP: 1182 1183 * Fixed incorrect TCP stats by improving packet processing result reporting. 1184 * Added :kconfig:option:`CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT` to allow to configure 1185 packet allocation timeout. 1186 * Improved TCP test coverage. 1187 * Fixed TCP MSS calculation for IPv6. 1188 * Fixed possible double acknowledgment of retransmitted data. 1189 * Fixed local address setting for incoming connections. 1190 * Fixed double TCP context dereferencing in certain corner cases. 1191 1192* TFTP: 1193 1194 * Added ``tftp_put()`` API to support TFTP write request. 1195 * Introduced ``tftp_callback_t`` callback to allow to read large files. 1196 * Reworked ``struct tftpc`` client context structure, to allow for parallel 1197 communication from several contexts. 1198 1199* UDP: 1200 1201 * :kconfig:option:`CONFIG_NET_UDP_MISSING_CHECKSUM` is now enabled by default. 1202 1203* Websockets: 1204 1205 * Implemented proper timeout handling in :c:func:`websocket_recv_msg`. 1206 * Fixed implicit type conversion when parsing length field, which could lead 1207 to data loss. 1208 1209* Wi-Fi: 1210 1211 * Display TWT (Target Wake Time) configuration response status in Wi-Fi shell. 1212 * Added more detailed TWT response parameters printout in Wi-Fi shell. 1213 * Added new ``NET_EVENT_WIFI_TWT_SLEEP_STATE`` event to notify TWT sleep status. 1214 * Fixed an issue where not all security modes were displayed correctly on scan. 1215 * Added connection status and AP capabilities verification before initiating 1216 TWT operation. 1217 * TWT intervals are changed from milliseconds to microseconds, interval 1218 variables are also renamed. 1219 * Extended Power Saving configuration parameters with listening interval and 1220 wake up mode. 1221 * Added :kconfig:option:`CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS` option, which 1222 enables providing of RAW (unprocessed) scan results to the application with 1223 ``NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT`` event. 1224 * Several other minor fixes/cleanups in the Wi-Fi management/shell modules. 1225 1226* zperf 1227 1228 * Added an extra parameter to disable Nagle's algorithm with TCP benchmarks. 1229 * Added support for handling multiple incoming TCP sessions. 1230 * Made zperf thread priority and stack size configurable. 1231 * Several minor cleanups in the module. 1232 1233USB 1234*** 1235 1236* USB device support 1237 1238 * Fixed control endpoint handling with MPS of 8 bytes. 1239 1240* New experimental USB support 1241 1242 * Various improvements for new device support, better string descriptor support, 1243 implemented usbd_class_shutdown API. 1244 * Added USB Mass Storage class and CDC ECM class implementations for the new 1245 device support. 1246 1247Libraries / Subsystems 1248********************** 1249 1250* File systems 1251 1252 * Added :kconfig:option:`CONFIG_FS_FATFS_REENTRANT` to enable the FAT FS reentrant option. 1253 * With LittleFS as backend, :c:func:`fs_mount` return code was corrected to ``EFAULT`` when 1254 called with ``FS_MOUNT_FLAG_NO_FORMAT`` and the designated LittleFS area could not be 1255 mounted because it has not yet been mounted or it required reformatting. 1256 * The FAT FS initialization order has been updated to match LittleFS, fixing an issue where 1257 attempting to mount the disk in a global function caused FAT FS to fail due to not being registered beforehand. 1258 FAT FS is now initialized in POST_KERNEL. 1259 * Added :kconfig:option:`CONFIG_FS_LITTLEFS_FMP_DEV` to enable possibility of using LittleFS 1260 for block devices only, e.g. without Flash support. The option is set to 'y' by default in 1261 order to keep previous behaviour. 1262 1263* IPC 1264 1265 * :c:func:`ipc_service_close_instance` now only acts on bounded endpoints. 1266 * ICMSG: removed race condition during bonding. 1267 * ICMSG: removed internal API for clearing shared memory. 1268 * ICMSG: added mutual exclusion access to SHMEM. 1269 * Fixed CONFIG_OPENAMP_WITH_DCACHE. 1270 1271* Management 1272 1273 * Added optional input expiration to shell MCUmgr transport, this allows 1274 returning the shell to normal operation if a complete MCUmgr packet is not 1275 received in a specific duration. Can be enabled with 1276 :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT` and timeout 1277 set with 1278 :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME`. 1279 1280 * MCUmgr fs_mgmt upload and download now caches the file handle to improve 1281 throughput when transferring data, the file is no longer opened and closed 1282 for each part of a transfer. In addition, new functionality has been added 1283 that will allow closing file handles of uploaded/downloaded files if they 1284 are idle for a period of time, the timeout is set with 1285 :kconfig:option:`MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME`. There is a 1286 new command that can be used to close open file handles which can be used 1287 after a file upload is complete to ensure that the file handle is closed 1288 correctly, allowing other transports or other parts of the application 1289 code to use it. 1290 1291 * A new version of the SMP protocol used by MCUmgr has been introduced in the 1292 header, which is used to indicate the version of the protocol being used. 1293 This updated protocol allows returning much more detailed error responses 1294 per group, see the 1295 :ref:`MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>` 1296 for details. 1297 1298 * MCUmgr has now been marked as a stable Zephyr API. 1299 1300 * The MCUmgr UDP transport has been refactored to resolve some concurrency 1301 issues and fixes a potential issue whereby an application might call the 1302 open transport function whilst it is already open, causing an endless log 1303 output loop. 1304 1305 * The MCUmgr fs_mgmt group Kconfig ``Insecure`` text has been replaced with 1306 a CMake warning which triggers if fs_mgmt hooks are not enabled, as these 1307 hooks can be used to ensure security of file access allowed by MCUmgr 1308 clients. 1309 1310 * Fixed an issue with MCUmgr fs_mgmt file download not checking if the 1311 offset parameter was provided. 1312 1313 * Fixed an issue with MCUmgr fs_mgmt file upload notification hook not 1314 setting upload to true. 1315 1316 * Fixed an issue with MCUmgr img_mgmt image upload ``upgrade`` field wrongly 1317 checking if the new image was the same version of the application and 1318 allowing it to be uploaded if it was. 1319 1320 * MCUmgr img_mgmt group will only verify the SHA256 hash provided by the 1321 client against the uploaded image (if support is enabled) if a full SHA256 1322 hash was provided. 1323 1324 * MCUmgr Kconfig options have changed from ``select`` to ``depends on`` which 1325 means that some additional Kconfig options may now need to be selected by 1326 applications. :kconfig:option:`CONFIG_NET_BUF`, 1327 :kconfig:option:`CONFIG_ZCBOR` and :kconfig:option:`CONFIG_CRC` are needed 1328 to enable MCUmgr support, :kconfig:option:`CONFIG_BASE64` is needed to 1329 enable shell/UART/dummy MCUmgr transports, 1330 :kconfig:option:`CONFIG_NET_SOCKETS` is needed to enable the UDP MCUmgr 1331 transport, :kconfig:option:`CONFIG_FLASH` is needed to enable MCUmgr 1332 fs_mgmt, :kconfig:option:`CONFIG_FLASH` and 1333 :kconfig:option:`CONFIG_IMG_MANAGER` are needed to enable MCUmgr img_mgmt. 1334 1335 * MCUmgr img_mgmt group now uses unsigned integer values for image and slot 1336 numbers, these numbers would never have been negative and should have been 1337 unsigned. 1338 1339* POSIX API 1340 1341 * Improved the locking strategy for :c:func:`eventfd_read()` and 1342 :c:func:`eventfd_write()`. This eliminated a deadlock scenario that was 1343 present since the initial contribution and increased performance by a 1344 factor of 10x. 1345 1346 * Reimplemented :ref:`POSIX <posix_support>` threads, mutexes, condition 1347 variables, and barriers using native Zephyr counterparts. POSIX 1348 synchronization primitives in Zephyr were originally implemented 1349 separately and received less maintenance as a result. Unfortunately, this 1350 opened POSIX up to unique bugs and race conditions. Going forward, POSIX 1351 will benefit from all improvements to Zephyr's synchronization and 1352 threading API and race conditions have been mitigated. 1353 1354* Retention 1355 1356 * Retention subsystem has been added which adds enhanced features over 1357 retained memory drivers allowing for partitioning, magic headers and 1358 checksum validation. See :ref:`retention API <retention_api>` for details. 1359 Support for the retention subsystem is experimental. 1360 1361 * Boot mode retention module has been added which allows for setting/checking 1362 the boot mode of an application, initial support has also been added to 1363 MCUboot to allow for applications to use this as an entrance method for 1364 MCUboot serial recovery mode. See :ref:`boot mode API <boot_mode_api>` for 1365 details. 1366 1367* RTIO 1368 1369 * Added policy that every ``sqe`` will generate a ``cqe`` (previously an RTIO_SQE_TRANSACTION 1370 entry would only trigger a ``cqe`` on the last ``sqe`` in the transaction. 1371 1372* Power management 1373 1374 * Added a new policy event API that can be used to register expected events 1375 that will wake the system up in the future. This can be used to influence 1376 the system on which low power states can be used. 1377 1378 * Added a new device tree property ``zephyr,pm-device-runtime-auto`` to 1379 automatically enable device runtime power management on a device after its 1380 initialization. 1381 1382HALs 1383**** 1384 1385* Nordic 1386 1387 * Updated nrfx to version 3.0.0. 1388 1389* STM32 1390 1391 * stm32cube: updated STM32F0 to cube version V1.11.4. 1392 * stm32cube: updated STM32F3 to cube version V1.11.4 1393 * stm32cube: updated STM32L0 to cube version V1.12.2 1394 * stm32cube: updated STM32U5 to cube version V1.2.0 1395 * stm32cube: updated STM32WB to cube version V1.16.0 1396 1397* Raspberry Pi Pico 1398 1399 * Updated hal_rpi_pico to version 1.5.0 1400 1401MCUboot 1402******* 1403 1404* Relocated the MCUboot Kconfig options from the main ``Kconfig.zephyr`` file to 1405 a new ``modules/Kconfig.mcuboot`` module-specific file. This means that, for 1406 interactive Kconfig interfaces, the MCUboot options will now be located under 1407 ``Modules`` instead of under ``Boot Options``. 1408 1409* Added ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` that allows to pass arguments to 1410 west sign when invoked from cmake. 1411 1412Storage 1413******* 1414 1415* Added :kconfig:option:`CONFIG_FLASH_MAP_LABELS`, which will enable runtime access to the labels 1416 property of fixed partitions. This option is implied if kconfig:option:`CONFIG_FLASH_MAP_SHELL` 1417 is enabled. These labels will be displayed in a separate column when using the ``flash_map list`` 1418 shell command. 1419 1420Trusted Firmware-M 1421****************** 1422 1423* Enable routing of PSA Crypto API calls from NS to S, thanks to separating MbedTLS into three 1424 distinct libraries at build time (crypto, TLS, X.509). This also resolves header conflicts with 1425 earlier integrations of TF-M and MbedTLS. 1426* Added psa_crypto sample back. 1427 1428zcbor 1429***** 1430 1431Updated from 0.6.0 to 0.7.0. 1432Among other things, this update brings: 1433 1434* C++ improvements 1435* float16 support 1436* Improved docs 1437* -Wall and -Wconversion compliance 1438 1439Tests and Samples 1440***************** 1441 1442* Two Babblesim based networking (802.15.4) tests have been added, which are run in Zephyr's CI 1443 system. One of them including the OpenThread stack. 1444* For native_posix and the nrf52_bsim: Many tests have been fixed and enabled. 1445* LittleFS sample has been given SPI example configuration for nrf52840dk_nrf52840. 1446* Migrated all tests to new Ztest API and deprecated legacy Ztest. 1447