Using Mesh sample over Coded PHY

Hello,

I have gone through many devzone threads which suggest that Ble Mesh over coded PHY is not officially supported but, is possible. I am trying out the "Mesh" sample on two nRF52480 DK's by simply "self-provisioning" them. I have commented out the PB_ADV, PB_GATT and PROXY_NODE functionality and was successfully able to get the two nodes to talk to each other.

I have gone through a couple of threads from years ago which suggest changing few sections in the software but, they were all pointing to older versions of SDK for Mesh. Since I am working on the nRF Connect SDK which has a new software architecture and involves changing project configurations, I am finding it difficult to replicate the changes.

I have tried adding the following configuration to my proj.conf file

CONFIG_BT_PHY_UPDATE=y
CONFIG_BT_EXT_ADV=y
CONFIG_BT_HCI_MESH_EXT=y
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_PHY_CODED=y

My new advertising and scanning parameters are shown below

static struct bt_le_adv_param adv_param = {
	.id = BT_ID_DEFAULT,
	.interval_min = BT_GAP_ADV_FAST_INT_MIN_2,
	.interval_max = BT_GAP_ADV_FAST_INT_MAX_2,
	.options = BT_LE_ADV_OPT_USE_IDENTITY|BT_LE_ADV_OPT_EXT_ADV|BT_LE_ADV_OPT_CODED|BT_LE_ADV_OPT_CONNECTABLE,
	};
.
.
struct bt_le_scan_param scan_param = {
			.type       = BT_LE_SCAN_TYPE_ACTIVE,
			.options    = BT_LE_SCAN_OPT_CODED|BT_LE_SCAN_OPT_FILTER_DUPLICATE,
			.interval   = BT_GAP_SCAN_FAST_INTERVAL,
			.window     = BT_GAP_SCAN_FAST_WINDOW };

My nodes don't seem to be talking like they were before making these changes. I do see the the extended LE coded packets on my nRF connect app from these two nodes.

Is there anything I am missing? Please advice.

Parents
  • Hello,

    After including the above mentioned project configurations and parameters, you would have to make one additional change.

    In the bt_mesh_scan_cb() function in adv.c file, there is an initial check to filter in a specific type of advertisement(BT_GAP_ADV_TYPE_ADV_NONCONN_IND). This is according to the bluetooth Mesh spec. To allow extended messages, you would have to replace this with BT_GAP_ADV_TYPE_EXT_ADV.

    Voila! you have mesh over long range using nRF connect SDK

Reply
  • Hello,

    After including the above mentioned project configurations and parameters, you would have to make one additional change.

    In the bt_mesh_scan_cb() function in adv.c file, there is an initial check to filter in a specific type of advertisement(BT_GAP_ADV_TYPE_ADV_NONCONN_IND). This is according to the bluetooth Mesh spec. To allow extended messages, you would have to replace this with BT_GAP_ADV_TYPE_EXT_ADV.

    Voila! you have mesh over long range using nRF connect SDK

Children
  • Hi Sushel

                   I wish to implement the same, have you made the Mesh Implementation in Zephyr, if yes were you able to implement it? since mesh has multiple advertisment packets, will changing the PHY of one adv packet convert the entire mesh to coded phy.. if yes then this is great news. if you have any resourse that you can share please do, this will help us a lot

    Thanks

Related