现实场景中,经常会碰到“搜索到一个蓝牙地址,但是没有名称,无法确定是不是想连接的设备等问题?”,这个时候就想着,如果可以从地址信息中能解析出某些有用的信息,帮助我们筛选就好了。别急,还真是有可能的,让我们先来重新认识一下蓝牙地址的构成。
当然,这里介绍的是Bluetooth Address,即 public address 。并不针对BLE的random address。为什么呢?我们来慢慢看。

  1. 什么是Bluetooth Address(BD_ADDR)?

    了解过蓝牙基本知识的人,都知道Bluetooth Address是制造商分配给每个蓝牙设备的唯一48位标识符(和电脑的MAC地址一样)。它是用来唯一识别一个物理设备的标识,正常情况下,该地址需要向IEEE申请(其实是购买,呵呵!)。企业交钱,IEEE保证地址的唯一性,皆大欢喜。
    蓝牙地址通常显示为6个字节,以十六进制表示,用冒号分隔(示例- 00:11:22:33:FF:EE)。
    其中,蓝牙地址的upper part(即most-significant 24 bits)被称为Organizationally Unique Identifier (OUI)。它可以 用来确定设备的制造商 。OUI是由电气和电子工程师协会(IEEE) Assigned。
    另外,蓝牙设备地址还被用来在蓝牙设备之间的无线通信中确定跳频模式。

  2. Bluetooth Address Structure

    Bluetooth Address有三部分组成: NAP, UAP, LAP
    举例来说,如下图所示:
    在这里插入图片描述
    从图中可以看到,OUI包含NAP和UAP两部分。其中NAP(Non-significant Address Part)部分2字节,为OUI的前16位;NAP值,用于跳频同步帧。另外,UAP(Upper Address Part)1字节,包含剩余的8位OUI;UAP值,被用作为各种蓝牙规范算法中的种子。

除了OUI之外,剩余的3字节,为LAP(Lower Address Part), 这部分蓝牙地址由设备供应商 自己分配 。LAP值,作为每一个transmitted Frame中 Access Code 的一部分,来唯一地标识蓝牙设备。LAP和UAP构成蓝牙地址的重要地址部分(SAP)。

  1. 解决的问题

1) 从Bluetooth Address的构成来看,属于设备商自己定义的部分,只有LAP part,即最多只能定义2^24 = 16777216个设备地址?这似乎对于某些大厂,比如Aplle,HUAWEI来讲,不够用?怎么办?
目前看来,最主要的解决方式是,每家公司多申请一些OUI,比如Apple就申请了几十个之多,当然大厂不差钱,哈哈。(因为每申请一个,就要花费一份钱向IEEE购买)。
在这里插入图片描述
2) 怎样通过地址,查询到厂商的信息呢?
当然有很多途径,这里分享一个比较好用的网址,如下:
添加链接描述
在这里插入图片描述
Click the “Lookup”, 然后就得到结果了:
在这里插入图片描述

3) 这一套不适合BLE的Random Address?

是的。因为Random Address的设备地址不是固定分配的,而是在设备启动后随机生成的,而且会根据一定的周期发生变化。它的出现正是为了规避Public address申请/维护成本高、复杂等问题的,当然主要是可以保证地址可变,更安全。所以,它并不遵从OUI这一套。

希望此文对你有帮助,感谢阅读

