我有两个版本的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
嗨,维克多,
刚从团队那里得到答复。在SDK3.0.10中做了许多改进。请参阅SDK3.0.10的发布说明,以获得关于SDK3.0.10改进的更多信息。我假设SDK3.0.10运行时(FW版本2)不存在配对问题。
谢谢,PM_Dialog
在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