Setup:
-
3-10 servers (light_control_server example)
-
1 client (light_control_client example) (provisioner)
-
nRF52832
-
SDK: nrf5_SDK_for_Mesh_v0.9.2
When I run default configuration 3 servers and 1 client everything works fine.
I tried to increase server count modifing:
-
SERVER_COUNT define in main.c (light_control_client)
-
nrf_mesh_config_app.h accordingly (light_control_client)
-
light_control_server unmodified
I started to test by turning on client and one server which has been provisioned ok using default setup (3 servers config).
After incresing count to 10 severs I was unable to provision even one server. The client sends:
access.c, 409, TX: [aop: 0x8008]
but never receives response from server which should:
access.c, 244, RX: [aop: 0x0002]
Insted it keeps resending "TX: [aop: 0x8008]" and finally it writes error:
provisioner.c, 272, Unexpected event: 24.
Log of working 3 server setup (client log):
<t: 0>, main.c, 486, ----- BLE Mesh Light Control Client Demo -----
<t: 0>, main.c, 592, Temp: 2402, Humi: 40
<t: 0>, main.c, 150, Initializing softdevice
<t: 0>, nrf_mesh_sdk.c, 112, Initializing SoftDevice...
<t: 2>, nrf_mesh_sdk.c, 121, Ram base: 0x200022D8
<t: 15>, nrf_mesh_sdk.c, 126, sd_ble_enable: app_ram_base should be adjusted to 0x200019C0
<t: 19>, main.c, 158, Initializing mesh stack
<t: 325>, main.c, 165, Enabling mesh stack
<t: 344>, main.c, 219, Setting up access layer and models
<t: 347>, device_state_manager.c, 1321, dsm_flash_config_load(): p_metainfo == NULL => FLASH EMPTY(?)
<t: 33415>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 519320>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 842433>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 1177534>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 1498759>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 1831030>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2169169>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2486464>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2579500>, access.c, 323, mesh_evt_cb(): p_evt->type == 3
<t: 2579503>, provisioner.c, 181, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED
<t: 2579506>, provisioner.c, 186, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED: start_provisioning
<t: 2579513>, provisioner.c, 192, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED: start_provisioning NOT STARTED => m_prov_state != PROV_STATE_WAIT =>
<t: 2580842>, prov_bearer_adv.c, 1193, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_CONTROL
<t: 2580847>, access.c, 323, mesh_evt_cb(): p_evt->type == 4
<t: 2580850>, provisioner.c, 255, mesh_evt_handler(): NRF_MESH_EVT_PROV_LINK_ESTABLISHED
<t: 2580853>, provisioner.c, 257, Local provisioning link established
<t: 2581202>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2581730>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2582490>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 2582496>, access.c, 323, mesh_evt_cb(): p_evt->type == 10
<t: 2582498>, provisioner.c, 223, mesh_evt_handler(): NRF_MESH_EVT_PROV_CAPS_RECEIVED
<t: 2582503>, provisioner.c, 236, Using static authentication
<t: 2583100>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2584019>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2584378>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2584844>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2585801>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2586641>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2587144>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2587832>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 2588491>, prov_bearer_adv.c, 1184, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_CONTINUE
<t: 2589385>, prov_bearer_adv.c, 1184, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_CONTINUE
<t: 2589534>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2594168>, access.c, 323, mesh_evt_cb(): p_evt->type == 8
<t: 2594171>, provisioner.c, 244, mesh_evt_handler(): NRF_MESH_EVT_PROV_STATIC_REQUEST
<t: 2594191>, provisioner.c, 248, Static authentication data provided
<t: 2594494>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2594993>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2595836>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 2596527>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2597352>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2597787>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2598714>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 2599087>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2599825>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2600498>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2601013>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 2601698>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 2601703>, access.c, 323, mesh_evt_cb(): p_evt->type == 11
<t: 2601706>, provisioner.c, 214, mesh_evt_handler(): NRF_MESH_EVT_PROV_COMPLETE
<t: 2601709>, main.c, 394, Provisioning complete. Adding address 0x0010.
<t: 2602341>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2605520>, access.c, 323, mesh_evt_cb(): p_evt->type == 5
<t: 2605523>, provisioner.c, 198, mesh_evt_handler(): NRF_MESH_EVT_PROV_LINK_CLOSED
<t: 2605526>, provisioner.c, 200, Local provisioning link closed
<t: 2605529>, provisioner.c, 114, Getting composition data
<t: 2605536>, access.c, 409, TX: [aop: 0x8008]
<t: 2605556>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2606062>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2609137>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2609140>, access.c, 244, RX: [aop: 0x0002]
<t: 2609145>, provisioner.c, 300, Composition data: 0059000000000020000100000001010000EDFE0000FE00
<t: 2609149>, provisioner.c, 120, Adding appkey
<t: 2609156>, access.c, 409, TX: [aop: 0x0000]
<t: 2609160>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2609589>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2610384>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2611204>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2612682>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2612685>, access.c, 244, RX: [aop: 0x8003]
<t: 2612689>, provisioner.c, 127, Binding appkey
<t: 2612699>, access.c, 409, TX: [aop: 0x803D]
<t: 2612945>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2613773>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2615153>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2615156>, access.c, 244, RX: [aop: 0x803E]
<t: 2615160>, provisioner.c, 149, Setting publication state 0x0001
<t: 2615167>, access.c, 409, TX: [aop: 0x0003]
<t: 2615179>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2615515>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2616178>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2617111>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2618857>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2618860>, access.c, 244, RX: [aop: 0x8019]
<t: 2618864>, provisioner.c, 157, Adding subscription
<t: 2618870>, access.c, 409, TX: [aop: 0x801B]
<t: 2618874>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2619149>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2620041>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2620923>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2622057>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2622060>, access.c, 244, RX: [aop: 0x801F]
<t: 2622064>, main.c, 360, Configuration of device 0 successful
<t: 2653901>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2810105>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 2956314>, access.c, 317, mesh_evt_cb(): NRF_MESH_EVT_MESSAGE_RECEIVED
<t: 2956317>, access.c, 244, RX: [aop: 0x00D4]
Log of not working 10 server setup (client log):
<t: 0>, main.c, 486, ----- BLE Mesh Light Control Client Demo -----
<t: 0>, main.c, 592, Temp: 2511, Humi: 37
<t: 0>, main.c, 150, Initializing softdevice
<t: 0>, nrf_mesh_sdk.c, 112, Initializing SoftDevice...
<t: 2>, nrf_mesh_sdk.c, 121, Ram base: 0x200022D8
<t: 14>, nrf_mesh_sdk.c, 126, sd_ble_enable: app_ram_base should be adjusted to 0x200019C0
<t: 18>, main.c, 158, Initializing mesh stack
<t: 313>, main.c, 165, Enabling mesh stack
<t: 341>, main.c, 219, Setting up access layer and models
<t: 344>, device_state_manager.c, 1321, dsm_flash_config_load(): p_metainfo == NULL => FLASH EMPTY(?)
<t: 159283>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 161111>, access.c, 323, mesh_evt_cb(): p_evt->type == 3
<t: 161114>, provisioner.c, 181, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED
<t: 161117>, provisioner.c, 186, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED: start_provisioning
<t: 161124>, provisioner.c, 192, mesh_evt_handler(): NRF_MESH_EVT_UNPROVISIONED_RECEIVED: start_provisioning NOT STARTED => m_prov_state != PROV_STATE_WAIT =>
<t: 163420>, prov_bearer_adv.c, 1193, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_CONTROL
<t: 163425>, access.c, 323, mesh_evt_cb(): p_evt->type == 4
<t: 163428>, provisioner.c, 255, mesh_evt_handler(): NRF_MESH_EVT_PROV_LINK_ESTABLISHED
<t: 163431>, provisioner.c, 257, Local provisioning link established
<t: 163673>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 164374>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 165214>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 165219>, access.c, 323, mesh_evt_cb(): p_evt->type == 10
<t: 165222>, provisioner.c, 223, mesh_evt_handler(): NRF_MESH_EVT_PROV_CAPS_RECEIVED
<t: 165227>, provisioner.c, 236, Using static authentication
<t: 165571>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 166546>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 167006>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 167238>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 168041>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 168848>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 169249>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 169969>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 170793>, prov_bearer_adv.c, 1184, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_CONTINUE
<t: 171757>, prov_bearer_adv.c, 1184, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_CONTINUE
<t: 172201>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 176539>, access.c, 323, mesh_evt_cb(): p_evt->type == 8
<t: 176542>, provisioner.c, 244, mesh_evt_handler(): NRF_MESH_EVT_PROV_STATIC_REQUEST
<t: 176562>, provisioner.c, 248, Static authentication data provided
<t: 177170>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 177224>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 178047>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 178559>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 179351>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 179593>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 180538>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 180769>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 181647>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 182364>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 182928>, prov_bearer_adv.c, 1175, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_ACK
<t: 183710>, prov_bearer_adv.c, 1166, prov_bearer_adv_pkt_in(): PB_ADV_PACKET_C_TRANSACTION_START
<t: 183716>, access.c, 323, mesh_evt_cb(): p_evt->type == 11
<t: 183718>, provisioner.c, 214, mesh_evt_handler(): NRF_MESH_EVT_PROV_COMPLETE
<t: 183722>, main.c, 394, Provisioning complete. Adding address 0x0010.
<t: 184191>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 187409>, access.c, 323, mesh_evt_cb(): p_evt->type == 5
<t: 187411>, provisioner.c, 198, mesh_evt_handler(): NRF_MESH_EVT_PROV_LINK_CLOSED
<t: 187414>, provisioner.c, 200, Local provisioning link closed
<t: 187417>, provisioner.c, 114, Getting composition data
<t: 187425>, access.c, 409, TX: [aop: 0x8008]
<t: 187452>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 187832>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 195955>, access.c, 409, TX: [aop: 0x8008]
<t: 196635>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 204474>, access.c, 409, TX: [aop: 0x8008]
<t: 205047>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 220662>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 221511>, access.c, 409, TX: [aop: 0x8008]
<t: 221605>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 222371>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 254607>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 255357>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 255594>, access.c, 409, TX: [aop: 0x8008]
<t: 256194>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 287071>, access.c, 323, mesh_evt_cb(): p_evt->type == 24
<t: 287074>, provisioner.c, 272, Unexpected event: 24.
<t: 287279>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 319989>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 323750>, access.c, 409, TX: [aop: 0x8008]
<t: 323758>, access.c, 323, mesh_evt_cb(): p_evt->type == 24
<t: 323761>, provisioner.c, 272, Unexpected event: 24.
<t: 324295>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 357224>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 389538>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 422688>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 454848>, access.c, 323, mesh_evt_cb(): p_evt->type == 24
<t: 454851>, provisioner.c, 272, Unexpected event: 24.
<t: 460063>, access.c, 409, TX: [aop: 0x8008]
<t: 460357>, access.c, 323, mesh_evt_cb(): p_evt->type == 1
<t: 472301>, access.c, 323, mesh_evt_cb(): p_evt->type == 1