在无线音频的世界里,一场静默却深刻的革命正在进行。
它,就是LE Audio。
这不仅仅是一次技术迭代,而是从底层重新定义声音如何被创造、传输和体验的范式转移。其复杂性令人敬畏——它并非单一技术,而是一套精密的生态系统:全新的LC3编解码器以超凡效率重塑音质与功耗的平衡,多重串流音频让真无线立体声达到前所未有的稳定与同步,而音频广播功能则打破了“一对一”连接的百年窠臼,让声音如电台般自由播撒。
然而,正是这种复杂性,构成了我们必须深入学习它的不可辩驳的理由。未来的声音图景将由它绘制:从下一代真无线耳机、无障碍助听设备到公共场所的沉浸式音频导览、多语言广播,乃至元宇宙中清晰无缝的语音交互。不了解LE Audio,将意味着在即将到来的音频浪潮中失去对话的基石。
这不仅仅关乎技术本身,更关乎我们如何连接彼此,如何感知世界。让我们共同开启这段探索之旅,揭开LE Audio的复杂面纱,看清它为何必将成为未来数年里,每一个科技从业者、音频爱好者乃至普通用户都无法忽视的关键命题。
接下来的系列文章,我们将逐步拆解这座精妙的技术大厦。
同时我也录制了一系列的Le audio视频,有兴趣的可以咨询,我会带领你们入门Le audio!翻过大山,眼下皆是风景!!!
——————————————————————————————————————————————
视频链接:https://item.taobao.com/item.htm?id=1001969040805&mi_id=000032T4qZX9WZoRwX6YbxlNUaZOfOI6XoxDx0jxsfnwlEc&spm=a21xtw.29178619.0.0
Le Audio文章目录:
还在为蓝牙BLE Audio的学习苦恼吗?安排下,让你一文彻底了解Le Audio蓝牙低功耗音频的技术-CSDN博客
———————————————————————————————————————————
一. 周期广播流程

我们来拆解下流程,分别介绍下以下几个command
1. HCI_LE_Set_Extended_Advertising_Parameters 指令介绍
该命令是 蓝牙 5.0 引入的 HCI 命令(Opcode 0x0036),用于配置 扩展广告(Extended Advertising)的参数。与传统的 LE_Set_Advertising_Parameters 相比,它支持更多的广告类型、更灵活的 PHY(1M、CODED、2M)、更大的数据载荷以及多个广告集。

