目录:

  • 1. 前言
  • 2. Public device address
  • 3. Random device address
    • 3.1 Static device address
    • 3.2 Non-resolvable private address
    • 3.3 Resolvable private address
  • 4. 总结

1. 前言

为什么有些蓝牙设备的地址是固定的,但是有些每次开机起来是不一样的,又有些设备地址在正常运行过程中会变化呢。

蓝牙设备通过地址和地址类型来标识自己,地址类型指示是public device address(公共地址)或者random device address(随机地址),两种设备地址都是48bit的。

一个设备至少包含一种地址类型,可以同时包含两种。

当两个设备地址进行比较时,该比较应包括设备地址类型(如果两个地址类型不同,即使两个48bit未地址相同也不同)。

2. Public device address

设备唯一地址,不会变化。正常情况下,该地址是需要向IEEE申请的。企业交钱,IEEE保证地址的唯一性。

3. Random device address

在BLE时代,只有Public Device Address还不够,因为:

  1. 需要购买
  2. 安全因素。BLE很大一部分的应用是广播通信,这意味着主要知道了设备的地址,就可以获取所以的信息,这是不安全的。

随机地址可以细分为三种地址类型,通过48bit地址的最高2位决定。

Address[47:46] Sub-Type
0b00 Non-resolvable private address
0b01 Resolvable private address
0b10 Reserved for future use
0b11 Static device address

3.1 Static device address

Static device address 是随机生成的,需满足以下两个条件:

  1. 最高两位为1
  2. 不能全为0或1

    如果使用的是静态随机地址,则每次开机的时候地址随机生成后不会再改变。下一次上电的时候可以改变,但不是强制的,因此可以保持变。

如果设备的静态地址发生变化,则存储在对端设备的配对信息将无效,并且使用旧地址重连会失败。

3.2 Non-resolvable private address

Non-resolvable private address 是随机生成的,需满足以下三个条件:

  1. 最高两位为0
  2. 不能全为0或1
  3. 不能和 Public device address 相同

3.3 Resolvable private address

不可解析私密地址需满足以下条件:

  1. 高24bit为随机数,且最高 2bits 为 “10”
  2. 低 24bits 是随机数和 IRK 通过 hash 运算得到 hash 值,hash=ah(IRK,prand)

    对端BLE设备扫描到该类型地址后,用本地 IRK 和该地址的 prand 进行 ah 运算,如果得到值和该类型地址低 24bits 一致才进行后续操作。

4. 总结

蓝牙设备地址可分为4种:

  1. Public device address
  2. Static device address
  3. Non-resolvable private address
  4. Resolvable private address

Public device address 是唯一不变的,相当于是设备的MAC地址。

Static device address在初始化后不会改变。

Static Device Address通过地址随机生成的方式,解决了部分问题,Private Device Address则更进一步,通过定时更新和地址加密两种方法,提高蓝牙地址的可靠性和安全性。

Non-resolvable private address 和 Resolvable private address在系统运行中可以指定周期更新(广播、扫描、已连接等过程中都有可能更新),更新的周期由GAP规定,称作T_GAP(private_addr_int),建议值是15分钟,不能大于1小时。

【BLE】蓝牙设备地址相关推荐

  1. android8.1系统连接不上BLE蓝牙设备问题解决

    OS:Android8.1 platform:px30 问题:在更换完wifi-bt模组进行工厂测试时,发现蓝牙可正常扫描连接经典蓝牙(手机等设备),但是扫描出来的BLE蓝牙设备却连接不上. 在与模组 ...

  2. 安卓连接ble蓝牙设备教程(目录)

    安卓连接ble蓝牙设备教程(目录) 零.新建android工程(安卓蓝牙ble教程) 一.权限和build.gradle配置并开启蓝牙(安卓蓝牙ble教程) 二.搜索蓝牙并连接(安卓蓝牙ble教程) ...

  3. ble mac地址 协议_BLE(bluetooth low energy)协议栈介绍

    大家好,今天开始给大家介绍一下蓝牙BLE技术,整个蓝牙技术其实从技术上分经典蓝牙和BLE蓝牙,而从技术模式上分三种:单模(only BLE),双模(BLE和经典都有,如手机),经典蓝牙BR/EDR.蓝 ...

  4. ble mac地址 协议_BLE获取iphone mac地址的方法--【sky原创】

    标签: 本人用的BLE是TIcc2541,1.3.2协议栈 1.首先要说明的是,iphone手机将信息保护了,BLE设备读到的iphone地址是随机的,每次连接都会不同 2.下面我就具体说明如何查看手 ...

  5. ble mac地址 协议_让BLE设备的名称包含MAC地址

    对于研发和测试BLE来说,经常看到同名的设备,是极为不方便的,一大堆设备同时上电会让同事不知道哪一个设备才是自己真正想操作的目标.再说一下小米手环,家中有三支小米手环,打开设备搜索全是"MI ...

  6. Android 蓝牙 ble 随机地址深层次分析

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 一.IRK概 ...

  7. android8.1获取蓝牙地址,[蓝牙] Android 8.1 获取蓝牙设备地址无效;02:00:00:00:00:00

    序言: 对于这个问题, 谷歌是这样说的: 为了向用户提供更好的数据保护,从此版本开始,Android删除了使用Wi-Fi和蓝牙API对应用程序的设备本地硬件标识符的编程访问. ok.至此我们已经知道为 ...

  8. CSR867x — 如何修改BLE的蓝牙地址

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者:文化人 XX 联系方式:(进群:471144274) XX 版权声明:原创文章, ...

  9. BLE 蓝牙网关与蓝牙定位

    参考:[IoT]BLE 蓝牙网关与蓝牙定位技术解析 地址:https://blog.csdn.net/liwei16611/article/details/85245109?spm=1001.2014 ...

最新文章

  1. MTCNN-将多任务级联卷积神经网络用于人脸检测和对齐
  2. [一] 详细讲解: 线性表链式存储结构 中的 单链表; (数据结构和算法)
  3. Struts1.x和Struts2.0的Action的区别
  4. linux系统使用小端内存,linux进程内存管理
  5. 【WPF学习】第五十章 故事板
  6. corosync+openais+pacemaker构建高可用性集群
  7. WINDOWS下主机名找IP IP找主机名
  8. 2018最新版省市区三级联动数据
  9. 显微镜下的大明内容_《显微镜下的大明》读后感
  10. yapi token注入漏洞
  11. QT 在 macos 上的透明bug Qt::WA_TranslucentBackground
  12. mah和mwh的关系?
  13. Syste类 及常用方法
  14. 亚马逊云科技在中国市场火了?真相令人想不到
  15. The Google File System 中文版论文(下)(转载)
  16. Java的小数点后精度计算
  17. 60万奖金“人脸攻防大战”,全部进阶妙招奉上丨独家公开课实录(3)
  18. 金航数码选择应用 TDengine 时序数据库,改造现有数据库架构
  19. centos7 java 配置_centos7下安装java及环境变量配置技巧
  20. limma包进行差异分析

热门文章

  1. 震撼来袭!葡萄城商业智能报表软件Wyn Enterprise V5.0发布会前瞻,3大亮点抢先看
  2. docker-compose基本命令使用
  3. Angelababy现身宋雨琦直播,不和传言不攻自破
  4. xp usb android,windowsxp系统设置usb手机网络分享的方法
  5. 把codeblock变好看
  6. python sqlite3的使用及sql语句
  7. Java+MySQL基于Springboot口腔牙科诊所管理系统#毕业设计
  8. 模态振型的一些概念解释
  9. 程序员为什么不自己单干?
  10. 大数据技术与应用实训心得_数据实习心得