iPhone 7与SDK v3.0.8.0配对失败

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
5个职位/ 0个新职位
最后发表
这次访问
离线
最后看到:1年8个月前
加入:2016-10-20 06:53
iPhone 7与SDK v3.0.8.0配对失败

我有两个版本的FW在一个老产品。版本1运行SDK v3.0.8.0和版本2运行SDK v3.0.10.0。

当我尝试与运行iOS v13.3的iPhone配对版本1时,iPhone发送了一个安全连接配对请求,即使我们的FW运行的是BLE v4.0。导致FW响应配对失败,reason参数无效。

它适用于老款iphone,因为它们不支持安全连接,也适用于所有android,因为它们在与运行旧BLE版本的设备通信时不会设置安全连接标志。

这两个SDK版本之间是否有一个可以解决这个问题的修复?我们仍然有成千上万的单位运行旧FW,所以我们希望了解为什么在旧版本的配对失败。

我们联系了苹果的技术支持,得到了这样的回应

5s和更新的设备之间的区别是更新的设备支持BLE 4.2安全连接。您表示您的设备使用的是BLE 4.0硬件。

这可能是由于设备端配置错误造成的。

在尝试与SC设备配对时,在较旧的固件上有一个典型的问题。

产生这个问题的原因是,如果您的外设基于配对请求中的某些保留位(根据BLE Spec 4.0)总是为零的假设来计算配对键。

新款iphone使用了新的LE Secure Connections配对模型,配对请求中将SC位设置为1。

不支持SC的外围设备可以忽略这个请求并选择使用遗留的配对模型,但是它在创建密钥时不能忽略比特,并且必须使用接收到的数据来计算它们。

外设应该完全按照接收到的配对请求来计算密钥,否则当iOS发送配对请求时,这些位(在本例中是SC位)设置为1时,密钥将是错误的。

所以,一定要检查你的固件,以确保任何保留(和未使用)位不是假设为零,并从iOS端接收时使用。

设备:
PM_Dialog
离线
最后看到:9小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨,维克多,

嗨,维克多,

谢谢你的问题。我们已经离线处理了你的问题,我们正在内部处理。一旦我有了你的问题的答案,我会告诉你的。

问候,PM_Dialog

PM_Dialog
离线
最后看到:9小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨,维克多,

嗨,维克多,

刚从团队那里得到答复。在SDK3.0.10中做了许多改进。请参阅SDK3.0.10的发布说明,以获得关于SDK3.0.10改进的更多信息。我假设SDK3.0.10运行时(FW版本2)不存在配对问题。

谢谢,PM_Dialog

这次访问
离线
最后看到:1年8个月前
加入:2016-10-20 06:53
只有配对相关的注意事项

在3.0.10.0的发布说明中,只有配对相关的说明在我们使用的芯片DA14580的补丁之下
安全经理的问题

配对PDU中预留bitschcheck导致PTS测试TC_BV_04_C失败。补丁函数:smpc_send_pairing_req_ind(),smpc_check_pairing_feat(), smpc_pairing_cfm_handler()。当passkey输入过程超时后接收到smpc_pairing_cfm_cfm_handler()补丁时,更新smpc_pairing_cfm_handler()补丁以修复硬故障。

但我不觉得有什么不好。它保持活动,但发送配对失败的消息。

PM_Dialog
离线
最后看到:9小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨,维克多,

嗨,维克多,

我们会让它下线,我会用你的注册邮箱给你发邮件。

谢谢,PM_Dialog