1. 问题描述

环境:OpenHarmony 5.1.0GK6780开发板,蓝牙模组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信令交互OpenStart请求均成功,音箱端也接受了流启动。

2. 音频数据发送受阻:前9SBC音频包发出后,snoop中再无新的SBC数据帧,控制器已停止下行发送。同时,`Number of Completed Packets`事件停止上报,说明音箱端对已发出的数据包不再作任何确认响应。此后约20秒内,控制器未收到音箱的任何链路层数据包(包括ACK或保活帧),链路实际上已处于单向静默状态,无法正常交互。

3. 超时断开:因长时间收不到音箱回应,控制器在约20秒后触发链路监督超时(蓝牙规范默认值),主动断开连接。

综上所述,根本原因是:zt9612U控制器在与该音箱建立A2DP流后,音箱端停止回复媒体数据确认(也无保活帧),导致主机数据无法下发,约20s后控制器因链路监督超时主动断开链路。这是本次播放无声问题的直接原因。

3. 解决方案

Host端无法干预蓝牙模组与蓝牙音箱的数据交互过程,需蓝牙模组(ZT9612U)厂家查明为什么连接建立后有概率链路突然断连。目前厂家正在解决。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