0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

蓝牙设备地址的类型 蓝牙Random静态设备地址的生成与设置

STM32单片机 来源:STM32单片机 2024-01-03 09:37 次阅读

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)类型。静态类型的地址格式如下:

84605070-a97f-11ee-8b88-92fbcf53809c.jpg

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


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


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

1.3. Random Non-Resolvable Private Address

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

84713070-a97f-11ee-8b88-92fbcf53809c.jpg

• 地址的随机部分至少有一位应为 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

84750722-a97f-11ee-8b88-92fbcf53809c.jpg

特征如下:
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 中的一种作为其身份地址。

02MAC 地址相关函数

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

// 配置 MAC 地址的函数

847c5446-a97f-11ee-8b88-92fbcf53809c.jpg


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

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

848344fe-a97f-11ee-8b88-92fbcf53809c.jpg

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 地址参考函数

848d1740-a97f-11ee-8b88-92fbcf53809c.jpg

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 地址入口

84957c50-a97f-11ee-8b88-92fbcf53809c.jpg

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

849cce88-a97f-11ee-8b88-92fbcf53809c.jpg

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

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

84a605c0-a97f-11ee-8b88-92fbcf53809c.jpg

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

公司信息,如果贵公司为首次申请,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是序号。

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

84af9d1a-a97f-11ee-8b88-92fbcf53809c.jpg


05小结

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1099

    浏览量

    51368
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62426
  • BLE
    BLE
    +关注

    关注

    12

    文章

    652

    浏览量

    59334
  • 蓝牙设备
    +关注

    关注

    0

    文章

    38

    浏览量

    6710

原文标题:实战经验 | BLE 设备地址相关简介

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32WB55开发(2)----修改蓝牙地址

    在嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产
    的头像 发表于 12-01 15:42 771次阅读
    STM32WB55开发(2)----修改<b class='flag-5'>蓝牙</b><b class='flag-5'>地址</b>

    如何在DA14580中为设备设置独立的蓝牙地址

    分享一个自己写的文档,主要是关于如何在DA14580中设置蓝牙地址的,当然,不是在程序中固定蓝牙地址,而是程序不变,不同芯片不同
    发表于 03-31 18:55

    【方案】蓝牙MAC地址二维码标签扫描打印方案

    )后期再录入系统,操作麻烦。 为了实现蓝牙产品MAC地址的读取及二维码的打印,深圳市天工测控技术有限公司开发了包含蓝牙MAC地址读取设备、M
    发表于 08-17 17:24

    SKYLAB最新推出蓝牙MAC地址扫描打印解决方案

    的MAC地址扫描打印解决方案。针对这一市场需求,深圳市天工测控技术有限公司开发了包含蓝牙MAC地址读取设备、MAC地址读取软件、MAC
    发表于 08-18 17:20

    模块专家天工测控:蓝牙模块SKB360及蓝牙MAC地址扫描打印解决方案

    、MAC地址管理软件、二维码生成软件、二维码打印驱动的一整套解决方案。蓝牙MAC地址读取设备把低功耗蓝牙
    发表于 08-21 16:04

    请问蓝牙如何区分设备类型

    我想请问一下,在手机蓝牙设备搜索时,它可以识别设备类型(手机、电脑、耳机等)并且以图标显示,大家知道手机是如何区分这些设备
    发表于 01-22 06:19

    请问蓝牙分析仪软件怎么筛选扫描设备地址

    请问蓝牙分析仪软件怎么筛选扫描设备地址,包过滤里面没有scanAddress的条件
    发表于 08-22 06:59

    如何设置静态ip地址

    如何设置静态ip地址    Q:一局域网划分为数个子网,10.10.1.X~10.10.16.X。子网掩码为255.255.255.192,DHCP服务器为10.10.0.4.登录Internet
    发表于 02-24 11:34 2761次阅读

    蓝牙MAC地址扫描打印解决方案

    蓝牙MAC地址扫描打印解决方案
    发表于 08-22 11:26 12次下载

    (方案)蓝牙MAC地址二维码标签扫描打印方案

    每个蓝牙产品(比如智能蓝牙手环)的 MAC 地址都不一样,如果在蓝牙产品的包装盒上贴上对应的由MAC地址
    发表于 08-28 16:48 15次下载

    蓝牙MAC地址打印解决方案

    很多厂家为方便设备的管理,需要在产品的包装盒或者产品外壳上贴蓝牙MAC地址的二维码或者条码,更甚至是二维码和条码的组合。
    发表于 05-21 02:29 4590次阅读

    蓝牙方案:蓝牙MAC地址转二维码打印解决方案

         针对用户的需求:需要蓝牙MAC地址蓝牙产品一一对应,便于使用和管理蓝牙设备,SKYLAB开发了包含
    的头像 发表于 09-07 10:26 2771次阅读

    干货|蓝牙MAC地址二维码扫描打印解决方案的工作原理

    读取软件、MAC地址管理软件、二维码生成软件、二维码打印驱动。蓝牙MAC地址扫描打印硬件产品生产厂家:大致的流程是蓝牙MAC
    的头像 发表于 10-30 18:47 6135次阅读

    SKYLAB蓝牙方案|蓝牙MAC地址二维码打印解决方案

    MAC地址读取设备放置在防信号干扰金属盒中--安装有MAC地址读取软件、MAC地址管理软件、二维码生成软件、二维码打印驱动的电脑读取MAC
    的头像 发表于 08-24 18:47 1258次阅读

    SKYLAB蓝牙方案|蓝牙MAC地址二维码打印解决方案

    蓝牙MAC地址二维码打印方案,蓝牙Mac地址的扫描、二维码的打印,一套设备全搞定,终端用户只要手机扫一扫,就能轻松完成绑定。
    的头像 发表于 09-04 17:41 948次阅读
    SKYLAB<b class='flag-5'>蓝牙</b>方案|<b class='flag-5'>蓝牙</b>MAC<b class='flag-5'>地址</b>二维码打印解决方案