Bluetooth Mesh SDK Version 9.1.0 (February 18, 2026) - Release Notes#

Bluetooth Mesh Version 9.1.0

Simplicity SDK Version 2025.6.3

Bluetooth Mesh is a standards-based, many-to-many communication topology available for Bluetooth Low Energy (LE) devices, optimized for large-scale networks and ideally suited for building automation, sensor networks, and asset tracking.

Click here for earlier releases.

Release Summary#

Key Features | API Changes | Bug Fixes | Chip Enablement

Key Features#

Added in 9.1.0#

None.

Added in 9.0.2#

Underlying platform changes only.

Added in 9.0.1#

None.

Added in 9.0.0#

  • Node firmware can now be updated without having to reprovsion the node.

  • Multiple bug fixes and quality improvements

API Changes#

Changed in 9.1.0#

  • Relaxed LPN polling configuration parameters.

  • Added API call sl_btmesh_config_client_prepare_key_refresh(), replacing deprecated API call sl_btmesh_test_prov_prepare_key_refresh().

  • Added iterative API to query provisioning database entries.

  • Added API to control LC regulator operation.

  • Added API to set a timeout after which LC considers ambient light level input to be unavailable.

Changed in 9.0.2#

None.

Changed in 9.0.1#

None.

Changed in 9.0.0#

  • Added API for controlling BLOB transfer and firmware update message sending cadence.

  • Added API for switching to a more robust BLOB transfer server interface.

Bug Fixes#

Fixed in 9.1.0#

  • Removed unnecessary network key: application key bonding check when running a key refresh procedure at an embedded Provisioner.

  • Corrected a number of lighting and LC regulator related issues.

  • Provisioning database query resource exhaustion corrected by providing a better API for querying the DDB.

Fixed in 9.0.2#

None.

Fixed in 9.0.1#

None.

Fixed in 9.0.0#

  • Corrected a number of BLOB transfer and firmware update issues.

  • Corrected a number of generic, lighting, and LC model issues.

  • Fixed embedded provisioner migration from old SDK versions

Chip Enablement#

None.

Key Features#

New Features | Enhancements | Removed Features | Deprecated Features

New Features#

Added in 9.1.0#

None.

Added in 9.0.2#

None.

Added in 9.0.1#

Node firmware can now be updated without having to re-provision the node. The new formatting of model configuration data allows models and elements on the node to be changed as a result of a firmware update without having to re-provision the device (although a Node Address Refresh procedure or a Node Composition Refresh procedure may still be required). Note that projects that make use of the old formatting of model configuration data must first migrate to use the new format.

Added in 9.0.0#

Improved formatting of model configuration data that is stored on the device.

Enhancements#

Added in 9.1.0#

  • Relaxed the maximum values for limits after which an LPN considers a friendship stale. New limits allow for LPN to try 240 times to poll a friend at a maximum of 60 second intervals. This can be helpful to avoid re-establishing a friendship from scratch in case a Friend node is temporarily overloaded by other traffic.

  • Provided the key refresh customization API in the config client API class. This allows applications to avoid including the test API class while still allowing them to execute finely-tuned key refresh procedures.

  • Provided an iterative API for querying the provisioning database entries on a provisioner one-by-one. This allows the application to exercise more fine-grained control on how it pulls in the DDB data.

  • Improved the LC model API by allowing the configuration of the LC regulator to be enabled, disabled, or conditionally enabled depending on whether there is ambient light level input available or not. Related to the sensor input, the application can now set a configurable timeout; if no ambient light level input is received within the specified time, the input is considered to be not available.

Added in 9.0.2#

None.

Added in 9.0.1#

None.

Added in 9.0.0#

Improved formatting of model configuration data that is stored on the device, using model storage component version 2, is now the default; the new format provides more flexibility for project structure changes. Projects using the legacy model storage must first be converted to use the new storage. A migration component is provided to help in the conversion.

Removed Features#

None.

Deprecated Features#

None.

API Changes#

New APIs | Modified APIs | Removed APIs | Deprecated APIs

New APIs#

Added in 9.1.0#

New API Signature

Deprecated API replaced by this (if any)

sl_status_t sl_btmesh_config_client_prepare_key_refresh

sl_status_t sl_btmesh_test_prov_prepare_key_refresh

sl_status_t sl_btmesh_lc_server_set_regulator_mode

N/A

sl_status_t sl_btmesh_lc_server_set_sensor-timeout

N/A

sl_status_t sl_btmesh_prov_get_ddb_entry_by_count

N/A

sl_status_t sl_btmesh_prov_get_ddb_entry_count

N/A

Added in 9.0.2#

None.

Added in 9.0.1#

New API Signature

Deprecated API replaced by this (if any)

