news 2026/10/21 5:26:52

经典蓝牙和低功耗蓝牙的通信建立过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典蓝牙和低功耗蓝牙的通信建立过程

蓝牙通信建立过程要看是经典蓝牙(BR/EDR)还是BLE,两者流程类似但协议细节不同。

作为嵌入式开发工程师,通常最常接触的是:

  • BLE:Advertising → Scan → Connect → Pair → Data
  • Classic:Inquiry → Paging → Connect → Pair → Data

一、BLE通信建立过程

以手机连接心率带为例。

1. Advertising(广播)

BLE设备上电后先发送广播包:

Heart Rate Sensor ↓ Advertising Channel (37/38/39)

广播包中包含:

Device Name UUID MAC Address Flags

例如:

Name = HRM_001 Service UUID = 0x180D

2. Scanning(扫描)

手机作为 Central:

Scan Request

监听:

Ch37 Ch38 Ch39

收到广播:

Advertisement Packet

如果需要更多信息:

Scan Request ↓ Scan Response

3. Connection(建立连接)

手机发出:

CONNECT_IND

告诉设备:

Connection Interval Slave Latency Supervision Timeout

例如:

Interval = 50 ms Latency = 0 Timeout = 4 s

从这一刻开始:

Peripheral <-> Central

进入连接状态。


4. Connection Event

连接后不会一直发数据。

而是:

50ms ↓ Connection Event ↓ Sleep ↓ 50ms ↓ Connection Event

例如:

0ms 50ms 100ms 150ms ...

每个连接事件可以交换数据。

这也是BLE省电的原因。


5. Pairing(配对)

如果需要安全通信:

Pairing Request ↓ Pairing Response

协商:

Just Works Passkey Numeric Comparison OOB

例如:

123456

用户确认数字。


6. Bonding(绑定)

双方保存:

LTK (Long Term Key) IRK (Identity Key) CSRK (Signing Key)

以后再次连接:

直接加密 无需再次输入密码

7. GATT发现

连接建立后:

Service Discovery

查找设备支持什么服务。

例如:

Heart Rate Service Battery Service Device Info Service

Service

0x180D Heart Rate Service

下面有多个Characteristic。


Characteristic

Heart Rate Value

UUID:

0x2A37 ``

支持:

