Legacy Pairing using OOB NFC

Hi everyone,

I am facing an issue when modifying the peripheral_nfc_pairing example.

Due to hardware limitations, my device cannot integrate an NFC antenna. Instead, I plan to use an external NFC tag attached to the device. When a phone (Central) taps the NFC tag, it should trigger the pairing process.

My idea is to fix some parameters (e.g., TK) in the OOB record and write them into the NFC tag. The goal is to achieve Legacy OOB Pairing with Security Level 3.

Currently, I am testing on an nRF5340 DK with NFC antenna (not yet using an external NFC tag), running nRF Connect SDK 2.9.1.
However, after applying my modifications, the pairing only results in Security Level 2.

My modifications:

  • I use a fixed tk_value instead of generating random TK.

  • Replaced all usage of tk_value with tk_value_fixed, including in the record payload.

  • In the OOB record payload, I did not provide le_sc_data, to enforce Legacy Pairing.

Observed results:

  • The connection only achieves Security Level 2, and it seems the OOB data is not used.

  • In the pairing_accept callback, the SC flag in auth_req is still set, and oob_data_flag = 0.

  • The auth_oob_request callback is never called.

Questions:

  • Am I misunderstanding the OOB mechanism, or am I going in the wrong direction?

  • Is the idea of using an NFC tag with fixed TK for Legacy OOB Pairing feasible?

Any ideas or suggestions would be greatly appreciated.
Thank you very much!

Related