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

Provisioning from Android Device fails

Hi,

Setup details : am using Segger Embedded Studio V:4.50 and NRF52832 custom boards for development

Mesh SDK: v 4.0.0     &  BLE SDK: v 16.0.0

Query : I am using light_switch_client and light_switch_server codes in 2 nodes respectively and sending different strings from server to client over ble.

When I provision these nodes using iPhone all works fine.But when I provision these nodes using android device strings doesn't get sent properly from server to client.

This is happening in case of all android mobiles but it works as expected with iOS.

Please help me out to reslove this issue.

Parents
  • Hi,

    Do you get any error messages?

    You write that the strings don't "get sent properly". With that, do you mean that they do not get sent at all, or that only some strings gets sent, or some other behavior? Please elaborate.

    Are you able to reproduce the same behavior with nRF52832 DKs as well, not only on your custom hardware?

    What versions of nRF Mesh app are you using?

    Regards,
    Terje

Reply
  • Hi,

    Do you get any error messages?

    You write that the strings don't "get sent properly". With that, do you mean that they do not get sent at all, or that only some strings gets sent, or some other behavior? Please elaborate.

    Are you able to reproduce the same behavior with nRF52832 DKs as well, not only on your custom hardware?

    What versions of nRF Mesh app are you using?

    Regards,
    Terje

Children
  • Hi tesc,

    1.strings which are meant to be sent once are getting sent twice 

    2.yes. Showing same behaviour on DK as well 

    3. Android version : tried on 2.4.3, 2.4.2, 2.4.1 ( not working using any of it )

    iOS version : 2.2.3 (working with this )

  • Hi,

    Bluetooth mesh models are usually designed so that messages are "idempotent". What it means, is that the number of times that a message arrive do not change the outcome (as long as it is received at least once.) For instance the "on" message, or the "off" message, is idempotent. On the other hand, if you have a "toggle" message, and send it two times, the resulting state can  be either "on" or "off" depending on how many times the receiving node got the message.

    When you get the same message multiple times, it does not matter if it is an "on" message. But if for instance you are sending a long stream of characters in several strings, then it does matter if some of those strings are received multiple times.

    There are several settings in Bluetooth mesh for resending messages. Most of those are part of the transport layers, where repetitions are automatically discarded. However, there is one possible additional setting for repeating messages, which is to repeat from the application level. We use this in the light switch client example in nRF5 SDK for Mesh, where in main.c we define APP_UNACK_MSG_REPEAT_COUNT to 2, which is used for sending unacknowledged messages twice when pressing button 4 in that example. There, two messages are sent with the same contents, and they will be treated as two unique messages throughout the mesh network. May it be that you use either a copy of that code, or something similar, in your application?

    Regards,
    Terje

Related