About the Bluetooth Mesh SDK#
The Silicon Labs Bluetooth mesh stack is an advanced Bluetooth mesh protocol stack implementing the Bluetooth mesh standard. It can run alongside the Bluetooth Low Energy (LE) stack, using a common link layer, which allows using LE features in parallel. The Silicon Labs Bluetooth mesh stack is meant for Silicon labs Wireless Gecko SoCs and modules.
The Silicon Labs Bluetooth mesh stack provides multiple APIs for the developer to access the Bluetooth mesh functionality. Two modes are supported.
Standalone mode (also referenced as SoC mode), where both the Bluetooth mesh stack and the application run in a Wireless Gecko SoC or module. The application can be developed with the C programming language.
Network Co-Processor (NCP) mode, where the Bluetooth stack runs in a Wireless Gecko and the application runs on a separate host MCU. For this use case, the Bluetooth stack can be configured into NCP mode where the API is exposed over a serial interface such as UART. For more information, see AN1259: Using the Silicon Labs Bluetooth® Stack v3.x and Higher in Network Co-Processor Mode.
Bluetooth Mesh Stack Features#
The features of the Silicon Labs Bluetooth mesh stack are listed in the following table. For details on the features of the Bluetooth Low Energy stack, refer to QSG169: Bluetooth® Quick-Start Guide for SDK v3.x and Higher.
Feature | Value and Comment |
---|---|
Bluetooth mesh version | Bluetooth mesh 1.1 |
Node types | Relay, Proxy, Friend, and Low Power Node (LPN) |
Provisioning bearers | PB-ADV PB-GATT PB-Remote (Remote Provisioning, RPR) |
GATT services | Proxy Provisioning |
Security | ECDH AES-128 encryption, authentication, and obfuscation OoB authentication Certificate-based provisioning Replay protection Key refresh (reject list) |
Host (NCP) interfaces | 4-wire UART with RTS/CTS control or 2-wire UART without RTS/CTS GPIOs for sleep and wake-up management Secure NCP option for data encryption between NCP target and host |
Wi-Fi Coexistence | Using Packet Trace Arbitration (PTA) |
Bootloaders | Secure Gecko Bootloader supporting authenticated and encrypted updates over OTA (over GATT) or UART and Secure Boot. The Gecko Bootloader also supports flash partitioning and both internal and external (SPI) flash. |
Non-volatile memory | EFR32[B|M]G12, EFR32[B|M]G13: NVM3 or Persistent Store (PS). (Note: Example applications in the SDK use NVM3 by default.) EFR32[B|M]G21, EFR32[B|M]G22, EFR32[B|M]G24, EFR32[B|M]G27: NVM3 |
Mesh 1.1 new features | Device Firmware Update (Mesh DFU), Mesh Blob Transfer, Mesh Remote Provisioning, Certificate-Based Provisioning, Mesh Private Beacons, Enhanced Device Composition Data page, i.e. Large Composition Data, Configurable SAR timing, Proxy Service Solicitation, On-Demand Private Proxy |
Supported Models#
Model | SIG Model ID | Example App (1) |
---|---|---|
Model Group: NA | ||
Vendor | N/A | N/A |
Model Group: Foundation | ||
Configuration Server | 0x0000 | All |
Configuration Client | 0x0001 | BT Mesh Host Provisioner |
Health Server | 0x0002 | N/A |
Health Client | 0x0003 | N/A |
Remote Provisioning Server | 0x0004 | N/A |
Remote Provisioning Client | 0x0005 | N/A |
Mesh Private Beacon Server | 0x000A | N/A |
Mesh Private Beacon Client | 0x000B | N/A |
Model Group: Generic | ||
Generic OnOff Server | 0x1000 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller, PyBGAPI NCP Host Light |
Generic OnOff Client | 0x1001 | SoC Switch CTL, SoC Switch CTL Low Power, NLC Dimming Control, NLC Dimming Control Low Power, PyBGAPI NCP Host Switch |
Generic Level Server | 0x1002 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller, PyBGAPI NCP Host Light |
Generic Level Client | 0x1003 | NLC Basic Scene Selector, NLC Dimming Control |
Generic Default Transition Time Server | 0x1004 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Generic Default Transition Time Client | 0x1005 | N/A |
Generic Power OnOff Server | 0x1006 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Generic Power OnOff Setup Server | 0x1007 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Generic Power OnOff Client | 0x1008 | N/A |
Generic Power Level Server | 0x1009 | N/A |
Generic Power Level Setup Server | 0x100A | N/A |
Generic Power Level Client | 0x100B | N/A |
Generic Battery Server | 0x100C | N/A |
Generic Battery Client | 0x100D | N/A |
Generic Location Server | 0x100E | N/A |
Generic Location Setup Server | 0x100F | N/A |
Generic Location Client | 0x1010 | N/A |
Generic Admin Property Server | 0x1011 | N/A |
Generic Manufacturer Property Server | 0x1012 | N/A |
Generic User Property Server | 0x1013 | N/A |
Generic Client Property Server | 0x1014 | N/A |
Generic Property Client | 0x1015 | N/A |
Model Group: Sensors | ||
Sensor Server | 0x1100 | SoC Sensor Thermometer, NLC Occupancy Sensor, NLC Ambient Light Sensor |
Sensor Setup Server | 0x1101 | SoC Sensor Thermometer, NLC Occupancy Sensor, NLC Ambient Light Sensor |
Sensor Client | 0x1102 | SoC Sensor Client |
Model Group: Times and Scenes | ||
Time Server | 0x1200 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Time Setup Server | 0x1201 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Time Client | 0x1202 | N/A |
Scene Server | 0x1203 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller, PyBGAPI NCP Host Light |
Scene Setup Server | 0x1204 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Scene Client | 0x1205 | SoC Switch CTL, SoC Switch CTL Low Power, NLC Basic Scene Selector, PyBGAPI NCP Host Switch |
Scheduler Server | 0x1206 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Scheduler Setup Server | 0x1207 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Scheduler Client | 0x1208 | N/A |
Model Group: Lighting | ||
Light Lightness Server | 0x1300 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller, PyBGAPI NCP Host Light |
Light Lightness Setup Server | 0x1301 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Light Lightness Client | 0x1302 | SoC Switch CTL, SoC Switch CTL Low Power, PyBGAPI NCP Host Switch |
Light CTL Server | 0x1303 | SoC Light CTL, PyBGAPI NCP Host Light SoC Light CTL |
Light CTL Setup Server | 0x1304 | SoC Light CTL |
Light CTL Client | 0x1305 | SoC Switch CTL, SoC Switch CTL Low Power, PyBGAPI NCP Host Switch |
Light CTL Temperature Server | 0x1306 | SoC Light CTL |
Light HSL Server | 0x1307 | SoC Light HSL |
Light HSL Setup Server | 0x1308 | SoC Light HSL |
Light HSL Client | 0x1309 | N/A |
Light HSL Hue Server | 0x130A | SoC Light HSL |
Light HSL Saturation Server | 0x130B | SoC Light HSL |
Light LC Server | 0x130F | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Light LC Setup Server | 0x1310 | SoC Light CTL, SoC Light HSL, NLC Basic Lightness Controller |
Light LC Client | 0x1311 | N/A |
Model Group: Firmware Update | ||
BLOB Transfer Server | 0x1400 | SoC DFU Distributor |
BLOB Transfer Client | 0x1401 | N/A |
Firmware Update Server | 0x1402 | SoC DFU Distributor |
Firmware Update Client | 0x1403 | N/A |
Firmware Distribution Server | 0x1404 | SoC DFU Distributor |
Firmware Distribution Client | 0x1405 | SoC DFU Distributor |
(1) In Simplicity Studio 5, example app names are preceded with "Bluetooth Mesh -".
Additional Models for Mesh 1.1 features: Remote Provisioning, Private Beacon, On-demand Private Proxy, SAR Configuration, Large Composition Data, Solicitation PDU Replay Protection List Configuration, Firmware Distribution, Firmware Update, BLOB Transfer.
Bluetooth Mesh Stack Limitations#
Component | Feature | Value and Comment |
---|---|---|
Mesh Node (EFR32) | Network Keys on a node(1) | Maximum of 7 |
Application Keys on a node | Maximum of 8 | |
Number of nodes that can be communicated with | Maximum of 4096 (depending on available RAM and NVM3) | |
Concurrent segmented messages being received | Maximum of 255 (depending on available RAM) | |
Concurrent segmented messages being sent | Maximum of 255 (depending on available RAM) | |
Parallel provisioning sessions | Maximum of 1 | |
Faults reported on the health server | Maximum of 5 | |
Mesh Provisioner (EFR32) | Maximum number of supported nodes | 512 |
Maximum number of network keys per node | Maximum of 7 | |
Maximum number of application keys per node | Maximum of 8 | |
Replay protection list size | Maximum of 4096 (depending on available RAM and NVM3. Network size limit is still 512) | |
Parallel provisioning sessions | 1 | |
Concurrent key refresh operations | Maximum of 16 | |
Mesh Provisioner (ADK) | Replay protection list size (max network node count) | 32768 |
Maximum number of network keys per node | Maximum of 7 | |
Maximum number of application keys per node | Maximum of 8 | |
Parallel provisioning sessions | 1 |
(1) The node belongs to a single network, but the network may have multiple network keys to encrypt the traffic.