我有两个版本的固件在一个老产品。运行SDK v3.0.8.0的版本1和运行SDK v3.0.10.0的版本2。
当我尝试与运行iosv13.3的iPhone版本1配对时,iPhone会发送一个带有安全连接的配对请求,即使我们的FW运行的是blev4.0。这会导致FW响应“配对失败”,原因是参数无效。
它适用于较旧的iphone,因为它们不支持安全连接,而所有android都不支持,因为它们在与运行这种旧版本的设备通信时不会设置安全连接标志。
两个SDK版本之间是否有修复程序可以修复此问题?我们仍然有成千上万的单位运行旧的固件,所以我们希望了解为什么配对失败,在旧版本。
我们联系了苹果的支持部门,得到了这个回复
5s和较新设备之间的区别在于较新设备支持BLE4.2安全连接。您指出您的设备正在使用BLE 4.0硬件。
这可能是由于设备端的错误配置造成的。
在尝试与SC设备配对时,旧固件上会出现一个典型的问题。
出现此问题的原因可能是您的外设在计算配对密钥时假设配对请求中的某些保留位(根据blespec4.0)始终为零。
较新的iphone使用了新的LE-Secure连接配对模式,并且在配对请求中将SC位设置为1。
不支持SC的外设可以忽略此请求并选择使用遗留配对模型,但在创建密钥时不能忽略位,必须使用接收到的数据来计算它们。
外设应该使用与接收到的完全相同的配对请求来计算密钥,否则当iOS发送配对请求时,这些位(在本例中是SC位)被设置为1,密钥将是错误的。
因此,请检查您的固件,以确保任何保留(和未使用的)位不被假定为零,并在从iOS端接收时按原样使用。
设备:
嗨,维克多,
谢谢你的问题。我们已将您的问题脱机,我们正在内部处理。一旦我对你的问题有了答案,我会让你知道的。
你好,下午好
嗨,维克多,
刚从团队得到答案。在SDK3.0.10中有许多改进。有关SDK3.0.10改进的更多信息,请参阅SDK3.0.10的发行说明。我假设在运行SDK3.0.10(FW版本2)时不存在配对问题。
谢谢,下午好
在3.0.10.0的发行说明中,只有与配对相关的说明在我们使用的芯片DA14580的rom补丁下
安全管理器问题
配对PDU导线至PTS测试TC\U BV\U 04\U C的预留位失败。已修补函数:smpc\u send\u pairing\u req\u ind()、smpc\u check\u pairing\u feat()、smpc\u pairing\u cfm\u handler()。更新了smpc\u pairing\u cfm\u handler()修补程序,以修复在密钥输入过程超时后收到smpc\u pairing\u cfm时的硬故障。
但我没有什么大毛病。它保持活动状态,但发送配对失败消息。
嗨,维克托,
我们将采取离线,我会给你发一封电子邮件在你的注册电子邮件地址。
谢谢,下午好