nRF5 SDK for Mesh v4.1.0
Remote provisioning (PB-remote)

Remote provisioning (PB-remote) allows a provisioner to provision devices located outside of the provisioner's radio range. This is done by using mesh nodes to relay provisioning messages to a node within the range of the remote device that is to be provisioned.

Remote provisioning topology

The PB-Remote functionality is provided by the PB-remote client and the PB-remote Server models.

For more information about the PB-remote APIs, see the Remote provisioning APIs section and the PB-remote API group.

Table of contents

  • Remote provisioning process
  • Remote provisioning APIs
    • Client APIs
    • Server APIs

Remote provisioning process @anchor provisioning_pb-remote_process

The following figure shows the complete remote provisioning process that starts once the PB-remote client and server are initialized and provisioned with the normal provisioning procedure, with both of them in the idle state.

The provisioning process is made of the following steps:

  • To find out remote unprovisioned devices, the application can request that the PB-remote client instruct the PB-remote server to start scanning for unprovisioned devices by calling pb_remote_client_remote_scan_start().
  • The PB-remote server starts scanning for the unprovisioned devices and reports back the observed UUIDs.
  • The application can then select the desired UUID and instruct the PB-remote client to start the remote provisioning process by calling nrf_mesh_prov_provision() API, with bearer_type set to NRF_MESH_PROV_BEARER_MESH.
  • After this call, the PB-remote client requests that the PB-remote server open the provisioning link with the unprovisioned device.
  • Once the link is opened, the PB-remote client executes the rest of the provisioning process by transferring provisioning PDUs to the server, which are then sent by the server to the unprovisioned device. The PB-remote server also receives the PDUs from the unprovisioned device and forwards them to the PB-remote client.

The process ends with successful provisioning of an unprovisioned device, and with the return of the client and server devices to the idle state.

msc_pb_remote_provisioning
Figure 1. Remote provisioning overview.


Remote provisioning APIs @anchor provisioning_pb-remote_apis

This section outlines the provisioning process phases you need to take into account to implement the PB-remote client and the PB-remote server in your application.

You can also check the PB-remote example for implementation details.

Client APIs @anchor provisioning_pb-remote_apis_client

The PB-remote client model provides a remote provisioning bearer and a set of APIs for performing scanning using the PB-remote server.

To use the PB-remote client in your application, implement the following steps:

Server APIs @anchor provisioning_pb-remote_apis_server

The PB-remote Server model provides a remote provisioning bearer and a set of APIs for performing scanning using the PB-remote server.

To use the PB-remote server in your application, implement the following steps:

The provisioning and scanning process is controlled by the peer PB-remote client and your application does not need to take any other action.