The latest development version of this page may be more current than this released 2.2.1 version.

Bluetooth: Mesh Provisioner


This sample demonstrates how to use the Bluetooth Mesh APIs related to provisioning and using the Configuration Database (CDB). It is intended to be tested together with a device that support the Health Server model. For example, one could use the sample in tests/bluetooth/mesh_shell.

The application provisions itself and loads the CDB with an application key. It then waits to receive an Unprovisioned Beacon from a device which will trigger provisioning using PB-ADV. Once provisioning is done, the node will be present in the CDB but not yet marked as configured. The application will notice the unconfigured node and start configuring it. If no errors are encountered, the node is marked as configured.

The configuration of a node involves adding an application key, binding the Health Server model to that application key and then configuring the model to publish Health Status every 10 seconds.

Please note that this sample uses the CDB API which is currently marked as EXPERIMENTAL and is likely to change.


  • A board with Bluetooth LE support, or

  • QEMU with BlueZ running on the host

Building and Running

This sample can be found under samples/bluetooth/mesh_provisioner in the Zephyr tree.

See bluetooth samples section for details on how to run the sample inside QEMU.

For other boards, build and flash the application as follows:

west build -b <board> samples/bluetooth/mesh_provisioner
west flash

Refer to your board’s documentation for alternative flash instructions if your board doesn’t support the flash target.