经典蓝牙(BR/EDR)设备连接过程分析

经典蓝牙(BR/EDR)设备连接过程分析

蓝牙 专栏收录该内容
15 篇文章 0 订阅

一、Inquiry过程

Host发送HCI Inquiry命令,等控制器收到远程设备的Inquiry Response之后,发送HCI Event给Host。Host对Event数据进行分析,待Host 收到Inquiry Complete响应后,整个Inquiry过程结束。
Host收到应答后可以发送HCI inquiry cancel取消Inquiry或等待Inquiry时间到达自动结束。
Inquiry过程,截图来自Core_V5.0.pdf
Inquiry
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、连接过程

在蓝牙核心文档中,连接过程如下:
在这里插入图片描述
上图表示Connection establishment 和 detachment 过程,总共需9个不同的过程。有些过程不是必须的比如授权和加密过程。有些过程是必须的,比如ConnectionRequest 和Setup Complet过程。
接下来将具体介绍每个流程:

1、create connection(必选)

Host发送HCI_Create_Connection命令给Controller,然后Controller通过指定的蓝牙地址去page设备。
在这里插入图片描述

2、FeaturesExchange(可选)

LM将会去进行exchange feature,获取对方的特性信息,Controller之间的交互。
在这里插入图片描述

3、ConnectionRequest(必选)

主Controller LM发送LMP_host_connection_req请求,远程设备LM确认请求,远程设备可能接受也可能拒绝请求。
在这里插入图片描述

4、根据设备情形分类

a.远程Host拒绝连接,连接将会被终止

在这里插入图片描述

b、远程设备接受连接

在这里插入图片描述

c、远程设备接收连接,并请求为Master

在这里插入图片描述

5、交换特性

和远程设备交换特性,当AFH(Adaptive FrequencyHopping 自适应跳频)被确认可用后。主设备将会发送LMP_set_AFH 和LMP_channel_classification_req请求。
在这里插入图片描述

6、授权

若需要授权,控制器将会为这个连接向host请求Link Key。在HCI中能看到Link key request的事件。
在这里插入图片描述

7、Link key

a、如果链接需要授权且没有公用的link key

接下来将会是pairing过程。LM会向host请求link key,如果host给的是Negative 回复,LM将会向host请求PIN。Host端请求结束后,随后远程端也会产生PIN请求。链接的授权都是基于请求到的PIN。最后两端都会将link Key通知到各自的host保存,为以后的链接使用。所以配对过程实际上是获取Link Key的过程!
在HCI中能看到Link key获取结束时,Link key Notification事件。紧跟着的就是授权完成的事件:Authentication Complete。
Note:在配对音箱时HCI中也是negative的回复,但是没有pincode的请求?在另一篇博客中将会单独介绍,加深印象。 如下HCI:
在这里插入图片描述
在这里插入图片描述

b、两端有共用的link key

如果两端有共用的link key存在,那么不需要配对过程!LM向host请求link key时,如果得到的是positive回复,将会直接使用回复的link key进行授权。
在这里插入图片描述

8、加密

一旦完成配对和授权,就会开始加密。下图显示的是设置一个加密的点对点连接。
在这里插入图片描述

9、连接建立完成

两端的LM都会向各自的host发送LMP_setup_complete事件。通过LMP_setup_complete事件将底层的连接handle发送给上层,到此为止建立的链接才可以用来发送上层的数据。

在我的测试平台中发现没有此项消息,handle是通过Authentication Complete Event上传上来的。
在这里插入图片描述
至此蓝牙设备已经在物理通道上建立了链接,但上层应用若需要在设备之间通信,那么还需要在L2CAP层次建立连接,L2CAP 的CID(通道ID)好比是计算机的端口号,在访问网络时每个应用程序会对应不同的端口号。在L2CAP层中也类似,对应过来的是每个协议/profile实列对应L2CAP层的一个CID。

三、L2CAP层的连接

下图为从其它博客上截图,具体找不到了,挺火的一篇:
在这里插入图片描述
HCI log如下,主要就这几条交互:
在这里插入图片描述

接下来就是SDP服务发现协议了。

  • 6
    点赞
  • 0
    评论
  • 43
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

蓝牙 BR/ EDR( 蓝牙基本速率/增强数据率)和Bluetooth Smart技术。本文将全面解析这两种技术之间的区别,加深你对 蓝牙技术的了解!
其中L2CAP建立部分参考:https://blog.csdn.net/u010657219/article/details/42192481#commentBox

