Remote provisioning of Dimming Server Example

Hi there.

Setup:

NRF SDK 17.1.0, MESH SDK 5.0.0, Segger Studio

DK1 PCA10056 pb_remote_client (for starting the remote provisioning)

DK2 PCA10056 Dimming Server example running, added parts from pb_remote_server for remote provisioning.

Issue:

DK 1 works as expected, wait for beacon, start provisioning

Log:

<t:   11576009>, main.c,  175, Local provisioning link established
<t:   11577812>, main.c,  219, Using static authentication
<t:   11591144>, main.c,  229, Static authentication data provided
<t:   11737090>, main.c,  184, Provisioned device addr: 0x1347 net_key_handle: 0
<t:   11737093>, main.c,  186, Dev Key: 9B749E470FDA945657016CD32BD0D229
<t:   11737103>, main.c,  194, Provisioning complete! Added 0x1347 as handle 1
<t:   11743125>, main.c,  179, Local provisioning link closed

but on DK2

Log:

<t:      18835>, app_level.c,  295, SET: Level: 0  delay: 0  tt: 0  req-delta: 0  trans-type: 0
<t:      18840>, main.c,  773, Transition time: 0, Target level: 0, Transition type: 0
<t:      18844>, app_level.c,  239, Transition completed: Present-L: 0  Target-L: 0
<t:      88095>, main.c, 1405, Mesh device identification started.
<t:     184843>, app_error_weak.c,  115, Mesh error 7 at 0x00000000 (:0)

To pin down the Mesh error 7 seems to come from the SD140 while changing the state from "device identification started cb" to "Provisioning completed"

Question:

pb_remote server model should be running byside of app level and scene server.

According to the Communication handshaking provisioning should be confimed by the server.

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.meshsdk.v5.0.0%2Fmd_doc_user_guide_modules_provisioning_pb_remote.html

How has the PB Remote Server to be integrated in the service model(s) on the Mesh side?

  • Thank you!

    Got some feedback from our developers that it might be related to "dsm_appkey_add". Maybe you could try to increase DSM_APP_MAX and see if there is any improvement?

    Br,
    Joakim

  • Hi Joakim

    thanks for the advise, i changed DSM_APP_MAX (8) to DSM_APP_MAX(10),  clear MCU, Clean and Rebuild Project. it did not help.

    Still <t:    3345838>, app_error_weak.c,  115, Mesh error 7 at 0x00000000 (:0)

    On the server i set a breakpoint on dsm_appkey_add() and this point will not be passed till the fault.

    According the graphic of the regular Provisioning the Fault comes inbetween Prov Complete and Link closed.

    Viewed from the client side.

    Provisioning Flowchart

    on the Server side i can't find the NRF_MESH_EVT_PROV_COMPLETE, what i found in prov_utils.c is

            /* NRF_MESH_PROV_STATE_WAIT_COMPLETE          */ PROV_PDU_TYPE_COMPLETE       | PDU_VALID_PROVISIONER,
            /* NRF_MESH_PROV_STATE_COMPLETE               */ PROV_PDU_TYPE_INVALID,

    and PROV_PDU_TYPE_COMPLETE is only used in the provisioning.c

    uint32_t prov_tx_complete(prov_bearer_t * p_bearer)
    {
        prov_pdu_complete_t pdu;
        pdu.pdu_type = PROV_PDU_TYPE_COMPLETE;
        return send_data(p_bearer, (const uint8_t *) &pdu, sizeof(prov_pdu_complete_t));
    }

    Still after reboot the device is provisioned and response on the PB Remote client as expected.

    is there a mecanisme for a forced reboot if an error like this occured?

  • Hi Joakim

    I discovered when the Error occurs,

    When calling

    p_ctx->event_handler(&app_event);

    I can work arround this error with a breakpoint at:

    prov_provisinee.c

            case NRF_MESH_PROV_STATE_WAIT_DATA:
                 __LOG(LOG_SRC_PROV, LOG_LEVEL_INFO, "NRF_MESH_PROV_STATE_WAIT_DATA\n");
                complete_provisioning(p_ctx);// Set breakpoint here and release it as soon it stops
                p_ctx->state = NRF_MESH_PROV_STATE_COMPLETE;
                break;

    Is there a runtime condition or what is happening?

    kind regards

    Simon

  • Thanks for the update.

    Had a talk with our developers, who tried the pb_remote example with your configuration and didn't get the same error.

    Suggestion from our Mesh team:
    Put a breakpoint before:
    https://github.com/NordicSemiconductor/nRF5-SDK-for-Mesh/blob/a165eece1b743bc68ef396bf03ba389a0bac6f11/examples/common/src/app_error_weak.c#L115-L119
    and print stack trace. That way we can get a better idea of what is causing the error.

    Br,
    Joakim

  • Hello Joakim

    below the Print from the call Stack(i supose that is what you are looking for)

    Call Stack bevore mesh error 7

    in the meantime i discovered the source of the error.

    while

    #define MESH_FEATURE_GATT_PROXY_ENABLED                 (1)  // this should be turned off when remote provisioning

    was true there could be a conflict.

    With disabling the Gatt Proxy the error dissapears, the value of DSM_APP_MAX(8) should be DSM_APP_MAX(10) for my case, otherwise i get an mesh error 5 at the same point.

Related