Le Audio ASCS enable operation流程介绍
文章摘要: LEAudio正在重塑无线音频技术,其核心ASCS(音频流控制服务)通过Enable操作激活音频流端点(ASE),实现编解码器配置与传输通道的绑定。Enable流程包括:客户端发起指令、服务器校验、状态切换至Enabling,最终进入Streaming状态,确保音频数据稳定传输。该技术支撑真无线耳机、助听设备等场景,是未来音频生态的关键。详细流程与状态机解析可参考附带的视频及文章目录。
在无线音频的世界里,一场静默却深刻的革命正在进行。
它,就是LE Audio。
这不仅仅是一次技术迭代,而是从底层重新定义声音如何被创造、传输和体验的范式转移。其复杂性令人敬畏——它并非单一技术,而是一套精密的生态系统:全新的LC3编解码器以超凡效率重塑音质与功耗的平衡,多重串流音频让真无线立体声达到前所未有的稳定与同步,而音频广播功能则打破了“一对一”连接的百年窠臼,让声音如电台般自由播撒。
然而,正是这种复杂性,构成了我们必须深入学习它的不可辩驳的理由。未来的声音图景将由它绘制:从下一代真无线耳机、无障碍助听设备到公共场所的沉浸式音频导览、多语言广播,乃至元宇宙中清晰无缝的语音交互。不了解LE Audio,将意味着在即将到来的音频浪潮中失去对话的基石。
这不仅仅关乎技术本身,更关乎我们如何连接彼此,如何感知世界。让我们共同开启这段探索之旅,揭开LE Audio的复杂面纱,看清它为何必将成为未来数年里,每一个科技从业者、音频爱好者乃至普通用户都无法忽视的关键命题。
接下来的系列文章,我们将逐步拆解这座精妙的技术大厦。
同时我也录制了一系列的Le audio视频,有兴趣的可以咨询,我会带领你们入门Le audio!翻过大山,眼下皆是风景!!!
------------------------------------------------------------------------------------------------------------------------------------------
Le Audio文章目录:
https://wlink.blog.csdn.net/article/details/158457264?spm=1001.2014.3001.5502
---------------------------------------------------------------------------------------------------------------------------------
本文力争给大家讲明白几个核心点:
- ASCS enable的作用是什么?
- ASCS enable的流程是什么?
带着这两个疑问我们就开始文本的介绍!
一. enable的作用
在LE Audio的ASCS里,Enable操作是一个非常关键的“启动按钮”。它触发音频流端点(ASE)与其底层传输通道正式绑定,为数据流的建立铺平道路。
📡 ASCS与ASE:音频流控制的中枢与端点
首先,要理解Enable,需要先了解ASCS及其管理的ASE是什么:
- ASCS (Audio Stream Control Service):是LE Audio架构中用于管理单播音频流的核心控制服务。客户端(如手机)通过它来配置、启动、停止和释放音频流-。
- ASE (Audio Stream Endpoint):代表一个设备上用于发送或接收音频的逻辑实体,就像设备上的“音频端口”。手机、耳机等设备根据其角色(Source源/Sink汇),可以拥有一个或多个ASE。
⚙️ 从配置到启动:ASE的状态机
我们可以把Enable操作,理解成指挥一个ASE启动的过程。
ASE的状态机定义了它在整个生命周期中的各种状态。在收到Enable指令前,一个ASE的典型生命路径是这样的:
Idle(空闲, 0x00): ASE的初始状态,没有进行任何配置。Codec Configured(编解码器已配置, 0x01): 客户端为ASE配置了音频编解码器(如LC3编码),使之“准备好工具”。QoS Configured(服务质量已配置, 0x02): 客户端进一步配置了QoS(服务质量)参数,如数据包间隔、时延等,相当于制定了“运输规则”。
此时,音频流的编解码和传输规则都已配置就绪,就像一个运动员已穿戴好装备、站在了起点,只待发令枪响,而Enable就是这把发令枪。
🎬 Enable的详细作用
当ASE处于 QoS Configured (0x02) 状态时,客户端可以发送Enable指令。执行此操作后:
- 状态转换至
Enabling:ASE的状态会立即从QoS Configured(0x02) 切换至Enabling(0x03)。这是一个临时的中间状态,表示系统正在进行最后的启动处理。 - 执行关键绑定工作:
-
- 绑定传输通道:将ASE与先前配置好的CIS(连接等时流) 传输通道进行绑定。CIS是LE Audio为低延迟发送高质量音频而建立的专属通道。
- 加载元数据(Metadata):将本次音频流的声音上下文信息(如音频类型是“音乐”还是“语音”)加载到ASE上。
- 最终进入
Streaming(流传输中) 状态:
-
- 对于音频接收设备(Sink ASE):耳机等设备在Enabling状态完成后,会自动执行
Receiver Start Ready操作,将状态最终转换成Streaming。 - 对于音频发送设备(Source ASE):在收到接收端就绪的信号后,状态最终也会变更为
Streaming。
- 对于音频接收设备(Sink ASE):耳机等设备在Enabling状态完成后,会自动执行
Streaming (0x04) 是音频流的正常运行状态,此时,音乐、通话等音频数据便开始在设备间稳定流动。
💁♀️ 一个典型的操作流程