sl_status_t sl_btmesh_fw_dist_server_configure_throttle

N/A

sl_status_t sl_btmesh_fw_standalone_updater_configure_throttle

N/A

sl_status_t sl_btmesh_mbt_client_configure_throttle

N/A

sl_status_t sl_btmesh_mbt_server_block_start_rsp

N/A

sl_status_t sl_btmesh_mbt_server_enable_block_start_req

N/A

Added in 9.0.0#

New API Signature

Deprecated API replaced by this (if any)

sl_status_t sl_btmesh_model_migration_migrate_models

N/A

sl_status_t sl_btmesh_node_compare_dcd

N/A

sl_status_t sl_btmesh_scene_client_deinit

N/A

sl_status_t sl_btmesh_scene_setup_server_deinit

N/A

Modified APIs#

Added in 9.1.0#

Range of the LPN configuration setting sl_btmesh_lpn_request_retries has been increased from 0..10 to 0..239.

Range of the LPN configuration setting sl_btmesh_lpn_retry_interval has been increased from 0..100 ms to 0..60000 ms.

Added in 9.0.2#

None.

Added in 9.0.1#

None.

Added in 9.0.0#

Old API

Modified

sl_status_t sl_btmesh_proxy_send_solicitation(uint8_t netkey_index, uint16_t element_index, uint16_t dst)

sl_status_t sl_btmesh_proxy_send_solicitation(uint16_t netkey_index, uint16_t element_index, uint16_t dst)

sl_status_t sl_btmesh_remote_provisioning_client_open_link(uint16_t enc_netkey_index, uint16_t server, uint16_t elem_index, uint16_t timeout_sec, uint8_t dkri, uuid_128 uuid)

sl_status_t sl_btmesh_remote_provisioning_client_open_link(uint16_t enc_netkey_index, uint16_t server, uint16_t elem_index, uint16_t timeout_sec, enum sl_btmesh_remote_provisioning_client_nppi_operation_t dkri, uuid_128 uuid)

Removed APIs#

Removed in 9.1.0#

None.

Removed in 9.0.2#

None.

Removed in 9.0.1#

None.

Removed in 9.0.0#

Removed API Name

Was Deprecated?

sl_btmesh_prov_test_identity

Yes

sl_btmesh_test_set_adv_scan_params

Yes

sl_btmesh_test_set_segment_send_delay

Yes

sl_btmesh_test_set_sar_config

Yes

Deprecated APIs#

Deprecated in 9.1.0#

None.

Deprecated in 9.0.2#

None.

Deprecated in 9.0.1#

None.

Deprecated in 9.0.0#

Deprecated API Name

Planned Removal Date

sl_btmesh_node_get_networks

Dec 2025

Bug Fixes#

Fixed in 9.1.0#

ID Issue Description GitHub / Salesforce Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1187276 Removed unnecessary network key: application key bonding check when running a key refresh procedure at an embedded Provisioner. Key bindings on a node may differ from key bindings on the Provisioner, so a check is not useful. None. All; generic software issue
1532605 Calling sl_btmesh_prov_list_ddb_entries for a large DDB may create too many responses and some data may be dropped from reporting because of temporary resource exhaustion. An iterative DDB querying API was introduced to provide a less resource intensive query mechanism. 00334859 All; generic software issue
1564592 Switching a light off while dimming it did not work as expected. 00335024 All; generic software issue
1565219 Lightness value could roll over minimum/maximum value when using Generic Level move or halt requests. 00335738 All; generic software issue
1565493 A potential race condition existed between LC regulator adjusting light level and user manually dimming up or down. 00335738 All; generic software issue
1576029 Fixed an issue with user controlling LC Mode manually. 00338266 All; generic software issue

Fixed in 9.0.2#

None.

Fixed in 9.0.1#

ID Issue Description GitHub / Salesforce Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1412121 Allow more than one Scheduler Server model. None. All; generic software issue
1413864, 1425025, 1451316, 1452212, 1452213 Multiple fixes and improvements to make Firnware Update model operation more robust in a high-load environment. 325400 All; generic software issue
1427300 Correct Mesh BLOB Transfer Server model pull mode transfers completion None. All; generic software issue
1434214 DFU distributor server message sending corrected to handle all values of SL_BTMESH_CONFIG_APP_TXQ_SIZE correctly. None. All; generic software issue
1449127 Fix regressions with CTL, HSL, and LC model handling of power on/off state, and state transitions in general. None. All; generic software issue
1453059, 1455793 Fix regression with Generic Level Move and Generic Level Delta handing when reaching min/max values. None. All; generic software issue
1455257 Return at most 255 bytes of statistics data even if more are requested by application. 329287 All; generic software issue
1456316 Corrected the use of device composition page 1 when a device has received a firmware update but has not yet begun a new term. None. All; generic software issue
1456429 Fixed issues with migrating an embedded provisioner from SDK version 1.x 329602 All; generic software issue
1457535 Optimized heap usage on MicriumOS. None. MicriumOS; xG27 devices
1470416, 1473472 Corrected issues related to Mesh BLOB Transfer Server model timeout and state transition handling. None. All; generic software issue
1470419, 1470424 Fixed issues Mesh BLOB Transfer models and application communication, as well as Device Firmware Update models and application communication; unreliable event to the application caused issues in high load conditions. None. All; generic software issue

