蓝牙播放音乐无声问题分析
1. 问题描述
环境:OpenHarmony 5.1.0,GK6780开发板,蓝牙模组zt9612U。
现象:GK6780连上蓝牙音箱后,播放本地音乐无声。
概率:低概率
2. 分析过程
蓝牙抓包snoop日志(已去除无关的广播包日志)如下:

通过分析以上日志,我们发现以下关键信息:
|
帧序号 |
时间 |
事件 |
|
815 |
11:40:12.060 |
AVDTP Open 命令发送 |
|
821 |
11:40:12.087 |
AVDTP Open 被接受(ResponseAccept) |
|
854 |
11:40:12.560 |
AVDTP Start 命令发送 |
|
861 |
11:40:12.611 |
AVDTP Start 被接受,音频流进入 STREAMING 状态 |
|
1221 ~ 1233 |
11:40:19.882 ~ 19.962 |
主机向控制器发送 9 个 SBC 音频包(Seq 0~8) |
|
(无后续 SBC 帧) |
11:40:19.962 之后 |
再无任何 SBC 数据包从控制器发出 |
|
1500 |
11:40:39.420 |
控制器主动断开连接 Disconnect Complete, 原因:Connection Timeout (0x08)(连接超时) |
从时间线可以清楚看到:
1. 前期连接和协商完全正常:AVDTP信令交互Open、Start请求均成功,音箱端也接受了流启动。
2. 音频数据发送受阻:前9个SBC音频包发出后,snoop中再无新的SBC数据帧,控制器已停止下行发送。同时,`Number of Completed Packets`事件停止上报,说明音箱端对已发出的数据包不再作任何确认响应。此后约20秒内,控制器未收到音箱的任何链路层数据包(包括ACK或保活帧),链路实际上已处于单向静默状态,无法正常交互。
3. 超时断开:因长时间收不到音箱回应,控制器在约20秒后触发链路监督超时(蓝牙规范默认值),主动断开连接。
综上所述,根本原因是:zt9612U控制器在与该音箱建立A2DP流后,音箱端停止回复媒体数据确认(也无保活帧),导致主机数据无法下发,约20s后控制器因链路监督超时主动断开链路。这是本次播放无声问题的直接原因。
3. 解决方案
Host端无法干预蓝牙模组与蓝牙音箱的数据交互过程,需蓝牙模组(ZT9612U)厂家查明为什么连接建立后有概率链路突然断连。目前厂家正在解决。
更多推荐
所有评论(0)