前置条件
- ASE 已处于
QoS Configured (0x02)状态,即已完成编解码器配置和 QoS 参数配置。
步骤 1:客户端发起 Enable 操作
客户端(如手机)向服务器(如耳机)的 ASE Control Point 特征写入 Enable 操作码及必要的元数据(如音频上下文类型、语言等)。
步骤 2:服务器本地校验
服务器收到请求后,进行以下检查:
- 目标 ASE 是否确实处于
QoS Configured状态; - 提供的元数据是否在支持范围内。
如果校验不通过,服务器会返回对应的错误码(如 Operation Not Permitted、Metadata Rejected 等)。
步骤 3:返回操作成功通知(ASE Control Point)
校验通过后,服务器立即通过 ASE Control Point 特征返回一个 Success 响应(Response Code 0x00)。
这个通知表明:Enable 指令已被服务器正确接收并接受,此时 ASE 的状态尚未改变。
步骤 4:状态转换为 Enabling 并同步
服务器内部将 ASE 状态从 QoS Configured 切换为 Enabling (0x03),然后通过 ASE 特征值 发送状态通知,告知客户端当前 ASE 已进入启用过渡状态。
二. 流程介绍
1. 状态机管理
我们在这个之前已经介绍过了ASCS的状态机,对应的Source/Sink流转如下:



从这个表格中可以看到在什么时机可以发送enable,并且只有client可以发送,一目了然,下面我们就来介绍下enable的流程
2. 流程介绍
我们在前面已经介绍过流程了,跟下面的基本没有区别,下面的是BAP协议的sample流程示意图:

有了这个流程图,我们就结合btsnoop来说明下每个命令或者通知的格式,整个流程btsnoop如下:

a. 发起 enable 操作
|
字段 |
大小 (字节) |
描述 |
|
Opcode |
1 |
|
|
Number_of_ASES |
1 |
本次 Enable 操作涉及的 ASE 总数,必须 ≥ 1 |
|
ASE_ID[i] |
1 |
第 i 个 ASE 的标识符 |
|
Metadata_Length[i] |
1 |
第 i 个 ASE 对应的 Metadata 参数长度(字节) |
|
Metadata[i] |
可变 |
LTV 格式的元数据,仅当 |

b. 通知(Notify)操作结果(成功)
格式如下:
|
字段 (Field) |
大小 (Octets) |
描述 (Description) |
|
Opcode |
1 |
本次响应对应的客户端发起的 ASE 控制操作的操作码(例如 enable 的 Opcode 为 0x03) |
|
Number_of_ASEs |
1 |
服务器提供响应的 ASE 总数。 |
|
ASE_ID[i] |
1 |
该 ASE 的标识符。 |
|
Response_Code[i] |
1 |
若服务器成功完成客户端发起的 ASE 控制操作,则设为 0x00;否则设为表 5.1 中定义的错误码。 |
|
Reason[i] |
1 |
若服务器成功完成操作,则设为 0x00;否则设为表 5.1 中定义的原因值。 |

c. 更新并通知 ASE 的 enabling 状态
格式如下:
|
Field |
大小 (字节) |
描述 |
|
CIG_ID |
1 |
该 ASE 的 CIG_ID 参数值,由客户端在 Config QoS 操作中写入(定义见第 5.2 节) |
|
CIS_ID |
1 |
该 ASE 的 CIS_ID 参数值,由客户端在 Config QoS 操作中写入(定义见第 5.2 节) |
|
Metadata_Length |
1 |
该 ASE 的 Metadata 字段长度 |
|
Metadata |
可变 |
LTV(Length-Type-Value)格式的元数据;仅当该 ASE 的 |

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)