| :orphan: |
| |
| .. _migration_4.0: |
| |
| Migration guide to Zephyr v4.0.0 |
| ################################ |
| |
| This document describes the changes required when migrating your application from Zephyr v3.7.0 to |
| Zephyr v4.0.0. |
| |
| Any other changes (not directly related to migrating applications) can be found in |
| the :ref:`release notes<zephyr_4.0>`. |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| Build System |
| ************ |
| |
| * Removed the ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` Kconfig option as ``west sign`` is no |
| longer called by the build system when signing images for MCUboot. |
| |
| * The imgtool part of ``west sign`` has been deprecated, options to be supplied to imgtool when |
| signing should be set in :kconfig:option:`CONFIG_MCUBOOT_EXTRA_IMGTOOL_ARGS` instead. |
| |
| Kernel |
| ****** |
| |
| * Removed the deprecated :kconfig:option:`CONFIG_MP_NUM_CPUS`, application should be updated to use |
| :kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` instead. |
| |
| Boards |
| ****** |
| |
| * :ref:`native_posix<native_posix>` has been deprecated in favour of |
| :ref:`native_sim<native_sim>` (:github:`76898`). |
| * Nordic nRF53 and nRF91 based boards can use the common devicetree overlays in ``dts/common/nordic`` |
| to define default flash and ram partitioning based on TF-M. |
| |
| * STM32WBA: The command used for fetching blobs required to build ble applications is now |
| ``west blobs fetch hal_stm32`` instead of ``west blobs fetch stm32``. |
| |
| * Board ``qemu_xtensa`` is deprecated. Use ``qemu_xtensa/dc233c`` instead. |
| |
| Devicetree |
| ********** |
| |
| * The :c:macro:`DT_REG_ADDR` macro and its variants are now expanding into an |
| unsigned literals (i.e. with a ``U`` suffix). To use addresses as devicetree |
| indexes use the :c:macro:`DT_REG_ADDR_RAW` variants. |
| * The :c:macro:`DT_REG_SIZE` macro and its variants are also expanding into |
| unsigned literals, no raw variants are provided at this stage. |
| |
| STM32 |
| ===== |
| |
| * On all official STM32 boards, ``west flash`` selects STM32CubeProgrammer as the default west runner. |
| If you want to enforce the selection of another runner like OpenOCD or pyOCD for flashing, you should |
| specify it using the west ``--runner`` or ``-r`` option. (:github:`75284`) |
| * ADC: Domain clock needs to be explicitly defined if property st,adc-clock-source = <ASYNC> is used. |
| |
| Modules |
| ******* |
| |
| Mbed TLS |
| ======== |
| |
| * The Kconfig options ``CONFIG_MBEDTLS_TLS_VERSION_1_0`` and ``CONFIG_MBEDTLS_TLS_VERSION_1_1`` |
| have been removed because Mbed TLS doesn't support TLS 1.0 and 1.1 anymore since v3.0. (:github:`76833`) |
| * The following Kconfig symbols were renamed (:github:`76408`): |
| * ``CONFIG_MBEDTLS_ENTROPY_ENABLED`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_C`, |
| * ``CONFIG_MBEDTLS_ZEPHYR_ENTROPY`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`. |
| |
| * The Kconfig option ``CONFIG_MBEDTLS_SSL_EXPORT_KEYS`` was removed because the |
| corresponding build symbol was removed in Mbed TLS 3.1.0 and is now assumed to |
| be enabled. (:github:`77657`) |
| |
| TinyCrypt |
| ========= |
| |
| Albeit the formal deprecation of TinyCrypt is not started yet, its removal from |
| the Zephyr codebase is. Formal deprecation will happen in the next release. |
| |
| Trusted Firmware-M |
| ================== |
| |
| * The security counter used for the hardware rollback protection now comes explicitly from |
| :kconfig:option:`CONFIG_TFM_IMAGE_SECURITY_COUNTER`, instead of being automatically determined from |
| the image version. This has been changed as the implicit counter calculation is incompatible with |
| versions larger than ``0.0.1024`` (:github:`78128`). |
| |
| LVGL |
| ==== |
| |
| zcbor |
| ===== |
| |
| * Updated the zcbor library to version 0.9.0. |
| Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md |
| Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md |
| Migration guide copied here: |
| |
| * ``zcbor_simple_*()`` functions have been removed to avoid confusion about their use. |
| They are still in the C file because they are used by other functions. |
| Instead, use the specific functions for the currently supported simple values, i.e. |
| ``zcbor_bool_*()``, ``zcbor_nil_*()``, and ``zcbor_undefined_*()``. |
| If a removed variant is strictly needed, add your own forward declaration in your code. |
| |
| * Code generation naming: |
| |
| * More C keywords are now capitalized to avoid naming collision. |
| You might have to capitalize some instances if your code was generated to have those names. |
| |
| * 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. |
| |
| Device Drivers and Devicetree |
| ***************************** |
| |
| * The ``compatible`` of the LiteX ethernet controller has been renamed from |
| ``litex,eth0`` to :dtcompatible:`litex,liteeth`. (:github:`75433`) |
| |
| * The ``compatible`` of the LiteX uart controller has been renamed from |
| ``litex,uart0`` to :dtcompatible:`litex,uart`. (:github:`74522`) |
| |
| * The devicetree bindings for the Microchip ``mcp23xxx`` series have been split up. Users of |
| ``microchip,mcp230xx`` and ``microchip,mcp23sxx`` should change their devicetree ``compatible`` |
| values to the specific chip variant, e.g. :dtcompatible:`microchip,mcp23017`. |
| The ``ngpios`` devicetree property has been removed, since it is implied by the model name. |
| Chip variants with open-drain outputs (``mcp23x09``, ``mcp23x18``) now correctly reflect this in |
| their driver API, users of these devices should ensure they pass appropriate values to |
| :c:func:`gpio_pin_set`. (:github:`65797`) |
| |
| * The ``power-domain`` property has been removed in favor of ``power-domains``. |
| The new property allows to add more than one power domain. |
| ``power-domain-names`` is also available to optionally name each entry in |
| ``power-domains``. The number of cells in the ``power-domains`` property need |
| to be defined using ``#power-domain-cells``. |
| |
| Analog Digital Converter (ADC) |
| ============================== |
| |
| * For all STM32 ADC that selects an asynchronous clock through ``st,adc-clock-source`` property, |
| it is now mandatory to also explicitly define a domain clock source using the ``clock`` property. |
| |
| Clock control |
| ============= |
| |
| * LFXO/HFXO (High/Low Frequency Crystal Oscillator) present in nRF53 series can |
| now be configured using devicetree. The Kconfig options |
| :kconfig:option:`CONFIG_SOC_ENABLE_LFXO`, |
| :kconfig:option:`CONFIG_SOC_LFXO_CAP_EXTERNAL`, |
| :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_6PF`, |
| :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_7PF`, |
| :kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_9PF`, |
| :kconfig:option:`CONFIG_SOC_HFXO_CAP_DEFAULT`, |
| :kconfig:option:`CONFIG_SOC_HFXO_CAP_EXTERNAL`, |
| :kconfig:option:`CONFIG_SOC_HFXO_CAP_INTERNAL` and |
| :kconfig:option:`CONFIG_SOC_HFXO_CAP_INT_VALUE_X2` have been deprecated. |
| |
| LFXO can now be configured like this: |
| |
| .. code-block:: devicetree |
| |
| /* use external capacitors */ |
| &lfxo { |
| load-capacitors = "external"; |
| }; |
| |
| /* use internal capacitors (value needs to be selected: 6, 7, 9pF) |
| &lfxo { |
| load-capacitors = "internal"; |
| load-capacitance-picofarad = <...>; |
| }; |
| |
| HFXO can now be configured like this: |
| |
| .. code-block:: devicetree |
| |
| /* use external capacitors */ |
| &hfxo { |
| load-capacitors = "external"; |
| }; |
| |
| /* use internal capacitors (value needs to be selected: 7pF...20pF in 0.5pF |
| * steps, units: femtofarads) |
| */ |
| &hfxo { |
| load-capacitors = "internal"; |
| load-capacitance-femtofarad = <...>; |
| }; |
| |
| Crypto |
| ====== |
| |
| * Following the deprecation of the TinyCrypt library (:github:`79566`), the |
| TinyCrypt-based shim driver was marked as deprecated (:github:`79653`). |
| |
| Disk |
| ==== |
| |
| * The SDMMC subsystem driver now requires a ``disk-name`` property be supplied |
| with the definition of the disk, which is used when registering the |
| SD device with the disk subsystem. This permits multiple SD devices to be |
| registered simultaneously. If unsure, ``disk-name = "SD"`` may be used |
| as a sane default. |
| |
| * The MMC subsystem driver now requires a ``disk-name`` property be supplied |
| with the definition of the disk, which is used when registering the |
| MMC device with the disk subsystem. This permits multiple MMC devices to be |
| registered simultaneously. If unsure, ``disk-name = "SD2"`` may be used |
| as a sane default. |
| |
| |
| Enhanced Serial Peripheral Interface (eSPI) |
| =========================================== |
| |
| GNSS |
| ==== |
| |
| * The u-blox M10 driver has been renamed to M8 as it only supports M8 based devices. |
| Existing devicetree compatibles should be updated to :dtcompatible:`u-blox,m8`, and Kconfig |
| symbols swapped to :kconfig:option:`CONFIG_GNSS_U_BLOX_M8`. |
| |
| * The APIs :c:func:`gnss_set_periodic_config` and :c:func:`gnss_get_periodic_config` have |
| been removed. (:github:`76392`) |
| |
| Input |
| ===== |
| |
| * :c:macro:`INPUT_CALLBACK_DEFINE` has now an extra ``user_data`` void pointer |
| argument that can be used to reference any user data structure. To restore |
| the current behavior it can be set to ``NULL``. A ``void *user_data`` |
| argument has to be added to the callback function arguments. |
| |
| * The :dtcompatible:`analog-axis` ``invert`` property has been renamed to |
| ``invert-input`` (there's now an ``invert-output`` available as well). |
| |
| PWM |
| === |
| |
| * The Raspberry Pi Pico PWM driver now configures frequency adaptively. |
| This has resulted in a change in how device tree parameters are handled. |
| If the :dtcompatible:`raspberry,pico-pwm`'s ``divider-int-0`` or variations |
| for each channel are specified, or if these are set to 0, |
| the driver dynamically configures the division ratio by specified cycles. |
| The driver will operate at the specified division ratio if a non-zero value is |
| specified for ``divider-int-0``. |
| This is unchanged from previous behavior. |
| Please specify ``divider-int-0`` explicitly to make the same behavior as before. |
| |
| SDHC |
| ==== |
| |
| * The NXP USDHC driver now assumes a card is present if no card detect method |
| is configured, instead of using the peripheral's internal card detect signal |
| to check for card presence. To use the internal card detect signal, the |
| devicetree property ``detect-cd`` should be added to the USDHC node in use. |
| |
| Sensors |
| ======= |
| |
| * The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed |
| to support all JEDEC JC 42.4 compatible temperature sensors. It now uses the |
| :dtcompatible:`jedec,jc-42.4-temp` compatible string instead to the ``microchip,mcp9808`` string. |
| * The :dtcompatible:`current-sense-amplifier` sense resistor is now specified in milli-ohms |
| (``sense-resistor-milli-ohms``) instead of micro-ohms in order to increase the maximum representable |
| resistor from 4.2k to 4.2M. |
| * The :dtcompatible:`current-sense-amplifier` properties ``sense-gain-mult`` and ``sense-gain-div`` |
| are now limited to a maximum value of ``UINT16_MAX`` to enable smaller rounding errors in internal |
| calculations. |
| |
| * The ``nxp,`` prefixed properties in :dtcompatible:`nxp,kinetis-acmp` have been deprecated in favor |
| of properties without the prefix. The sensor based driver for the :dtcompatible:`nxp,kinetis-acmp` |
| has been updated to support both the new and deprecated property names. Uses of the deprecated |
| property names should be updated to the new property names. |
| |
| Serial |
| ====== |
| |
| * Users of :c:func:`uart_irq_tx_ready` now need to check for ``ret > 0`` to ensure that the FIFO |
| can accept data bytes, instead of ``ret == 1``. The function now returns a lower bound on the |
| number of bytes that can be provided to :c:func:`uart_fifo_fill` without truncation. |
| |
| * LiteX: ``CONFIG_UART_LITEUART`` has been renamed to :kconfig:option:`CONFIG_UART_LITEX`. |
| |
| Regulator |
| ========= |
| |
| * Internal regulators present in nRF52/53 series can now be configured using |
| devicetree. The Kconfig options :kconfig:option:`CONFIG_SOC_DCDC_NRF52X`, |
| :kconfig:option:`CONFIG_SOC_DCDC_NRF52X_HV`, |
| :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_APP`, |
| :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_NET` and |
| :kconfig:option:`CONFIG_SOC_DCDC_NRF53X_HV` selected by board-level Kconfig |
| options have been deprecated. |
| |
| Example for nRF52 series: |
| |
| .. code-block:: devicetree |
| |
| /* configure REG/REG1 in DC/DC mode */ |
| ®/reg1 { |
| regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; |
| }; |
| |
| /* enable REG0 (HV mode) */ |
| ®0 { |
| status = "okay"; |
| }; |
| |
| Example for nRF53 series: |
| |
| .. code-block:: devicetree |
| |
| /* configure VREGMAIN in DC/DC mode */ |
| &vregmain { |
| regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; |
| }; |
| |
| /* configure VREGRADIO in DC/DC mode */ |
| &vregradio { |
| regulator-initial-mode = <NRF5X_REG_MODE_DCDC>; |
| }; |
| |
| /* enable VREGH (HV mode) */ |
| &vregh { |
| status = "okay"; |
| }; |
| |
| Bluetooth |
| ********* |
| |
| Bluetooth HCI |
| ============= |
| |
| * The ``bt-hci-bus`` and ``bt-hci-quirks`` devicetree properties for HCI bindings have been changed |
| to use lower-case strings without the ``BT_HCI_QUIRK_`` and ``BT_HCI_BUS_`` prefixes. |
| * The Kconfig option :kconfig:option:`BT_SPI` is now automatically selected based on devicetree |
| compatibles and can be removed from board ``.defconfig`` files. |
| |
| Bluetooth Audio |
| =============== |
| |
| * The Volume Renderer callback functions :code:`bt_vcp_vol_rend_cb.state` and |
| :code:`bt_vcp_vol_rend_cb.flags` for VCP now contain an additional parameter for |
| the connection. |
| This needs to be added to all instances of VCP Volume Renderer callback functions defined. |
| (:github:`76992`) |
| |
| * The Unicast Server has a new registration function :c:func:`bt_bap_unicast_server_register` which |
| takes a :c:struct:`bt_bap_unicast_server_register_param` as argument. This allows the Unicast |
| Server to dynamically register Source and Sink ASE count at runtime. The old |
| :kconfig:option:`CONFIG_BT_ASCS_ASE_SRC_COUNT` and :kconfig:option:`CONFIG_BT_ASCS_ASE_SNK_COUNT` |
| has been renamed to :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SRC_COUNT` and |
| :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT` to reflect that they now serve as a |
| compile-time maximum configuration of ASEs to be used. |
| :c:func:`bt_bap_unicast_server_register` needs to be called once before using the Unicast Server, |
| and more specifically prior to calling :c:func:`bt_bap_unicast_server_register_cb` for the first |
| time. It does not need to be called again until the new function |
| :c:func:`bt_bap_unicast_server_unregister` has been called. |
| (:github:`76632`) |
| |
| * The Coordinated Set Coordinator functions :c:func:`bt_csip_set_coordinator_lock` and |
| :c:func:`bt_csip_set_coordinator_release` now require that :kconfig:option:`CONFIG_BT_BONDABLE` |
| is enabled and that all members are bonded, to comply with the requirements from the CSIP spec. |
| (:github:`78877`) |
| |
| * The callback structure provided to :c:func:`bt_bap_unicast_client_register_cb` is no longer |
| :code:`const`, and now multiple callback structures can be registered. |
| (:github:`78999`) |
| |
| * The Broadcast Audio Scan Service (BASS) shall now be registered and unregistered dynamically |
| at runtime within the scan delegator. Two new APIs, :c:func:`bt_bap_scan_delegator_register()` |
| and :c:func:`bt_bap_scan_delegator_unregister()`, have been introduced to manage both BASS and |
| scan delegator registration and initialization dynamically. It should also be mentioned that |
| the previous callback registration function, :c:func:`bt_bap_scan_delegator_register_cb()` has |
| now been removed and merged with :c:func:`bt_bap_scan_delegator_register()`. |
| This change allows more flexibility when registering or unregistering scan delegator and BASS |
| related functionality without requiring build-time configuration. Existing need to be updated |
| to use these new APIs. |
| (:github:`78751`) |
| |
| * The Telephone Bearer Service (TBS) and Generic Telephone Bearer Service (GTBS) shall now be |
| registered dynamically at runtime with :c:func:`bt_tbs_register_bearer`. The services can also be |
| unregistered with :c:func:`bt_tbs_unregister_bearer`. |
| (:github:`76108`) |
| |
| * There has been a rename from ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg``. This effects all |
| structs, enums and defines that used the ``bt_audio_codec_qos`` name. To use the new naming simply |
| do a search-and-replace for ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg`` and |
| ``BT_AUDIO_CODEC_QOS`` to ``BT_BAP_QOS_CFG``. (:github:`76633`) |
| |
| * The generation of broadcast ID inside of zephyr stack has been removed, it is now up the |
| application to generate a broadcast ID. This means that the application can now fully decide |
| whether to use a static or random broadcast ID. Reusing and statically defining a broadcast ID was |
| added to the Basic Audio Profile in version 1.0.2, which is the basis for this change. All |
| instances of :c:func:`bt_cap_initiator_broadcast_get_id` and |
| :c:func:`bt_bap_broadcast_source_get_id` has been removed(:github:`80228`) |
| |
| * ``BT_AUDIO_BROADCAST_CODE_SIZE`` has been removed and ``BT_ISO_BROADCAST_CODE_SIZE`` should be |
| used instead. (:github:`80217`) |
| |
| Bluetooth Host |
| ============== |
| |
| Automatic advertiser resumption is deprecated |
| --------------------------------------------- |
| |
| .. note:: |
| |
| This deprecation is compiler-checked. If you get no warnings, |
| you should not be affected. |
| |
| Deprecated symbols: |
| * :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` |
| * :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` |
| * :c:macro:`BT_LE_ADV_CONN` |
| |
| New symbols: |
| * :c:enumerator:`BT_LE_ADV_OPT_CONN` |
| * :c:macro:`BT_LE_ADV_CONN_FAST_1` |
| * :c:macro:`BT_LE_ADV_CONN_FAST_2` |
| |
| :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` is a combined |
| instruction to make the advertiser connectable and to enable |
| automatic resumption. To disable the automatic resumption, use |
| :c:enumerator:`BT_LE_ADV_OPT_CONN`. |
| |
| Extended Advertising API with shorthands |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Extended Advertising API ``bt_le_ext_adv_*`` implicitly assumes |
| :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` and never automatically |
| resume advertising. Therefore, the following search/replace can |
| be applied without thinking: |
| |
| Replace all |
| |
| .. code-block:: diff |
| |
| -bt_le_ext_adv_create(BT_LE_ADV_CONN, ...) |
| +bt_le_ext_adv_create(BT_LE_ADV_FAST_2, ...) |
| |
| .. code-block:: diff |
| |
| -bt_le_ext_adv_update_param(..., BT_LE_ADV_CONN) |
| +bt_le_ext_adv_update_param(..., BT_LE_ADV_FAST_2) |
| |
| Extended Advertising API with custom parameters |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| You may have uses of :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` |
| in assignments to a :c:struct:`bt_le_adv_param`. If your struct |
| is never passed to :c:func:`bt_le_adv_start`, you should: |
| |
| * replace :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` with |
| :c:enumerator:`BT_LE_ADV_OPT_CONN`. |
| * remove :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`. |
| |
| Legacy Advertising API not using automatic resumption |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Any calls to :c:func:`bt_le_adv_start` that use the combination |
| :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` and |
| :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` should have that |
| combination replaced with :c:enumerator:`BT_LE_ADV_OPT_CONN`. |
| |
| Legacy Advertising API using automatic resumption |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| For this case, the application has to take over the |
| responsibility of restarting the advertiser. |
| |
| Refer to the extended advertising sample for an example |
| implementation of advertiser restarting. The same technique can |
| be used for legacy advertising. |
| |
| Networking |
| ********** |
| |
| * The CoAP public API functions :c:func:`coap_get_block1_option` and |
| :c:func:`coap_get_block2_option` have changed. The ``block_number`` pointer |
| type has changed from ``uint8_t *`` to ``uint32_t *``. Additionally, |
| :c:func:`coap_get_block2_option` now accepts an additional ``bool *has_more`` |
| parameter, to store the value of the more flag. (:github:`76052`) |
| |
| * The struct :c:struct:`coap_transmission_parameters` has a new field ``ack_random_percent`` if |
| :kconfig:option:`CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT` is enabled. (:github:`79058`) |
| |
| * The Ethernet bridge shell is moved under network shell. This is done so that |
| all the network shell activities can be found under ``net`` shell command. |
| After this change the bridge shell is used by ``net bridge`` command. (:github:`77235`) |
| |
| * The Ethernet bridging code is changed to allow similar configuration experience |
| as in Linux. The bridged Ethernet interface can be used normally even if bridging |
| is enabled. The actual bridging is done by a separate virtual network interface that |
| directs network packets to bridged Ethernet interfaces. |
| The :c:func:`eth_bridge_iface_allow_tx` is removed as it is not needed because the |
| bridged Ethernet interface can send and receive data normally. |
| The :c:func:`eth_bridge_listener_add` and :c:func:`eth_bridge_listener_remove` are |
| removed as same functionality can be achieved using promiscuous API. |
| Because the bridge interface is a normal network interface, |
| the :c:func:`eth_bridge_iface_add` and :c:func:`eth_bridge_iface_remove` |
| will take network interface pointer as a first parameter. (:github:`77987`) |
| |
| * To facilitate use outside of the networking subsystem, the network buffer header file was renamed |
| from :zephyr_file:`include/zephyr/net/buf.h` to :zephyr_file:`include/zephyr/net_buf.h` and the |
| implementation moved to :zephyr_file:`lib/net_buf/`. (:github:`78009`) |
| |
| * The ``work_q`` parameter to ``NET_SOCKET_SERVICE_SYNC_DEFINE`` and |
| ``NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC`` has been removed as it was always ignored. (:github:`79446`) |
| |
| * The callback function for the socket service has changed. The |
| ``struct k_work *work`` parameter has been replaced with a pointer to the |
| ``struct net_socket_service_event *pev`` parameter. (:github:`80041`) |
| |
| * Deprecated the :kconfig:option:`CONFIG_NET_SOCKETS_POLL_MAX` option in favour of |
| :kconfig:option:`CONFIG_ZVFS_POLL_MAX`. |
| |
| Other Subsystems |
| **************** |
| |
| Flash map |
| ========= |
| |
| * ``CONFIG_SPI_NOR_IDLE_IN_DPD`` has been removed from the :kconfig:option:`CONFIG_SPI_NOR` |
| driver. An enhanced version of this functionality can be obtained by enabling |
| :ref:`pm-device-runtime` on the device (Tunable with |
| :kconfig:option:`CONFIG_SPI_NOR_ACTIVE_DWELL_MS`). |
| |
| hawkBit |
| ======= |
| |
| * :c:func:`hawkbit_autohandler` now takes one argument. This argument has to be set to |
| ``true`` for the same behavior as before the change. (:github:`71037`) |
| |
| * ``<zephyr/mgmt/hawkbit.h>`` is deprecated in favor of ``<zephyr/mgmt/hawkbit/hawkbit.h>``. |
| The old header will be removed in future releases and its usage should be avoided. |
| The hawkbit autohandler has been separated into ``<zephyr/mgmt/hawkbit/autohandler.h>``. |
| The configuration part of hawkbit is now in ``<zephyr/mgmt/hawkbit/config.h>``. (:github:`71037`) |
| |
| MCUmgr |
| ====== |
| |
| * 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. |
| The requirement for Bluetooth authentication is now indicated by the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_AUTHEN` Kconfig option. |
| 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. |
| |
| Random |
| ====== |
| |
| * Following the deprecation of the TinyCrypt library (:github:`79566`), usage |
| of TinyCrypt in the CTR-DRBG random number generator was removed. From now on |
| Mbed TLS is required to enable :kconfig:option:`CONFIG_CTR_DRBG_CSPRNG_GENERATOR`. |
| (:github:`79653`) |
| |
| Shell |
| ===== |
| |
| * ``kernel threads`` and ``kernel stacks`` shell command have been renamed to |
| ``kernel thread list`` & ``kernel thread stacks`` |
| |
| JWT (JSON Web Token) |
| ==================== |
| |
| * By default, the signature is now computed using the PSA Crypto API for both RSA and ECDSA |
| (:github:`78243`). The conversion to the PSA Crypto API is part of the adoption |
| of a standard interface for crypto operations (:github:`43712`). Moreover, |
| following the deprecation of the TinyCrypt library (:github:`79566`), usage |
| of TinyCrypt was removed from the JWT subsystem (:github:`79653`). |
| |
| * The following new symbols were added to allow specifying both the signature |
| algorithm and crypto library: |
| |
| * :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA` (default) RSA signature using the PSA Crypto API; |
| * :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` RSA signature using Mbed TLS; |
| * :kconfig:option:`CONFIG_JWT_SIGN_ECDSA_PSA` ECDSA signature using the PSA Crypto API. |
| |
| They replace the previously-existing Kconfigs ``CONFIG_JWT_SIGN_RSA`` and |
| ``CONFIG_JWT_SIGN_ECDSA``. (:github:`79653`) |