This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BLE Bonding bug

Other Parts Discussed in Thread: CC2650STK, CC2650

Hello, we are have a bug using BONDING on the android smartphone.

1. If on Android smartphone start Bonding process and input incorrect pin code-> showing Error PIN (device is not bonded), BUT if repeat bonding process right away, BLE device added to bonding devices on smartphone. BLE showing as bonded device, but in fact is not bonded (because pincode-incorrect) .

All transaction with a false bonded devices prohibited. If restart bluetooth module on the smartphone-> faulse bonded device disappears from the list.

2. If on Android smartphone start Bonding process and input incorrect pin code-> showing Error PIN (device is not bonded), if wait approximetely 5-10 s and repeat bonding process, BLE device added to bonding devices on smartphone. BLE showing as bonded device, and good working with smartphone.
If restart bluetooth module on the smartphone-> successfully bonded device stay in a device bonded  list.


We are testing on the LG K10, Xiomi 3S, Nexus 5 and have this trouble. 

We are using CC2650STK Peripherial mode, Bonding, OSAL_SNV=2

If run 

  • Hello. If I'm understanding this correctly, the Android phone is incorrectly adding devices to the bonded list even though bonding is not occurring.  What is happening from the CC2650's perspective? Does it believe that it is bonded?  I would recommend posting a sniffer capture of this to clear it up.

    If the problem is simply the phone adding the device when a pair / bond does not occur, you'll need to post this to an Android forum. If the CC2650 is doing something incorrectly, we can debug it here.

  • Hello, Tim, thanks for your answer. I printf bonding log CC2650STK to terminal and showing here:

    Start Bonding

    RESULT: pairing state 0, status: 0 - GAPBOND_PAIRING_STATE_STARTED: SUCCESS

    Input incorrect PIN

    RESULT: pairing state 1, status: 4 - GAPBOND_PAIRING_STATE_COMPLETE:  SMP_PAIRING_FAILED_CONFIRM_VALUE (0x04): the confirm value does not match the calculated compare value

    We received error 0x04 from BondManager, but CC2650STK was added to bonded list on  the phone, that is possible sensortag think that his not bonded, BUT smartphone think that BOND process complette successfull (because added CC2650STK to own bond list).

    if we are  restarting bluetooth of smartphone-> CC2650STK disappear from BOND list.

  • BondMAnager config:
    uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;
    uint8_t mitm = TRUE;
    uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
    uint8_t bonding = TRUE;
  • We are found what is happen:

    M - Client (Smartphone), S - Server (CC2650STK Peripherial mode)

    1. The first connect: CC2650 send to client: SM_Security_Req (S->M)

    2. M->S SM_Pairing_Req

    3. S->M SM_Pairing_Rsp (CC2650 move to pairing mode)

    The now if we are input incorrect pin code: M->S will send SM_Pairing_Failed, but CC2650STK will staying in connect-pairing mode approximetely 5-10 s. And if we are reconnect to BLE device in this time, CC2650 not send to Smartphone SM_Security_Req. And Smartphone will thinking that pairing is success and add CC260 to BondList.

    We are resolving this problem with reconnect on server (CC2650) side. 

    Thanks to all.