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

    As you can see from the nRFConnect log there is a PAIRING_REQUEST from the nRF before and after the service discovery, as it's not able to pair before the services have been discovered it seems. Please try to wait for service discovery before starting pairing instead of the other way around.

    The support we have for mobile application development is rather limited I'm afraid, as our expertise/focus lies with our products and are not experts on Android development. 

    Best regards,

    Simon

Reply
  • Hi

    As you can see from the nRFConnect log there is a PAIRING_REQUEST from the nRF before and after the service discovery, as it's not able to pair before the services have been discovered it seems. Please try to wait for service discovery before starting pairing instead of the other way around.

    The support we have for mobile application development is rather limited I'm afraid, as our expertise/focus lies with our products and are not experts on Android development. 

    Best regards,

    Simon

Children
Related