This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mesh seqnum reached maximum

Hi,

I am using sdk for mesh 1.0.0v and have been running some tests on the mesh network. I have been getting an error within the function net_state_seqnum_alloc(), which is preventing any further transmissions due the fact that m_net_state.seqnum < m_net_state.seqnum_max_availableis returning false and triggering the error NRF_ERROR_FORBIDDEN.

I am unsure what the seqnum and seqnum_max_available in the network_state_t are referring to.

What can be done rectify this problem without erasing the device and re-provisioning the mesh?

Thanks,

Richard

Parents
  • The sequence number is explained at section 2.3.9.4 in Mesh Profile v1.0

    According to the spec, IV index need to be updated to avoid the sequence number wrap around. We have implemented that in net_state_seqnum_alloc() in net_state.c. IV index is supposed to be updated.

    How long did it take you to see the issue ? To reach the maximum sequence number, it takes dozens of day to 1, 2 months. Do you see the problem if you disable flash (PERSISTENT_STORAGE = 0) ?

    I would suggest to change the NETWORK_SEQNUM_MAX to something smaller and run the test again and check if iv_update_trigger_if_pending() is called.

  • I'm finding that this issue isn't truly solved. I left my DK on for several weeks and when I returned to debug, I found that although the IV index had been incremented, the sequence number remained at the maximum. Each time my application called for sending a message, m_net_state.seqnum < m_net_state.seqnum_max_available evaluated as false, indicating that it never rolled over.

    Setup

    nRF52840-DK
    nRF5 SDK v16.0.0
    Mesh SDK v4.0.0
    S140 v7.0.0

Reply
  • I'm finding that this issue isn't truly solved. I left my DK on for several weeks and when I returned to debug, I found that although the IV index had been incremented, the sequence number remained at the maximum. Each time my application called for sending a message, m_net_state.seqnum < m_net_state.seqnum_max_available evaluated as false, indicating that it never rolled over.

    Setup

    nRF52840-DK
    nRF5 SDK v16.0.0
    Mesh SDK v4.0.0
    S140 v7.0.0

Children
Related