首页 > 解决方案 > 低功耗蓝牙配对与非配对通信

问题描述

据我了解,蓝牙低功耗通信可以在有或没有配对的情况下建立。这是在移动开发的背景下,更具体地说是 Android,但我相信 iOS 或多或少是相同的。

有没有人会选择一个而不是另一个的情况?目的是什么?什么是技术上的配对通信,什么是非配对通信?

我已经对差异进行了一些研究,甚至制作了一些与 BLE 相关的仅演示应用程序,但我还没有找到明确的解释,如果我正在做的事情实际上是否被认为是配对的。

编辑:

我问这个问题的原因是我相信我正在寻找加密未配对的 BLE 连接。在某些情况下,本质上是我的主要用例,移动设备可能希望在一天中的不同时间随机连接到几个不同的外围设备,并且物理接受配对请求的过程似乎没有必要并且非常耗时。所谓“随机”,我的意思是如果我的公寓周围散落着十几个,我会经过一个,而且如果不进行身体检查,我个人不知道到底是哪一个。我不第一次走进房间,必须手动配对每个设备,如果我有 100 个设备,那将是疯狂的。请注意,这些设备不一定必须同时连接,但可以。另请注意,我理解这不是

标签: bluetoothbluetooth-lowenergyandroid-bluetoothios-bluetooth

解决方案


以下是一些不同之处:

如果您绑定设备,链接将被加密,因此变得更加安全。所以“配对”通信基本上意味着链接是加密的,而且设备“知道”它与什么对话。

远程设备还会学习您手机的 IRK(身份解析密钥),以后可以使用它来识别手机。默认情况下,手机每 15 分钟左右轮换一次蓝牙设备地址。在不知道 IRK 的情况下,外设无法识别手机。

如果设备已绑定,一件好事是远程设备的 GATT 数据库被缓存,这意味着在下一次连接时,您不必等待很长时间即可完成服务发现。

在 Android 上,由于 API 缺少“地址类型”位(公共/随机地址),在没有首先扫描的情况下通过蓝牙设备地址连接会被破坏。如果 Android “猜测”错误,您将连接到错误的设备并因此失败。但是,如果设备已绑定,则会根据蓝牙设备地址存储和查找地址类型,从而使其按预期工作。因此,例如,如果您计划在启动时在后台自动连接到外围设备,那么绑定设备是个好主意。

一个小细节是客户端特性配置描述符值也应该由 GATT 服务器存储,并在绑定设备重新连接后恢复,因此它不必重写描述符值。

一些蓝牙配置文件需要绑定,例如 HID(至少在 iOS 和 Android 上)。


推荐阅读