Read Write Notify `

8. 数据传输

例如开启Notify:

Enable Notification

设备主动上报:

HeartRate = 72 HeartRate = 73 HeartRate = 74

无需不停Read。


BLE完整流程

Power On ↓ Advertising ↓ Scanning ↓ Connection ↓ Pairing ↓ Encryption ↓ Service Discovery ↓ Read/Write/Notify

二、经典蓝牙(BR/EDR)通信建立过程

比BLE复杂。


1. Inquiry(设备发现)

主设备发:

Inquiry

附近设备响应:

Inquiry Response

返回:

BD_ADDR Class of Device Clock Offset

例如:

00:11:22:33:44:55 Bluetooth Speaker

2. Paging(寻呼)

知道设备地址后:

Page Request

建立物理链路。

Master ↓ Page ↓ Slave

成功后建立:

ACL Link

3. Link Establishment

创建基带连接:

Baseband LMP ``

交换能力:

Feature Exchange Version Info

4. Pairing

双方协商:

PIN Passkey SSP

现代蓝牙一般是:

Secure Simple Pairing

5. Authentication

验证身份:

Challenge Response

确认合法设备。


6. Encryption

开启链路加密:

E0 AES

(新版本主要使用AES相关机制)


7. Profile建立

经典蓝牙最重要的是Profile。

例如耳机:

A2DP AVRCP HFP

串口:

SPP

文件传输:

OPP

8. 数据传输

建立RFCOMM后:

UART Data ↓ RFCOMM ↓ L2CAP ↓ ACL

开发时经常看到:

SPP Connected

就是已经完成所有连接过程。


Classic Bluetooth完整流程

Power On ↓ Inquiry ↓ Page ↓ ACL Connection ↓ Pairing ↓ Authentication ↓ Encryption ↓ Profile Setup ↓ Data Transfer

三、从协议栈角度看BLE

嵌入式面试特别喜欢问这一张图:

Application ↑ GATT ↑ ATT ↑ L2CAP ↑ HCI ↑ Link Layer ↑ PHY

建立连接时各层作用:

PHY

负责:

2.4GHz无线收发

Link Layer

负责:

Advertising Scanning Connecting Channel Hopping

HCI

负责:

Host Controller

之间通信。

常见日志:

HCI_LE_Create_Connection

L2CAP

负责:

数据分包 重组

ATT

负责:

Attribute访问

GATT

负责:

Service Characteristic Descriptor

四、实际抓包看到的连接过程

使用 Ellisys 或 Frontline 抓BLE包时经常看到:

ADV_IND ADV_IND ADV_IND ↓ SCAN_REQ ↓ SCAN_RSP ↓ CONNECT_IND ↓ LL_FEATURE_REQ ↓ LL_VERSION_IND ↓ MTU Exchange ↓ Service Discovery ↓ Notification

如果你在做BLE协议栈开发,这个时序图几乎每天都会看到。

面试时最简洁的答案:

BLE: Advertising → Scanning → Connection → Pairing/Bonding → Service Discovery → Read/Write/Notify Classic Bluetooth: Inquiry → Paging → ACL Connection → Pairing → Authentication → Profile Setup → Data Transfer

这基本涵盖了蓝牙通信建立的完整流程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 5:26:28

自然语言驱动UI自动化:用Midscene替代XPath的实践与思考

在用 Midscene 做自然语言 UI 自动化之前&#xff0c;我大概有一年多的时间是跟 XPath 死磕过来的。当时接到的大部分测试任务其实没什么技术难度&#xff0c;无非是打开页面、点几个按钮、填几个表单、核对一下结果&#xff0c;可真正让人头大的反倒是“定位元素”这件事本身。…

作者头像 李华
网站建设 2026/10/21 5:26:15

JS逆向解析实战:从混淆代码到加密接口复现的完整指南

1. 拆解“JS逆向解析”到底在解决什么问题1.1 从一次真实需求说起去年帮一个做数据聚合的朋友处理过一个需求&#xff1a;他们需要定期从某个公开的行业信息平台上抓取一批商品价格数据&#xff0c;用于内部比价分析。听起来很简单对吧&#xff1f;但实际动手才发现&#xff0c…

作者头像 李华
网站建设 2026/10/21 5:25:43

算法公开,密钥保密:从AES到RSA的密码学基石

简介&#xff1a;围绕网络安全课程设计的加密技术资料包&#xff0c;聚焦加密算法原理与编程实现&#xff0c;主要面向高校信息安全、网络工程及密码学相关专业的学生&#xff0c;也适合需要借助具体案例快速理解经典算法的初级开发者。内容以RSA等经典加密算法的原理分析、课程…

作者头像 李华
网站建设 2026/10/21 5:25:11

设备诊断系统演进:从被动响应到主动预判,用数据避免非计划停机

我从一个具体场景说起&#xff1a;某工厂一台核心机组在深夜两点报了轴承温度异常&#xff0c;值班人员按流程先确认、再上报、再联系厂家&#xff0c;等维修团队带着备件赶到现场时&#xff0c;设备已经卡死&#xff0c;整个产线停了差不多九个小时。事后统计&#xff0c;直接…

作者头像 李华
网站建设 2026/10/21 5:24:56

Linux TCP Socket编程核心解析:API细节、粘包与并发模型

1. 项目概述1.1 关于Linux Socket编程&#xff0c;最容易被忽略的一点很多初学者学Linux网络编程&#xff0c;第一个接触的就是TCP Socket。教材讲完三次握手、四次挥手&#xff0c;跟着敲一遍server.c和client.c&#xff0c;跑通了就觉得“我会了”。但真到写生产级代码的时候…

作者头像 李华
网站建设 2026/10/21 5:24:10

agent-skills:从工具调用到技能封装,构建能上岗的智能体

1. 从“会聊”到“会干”&#xff1a;agent-skills 到底在解决什么问题第一次看到 agent-skills 这个词&#xff0c;我的直觉是&#xff1a;终于有人把“智能体到底该会哪些手艺”这件事&#xff0c;从玄学拉回到了工程清单。过去一年&#xff0c;大家聊智能体&#xff0c;聊的…

作者头像 李华