|
参数 |
长度 |
说明 |
|
Advertising_Handle |
1 octet |
广告集句柄,范围 0x00–0xEF。用于标识要配置的广告实例(可同时运行最多 240 个广告集)。 |
|
Advertising_Event_Properties |
2 octets |
位掩码,定义广告事件的属性。常用取值(Bit 0~15): • 0x0001:可连接扫描(Connectable + Scannable) • 0x0002:可扫描(Scannable) • 0x0004:可定向(Directed) • 0x0008:高通广播(High Duty Cycle) • 0x0010:传统广告(Legacy) • 0x0020:匿名广告(Anonymous) • 0x0040:包含 TX 功率(Include Tx Power) |
|
Primary_Advertising_Interval_Min |
3 octets |
主广告间隔最小值,单位 0.625 ms范围 0x000020 到 0xFFFFFF,对应 20 ms ~ 10485.76 s。实际间隔为 Min ≤ 实际 ≤ Max |
|
Primary_Advertising_Interval_Max |
3 octets |
主广告间隔最大值(同上,通常设置 Min = Max 以获得固定隔)。 |
|
Primary_Advertising_Channel_Map |
1 octet |
主广告使用的信道(37/38/39),位掩码: • 0x01 = 37 信道 • 0x02 = 38 信道 • 0x04= 39 信道 默认通常为 0x07(全部三个信道)。 |
|
Own_Address_Type |
1 octet |
本地设备地址类型: • 0x00:公开地址 • 0x01:随机地址 • 0x02:可解析私有地址(RPA,Controller 生成) • 0x03:可解析私有地址(Host 生成) |
|
Peer_Address_Type |
1 octet |
对端地址类型(仅定向广告有效): • 0x00:公开地址 • 0x01:随机地址 • 0x02:可解析私有地址(仅当使用定向广告时) |
|
Peer_Address |
6 octets |
对端蓝牙设备地址(定向广告的目标地址)。非定向广告时可全填 0。 |
|
Advertising_Filter_Policy |
1 octet |
过滤策略,控制响应哪些设备的扫描请求/连接请求: • 0x00:接受任何设备的扫描/连接 • 0x01:仅接受白名单中的设备 • 0x02:仅接受所有设备的扫描请求,但仅接受白名单设备的连接 • 0x03:仅接受白名单设备的扫描请求,但接受所有设备的连接 • 更高值用于扩展广告策略,参考规范。 |
|
Advertising_TX_Power |
1 octet |
广告发射功率(单位 dBm,有符号整数,范围 -127 ~ +20)。常用特殊值: • 0x7F:由 Controller 自动选择最优功率(推荐) • 其他值:实际发射功率(需 Controller 支持)。 |
|
Primary_Advertising_PHY |
1 octet |
主广告所采用的 PHY: • 0x01:LE 1M PHY • 0x02:LE CODED PHY(长距离) • 0x03:LE 1M PHY 与 LE CODED PHY 的混合(实际由Controller 选择) 注意:扩展广告的主通道依然在 37/38/39 上,但可使用 CODED PHY。 |
|
Secondary_Advertising_Max_Skip |
1 octet |
辅助广告同步时最大可跳过的 AUX 包数量(0~0xFF)。通常设为 0x00,表示不跳过;用于设备快速同步到辅助广告链路上。 |
|
Secondary_Advertising_PHY |
1 octet |
辅助广告所使用的 PHY: • 0x01:LE 1M PHY • 0x02:LE CODED PHY • 0x03:LE 2M PHY 扩展广告的数据包将在辅助信道上以该 PHY 发送。 |
|
Advertising_SID |
1 octet |
广告集 ID(0~0x0F),用于在扫描响应中标识广告集。同一设备的不同广告集可以设置相同的 SID,便于扫描端过滤。 |
|
Scan_Request_Notification_Enable |
1 octet |
是否使能扫描请求通知(通过 LE Scan Request Received 事件上报): • 0x00:禁用通知 • 0x01:使能通知 |

2. LE Set Periodic Advertising Parameters

对于Le audio我们先来介绍V1了哈,就不介绍V2了
- Advertising_Handle(广播句柄):
-
- 含义:一个0x00至0xEF之间的标识符。这是关联扩展广播集与周期性广播集的唯一纽带。
- 关键点:你必须先使用 LE Set Extended Advertising Parameters 命令创建一个具有相同 Advertising_Handle 的扩展广播集。周期性广播集是其附属。
- Periodic_Advertising_Interval_Min / Max(最小/最大广播间隔):
-
- 含义:定义广播事件之间的时间间隔范围,单位为0.625毫秒。
- 关键约束:Min 必须 ≤ Max。控制器会在此范围内选择一个最优值。对于音频等实时流,此值通常非常小(如 7.5 ms ~ 10 ms)。
- Periodic_Advertising_Properties(广播属性):
-
- 含义:Include TxPower in the advertising PDU:如果第6位被设置(即值为1),则表示广播数据包中应包含传输功率值。传输功率值通常用于指示设备发送广播数据时的功率级别,这有助于接收方估计信号强度和可能的连接质量。

3. HCI_LE_Set_Extended_Advertising_Enable 指令介绍
该命令(Opcode 0x0039)是蓝牙 5.0 引入的 HCI 命令,用于启用或禁用一个或多个扩展广告集(Extended Advertising Sets)。通过该命令,可以同时控制多个广告实例的启动/停止,并且可以为每个广告实例指定运行时长(Duration)和最大发送事件数。
|
参数 |
长度 |
说明 |
|
Enable |
1 octet |
启用或禁用广告: • 0x00:禁用广告集(根据后续指定的句柄列表停止) • 0x01:启用广告集(根据后续指定的句柄列表启动) • 其他值保留。 |
|
Num_Sets |
1 octet |
指定本次操作的广告集数量,即后续参数中 Advertising_Handle 数组的长度。取值范围 0x01到 0x80 (最多 128 个集)。当 Enable = 0x00(禁用)时,可以设为 0x00 表示停止所有正在进行的广告(忽略后续数组)。 |
|
Advertising_Handle[i] |
1 octet × N |
广告集句柄数组(长度为 Num_Sets)。每个句柄由 LE_Set_Extended_Advertising_Parameters命令分配或指定(有效范围 0x00–0xEF)。 |
|
Duration[i] |
2 octets × N |
每个广告集的运行时长,单位 10 ms。取值范围:0x0001 到 0xFFFF(即 10 ms ~ 655.35 s)。 • 当 Duration = 0x0000时,表示无限期运行,直到被禁用。 • 控制器会在广告集启动后持续发送广告,直到达到 Duration 时间;超时后自动停止该广告集。 • 如果同时启用多个广告集,它们的计时器独立运行。 |
|
Max_Extended_Advertising_Events[i] |
1 octet × N |
每个广告集在 Duration时间内最多可发送的扩展广告事件数。 • 0x00:无限制(只要时间未到,就一直发送)。 • 0x01 ~ 0xFF:限制发送的事件数量。控制器会在达到数量或超时(两者先到者)后停止广告。 • 该参数适用于精细控制广告广播的频次(例如只发送固定次数的定向广告后自动停止)。 • 若 Duration = 0x0000 且 Max_Events = 0,广告无限运行。 |

