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

Problems with coexisting examples for mesh (nRF52832, iOS, nRF mesh)

Hi DevZone,

I have problems with running the coexistence examples from the Mesh SDK. Specifically I’m most interested in the UART coexistence example (https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.meshsdk.v3.1.0/md_examples_sdk_coexist_ble_app_uart_coexist_README.html). I have been following the example from point to point.

The code has been successfully programmed to the development boards, nRF52832 DK, with SoftDevice S132. One Client and one Server.

I’m not able to provisionee the network. I’m using the nRF Mesh but the client does not appear in the application, the server is able to be provisioned.

I’m using iOS 11.4.1 on a Iphone 5S (A1457).

nRF Mesh app: 1.0.4, Build 12

nRF5 SDK. 15.2.0

Mesh SDK: 3.1.0

IDE: SEGGER 4.12

I’m clueless to why im not able to provision the network. I have seen a similar problem (https://devzone.nordicsemi.com/f/nordic-q-a/42452/coexist-s132-on-mesh-with-s140), but it does not seem resolved.

Thank you in advance.

Best regards,

Michael

Parents
  • Hi,

    As you have already mentioned, the device must support PB-GATT for getting provisioned from the smartphone app.

    Adding PB-GATT to the coexistence examples requires a bit of work, since then both the mesh stack and the BLE stack needs to set up GATT services. You may also get some conflicts with advertising, as both the mesh stack and the BLE application would want to advertise for incoming connections. Furthermore, the GATT service exposed by PB-GATT shall be removed from the GATT table when the device has been successfully provisioned, as mandated by Bluetooth mesh specification. That requires a reset of the device and re-initialization of the SoftDevice, as the SoftDevice does not allow for services to be removed. See the note under Detailed Description on Provisioning over GATT Bearer (PB-GATT).

    The above means in order to support PB-GATT, the most practical way to do so is to let the device enter one of two states, depending on whether it is provisioned into a network or not.

    On startup, if the device is not part of a mesh network, it should initialize provisioning over GATT Bearer, but not initialize the other (normal) BLE services. That way, the mesh stack can be used to provision the device. Once provisioned, the device should reset.

    On startup, if the device is part of a mesh network, it should not initialize provisioning over GATT Bearer, and instead initialize the other (normal) BLE services.

    An alternative to using the smartphone application (which requires PB-GATT), is to use the Interactive PyACI library, see interactive mesh provisioning and configuration. With that one you can still use PB-ADV (no need to change the coexistence example), but you will no longer have a GUI for doing the provisioning.

    In the end it is up to you to decide which way to go and what approach to use.

    Regards,
    Terje

  • Hi Terje,

    Thank you for your answer.

    I'm to initialize over the GATT Bearer and provision the node. However i'm not sure on how to reset the device the best way. Is it with SystemReset? And i'm unsure where the provisioning is checked - in the mesh initialization? If i should detect if the device have been provisioned when initailizing the device then i have to init the BLE service in order to run the mesh init (where i'm able to check the provision). After that i need to setup the normal BLE services. I'm unsure if im going down a wrong path here.

    Thanks,
    Michael

Reply
  • Hi Terje,

    Thank you for your answer.

    I'm to initialize over the GATT Bearer and provision the node. However i'm not sure on how to reset the device the best way. Is it with SystemReset? And i'm unsure where the provisioning is checked - in the mesh initialization? If i should detect if the device have been provisioned when initailizing the device then i have to init the BLE service in order to run the mesh init (where i'm able to check the provision). After that i need to setup the normal BLE services. I'm unsure if im going down a wrong path here.

    Thanks,
    Michael

Children
No Data
Related