Hello,
we are using nrf52840 with nrf5 sdk for thread and Zigbee v4.2.0. In our application, Nordic is the coordinator of Zigbee network.
We have a counter that is increased whenever Zigbee handler is triggered with event ZB_BDB_SIGNAL_DEVICE_FIRST_START while it shouldn't i.e. no erase flash memory function called at application level. This counter is almost always 0 as expected but sometimes it becomes 1.
When this happens all Zigbee devices in the network aren't reachable any more: they send packets to Nordic which acknowledges them but does not reply when a Zigbee default response is required. It is also impossible to send packets from the coordinator to a device. Zigbee handler is instead called with event ZB_NLME_STATUS_INDICATION and status ZB_NWK_COMMAND_STATUS_INDIRECT_TRANSACTION_EXPIRY.
Nordic is also sending a lot of leave requests with rejoin bit set to end devices that send packets to Nordic itself. Not all accessories that we integrate can manage leave requests.
We have issues also communicating with routers and the issues seems to be solved only when routers send a match descriptor request.
To investigate the issue we reproduce it by erasing Zigbee flash area through zb_nvram_erase(). When this is done, we can see Nordic running a network with same parameters as before (e.g. same PAN ID, Nordic IEEE address, ...). These parameters are stored by application and they are sent to Zigbee stack at startup. But these data aren't enough so we tried to restore also:
- address list by calling zb_address_update()
- neighbor table by calling zb_nwk_neighbor_get() and setting all the parameters
- routing table by writing directly routing_table and routing_table_cnt inside NIB table obtained through ZB_NIB()
- one encryption key that was read before erasing Zigbee flash area
None of these helped in solving the issue.
Best regards
Laura Manzo