Bluetooth: Mesh Demo example automatic provisioning

Hello,

We are working on the Bluetooth: Mesh Demo example on nRF-52 DK using nRF Connect SDK 2.3.0. The example doesn't requires provisioning which is what I want. I run the application and;

nRF Mesh app scan (Connect or + Add Node button) doesn't show any node. I cant see any nodes in the network.

nRF Connect app finds BLE mesh device but as you below image, the device advertise with different MAC every 5 secs.

Only one mesh device exist in the environment.

Questions:

1- How I can see same network mesh devices in nRF mesh app? 

2-  Why same mesh device changes its MAC at every advertisement?

3- My final goal is have multiple beacons and multiple relays and one gateway node. They will have hardcoded individual node addresses. Is it possible create this mesh structure using this example as a reference?

nRF Mesh app settings: Network settings

Unicast Address: 0002

Network Key: 0123456789ABCDEF0123456789ABCDEF

App Key: 0123456789ABCDEF0123456789ABCDEF

nRF Connect app, same device but advertise with different MAC:

I didn't change the code except prj.conf for nRF-52 DK:

CONFIG_MAIN_STACK_SIZE=1024
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

CONFIG_BT=y
CONFIG_BT_TINYCRYPT_ECC=y
CONFIG_BT_OBSERVER=y
CONFIG_BT_BROADCASTER=y

CONFIG_BT_MESH=y
CONFIG_BT_MESH_RELAY=y
CONFIG_BT_MESH_SUBNET_COUNT=1
CONFIG_BT_MESH_APP_KEY_COUNT=1
CONFIG_BT_MESH_MODEL_GROUP_COUNT=2
CONFIG_BT_MESH_ADV_BUF_COUNT=10
CONFIG_BT_MESH_LABEL_COUNT=0
CONFIG_BT_MESH_PB_ADV=n
CONFIG_BT_MESH_CFG_CLI=y
CONFIG_BT_MESH_LOOPBACK_BUFS=8

CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y
CONFIG_BT_MESH_RPL_STORE_TIMEOUT=600

Terminal output:

  • P.s: A very crude workaround comes to mind. You can modify the code so that:

    • On initialization when the device is not yet provision, add the app key to the node. The model features won't work yet in this boot.  
    • On initialization where the device has been provisioned, run the key binding. From this point on, the features should work normally.
    • Thus, to get things run, after flashing the device and let it run for the first time, simply reset it and things should then work.

    It is rather crude, and I would not recommend it for production. However, for testing purpose, I think it is acceptable.

    As far as this demo setup go, ideally, we should find some way to setup the callback like I described in my last reply. 

Related