BLE 的 AA 地址解析

  • 概述

在一个项目开发中,有客户提到了一个问题,在 2.4G 的配对中,有一些设备会出现配对不上的情况,在后面分析过程中是由于部分 AA 数据不符合规范导致的,后面参考了 BLE 的 AA 数据限制以及添加动态随机生成情况后,可以有效规避该情况。那就趁这个机会我们来聊聊 BLE 中对 AA 数据的规范。

  • 规范分析

对于 AA 数据的描述,我们可以在核心规范 Vol 6,Part B 中 2.1.2 看到对于 AA 数据(Access Address)的描述

可以在规范中看到,在 BLE 通讯中对于 AA 数据有如下的定义:

  1. 所有的 BLE 的数据在广播时是公用同一个数据(0x8E89BED6)。
  2. 在连接后,每一个连接步骤都要重新随机生成一个 AA 数据用于进行通讯。

其中在随机生成的 AA 数据时,会针对自相关性的要求有上图所描述的限制,例如:不能有连续 6 bit 全是零或者一;与广播的 AA 数据不能只有 1 bit 的数据差异;不能多于 24 个变换;高低4个 Byte 数据不能相同等等……详情可以参考核心规范。

  • 流程分析。

在通过了规范了解到 AA 数据的相关限制之后,我们再通过抓包数据来直观地查看 AA 数据变化,如下图所示




在广播的数据包中, Access Address(AA)数据都是一样的为 0x8E89BED6。其中第一次的 Access Address(AA) 数据的变换是在建立连接时,当主机发起连接请求时,请求包中就有后续通讯时的 Access Address (AA)数据,如下图所示:


我们可以看到,在 CONNECT_IND 中,就有一项参数为 Access Address 的更新例如上图为 0x309862F6,如果从机接受连接后,后续通讯的 Access Address 就会使用新的 Access Address即0x309862F6,如下图所示:

以上即为我们常用的 BLE 连接时 Access Address 的变化,同样地,当设备断连后再连接时,CONNECT_IND 中的 Access Address 也会有变化。

  • 总结

在本文中,我们简单地从核心规范中了解 AA 数据的大概需求,即需要在除了广播时的通讯都要随机生成新的数据,以确保通讯时的唯一性;其中随机生成 AA 数据时也有相应的限制,以提高通讯时的抗干扰性。相信这些规范内容也能够为我们做其他无线通讯时提供一个好的思路与想法。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论