SMP Pairing Failed message is not sent from Peripheral to Central in Numeric Comparison Bonding

Hello Everyone. I tried to run the ble_app_multirole_lesc example on SDK 16.0.0 to test the numeric comparison match feature on bonding. And found that the handling of this feature shall follow the same sequence diagram illustrated in this link: infocenter.nordicsemi.com/index.jsp I noticed that the SMP Pairing Failed message is not sent from the peripheral to central if we rejected the pairing from the peripheral device only and no action is taken from the central side. Attached our sniffing sessions.

Multirole LESC Reject Pairing Peripheral_SD_7_2_0.pcapng

Parents
  • I noticed that the peripheral initiates a disconnection in case of the bonding failed in the BLE_GAP_EVT_AUTH_STATUS event if the error code doesn't equal to BLE_GAP_SEC_STATUS_SUCCESS. I commented this action and noticed that the central initiates the disconnection due to BLE operation timeout. So why the SMP Pairing failed message is not propagated by the soft device to the master? Note: I tried the same example with both soft device hex files with version 7.0.1 and SD 7.2.0 and the same behavior occurred. Attached the Sniffing Session after removing the peripheral side disconnection on Auth Status Failure.

    LESC_CANCEL_PER_DISCON_SD_7_2_0.pcapng

  • Hi!
    ref the message sequence charts you linked to:

    Are you calling sd_ble_gap_auth_key_reply(BLE_GAP_AUTH_KEY_NONE,NULL) ?

  • Hi!

    I tried pressing button 2 to reject the bonding. Using SDk 17.1.0

    I see Numeric Comparison Failed sent from slave to master. And then Slave disconnects.

    PS: If you are starting a new project, I recommend using nRF Connect SDK instead.

  • This reply was deleted.
  • I tried the same example on both SDK 16.0.0 and 17.1.0, After Making it work as per this ticket [(+) BLE Multirole LESC Example Doesn't work on SDK 17.1.0 - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)]. And it seems that the SMP Pairing Rejected Message is not sent over the air in both examples. Attached The Logs, Sniffing Session for the example behavior

    8726.LESC SDK 17.1.0 Native Example.pcapng

    [2024-02-18 17:02:38.259] <info> app_timer: RTC: initialized.
    [2024-02-18 17:02:38.262] <info> app: LE Secure Connections example started.
    [2024-02-18 17:02:38.267] <info> app: Scanning
    [2024-02-18 17:02:38.272] <info> app: Advertising
    [2024-02-18 17:02:53.436] <info> app: PERIPHERAL: Connected, handle 1.
    [2024-02-18 17:02:53.496] <info> app: PERIPHERAL: BLE_GAP_EVT_SEC_PARAMS_REQUEST
    [2024-02-18 17:02:53.755] <info> app: PERIPHERAL: BLE_GAP_EVT_LESC_DHKEY_REQUEST
    [2024-02-18 17:02:53.763] <info> nrf_ble_lesc: Calling sd_ble_gap_lesc_dhkey_reply on conn_handle: 1
    [2024-02-18 17:02:54.128] <info> app: PERIPHERAL: BLE_GAP_EVT_PASSKEY_DISPLAY: passkey=472085 match_req=1
    [2024-02-18 17:02:54.134] <info> app: Press Button 1 to confirm, Button 2 to reject
    [2024-02-18 17:02:57.451] <info> app: Numeric REJECT. Conn handle: 1
    [2024-02-18 17:03:24.146] <info> peer_manager_handler: Connection security failed: role: Peripheral, conn_handle: 0x1, procedure: Bonding, error: 1
    [2024-02-18 17:03:24.157] <warning> peer_manager_handler: Disconnecting conn_handle 1.
    [2024-02-18 17:03:24.162] <info> app: PERIPHERAL: BLE_GAP_EVT_AUTH_STATUS: status=0x1 bond=0x0 lv4: 0 kdist_own:0x0 kdist_peer:0x0
    [2024-02-18 17:03:24.187] <info> app: PERIPHERAL: Disconnected, handle 1, reason 0x16.
    

  • Hi!

    When I'm testing this with a nRF52840-DK, nRF5 SDK v17.1.0 , S140 v7.2.0, ble_app_multirole_lesc example, I'm getting the Pairing Failed:

    On the Phone side, I'm using nRF connect for mobile app.

    I start the pairing from the phone, then reject with the button 2 on the DK, and when I see the numeric number on the phone side, I press connect on the phone.

  • The issue will appear when you are not taking any action on the phone. And reject the bonding on the DK only

Reply Children
Related