实战经验|BLE设备地址相关简介

原创 STM32单片机 2024-01-02 17:45


关键词:BLE MAC 地址, public 地址


目录预览

1、蓝牙设备地址的类型

2、MAC 地址相关函数

3、蓝牙 Random 静态设备地址的生成与设置参考方法
4、蓝牙 Public 设备地址的购买流程
5、小结


01

蓝牙设备地址的类型


所有蓝牙设备都应具有一个蓝牙设备地址 (BD_ADDR),该地址(及其地址类型)可以唯一地(一定范围内唯一)标识该设备。使用者如果不了解其概念,看上去可能会有很多疑惑,甚至容易造成侵权问题。

蓝牙的设备地址分为两大类,一类是 Public,一类是 Random 的。其中 Random 类地址里面又分为静态地址和私有地址。私有地址又分为不可解析的私有地址和可以解析的私有地址。这些地址类型列举如下:
• Public Bluetooth address // 1
• Random Bluetooth address
   o Static address // 2
   o Private address
        ▪ Non-resolvable private address // 3
        ▪ Resolvable private address // 4

上述 4 种地址类型都使用 48bit 的地址长度。地址类型不同,48bit 地址的格式也会不同;设备地址类型和设备地址共同用于唯一标识该设备。另外需要注意以下几点:
• Public 或者 Random 地址类型的标识在链路层的广播包 PDU Header 中,不在48bit 地址的内容中。
• Random 类型下的三种地址类型,使用 48bit 地址的高 2bit 进行标识。
• 48bit 地址都相同的两个设备,如果它们分别属于 Public 或者 Random 地址类型,则它们是两个不同身份的蓝牙设备。

设备应至少使用一种类型的设备地址,也可以同时使用两种。该设备可以通过它使用的任何设备地址来寻址。设备的身份地址是它在传输的数据包中使用的 Public 设备地址或Random 静态设备地址。如果一个设备使用可解析的私有地址,它也应该有一个身份地址。每当比较两个设备地址时,比较应包括设备地址类型(即如果两个地址的类型不同,即使两个 48 位地址相同,它们也不同)。

如果公司有购买 Public 地址,则建议用 Public。如果没有购买地址,又没有设备地址隐私需求,则建议使用 Random Static Device Address。


1.1. Public Bluetooth Address


在传统蓝牙和 BLE 中,原则上来说,使用 Public 地址需要向 IEEE 申请购买,使用未授权的 Public 地址如果和已授权的 Public 地址发生地址冲突,可能会面临法律纠纷。使用Public 地址还需要涉及到地址的管理、购买等流程。本文的后面举例描述了购买 Public 地址的流程。


1.2. Random Static Device Address


蓝牙更新到了 BLE 版本之后,为了让设备厂商可以节省购买 Public 地址授权的费用,引入了 Random 类型的地址。从前文可知,Random 地址类型又分为静态(Static)类型和隐私(Private)类型。静态类型的地址格式如下:



静态地址是随机生成的48位地址,应满足以下要求 :
• 地址的随机部分至少有一位应为 0
• 地址的随机部分至少有一位应为 1


设备可以选择在每次电源循环后将其静态地址初始化为新值。设备在初始化后不得更改其静态地址值,直到设备重新上电。


注意:如果设备的静态地址发生更改,则存储在对端设备中的地址将无效,并且将失去使用旧地址重新连接的能力。


1.3. Random Non-Resolvable Private Address


隐私地址主要是为了解决隐私问题。根据其是否可解析,又分成不可解析地址类型和可解析地址类型,不可解析地址类型的地址格式如下:



• 地址的随机部分至少有一位应为 1
• 地址的随机部分至少有一位应为 0
• 地址不得等于 Public 地址


不可解析地址会周期更新(建议值是 15 分钟),这类地址在实际应用中比较少用。


1.4. Random Resolvable Private Address


