btframework 如何与加密配对和绑定(蓝牙 LE 菜鸟问题)

Posted

技术标签:

【中文标题】btframework 如何与加密配对和绑定(蓝牙 LE 菜鸟问题)【英文标题】:btframework how to pair & bond with encryption (Bluetooth LE noob question) 【发布时间】:2020-08-31 14:57:21 【问题描述】:

我在尝试使用 btframework (www.btframework.com) 配对和绑定蓝牙 LE 设备时遇到问题,特别是 Nonin Wristox 3150 BLE

设备状态的文档...

3150 BLE 使用 Just Works 结合支持的配对方法。配对成功后,采集器应启动绑定,3150 BLE 将保存与采集器关联的长期绑定密钥。 3150 BLE 需要 要绑定的收集器以加密连接。粘合完成后,收集器应 加密连接。

我正在努力弄清楚我应该做些什么来建立联系。实际上,我已经设法将其连接一次,这就是我完成所有开发的方式,但是当我再次尝试时,我所做的似乎并没有奏效。使用 BTFramework 演示应用程序,他们的“GattClient” - 我可以发现我的设备没有问题,但是当我点击“连接”时,它连接到设备,错误代码为 0(表示成功),但设备在一秒钟后断开连接.我猜这是因为我还没有完成上述所有配对。

所以我使用了他们的“蓝牙管理器”来尝试配对。我将 MITM 设置为“ProtectionRequiredBonding”,IOCap 设置为“DisplayOnly”,BLE 保护设置为“Encryption”,然后单击“Pair”。

这实际上工作了一次 - 我已配对,然后我能够使用 GattClient 连接并获取服务、特征并查看特征变化。

但是我无法重复练习。当我使用 Windows 删除设备时,我回到了之前可以连接但被设备断开连接的状态,我再次尝试了上述操作。不过现在好像不行了。我现在尝试连接时通常会收到错误 0x005105C(找不到设备)。在窗口设置设备页面中,状态似乎在“已连接”和“已配对”之间随机变化,有时设备本身刚刚开始报告连接错误。 (该设备对导致错误的原因不是很清楚)。它总是报告配对本身是成功的

还有这个:

如果加密过程失败,很可能是收集器或 3150 BLE 已删除其绑定密钥。发生这种情况时,3150 BLE 将删除其绑定密钥(如果存在)。建议收集器也删除其绑定密钥(如果存在)。

这是我需要做的事情吗? btframework 是怎么做到的?

【问题讨论】:

【参考方案1】:

这似乎是因为您的设备具有随机 MAC,每次连接时都会发生变化。断开连接。

所以正确的顺序是:

    发现设备。 与之配对。 连接。 做你需要的。 断开连接。 取消配对(通过您的代码,而不是通过 Windows 设备管理器。) 如果需要再次连接,请转到第 1 步,以便使用新 MAC 找到设备。

如果您有任何问题,如果您通过电子邮件 (support@btframework.com) 与我们联系,可以更快地得到答复。

【讨论】:

你的库(btframework)是否支持windows 10上的“绑定” 是的,确实如此。事实上,Windows 平台仅支持绑定(使用链接密钥存储)。我的意思是 Windows 在配对过程中总是存储链接密钥。【参考方案2】:

只是为了跟进这件事,结果证明这是我的设备特有的一个怪癖。它只允许在放入电池后的前 2 分钟进行配对。如果我取出电池并重新装上,我可以与设备配对。

【讨论】:

以上是关于btframework 如何与加密配对和绑定(蓝牙 LE 菜鸟问题)的主要内容,如果未能解决你的问题,请参考以下文章

低功耗蓝牙配对绑定解读和实践

如何在 swift Xcode 中以编程方式绑定/配对蓝牙 LE 设备?

NRF51 使用设备管理器实现配对绑定(教程翻译)

如何查看安卓手机中已配对蓝牙设备信息

BLE在Android上没有绑定的配对

蓝牙配对请求连接