前面文件描述蓝牙设备在物理通道上建立了链接,但上层应用若需要在设备之间通信,那么还需要在L2CAP层次建立连接,L2CAP 的CID(通道ID)好比是计算机的端口号,在访问网络时每个应用程序会对应不同的端口号。在L2CAP层中也类似…


表情包
插入表情
还能输入1000个字符
相关推荐 更多相似内容
经典 蓝牙发现 连接 过程_生命不息,奋斗不止!
7-12
经典 蓝牙发现 连接 过程 deparks 关注 打赏 文章很值,打赏犒劳作者一下 微信小程序——模板语法 MW 594 WXML(Weixin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。 数据绑定 运算 列表渲染 ...
蓝牙配对 过程 分析( 经典 蓝牙)_跳舞的蘑菇的博客-CSDN博...
8-13
蓝牙配对 过程 分析( 经典 蓝牙) 打开手机/手表的 蓝牙,就能在列表中看到扫描到的 蓝牙,点击就可以实现配对功能。目前手表支持与所有 设备的配对,但是仅支持与耳机类型的 设备进行 连接 安全简易配对SSP(Secure simple pairing), 蓝牙2.0之后配对方式,...
一些 蓝牙(Bluetooth)相关的技术术语表   2010-08-18 17:42:01|  分类: 蓝牙|  标签:|字号大中小 订阅

如下词汇表是蓝牙技术中最常用到的词汇,以便你快速查找。该词汇表的部分词汇源自网站Motorola Bluetooth website。而此处的词汇表则包含了更多的低层信息,精简掉了不必要的、次要的词汇,并对许多关键词汇作了精确的表述。实际上,这已


https://blog.csdn.net/u010657219/article/details/42192481

请参考原文

前言

蓝牙设备状态转换可以知道,蓝牙设备连接需经过Inquiry,page过程,本文主要从HCI角度分析连接过程。解析抓包文件用到的工具为Frontline 的Capture File Viewer。

HCI简介

HCI(Host Contro…


经典 蓝牙配对基本知识--防迷路,通过博客收藏_黄景辉201...
8-6
经典 蓝牙配对基本知识--防迷路,通过博客收藏 配对 过程: 先请求HCI 连接得到一个新的句柄。通过事前设定是否启动简单配对区分配对模式Command Code Write Simple Pairing Mode 非pincode 1.获取L2CAP的扩展信息请求,Code Information Request...
android 蓝牙开发-- 经典 蓝牙连接,Android Bluetooth蓝...
8-6
(b)得到 蓝牙服务器端的BluetoothDevice后,调用createRfcommSocketToServiceRecord,这个 过程可以简单的理解为创建一个类似Java的socket套接字对象一样,为后续的网络建立建立做准备。简单期间,此处也绑定一个 蓝牙 连接的熟知UUID:00001101-0000-10...
Basic Rate / Enhanced Data Rate ( BR/ EDR) 射频工作在 2.4 GHz 的 ISM 频段。

物理射频层的典型的操作是,一组设备工作在相同的时钟(clock)和跳频模式(frequency hopping pattern)。
其中,提供同步参照物的设备叫主设备(Master)。
其他设备去同步master的时钟和跳频模式,这些设备叫从设备(Slave)。 …


经典 蓝牙连接 过程 想要了解 蓝牙连接 过程,必须先了解3个概念: 1,链路Link:物理链路,是基带协议中的概念,包括ACL链路和SCO链路两种,前者主要用于传递数据,后者传递语音。一对 蓝牙 设备,只存在一条ACL链路,允许存在3条SCO链路 2,信道channel: 这是L2DAP协议中的概念,是逻辑信道,信道的端点用信道标示符CID表示,用两个字节表示,所以最多存在65536个信道.即一条ACL链路可以存在最多65536个信道.信道包括信令信道和数据信道,通过信令信道建立数据信道,然后由数据信道传输数据.
文章目录一、物理链路二、ACL 连接 过程概述三、ACL 连接 过程步骤详解 一、物理链路 同步链路(SCO): 主要用来传输对实时性要求很高的数据,比如 蓝牙通话

我们可以将sco比喻为tcp/ip的udp传输模式,他的数据传输具有实时性
sco可在不被选中的情况下发送sco数据包
当数据发生错误时,不提供错误重传机制

异步链路(ACL): 主要用于传输对实时性要求不是很高的场景,比如听歌,所以a2dp就是使用的是acl的传输方

可以将acl比喻为tcp/ip的tcp传输,主要运用于对数据的实时性要求不是很高


  物理信道(Physical Channel)  所有的无线电通信都是发生在预先定义的信道之上, 蓝牙也不例外。但Bluetooth Smart采用的信道却与 蓝牙 BR/ EDR有些许不同,尤其是在Bluetooth Smart引入了广播信道。   BR/ EDR:79个信道,信道索引为 0 ~ 78,覆盖范围为 2400 ~ 2483.5MHz  Bluetooth Smart:40个信道,信道索引为0...
BR/ EDR/LE控制器架构模块( BR/ EDR/LE Controller Architectural Blocks)

在合并BR/EDR和LE系统的实现中,体系结构模块可以在系统之间共享,或者每个系统都有自己的模块实例化。

1、设备管理器(device manager)

设备管理器是基带中控制蓝牙设备的一般行为的功能块。负责蓝牙系统中与数据传输没有直接关系的所…


      最近在做 蓝牙开发,刚接触时傻傻的分不清 经典 蓝牙和低功耗 蓝牙的区别,一直用开发低功耗 蓝牙的方法去 连接 经典 蓝牙 设备,最后当然是一直 连接不上了。在此记录下 经典 蓝牙和低功耗 蓝牙的区别和联系。

Android中的蓝牙

        说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数…


请参考NORDIC的EXPERTER写的这个博客。https://blog.nordicsemi.com/getconnected/the-difference-between-classic-bluetooth-and-bluetooth-low-energy
这几天要用Sniffer抓包嗅探 蓝牙的信息,要用到Link Key,官方并没有提供API查看,去StackOverFlow找了下,原来Android直接把这个Key放在了文件系统里面。

root@android:/data/misc/bluetoothd/7C:8E:E4:99:8F:6F # cat linkkeys
cat linkkeys
94:CE:2C:44:4A:7C FF047


作用:让蓝牙芯片进入发现周围蓝牙设备的模式,它的返回值是周围蓝牙设备的信号。

对应的HCI命令:HCI_inquiry

输入的参数有如下三个:一个是LAP(蓝牙地址分为三部分:

LAP(24位地址低端部分)、UAP(8位地址高端部分)和NAP(16位无意义地址部分)。

其中,NAP和UAP是生产厂商的唯一标识码,必须由蓝牙权威部门分配给不同的厂商。

而LA…


通过Page操作获取到远端 设备的信息,接下来建立描述一下 连接建立 过程

ACL建立连接的流程:

一共9个步骤。

Step1:建立连接过程

1 Create Connection Command

底层收到这条指令之后就携带BD_ADDR去做Page。

Step2:交换特征,这一步可选。

Step 3:主机的Link Manager向从机发送连接请求,从机响应连接请求




蓝牙的建立 过程是一个复杂的 过程,即使有过相当一段工作和使用经验的人,如果不仔细去了解还是理解不全。 平时我们用 蓝牙耳机听音乐,和不同的 设备共享文件,打电话等,都有一个配对-- 连接--传输数据的 过程。 配对,其实就是一个认证的 过程

为什么不配对便无法建立连接

任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用认证的方式进行数据交互。同时


[DESCRIPTION]   在BT2.1及之后版本, 蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式。这种新的配对方式操作更为简单、安全性也更强。目前市面上大部分 蓝牙 设备均已支持简单配对方式。 从用户角度上看,传统的PIN Code Pairing 需要双方 蓝牙 设备输入配对密码(如果双方都有输入 设备的话),而简单配
1、XAMPP无法启动Apache    Xampp的获得和安装都十分简单,你只要到以下网址:   http://www.apachefriends.org/zh_cn/xampp.html 下载xampp即可,我安装的是windows版本的Installer安装包,只要根据它的安装提示一路安  装下去就可以了,十分方便快捷。   不过,安装目录最好选择C盘之外的其它磁盘,据某些...
1.启动xampp时,点击Apache和MySQL的Start按钮,正常启动时显示绿色,如果不能,查看端口是否被占用,修改相关配置文件即可,这部分网上有很多讲解。2.点击MySQL后面的Admin按钮进入http://localhost/phpmyadmin/时提示错误:“您应升级到 MySQL 5.5.0 或更高版本” 解决方法是: (1)首先,找到common.inc.php文件,我的位于C
name : btstack_at_00-1A-7D-DA-71-11_link_key_for_00-46-39-19-62-29.txt

content :10A78A4B1F6A0F490D84205DC865F6F74

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值