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 stack configuration for OOB pairing

Other Parts Discussed in Thread: BLE-STACK, CC2541-Q1

this document refers to OOB pairing with NFC to be out of scope (for the document) - is there an update to it, which includes the correct configuration settings to allow for OOB pairing to occur without the PIN code being required on either side

 

  • Hi Josh,

    We do have a slightly updated version of this document ( for BLE v2.1.0), which you can find here: 

    The basic idea is that OOB must be enabled on both devices before pairing begins. The OOB data that is transferred is the temporary key (TK). The TK is a 128 bit value that is used as a seed to generate other values that are needed during the BLE pairing process.

    The above values must be set using GAPBondMgr_SetParameter

    • GAPBOND_MITM_PROTECTION = TRUE
    • GAPBOND_OOB_ENABLED = TRUE
    • GAPBOND_OOB_DATA = 128bit TK

  • Hi Sean,

    The link to the document does not work for me. Could you please confirm that document you point to is www.ti.com/.../swru393b.pdf

    Thank you very much. BR.

    José Antonio Martínez.
  • Hi Jose,

    The document you linked is the correct one.

  • In "e2e.ti.com/.../1651609" Oct 9, 2015 9:21 PM JXS notes that:

    Note that the BLE-Stack does support OOB Pairing.

    I need OOB for 4.2 BLE stack. Does the above also apply to to 4.2?

    Will
    GAPBOND_OOB_ENABLED = TRUE
    GAPBOND_OOB_DATA = 128bit TK
    suffice for OOB pairing on 4.2 stack?

    René
  • René,

    Yes, OOB pairing will be supported by BLEv2.2 stack and is currently supported by BLEv2.1.x stack.

    I believe JXS may have made this comment in error or was referring to the fact that the SDK examples do not provide out of the box support for this. However, all the necessary hooks/APIs are there to implement OOB pairing if the customer adds the proper hardware to exchange OOB data to their design.
  • Thanks Sean2.

    Does TI have some examples and/or guides on how to set this up - on both central and peripheral devices?

    I am currently implementing this but I  do not know how to use the API so it is guess work so far.

    (The OOB i/f is taken care of - we have a OOB link in one direction we want to utilize)

    BR

    - René

  • René,

    We don't have an out of the box example, we are working on them now. However, I detailed the steps required above. Really all the user must do is get the OOB data from the NFC device and pass it to the GAPBondMgr as described above.

    Feel free to post here with any issues that you encounter. We are happy to help.
  • Hi, Sean.

    I'm using CC2541-Q1 and BLE STACK v1.4.2.2. I change the code like this in the SimpleBLEPrepheral project:

      // Setup the GAP Bond Manager
      {
        uint32 passkey = 0; // passkey "000000"
        uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE;
        uint8 mitm = TRUE;
        uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
        uint8 bonding = TRUE;
        uint8 oob = TRUE;
        uint8 oobData[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
        GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
        GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
        GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
        GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
        GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );
        GAPBondMgr_SetParameter( GAPBOND_OOB_ENABLED, sizeof ( uint8 ), &oob );
        GAPBondMgr_SetParameter( GAPBOND_OOB_DATA, sizeof ( oobData ), oobData );
      }

    If I don't want the smart phone popup an input feild to input the passkey, and the OOB_KEY can be used for encrypting the communication at the same time, need I change the pair mode to wait for request? Need I change the io capability?