About ble mesh pb_remote for the NCS v2.5.0

Hi

I plan to try the PB-Remote provisioning, but I can't find any sampl. Has NCS v2.5.0 implemented the 5.2.3 PB-Remote process in Mesh Protocol v1.1? If so, how should I conduct the experiment?

I mentioned it in this tick, but I haven't succeeded yet. How should I carry out my test?

  • Hi,

    Although as of now there are no dedicated samples for remote provisioning (RPR) in nRF Connect SDK, the feature is supported and can be enabled for any node.

    What is important to remember for remote provisioning, is that at least three devices are involved:

    1. A node with the RPR client, from which to control the provisioning. Typically a smartphone (at the time of writing only available in the nRF Mesh for iOS app, not on Android.) Also possible from the mesh shell after some modifications.
    2. A node with the RPR server, within radio range of the new device.
    3. The new device, which only has to support PB-ADV.

    The easiest setup to test RPR, is:

    • Use a smartphone (iOS for now) as provisioner for the whole network.
    • Add the RPR server to a device on the network.
    • From the smartphone, provision a new device into the network over remote provisioning via the RPR server.

    For that setup, do the following changes to the RPR server node:

    • In prj.conf, add the setting:
      CONFIG_BT_MESH_RPR_SRV=y
    • In model_handler.c, to the list of elements, add the BT_MESH_MODEL_RPR_SRV model to the primary element (suggested location is right after the health server model). For instance, here shown is the light dimmer sample with the RPR server model added:
      static struct bt_mesh_elem elements[] = {
      	BT_MESH_ELEM(1,
      		     BT_MESH_MODEL_LIST(BT_MESH_MODEL_CFG_SRV,
      					BT_MESH_MODEL_HEALTH_SRV(&health_srv, &health_pub),
      					BT_MESH_MODEL_RPR_SRV,
      					BT_MESH_MODEL_ONOFF_CLI(&dimmer.onoff_client),
      					BT_MESH_MODEL_LVL_CLI(&dimmer.lvl_client),
      					BT_MESH_MODEL_SCENE_CLI(&scene_btn.client)),
      		     BT_MESH_MODEL_NONE),
      };

    Provisioning is then performed from the smartphone the normal way, but note that devices found via RPR will list with a different icon in the list of unprovisioned devices, and you will get the option to choose provisioning via RPR after selecting the device for provisioning. If the device also supports PB-GATT and is within range of the phone, then that will also appear as an option.

    Regards,
    Terje

  • Hi

    I modified the Light Dimmer sample program following your instructions to enable the PRP Server, and provisioned it using the nRF Mesh app. However, when I was about to add a new unprovisioned device(Mesh Light), and clicked on the "Mesh Light" item, the APP crashed. I don't know where the problem lies.

    Are the "different icons" you mentioned the "bifurcated arrow" on the right side of the item in the picture?

  • Hi,

    Yes, that arrow symbol indicates remote provisioning is available for that node. Selecting it in the list should give you remote provisioning as a provisioning option.

    Please ensure you have the latest version of the app, and if it still fails can you share the log? A log from the device itself may also be of help.

    Regards,
    Terje

  • Hi

    Sorry, I'm not familiar with IOS, but I'll try to get the logs. It may take some time, please do not close this tick. Thank you! 

  • Hi

    Here are the LOG files I captured:

    1. When operating with an iPad tablet, the nRF Mesh crashed.

    2. When operating with an iPhone, there are three situations:

    (1) The remote provisioning was successful, but this situation occurred only once.

    (2) It stops at the provision device page and remains in the "connecting" status. The relevant LOG is in the "fail+log.h" file.

    fail+log.h

    (3) After entering the device capabilities page,click the "provisioning" button. it remains in the "connecting" state for a long time, and then changes to the "device disconnected" status. The relevant LOG is in the "fail+log2.h" file.

    fail+log2.h

Related