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

Android pairing pop-up appears twice

I would like to establish bonding between my device and an android phone.

My device is acting as both a central and peripheral.  It functions in peripheral role in relation to the phone.  The mobile app is developed only for Android for now.

Application firmware is developed against SDK 16.

I am using peer_manager.  I call pm_init and pm_sec_params_set with

memset( &sec_param, 0, sizeof( ble_gap_sec_params_t ) );

// Security parameters to be used for all security procedures.
sec_param.bond = 1;
sec_param.mitm = 0;
sec_param.lesc = 1;
sec_param.keypress = 0;
sec_param.io_caps = BLE_GAP_IO_CAPS_NONE;
sec_param.oob = 0;
sec_param.min_key_size = 7;
sec_param.max_key_size = 16;
sec_param.kdist_own.enc = 1;
sec_param.kdist_own.id = 1;
sec_param.kdist_peer.enc = 1;
sec_param.kdist_peer.id = 1;

In the ble event handler for BLE_GAP_EVT_CONNECTED, I call

ble_gap_evt_t const *p_gap_evt = &pEvt->evt.gap_evt;

 pm_conn_secure( p_gap_evt->conn_handle, false );

( I have also tested using pm_handler_secure_on_connection with PM_HANDLER_SEC_DELAY_MS set to 75 and 500 mS )

I am NOTcalling pm_conn_sec_prams_reply at all.

I am calling pm_conn_sec_config_reply with allow_repairing = false

The problem I'm encountering is that the pairing pop-up is appearing twice to the user.  Is there a way to change the connection sequence so this pop-up only occurs 1 time?

Parents
  • Hi again

    Is your custom application based on the nRFConnect app, or is it just by chance that they behave similar here? nRFConnect only initiates bonding upon user requests, and from the log you provided it seems like the device trying to initiate bonding right after connecting. You can try letting the app finish discovering services before calling the pairing request, as it seems to be interrupted by service discovery in the nRFConnect log you uploaded.

    Best regards,

    Simon

  • I'm not sure about the source code lineage of the mobile app, its been developed by an 3rd party / outsourced dev team.  I do know it includes Nordic's library for DFU, so perhaps that is causing the bonding behavior.

    Is there an event which would indicate service discovery has completed?    I can wait until my devices discovery of the central phone services has completed (device includes a current time service client) but I'm not clear how I would know the phone has completed its discovery.

Reply
  • I'm not sure about the source code lineage of the mobile app, its been developed by an 3rd party / outsourced dev team.  I do know it includes Nordic's library for DFU, so perhaps that is causing the bonding behavior.

    Is there an event which would indicate service discovery has completed?    I can wait until my devices discovery of the central phone services has completed (device includes a current time service client) but I'm not clear how I would know the phone has completed its discovery.

Children
No Data
Related