4. LE Set Periodic Advertising Enable

- Enable(使能标志)
-
- 0x00:Disable(禁用):停止该广播集的周期性广播。
- 0x01:Enable(启用):开始周期性广播。
- 这是指令的核心开关,直接决定周期性广播是否活跃。
- Advertising Handle(广播句柄)
-
- 范围:0x00 到 0xEF(与扩展广播集一致)。
- 标识要启用或禁用的具体广播集。
- 必须与之前使用 LE Set Extended Advertising Parameters 创建的广播集句柄匹配。

5. LE Set Periodic Advertising Data

- Advertising Handle(广播句柄):
-
- 这是一个8位的标识符(0x00 – 0xEF)。
- 在启用扩展广播时,一个控制器可以同时管理多个“广播集”。每个广播集都有一个唯一的 Advertising Handle。
- 这个指令通过指定 Advertising Handle 来明确操作的是哪一个广播集的数据。
- Operation(操作):
-
- 指定此次指令要执行的操作。
- 0x00:保留
- 0x01:Intermediate Fragment(中间片段):表示本次设置的数据不是完整的广播数据,而是一个片段。用于数据长度超过单个HCI指令容量时的分片传输。
- 0x02:First Fragment(第一个片段):表示这是分片传输的第一个数据块。
- 0x03:Last Fragment(最后一个片段):表示这是分片传输的最后一个数据块。
- 0x04:Complete Data(完整数据):表示本次传输的数据就是完整的广播数据,无需分片。这是最常用的操作。
- Advertising Data(广播数据):
-
- 这就是你想要通过周期性广播发送出去的实际数据内容。
- 数据的格式遵循 AD Structure 的规则。每个AD Structure由一个长度字节、一个AD Type(数据类型)字节和实际数据组成。
- 例如,可以包含:
-
-
- 本地名称 (AD Type: 0x09 或 0x08)
- 广播标志 (AD Type: 0x01)
- 16位服务UUID列表 (AD Type: 0x03)
- 制造商自定义数据 (AD Type: 0xFF) —— Beacon常用
- 发射功率 (AD Type: 0x0A)
-
-
- 数据总长度不能超过控制器支持的最大值(对于扩展广播,最多251字节)。

二. BIG/BIS流程

