Release Notes for nRF Connect SDK Bare Metal option v1.0.0
Bare Metal v1.0.0 is the first supported release of this product, demonstrating a set of samples for the nRF54L15 DK with build targets supporting the following SoCs:
The supported DK version is nRF54L15 DK v1.0.0.
This release includes two versions of the SoftDevice - a Bluetooth® LE stack to be used on the nRF54L15 DK:
S115 - Support for peripheral role only
S145 - Support for both peripheral and central role, as well as more connections
Highlights
The overall software maturity status of nRF Connect SDK Bare Metal option v1.0.0 is supported unless stated differently for individual features or components. This makes it suitable for product development using nRF54L15, nRF54L10, and nRF54L05 Wireless SoCs, including the nRF54L15 DK targets.
Added the following features as supported:
The S115 SoftDevice, which was part of Bare Metal v0.9.0 as experimental, is now supported. For information about the qualification of this SoftDevice variant, refer to the nRF54L15 Compatibility Matrix, or respective pages for nRF54L105 and nRF54L10. Updates to the compatibility matrices will be published in the upcoming weeks.
The S145 SoftDevice, a new variant that enables central and multirole operation, has been added as supported. For information about the qualification of this SoftDevice variant, refer to the nRF54L15 Compatibility Matrix, or respective pages for nRF54L105 and nRF54L10. Updates to the compatibility matrices will be published in the upcoming weeks.
MCUBoot (IRoT)/DFU:
CRACKEN/KMU is now supported.
Possible to be configured as IRoT for your applications.
Available in two variants: debug and size-optimized.
New samples and libraries. Refer to the changelog for detailed information.
Bare Metal v1.0.0 uses nrfx 4.0.0. For migration of nrfx drivers, see the nrfx 4.0 migration guide. Details from the nrfx 3.0 migration guide might be required when migrating from nRF5.
Added the following features as experimental:
NFC Type 4 Tag and Type 2 Tag libraries, including samples.
Bluetooth LE Central functionality as part of samples and libraries utilizing the S145 SoftDevice.
Note
While the S145 SoftDevice has supported maturity, its overall integration in the SDK is experimental.
Release tag
The release tag for the Bare Metal manifest repository is v1.0.0.
Check the west.yml file for the corresponding tags in the project repositories.
To use this release, install it using nRF Connect for VS Code extension by following the instructions in Installing the nRF Connect SDK Bare Metal option.
Alternatively, check out the tag in the manifest repository, run west config manifest.path nrf-bm, and then west update.
This release of Bare Metal is based on nRF Connect SDK v3.2.0.
IDE and tool support
nRF Connect for Visual Studio Code is the recommended IDE for Bare Metal v1.0.0. See the Installation section for more information about supported operating systems and toolchain.
Changelog
The following sections provide detailed lists of changes by component.
S115 SoftDevice
Updated S115 SoftDevice version to v9.0.0.
S145 SoftDevice
Added the S145 SoftDevice v9.0.0 for central support.
SoftDevice Handler
Added:
The
CONFIG_NRF_SDH_CLOCK_HFINT_CALIBRATION_INTERVALKconfig option to control the HFINT calibration interval.The
CONFIG_NRF_SDH_CLOCK_HFCLK_LATENCYKconfig option to inform the SoftDevice about the ramp-up time of the high-frequency crystal oscillator.The
CONFIG_NRF_SDH_SOC_RAND_SEEDKconfig option to control whether to automatically respond to SoftDevice random seed requests.Priority levels for SoftDevice event observers: HIGHEST, HIGH, USER, USER_LOW, LOWEST.
The
nrf_sdh_ble_evt_to_str()function to stringify a Bluetooth LE event.The
nrf_sdh_soc_evt_to_str()function to stringify a SoC event.The
nrf_sdh_observer_ready()function to prepare an observer for a SoftDevice state change.
Updated:
The return type of the
nrf_sdh_state_evt_handler_tevent handler toint.The LF clock source selection with a choice and tied it to the choice of GRTC timer source
CONFIG_NRF_GRTC_TIMER_SOURCE. The default GRTC timer source of thebm_nrf54l15dkboard target is LFXO (CONFIG_NRF_GRTC_TIMER_SOURCE_LFXO). Select theCONFIG_NRF_GRTC_TIMER_SOURCE_LFLPRCKconfig option if it is desired to run the GRTC from RC.The
CONFIG_NRF_SDH_CLOCK_LF_RC_CTIVandCONFIG_NRF_SDH_CLOCK_LF_RC_TEMP_CTIVKconfig options with ranges, default values, help text, and conditional prompt. These Kconfig options are zero if the LF clock source is XO and are only user-configurable when the LF clock source is RC.The
CONFIG_NRF_SDH_CLOCK_LF_ACCURACYKconfig option with a Kconfig choice to limit the selection to valid values.
Removed:
The
nrf_sdh_ble_app_ram_start_getfunction, useDT_REG_ADDR(DT_CHOSEN(zephyr_sram))instead.The
NRF_SDH_STATE_REQ_OBSERVERmacro and relative data types. Register a state event observer and return non-zero toNRF_SDH_STATE_EVT_ENABLE_PREPAREorNRF_SDH_STATE_EVT_DISABLE_PREPAREto abort state changes instead.The
nrf_sdh_request_continuefunction.The
nrf_sdh_is_enabledfunction. Use the SoftDevice native functionsd_softdevice_is_enabled()instead.
Boards
Added
The nRF54L15 DK board variants for the S145 SoftDevice.
The
bm_nrf54l15dk_nrf54l051015_oscillator.dtsifile with HF and LF external oscillator configuration choices for the nRF54L05, nRF54L10, and nRF54L15.
MCUboot partition size has been reduced from 36 KiB to 31 KiB for the following board targets:
bm_nrf54l15dk/nrf54l05/cpuapp/s115_softdevice/mcubootbm_nrf54l15dk/nrf54l10/cpuapp/s115_softdevice/mcubootbm_nrf54l15dk/nrf54l15/cpuapp/s115_softdevice/mcuboot
Removed unused peripheral nodes from the devicetree.
Build system
Added automatic flashing of SoftDevice files for projects that do not use MCUboot when
west flashis invoked.
DFU
Added:
Support for KMU usage for MCUboot keys, along with west auto-provisioning support. Use
west flash --eraseorwest flash --recoverduring the first programming of a board to program the KMU with the keys. You can control this feature with sysbuild Kconfig optionsSB_CONFIG_BM_BOOTLOADER_MCUBOOT_SIGNATURE_USING_KMUto use KMU for key storage andSB_CONFIG_BM_BOOTLOADER_MCUBOOT_GENERATE_DEFAULT_KMU_KEYFILEto auto-provision the KMU when using the mentionedwest flashcommands.Support for setting up the DFU Device Bluetooth name remotely using MCUmgr. Use the
SB_CONFIG_BM_APP_CAN_SETUP_FIRMWARE_LOADER_NAMEKconfig option to enable this feature.
Updated:
By refactoring the code for the UART MCUmgr application into a separate library to facilitate reuse in other applications.
The MCUmgr image management to prevent erasing of the firmware loader by itself. Such operation would break the DFU functionality.
Interrupts
Interrupts in nRF Connect SDK Bare Metal option now use the IRQ vector table directly instead of the software ISR table. This saves eight bytes of memory for each IRQ, which is approximately 2 kB for the nRF54L05, nRF54L10, and nRF54L15 application core. With this update, applications must now use macros
IRQ_DIRECT_CONNECTandISR_DIRECT_DECLAREinstead ofIRQ_CONNECTwhen defining an ISR.For example, an ISR defined with
IRQ_CONNECTin the following way:static nrfx_gpiote_t gpiote20 = NRFX_GPIOTE_INSTANCE(NRF_GPIOTE20); int main(void) { IRQ_CONNECT( NRFX_IRQ_NUMBER_GET(NRF_GPIOTE20), 10, nrfx_gpiote_irq_handler, &gpiote20, 0 );
Must now be defined like this:
static nrfx_gpiote_t gpiote20 = NRFX_GPIOTE_INSTANCE(NRF_GPIOTE20); ISR_DIRECT_DECLARE(gpiote_20_direct_isr) { nrfx_gpiote_irq_handler(&gpiote20); return 0; } int main(void) { IRQ_DIRECT_CONNECT( NRFX_IRQ_NUMBER_GET(NRF_GPIOTE20), 10, gpiote_20_direct_isr, 0 );
Logging
Removed
module-dep=LOGin Kconfig files. This is no longer defined.
Drivers
Low Power UART with EasyDMA (LPUARTE) driver:
Added the
CONFIG_BM_SW_LPUARTE_HFXOKconfig option to enable the HFCLK when the SoftDevice is enabled.
Libraries
Added the following libraries:
Updated the following libraries and Bluetooth LE services to return
nrf_errorsinstead oferrnos:Bluetooth: Advertising library library.
Bluetooth: Connection Parameters library.
Bluetooth: GATT Queue library.
Bluetooth: Queued Writes library.
Battery Service (BAS) service.
Device Information Service (DIS) service.
Heart Rate Service (HRS) service.
LED Button Service (LBS) service.
MCU manager Service (MCUmgr) service.
Nordic UART Service (NUS) service.
Bluetooth LE Record Access Control Point library.
Bluetooth: Advertising library library:
Updated the advertising and scan response data encoder provided in the
include/bm/bluetooth/ble_adv_data.hfile so that it can be used by enabling theCONFIG_BLE_ADV_DATAKconfig option. You can enable this without using theCONFIG_BLE_ADVKconfig option.Renamed:
The
ble_adv_whitelist_replyfunction toble_adv_allow_list_reply().The
ble_adv_restart_without_whitelistfunction toble_adv_restart_without_allow_list().The
BLE_ADV_EVT_FAST_WHITELISTenumerator in theble_adv_evt_typeenumeration toBLE_ADV_EVT_FAST_ALLOW_LIST.The
BLE_ADV_EVT_SLOW_WHITELISTenumerator in theble_adv_evt_typeenumeration toBLE_ADV_EVT_SLOW_ALLOW_LIST.The
BLE_ADV_EVT_WHITELIST_REQUESTenumerator in theble_adv_evt_typeenumeration toBLE_ADV_EVT_ALLOW_LIST_REQUEST.The
whitelist_reply_expectedmember in theble_advstructure toble_adv.allow_list_reply_expected.The
whitelist_temporarily_disabledmember in theble_advstructure toble_adv.allow_list_temporarily_disabled.The
whitelist_in_usemember in theble_advstructure toble_adv.allow_list_in_use.The
slave_conn_intmember in theble_adv_datastructure toble_adv_data.periph_conn_int.The
CONFIG_BLE_ADV_USE_WHITELISTKconfig option toCONFIG_BLE_ADV_USE_ALLOW_LIST.
Fixed:
An issue with the allow list functionality that made it possible for non-allow-listed devices to connect if advertising was started in either directed or directed high duty mode, but the directed modes had been disabled with Kconfig options.
Two minor issues with the directed advertising set configuration that caused directed advertising to not work as intended.
Bluetooth: Connection Parameters library:
Added:
Missing Kconfig dependencies.
Error event.
Updated the name of the
idmember in theble_conn_params_evtstructure toble_conn_params_evt.evt_type.
Bare Metal Zephyr Memory Storage (BM_ZMS) library:
Added the
bm_zms_fs_configstruct for configuring a Zephyr Memory Storage file system instance at initialization.Updated:
The
bm_zms_mount()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_clear()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_write()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_delete()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_read()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_read_hist()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_get_data_length()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_calc_free_space()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_active_sector_free_space()function to return-EFAULTwhen the input parameterfsisNULL.The
bm_zms_mount()function to expect an additional input parameter of type pointer to structbm_zms_fs_configfor configuring a Zephyr Memory Storage file system instance at initialization.By renaming the type
bm_zms_evt_id_tto enumbm_zms_evt_type.By renaming the type
bm_zms_evt_tto structbm_zms_evt.By renaming the event
BM_ZMS_EVT_INITtoBM_ZMS_EVT_MOUNT.
Removed:
The
CONFIG_BM_ZMS_MAX_USERSKconfig option. Now, the library expects at most one callback for each instance of the structbm_zms_fs.The
bm_zms_init_flags.cb_registredmember as it was not used anymore.The
bm_zms_registerfunction. The event handler is now configured using thebm_zms_fs_configstruct.The selection of the
CONFIG_EXPERIMENTALKconfig option.
Bluetooth: Peer Manager library:
Updated:
The
CONFIG_PM_SERVICE_CHANGED_ENABLEDKconfig option is renamed toCONFIG_PM_SERVICE_CHANGED.The
CONFIG_PM_PEER_RANKS_ENABLEDKconfig option is renamed toCONFIG_PM_PEER_RANKS.The
CONFIG_PM_LESC_ENABLEDKconfig option is renamed toCONFIG_PM_LESC.The
CONFIG_PM_RA_PROTECTION_ENABLEDKconfig option is renamed toCONFIG_PM_RA_PROTECTION.The
CONFIG_PM_SERVICE_CHANGEDKconfig option to depend on theCONFIG_NRF_SDH_BLE_SERVICE_CHANGEDKconfig option.All instances of
pm_peer_id_ttouint16_tand removed thepm_peer_id_ttype.All instances of
pm_store_token_ttouint32_tand removed thepm_store_token_ttype.All instances of
pm_sec_error_code_ttouint16_tand removed thepm_sec_error_code_ttype.All instances of
ble_gatt_db_srv_tto structble_gatt_db_srvand removed theble_gatt_db_srv_ttype.All instances of
ble_gatt_db_char_tto structble_gatt_db_charand removed theble_gatt_db_char_ttype.All instances of
pm_peer_id_list_skip_tto enumpm_peer_id_list_skipand removed thepm_peer_id_list_skip_ttype.All instances of
pm_peer_data_id_tto enumpm_peer_data_idand removed thepm_peer_data_id_ttype.All instances of
pm_conn_sec_procedure_tto enumpm_conn_sec_procedureand removed thepm_conn_sec_procedure_ttype.All instances of
pm_conn_sec_config_tto structpm_conn_sec_configand removed thepm_conn_sec_config_ttype.All instances of
pm_peer_data_bonding_tto structpm_peer_data_bondingand removed thepm_peer_data_bonding_ttype.All instances of
pm_peer_data_local_gatt_db_tto structpm_peer_data_local_gatt_dband removed thepm_peer_data_local_gatt_db_ttype.All instances of
pm_privacy_params_ttoble_gap_privacy_params_tand removed thepm_privacy_params_ttype.All instances of
pm_conn_sec_status_tto structpm_conn_sec_statusand removed thepm_conn_sec_status_ttype.All instances of
pm_evt_id_tto enumpm_evt_idand removed thepm_evt_id_ttype.All instances of
pm_conn_config_req_evt_tto structpm_conn_config_req_evtand removed thepm_conn_config_req_evt_ttype.All instances of
pm_conn_sec_start_evt_tto structpm_conn_sec_start_evtand removed thepm_conn_sec_start_evt_ttype.All instances of
pm_conn_secured_evt_tto structpm_conn_secured_evtand removed thepm_conn_secured_evt_ttype.All instances of
pm_conn_secure_failed_evt_tto structpm_conn_secure_failed_evtand removed thepm_conn_secure_failed_evt_ttype.All instances of
pm_conn_sec_params_req_evt_tto structpm_conn_sec_params_req_evtand removed thepm_conn_sec_params_req_evt_ttype.All instances of
pm_peer_data_op_tto enumpm_peer_data_opand removed thepm_peer_data_op_ttype.All instances of
pm_peer_data_update_succeeded_evt_tto structpm_peer_data_update_succeeded_evtand removed thepm_peer_data_update_succeeded_evt_ttype.All instances of
pm_peer_data_update_failed_tto structpm_peer_data_update_failed_evtand removed thepm_peer_data_update_failed_ttype.All instances of
pm_failure_evt_tto structpm_failure_evtand removed thepm_failure_evt_ttype.All instances of
pm_evt_tto structpm_evtand removed thepm_evt_ttype.The name of the
pm_whitelist_getfunction topm_allow_list_get().The name of the
pm_whitelist_setfunction topm_allow_list_set().The name of the
PM_EVT_SLAVE_SECURITY_REQenumerator in thepm_evt_idenumeration toPM_EVT_PERIPHERAL_SECURITY_REQ.The name of the
slave_security_reqmember in thepm_evtstructure topm_evt.peripheral_security_req.
Removed the selection of the
CONFIG_EXPERIMENTALKconfig option.
Storage Library library:
Added the
bm_storage_configstruct for configuring a storage instance at initialization.Updated:
To use errno instead of nrf_errors.
The
bm_storage_init()function to expect an additional input parameter of type pointer to structbm_storage_configfor configuring the storage instance that is being initialized.
Fixed an issue where the
bm_storage_erase()function caused a division-by-0 fault using the SD or RRAM backend.
Bluetooth LE Services
Added the following services:
Heart Rate Service Central.
Updated the way of configuring the characteristic security for the following Bluetooth LE services:
Battery Service (BAS) service:
Added the error event to align event handling with other services. The event is currently unused.
Heart Rate Service (HRS) service:
Added the error event to align event handling with other services. The event is currently unused.
LED Button Service (LBS) service:
Added the error event to align event handling with other services. The event is currently unused.
Nordic UART Service (NUS) service:
Added the error event to align event handling with other services.
Updated the name of the
typemember in theble_nus_evtstructure toble_nus_evt.evt_type.Fixed an issue where the client context was shared between all instances.
Continuous Glucose Monitoring Service (CGMS) service:
Updated the default characteristic security to encryption without MITM protection. This is done to conform to the CGMS specification.
-
Updated the event handling to align with other libraries. The
ble_gq_reqnow takes theble_gq_evt_handler_tevent handler and theble_gq_req.ctxcontext.
Bare Metal scheduler library:
Renamed library from
event_schedulertobm_scheduler.
Button handling library library:
Fixed the GPIO trigger configuration when the
active_stateisBM_BUTTONS_ACTIVE_HIGH
Libraries for NFC
Added experimental support for Near Field Communication (NFC).
Samples
Updated all sample Kconfig options to be prefixed with
APP_.
Bluetooth LE samples
Added the following Bluetooth LE samples:
Updated:
The Bluetooth: Continuous Glucose Monitoring Service sample to require at least encryption without MITM tection to access the CGM service characteristics. This is done to conform to the CGMS specification.
The Bluetooth: Continuous Glucose Monitoring Service sample to support pairing and bonding.
NFC samples
Added the following NFC samples:
NFC: Text record for Type 2 Tag sample.
NFC: Text record for Type 4 Tag sample.
Peripheral samples
Added the PWM sample.
LPUARTE sample:
Enabled the SoftDevice to request HFCLK in the Low Power UART with EasyDMA (LPUARTE) driver.
DFU samples
Moved the MCUmgr samples to the
applications/firmware_loaderfolder.
Subsystem samples
Moved the Bare Metal Storage and Bare Metal Zephyr Memory Storage (BM_ZMS) samples to the
samples/subsysfolder.Removed the RRAM storage backend from the Bare Metal Storage and Bare Metal Zephyr Memory Storage (BM_ZMS) samples.
Known issues and limitations
The Bare Metal delivery does not have a common library for handling GPIOTE. This results in issues when enabling multiple libraries that require GPIOTE, such as Low Power UART with EasyDMA (LPUARTE) and Button handling library.
Some Bluetooth LE libraries allow for the creation of multiple instances, although only one instance is supported. Defining multiple instances of the same library may lead to unexpected behavior.
Documentation
Added:
Documentation for the following libraries:
Integration notes for NFC.
Error codes section in the Migration notes - nRF5 SDK to nRF Connect SDK Bare Metal.
Updated:
The Memory Partitioning for DFU section.