1:orphan: 2 3.. 4 See 5 https://docs.zephyrproject.org/latest/releases/index.html#migration-guides 6 for details of what is supposed to go into this document. 7 8.. _migration_4.1: 9 10Migration guide to Zephyr v4.1.0 11################################ 12 13This document describes the changes required when migrating your application from Zephyr v4.0.0 to 14Zephyr v4.1.0. 15 16Any other changes (not directly related to migrating applications) can be found in 17the :ref:`release notes<zephyr_4.1>`. 18 19.. contents:: 20 :local: 21 :depth: 2 22 23Build System 24************ 25 26* Support for the build type feature which was deprecated in Zephyr 3.6 has been removed, 27 :ref:`application-file-suffixes`/:ref:`sysbuild_file_suffixes` has replaced this. 28 29* Sysbuild 30 31 * The Kconfig ``SB_CONFIG_MCUBOOT_MODE_SWAP_WITHOUT_SCRATCH`` has been deprecated and replaced 32 with ``SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE``, applications should be updated to select this 33 new symbol if they were selecting the old symbol. 34 35BOSSA Runner 36============ 37 38The ``bossac`` runner has been changed to no longer do a full erase by default when flashing. To 39perform a full erase, pass the ``--erase`` option when executing ``west flash``. 40 41Kernel 42****** 43 44 45k_pipe API 46========== 47 48The k_pipe API has been reworked and the API used in ``CONFIG_PIPES`` is now deprecated. 49The k_pipe API is enabled by default when ``CONFIG_MULTITHREADING`` is set. 50Function renames and modifications: 51 52.. list-table:: 53 :header-rows: 1 54 55 * - Old API 56 - New API 57 - Changes 58 * - ``k_pipe_put(..)`` 59 - ``k_pipe_write(..)`` 60 - Removed ``min_xfer`` parameter (partial transfers based on thresholds are no longer supported) 61 ``bytes_written`` is now the return value 62 * - ``k_pipe_get(..)`` 63 - ``k_pipe_read(..)`` 64 - Removed ``min_xfer`` parameter (partial transfers based on thresholds are no longer supported) 65 ``bytes_read`` is now the return value 66 * - ``k_pipe_flush(..)`` & ``k_pipe_buffer_flush(..)`` 67 - ``k_pipe_reset(..)`` 68 - Reset the pipe, discarding all data in the pipe, non blocking. 69 * - ``k_pipe_alloc_init(..)``, ``k_pipe_cleanup(..)`` 70 - **Removed** 71 - Dynamic allocation of pipes is no longer supported 72 * - ``k_pipe_read_avail(..)``, ``k_pipe_write_avail(..)`` 73 - **Removed** 74 - Querying the number of bytes in the pipe is no longer supported 75 * - None 76 - ``k_pipe_close(..)`` 77 - Close a pipe, waking up all pending readers and writers with an error code. No further 78 reading or writing is allowed on the pipe. The pipe can be re-opened by calling 79 ``k_pipe_init(..)`` again. **Note**, all data in the pipe is available to readers until the 80 pipe is emptied. 81 82 83Security 84******** 85 86* New options for stack canaries have been added, providing users with finer control over stack 87 protection. With this change, :kconfig:option:`CONFIG_STACK_CANARIES` no longer enables the 88 compiler option ``-fstack-protector-all``. Users who wish to use this option must now enable 89 :kconfig:option:`CONFIG_STACK_CANARIES_ALL`. 90 91Boards 92****** 93 94* Shield ``mikroe_weather_click`` now supports both I2C and SPI interfaces. Users should select 95 the required configuration by using ``mikroe_weather_click_i2c`` or ``mikroe_weather_click_spi`` 96 instead of ``mikroe_weather_click``. 97 98* All nRF52-based boards will now default to soft (system) reset 99 instead of pin reset when flashing with ``west flash``. If you want to keep 100 using pin reset on the nRF52 family of ICs you can use ``west flash --pinreset``. 101 102* Erasing the external memory when programming a new firmware image with ``west 103 flash`` on the nRF52 and nRF53 series now always correctly honors the 104 ``--erase`` flag (and its absence) both when using the ``nrfjprog`` and 105 ``nrfutil`` backends. Prior to this release, the ``nrjfprog`` backend would 106 always erase only the sectors of the external flash used by the new firmware, 107 and the ``nrfutil`` one would always erase the whole external flash. 108 109* CAN1 and USART1 have been disabled on the ``stm32f4_disco``, because of 110 conflicting pinctrl on I2C1, which is now used to control the audio codec 111 connected to the audio jack output. 112 113Devicetree 114********** 115 116* The :dtcompatible:`microchip,cap1203` driver has changed its compatible to 117 :dtcompatible:`microchip,cap12xx` and has been updated to support multiple 118 channels. 119 The number of available channels is derived from the length of the devicetree 120 array property ``input-codes``. 121 The :kconfig:option:`CONFIG_INPUT_CAP1203_POLL` has been removed: 122 If the devicetree property ``int-gpios`` is present, interrupt mode is used 123 otherwise, polling is used. 124 The :kconfig:option:`CONFIG_INPUT_CAP1203_PERIOD` has been replaced with 125 the devicetree property ``poll-interval-ms``. 126 In interrupt mode, the devicetree property ``repeat`` is supported. 127 128Raspberry Pi 129============ 130 131* ``CONFIG_SOC_SERIES_RP2XXX`` is renamed to :kconfig:option:`CONFIG_SOC_SERIES_RP2040`. 132 133STM32 134===== 135 136* MCO clock source and prescaler are now exclusively configured by the DTS 137 as it was introduced earlier. 138 The Kconfig method for configuration is now removed. 139 140* ADC properties ``st,adc-sequencer`` and ``st,adc-clock-source`` now uses 141 string values instead of integer values. 142 143Modules 144******* 145 146Mbed TLS 147======== 148 149* If a platform has a CSPRNG source available (i.e. :kconfig:option:`CONFIG_CSPRNG_ENABLED` 150 is set), then the Kconfig option :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG` 151 is the default choice for random number source instead of 152 :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_LEGACY_RNG`. This helps in reducing 153 ROM/RAM footprint of the Mbed TLS library. 154 155* The newly-added Kconfig option :kconfig:option:`CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT` 156 allows to specify the number of key slots available in the PSA Crypto core. 157 Previously this value was not explicitly set, so Mbed TLS's default value of 158 32 was used. The new Kconfig option defaults to 16 instead in order to find 159 a reasonable compromise between RAM consumption and most common use cases. 160 It can be further trimmed down to reduce RAM consumption if the final 161 application doesn't need that many key slots simultaneously. 162 163Trusted Firmware-M 164================== 165 166LVGL 167==== 168 169* The config option :kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIO` is now called 170 :kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIORITY` and its value is now interpreted as an 171 absolute priority instead of a cooperative one. 172 173* The config option :kconfig:option:`CONFIG_LV_Z_VBD_CUSTOM_SECTION` is now called 174 :kconfig:option:`CONFIG_LV_Z_VDB_CUSTOM_SECTION`. 175 176Device Drivers and Devicetree 177***************************** 178 179* Device driver APIs are placed into iterable sections (:github:`71773` and :github:`82102`) to 180 allow for runtime checking. See :ref:`device_driver_api` for more details. 181 The :c:macro:`DEVICE_API()` macro should be used by out-of-tree driver implementations for 182 all the upstream driver classes. 183 184ADC 185=== 186 187* Renamed the ``compatible`` from ``nxp,kinetis-adc12`` to :dtcompatible:`nxp,adc12`. 188 189Clock 190===== 191* Renamed the devicetree property ``freqs_mhz`` to ``freqs-mhz``. 192* Renamed the devicetree property ``cg_reg`` to ``cg-reg``. 193* Renamed the devicetree property ``pll_ctrl_reg`` to ``pll-ctrl-reg``. 194 195Counter 196======= 197 198* Renamed the devicetree property ``primary_source`` to ``primary-source``. 199* Renamed the devicetree property ``secondary_source`` to ``secondary-source``. 200* Renamed the devicetree property ``filter_count`` to ``filter-count``. 201* Renamed the devicetree property ``filter_period`` to ``filter-period``. 202 203Controller Area Network (CAN) 204============================= 205 206* Renamed the :dtcompatible:`infineon,xmc4xxx-can-node` devicetree property ``clock_div8`` to 207 ``clock-div8`` (:github:`83782`). 208 209Display 210======= 211 212* Displays using the MIPI DBI driver which set their MIPI DBI mode via the 213 ``mipi-mode`` property in devicetree should now use a string property of 214 the same name, like so: 215 216 .. code-block:: devicetree 217 218 /* Legacy display definition */ 219 220 st7735r: st7735r@0 { 221 ... 222 mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>; 223 ... 224 }; 225 226 /* New display definition */ 227 228 st7735r: st7735r@0 { 229 ... 230 mipi-mode = "MIPI_DBI_MODE_SPI_4WIRE"; 231 ... 232 }; 233 234* Renamed the devicetree propertys ``pclk_pol`` and ``data_cmd-gpios`` 235 to ``pclk-pol`` and ``data-cmd-gpios``. 236 237DAC 238=== 239 240* Renamed the devicetree properties ``voltage_reference`` and ``power_down_mode`` 241 to ``voltage-reference`` and ``power-down-mode``. 242 243Enhanced Serial Peripheral Interface (eSPI) 244=========================================== 245 246Entropy 247======= 248 249* BT HCI based entropy driver now directly sends the HCI command to parse random 250 data instead of waiting for BT connection to be ready. This is helpful on 251 platforms where the BT controller owns the HW random generator and the application 252 processor needs to get random data before BT is fully enabled. 253 (:github:`79931`) 254 255Ethernet 256======== 257 258* Deprecated eth_mcux driver was removed. 259* Silabs gecko ethernet changes: 260 261 * Renamed the devicetree property ``location-phy_mdc`` to ``location-phy-mdc``. 262 * Renamed the devicetree property ``location-phy_mdio`` to ``location-phy-mdio``. 263 * Renamed the devicetree property ``location-rmii_refclk`` to ``location-phy-refclk``. 264 * Renamed the devicetree property ``location-rmii_crs_dv`` to ``location-phy-crs-dv``. 265 * Renamed the devicetree property ``location-rmii_txd0`` to ``location-phy-txd0``. 266 * Renamed the devicetree property ``location-rmii_txd1`` to ``location-phy-txd1``. 267 * Renamed the devicetree property ``location-rmii_tx_en`` to ``location-phy-tx-en``. 268 * Renamed the devicetree property ``location-rmii_rxd0`` to ``location-phy-rxd0``. 269 * Renamed the devicetree property ``location-rmii_rxd1`` to ``location-phy-rxd1``. 270 * Renamed the devicetree property ``location-rmii_rx_er`` to ``location-phy-rx-er``. 271 * Renamed the devicetree property ``location-phy_pwr_enable`` to ``location-phy-pwr-enable``. 272 * Renamed the devicetree property ``location-phy_reset`` to ``location-phy-reset``. 273 * Renamed the devicetree property ``location-phy_interrupt`` to ``location-phy-interrupt``. 274 275GNSS 276==== 277 278GPIO 279==== 280 281* Renamed the device tree property ``pin_mask`` to ``pin-mask``. 282* Renamed the device tree property ``pinmux_mask`` to ``pinmux-mask``. 283* Renamed the device tree property ``vbatts_pins`` to ``vbatts-pins``. 284* Renamed the device tree property ``bit_per_gpio`` to ``bit-per-gpio``. 285* Renamed the device tree property ``off_val`` to ``off-val``. 286* Renamed the device tree property ``on_val`` to ``on-val``. 287* Renamed the ``compatible`` from ``ti,ads114s0x-gpio`` to :dtcompatible:`ti,ads1x4s0x-gpio`. 288 289HWSPINLOCK 290========== 291 292* Renamed the DeviceTree property ``num_locks`` to ``num-locks``. 293 294I2C 295=== 296 297* Renamed the ``compatible`` from ``nxp,imx-lpi2c`` to :dtcompatible:`nxp,lpi2c`. 298* Renamed the device tree property ``port_sel`` to ``port-sel```. 299 300I2S 301=== 302 303* Renamed the device tree property from ``fifo_depth`` to ``fifo-depth``. 304 305Input 306===== 307 308LED 309=== 310 311* Renamed the device tree property ``max_curr_opt`` to ``max-curr-opt``.` 312 313PWM 314=== 315 316* Renamed the ``compatible`` from ``renesas,ra8-pwm`` to :dtcompatible:`renesas,ra-pwm`. 317 318Interrupt Controller 319==================== 320 321LED Strip 322========= 323 324Misc 325==== 326 327* All the functions in the ft8xx driver take an additional ``const struct *device`` parameter 328 to allow for multiple instances of the driver. 329 330 The exception to this is the functions and macros defined in the 331 :zephyr_file:`include/zephyr/drivers/misc/ft8xx/ft8xx_reference_api.h` file, which translate the 332 API to a single-instance model, compatible with the API defined in the FT8xx programming guide. 333 These functions have not been modified. 334 335* The :c:func:`ft8xx_register_int` function now takes an additional ``void *user_data`` parameter 336 to allow user-defined data to be passed to the interrupt handler. 337 Additionally, the signature of the ft8xx interrupt handler has changed to include the 338 ``void *user_data`` parameter. 339 340MMU/MPU 341======= 342 343* Renamed the ``compatible`` from ``nxp,kinetis-mpu`` to :dtcompatible:`nxp,sysmpu` and added 344 its corresponding binding. 345* Renamed the Kconfig option ``CPU_HAS_NXP_MPU`` to :kconfig:option:`CPU_HAS_NXP_SYSMPU`. 346 347Pin Control 348=========== 349 350 * Renamed the ``compatible`` from ``nxp,kinetis-pinctrl`` to :dtcompatible:`nxp,port-pinctrl`. 351 * Renamed the ``compatible`` from ``nxp,kinetis-pinmux`` to :dtcompatible:`nxp,port-pinmux`. 352 * Silabs Series 2 devices now use a new pinctrl driver selected by 353 :dtcompatible:`silabs,dbus-pinctrl`. This driver allows the configuration of GPIO properties 354 through device tree, rather than having them hard-coded for each supported signal. It also 355 supports all possible digital bus signals by including a binding header such as 356 :zephyr_file:`include/zephyr/dt-bindings/pinctrl/silabs/xg24-pinctrl.h`. 357 358 Pinctrl should now be configured like this: 359 360 .. code-block:: devicetree 361 362 #include <dt-bindings/pinctrl/silabs/xg24-pinctrl.h> 363 364 &pinctrl { 365 i2c0_default: i2c0_default { 366 group0 { 367 /* Pin selection(s) using bindings included above */ 368 pins = <I2C0_SDA_PD2>, <I2C0_SCL_PD3>; 369 /* Shared properties for the group of pins */ 370 drive-open-drain; 371 bias-pull-up; 372 }; 373 }; 374 }; 375 376 377PWM 378=== 379 380* Renamed the ``compatible`` from ``nxp,kinetis-ftm-pwm`` to :dtcompatible:`nxp,ftm-pwm`. 381 382SDHC 383==== 384 385* Renamed the device tree property from ``power_delay_ms`` to ``power-delay-ms``` 386* Renamed the device tree property from ``max_current_330`` to ``max-current-330`` 387 388Sensors 389======= 390 391 * The :dtcompatible:`we,wsen-pads` driver has been renamed to 392 :dtcompatible:`we,wsen-pads-2511020213301`. 393 The Device Tree can be configured as follows: 394 395 .. code-block:: devicetree 396 397 &i2c0 { 398 pads:pads-2511020213301@5d { 399 compatible = "we,wsen-pads-2511020213301"; 400 reg = <0x5d>; 401 odr = < 10 >; 402 interrupt-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; 403 }; 404 }; 405 406 * The :dtcompatible:`we,wsen-pdus` driver has been renamed to 407 :dtcompatible:`we,wsen-pdus-25131308XXXXX`. 408 The Device Tree can be configured as follows: 409 410 .. code-block:: devicetree 411 412 &i2c0 { 413 pdus:pdus-25131308XXXXX@78 { 414 compatible = "we,wsen-pdus-25131308XXXXX"; 415 reg = < 0x78 >; 416 sensor-type = < 4 >; 417 }; 418 }; 419 420 * The :dtcompatible:`we,wsen-tids` driver has been renamed to 421 :dtcompatible:`we,wsen-tids-2521020222501`. 422 The Device Tree can be configured as follows: 423 424 .. code-block:: devicetree 425 426 &i2c0 { 427 tids:tids-2521020222501@3F { 428 compatible = "we,wsen-tids-2521020222501"; 429 reg = < 0x3F >; 430 odr = < 25 >; 431 interrupt-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; 432 }; 433 }; 434 435 * The :dtcompatible:`invensense,icp10125` driver has been renamed to 436 :dtcompatible:`invensense,icp101xx`. 437 The Device Tree can be configured as follows: 438 439 .. code-block:: devicetree 440 441 &i2c0 { 442 icp101xx:icp101xx@63 { 443 compatible = "invensense,icp101xx"; 444 reg = <0x63>; 445 }; 446 }; 447 448Serial 449====== 450 451* Renamed the ``compatible`` from ``nxp,kinetis-lpuart`` to :dtcompatible:`nxp,lpuart`. 452* Silabs Usart driver has been split for Series 2 :dtcompatible:`silabs,usart-uart` 453 and Series 0/1 ``silabs,gecko-usart`` 454 455Stepper 456======= 457 458 * Renamed the ``compatible`` from ``zephyr,gpio-steppers`` to :dtcompatible:`zephyr,gpio-stepper`. 459 * Renamed the ``stepper_set_actual_position`` function to :c:func:`stepper_set_reference_position`. 460 * Renamed the ``stepper_enable_constant_velocity_mode`` function to :c:func:`stepper_run`. 461 The function does not take a velocity parameter anymore. Set the desired speed using the 462 :c:func:`stepper_set_microstep_interval` function beforehand. 463 * Renamed the ``stepper_move`` function to :c:func:`stepper_move_by`. 464 * Renamed the ``stepper_set_target_position`` function to :c:func:`stepper_move_to`. 465 * Renamed the ``stepper_set_max_velocity`` function to :c:func:`stepper_set_microstep_interval`. 466 The function now takes the step interval in nanoseconds. This allows for a more precise control. 467 * Deprecating setting max velocity via :c:func:`stepper_run`. 468 * The :kconfig:option:`STEPPER_ADI_TMC_RAMP_GEN` is now deprecated and is replaced with the new 469 :kconfig:option:`STEPPER_ADI_TMC50XX_RAMP_GEN` option. 470 * Renamed tmc5041 stepper driver to tmc50xx. 471 * To control the velocity for :dtcompatible:`adi,tmc50xx` stepper driver, use 472 :c:func:`tmc50xx_stepper_set_max_velocity` or :c:func:`tmc50xx_stepper_set_ramp`. 473 * Renamed the DeviceTree property ``en_spreadcycle`` to ``en-spreadcycle``. 474 * Renamed the DeviceTree property ``i_scale_analog`` to ``i-scale-analog``. 475 * Renamed the DeviceTree property ``index_optw`` to ``index-otpw``. 476 * Renamed the DeviceTree property ``ìndex_step`` to ``index-step``. 477 * Renamed the DeviceTree property ``internal_rsense`` to ``internal-rsense``. 478 * Renamed the DeviceTree property ``lock_gconf`` to ``lock-gconf``. 479 * Renamed the DeviceTree property ``mstep_reg_select`` to ``mstep-reg-select``. 480 * Renamed the DeviceTree property ``pdn_disable`` to ``pdn-disable``. 481 * Renamed the DeviceTree property ``poscmp_enable`` to ``poscmp-enable``. 482 * Renamed the DeviceTree property ``test_mode`` to ``test-mode``. 483 484SPI 485=== 486 487* Renamed the ``compatible`` from ``nxp,imx-lpspi`` to :dtcompatible:`nxp,lpspi`. 488* Renamed the ``compatible`` from ``nxp,kinetis-dspi`` to :dtcompatible:`nxp,dspi`. 489* Renamed the ``compatible`` from ``silabs,gecko-spi-usart`` to :dtcompatible:`silabs,usart-spi`. 490* Renamed the ``compatible`` from ``silabs,gecko-spi-eusart`` to :dtcompatible:`silabs,eusart-spi`. 491 492Regulator 493========= 494 495RTC 496=== 497 498* Renamed the ``compatible`` from ``nxp,kinetis-rtc`` to :dtcompatible:`nxp,rtc`. 499 500Timer 501===== 502 503* Renamed the ``compatible`` from ``nxp,kinetis-ftm`` to :dtcompatible:`nxp,ftm` and relocate it 504 under ``dts/bindings/timer``. 505* Renamed the device tree property from ``ticks_us`` to ``ticks-us``. 506 507USB 508=== 509 510* Renamed the devicetree property names ``phy_handle`` to ``phy-handle``. 511 512Video 513===== 514 515* The :file:`include/zephyr/drivers/video-controls.h` got updated to have video controls IDs (CIDs) 516 matching the definitions in the Linux kernel file ``include/uapi/linux/v4l2-controls.h``. 517 In most cases, removing the category prefix is enough: ``VIDEO_CID_CAMERA_GAIN`` becomes 518 ``VIDEO_CID_GAIN``. 519 The new ``video-controls.h`` source now contains description of each control ID to help 520 disambiguating. 521 522* The ``video_pix_fmt_bpp()`` function was returning a byte count, this got replaced by 523 ``video_bits_per_pixel()`` which return a bit count. For instance, invocations such as 524 ``pitch = width * video_pix_fmt_bpp(pixfmt)`` needs to be replaced by an equivalent 525 ``pitch = width * video_bits_per_pixel(pixfmt) / BITS_PER_BYTE``. 526 527* The :c:func:`video_buffer_alloc` and :c:func:`video_buffer_aligned_alloc` functions in the 528 video API now take an additional timeout parameter. 529 530* The :c:func:`video_stream_start` and :c:func:`video_stream_stop` driver APIs are now merged 531 into the new :c:func:`video_set_stream` driver API. The user APIs are however unchanged to 532 keep backward compatibility with downstream applications. 533 534Watchdog 535======== 536 537* Renamed the ``compatible`` from ``nxp,kinetis-wdog32`` to :dtcompatible:`nxp,wdog32`. 538 539Wi-Fi 540===== 541 542* The config options :kconfig:option:`CONFIG_NXP_WIFI_BUILD_ONLY_MODE` and 543 :kconfig:option:`CONFIG_NRF_WIFI_BUILD_ONLY_MODE` are now unified under 544 :kconfig:option:`CONFIG_BUILD_ONLY_NO_BLOBS` making it a common entry point 545 for any vendor to enable builds without blobs. 546 547Bluetooth 548********* 549 550Bluetooth HCI 551============= 552 553* The :kconfig:option:`BT_CTLR` has been deprecated. A new :kconfig:option:`HAS_BT_CTLR` has been 554 introduced which should be selected by the respective link layer Kconfig options (e.g. a 555 HCI driver option, or the one for the upstream controller). It's recommended that all HCI drivers 556 for local link layers select the new option, since that opens up the possibility of indicating 557 build-time support for specific features, which e.g. the host stack can take advantage of. 558 559Bluetooth Mesh 560============== 561 562* Following the beginnig of the deprecation process for the TinyCrypt crypto 563 library, Kconfig symbol :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` was 564 set as deprecated. Default option for platforms that do not support TF-M 565 is :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA`. 566 567* Mesh key representations are not backward compatible if images are built with TinyCrypt and 568 crypto libraries based on the PSA API. Mesh no longer stores the key values for those crypto 569 libraries. The crypto library stores the keys in the internal trusted storage. 570 If a provisioned device is going to update its image that was built with 571 the :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` Kconfig option set on an image 572 that was built with :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA` or 573 :kconfig:option:`CONFIG_BT_MESH_USES_TFM_PSA` without erasing the persistent area, 574 it should be unprovisioned first and reprovisioned after update again. 575 If the image is changed over Mesh DFU, use :c:enumerator:`BT_MESH_DFU_EFFECT_UNPROV`. 576 577* Mesh explicitly depends on the Secure Storage subsystem if storing into 578 non-volatile memory (:kconfig:option:`CONFIG_BT_SETTINGS`) is enabled and 579 Mbed TLS library (:kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA`) is used. 580 Applications should be built with :kconfig:option:`CONFIG_SECURE_STORAGE` enabled. 581 582Bluetooth Audio 583=============== 584 585* The following Kconfig options are not longer automatically enabled by the LE Audio Kconfig 586 options and may need to be enabled manually (:github:`81328`): 587 588 * :kconfig:option:`CONFIG_BT_GATT_CLIENT` 589 * :kconfig:option:`CONFIG_BT_GATT_AUTO_DISCOVER_CCC` 590 * :kconfig:option:`CONFIG_BT_GATT_AUTO_UPDATE_MTU` 591 * :kconfig:option:`CONFIG_BT_EXT_ADV` 592 * :kconfig:option:`CONFIG_BT_PER_ADV_SYNC` 593 * :kconfig:option:`CONFIG_BT_ISO_BROADCASTER` 594 * :kconfig:option:`CONFIG_BT_ISO_SYNC_RECEIVER` 595 * :kconfig:option:`CONFIG_BT_PAC_SNK` 596 * :kconfig:option:`CONFIG_BT_PAC_SRC` 597 598* PACS have been changed to support dynamic, runtime configuration. This means that PACS now has 599 to be registered with :c:func:`bt_pacs_register` before it can be used. In addition, 600 :c:func:`bt_pacs_register` also have to be called before :c:func:`bt_ascs_register` can be 601 be called. All Kconfig options still remain. Runtime configuration cannot override a disabled 602 Kconfig option. (:github:`83730`) 603 604* Several services and service client (AICS, ASCS, CSIP, HAS, MCS, PACS, TBS, VCP and VOCS) now 605 depend on :kconfig:option:`CONFIG_BT_SMP` and may need to be explicitly enabled. 606 (:github:`84994``) 607 608Bluetooth Classic 609================= 610 611Bluetooth Host 612============== 613 614* :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` has been deprecated. The number of ACL RX buffers is 615 now computed internally and is equal to :kconfig:option:`CONFIG_BT_MAX_CONN` + 1. If an application 616 needs more buffers, it can use the new :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA` to add 617 additional ones. 618 619 e.g. if :kconfig:option:`CONFIG_BT_MAX_CONN` was ``3`` and 620 :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` was ``7`` then 621 :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA` should be set to ``7 - (3 + 1) = 3``. 622 623 .. warning:: 624 625 The default value of :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` has been set to 0. 626 627* LE legacy pairing is no longer enabled by default since it's not secure. Leaving it enabled 628 makes a device vulnerable for downgrade attacks. If an application still needs to use LE legacy 629 pairing, it should disable :kconfig:option:`CONFIG_BT_SMP_SC_PAIR_ONLY` manually. 630 631* The prompt for :kconfig:option:`CONFIG_BT_ECC` has been removed, since it only offers an internal 632 API, meaning internal users should explicitly select it in their respective Kconfig options. 633 634Bluetooth Crypto 635================ 636 637Bluetooth Services 638================== 639 640* The :kconfig:option:`CONFIG_BT_DIS_MODEL` and :kconfig:option:`CONFIG_BT_DIS_MANUF` have been 641 deprecated. Application developers should now use the 642 :kconfig:option:`CONFIG_BT_DIS_MODEL_NUMBER_STR` and 643 :kconfig:option:`CONFIG_BT_DIS_MANUF_NAME_STR` Kconfig options to set the string values in the 644 Model Number String and Manufacturer Name String characteristics that are part of the Device 645 Information Service (DIS). 646 647Networking 648********** 649 650* The Prometheus metric creation has changed as user does not need to have a separate 651 struct :c:struct:`prometheus_metric` any more. This means that the Prometheus macros 652 :c:macro:`PROMETHEUS_COUNTER_DEFINE`, :c:macro:`PROMETHEUS_GAUGE_DEFINE`, 653 :c:macro:`PROMETHEUS_HISTOGRAM_DEFINE` and :c:macro:`PROMETHEUS_SUMMARY_DEFINE` 654 prototypes have changed. (:github:`81712`) 655 656* The default subnet mask on newly added IPv4 addresses is now specified with 657 :kconfig:option:`CONFIG_NET_IPV4_DEFAULT_NETMASK` option instead of being left 658 empty. Applications can still specify a custom netmask for an address with 659 :c:func:`net_if_ipv4_set_netmask_by_addr` function if needed. 660 661* The HTTP server public API function signature for the :c:type:`http_resource_dynamic_cb_t` has 662 changed, the data is now passed in a :c:struct:`http_request_ctx` which holds the data, data 663 length and request header information. Request headers should be accessed via this parameter 664 rather than directly in the :c:struct:`http_client_ctx` to correctly handle concurrent requests 665 on different HTTP/2 streams. 666 667* The HTTP server public API function signature for the :c:type:`http_resource_websocket_cb_t` has 668 changed, a :c:struct:`http_request_ctx` parameter has been added. The application may use this to 669 access the request headers of the HTTP upgrade request, which may be useful in deciding whether 670 to accept or reject a websocket connection. 671 672* An additional ``_res_fallback`` parameter has been added to the :c:macro:`HTTP_SERVICE_DEFINE` 673 and :c:macro:`HTTPS_SERVICE_DEFINE` macros, allowing a fallback resource to be served if no other 674 resources match the requested path. To retain the existing behaviour, ``NULL`` can be passed as the 675 additional parameter. 676 677* The :kconfig:option:`CONFIG_NET_L2_OPENTHREAD` symbol no longer implies the 678 :kconfig:option:`CONFIG_NVS` Kconfig option. Platforms using OpenThread must explicitly enable 679 either the :kconfig:option:`CONFIG_NVS` or :kconfig:option:`CONFIG_ZMS` Kconfig option. 680 681* ``CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO`` was deprecated in favour of 682 :kconfig:option:`CONFIG_NET_TC_TX_SKIP_FOR_HIGH_PRIO` to avoid naming ambiguity. 683 684Other Subsystems 685**************** 686 687Flash map 688========= 689 690Filesystem 691========== 692 693* The EXT2 Kconfig symbol ``CONFIG_MAX_FILES`` has been renamed to 694 :kconfig:option:`CONFIG_EXT2_MAX_FILES`. 695 696hawkBit 697======= 698 699* The Kconfig symbols :kconfig:option:`CONFIG_SMF` and 700 :kconfig:option:`CONFIG_SMF_ANCESTOR_SUPPORT` are now required to be enabled to use the 701 hawkBit subsystem. 702 703MCUmgr 704====== 705 706* The Kconfig :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH` has been 707 deprecated and replaced with :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE`, 708 applications should be updated to select this new symbol if they were selecting the old symbol. 709 710* The deprecated macro ``MGMT_CB_ERROR_RET`` has been removed. 711 712Modem 713===== 714 715LoRa 716==== 717 718* The function :c:func:`lora_recv_async` and callback ``lora_recv_cb`` now include an 719 additional ``user_data`` parameter, which is a void pointer. This parameter can be used to reference 720 any user-defined data structure. To maintain the current behavior, set this parameter to ``NULL``. 721 722Secure Storage 723============== 724 725* Store backends no longer automatically enable their dependencies through ``select`` or ``imply``. 726 Users must ensure that the depencies are enabled in their applications. 727 :kconfig:option:`CONFIG_SECURE_STORAGE_ITS_STORE_IMPLEMENTATION_SETTINGS` previously enabled NVS 728 and settings, which means the NVS settings backend would get used by default if ZMS wasn't 729 enabled. (:github:`86181`) 730 731Stream Flash 732============ 733 734* The function :c:func:`stream_flash_init` no longer does auto-detection of device size 735 when ``size`` parameter is set to 0 and will return error in such case. User is now 736 required to explicitly provide device size. Issue :github:`71042` provides rationale 737 for the change. 738 739Architectures 740************* 741 742* native/POSIX 743 744 * :kconfig:option:`CONFIG_NATIVE_APPLICATION` has been deprecated. Out-of-tree boards using this 745 option should migrate to the native_simulator runner (:github:`81232`). 746 For an example of how this was done with a board in-tree check :github:`61481`. 747 * For the native_sim target :kconfig:option:`CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT` has been 748 switched to ``n`` by default, and this option has been deprecated. Ensure your code does not 749 use the :kconfig:option:`CONFIG_BOARD_NATIVE_POSIX` option anymore (:github:`81232`). 750 751* x86 752 753 * Kconfigs ``CONFIG_DISABLE_SSBD`` and ``CONFIG_ENABLE_EXTENDED_IBRS`` have been deprecated 754 since v3.7. These were removed. Use :kconfig:option:`CONFIG_X86_DISABLE_SSBD` and 755 :kconfig:option:`CONFIG_X86_ENABLE_EXTENDED_IBRS` instead. 756