Fixed in 9.0.0#

ID Issue Description GitHub / Salesforce Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1384577 Allow Device Composition Data state change during Node Address Refresh Procedure. None. All; generic software issue
1406862 Fixed an unintended deactivation of LC mode when entering standby mode. None. All; generic software issue
1412725 Corrected parameter value range for sl_btmesh_proxy_send_solicitation API call. None. All; generic software issue
1439194, 1453067, 1453189 Fixed a number of issues in lighting and generic model state updates stemming from using generic level move operation. 327432 All; generic software issue
1442415 Close remote provisioning link only after Link Close message has been transmitted. None. All; generic software issue
1449114 Corrected minor issues in Configuration Client BGAPI:
  • Use the intended network key specified by enc_netkey_index to transmit sl_btmesh_config_client_get_model_pub() request;
  • Do not allow removing the network key used to transmit sl_btmesh_client_remove_netkey() request as a response would not be sent after the removal;
  • Corrected publication retransmission reporting
None. All; generic software issue
1450910 Properly handle provisioning bearer timeout during remote provisioning. None. All; generic software issue
1451240 Send the correct device address during Node Composition Refresh procedure. None. All; generic software issue
1451726 Fixed a problem in restoring generic model state on power up. None. All; generic software issue
1426807 Fixed a problem in Bluetooth Mesh Sensor Client application which can be stuck in UART write loop. None. All; generic software issue
1451726 Missing bootloader for btmesh_soc_nlc_basic_lightness_controller demo. None. BRD2602A

Chip Enablement#

None.

Application Example Changes#

New Examples | Modified Examples | Removed Examples | Deprecated Examples

New Examples#

Added in 9.1.0#

None.

Added in 9.0.2#

None.

Added in 9.0.1#

None.

Added in 9.0.0#

Example Name Description Supported Software Variants (if applicable) Supported Modes Supported OPNs / Boards / OPN Combinations Supported Host Interfaces

Bluetooth Mesh - NLC Energy Monitor.

An out-of-the-box Software Demo where the device acts as a mock Energy Monitor in a Networked Lighting Control (NLC) system. Standard SoC
    All
None.

Modified Examples#

Modified in 9.1.0#

None.

Modified in 9.0.2#

None.

Modified in 9.0.1#

None.

Modified in 9.0.0#

Example Name Changes Supported Software Variants if applicable Supported Modes Supported OPNs / Boards / OPN Combinations Supported Host Interfaces

btmesh_host_dfu

  • The application allows firmware update without reprovisioning
  • The fw_image_path is no longer a positional argument in the btmesh_host_dfu example
N/A NCP
  • Boards: All
  • External Hosts: PC
UART
All embedded examples Standard SoC
    All
N/A

Removed Examples#

None.

Deprecated Examples#

None.

Known Issues and Limitations#

ID Issue or Limitation Description GitHub / Salesforce Reference (if any) Workaround (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
401550 No BGAPI event for segmented message handling failure. 212392, 214429, 216665 Application needs to deduce failure from timeout / lack of application layer response; for vendor models, an API has been provided. All; generic software issue
454059 A large number of key refresh state change events are generated at the end of KR process, and that may flood NCP queue. None. Increase NCP queue length in the project. NCP interface; generic software issue
454061 Slight performance degradation compared to 1.5 in round-trip latency tests was observed. None. None. All; generic software issue
624514 Issue with re-establishing connectable advertising if all connections have been active and GATT proxy is in use. 235615 Allocate one more connection than is needed. All; generic software issue
841360 Poor performance of segmented message transmission over GATT bearer. 283876 Ensure that the underlying BLE connection’s Connection interval is short; ensure that ATT MTU is large enough to fit a full Mesh PDU; tune the minimum connection event length to allow multiple LL packets to be transmitted per connection event. All; generic software issue
1204017 Distributor is not able to handle parallel self FW Update and FW Upload. None. Don’t run self FW update and FW upload in parallel. All; generic software issue
1226127 Host provisioner example can be stuck when it starts to provision a second node. None. Restart the host provisioner app before provisioning the second node. All; generic software issue