1:orphan: 2 3.. _zephyr_3.6: 4 5Zephyr 3.6.0 6############ 7 8We are pleased to announce the release of Zephyr version 3.6.0. 9 10Major enhancements with this release include: 11 12* New :ref:`GNSS subsystem <gnss_api>` added, enabling geo-awareness in Zephyr applications. 13* New API and drivers introduced for interfacing with :ref:`keyboard matrices <gpio-kbd>`. 14* New socket and CoAP service libraries streamlining the implementation of socket and CoAP servers 15 respectively, while also optimizing the use of resources. 16* Integrated Trusted Firmware-M (TF-M) 2.0, including an update to Mbed TLS 3.5.2. 17* Improved LLEXT tooling, simplifying module creation in the Zephyr build system. 18* Userspace support extended to Xtensa architecture. 19* Build system now supports Link Time Optimization (LTO), reducing the size of the final image. 20* Bluetooth Mesh protocol 1.1 now supported by default. 21* Major updates to the documentation of the :ref:`native simulator <native_sim>`, clarifying 22 supported peripherals and how to use them. 23* Over 30 new supported boards, spanning all Zephyr-supported architectures. 24 25An overview of the changes required or recommended when migrating your application from Zephyr 26v3.5.0 to Zephyr v3.6.0 can be found in the separate :ref:`migration guide<migration_3.6>`. 27 28The following sections provide detailed lists of changes by component. 29 30Security Vulnerability Related 31****************************** 32The following CVEs are addressed by this release: 33 34More detailed information can be found in: 35https://docs.zephyrproject.org/latest/security/vulnerabilities.html 36 37* CVE-2023-5779 `Zephyr project bug tracker GHSA-7cmj-963q-jj47 38 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7cmj-963q-jj47>`_ 39 40* CVE-2023-6249 `Zephyr project bug tracker GHSA-32f5-3p9h-2rqc 41 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-32f5-3p9h-2rqc>`_ 42 43* CVE-2023-6749 `Zephyr project bug tracker GHSA-757h-rw37-66hw 44 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-757h-rw37-66hw>`_ 45 46* CVE-2023-6881 `Zephyr project bug tracker GHSA-mh67-4h3q-p437 47 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mh67-4h3q-p437>`_ 48 49* CVE-2023-7060: Under embargo until 2024-03-14 50 51* CVE-2024-1638 `Zephyr project bug tracker GHSA-p6f3-f63q-5mc2 52 <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p6f3-f63q-5mc2>`_ 53 54Architectures 55************* 56 57* ARC 58 59 * Enabled hardware prefetcher and shared cluster cache (SCM - Shared Cluster 60 Memory) for ARCv3 processors (HS5x & HS6x). 61 * Disabled Thread-local Storage support for platforms with two or more register banks. 62 * Fixed unstable work of application built with MetaWare toolchain for hardware 63 platforms (garbage in .device_states section). 64 65* ARM 66 67 * MPU regions are now always cleared before initialization. 68 * Standardized on :c:func:`arch_secondary_cpu_init` to provide consistency 69 across all architectures. 70 * Renamed :c:func:`z_arm_prep_c` as :c:func:`z_prep_c` to provide 71 consistency across all architectures. 72 * Renamed the exception header to be consistent across all architectures. 73 * GDB stubs added (currently only supports Zynq-7000). 74 * Added support for custom interrupt controllers using 75 :kconfig:option:`CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER`. 76 * MMU and MPU initialization moved to :c:func:`z_prep_c` for Cortex-A and 77 Cortex-R to enable initialization by individual cores. 78 * Common Cortex-M MPU code moved to ``arch/arm/core/mpu``. 79 80* Xtensa 81 82 * Removed the unused Kconfig option ``CONFIG_XTENSA_NO_IPC``. 83 84 * Added userspace support via MMU. 85 86Bluetooth 87********* 88 89* Audio 90 91 * Changed ``bt_bap_scan_delegator_subgroup`` to :c:struct:`bt_bap_bass_subgroup` and 92 made it independent of :kconfig:option:`CONFIG_BT_BAP_SCAN_DELEGATOR`. 93 * Modified :c:func:`bt_bap_stream_send` to no longer take a timestamp as parameter, 94 and added :c:func:`bt_bap_stream_send_ts` that does. 95 * Modified :c:func:`bt_cap_stream_send` to no longer take a timestamp as parameter, 96 and added :c:func:`bt_cap_stream_send_ts` that does. 97 * Assigned number values have been moved from :file:`include/zephyr/bluetooth/audio/lc3.h` to 98 :file:`include/zephyr/bluetooth/audio/audio.h` and the ``LC3`` infix have been removed. 99 * The CAP initiator APIs have been streamlined and follow the same parameter pattern. 100 * Added Kconfig options to make MCC functionality optional to reduce memory usage for simple 101 clients. 102 * Added CAP Commander change volume and change volume offset. 103 * Added proper support for doing decoding in the application instead of in the controller by 104 modifying how the ISO data path is configured. 105 * Added :c:func:`bt_csip_set_member_unregister` to unregister a CSIS instance. 106 * Added helper functions to get and set assigned number values in codec configuration and 107 codec capabilities. 108 * Added support for the new mono audio location. 109 * Added ISO state callbacks for streams so the user knows the state of the CIS. 110 * Added :c:func:`bt_pacs_set_available_contexts_for_conn` to set available context per connection. 111 * Refactored the :c:struct:`bt_bap_base` to be an abstract struct with new helper functions, 112 so that Zephyr supports all BASEs regardless of the size. 113 114* Host 115 116 * Added ``recycled()`` callback to :c:struct:`bt_conn_cb`, which notifies listeners when a 117 connection object has been freed, so it can be utilized for different purposes. No guarantees 118 are made to what listener will be granted the object, as only the first claim is served. 119 * Modified :c:func:`bt_iso_chan_send` to no longer take a timestamp as parameter, 120 and added :c:func:`bt_iso_chan_send_ts` that does. 121 122* Mesh 123 124 * Added the delayable messages functionality to apply random delays for 125 the transmitted responses on the Access layer. 126 The functionality is enabled by the :kconfig:option:`CONFIG_BT_MESH_ACCESS_DELAYABLE_MSG` 127 Kconfig option. 128 * The Bluetooth Mesh protocol 1.1 is now supported by default. 129 130* Controller 131 132 * Added deinit implementation for ESP32 controller. 133 134* HCI Driver 135 136 * Split ST HCI SPI Bluetooth driver from the Zephyr one to provide more features 137 based on ST SPI protocols V1 and V2. As a result, :dtcompatible:`st,hci-spi-v1` and 138 :dtcompatible:`st,hci-spi-v2` were introduced. 139 140Boards & SoC Support 141******************** 142 143* Added support for these SoC series: 144 145 * Added support for Renesas R-Car Gen4 series. 146 * Added support for STM32F303xB SoC variants. 147 * Added support for STM32H7B0xx SoC variants. 148 * Added support for STM32L010xx SoC variants. 149 * Added support for STM32L081xx SoC variants. 150 * Added support for STM32U5A9xx SoC variants. 151 * Added support for NXP S32K1 devices. 152 * Added support for NXP IMX8ULP SoC. 153 * Added support for NXP MIMXRT595 DSP core. 154 155* Made these changes in other SoC series: 156 157 * Nordic SoCs now imply :kconfig:option:`CONFIG_XIP` instead of selecting it. This allows for 158 creating RAM-based applications by disabling it. 159 * BLE is now supported on STM32WBA series. 160 * xtensa: imx8: Split the generic i.MX8 SoC into i.MX8QXP and i.MX8QM. 161 * LPC55xxx: Fixed the system hardware clock cycle rate. 162 163* Added support for these ARM boards: 164 165 * Added support for Adafruit QTPy RP2040 board: ``adafruit_qt_py_rp2040``. 166 * Added support for FANKE FK7B0M1-VBT6 board: ``fk7b0m1_vbt6``. 167 * Added support for Renesas R-Car Spider board CR52: ``rcar_spider_cr52``. 168 * Added support for ST Nucleo F722ZE board: ``nucleo_f722ze``. 169 * Added support for ST STM32H750B Discovery Kit: ``stm32h750b_dk``. 170 * Added support for ST STM32L4R9I Discovery board: ``stm32l4r9i_disco``. 171 * Added support for ST STM32U5A9J-DK discovery kit: ``stm32u5a9j_dk``. 172 * Added support for ST Nucleo WBA55CG board: ``nucleo_wba55cg``. 173 * Added support for ST STM32WB5MM-DK Discovery board: ``stm32wb5mm_dk``. 174 * Added support for Wiznet W5500 Evaluation Pico board: ``w5500_evb_pico``. 175 * Added support for ADI boards: ``adi_sdp_k1``, ``adi_eval_adin1110ebz``, 176 ``adi_eval_adin2111ebz``. 177 * Added support for NXP UCANS32K1SIC board: ``ucans32k1sic``. 178 179* Added support for this RISC-V board: 180 181 * Added Lilygo TTGO T8-C3 board: ``ttgo_t8c3``. 182 183* Added support for these Xtensa boards: 184 185 * Added support for NXP iMX8ULP board: ``nxp_adsp_imx8ulp``. 186 * Added Heltec Wireless Stick Lite (V3) board: ``heltec_wireless_stick_lite_v3``. 187 * Added KINCONY-KC868-A32 board: ``kincony_kc868_a32``. 188 * Added Lolin ESP32-S2 Mini board: ``esp32s2_lolin_mini``. 189 * Added Lilygo TTGO LoRa32 board: ``ttgo_lora32``. 190 * Added M5Stack AtomS3 board: ``m5stack_atoms3``. 191 * Added M5Stack AtomS3-Lite board: ``m5stack_atoms3_lite``. 192 * Added M5Stack StampS3 board: ``m5stack_stamps3``. 193 194* Made these changes for ARM boards: 195 196 * Added support for low power on G1120B0MIPI using RT595. 197 * Added support for lpspi, lpi2c on NXP board: ``mimx93_evk_a55``. 198 * Fixed partition naming on ``lpcxpresso55s69`` to use the standard slot 199 naming used by TFM-enabled Zephyr platforms. 200 * Enabled support for linkserver debugger on ``frdm_kl25z``, ``mimxrt1015_evk``, 201 ``mimxrt1020_evk``, ``mimxrt1050_evk``, ``mimxrt685_evk``, ``frdm_k64f``. 202 * Switched MCUBoot FW Update mode on NXP boards from Swap & Scratch to Swap & Move. 203 204* Made these changes for RISC-V boards: 205 206 * Enabled ADC support on ``longan_nano``. 207 208* Made these changes for native/POSIX boards: 209 210 * The :ref:`simulated nrf5340 targets<nrf5340bsim>` now include the IPC and MUTEX peripherals, 211 and support OpenAMP to communicate between the cores. 212 It is now possible to run the BLE controller or 802.15.4 driver in the net core, and application 213 and BT host in the app core. 214 215 * The nrf*_bsim simulated targets now include models of the UART peripheral. It is now possible 216 to connect a :ref:`nrf52_bsim<nrf52_bsim>` UART to another, or a UART in loopback, utilizing 217 both the new and legacy nRFx UART drivers, in any mode. 218 219 * For the native simulator based targets it is now possible to set via Kconfig command line 220 options which will be handled by the executable as if they were provided from the invoking 221 shell. 222 223 * For all native boards, the native logger backend will now also be 224 used even if the UART is enabled. 225 226 * Several bugfixes and other minor additions to the nRF5x HW models. 227 228 * Multiple documentation updates and fixes for all native boards. 229 230* Added support for these following shields: 231 232 * Added support for M5Stack-Core2 base: ``m5stack_core2_ext``. 233 * Added support for MikroElektronika ACCEL 13 Click: ``mikroe_accel13_click``. 234 * Added support for Waveshare Pico UPS-B: ``waveshare_pico_ups_b``. 235 * Added support for X-NUCLEO-BNRG2A1: BLE expansion board: ``x_nucleo_bnrg2a1``. 236 * Added support for X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi 237 sensor: ``x_nucleo_iks4a1``. 238 239Build system and infrastructure 240******************************* 241 242* Added functionality for Link Time Optimization. 243 This change includes interrupt script generator rebuilding and adds the 244 following Kconfig options: 245 246 - :kconfig:option:`CONFIG_ISR_TABLES_LOCAL_DECLARATION`: 247 LTO compatible interrupt tables parser 248 - :kconfig:option:`CONFIG_LTO`: Enable Link Time Optimization 249 250 Currently the LTO compatible interrupt tables parser is only supported by ARM architectures and 251 GCC compiler/linker. 252 See pull request :github:`66392` for details. 253 254* Dropped the ``COMPAT_INCLUDES`` option. It was unused since Zephyr v3.0. 255 256* Fixed an issue whereby board revision ``0`` did not include overlay files for that revision. 257 258* Added ``PRE_IMAGE_CMAKE`` and ``POST_IMAGE_CMAKE`` hooks to sysbuild modules, which allows for 259 modules to run code after and before each image's cmake invocation. 260 261* Added :kconfig:option:`CONFIG_ROM_END_OFFSET` option which allows reducing the size of an image. 262 This is intended for use with firmware signing scripts which add additional data to the end of 263 images outside of the build itself. 264 265* Added MCUboot image size reduction to sysbuild images which include MCUboot. This prevents 266 issues with building firmware images that are too large for MCUboot to swap. 267 268* Deprecated :kconfig:option:`CONFIG_BOOTLOADER_SRAM_SIZE`. Users of this should transition to 269 having RAM set up properly in their board devicetree files. 270 271* Fixed an issue whereby shields were processed in order of the root they resided in rather than 272 the order they were supplied to cmake in. 273 274* Fixed an issue whereby using some shields with sysbuild would cause a cmake Kconfig error. 275 276* Fixed an issue where the macros ``_POSIX_C_SOURCE`` and ``_XOPEN_SOURCE`` would be defined 277 globally when building with Picolibc or for the native (``ARCH_POSIX``) targets. 278 After this change users may need to define them for their own applications or libraries. 279 280* Added support for sysbuild setting a signing script (``SIGNING_SCRIPT``). See 281 :ref:`west-extending-signing` for details. 282 283* Added support for ``FILE_SUFFIX`` in the build system which allows for adding suffixes to 284 application Kconfig fragment file names and devicetree overlay file names. See 285 :ref:`application-file-suffixes` and :ref:`sysbuild_file_suffixes` for details. 286 287* Deprecated ``CONF_FILE`` ``prj_<build>.conf`` build type. 288 289* Added `-Wdouble-promotion` as a default warning when compiling to warn developers with 290 single-precision floats easily being promoted to double-precision. 291 292Drivers and Sensors 293******************* 294 295* ADC 296 297 * Power Management for ADC is now supported on STM32 devices. 298 * STM32 ADC driver now supports mixing shared and separate IRQs (for instance on STM32G473 299 which has 5 ADCs, ADC1 and ADC2 share one IRQ while ADC3, ADC4 and ADC5 each have unique IRQs). 300 Enabling all instances in the same application is not possible on such devices as of now. 301 302* Auxiliary Display 303 304 * Added Sparkfun SerLCD driver. 305 306* Audio 307 308 * Added a driver :file:`drivers/audio/dmic_mcux.c` for NXP DMIC peripheral. This peripheral is 309 present on the ``iMX RT5xx`` and ``iMX RT6xx`` parts, as well as some LPC SOCs. 310 311* Battery backed up RAM 312 313 * STM32WL devices now support BBRAM. 314 315* CAN 316 317 * Added system call :c:func:`can_get_mode()` for getting the current operation mode of a CAN 318 controller. 319 320 * Add system call :c:func:`can_get_transceiver()` for getting the CAN transceiver associated with 321 a CAN controller. 322 323 * Added accessor functions for the CAN statistics. 324 325 * Added common bit error counter to the CAN statistics. 326 327 * Added CAN statistics support to the following drivers: 328 329 * :dtcompatible:`microchip,mcp2515` 330 * :dtcompatible:`espressif,esp32-twai` 331 * :dtcompatible:`kvaser,pcican` 332 333 * Added CAN controller driver for the Nuvoton NuMaker series 334 (:dtcompatible:`nuvoton,numaker-canfd`). 335 336 * Added CAN controller driver for the Infineon XMC4xxx family 337 (:dtcompatible:`infineon,xmc4xxx-can` and :dtcompatible:`infineon,xmc4xxx-can-node`). 338 339 * Added support for the NXP S32K1xx family to the :dtcompatible:`nxp,flexcan` driver. 340 341 * All Bosch M_CAN-based front-end drivers now use named IRQs, "int0" and "int1". 342 343 * The :dtcompatible:`zephyr,native-linux-can` driver now supports being built with embedded C 344 libraries. 345 346 * Added support for setting "raw" timing values from the :ref:`CAN shell <can_shell>`. 347 348* Clock control 349 350 * Renesas R-Car clock control driver now supports Gen4 SoCs. 351 * Renamed ``CONFIG_CLOCK_CONTROL_RA`` to :kconfig:option:`CONFIG_CLOCK_CONTROL_RENESAS_RA`. 352 * On STM32 devices, :dtcompatible:`st,stm32-hse-clock` now allows setting a ``css-enabled`` 353 property which enables HSE clock security system (CSS). 354 355* Counter 356 357 * The nRFx counter driver now works with simulated nrf*_bsim targets. 358 * Added support for top value configuration and fixed a bug in the native posix driver. 359 * Added support for the MRT counter for NXP RT6xx, RT5xx and LPC55xxx. 360 361* Crypto 362 363 * STM32WB devices now support crypto API through AES block. 364 365* Display 366 367 * Introduced frame buffer config to STM32 LTDC driver. 368 369* DMA 370 371 * STM32WBA Devices now support GPDMA. 372 * Introduced a new DMA driver :file:`drivers/dma/dma_nxp_edma.c` for NXP's eDMA IP. 373 374* Entropy 375 376 * The "native_posix" entropy driver now accepts a new command line option ``seed-random``. 377 When used, the random generator will be seeded from ``/dev/urandom`` 378 * On STM32devices, RNG block is now suspended when pool is full to save power. 379 380* Ethernet 381 382 * The "native_posix" ethernet driver now supports being built with embedded C libraries. 383 * Enabled HW checksum offloading for STM32H7. 384 * Added implementation of Open Alliance's TC6 T1S driver. 385 * Added xmc4xxx driver. 386 * Added NXP enet driver with PTP support. 387 * Added KSZ8081 PHY driver. 388 * Added proper IPv4 multicast support to NXP mcux driver. 389 * Added LAN8651 T1S support. 390 * Added DSA support to STM32. 391 * Added tja1103 PHY support. 392 * Added Nuvoton numaker support. 393 * Fixed lan865x driver. Transmission speed improvements, IRQ handling fixes. 394 * Fixed s32_gmac driver. Link up/down handling fixes. 395 * Fixed phy_mii driver. The invalid phy id was incorrectly checked. 396 * Fixed sam_gmac driver. PTP clock adjustment was wrong for negative values. 397 * Fixed adin2111 driver. Initialization was done incorrectly when working with adin2110. 398 * Fixed ksz8081 driver. Logging changes, RMII clock fixes, GPIO pin fixes. 399 * Added a driver :file:`drivers/ethernet/eth_nxp_enet.c` for NXP ENET which is a rework of 400 the old driver :file:`drivers/ethernet/eth_mcux.c`. The old driver became 401 unmaintainable due to fundamental problems with the lack of PHY abstraction. The new driver 402 is still experimental and requires maturation. Eventually the old driver will be deprecated 403 and this new driver will be supported instead. 404 405* Flash 406 407 * Redesigned the Atmel SAM controller to fully utilize flash page layout. 408 * ``spi_nor`` driver now sleeps between polls in ``spi_nor_wait_until_ready``. If this is not 409 desired (For example due to ROM constraints in a bootloader), 410 :kconfig:option:`CONFIG_SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY` can be disabled. 411 * Flash readout protection configuration was added on STM32G4 and STM32L4 series. 412 413 * ``nordic_qspi_nor`` driver now supports user-configurable QSPI timeout with 414 :kconfig:option:`CONFIG_NORDIC_QSPI_NOR_TIMEOUT_MS`. 415 416* GNSS 417 418 * Added GNSS device driver API and subsystem for parsing and publishing location, 419 datetime, and satellite information, enabled by 420 :kconfig:option:`CONFIG_GNSS` and :kconfig:option:`CONFIG_GNSS_SATELLITES`. 421 The GNSS subsystem and device drivers are based on the :ref:`modem` subsystem, 422 using the ``modem_pipe`` module, modem backends, and ``modem_chat`` module to 423 communicate with the modems. For systems which already contain a cellular modem, 424 adding a GNSS modem is very efficient due to the reuse of subsystems. 425 426 * Added GNSS-specific, safe, string-to-integer parsing utilities, enabled by 427 :kconfig:option:`CONFIG_GNSS_PARSE`. 428 429 * Added NMEA0183 parsing utilities, enabled by 430 :kconfig:option:`CONFIG_GNSS_NMEA0183`. 431 432 * Added extensive GNSS data logging, enabled by 433 :kconfig:option:`CONFIG_GNSS_DUMP_TO_LOG`. 434 435 * Added generic NMEA0183 over UART based modem device driver, matching the 436 devicetree compatible :dtcompatible:`gnss-nmea-generic`. 437 438 * Added fully featured device driver for the Quectel LCX6G series GNSS modems, 439 matching the devicetree compatibles :dtcompatible:`quectel,lc26g`, 440 :dtcompatible:`quectel,lc76g` and :dtcompatible:`quectel,lc86g`. 441 442* GPIO 443 444 * Renesas R-Car GPIO driver now supports Gen4 SoCs. 445 * Renamed ``CONFIG_GPIO_RA`` to :kconfig:option:`CONFIG_GPIO_RENESAS_RA`. 446 * Added a new GPIO driver (:file:`drivers/gpio/gpio_mcux_rgpio.c`). This 447 driver is used for i.MX93 and i.MX8ULP. 448 449* I2C 450 451 * :c:func:`i2c_get_config` is now supported on the STM32 driver. 452 453* I2S 454 455 * STM32H7 devices now support I2S. 456 457* I3C 458 459 * The Legacy Virtual Register defines have been renamed from ``I3C_DCR_I2C_*`` 460 to ``I3C_LVR_I2C_*``. 461 462 * Added the ability to specify a start address when searching for a free I3C 463 address to be reserved. This requires a new function argument to 464 :c:func:`i3c_addr_slots_next_free_find`. 465 466 * Added a field named ``num_xfer`` in :c:struct:`i3c_msg` and 467 :c:struct:`i3c_ccc_taget_payload` as an output to indicate the actual 468 number of bytes transferred. 469 470 * Cadence I3C driver (:file:`drivers/i3c/i3c_cdns.c`): 471 472 * Added support to handle controller abort where the target does not emit 473 end of data for register read but continues sending data. 474 475 * Updated the timeout calculation to be coupled with CPU speed instead of 476 a fixed number of retries. 477 478 * NXP MCUX I3C driver (:file:`drivers/i3c/i3c_mcux.c`): 479 480 * Fixed ``mcux_i3c_config_get()`` not returning the configuration to the caller. 481 482 * Improved the FIFO read routine to support higher transfer rates. 483 484 * Removed the infinite wait for MCTRLDONE in auto IBI. 485 486 * Added ``disable-open-drain-high-pp`` property to 487 :dtcompatible:`nxp,mcux-i3c`, which allows alternative high time for 488 open-drain clock. 489 490* IEEE 802.15.4 491 492 * Removed :kconfig:option:`CONFIG_IEEE802154_SELECTIVE_TXPOWER` Kconfig option. 493 494* Input 495 496 * The ``short-codes`` property of :dtcompatible:`zephyr,input-longpress` is 497 now optional. The node can be used by specifying only input and long codes. 498 * Added support for keyboard matrix drivers, including a new 499 :dtcompatible:`gpio-kbd-matrix` and :dtcompatible:`input-keymap` drivers. 500 See :ref:`gpio-kbd` for more details. 501 * Added a pair of input codes to HID codes translation functions. See 502 :c:func:`input_to_hid_code` and :c:func:`input_to_hid_modifier`. 503 * Added power management support to :dtcompatible:`gpio-keys` 504 :dtcompatible:`focaltech,ft5336`. 505 * Added a :dtcompatible:`zephyr,native-linux-evdev` device node for getting 506 input events from a Linux evdev device node. 507 * Added support for optical encoders and power management to :dtcompatible:`gpio-qdec`. 508 * New driver :dtcompatible:`analog-axis`. 509 * Added ESP32 touch sensor driver including a :dtcompatible:`espressif,esp32-touch`. 510 511* MDIO 512 513 * Fixed initialization priorities of NXP s32 NETC drivers. 514 * Fixed SAM GMAC transfer timeout errors caused by MDIO clock not being initialized. 515 * Fixed ESP32 MDIO driver being enabled when node was not status okay. 516 * Added support for C22 and C45 APIs on S32 GMAC. 517 * Added MDIO driver for NXP ENET peripheral. 518 * Added xmc4xxx MDIO drivers. 519 * Fixed build errors caused by mdio.h driver header not including errno.h 520 521* MFD 522 523 * Added support for :dtcompatible:`maxim,max20335`. 524 * Added support for :dtcompatible:`adi,ad5592`. 525 * Added separate initialization priorities for :dtcompatible:`nordic,npm1300` and 526 :dtcompatible:`nordic,npm6001`. 527 528* PCIE 529 530 * Fixed MMIO size calculation by disabling IO/memory decoding beforehand. 531 532 * Modified to use PNP ID for PRT retrieval. 533 534* MEMC 535 536 * Added a new driver for NXP FlexRAM. 537 538* MIPI-DBI 539 540 * Introduced a new :ref:`MIPI DBI driver class <mipi_dbi_api>`. 541 542* Pin control 543 544 * Renesas R-Car pinctrl driver now supports Gen4 SoCs. 545 * Renamed ``CONFIG_PINCTRL_RA`` to :kconfig:option:`CONFIG_PINCTRL_RENESAS_RA`. 546 * Renesas R-Car pinctrl driver now supports voltage control for R8A77951 and 547 R8A77961 SoCs. 548 * Added driver for ZynqMP / Mercury XU. 549 * Added driver for i.MX8QM/QXP. 550 * Added driver for Renesas RZ/T2M. 551 * On STM32 devices, pins assigned to JTAG/SW port can now be put to analog state when 552 :kconfig:option:`CONFIG_PM` enabled and :kconfig:option:`CONFIG_DEBUG` disabled. 553 554* PWM 555 556 * Fixed ESP32S3 low frequency PWM issue. 557 558* Regulators 559 560 * Added new API functions 561 562 * :c:func:`regulator_set_active_discharge` 563 * :c:func:`regulator_get_active_discharge` 564 * :c:func:`regulator_list_current_limit` 565 566 * ``startup-delay-us`` and ``off-on-delay-us`` are now supported for all regulators. 567 * Added non-multithreading support. 568 * Added support for :dtcompatible:`maxim,max20335-regulator`. 569 * Added ASYS UVLO configuration for :dtcompatible:`nxp,pca9420`. 570 * Added LDO/DCDC support for :dtcompatible:`renesas,smartbond-regulator`. 571 * Added LDO soft start configuration for :dtcompatible:`nordic,npm1300-regulator`. 572 * Fixed init priority for :dtcompatible:`x-powers,axp192-regulator`. 573 * Fixed LDO GPIO control for :dtcompatible:`nordic,npm1300-regulator`. 574 575* Retained memory 576 577 * Retained memory driver backend for registers was added. 578 579 * Retained memory API status was changed from experimental to unstable. 580 581* RTC 582 583 * Added Atmel SAM driver. 584 585* SMBUS: 586 587 * SMBUS is now supported on STM32 devices. 588 589* SDHC 590 591 * Added SDHC driver for Cadence SDHC IP. 592 * Added SDHC driver for Infineon CAT1 IP. 593 * Added support for SDIO commands to iMX USDHC SDHC driver. 594 595* Sensor 596 597 * Fixed arithmetic overflow in the LTRF216A driver. 598 * Fixed negative temperature calculation in MAX31865 driver. 599 * Added TI TMAG5273 3D Hall sensor driver. 600 * Added Vishay VCNL36825T proximity sensor driver. 601 * Added BMA4xx accelerometer sensor emulator. 602 * Added white channel support to the VEML7700 ambient light sensor driver. 603 * Added ST LIS2DE12 accelerometer sensor driver. 604 * Added Bosch BMP581 pressure sensor driver. 605 * Added support for triggering multiple sensor devices in the sensor shell. 606 * Added Aosong AGS10 TVOC air quality gas sensor driver. 607 * Extended MAX31865 temperature sensor driver to support changing three-wire 608 mode at runtime. 609 * Fixed Bosch BMI160 gyro range calculation and added support for getting 610 attributes. 611 * Optimized Bosch BMA4xx accelerometer sample calculation, improving 612 accuracy. 613 * Removed floating point arithmetic from the TI BQ274xx gauge driver. 614 * Fixed ST drivers Kconfig dependency to the HAL_ST module. 615 * Added Bosch BMA4xx accelerometer sensor driver. 616 * Added ST LIS2DU12 accelerometer sensor driver. 617 * Extended NTC thermistor driver to support TDK NTCG103JF103FT1. 618 * Added NXP S32 quadrature decoder driver. 619 * Fixed LSM6DSV16x gyro range table. 620 * Fixed missing return value checks in ADLTC2990, TSL2540, MAX17055 drivers. 621 * Added ST LPS28DFW pressure sensor driver. 622 * Fixed interrupt in BMI323 driver. 623 * Added devicetree properties macros to various ST sensor drivers. 624 * Added Renesas HS300x temperature/humidity sensor driver. 625 * Added Gas Sensing Solutions' ExplorIR-M CO2 sensor driver. 626 * Fixed self test delay in ADXL367 accelerometer sensor driver. 627 * Added ST LPS22DF pressure sensor driver. 628 * Added new streaming APIs and implemented in the ICM42688 driver. 629 * Added trigger support to the ADXL367 accelerometer sensor driver. 630 * Added PM suspend and resume support to the LSM6DSL accelerometer sensor 631 driver. 632 * Added AMS TSL2561 light sensor driver. 633 * Extended BQ274xx driver to support configuring and confirming the chemistry 634 profile. 635 * Extended LIS2DH and LSM6DSV16x drivers to support configuring INT1/INT2 in 636 devicetree. 637 * Added die temperature measurement support to NPM1300 charger driver. 638 * Added ADLTC2990 sensor emulator. 639 * Extended MPU6050 driver to support MPU6886 variant. 640 * Added ADXL367 accelerometer sensor driver. 641 * Added LiteOn LTR-F216A illuminance sensor driver. 642 * Added Memsic MC3419 accelerometer sensor driver. 643 * Added AMD SB temperature sensor driver. 644 * Added ESP32S3 internal temperature sensor driver. 645 * Added new self-documenting macros for setting ST sensor devicetree 646 properties (e.g., LSM6DSV16X_DT_ODR_AT_60Hz). (:github:`65410`) 647 648* Serial 649 650 * Added drivers to support UART on Renesas RA and RZ/T2M. 651 * Added support for higher baud rate for ITE IT8xxx2. 652 * Added driver to support Intel Lightweight UART. 653 * Added UART asynchronous RX helper. 654 * Added support for async API on NS16550 driver. 655 * Updated ``uart_esp32`` to use serial port configuration from devicetree. 656 * Added an adaptation API to provide interrupt driven API for drivers 657 which have only implemented async API. 658 659 * Emulated UART driver (:file:`drivers/serial/uart_emul.c`): 660 661 * Added emulated interrupt based TX. 662 * Added emulated error for testing. 663 * Modified to use local work queue for data transfer. 664 * Modified FIFO size and its handling to be more aligned with real hardware. 665 666 * On STM32 devices, it is now possible to enable FIFO by setting a ``fifo-enable`` 667 property in targeted serial node, with the following benefits: 668 In TX, FIFO allows to work in burst mode, easing scheduling of loaded applications. 669 It also allows more reliable communication with UART devices sensitive to variation of inter-frames delays. 670 In RX, FIFO reduces overrun occurrences. 671 672* SPI 673 674 * On STM32H7 devices, ``fifo-enable`` property allows using SPI block FIFO. This 675 feature is still experimental and requires maturation. 676 * On STM32 devices impacted by BSY bit erratum, a workaround was implemented. 677 678* USB 679 680 * On STM2G0 devices, property ``crs-usb-sof`` in ``clk_hsi48`` node enables support 681 for Clock Recovery System, allowing a more stable HSI48 clock and hence resilient USB 682 connection. 683 * On compatible STM32 devices, isochronous endpoints are now functional thanks to the 684 use of double buffering. 685 * Added new UDC driver for DWC2 controller. 686 * Added support for Nuvoton NuMaker series USBD controllers. 687 688* W1 689 690 * Added 1-Wire GPIO master driver. See the :dtcompatible:`zephyr,w1-gpio` 691 devicetree binding for more information. 692 693* Wi-Fi 694 695 * Added Infineon airoc driver. 696 * Fixed esp32 driver. Decreased minimum heap size, disabled automatic reconnection on leaving. 697 * Fixed esp_at driver. Allow building without IPv4 support. Passive Receive mode fixes. Depend on UART runtime configuration. 698 * Fixed winc1500 driver. Disconnect result event was not returned when disconnecting. 699 700Networking 701********** 702 703* CoAP: 704 705 * Added support for Echo and Request-Tag CoAP options (RFC 9175). 706 * Changed :c:func:`coap_remove_observer` API function return type to bool. 707 * Introduced CoAP service library, which simplifies implementation of CoAP 708 server functionality. 709 * Updated CoAP server example to use CoAP service library. 710 * Added shell module for CoAP server. 711 * Fixed NULL pointer dereference in :c:func:`coap_packet_remove_option`. 712 * Added CoAP observer/service network events using the Network Event subsystem. 713 * Changed :c:func:`coap_pending_init` API function to take 714 :c:struct:`coap_transmission_parameters` instead of retry count. 715 * Added new API functions: 716 717 * :c:func:`coap_get_transmission_parameters` 718 * :c:func:`coap_set_transmission_parameters` 719 * :c:func:`coap_handle_request_len` 720 * :c:func:`coap_well_known_core_get_len` 721 * :c:func:`coap_uri_path_match` 722 * :c:func:`coap_packet_is_request` 723 * :c:func:`coap_find_observer` 724 * :c:func:`coap_find_observer_by_token` 725 * :c:func:`coap_pendings_count` 726 * :c:func:`coap_header_set_code` 727 728* Connection Manager: 729 730 * Added a generic Wi-Fi connectivity backend. 731 732* DHCP: 733 734 * Added missing DHCPv6 state structure initialization when initializing 735 network interface. 736 * DHCP-assigned IPv4 address is now removed when interface goes down. 737 * Added DHCPv4 server implementation. 738 * Rearranged DHCPv4 file structure. All DHCPv4 related files are now grouped 739 within ``subsys/net/lib/dhcpv4``. 740 * Moved DHCPv6 files to ``subsys/net/lib/dhcpv6`` to align with DHCPv4. 741 742* DNS: 743 744 * Added support for enabling mDNS listener on all network interfaces. 745 * Added VLAN support to the ``mdns_responder`` sample. 746 * Fixed TTL/hop limit set on DNS packets. 747 * Added :kconfig:option:`CONFIG_DNS_RESOLVER_AUTO_INIT` which allows to disable 748 automatic initialization of the default DNS context on boot. 749 750* Ethernet: 751 752 * Manual registration of ARP entries is now supported. 753 * Added PHY mode selection to device tree. 754 * Added TX-Injection mode support. 755 756* gPTP: 757 758 * The local port identity is now used when forwarding sync messages. 759 * Fixed double converted byte order of BMCA info. 760 * GM PRIO root system id is now always used for announce messages. 761 * Created gPTP handler thread stack size Kconfig option. 762 * Inverted the priority of outgoing packets. 763 764* ICMP: 765 766 * Fixed an error being emitted when unhandled ICMP message was received. 767 * Fixed a bug where ICMP Echo Reply could be sent without proper source IP 768 address set. 769 * Fixed a packet leak in ICMP Echo Request handlers in case priority check 770 failed. 771 * Improved thread safety of the module handling Neighbor Discovery. 772 * Added support for IPv6 Neighbor reachability hints, allowing to reduce 773 ICMPv6 traffic for active connections. 774 775* IP: 776 777 * Fixed L3/L4 checksum calculation/validation for IP-fragmented packets on 778 interfaces that support checksum offload. 779 * Fixed net_context not being set on IP fragmented packets, preventing send 780 callback from being called. 781 * It is now possible to have separate IPv4 TTL value and IPv6 hop limit value for 782 unicast and multicast packets. This can be controlled in each socket via 783 :c:func:`setsockopt` API. 784 * Improved source IP address verification in the IP stack. Addresses received 785 to/from loopback address on non-loopback interfaces are dropped. 786 * Added new functions to verify if IPv6 address is site local or global. 787 * Added support for setting peer IP address in :c:struct:`net_pkt` structure 788 for offloaded interfaces. This allows for :c:func:`recvfrom` to return a 789 valid address in offloaded case. 790 791* LwM2M: 792 793 * Added :kconfig:option:`CONFIG_LWM2M_UPDATE_PERIOD` which configures the LwM2M 794 Update period regardless of the lifetime value. 795 * Fixed composite read/write access rights check. 796 * Added shell command to delete object and resource instances. 797 * Fixed a bug in block-wise transfer where block-wise ACKs were sent with 798 wrong response code. 799 * Fixed object version reporting for LwM2M version 1.1. 800 * Added support for DTLS Connection Identifier in the LwM2M engine. 801 * Added support for LwM2M Server Disable executable resource. 802 * Implemented fallback mechanism for LwM2M server selection during registration 803 phase. The engine will now try to choose a different server if the current one 804 becomes unavailable or disabled. 805 * Added support for storing LwM2M error list in settings. 806 * Fixed pmin observer attribute handling in tickless mode. 807 * Added support for notifying the application about ongoing CoAP transmissions 808 with ``set_socket_state()`` callback. 809 * Deprecated unsigned 64-bit integer value type, as it's not represented in the spec. 810 Use signed 64-bit integer instead. 811 * Added a callback for LwM2M Gateway object, which allows to handle LwM2M messages 812 with prefixed path. 813 * Added LwM2M-specific macros for object initialization during boot. 814 * Several other minor bugfixes ans improvements. 815 816* Misc: 817 818 * Added support for compile time network event handlers using the macro 819 :c:macro:`NET_MGMT_REGISTER_EVENT_HANDLER`. 820 * Added the :kconfig:option:`CONFIG_NET_MGMT_EVENT_WORKER` choice to 821 allow emitting network events using the system work queue or synchronously. 822 * Removed redundant Network Connectivity API documentation page. 823 * Improved thread safety of the network connections subsystem. 824 * Removed ``eth_native_posix`` sample. 825 * Removed redundant ``arb`` and ``fv2015`` fields from 826 ``struct net_pkt_cb_ieee802154``. 827 * Introduced a separate mutex for TX at the network interface level to prevent 828 concurrent access on TX to drivers that are not re-entrant. 829 * Fixed netmask not being registered for loopback address. 830 * Added support for binding to a specific network interface at the net_context 831 level. 832 * Added IGMPv3 support. 833 * Added a new network event, ``NET_EVENT_HOSTNAME_CHANGED``, triggered upon 834 hostname change. 835 * Refactored net_context option getters/setters to reduce code duplication. 836 * Fixed a possible packet leak at the ARP level, in case of errors during ARP 837 packet creation. 838 * Added support for analyzing SNTP time uncertainty. 839 * Fixed network interface being brought up even when underlying device is not 840 ready. 841 * Added start/stop functions for dummy interfaces. 842 * Added a detailed :ref:`network configuration <network_configuration_guide>` 843 guide to the documentation. 844 * Added :kconfig:option:`CONFIG_NET_HOSTNAME_DYNAMIC` option, which allows to 845 enable setting hostname at runtime. 846 847* MQTT-SN: 848 849 * Added :c:func:`mqtt_sn_get_topic_name` API function. 850 * Fixed handling of incoming Register messages when wildcard subscription is used. 851 852* OpenThread: 853 854 * Implemented the following OpenThread platform APIs: 855 856 * ``otPlatRadioSetRxOnWhenIdle()`` 857 * ``otPlatResetToBootloader()`` 858 * ``otPlatCryptoPbkdf2GenerateKey()`` 859 860 * Updated OpenThread platform UART driver so that it no longer waits for 861 communication with a host to start during boot. 862 * Added BLE TCAT implementation in OpenThread platform. 863 * Updated Crypto PSA backend for OpenThread with additional algorithms. 864 * Fixed ``otPlatAssertFail()`` so that it prints the location of the actual 865 assert instead of the function itself. 866 867* PPP: 868 869 * Fixed PPP connection termination when interface goes down. 870 871* Shell: 872 873 * Refactored networking shell module so that instead of large single file, it 874 is split into submodules, on a per command basis. 875 * Fixed unexpected timeout message when executing loopback ping. 876 * Added ``net sockets`` command to print information about open sockets and 877 socket services. 878 * Join IPv4/IPv6 multicast groups, if needed, when adding IPv4/IPv6 multicast 879 addresses via shell. 880 * Fixed ``tcp connect`` command operation (TCP context released prematurely). 881 * Added support for Echo option in telnet shell backend. 882 * Fixed unnecessary connection close in telnet shell backend in case of 883 non-fatal EAGAIN or ENOBUFS errors. 884 * Fixed double packet dereference in ping reply handler. 885 * Fixed possible deadlock when executing ``net arp`` command. 886 * Added more detailed Ethernet statistics printout for ``net stats`` command. 887 * Added ``net dhcpv4 server`` commands for DHCPv4 server management. 888 * Added shell module to manage TLS credentials. 889 890* Sockets: 891 892 * Added support for v4-mapping-to-v6, which allows IPv4 and IPv6 to share the 893 same port space. 894 * Added support for :c:macro:`IPV6_V6ONLY` socket option. 895 * Added support for :c:macro:`SO_ERROR` socket option. 896 * Fixed :c:func:`select` not setting ``writefds`` in case of errors. 897 * Added support for object core, which allows to track networks sockets and 898 their statistics. 899 * Added support for :c:func:`recvmsg`. 900 * Added support for :c:macro:`IP_PKTINFO` and :c:macro:`IPV6_RECVPKTINFO` 901 socket options. 902 * Added support for :c:macro:`IP_TTL` socket option. 903 * Added support for IPv4 multicast :c:macro:`IP_ADD_MEMBERSHIP` and 904 :c:macro:`IP_DROP_MEMBERSHIP` socket options. 905 * Added support for IPv6 multicast :c:macro:`IPV6_ADD_MEMBERSHIP` and 906 :c:macro:`IPV6_DROP_MEMBERSHIP` socket options. 907 * Improved doxygen documentation of BSD socket API. 908 * Fixed POLLERR error reporting in TLS sockets. 909 * Fixed DTLS handshake processing during :c:func:`poll`. 910 * Aligned DTLS socket :c:func:`connect` behavior with regular TLS (handshake 911 during connect call). 912 * Added Socket Service library, which allows registering multiple socket-based 913 network services and processing them within a single thread. 914 * Added a new ``echo_service`` sample for Socket Service. 915 * Added support for :c:macro:`SO_DOMAIN` socket option. 916 * Fixed DTLS connection timeout when monitoring socket with :c:func:`poll`. 917 * Fixed NULL link layer address pointer dereference on packet socket, in case 918 of packet loopback. 919 * Several other minor bugfixes and improvements. 920 921* TCP: 922 923 * TCP stack now replies with RST packet in response to connection attempt on 924 a closed port. 925 * Fixed remote address passed in :c:func:`accept` call. 926 * Fixed reference counting during active handshake to prevent TCP context 927 being released prematurely. 928 * Fixed compilation with :kconfig:option:`CONFIG_NET_TCP_CONGESTION_AVOIDANCE` 929 disabled. 930 * Reworked TCP data queueing API to prevent TCP stack from overflowing TX window. 931 * Fixed possible race condition between TCP workqueue and other threads when 932 releasing TCP context. 933 * Fixed possible race condition between input thread and TCP workqueue. 934 * Added support for TCP Keep-Alive feature. 935 * Fixed a bug where TCP state machine could get stuck in LAST_ACK state 936 during passive connection close. 937 * Fixed a bug where TCP state machine could get stuck in FIN_WAIT_1 state 938 in case peer did not respond. 939 * Several other minor bugfixes ans improvements. 940 941* TFTP: 942 943 * Fixed potential buffer overflow when copying TFTP error message. 944 * Improved logging in case of errors. 945 946* Wi-Fi: 947 948 * Added Wi-Fi driver version information to Wi-Fi shell. 949 * Added AP (Access Point) mode support to Wi-Fi shell. 950 * Added Regulatory channel information. 951 * Added Wi-Fi bindings to connection manager. 952 * Fixed Wi-Fi shell. SSID print fixes. Help text fixes. Channel validation fixes. 953 * Fixed TWT functionality. Teardown status was not updated. Powersave fixes. 954 955* zperf: 956 957 * Improved IP address binding. Zperf will now bind to any address by default and 958 allow to override this with Kconfig/API provided address. 959 * Fixed TCP packet counting when transmitting. 960 * Refactored UDP/TCP received to use Socket Service to save memory. 961 * Fixed zperf session leak on interrupted downloads. 962 * Fixed the calculation ratio between Mbps, Kbps and bps. 963 * The zperf sample now supports relocating network code to RAM. 964 965USB 966*** 967 968* Device support: 969 970 * Introduced new USB Audio 2 implementation that uses devicetree for 971 instantiation, hiding descriptor complexity from the application. The initial 972 implementation is limited to full speed only and provides the absolute 973 minimum set of features required for basic implicit and explicit feedback. 974 Interrupt notification is not supported. 975 * Added support for SetFeature(TEST_MODE). 976 977Devicetree 978********** 979 980Bindings 981======== 982 983 * Introduced new SPI properties ``spi-cpol``, ``spi-cpha``, and ``spi-hold-cs`` to be used by 984 the macro :c:macro:`SPI_CONFIG_DT` in order to set SPI mode in a Devicetree file. 985 986Libraries / Subsystems 987********************** 988 989* Management 990 991 * Fixed an issue in MCUmgr image management whereby erasing an already erased slot would return 992 an unknown error. It now returns success. 993 994 * Fixed MCUmgr UDP transport structs being statically initialised. This results in about a 995 ~5KiB flash saving. 996 997 * Fixed an issue in MCUmgr which would cause a user data buffer overflow if the UDP transport was 998 enabled on IPv4 only but IPv6 support was enabled in the kernel. 999 1000 * Implemented datetime functionality in MCUmgr OS management group. This makes use of the RTC 1001 driver API. 1002 1003 * Fixed an issue in MCUmgr console UART input whereby the FIFO would be read outside of an ISR, 1004 which is not supported in the next USB stack. 1005 1006 * Fixed an issue whereby the ``mcuboot erase`` DFU shell command could be used to erase the 1007 MCUboot or currently running application slot. 1008 1009 * Fixed an issue whereby messages that were too large to be sent over the UDP transport would 1010 wrongly return :c:enumerator:`MGMT_ERR_EINVAL` instead of :c:enumerator:`MGMT_ERR_EMSGSIZE`. 1011 1012 * Fixed an issue where confirming an image in Direct XIP mode would always confirm the image in 1013 the primary slot even when executing from the secondary slot. Now the currently active image is 1014 always confirmed. 1015 1016 * Added support for retrieving registered command groups, to support registering and deregistering 1017 default command groups at runtime, allowing an application to support multiple implementations 1018 for the same command group. 1019 1020 * Fixed an issue in MCUmgr FS management whereby the semaphore lock would not be given if an 1021 error was returned, leading to a possible deadlock. 1022 1023 * Added support for custom payload MCUmgr handlers. This can be enabled with 1024 :kconfig:option:`CONFIG_MCUMGR_MGMT_CUSTOM_PAYLOAD`. 1025 1026 * Fixed an issue in MCUmgr image management whereby an error would be returned if a command was 1027 sent to erase the slot which was already erased. 1028 1029 * Added support for image slot size checking to ensure an update can be utilised by MCUboot. 1030 This can be performed by using sysbuild when building both application and MCUboot by enabling 1031 :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_SYSBUILD` or by use of bootloader information 1032 sharing from MCUboot by enabling 1033 :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_BOOTLOADER_INFO`. 1034 1035* Logging 1036 1037 * Added an option to remove string literals from the binary when dictionary-based logging is used. 1038 1039 * Optimized the most common logging messages (strings with up to 2 numeric arguments). Optimization 1040 is done for code size (significant gain seen on riscv32) and performance. 1041 1042 * Extended logging frontend API to optionally implement dedicated functions for optimized messages. 1043 Optional API is enabled by :kconfig:option:`CONFIG_LOG_FRONTEND_OPT_API`. 1044 1045 * Added support for runtime message filtering for the logging frontend. 1046 1047 * Added option to support multiple instances of the UART logging backend. 1048 1049 * Fixed userspace issue for :c:func:`printk` when :kconfig:option:`CONFIG_LOG_PRINTK` is enabled. 1050 1051 * Added compile time detection of logging messages that use character pointers for ``%p``. 1052 It must be avoided when dictionary-based logging is used and strings are stripped from the 1053 binary. When an erroneous case is detected, the user message is replaced with an error message 1054 that suggests pointer casting must be added. 1055 1056 * Removed remaining references to v2 logging. Renamed :c:func:`log2_generic` to :c:func:`log_generic`. 1057 1058* Modem modules 1059 1060 * Added ``TRANSMIT_IDLE`` event to the ``modem_pipe`` module which notifies the user of the pipe 1061 that the backend has transmitted all bytes placed in its buffer using 1062 :c:func:`modem_pipe_transmit()`. 1063 The event greatly increases the efficiency of transmitting large quantities of data if used to 1064 dynamically manage the delay between calls to :c:func:`modem_pipe_transmit()`. 1065 1066 * Implemented ``TRANSMIT_IDLE`` event in all modem backends. 1067 1068 * Extended all modem modules to utilize the ``TRANSMIT_IDLE`` event to dynamically manage the delay 1069 between calls to :c:func:`modem_pipe_transmit()`. This addition reduced the utilization of the 1070 system workqueue while transmitting large, continuous quantities of data, by 86%, while only 1071 reducing the throughput by 12%. This optimization additionally allows lower priority threads, 1072 like the deferred logging thread, to run during the transmission (it was blocked by the 1073 relentless, continuous calls to :c:func:`modem_pipe_transmit()`). 1074 1075 * Improved ``modem_pipe`` event dispatching. The ``modem_pipe`` module now invokes the 1076 ``RECEIVE_READY`` event every time the pipe is attached using :c:func:`modem_pipe_attach()` 1077 if it has data ready to be read, and always invokes ``TRANSMIT_IDLE`` when the pipe is 1078 either opened or attached. This ensures event driven users of the modem pipe module can 1079 rely solely on the events to start read/transmit work. A test suite has been added to 1080 complement the improvements. 1081 1082 * Extended ``modem_cmux`` module to support acting both as DTE (user application) and DCE (modem). 1083 With this addition, two Zephyr applications can communicate with each other through their 1084 respective ``modem_cmux`` instances. 1085 1086* Picolibc 1087 1088 * Updated to version 1.8.6. This removes the :c:macro:`_POSIX_C_SOURCE` definition from the build 1089 system, so applications will need to add this if they use APIs outside of the Zephyr 1090 requirements. 1091 1092 * Added new :c:func:`printf` modes, :kconfig:option:`CONFIG_PICOLIBC_IO_LONG_LONG` and 1093 :kconfig:option:`CONFIG_PICOLIBC_IO_MINIMAL`. These provide applications with finer grained 1094 control over the level of support provided by the library to control text space usage. By 1095 default, the correct level of support is selected based upon other configuration parameters. 1096 1097 * Added :kconfig:option:`CONFIG_PICOLIBC_ASSERT_VERBOSE`. This option, which is false by default, 1098 controls whether the :c:func:`assert` function displays verbose information, including the file 1099 name, line number, function name and failing expression text, when the assertion fails. Leaving 1100 this disabled saves text space. 1101 1102 * :kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE` can now be disabled while using Picolibc. This is 1103 very helpful in diagnosing issues when using Picolibc as those are often caused by enabling TLS 1104 and not caused by using the library itself. 1105 1106 * Numerous improvements in the library including code-size reductions in areas like printf and 1107 ctype and various fixes in the math library. 1108 1109* Power management 1110 1111 * Introduced Atmel SAM SUPC functions to allow wakeup sources and poweroff. 1112 * STM32F4 devices now support stop mode thanks to the use of a RTC based idle timer which 1113 keeps track of tick evolution while cortex systick is off. 1114 1115 * :c:func:`pm_device_runtime_put_async()` got a parameter to specify a minimum delay to 1116 the operation. This is useful to avoid multiple states transitions when a device is used. 1117 1118 * Devices that don't need to block when suspending or resuming can now be defined as ISR 1119 safe (``PM_DEVICE_ISR_SAFE``). For those devices, Zephyr is able to reduce RAM consumption 1120 and runtime device power management can be safely used from interrupts. 1121 1122 * Optimizations in device runtime power management. :c:func:`pm_device_runtime_get` and 1123 :c:func:`pm_device_runtime_put` no longer wait for a pending operation to be concluded if it is still 1124 in the work queue. In this case, the pending work is just canceled and the device state updated. 1125 1126 * The Kconfig options below were added to customize the initialization priority of different 1127 power domains. 1128 1129 * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY` 1130 * :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_MONITOR_INIT_PRIORITY` 1131 * :kconfig:option:`CONFIG_POWER_DOMAIN_INTEL_ADSP_INIT_PRIORITY` 1132 1133* Crypto 1134 1135 * Mbed TLS updated to 3.5.2. Full release notes can be found in: 1136 https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.5.2 1137 1138* Retention 1139 1140 * Fixed issue whereby :kconfig:option:`CONFIG_RETENTION_BUFFER_SIZE` values over 256 would cause 1141 an infinite loop due to use of 8-bit variables. 1142 1143* SD 1144 1145 * Added support for SDIO devices. 1146 1147* Storage 1148 1149 * File systems: LittleFS module has been updated to version 2.8.1. 1150 1151 * Following Flash Map API macros, marked in 3.2 as deprecated, have been removed: 1152 ``FLASH_AREA_ID``, ``FLASH_AREA_OFFSET``, ``FLASH_AREA_SIZE``, 1153 ``FLASH_AREA_LABEL_EXISTS`` and ``FLASH_AREA_DEVICE``. 1154 1155* POSIX API 1156 1157 * Completed support for ``POSIX_THREADS_EXT``, ``XSI_THREADS_EXT``, 1158 ``POSIX_CLOCK_SELECTION``, and ``POSIX_SEMAPHORES`` Option Groups. 1159 1160 * Completed support for ``_POSIX_MESSAGE_PASSING`` and 1161 ``_POSIX_PRIORITY_SCHEDULING`` Options. 1162 1163 * Fixed Coverity-CID 211585, 334906, 334909, and 340851. 1164 1165 * Improved structure and accuracy of POSIX documentation. 1166 1167 * Improved navigation and organization of POSIX Kconfig options. 1168 1169 * Added support to allocate and free stacks up to 8 MB with pthread_attr_t. 1170 1171 * Added support for deferred and asynchronous thread cancellation. 1172 1173 * Added dining philosophers sample application. 1174 1175 * Added support for named semaphores. 1176 1177 * Added a top-level ``posix`` command in the Zephyr shell. Zephyr shell utilities for 1178 the POSIX API can be added as subcommands (e.g. ``posix uname -a``) 1179 1180 * Added support for async thread cancellation and ``SIGEV_THREAD``, ``CLOCK_REALTIME``. 1181 1182 * Added compile-time-constant sysconf() implementation. 1183 1184* LoRa/LoRaWAN 1185 1186 * Added LoRaWAN remote multicast support with :kconfig:option:`CONFIG_LORAWAN_REMOTE_MULTICAST` 1187 in preparation for OTA firmware upgrade support. 1188 1189* ZBus 1190 1191 * Replaced mutexes with semaphores to lock channels and implement the Highest Locker Protocol (HLP) 1192 priority boost for the zbus operations. This feature avoids priority inversions and preemptions, 1193 making the VDED delivery process faster and more consistent. (:github:`63183`) 1194 1195 * Fixed documentation for :c:func:`zbus_chan_add` and :c:func:`zbus_chan_rm` adding the timeout 1196 argument. (:github:`65544`) 1197 1198 * Fixed warning when mixing C and C++ files using zbus. (:github:`65222`) 1199 1200 * :c:macro:`ZBUS_CHANNEL_DEFINE` macro is now compatible with C++. (:github:`65196`) 1201 1202 * Fixed parameter order of net buf pool fixed definition. (:github:`65039`) 1203 1204 * Refactored the benchmark sample, adding message subscribers. (:github:`64524`) 1205 1206 * Renamed ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC`` and 1207 ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC`` to 1208 :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC` and 1209 :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC`. (:github:`65632`) 1210 1211HALs 1212**** 1213 1214* STM32 1215 1216 * Updated STM32F1 to cube version V1.8.5. 1217 * Updated STM32F7 to cube version V1.17.1. 1218 * Updated STM32H7 to cube version V1.11.1. 1219 * Updated STM32L4 to cube version V1.18.0. 1220 * Updated STM32U5 to cube version V1.4.0. 1221 * Updated STM32WBA to cube version V1.2.0. 1222 * Updated STM32WB to cube version V1.18.0. 1223 1224MCUboot 1225******* 1226 1227 * Fixed compatible sector checking in bootutil. 1228 1229 * Fixed Kconfig issue with saving encrypted TLVs not depending on encryption being enabled. 1230 1231 * Fixed issue with missing condition check for applications in sysflash include file. 1232 1233 * Fixed issue with single slot encrypted image listing support in boot_serial. 1234 1235 * Fixed issue with allowing MBEDTLS Kconfig selection when tinycrypt is used. 1236 1237 * Fixed missing response if echo command was disabled in boot_serial. 1238 1239 * Fixed issue with USB configurations not generating usable images. 1240 1241 * Added debug logging for boot status write in bootutil. 1242 1243 * Added estimated image overhead size to cache in sysbuild. 1244 1245 * Added firmware loader operating mode which allows for a dedicated secondary slot image that 1246 is used to update the primary image. 1247 1248 * Added error if main thread is not pre-emptible when USB CDC serial recovery is enabled. 1249 1250 * Added error if USB CDC and console are both enabled and set to the same device. 1251 1252 * Removed the deprecated ``CONFIG_ZEPHYR_TRY_MASS_ERASE`` Kconfig option. 1253 1254 * Updated zcbor to version 0.8.1 and re-generated boot_serial files. 1255 1256 * Moved IO functions out of main to separate file. 1257 1258 * Made ``align`` parameter of imgtool optional. 1259 1260 * Added MCUBoot support for ``mimxrt1010_evk``, ``mimxrt1015_evk``, 1261 ``mimxrt1040_evk``, ``lpcxpresso55s06``, ``lpcxpresso55s16``, 1262 ``lpcxpresso55s28``, ``lpcxpresso55s36``, ``lpcxpresso55s69_cpu0``. 1263 1264 * Added :kconfig:option:`CONFIG_MCUBOOT_IMGTOOL_OVERWRITE_ONLY` which passes the --overwrite-only option 1265 to imgtool to avoid adding the swap status area size when calculating overflow. 1266 It is used by non-swap update modes. 1267 1268 * The MCUboot version in this release is version ``2.1.0+0-dev``. 1269 1270zcbor 1271***** 1272 1273zcbor has been updated from 0.7.0 to 0.8.1. 1274Full release notes can be found at: 1275https://github.com/zephyrproject-rtos/zcbor/blob/0.8.0/RELEASE_NOTES.md and 1276https://github.com/zephyrproject-rtos/zcbor/blob/0.8.1/RELEASE_NOTES.md 1277 1278Highlights: 1279 1280* Addded support for unordered maps. 1281* Performance improvements. 1282* Naming improvements for generated code. 1283* Bugfixes. 1284 1285LVGL 1286**** 1287 1288LVGL has been updated from 8.3.7 to 8.3.11. 1289Detailed release notes can be found at: 1290https://github.com/zephyrproject-rtos/lvgl/blob/zephyr/docs/CHANGELOG.md 1291 1292Additionally, the following changes in Zephyr were done: 1293 1294 * Added the :dtcompatible:`zephyr,lvgl-keypad-input` compatible for keypad input. 1295 1296 * Fixed issue with the Zephyr log levels not mapping properly to LVGL log levels. 1297 1298 * Fixed issue where setting :kconfig:option:`CONFIG_LV_Z_FULL_REFRESH` did not 1299 set :kconfig:option:`CONFIG_LV_Z_VDB_SIZE` to 100 percent. 1300 1301Tests and Samples 1302***************** 1303 1304* :ref:`native_sim<native_sim>` has replaced :ref:`native_posix<native_posix>` as the default 1305 test platform. 1306 :ref:`native_posix<native_posix>` remains supported and used in testing but will be deprecated 1307 in a future release. 1308 1309* Bluetooth split stacks tests, where the BT host and controller are run in separate MCUs, are 1310 now run in CI based on the :ref:`nrf5340_bsim<nrf5340bsim>` targets. 1311 Several other runtime AMP tests based on these targets have been added to CI, including tests 1312 of OpenAMP, the mbox and IPC drivers/subsystem, and the logger multidomain functionality. 1313 1314* Runtime UART tests have been added to CI based on the :ref:`nrf52_bsim<nrf52_bsim>` target. 1315 These include tests of the nRFx UART driver and networked BT stack tests with the host and 1316 controller in separate devices communicating over the HCI UART driver. 1317 1318* Fixed an issue in :zephyr:code-sample:`smp-svr` sample whereby if USB was already initialised, 1319 application would fail to boot properly. 1320 1321* Added an LVGL sample :zephyr:code-sample:`lvgl-accelerometer-chart` showcasing displaying of live 1322 sensor data in a chart widget. 1323 1324* Added ESP32-S3 IPM support in :zephyr:code-sample:`ipm-esp32`. 1325 1326* Added ESP32 memory-mapped flash access sample in :zephyr:code-sample:`esp32-flash-memory-mapped`. 1327 1328* Added ESP32 PWM loopback test case. 1329 1330* Added support in the mbox sample for NXP boards ``MIMXRT1160-EVK``, ``MIMXRT1170-EVK``, 1331 ``MIMXRT1170-EVKB``, ``LPCXpresso55S69``. 1332 1333* Added a sample ``flexram-magic-addr`` for ``mimxrt11xx_cm7`` to show how to use flexram magic 1334 address functionality when using memc flexram driver. 1335