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

(MESH)Add more relaying node in mesh network, There is a great probability of failure in communication.

Board: custom board; Mesh SDK: V1.0.0; Softdevice: S132_5.0.0; IDE: SEGGER Embedded; BLE: nrf52832

When I test the example “Interactive PyACI”, I need one node(A) send message to  another node(B) by relay node(C、D、E).

And for solving the limit of server device quantity, I change this define "#define DSM_DEVICE_MAX   (10)" in nrf_mesh_config_app.h.

1.One relay node(A-->C-->B): the rate of packet loss is 4%.

2.Two relay node(A-->C-->D-->B): the rate of packet loss is 8%.

3.Three relay node(A-->C-->D-->E-->B): the rate of packet loss is 52%.

//Node A is in range of node C, node C is in range of node D, node D is in range of node E, node E is in range of node B, but node B is not in range of node A.

so, the rate of packet loss has a precipitous decline,i think that is unnomrol.

Is there any place to change for add more devices in mesh network?

And  when adding three relay node between node A and B, There is a great probability of failure in relay node, for making they relay the message countine we must reboot the relay node.

  • Hello Beike,

    Did you try to play with network and relay retransmission parameters? Also what TTL are you using?

  • /** Device company identifier. */
    #define DEVICE_COMPANY_ID (ACCESS_COMPANY_ID_NONE)
    
    /** Device product identifier*/
    #define DEVICE_PRODUCT_ID (0x0000)
    
    /** Device version identifier */
    #define DEVICE_VERSION_ID (0x0000)
    
    /** Supported features of the device. @see config_feature_bit_t */
    #define DEVICE_FEATURES (CONFIG_FEATURE_RELAY_BIT)
    
    /** @} end of DEVICE_CONFIG */
    
    /**
     * @defgroup APP_ACCESS_CONFIG Access layer configuration
     * @{
     */
    
    /**
     * The default TTL value for the node.
     */
    #define ACCESS_DEFAULT_TTL (4)
    
    /**
     * The number of models in the application.
     *
     * @note This value has to be greater than one to fit the configuration model plus the number of
     * models needed by the application.
     */
    #define ACCESS_MODEL_COUNT (1)
    
    /**
     * The number of elements in the application.
     *
     * @info This value has to be greater than two to fit the configuration and health models,
     * plus the number of models needed by the application.
     *
     * @warning If the application is to support multiple _instances_ of the _same_ model, they cannot
     * belong in the same element and a separate element is needed for the new instance.
     */
    #define ACCESS_ELEMENT_COUNT (2)
    
    /**
     * The number of allocated subscription lists for the application.
     *
     * @note The application should set this number to @ref ACCESS_MODEL_COUNT minus the number of
     * models operating on shared states.
     */
    #define ACCESS_SUBSCRIPTION_LIST_COUNT (ACCESS_MODEL_COUNT)
    
    /**
     * The number of pages of flash storage reserved for the access layer for persistent data storage.
     */
    #define ACCESS_FLASH_PAGE_COUNT (1)
    
    /**
     * @defgroup ACCESS_RELIABLE_CONFIG Access reliable transfer configuration
     * @{
     */
    
    /** Number of allowed parallel transfers (size of internal context pool). */
    #define ACCESS_RELIABLE_TRANSFER_COUNT (ACCESS_MODEL_COUNT)
    
    /** @} end of ACCESS_RELIABLE_CONFIG */
    
    
    /** @} end of ACCESS_CONFIG */
    
    
    /**
     * @defgroup DSM_CONFIG Device State Manager configuration
     * Sizes for the internal storage of the Device State Manager.
     * @{
     */
    /** Maximum number of subnetworks. */
    #define DSM_SUBNET_MAX                                  (4)
    /** Maximum number of applications */
    #define DSM_APP_MAX                                     (8)
    /** Maximum number of device keys */
    #define DSM_DEVICE_MAX                                  (10)
    /** Maximum number of virtual addresses. */
    #define DSM_VIRTUAL_ADDR_MAX                            (8)
    /** Maximum number of non-virtual addresses. */
    #define DSM_NONVIRTUAL_ADDR_MAX                         (16)
    /** Number of flash pages reserved for the DSM storage */
    #define DSM_FLASH_PAGE_COUNT                            (1)
    /** @} end of DSM_CONFIG */
    

    This is my nrf_mesh_config_app.h , and if I want to add 6 nodes in a subnet, how can I modify the configuration.

  • Hi,

    It seems that it might be some poor link-quality. It is hard to say what is causing this issue, but do you have big distances between the nodes? The first scenario:

    1.One relay node(A-->C-->B): the rate of packet loss is 4%.

    seems to be the same as what we see, but something weird is happening between the second and third scenario. There is no reason for this to happen in the mesh code. See that the TTL-value is high enough in your packet, and that your nodes aren' too far apart. The mesh is more vulnerable for noise, since the packets are ACK-ed on end-to-end basis instead of per link

Related