1:orphan: 2 3.. _migration_4.0: 4 5Migration guide to Zephyr v4.0.0 6################################ 7 8This document describes the changes required when migrating your application from Zephyr v3.7.0 to 9Zephyr v4.0.0. 10 11Any other changes (not directly related to migrating applications) can be found in 12the :ref:`release notes<zephyr_4.0>`. 13 14.. contents:: 15 :local: 16 :depth: 2 17 18Build System 19************ 20 21* Removed the ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` Kconfig option as ``west sign`` is no 22 longer called by the build system when signing images for MCUboot. 23 24* The imgtool part of ``west sign`` has been deprecated, options to be supplied to imgtool when 25 signing should be set in :kconfig:option:`CONFIG_MCUBOOT_EXTRA_IMGTOOL_ARGS` instead. 26 27Kernel 28****** 29 30* Removed the deprecated :kconfig:option:`CONFIG_MP_NUM_CPUS`, application should be updated to use 31 :kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` instead. 32 33Boards 34****** 35 36* :ref:`native_posix<native_posix>` has been deprecated in favour of 37 :ref:`native_sim<native_sim>` (:github:`76898`). 38* Nordic nRF53 and nRF91 based boards can use the common devicetree overlays in ``dts/common/nordic`` 39 to define default flash and ram partitioning based on TF-M. 40 41* STM32WBA: The command used for fetching blobs required to build ble applications is now 42 ``west blobs fetch hal_stm32`` instead of ``west blobs fetch stm32``. 43 44* Board ``qemu_xtensa`` is deprecated. Use ``qemu_xtensa/dc233c`` instead. 45 46Devicetree 47********** 48 49* The :c:macro:`DT_REG_ADDR` macro and its variants are now expanding into an 50 unsigned literals (i.e. with a ``U`` suffix). To use addresses as devicetree 51 indexes use the :c:macro:`DT_REG_ADDR_RAW` variants. 52* The :c:macro:`DT_REG_SIZE` macro and its variants are also expanding into 53 unsigned literals, no raw variants are provided at this stage. 54 55STM32 56===== 57 58* On all official STM32 boards, ``west flash`` selects STM32CubeProgrammer as the default west runner. 59 If you want to enforce the selection of another runner like OpenOCD or pyOCD for flashing, you should 60 specify it using the west ``--runner`` or ``-r`` option. (:github:`75284`) 61* ADC: Domain clock needs to be explicitly defined if property st,adc-clock-source = <ASYNC> is used. 62 63Modules 64******* 65 66Mbed TLS 67======== 68 69* The Kconfig options ``CONFIG_MBEDTLS_TLS_VERSION_1_0`` and ``CONFIG_MBEDTLS_TLS_VERSION_1_1`` 70 have been removed because Mbed TLS doesn't support TLS 1.0 and 1.1 anymore since v3.0. (:github:`76833`) 71* The following Kconfig symbols were renamed (:github:`76408`): 72 * ``CONFIG_MBEDTLS_ENTROPY_ENABLED`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_C`, 73 * ``CONFIG_MBEDTLS_ZEPHYR_ENTROPY`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`. 74 75* The Kconfig option ``CONFIG_MBEDTLS_SSL_EXPORT_KEYS`` was removed because the 76 corresponding build symbol was removed in Mbed TLS 3.1.0 and is now assumed to 77 be enabled. (:github:`77657`) 78 79TinyCrypt 80========= 81 82Albeit the formal deprecation of TinyCrypt is not started yet, its removal from 83the Zephyr codebase is. Formal deprecation will happen in the next release. 84 85Trusted Firmware-M 86================== 87 88* The security counter used for the hardware rollback protection now comes explicitly from 89 :kconfig:option:`CONFIG_TFM_IMAGE_SECURITY_COUNTER`, instead of being automatically determined from 90 the image version. This has been changed as the implicit counter calculation is incompatible with 91 versions larger than ``0.0.1024`` (:github:`78128`). 92 93LVGL 94==== 95 96zcbor 97===== 98 99* Updated the zcbor library to version 0.9.0. 100 Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md 101 Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md 102 Migration guide copied here: 103 104 * ``zcbor_simple_*()`` functions have been removed to avoid confusion about their use. 105 They are still in the C file because they are used by other functions. 106 Instead, use the specific functions for the currently supported simple values, i.e. 107 ``zcbor_bool_*()``, ``zcbor_nil_*()``, and ``zcbor_undefined_*()``. 108 If a removed variant is strictly needed, add your own forward declaration in your code. 109 110 * Code generation naming: 111 112 * More C keywords are now capitalized to avoid naming collision. 113 You might have to capitalize some instances if your code was generated to have those names. 114 115 * A fix was made to the naming of bstr elements with a .size specifier, which might mean that these elements change name in your code when you regenerate. 116 117Device Drivers and Devicetree 118***************************** 119 120* The ``compatible`` of the LiteX ethernet controller has been renamed from 121 ``litex,eth0`` to :dtcompatible:`litex,liteeth`. (:github:`75433`) 122 123* The ``compatible`` of the LiteX uart controller has been renamed from 124 ``litex,uart0`` to :dtcompatible:`litex,uart`. (:github:`74522`) 125 126* The devicetree bindings for the Microchip ``mcp23xxx`` series have been split up. Users of 127 ``microchip,mcp230xx`` and ``microchip,mcp23sxx`` should change their devicetree ``compatible`` 128 values to the specific chip variant, e.g. :dtcompatible:`microchip,mcp23017`. 129 The ``ngpios`` devicetree property has been removed, since it is implied by the model name. 130 Chip variants with open-drain outputs (``mcp23x09``, ``mcp23x18``) now correctly reflect this in 131 their driver API, users of these devices should ensure they pass appropriate values to 132 :c:func:`gpio_pin_set`. (:github:`65797`) 133 134* The ``power-domain`` property has been removed in favor of ``power-domains``. 135 The new property allows to add more than one power domain. 136 ``power-domain-names`` is also available to optionally name each entry in 137 ``power-domains``. The number of cells in the ``power-domains`` property need 138 to be defined using ``#power-domain-cells``. 139 140Analog Digital Converter (ADC) 141============================== 142 143* For all STM32 ADC that selects an asynchronous clock through ``st,adc-clock-source`` property, 144 it is now mandatory to also explicitly define a domain clock source using the ``clock`` property. 145 146Clock control 147============= 148 149* LFXO/HFXO (High/Low Frequency Crystal Oscillator) present in nRF53 series can 150 now be configured using devicetree. The Kconfig options 151 :kconfig:option:`CONFIG_SOC_ENABLE_LFXO`, 152 :kconfig:option:`CONFIG_SOC_LFXO_CAP_EXTERNAL`, 153 :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_6PF`, 154 :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_7PF`, 155 :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_9PF`, 156 :kconfig:option:`CONFIG_SOC_HFXO_CAP_DEFAULT`, 157 :kconfig:option:`CONFIG_SOC_HFXO_CAP_EXTERNAL`, 158 :kconfig:option:`CONFIG_SOC_HFXO_CAP_INTERNAL` and 159 :kconfig:option:`CONFIG_SOC_HFXO_CAP_INT_VALUE_X2` have been deprecated. 160 161 LFXO can now be configured like this: 162 163 .. code-block:: devicetree 164 165 /* use external capacitors */ 166 &lfxo { 167 load-capacitors = "external"; 168 }; 169 170 /* use internal capacitors (value needs to be selected: 6, 7, 9pF) 171 &lfxo { 172 load-capacitors = "internal"; 173 load-capacitance-picofarad = <...>; 174 }; 175 176 HFXO can now be configured like this: 177 178 .. code-block:: devicetree 179 180 /* use external capacitors */ 181 &hfxo { 182 load-capacitors = "external"; 183 }; 184 185 /* use internal capacitors (value needs to be selected: 7pF...20pF in 0.5pF 186 * steps, units: femtofarads) 187 */ 188 &hfxo { 189 load-capacitors = "internal"; 190 load-capacitance-femtofarad = <...>; 191 }; 192 193Crypto 194====== 195 196* Following the deprecation of the TinyCrypt library (:github:`79566`), the 197 TinyCrypt-based shim driver was marked as deprecated (:github:`79653`). 198 199Disk 200==== 201 202* The SDMMC subsystem driver now requires a ``disk-name`` property be supplied 203 with the definition of the disk, which is used when registering the 204 SD device with the disk subsystem. This permits multiple SD devices to be 205 registered simultaneously. If unsure, ``disk-name = "SD"`` may be used 206 as a sane default. 207 208* The MMC subsystem driver now requires a ``disk-name`` property be supplied 209 with the definition of the disk, which is used when registering the 210 MMC device with the disk subsystem. This permits multiple MMC devices to be 211 registered simultaneously. If unsure, ``disk-name = "SD2"`` may be used 212 as a sane default. 213 214 215Enhanced Serial Peripheral Interface (eSPI) 216=========================================== 217 218GNSS 219==== 220 221* The u-blox M10 driver has been renamed to M8 as it only supports M8 based devices. 222 Existing devicetree compatibles should be updated to :dtcompatible:`u-blox,m8`, and Kconfig 223 symbols swapped to :kconfig:option:`CONFIG_GNSS_U_BLOX_M8`. 224 225* The APIs :c:func:`gnss_set_periodic_config` and :c:func:`gnss_get_periodic_config` have 226 been removed. (:github:`76392`) 227 228Input 229===== 230 231* :c:macro:`INPUT_CALLBACK_DEFINE` has now an extra ``user_data`` void pointer 232 argument that can be used to reference any user data structure. To restore 233 the current behavior it can be set to ``NULL``. A ``void *user_data`` 234 argument has to be added to the callback function arguments. 235 236* The :dtcompatible:`analog-axis` ``invert`` property has been renamed to 237 ``invert-input`` (there's now an ``invert-output`` available as well). 238 239PWM 240=== 241 242* The Raspberry Pi Pico PWM driver now configures frequency adaptively. 243 This has resulted in a change in how device tree parameters are handled. 244 If the :dtcompatible:`raspberry,pico-pwm`'s ``divider-int-0`` or variations 245 for each channel are specified, or if these are set to 0, 246 the driver dynamically configures the division ratio by specified cycles. 247 The driver will operate at the specified division ratio if a non-zero value is 248 specified for ``divider-int-0``. 249 This is unchanged from previous behavior. 250 Please specify ``divider-int-0`` explicitly to make the same behavior as before. 251 252SDHC 253==== 254 255* The NXP USDHC driver now assumes a card is present if no card detect method 256 is configured, instead of using the peripheral's internal card detect signal 257 to check for card presence. To use the internal card detect signal, the 258 devicetree property ``detect-cd`` should be added to the USDHC node in use. 259 260Sensors 261======= 262 263* The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed 264 to support all JEDEC JC 42.4 compatible temperature sensors. It now uses the 265 :dtcompatible:`jedec,jc-42.4-temp` compatible string instead to the ``microchip,mcp9808`` string. 266* The :dtcompatible:`current-sense-amplifier` sense resistor is now specified in milli-ohms 267 (``sense-resistor-milli-ohms``) instead of micro-ohms in order to increase the maximum representable 268 resistor from 4.2k to 4.2M. 269* The :dtcompatible:`current-sense-amplifier` properties ``sense-gain-mult`` and ``sense-gain-div`` 270 are now limited to a maximum value of ``UINT16_MAX`` to enable smaller rounding errors in internal 271 calculations. 272 273* The ``nxp,`` prefixed properties in :dtcompatible:`nxp,kinetis-acmp` have been deprecated in favor 274 of properties without the prefix. The sensor based driver for the :dtcompatible:`nxp,kinetis-acmp` 275 has been updated to support both the new and deprecated property names. Uses of the deprecated 276 property names should be updated to the new property names. 277 278Serial 279====== 280 281 * Users of :c:func:`uart_irq_tx_ready` now need to check for ``ret > 0`` to ensure that the FIFO 282 can accept data bytes, instead of ``ret == 1``. The function now returns a lower bound on the 283 number of bytes that can be provided to :c:func:`uart_fifo_fill` without truncation. 284 285 * LiteX: ``CONFIG_UART_LITEUART`` has been renamed to :kconfig:option:`CONFIG_UART_LITEX`. 286 287Regulator 288========= 289 290* Internal regulators present in nRF52/53 series can now be configured using 291 devicetree. The Kconfig options :kconfig:option:`CONFIG_SOC_DCDC_NRF52X`, 292 :kconfig:option:`CONFIG_SOC_DCDC_NRF52X_HV`, 293 :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_APP`, 294 :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_NET` and 295 :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_HV` selected by board-level Kconfig 296 options have been deprecated. 297 298 Example for nRF52 series: 299 300 .. code-block:: devicetree 301 302 /* configure REG/REG1 in DC/DC mode */ 303 ®/reg1 { 304 regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; 305 }; 306 307 /* enable REG0 (HV mode) */ 308 ®0 { 309 status = "okay"; 310 }; 311 312 Example for nRF53 series: 313 314 .. code-block:: devicetree 315 316 /* configure VREGMAIN in DC/DC mode */ 317 &vregmain { 318 regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; 319 }; 320 321 /* configure VREGRADIO in DC/DC mode */ 322 &vregradio { 323 regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; 324 }; 325 326 /* enable VREGH (HV mode) */ 327 &vregh { 328 status = "okay"; 329 }; 330 331Bluetooth 332********* 333 334Bluetooth HCI 335============= 336 337* The ``bt-hci-bus`` and ``bt-hci-quirks`` devicetree properties for HCI bindings have been changed 338 to use lower-case strings without the ``BT_HCI_QUIRK_`` and ``BT_HCI_BUS_`` prefixes. 339* The Kconfig option :kconfig:option:`BT_SPI` is now automatically selected based on devicetree 340 compatibles and can be removed from board ``.defconfig`` files. 341 342Bluetooth Audio 343=============== 344 345* The Volume Renderer callback functions :code:`bt_vcp_vol_rend_cb.state` and 346 :code:`bt_vcp_vol_rend_cb.flags` for VCP now contain an additional parameter for 347 the connection. 348 This needs to be added to all instances of VCP Volume Renderer callback functions defined. 349 (:github:`76992`) 350 351* The Unicast Server has a new registration function :c:func:`bt_bap_unicast_server_register` which 352 takes a :c:struct:`bt_bap_unicast_server_register_param` as argument. This allows the Unicast 353 Server to dynamically register Source and Sink ASE count at runtime. The old 354 :kconfig:option:`CONFIG_BT_ASCS_ASE_SRC_COUNT` and :kconfig:option:`CONFIG_BT_ASCS_ASE_SNK_COUNT` 355 has been renamed to :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SRC_COUNT` and 356 :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT` to reflect that they now serve as a 357 compile-time maximum configuration of ASEs to be used. 358 :c:func:`bt_bap_unicast_server_register` needs to be called once before using the Unicast Server, 359 and more specifically prior to calling :c:func:`bt_bap_unicast_server_register_cb` for the first 360 time. It does not need to be called again until the new function 361 :c:func:`bt_bap_unicast_server_unregister` has been called. 362 (:github:`76632`) 363 364* The Coordinated Set Coordinator functions :c:func:`bt_csip_set_coordinator_lock` and 365 :c:func:`bt_csip_set_coordinator_release` now require that :kconfig:option:`CONFIG_BT_BONDABLE` 366 is enabled and that all members are bonded, to comply with the requirements from the CSIP spec. 367 (:github:`78877`) 368 369* The callback structure provided to :c:func:`bt_bap_unicast_client_register_cb` is no longer 370 :code:`const`, and now multiple callback structures can be registered. 371 (:github:`78999`) 372 373* The Broadcast Audio Scan Service (BASS) shall now be registered and unregistered dynamically 374 at runtime within the scan delegator. Two new APIs, :c:func:`bt_bap_scan_delegator_register()` 375 and :c:func:`bt_bap_scan_delegator_unregister()`, have been introduced to manage both BASS and 376 scan delegator registration and initialization dynamically. It should also be mentioned that 377 the previous callback registration function, :c:func:`bt_bap_scan_delegator_register_cb()` has 378 now been removed and merged with :c:func:`bt_bap_scan_delegator_register()`. 379 This change allows more flexibility when registering or unregistering scan delegator and BASS 380 related functionality without requiring build-time configuration. Existing need to be updated 381 to use these new APIs. 382 (:github:`78751`) 383 384* The Telephone Bearer Service (TBS) and Generic Telephone Bearer Service (GTBS) shall now be 385 registered dynamically at runtime with :c:func:`bt_tbs_register_bearer`. The services can also be 386 unregistered with :c:func:`bt_tbs_unregister_bearer`. 387 (:github:`76108`) 388 389* There has been a rename from ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg``. This effects all 390 structs, enums and defines that used the ``bt_audio_codec_qos`` name. To use the new naming simply 391 do a search-and-replace for ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg`` and 392 ``BT_AUDIO_CODEC_QOS`` to ``BT_BAP_QOS_CFG``. (:github:`76633`) 393 394* The generation of broadcast ID inside of zephyr stack has been removed, it is now up the 395 application to generate a broadcast ID. This means that the application can now fully decide 396 whether to use a static or random broadcast ID. Reusing and statically defining a broadcast ID was 397 added to the Basic Audio Profile in version 1.0.2, which is the basis for this change. All 398 instances of :c:func:`bt_cap_initiator_broadcast_get_id` and 399 :c:func:`bt_bap_broadcast_source_get_id` has been removed(:github:`80228`) 400 401* ``BT_AUDIO_BROADCAST_CODE_SIZE`` has been removed and ``BT_ISO_BROADCAST_CODE_SIZE`` should be 402 used instead. (:github:`80217`) 403 404Bluetooth Host 405============== 406 407Automatic advertiser resumption is deprecated 408--------------------------------------------- 409 410.. note:: 411 412 This deprecation is compiler-checked. If you get no warnings, 413 you should not be affected. 414 415Deprecated symbols: 416 * :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` 417 * :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` 418 * :c:macro:`BT_LE_ADV_CONN` 419 420New symbols: 421 * :c:enumerator:`BT_LE_ADV_OPT_CONN` 422 * :c:macro:`BT_LE_ADV_CONN_FAST_1` 423 * :c:macro:`BT_LE_ADV_CONN_FAST_2` 424 425:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` is a combined 426instruction to make the advertiser connectable and to enable 427automatic resumption. To disable the automatic resumption, use 428:c:enumerator:`BT_LE_ADV_OPT_CONN`. 429 430Extended Advertising API with shorthands 431^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 432 433Extended Advertising API ``bt_le_ext_adv_*`` implicitly assumes 434:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` and never automatically 435resume advertising. Therefore, the following search/replace can 436be applied without thinking: 437 438Replace all 439 440.. code-block:: diff 441 442 -bt_le_ext_adv_create(BT_LE_ADV_CONN, ...) 443 +bt_le_ext_adv_create(BT_LE_ADV_FAST_2, ...) 444 445.. code-block:: diff 446 447 -bt_le_ext_adv_update_param(..., BT_LE_ADV_CONN) 448 +bt_le_ext_adv_update_param(..., BT_LE_ADV_FAST_2) 449 450Extended Advertising API with custom parameters 451^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 452 453You may have uses of :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` 454in assignments to a :c:struct:`bt_le_adv_param`. If your struct 455is never passed to :c:func:`bt_le_adv_start`, you should: 456 457* replace :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` with 458 :c:enumerator:`BT_LE_ADV_OPT_CONN`. 459* remove :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`. 460 461Legacy Advertising API not using automatic resumption 462^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 463 464Any calls to :c:func:`bt_le_adv_start` that use the combination 465:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` and 466:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` should have that 467combination replaced with :c:enumerator:`BT_LE_ADV_OPT_CONN`. 468 469Legacy Advertising API using automatic resumption 470^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 471 472For this case, the application has to take over the 473responsibility of restarting the advertiser. 474 475Refer to the extended advertising sample for an example 476implementation of advertiser restarting. The same technique can 477be used for legacy advertising. 478 479Networking 480********** 481 482* The CoAP public API functions :c:func:`coap_get_block1_option` and 483 :c:func:`coap_get_block2_option` have changed. The ``block_number`` pointer 484 type has changed from ``uint8_t *`` to ``uint32_t *``. Additionally, 485 :c:func:`coap_get_block2_option` now accepts an additional ``bool *has_more`` 486 parameter, to store the value of the more flag. (:github:`76052`) 487 488* The struct :c:struct:`coap_transmission_parameters` has a new field ``ack_random_percent`` if 489 :kconfig:option:`CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT` is enabled. (:github:`79058`) 490 491* The Ethernet bridge shell is moved under network shell. This is done so that 492 all the network shell activities can be found under ``net`` shell command. 493 After this change the bridge shell is used by ``net bridge`` command. (:github:`77235`) 494 495* The Ethernet bridging code is changed to allow similar configuration experience 496 as in Linux. The bridged Ethernet interface can be used normally even if bridging 497 is enabled. The actual bridging is done by a separate virtual network interface that 498 directs network packets to bridged Ethernet interfaces. 499 The :c:func:`eth_bridge_iface_allow_tx` is removed as it is not needed because the 500 bridged Ethernet interface can send and receive data normally. 501 The :c:func:`eth_bridge_listener_add` and :c:func:`eth_bridge_listener_remove` are 502 removed as same functionality can be achieved using promiscuous API. 503 Because the bridge interface is a normal network interface, 504 the :c:func:`eth_bridge_iface_add` and :c:func:`eth_bridge_iface_remove` 505 will take network interface pointer as a first parameter. (:github:`77987`) 506 507* To facilitate use outside of the networking subsystem, the network buffer header file was renamed 508 from :zephyr_file:`include/zephyr/net/buf.h` to :zephyr_file:`include/zephyr/net_buf.h` and the 509 implementation moved to :zephyr_file:`lib/net_buf/`. (:github:`78009`) 510 511* The ``work_q`` parameter to ``NET_SOCKET_SERVICE_SYNC_DEFINE`` and 512 ``NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC`` has been removed as it was always ignored. (:github:`79446`) 513 514* The callback function for the socket service has changed. The 515 ``struct k_work *work`` parameter has been replaced with a pointer to the 516 ``struct net_socket_service_event *pev`` parameter. (:github:`80041`) 517 518* Deprecated the :kconfig:option:`CONFIG_NET_SOCKETS_POLL_MAX` option in favour of 519 :kconfig:option:`CONFIG_ZVFS_POLL_MAX`. 520 521Other Subsystems 522**************** 523 524Flash map 525========= 526 527 * ``CONFIG_SPI_NOR_IDLE_IN_DPD`` has been removed from the :kconfig:option:`CONFIG_SPI_NOR` 528 driver. An enhanced version of this functionality can be obtained by enabling 529 :ref:`pm-device-runtime` on the device (Tunable with 530 :kconfig:option:`CONFIG_SPI_NOR_ACTIVE_DWELL_MS`). 531 532hawkBit 533======= 534 535* :c:func:`hawkbit_autohandler` now takes one argument. This argument has to be set to 536 ``true`` for the same behavior as before the change. (:github:`71037`) 537 538* ``<zephyr/mgmt/hawkbit.h>`` is deprecated in favor of ``<zephyr/mgmt/hawkbit/hawkbit.h>``. 539 The old header will be removed in future releases and its usage should be avoided. 540 The hawkbit autohandler has been separated into ``<zephyr/mgmt/hawkbit/autohandler.h>``. 541 The configuration part of hawkbit is now in ``<zephyr/mgmt/hawkbit/config.h>``. (:github:`71037`) 542 543MCUmgr 544====== 545 546* The ``MCUMGR_TRANSPORT_BT_AUTHEN`` Kconfig option from the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT` MCUmgr transport has been replaced with the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig choice. 547 The requirement for Bluetooth authentication is now indicated by the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_AUTHEN` Kconfig option. 548 To remove the default requirement for Bluetooth authentication it is necessary to enable the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig option in the project configuration. 549 550Random 551====== 552 553* Following the deprecation of the TinyCrypt library (:github:`79566`), usage 554 of TinyCrypt in the CTR-DRBG random number generator was removed. From now on 555 Mbed TLS is required to enable :kconfig:option:`CONFIG_CTR_DRBG_CSPRNG_GENERATOR`. 556 (:github:`79653`) 557 558Shell 559===== 560 561* ``kernel threads`` and ``kernel stacks`` shell command have been renamed to 562 ``kernel thread list`` & ``kernel thread stacks`` 563 564JWT (JSON Web Token) 565==================== 566 567* By default, the signature is now computed using the PSA Crypto API for both RSA and ECDSA 568 (:github:`78243`). The conversion to the PSA Crypto API is part of the adoption 569 of a standard interface for crypto operations (:github:`43712`). Moreover, 570 following the deprecation of the TinyCrypt library (:github:`79566`), usage 571 of TinyCrypt was removed from the JWT subsystem (:github:`79653`). 572 573* The following new symbols were added to allow specifying both the signature 574 algorithm and crypto library: 575 576 * :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA` (default) RSA signature using the PSA Crypto API; 577 * :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` RSA signature using Mbed TLS; 578 * :kconfig:option:`CONFIG_JWT_SIGN_ECDSA_PSA` ECDSA signature using the PSA Crypto API. 579 580 They replace the previously-existing Kconfigs ``CONFIG_JWT_SIGN_RSA`` and 581 ``CONFIG_JWT_SIGN_ECDSA``. (:github:`79653`) 582