一、前言
上一篇文章讲解了从机主机发送重连的流程,本篇在补充一下关于主机主动发起重连的流程。
二、阅读说明
1、泰凌微芯片学习者。
2、蓝牙协议学习者
三、正文
1、主机主动发起重连流程讲解
如上所述,主机主动发起重连是直接从链路层开始的,主机直接发送LL_ENC_REQ指令给到从机。与从机主动发起的不同之处在于,少了一个Security Request指令。
2、重连空中抓包数据
由上图可知,重连的流程和1小节中图片展示的一致,那么从机怎么知道当前的是重连呢,也就是说从机需要看哪些信息。这里重点关注主机发出的LL_ENC_REQ命令,LL_ENC_REQ命令将在第3小节讲解
3、主机发出的LL_ENC_REQ命令
其中我们需要关注的是的Rand和EDIV,主机发送的这条指令给到从机,从机会根据这两个数组检索到从机保存的长期密钥(LTK)。
4、主机发出的LL_ENC_REQ空中抓包指令
由上图可知道:
Random Number:6573296838288836148 (0x5b390aa5c9678634)
Encrypted Diversifier: 18732 (0x492c)
接下来我会和第一次配对从机发给主机的EDIV和Rand,请看第5小节。
5、从机发出的LL_ENC_REQ空中抓包指令
5.1、指令所处的位置
5.2、空中抓包指令
Encrypted Diversifier (EDIV): 0x492c
Random Value: 348667c9a50a395b
由上图所示,该值与第4小节中的一样。
备注:Rand字节需要反一下。
四、结尾
本篇结合蓝牙协议和抓包讲解重连的流程,下一篇将讲解安全连接相关内容。
我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。
123