所谓可解析地址(RPA),是指可以把一个周期变化的地址解析为唯一的身份地址。使用随机可解析地址类型的设备应具备两个地址,一个地址用于标识该设备,称为身份地址(Identity Address),另一个则为随机可解析地址(RPA)。一般情况下,设备会广播RPA,身份地址保存在本地。对端设备可通过解析 PRA 进一步获得其身份地址。

要生成可解析的私有地址,设备必须具有本地身份解析密钥 (IRK) 或对端身份解析密钥 (IRK)。可解析的私有地址应使用 IRK 和随机生成的 24 位数字生成。随机数称为prand,应满足以下要求:
• prand 的随机部分至少有一位为 0
• prand 的随机部分至少有一位为 1



特征如下:
1)由两部分组成:
高位 24bits 是随机数部分,其中最高两个 bit 为“10”,用于标识地址类型;
低位 24bits 是随机数和 IRK 经过 hash 运算得到的 hash 值,运算的公式为 hash = ah(IRK, prand)。

2)当对端 BLE 设备扫描到该类型的蓝牙地址后,会使用保存在本机的 IRK,和该地址中的 prand,进行同样的 hash 运算,并将运算结果和地址中的 hash 字段比较,相同的时候,才进行后续的操作。这个过程称作 resolve(解析),这也是 Non-Resolvable Private Address/Resolvable Private Address 命名的由来。
3)以 T_GAP(private_addr_int)为周期,定时更新。哪怕在广播、扫描、已连接等过程中,也可能改变。
4)Resolvable Private Address 不能单独使用,因此需要使用该类型的地址的话,设备要选择 Public Device Address 或者 Static Device Address 中的一种作为其身份地址。


02

MAC 地址相关函数


下面介绍两个比较重要的和 MAC 设置相关的函数。


// 配置 MAC 地址的函数



其中不同的 offset 设置的数值不一样,和 MAC 地址相关的主要是这两个:
•  0x00:  CONFIG_DATA_PUBADDR_OFFSET
•  0x2E: CONFIG_DATA_STATIC_RANDOM_ADDRESS


//配置使用哪种 MAC 地址的函数:



Identity_Address_Type :
• 0x00: Public Address
• 0x01: Static Random Address


03

蓝牙 Random 静态设备地址的生成与设置参考方法


为了方便一些客户生成免费的相对唯一的 MAC 地址,下面列举一个使用芯片出厂唯一的 UID 来生成 MAC 地址的参考方法。基本原理是通过读取芯片的 UID,然后再进行 Hash计算,截取需要的 46bit 作为随机部分的静态地址。理论上这种方法生成的 MAC 地址重复的几率很小,在 2 的 40 多次方分之一的几率重复,因此实际工程应用中可以认为它相对比较唯一。


Hash 计算这部分参考了开源的算法库,链接地址如下:
https://github.com/B-Con/crypto-algorithms/blob/master/sha256.c


sha256.c这个库文件在当前开发平台上需要修改前面一个头文件包含:

将 “#include” 更改为 “#include”


以下部分伪代码适用于 BlueNRG 系列和 STM32WB 系列


// 生成静态 MAC 地址参考函数



04

蓝牙 Public 设备地址的购买流程


全球唯一设备号,标准化组织是 IEEE,以前的网卡 Ma 地址、PC,现在蓝牙设备、BLE 设备若需要认证的,官方的唯一设备标识,即蓝牙地址,也是 Mac 地址,需向 IEEE申请,并登记付费。即可获得授权。


4.1. OUI 介绍


Organizationally Unique Identifier(OUI) 被称作“组织唯一标识符”,在任何一块网卡中烧录的 6 字节 MAC 地址中,前三个字节就体现了 OUI,通常情况下,该标识符是唯一的。因此,OUI 可以用来创建 MAC 地址、蓝牙设备地址或以太网地址。另外,OUI 也可作为一个公司的 SNAP 协议标识符使用。

