蓝牙入门(随便写写)

蓝牙地址相关

public address

一般写在 固件中,不能改变的地址
BR/EDR也同样使用该地址?
在log中为BD_ADDR参数

random address

另一种类型的地址,可以分为两种,static address和private address
random static address 一般是开机自动产生,有host通过set random address传递给control
private address 分为resolvable 和Non-resolvable两种类型
重点关注resolvable private address,这类地址可以被解析。
当设备同时拥有对端IRK和本地IRK的时候,就可以将resolvable private address解析成indentify address。

indentify address

这类地址是一个抽象的概念,故名思意,其作用就是识别设备的地址
如果一个设备仅支持public address, 那么该public address 可以作为这个设备的indentify address,在配对过程中使用
如果一个设备支持random static address,同样可以作为indentify address使用
如果一个设备使用的是resolvable private address, 通过IRK解析之后的地址,才是indentify address。

RPA(resolveable private address)

如何生成RPA

为了连接过程中的安全,我们可以用RPA地址与对端设备连接
每次连接,RPA地址并不是固定的地址,但是拥有IRK的设备,能够解析RPA地址,指向相同的设备
RPA通过IRK和pRand 产生
可以产生自己的RPA,也可以产生对端设备的RPA

解析RPA

localHash = ah(IRK,pRand)
接收到对端的RPA之后,可以计算出对端的peerHash值,前24bit 即为对端的hash
localHash 与peerHash对比,就能解析出是否是曾经配对过的设备
RPA解析的目的是:将random address转化为indetify address, 然后获取到正确的LTK或者GATT cache

RPA流

IRK(Identity Resolving Key,蓝牙设备地址解析密钥)

IRK是设备配对过程中,SMP 交换的信息
自己的IRK和对端的IRK,用来解析私有地址
所有已经配对过设备的IRK,在resolving list这个表中维护

resolving list

这个列表保护一些列对端和自己的IRK配对记录
列表维护在controller中,可以不经过host,完成解析RPA功能
此列表中的地址是inditify address,一个设备一个地址,通过确定的地址,找到正确的IRK

蓝牙传输速率

BR/EDR

经典传输速度、
BR最大723.2kbps
EDR最大2178kbps

LE 1M PHY

1MHZ占用宽带

LE 2M PHY

2MHZ占用宽带

posted @ 2022-12-05 18:05  Miraculous_B  阅读(415)  评论(0编辑  收藏  举报