你好,
我们的应用程序基于ble_app_all_in_one,在DA14580DEVKT-P_VC上开发期间一切正常(PC、Android、iOS设备、USER_CFG_FEAT_secu REQ设置为GAP_SEC1_secu PAIR_ENC或GAP_SEC1_AUTH_PAIR_ENC),但在现有板上部署时配对停止工作。
如果USER\u CFG\u FEAT\u SEC\u REQ设置为GAP\u SEC1\u AUTH\u PAIR\u ENC,则配对失败:
>身份验证失败,状态为BLE\u GAP\u SEC\u status\u CONFIRM\u VALUE
如果USER\u CFG\u FEAT\u SEC\u REQ设置为GAP\u SEC1\u SEC\u PAIR\u ENC,则配对失败:
>身份验证失败,状态为BLE\U GAP\U SEC\U status\U DHKEY\U FAILURE
在许多DA14585\ U WLCSP34和DA14585\ U QFN40数据板的帮助下,我们找到了原因:使用相同的FW和SmartSnippets工具箱引导程序,我们发现所有具有OTP编程失败配对过程的数据板,以及所有具有空OTP的数据板都成功配对。
哪个OTP字段/值导致了这种情况,解决方法是什么?我们无法调试它,因为。。。好。。OTP,除非我们有100块涂抹板可以用暴力。
谢谢您,
博然
设备:
你好bojanpotocnik,
谢谢你的在线提问。请阅读OTP标题,您将看到没有任何与安全相关的文件。这种行为与OTP无关。有没有可能使用BLE嗅探器并共享一个日志文件,这样我们就可以了解空中发生了什么?
谢谢,下午好
原来这不是检察官办公室的直接过错。
如评论中所述在这个C代码片段中,如果未编程OTP,则将使用CFG\u NVDS\u TAG\u BD\u ADDRESS获取BD ADDRESS值。碰巧CFG\u NVDS\u TAG\u BD\u ADDRESS的值与我们测试的BD ADDRESS相同,所以它实际上从未更改过。
当我们开始实际设置实际的BD地址时,CFG\u NVDS\u TAG\u BD\u ADDRESS的值不正确,并且在运行时更改了地址-导致配对失败,如另一个问题中所述-更改设备BD地址后配对失败. 所以当FW在没有编程的OTP的生产设备上运行时,BD地址是通过命令设置的,导致配对失败。但当在编程了OTP的涂抹板上进行测试时,OTP中的地址与我们的测试地址不同(与CFG\U NVDS\U TAG\U BD\U address相同),再次触发地址更改(将其更改为我们的测试地址)-配对失败。
将CFG\u NVDS\u TAG\u BD\u ADDRESS设置为所有0没有帮助(co\u null\u bdaddr),行为是相同的。如果nvds\u get\u func更改为返回nvds\u FAIL,则在ROM中应用默认对话框BT地址(a8:89:67:45:…)。
你好,博扬,
我们已经把这个从论坛脱机-一封电子邮件已发送到您的注册地址。
谢谢,下午好