通常情况下,IEEE 标准协会将前 24 位组织唯一标识符(OUI)分配给生产企业,剩下的 24 位由厂家自行分配代码。

目前,OUI 只能通过 IEEE 标准协会直接购买,其总价格大概在 3500 美元左右。

如果如果没有保密需求,支付$3500 就可获得一个 OUI(可生成 1600 万个地址),即上述所指的 publicly registered MA-L,也就是说此类公司的名称和地址是公开的,公众可以访问

https://regauth.standards.ieee.org/standards-ra-web/pub/view.html#registries
输入公司名称查询该公司拥有的 MA-L,或者输入 MA-L查询公司的名称和地址。

如果生产厂商希望对以上信息保密,可以选择 Privately registered MA-L,价格会贵很多,且每年需要支付保密费用大概几千美元。


4.2. 购买流程


如果需要购买 Public 地址,需要先申请一个 IEEE 账号。登入后点击如下入口开始申请。


图1.申请购买 public 地址入口


图2. 选择购买的 MAC 地址数量和类型


如果申请的类型是 MA-L 大概有 1677 万个地址,MA-M 大概有 100 多万个。


图3.申请过程中的 4 个步骤


主要填写:申请人信息,包括姓名、职位、公司名称、地址及邮箱电话等;

公司信息,如果贵公司为首次申请,initial corporate assignment request 后选择YES,如果不是首次申请 OUI,一定要确保现有的 MAC 地址使用率已达到 95%,否则不予申请,选择 No 之后需要在方框内填写上次申请 OUI 的公司名称并提供再次申请的理由,同时还需提供公司类型,是母公司还是子公司,还是两者皆否

如果公司类型选择了母公司或者是子公司,需要填写至少 3 家联营公司的具体信息,如果公司类型选择了 neither,该部分可不填;为保密信息,如果选择购买的是 publicly registered MA-L,该部分选择 No,反之选择 Yes 并提供理由;目前 IEEE 标准协会接受的付款方式包括邮寄美国银行汇票、美元电汇及信用卡在线支付。如果需要提供形式发票,请选择 please send a proforma invoice 之前的复选框。

完成以上内容后在线提交即可。


4.3. 购买后检查确认


如果需要购买 public 地址,需要先申请一个 IEEE 账号。登入后点击如下入口开始申请。通常 IEEE 收到款后的第二天,即可邮件收到一个 Mac 地址的生成软件,填上日期等信息后,会生成一个 6BYTE(48bits)的地址段,前 3BYTE 数据为公司名,后面 3BYTE是序号。

您可以下载一个更新后的厂商列表:
https://standards-oui.ieee.org/oui/oui.txt


图4.在更新的列表中检查申请的地址


也可以通过链接查询:
https://regauth.standards.ieee.org/standards-ra-web/pub/view.html#registries


05

小结


本文介绍了 BLE MAC 地址的类型,基于芯片 ID 生成静态随机 MAC 地址,以及购买Public MAC 地址的流程。


完整内容请点击“阅读原文”下载原文档。

STM32单片机 ST MCU (产品+工具+资料+技术+市场+活动)x 您的关注x您的支持 = STM32 单片机蝴蝶乐园
评论
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 152浏览
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 304浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 53浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 146浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 117浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 184浏览
  • 百佳泰特为您整理2025年1月各大Logo的最新规格信息,本月有更新信息的logo有HDMI、Wi-Fi、Bluetooth、DisplayHDR、ClearMR、Intel EVO。HDMI®▶ 2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新规范将支持更高的分辨率和刷新率,并提供更多高质量选项。更快的96Gbps 带宽可满足数据密集型沉浸式和虚拟应用对传输的要求,如 AR/VR/MR、空间现实和光场显示,以及各种商业应用,如大型数字标牌、医疗成像和
    百佳泰测试实验室 2025-01-16 15:41 189浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 203浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 114浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 81浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