现实场景中,经常会碰到“搜索到一个蓝牙地址,但是没有名称,无法确定是不是想连接的设备等问题?”,这个时候就想着,如果可以从地址信息中能解析出某些有用的信息,帮助我们筛选就好了。别急,还真是有可能的,让我们先来重新认识一下蓝牙地址的构成。当然,这里介绍的是Bluetooth Address,即public address。并不针对BLE的random address。为什么呢?我们来慢慢看。 对于使用BR/EDR物理通道的经典 蓝牙 来说,其实用的是 蓝牙 public 地址 。 该 地址 应是根据IEEE 802-2014标准第8.2节("通用 地址 ")创建的48位扩展唯一标识符(EUI-48)。 标准 地址 :IEEE SA - IEEE 802-2014 里面内容如下: Universal addresses / 通用 地址 - 概念和概述 通用 地址 的概念是基...
MAC(MediaAccessControl,介质访问控制) MAC地址 是烧录在NetworkInterfaceCard(网卡,NIC)里的. MAC地址 ,也叫硬件址,是由48比特长(6字节),16进制的数字组成.0-23位是由厂家自己分配. 24-47位,叫做组织唯一标志符(organizationallyunique,是识别LAN(局域网)节点标识。 其中第40位是组播 地址
像LAN连接设备的 MAC地址 一样, 蓝牙 设备也具有与每个设备关联的标识 地址 。对于每个BLE开发人员而言,了解 蓝牙 地址 的工作方式都是至关重要的,尤其是当设备隐私受到关注时。 那么,什么是 蓝牙 地址 ? 甲 蓝牙 地址 有时被称为 蓝牙 MAC地址 ,是一个48位值,该值唯一地标识一个 蓝牙 设备。在 蓝牙 规范中,它称为BD_ADDR。 根据Bluetooth Core规范文档,Bluetooth 地址 主要有两种类型:公共 地址 和随机 地址 蓝牙 设备必须使用这些类型的 地址 之一,并且在某些情况下,它包含两种类型的 地址 。 让我们看一
注意,转帖请写明出处和作者,谢谢。 twrp recovery已经更新了可以备份nvram分区了,有需要的也可以用recovery备份一下。 下面这个教程是教给大家备份手机nvram分区,这个分区每个手机是不一样的,里面包含了出厂的一些设置,包括imei、wifi mac地址 蓝牙 mac地址 、手机默认工厂配置(工程模式默认值都在这个分区里)等等,建议大家都要备份一下。 好了  下面还是先
程序实现功能:开启、关闭、连接 蓝牙 ,SCAN周围 蓝牙 并获得 蓝牙 名字, 地址 ,信号强度RSSI,连接状态,因为当时是为了做一个 蓝牙 定位,所以按照需求还添加了一个是否是自己买的 蓝牙 基站的Textview。 当判断SCAN到的 蓝牙 里面有自己的 蓝牙 基站时,就再用一个ListView把它们的名字、 地址 、信号强度、距离和之前设定的坐标单独列出来。 程序实现效果图如下: 蓝牙 设备作为一种短距离无线连接的载体,由于其体积小、操作方便等优点,在耳机、车载和电脑键鼠等应用方面被越来越多的消费者所青睐,渐渐走入大众视野中。 作为 蓝牙 设备的使用者,我们的第一想法往往是这个 蓝牙 设备的名字是什么,这样才知道去连接哪个 蓝牙 设备,而一个 蓝牙 名字又对应着全球唯一的 蓝牙 地址 ,这其实才是 蓝牙 设备的关键。本篇文章我们就来聊聊 蓝牙 名字和 地址 的这些事。 蓝牙 名字: 蓝牙 设备的...
[DESCRIPTION]对 蓝牙 地址 作用 及使用,我们常会有一些疑惑,下面是对其常见问题的汇总。[Branch & Version]下文涉及的NVRAM LID和 蓝牙 地址 均与具体 蓝牙 芯片有关,请注意区别 [SOLUTION] 蓝牙 地址 长度为6bytes, 每台 蓝牙 设备都应有一个唯一的 蓝牙 地址 。目前, 蓝牙 地址 的使用需要向IEEE申请授权使用。 1. 蓝牙 芯片的 地址 怎样获取? 蓝牙 地址 保...
PHP 解构 是指在PHP代码中释放变量、对象、数组等占用的资源,以便其它部分可以使用这些资源。PHP中的 解构 包括两部分:变量 解构 和对象 解构 。变量 解构 是指从一个数组或对象中提取出所有的元素,并将这些元素赋值给变量;对象 解构 是指从一个对象中提取出指定的属性,并将这些属性赋值给变量。 变量 解构 的语法如下: list($var1, $var2, ...) = $array; 其中,$array是要 解构 的数组,$var1、$var2等是要赋值的变量名。如果要忽略某些元素,可以使用占位符"_": list($var1, , $var3) = $array; 对象 解构 的语法如下: $obj = new stdClass(); $obj->prop1 = 1; $obj->prop2 = 2; list($prop1, $prop2) = (array) $obj; 其中,$obj是要 解构 的对象,(array)$obj将对象转换为数组,$prop1、$prop2是要赋值的变量名。需要注意的是,对象 解构 只能用于PHP 7.1及以上版本。