1. 问题现象与初步分析
1.1 故障现象描述
在BLE Audio(LE Audio)双耳设备连接成功后,当用户尝试通过视频应用播放媒体内容时,出现播放失败且耳机无音频输出的情况。具体表现为:
- 设备已成功建立双耳unicast连接
- 应用层触发播放指令后,音频流未能正常建立
- ASE(Audio Stream Endpoint)状态机在Codec配置阶段出现异常
- 伴随两个ACL链路的意外断开(disconnect)
1.2 关键日志解析
1.2.1 HCI日志分析
从hcilog可见ASE状态机流转异常:
code复制[时间戳] ASE State: IDLE -> CODEC_CONFIGURED
[时间戳] ACL Disconnect: handle=0x0A, reason=0x16
[时间戳] ACL Disconnect: handle=0x0B, reason=0x16
状态转换在到达CODEC_CONFIGURED后停滞,未按预期进入后续状态(QOS_CONFIGURED/ENABLING等),随后两个ACL链路相继断开(reason code 0x16表示远端用户终止连接)。
1.2.2 Logcat关键信息
code复制E/bt_stack: [ASM] SetStateTimeout: state=CODEC_CONFIGURED, device=XX:XX:XX:XX:XX
W/bt_btm: btm_sec_disconnected - handle 0x0A, reason 0x16
E/LeAudio: GroupStream failed - SET_CODEC_CONFIGURED_TIMEOUT
关键错误点:
- 状态机在CODEC_CONFIGURED状态触发3.5秒超时(SetStateTimeout)
- 超时后协议栈主动断开ACL链路
- 错误码SET_CODEC_CONFIGURED_TIMEOUT表明设备未在规定时间内响应
注意:ACL链路断开是结果而非原因,核心问题在于状态机超时触发保护性断开
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 代码逻辑与流程拆解
2.1 整体流程概览
典型LE Audio unicast起播流程应包含以下阶段:
- Au
