Bluetooth mesh composition limite size


Omar Morceli
 

Hi
I have a bluetooth mesh composition with two elements
I. The first element contains four models
  1. BT_MESH_MODEL_CFG_SRV
  2. BT_MESH_MODEL_HEALTH_SRV
  3. BT_MESH_MODEL_ID_GEN_ONOFF_SRV
  4. BT_MESH_MODEL_ID_GEN_ONOFF_CLI
II. The second element contains two vendor models

During the phone provisioning process, I receive an error message and provisioning fails
[00:01:03.470,672] <dbg> bt_mesh_cfg_srv.dev_comp_data_get: Composition page 255 not available
[00:01:03.470,703] <err> bt_mesh_transport: Message too big: 36
[00:01:03.470,703] <err> bt_mesh_cfg_srv: Unable to send Device Composition Status response


After removing both GEN_ONOFF models, provisioning has succeeded and all works as expected

Is there any way to make the size bigger or is there any other solution?

Regards


William Fish
 

Hi,
A couple of things:
a. I have found it could be a BLE buffer issue; CONFIG_BT_MESH_LOOPBACK_BUFS=30
If you increase this it allows the device to process more self-generated messages

b. Composition page error needs further investigation, it may be worth have a look at
intbt_mesh_cfg_comp_data_get(uint16_tnet_idxuint16_taddruint8_tpageuint8_t*rspstructnet_buf_simple*comp)

Get the target node’s composition data.

If the other device does not have the given composition data page, it will return the largest page number it supports that is less than the requested page index. The actual page the device responds with is returned in rsp.

Parameters
  • net_idx – Network index to encrypt with.

  • addr – Target node address.

  • page – Composition data page, or 0xff to request the first available page.

  • rsp – Return parameter for the returned page number, or NULL.

  • comp – Composition data buffer to fill.

Returns

0 on success, or (negative) error code on failure.