你好,
我们的应用程序基于ble_app_all_in_one,在DA14580DEVKT-P_VC上开发期间,一切都工作得很好(PC, Android, iOS设备,USER_CFG_FEAT_SEC_REQ设置为GAP_SEC1_SEC_PAIR_ENC或GAP_SEC1_AUTH_PAIR_ENC),但配对部署在现有板上时停止工作。
如果USER_CFG_FEAT_SEC_REQ设置为GAP_SEC1_AUTH_PAIR_ENC,配对失败:
>认证失败,状态为BLE_GAP_SEC_STATUS_CONFIRM_VALUE
如果USER_CFG_FEAT_SEC_REQ设置为GAP_SEC1_SEC_PAIR_ENC,配对失败:
>认证失败,状态为BLE_GAP_SEC_STATUS_DHKEY_FAILURE
在DA14585_WLCSP34和DA14585_QFN40子板的帮助下,我们找到了原因:使用相同的FW和SmartSnippets工具箱- Booter,我们发现所有带OTP编程的子板都失败配对过程,所有带空OTP的子板都成功配对。
哪个OTP字段/值导致了这种情况,解决方案是什么?我们无法调试,因为…嗯. .OTP,除非我们有100个母板来使用暴力。
谢谢你!
Bojan
设备:
嗨bojanpotocnik,
谢谢你的在线问题。请阅读OTP报头,您将看到没有任何与安全相关的文件。这种行为与OTP无关。是否有可能使用BLE嗅探器并共享日志文件,以便我们能够了解在空中发生的事情?
谢谢,PM_Dialog
事实证明,这不是OTP的直接过错。
如在评论中所写在c代码片段中,如果OTP未编程,则使用CFG_NVDS_TAG_BD_ADDRESS获取BD地址值。碰巧CFG_NVDS_TAG_BD_ADDRESS的值与我们的测试BD地址相同,因此它实际上从未更改。
当我们开始实际设置实际的BD地址时,CFG_NVDS_TAG_BD_ADDRESS的值不正确,并且在运行时更改了地址—导致配对失败,如单独的问题—所述修改设备BD地址后配对失败.所以在未编程OTP的生产设备上运行FW时,通过命令设置了BD地址,导致配对失败。但是,当在编程了OTP的主板上测试时——OTP中的地址与我们的测试地址不同(与CFG_NVDS_TAG_BD_ADDRESS相同),再次触发地址更改(将其更改为我们的测试地址)——配对失败。
将CFG_NVDS_TAG_BD_ADDRESS设置为所有0 (co_null_bdaddr)没有帮助,行为是相同的。如果将nvds_get_func改为返回NVDS_FAIL,则默认的对话框BT地址应用于ROM (a8:89:67:45:…)。
嗨Bojan,
我们已经把这个从论坛离线-一个电子邮件已经发送到您的注册地址。
谢谢,PM_Dialog