s145 release notes

Introduction to the s145 release notes

About the document

These release notes describe the changes in the s145 from version to version.

The release notes are intended to list all relevant changes in a given version. They are kept brief to make it easy to get an overview of the changes. More details regarding changes and new features may be found in the s145 migration document (normally available for major releases only).

This document may be updated for an already released version of SoftDevice. The changes will be tagged with “Update X”, where X is a number incremented each time the document has been revised.

Issue numbers in parentheses are for internal use and should be disregarded by the customer.

Copyright © Nordic Semiconductor ASA. All rights reserved.

s145_10.0.0

This version is a major release, adding support for new nRF54L series devices and reducing RAM and NVM requirements.

Notes:

  • This release has changed the API. This requires changes to applications.

  • The release notes list changes since s145_9.0.0.

SoftDevice properties

  • This SoftDevice variant is compatible with nRF54LM20.

  • The SoftDevice memory requirements for this version are as follows:

    • NVM: 137.0 kB (0x22400 bytes).

    • RAM: 5.1 kB (0x1480 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.

    • Call stack: The SoftDevice uses a call stack combined with the application. The worst-case stack usage for the SoftDevice is 1.8 kB (0x700 bytes). Application writers should ensure that enough stack space is reserved to cover the worst-case SoftDevice call stack usage combined with the worst-case application call stack usage.

  • SoftDevice base address:

    • nRF54LM20: 0x1da800 (s145_nrf54lm20_10.0.0_softdevice.hex).

  • The Firmware ID of this SoftDevice is 0x30AC.

This version of the SoftDevice includes the SoftDevice Controller and Multiprotocol Service Layer (MPSL) libraries from nRF Connect SDK v3.3.0. See the changelog of the SoftDevice Controller and MPSL for more details about changes in these components.

Changes

  • SoftDevice

    • Optimized RAM consumption for simple configurations of the SoftDevice. (DRGN-26915)

    • The event NRF_EVT_RADIO_CANCELED was never generated and has been removed. (DRGN-27894)

  • GAP

    • ble_gap_evt_scan_req_report_t now includes the Received Signal Strength Indication of the received scan request. (DRGN-27726)

Bug Fixes

  • GAP

    • Fixed an issue where the SoftDevice did not provide LTK to application. That happened if LESC bonding was run without IRK distribution at least in one direction. (DRGN-27912)

Limitations

  • SoftDevice

    • If Radio Notifications are enabled, flash write and flash erase operations initiated through the SoftDevice API will be notified to the application as Radio Events (DRGN-5197).

    • Synthesized low frequency clock source is not tested or intended for use with the Bluetooth LE stack.

    • Applications must not modify the SEVONPEND flag in the SCR register when running in priority levels higher than 6 (priority level numerical values lower than 6) as this can lead to undefined behavior.

    • The SoftDevice may generate several events when connected, based on peer actions, meaning without previous action from the application. The BLE_GAP_EVT_PHY_UPDATE_REQUEST event, for instance, is generated when a connected peer sends a Phy Update Request, even when an application does not include logic to change PHY. There are several such events that may require action from an application if they are received. For more information, see the sd_ble_enable() API in SoftDevice.

    • Configuring multiple connection configurations (see ble_conn_cfg_t::conn_cfg_tag) is not supported (DRGN-23839).

  • GATT

    • To conform to the Bluetooth Core Specification, there shall be no secondary service that is not referenced somehow by a primary service. The SoftDevice does not enforce this (DRGN-906).

Known Issues

  • LL

    • If the application adds an all zeroes IRK with the sd_ble_gap_device_identities_set(), it will be treated as a valid entry in the device identity list. An all zeroes IRK is invalid and must not be added (DRGN-9083).

s145_9.0.0

This version is a major release, providing support for nRF54L series devices.

Notes:

  • This release has changed the API. This requires changes to applications.

  • The release notes list changes since s145_9.0.0-3.prototype.

SoftDevice properties

  • This SoftDevice variant is compatible with nRF54L05, nRF54L10, and nRF54L15.

  • The SoftDevice memory requirements for this version are as follows:

    • NVM: 144.0 kB (0x24000 bytes).

    • RAM: 5.9 kB (0x1780 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.

    • Call stack: The SoftDevice uses a call stack combined with the application. The worst-case stack usage for the SoftDevice is 1.8 kB (0x700 bytes). Application writers should ensure that enough stack space is reserved to cover the worst-case SoftDevice call stack usage combined with the worst-case application call stack usage.

  • SoftDevice base address:

    • nRF54L05: 0x058c00 (s145_nrf54l05_9.0.0_softdevice.hex).

    • nRF54L10: 0x0d8c00 (s145_nrf54l10_9.0.0_softdevice.hex).

    • nRF54L15: 0x158c00 (s145_nrf54l15_9.0.0_softdevice.hex).

  • The Firmware ID of this SoftDevice is 0x3024.

Changes

  • SoftDevice

    • Scheduler improvements (DRGN-24450):

      • The scheduler can now manage events that are scheduled less than 100 microseconds apart.

      • Updated Radio Timeslot implementation:

        • The events NRF_EVT_RADIO_BLOCKED and NRF_EVT_RADIO_CANCELED are now sent immediately after the specified timeout or start time, instead of being sent early if the scheduler predicted the timeslot could not be scheduled.

        • Timeslot events can now run for longer than 128 seconds.

    • Deprecated wrapper functions defined in the SoftDevice headers have been removed (DRGN-26817).

      • sd_rand_application_pool_capacity_get

      • sd_rand_application_bytes_available_get

      • sd_app_evt_wait

    • The function sd_flash_write now uses buffered writes to RRAM, with WRITEBUFSIZE=1. This reduces RRAM wear and improves performance (DRGN-24675).

    • A new field hfint_ctiv has been added to nrf_clock_lf_cfg_t to control how often HFINT is calibrated (DRGN-26506).

    • A new field hfclk_latency has been added to nrf_clock_lf_cfg_t to inform the SoftDevice about the ramp-up time of the high-frequency crystal oscillator (DRGN-26554).

  • GAP

    • The SoftDevice no longer enforces the spec-required 1 second interval between channel map updates (ble_gap_opt_ch_map_t) (DRGN-26253).

    • The SoftDevice no longer allows an all-zeroes Identity Resolving Key (IRK) in the device identity list when in network privacy mode (BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY). sd_ble_gap_privacy_set and sd_ble_gap_device_identities_set now return BLE_ERROR_GAP_ZERO_IRK_NOT_ALLOWED in this case.

    • The SoftDevice now uses an application-provided passkey (BLE_GAP_OPT_PASSKEY) for only one pairing attempt. Using a static or non-random passkey is insecure and not allowed by the Bluetooth Core Specification (DRGN-26638).

    • The API for Data Signing has been removed. This was never supported by the SoftDevice (DRGN-26752).

    • The API for BR/EDR Link Key has been removed. This was never supported by the SoftDevice (DRGN-26752).

    • Removed the p_id_info parameter from sd_ble_gap_sec_info_reply. It was unused by the SoftDevice (DRGN-26752).

    • The Connection Event Trigger API has changed (DRGN-26336). sd_ble_gap_conn_evt_trigger_start and sd_ble_gap_conn_evt_trigger_stop have been replaced with a single function sd_ble_gap_evt_trigger_set. Other roles than connections can now trigger a task, see BLE_GAP_LL_ROLES.

    • The SoftDevice now supports advertising intervals longer than 10 seconds (DRGN-9988).

    • In compliance with Bluetooth Core Specification v6.2, LE Legacy Pairing with Passkey Entry no longer provides Authenticated man-in-the-middle (MITM) protection (DRGN-26635).

    • In compliance with Bluetooth Core Specification v6.2, the SoftDevice will reject LE Legacy Pairing attempts if it receives an LP_CONFIRM_R value equal to the LP_CONFIRM_I value it sent (DRGN-26776).

    • Added sec_status parameter to sd_ble_gap_lesc_dhkey_reply so application can reject pairing earlier if peer’s public key validation failed. LE Secure Connections pairing now will not proceed to authentication stage 1 until application calls sd_ble_gap_lesc_dhkey_reply (DRGN-26190).

    • Removed support for the Quality of Service (QoS) channel survey module (DRGN-26027).

    • Removed support for the LE Coded PHY (DRGN-26027).

Limitations

  • SoftDevice

    • If Radio Notifications are enabled, flash write and flash erase operations initiated through the SoftDevice API will be notified to the application as Radio Events (DRGN-5197).

    • Synthesized low frequency clock source is not tested or intended for use with the Bluetooth LE stack.

    • Applications must not modify the SEVONPEND flag in the SCR register when running in priority levels higher than 6 (priority level numerical values lower than 6) as this can lead to undefined behavior.

    • The SoftDevice may generate several events when connected, based on peer actions, meaning without previous action from the application. The BLE_GAP_EVT_PHY_UPDATE_REQUEST event, for instance, is generated when a connected peer sends a Phy Update Request, even when an application does not include logic to change PHY. There are several such events that may require action from an application if they are received. For more information, see the sd_ble_enable() API in SoftDevice.

    • Configuring multiple connection configurations (see ble_conn_cfg_t::conn_cfg_tag) is not supported (DRGN-23839).

  • GATT

    • To conform to the Bluetooth Core Specification, there shall be no secondary service that is not referenced somehow by a primary service. The SoftDevice does not enforce this (DRGN-906).

Known Issues

  • LL

    • If the application adds an all zeroes IRK with the sd_ble_gap_device_identities_set(), it will be treated as a valid entry in the device identity list. An all zeroes IRK is invalid and must not be added (DRGN-9083).

s145_9.0.0-3.prototype

This version is a major release, providing support for nRF54L series devices.

Notes:

  • This release has changed the API. This requires changes to applications.

  • The release notes list changes since s145_9.0.0-2.prototype.

SoftDevice properties

  • This SoftDevice variant is compatible with nRF54L15.

  • The SoftDevice memory requirements for this version are as follows:

    • NVM: 164.0 kB (0x29000 bytes).

    • RAM: 7.4 kB (0x1D80 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.

    • Call stack: The SoftDevice uses a call stack combined with the application. The worst-case stack usage for the SoftDevice is 1.8 kB (0x700 bytes). Application writers should ensure that enough stack space is reserved to cover the worst-case SoftDevice call stack usage combined with the worst-case application call stack usage.

  • SoftDevice base address:

    • nRF54L15: 0x153C00 (s145_9.0.0-3.prototype_nrf54l15_softdevice.hex).

  • The Firmware ID of this SoftDevice is 0x3072.

Changes

  • SoftDevice

    • Support for PA/LNA (BLE_COMMON_OPT_PA_LNA) has been removed (DRGN-23876).

    • A new API for seeding the random number generator sd_rand_seed_set has been added (DRGN-25550).

    • The sd_radio_notification_cfg_set now accepts an uint16_t distance_us parameter instead of enum. The valid range is [50, 5500] µs. The enums can still be used for backwards compatibility. The active notification distance is now from when the SoftDevice prepares to use the radio, and not the actual radio activity (DRGN-25879).

  • GAP

    • The Device IRK is no longer used as a fallback to generate Resolvable Private Addresses (RPA). Applications that want to use RPA need to populate the device identity list (sd_ble_gap_device_identities_set). Otherwise the identity address will be used (sd_ble_gap_addr_set) (DRGN-23358).

    • When privacy is enabled (sd_ble_gap_privacy_set) the advertiser will refresh private addresses whenever the advertising data or scan response data is changed (sd_ble_gap_adv_set_configure) (DRGN-23358).

Limitations

  • SoftDevice

    • If Radio Notifications are enabled, flash write and flash erase operations initiated through the SoftDevice API will be notified to the application as Radio Events (DRGN-5197).

    • Synthesized low frequency clock source is not tested or intended for use with the Bluetooth LE stack.

    • Applications must not modify the SEVONPEND flag in the SCR register when running in priority levels higher than 6 (priority level numerical values lower than 6) as this can lead to undefined behavior.

    • The SoftDevice may generate several events when connected, based on peer actions, meaning without previous action from the application. The BLE_GAP_EVT_PHY_UPDATE_REQUEST event, for instance, is generated when a connected peer sends a Phy Update Request, even when an application does not include logic to change PHY. There are several such events that may require action from an application if they are received. For more information, see the sd_ble_enable() API in SoftDevice.

    • Configuring multiple connection configurations (see ble_conn_cfg_t::conn_cfg_tag) is not supported (DRGN-23839).

  • GATT

    • To conform to the Bluetooth Core Specification, there shall be no secondary service that is not referenced somehow by a primary service. The SoftDevice does not enforce this (DRGN-906).

  • LL

    • In connections, the Link Layer payload size is limited to 27 bytes on LE Coded PHY (DRGN-8476).

Known Issues

  • SoftDevice

  • GAP

    • If the Peer Preferred Connection Parameters Characteristic (PPCP) contains “No specific values indication (0xFFFF)”, application should not perform a peripheral initiated connection parameter update using PPCP. Otherwise invalid values will be used in L2CAP_CONNECTION_PARAMETER_UPDATE_REQ. A workaround is to always specify the connection parameters in the sd_ble_gap_conn_param_update call (DRGN-15111).

    • The BLE_GAP_EVT_SEC_INFO_REQUEST event will not report the identity address of the peer to the application. A workaround is to do a mapping of the connection handle to the peer’s identity address (DRGN-10340).

  • GATTC

    • The ble_gattc_service_t::uuid field is incorrectly populated in the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event if sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() is called when a Primary Service Discovery by Service UUID is already ongoing. When the application has called sd_ble_gattc_primary_services_discover(), it should wait for the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event before calling sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() (DRGN-11300).

  • LL

    • If the application adds an all zeroes IRK with the sd_ble_gap_device_identities_set(), it will be treated as a valid entry in the device identity list. An all zeroes IRK is invalid and must not be added (DRGN-9083).

s145_9.0.0-2.prototype

This version is a major release, providing support for nRF54L series devices.

Notes:

  • This release has changed the API. This requires changes to applications.

  • The release notes list changes since s145_9.0.0-1.prototype.

SoftDevice properties

  • This SoftDevice variant is compatible with nRF54L15.

  • The SoftDevice memory requirements for this version are as follows:

    • NVM: 164.0 kB (0x29000 bytes).

    • RAM: 6.9 kB (0x1B80 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.

    • Call stack: The SoftDevice uses a call stack combined with the application. The worst-case stack usage for the SoftDevice is 1.8 kB (0x700 bytes). Application writers should ensure that enough stack space is reserved to cover the worst-case SoftDevice call stack usage combined with the worst-case application call stack usage.

  • SoftDevice base address:

    • nRF54L15: 0x137000 (s145_9.0.0-2.prototype+offset-0x137000_softdevice.hex).

  • The Firmware ID of this SoftDevice is 0x3106.

Changes

  • Application needs to do relevant ISR forwarding to SoftDevice. See nrf_sd_isr.h. (DRGN-25185)

  • Connection handles generated by the SoftDevice are no longer restricted to the range [0..<max_connections-1>], and must not be used as array indices.

  • The functions sd_nvic_EnableIRQ, sd_nvic_DisableIRQ, sd_nvic_GetPendingIRQ, sd_nvic_SetPendingIRQ, sd_nvic_ClearPendingIRQ, sd_nvic_SetPriority, sd_nvic_GetPriority, sd_nvic_SystemReset, sd_nvic_critical_region_enter, sd_nvic_critical_region_exit have been removed. An application must use the CMSIS NVIC_* functions instead. Make sure that the application does not use the interrupts and interrupt priorities owned by the SoftDevice.

  • Setting of RAM retention for the first memory blocks has been removed.

Limitations

  • SoftDevice

    • If Radio Notifications are enabled, flash write and flash erase operations initiated through the SoftDevice API will be notified to the application as Radio Events (DRGN-5197).

    • Synthesized low frequency clock source is not tested or intended for use with the Bluetooth LE stack.

    • Applications must not modify the SEVONPEND flag in the SCR register when running in priority levels higher than 6 (priority level numerical values lower than 6) as this can lead to undefined behavior.

    • The SoftDevice may generate several events when connected, based on peer actions, meaning without previous action from the application. The BLE_GAP_EVT_PHY_UPDATE_REQUEST event, for instance, is generated when a connected peer sends a Phy Update Request, even when an application does not include logic to change PHY. There are several such events that may require action from an application if they are received. For more information, see the sd_ble_enable() API in SoftDevice.

    • Configuring multiple connection configurations (see ble_conn_cfg_t::conn_cfg_tag) is not supported (DRGN-23839).

  • GATT

    • To conform to the Bluetooth Core Specification, there shall be no secondary service that is not referenced somehow by a primary service. The SoftDevice does not enforce this (DRGN-906).

  • LL

    • In connections, the Link Layer payload size is limited to 27 bytes on LE Coded PHY (DRGN-8476).

Known Issues

  • SoftDevice

    • The Radio Notification signal is not yet supported. The function sd_radio_notification_cfg_set must not be used (DRGN-24324).

  • GAP

    • Privacy feature is not yet supported. (DRGN-23358)

    • If the Peer Preferred Connection Parameters Characteristic (PPCP) contains “No specific values indication (0xFFFF)”, application should not perform a peripheral initiated connection parameter update using PPCP. Otherwise invalid values will be used in L2CAP_CONNECTION_PARAMETER_UPDATE_REQ. A workaround is to always specify the connection parameters in the sd_ble_gap_conn_param_update call (DRGN-15111).

    • The BLE_GAP_EVT_SEC_INFO_REQUEST event will not report the identity address of the peer to the application. A workaround is to do a mapping of the connection handle to the peer’s identity address (DRGN-10340).

  • GATTS

    • Queued Writes are not yet supported. Receiving the ATT_PREPARE_WRITE_REQ PDU will lead to assert (DRGN-23848).

  • GATTC

    • The ble_gattc_service_t::uuid field is incorrectly populated in the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event if sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() is called when a Primary Service Discovery by Service UUID is already ongoing. When the application has called sd_ble_gattc_primary_services_discover(), it should wait for the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event before calling sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() (DRGN-11300).

  • LL

    • If the application adds an all zeroes IRK with the sd_ble_gap_device_identities_set(), it will be treated as a valid entry in the device identity list. An all zeroes IRK is invalid and must not be added (DRGN-9083).

s145_9.0.0-1.prototype

This version is a major release, providing support for nRF54L series devices.

Notes:

  • This release has changed the API. This requires changes to applications.

  • The release notes list changes since s140_nrf52_7.2.0.

SoftDevice properties

  • This SoftDevice variant is compatible with nRF54L15.

  • The SoftDevice memory requirements for this version are as follows:

    • NVM: 156.0 kB (0x27000 bytes).

    • RAM: 6.9 kB (0x1B80 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.

    • Call stack: The SoftDevice uses a call stack combined with the application. The worst-case stack usage for the SoftDevice is 1.8 kB (0x700 bytes). Application writers should ensure that enough stack space is reserved to cover the worst-case SoftDevice call stack usage combined with the worst-case application call stack usage.

  • The Firmware ID of this SoftDevice is 0x30D2.

Changes

  • SoftDevice

    • The function sd_flash_page_erase has been removed for devices that do not require page erase before write.

    • The function sd_flash_protect has been removed.

    • The function sd_protected_register_write has been removed.

    • The function sd_power_pof_thresholdvddh_set has been removed.

    • The functions sd_power_ram_power_set, sd_power_ram_power_clr, and sd_power_ram_power_get have been removed.

    • The functions sd_power_dcdc_mode_set and sd_power_dcdc_mode_get have been removed.

    • The functions sd_power_reset_reason_get and sd_power_reset_reason_clr have been removed.

    • The function sd_power_system_off has been removed.

    • The functions sd_ppi_channel_enable_get, sd_ppi_channel_enable_set, sd_ppi_channel_enable_clr, sd_ppi_channel_assign, sd_ppi_group_task_enable, sd_ppi_group_task_disable, sd_ppi_group_assign and sd_ppi_group_get have been removed.

Limitations

  • SoftDevice

    • If Radio Notifications are enabled, flash write and flash erase operations initiated through the SoftDevice API will be notified to the application as Radio Events (DRGN-5197).

    • Synthesized low frequency clock source is not tested or intended for use with the Bluetooth LE stack.

    • Applications must not modify the SEVONPEND flag in the SCR register when running in priority levels higher than 6 (priority level numerical values lower than 6) as this can lead to undefined behavior.

    • The SoftDevice may generate several events when connected, based on peer actions, meaning without previous action from the application. The BLE_GAP_EVT_PHY_UPDATE_REQUEST event, for instance, is generated when a connected peer sends a Phy Update Request, even when an application does not include logic to change PHY. There are several such events that may require action from an application if they are received. For more information, see the sd_ble_enable() API in SoftDevice.

    • Configuring multiple connection configurations (see ble_conn_cfg_t::conn_cfg_tag) is not supported (DRGN-23839).

  • GATT

    • To conform to the Bluetooth Core Specification, there shall be no secondary service that is not referenced somehow by a primary service. The SoftDevice does not enforce this (DRGN-906).

  • LL

    • In connections, the Link Layer payload size is limited to 27 bytes on LE Coded PHY (DRGN-8476).

Known Issues

  • SoftDevice

    • The Radio Notification signal is not yet supported. The function sd_radio_notification_cfg_set must not be used (DRGN-24324).

    • The API functions in nrf_nvic.h that operate on interrupts are not yet supported. This includes the functions sd_nvic_critical_region_enter and sd_nvic_critical_region_exit (DRGN-23477).

  • L2CAP

    • Receiving fragmented L2CAP packets is not yet supported (DRGN-23305).

  • GAP

    • If the Peer Preferred Connection Parameters Characteristic (PPCP) contains “No specific values indication (0xFFFF)”, application should not perform a peripheral initiated connection parameter update using PPCP. Otherwise invalid values will be used in L2CAP_CONNECTION_PARAMETER_UPDATE_REQ. A workaround is to always specify the connection parameters in the sd_ble_gap_conn_param_update call (DRGN-15111).

    • The BLE_GAP_EVT_SEC_INFO_REQUEST event will not report the identity address of the peer to the application. A workaround is to do a mapping of the connection handle to the peer’s identity address (DRGN-10340).

    • LE Secure Connections are not yet supported (DRGN-23305).

  • GATT

    • ATT MTU size greater than 23 octets is not yet supported (DRGN-23305).

  • GATTS

    • Queued Writes are not yet supported. Receiving the ATT_PREPARE_WRITE_REQ PDU will lead to assert (DRGN-23848).

  • GATTC

    • The ble_gattc_service_t::uuid field is incorrectly populated in the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event if sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() is called when a Primary Service Discovery by Service UUID is already ongoing. When the application has called sd_ble_gattc_primary_services_discover(), it should wait for the BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event before calling sd_ble_gattc_primary_services_discover() or sd_ble_gattc_read() (DRGN-11300).

  • LL

    • If the application adds an all zeroes IRK with the sd_ble_gap_device_identities_set(), it will be treated as a valid entry in the device identity list. An all zeroes IRK is invalid and must not be added (DRGN-9083).