1. HCI_LE_Create_BIG
HCI_LE_Create_BIG 命令是蓝牙5.2核心规范为支持 LE Audio 而引入的关键命令。它负责创建一个广播等时流(Broadcast Isochronous Group, BIG),这也是实现蓝牙广播音频(Auracast™)的基础。
BIG 由一个或多个广播等时流(Broadcast Isochronous Stream, BIS) 组成,可以将音频数据以一对多的方式广播给无数个接收者,是公共场合(如机场、健身房、餐厅)音频共享的核心技术。
该命令是主机端(Host)用来配置和控制控制器端(Controller)的,建立广播音频所需的所有参数都在这里指定。
|
参数 |
大小 |
描述 |
|
BIG_Handle |
1 octet |
BIG的唯一标识符,由主机(Host)自行分配和管理-2 ,用于后续控制该BIG。取值范围: 0x00 到 0xEF。 |
|
Advertising_Handle |
1 octet |
关键:关联到一个已配置好的周期性广播(Periodic Advertising) 的句柄。广播数据将搭载在这个周期性广播的通道里发送出去。 |
|
Num_BIS |
1 octet |
该BIG中包含的BIS(音频流)总数。一个BIG最多可包含31个BIS。 |
|
SDU_Interval |
3 octets |
服务数据单元(SDU)的间隔,单位为微秒(μs)。它决定了发送一个SDU(通常是编码后的音频帧)的时间频率。 |
|
Max_SDU |
2 octets |
单个SDU的最大大小,单位为字节(Octets)。例如,LC3音频编码在48kHz下可能设置为 ~155字节。 |
|
Max_Transport_Latency |
2 octets |
最大传输延迟,单位为毫秒(ms)。这定义了从数据准备好发送到接收端成功接收到的最长时间。 |
|
RTN (Retransmission Number) |
1 octet |
每条PDU的重传次数。这是一个建议值,控制器(Controller)可能根据信号质量调整。 |
|
PHY |
1 octet |
BIS使用的物理层(PHY)模式,是位掩码,支持设定多种模式:0x01= LE 1M,0x02= LE 2M,0x04= LE Coded。 |
|
Packing |
1 octet |
BIS子事件的排列方式,当BIG中包含多个BIS时生效 :0x00=顺序,0x01=交错。这是一个建议值。 |
|
Framing |
1 octet |
BIS数据PDU的格式和模式:0x00=未分帧,0x01=分帧。这是一个建议值。 |
|
Encryption |
1 octet |
加密开关:0x00=不加密,0x01=加密。启用加密后,BIG的数据会被保护。 |
|
Broadcast_Code |
16 octets |
广播密码。与Encryption配合使用,当Encryption 启用时,接收端必须提供完全一致的密码才能解密和收听。 |

2. HCI_LE_Setup_ISO_Data_Path
是蓝牙核心规范(Bluetooth Core Specification)中用于 LE Audio(低功耗音频) 场景的关键 HCI 命令。
它的作用是:在已经建立好的等时信道(ISO Channel,即 CIS 或 BIS)上,为主机(Host)和控制器(Controller)之间建立一条 等时数据路径,同时可以指定路径所用的 编解码器(Codec) 及详细配置。
可以理解为:先建好“管道”(等时连接),再用这个命令为管道铺设“数据线”并决定“怎么编码”。
Connection_Handle (2 字节)
- 含义:指定目标等时信道(CIS 或 BIS)的连接句柄。
- 取值范围:0x0000 – 0x0EFF(有效句柄范围)
- 要求:该连接必须已经建立完成,否则命令会失败。
Data_Path_Direction (1 字节)
- 含义:数据路径的方向(从控制器的角度定义)。
- 取值:
-
- 0x00:输入方向(Input) – 数据从 主机 → 控制器(通常用于发送 / TX)
- 0x01:输出方向(Output) – 数据从 控制器 → 主机(通常用于接收 / RX)
- 约束:同一个连接句柄的同一个方向,只能建立一条数据路径。重复执行会失败。
Data_Path_ID (1 字节)
- 含义:指定数据在主机与控制器之间传输所使用的物理接口。
- 取值:
-
- 0x00:标准 HCI 传输层(最常用)
- 0x01 – 0xFE:厂商自定义路径(如 PCM、I2S 等)
- 0xFF:保留
Codec_ID (5 字节)
- 含义:标识要使用的编解码器。
- 结构:
-
- 第 1 字节:编解码器类型
- 第 2-3 字节:公司 ID(Company ID,小端序)
- 第 4-5 字节:厂商自定义编解码器 ID
Controller_Delay (3 字节)
- 含义:控制器端的固定处理延迟,单位是 微秒 (μs)。
- 解释:数据从控制器接口到达空中(或反向)的固定延时。
- 类型:24 位无符号整数。不确定时可填 0。
Codec_Configuration_Length (1 字节)
- 含义:紧跟在后面的 Codec_Configuration 数据的字节长度。
- 取值范围:0x00 – 0xFF
- 注意:如果没有额外配置,填 0x00。
Codec_Configuration (可变长度,长度由上一字段决定)
- 含义:编解码器的具体配置参数(OCTETS)。
- 内容格式:由 Codec_ID 指定的编解码器决定。例如 LC3 编码可以配置采样率、帧时长等。
- 长度要求:必须等于 Codec_Configuration_Length。

![【LE Audio】PBP精讲[2]: 公共广播的配置骨架与角色分工-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260809162700-6a78aa5469384-220x150.png)