BQB profile 测试中常遇到的问题点汇总
📎 原始文档:https://www.kdocs.cn/l/cpPW02GkUTYR BQB profile 测试中常遇到的问题点汇总
| 版本号 | 修订日期 | 修订说明 |
|---|---|---|
| V1.0 | 2022-06-22前 | 蓝牙做从机BQB profile 认证说明 |
| V1.1 | 2022-06-22 | 新增AC695X 蓝牙做主机BQB profile说明 |
| V1.2 | 2025-06-07 | 新增可视化JL701N Auracast profile说明 |
蓝牙从机
一、过 BQB profile首先要做以下修改:
- BQB profile 认证 蓝牙的一个很重要的特性,即是所有的蓝牙产品都无需实现全部的蓝牙规范。
不同的蓝牙产品,都将根据其产品定位及需求去实现相应的蓝牙规范。在过profile认证前,蓝牙方案商会告知认证公司,其产品支持哪些协议。认证公司以此为根据去对相应的协议进行测试。
因此过profile认证需要根据产品需要支持哪些协议,在软件中相应开启后去实验室测试,否则如果实验室扫出来所支持的协议与实际需要测试的协议不一致则会要求退回整改。
过认证前建议先与实验室了解清楚需要测试哪些项目,如果需要支持A2DP、HFP、AVRCP协议的,(部分测试项需要测试包含电话接听挂断、音量加减、上下曲、语音助手等功能)则需要告知实验室测试时如何操作。
还有部分测试项需要加按键发命令才能测过,已经罗列在“二、经常遇到的一些问题及处理建议”中,建议过认证前先看看需不需要测试相应的测试项,如果需要则加好相应按键功能后再去测试,避免反复整改。 - 如果是TWS对耳或对箱产品 调用如下接口:(每个系列都必须在蓝牙初始化后添加!!!!!!!!)
lmp_hci_set_role_switch_supported(0);
最好的话,将TWS功能关掉,用单耳/单箱测试:
#define TCFG_USER_TWS_ENABLE 0 //tws功能使能
#define TCFG_BD_NUM 1 //连接设备个数配置
- 如果需要支持测2022 A2DP/SNK/AVP/...新增测试项的 需开启AAC格式支持,同时替换第9点的库文件

- 2024更新测试标准后 2024更新测试标准后,部分测试项会出现开始测试后样机会与pts连接断开,此时需要按键发送一下命令,根据地址进行回连以继续测试:
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL); - 可视化版本 可视化版本sdk需要发命令的,则将发命令接口从user_send_cmd_prepare换成bt_cmd_prepare
- 702系列 702系列比较特殊,请直接换下面链接sdk去过认证
(注:这两版sdk需4Mflash芯片才够空间升级)
【金山文档 | WPS云文档】 C版芯片_AC702N_profile_BQB_20240222
https://kdocs.cn/l/cjjFTto1lEnf
【金山文档 | WPS云文档】 B版芯片_AC702N_profile_BQB_20250430
https://kdocs.cn/l/clCY2BJ9H4FF - 705系列 705系列比较特殊,请直接换下面链接tools包去过认证。
AC705N_profile测试_20260128_无打印_pa6ADKEY.zip
具体按键操作可参考该文档。
Profile Fail(看看蓝色字).pdf - 常用profile命令按键如下,可参考 BQB Profile常用命令按键.otl
- 过认证建议直接使用如下demo去测试 过profile测试优先使用如下demo去过认证,若想保留源代码,则需替换下列对应版本库后再去实验室测试,正常做货时再换回原来的库即可。(更换库去测试,除了更换btstack.a/btctrler.a两个库,还需按文档做其他相应修改操作,如关闭主从切换,增加对应按键命令等)
二、经常遇到的一些问题及处理建议:
A2DP
A2DP/SNK/AS/BV-02-C 处理建议:
确认产品是否支持AAC音频格式,若支持,有如下fail,可以检查一下程序是否开启AAC功能,用手机先测试一下能否支持AAC解码;若不支持,则该项case不用测试。A2DP/SNK/SYN/BV-01-C To verify that the reported delay value is correct.
The presentation of audio and video shall be synchronized,e.g the presentation has to occur without a noticeable delay
处理建议:
①在bt_profile_config.c中定义u8 a2dp_support_delay_report = 1;
②一般只需要按照①修改即可测过,如果按照①修改后还过不了,再在程序上增加一个按键,出现这个问题时,发送以下命令:
user_send_cmd_prepare(USER_CTRL_A2DP_CMD_START, 0, NULL);A2DP/SNK/AVP/BI-01-C、A2DP/SNK/AVP/BI-02-C、A2DP/SNK/AVP/BI-03-C、A2DP/SNK/AVP/BI-04-C、A2DP/SNK/AVP/BI-05-C、A2DP/SNK/AVP/BI-06-C、A2DP/SNK/AVP/BI-07-C、A2DP/SNK/AVP/BI-08-C、A2DP/SNK/AVP/BI-09-C、A2DP/SNK/AVP/BI-10-C、A2DP/SNK/AVP/BI-11-C、A2DP/SNK/AVP/BI-12-C、A2DP/SNK/AVP/BI-13-C、A2DP/SNK/AVP/BI-14-C、A2DP/SNK/AVP/BI-15-C、A2DP/SNK/AVP/BI-16-C、A2DP/SNK/AVP/BI-20-C、 处理方案:需按照第5点修改开启AAC格式支持、同时替换第6点过认证前需替换的库
A2DP/SNK/SET/BV-05-C To verify that SRC can start audio streaming iteratively.
处理方案:按下图修改红框内对应内容,测试时当pts提示样机移出范围外时,将样机关机重启,有时候测试并不能一次就过,需要多测几次。
A2DP/SNK/REL/BV-02-C Close the streaming channel.
Action: Disconnect the streaming channel, or close the Bluetooth connection to the PTS.
处理建议:要有一个按键发送命令
user_send_cmd_prepare(USER_CTRL_A2DP_CMD_CLOSE, 0, NULL);A2DP/SNK/SET/BV-05-C 处理建议:按需求进行3次关机重启回连。
A2DP/SNK/CC/BV-08-C、A2DP/SNK/CC/BV-07-C 这两项要把bitpool设置成53, __set_sbc_cap_bitpool(53);

A2DP/SNK/CGSIT/SFC/BV-02-C 测试项需要增加一个按键回连操作,按第一次回连上会马上断开,然后提示linkkey minssing,这个时候按PTS停止这次测试,再重新开始等待样机回连,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
实际到pts工程里大概是开始测试后,前两个弹窗出来后均点ok,此时测试会停住,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。HFP
HFP/HF/OOR/BV-01-C To verify that HF returns to stand-by state upon link loss. Ensure the HF device is in connectible mode after link loss.
测试目的:验证样机蓝牙连接断开后依然处于可被其他设备连接的可发现可连接状态。
处理方案:关掉超时回连,按下图修改红框内对应内容
if(0){// (!get_remote_test_flag() && !get_esco_busy_flag()) {
测试流程:此项开始测试后会有一个电话拨打过来,等弹出第一个窗口点ok,按键控制接听电话。等弹出两个窗口均点ok后,将样机放入屏蔽箱超距断连,等待30秒后会弹出一个窗口,点ok后将样机拿出屏蔽箱。会再弹出一个窗口,点击ok,然后等pts软件回连样机,回连成功后即可通过测试。HFP/HF/OOR/BV-02-C To verify that HF can re-connect to AG after a link loss recovery.
测试目的:验证样机蓝牙连接断开后可自主发起回连连接;
①请确认产品是否支持三方通话功能和语音拨号功能,若支持请告知测试公司如何操作,若不支持,就不用测试
(自己产品定义按键)
② HF-OOR-BV-02-I:To verify that HF can re-connect to AG after a link loss recovery and transfer the audio pathway to itself. This can be done by user-action or autonomously by the HF after sensing the link-loss
处理建议:
当有一通电话存在,把样机从蓝牙断开范围之外拿回来之后,请告知测试公司如何建立SLC连接:
要有一个按键发送
user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL);和
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);命令
测试流程:此项开始测试后会有一个电话拨打过来,等弹出第一个窗口点ok,按键控制接听电话。等弹出两个窗口均点ok后,关机后会弹出一个窗口,点ok后会再弹出一个窗口,再点击ok后开机,稍等几秒钟开机会自动回连,回连成功后会出应该新的弹窗,点击ok,然后会再出一个弹窗要求建立sco连接,此时可再次关机重启回连,回连成功后一直点ok即可通过测试。
若不会自动回连,也可尝试按键发送
user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL);SCO回连命令,如果不成功,可以换成发送
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);根据地址去回连,回连成功后一直点ok即可通过测试。HFP/HF/SLC/BV-04-C
处理建议:出现这种报错,有两种处理方法,一是让实验室将报错提及的测试项勾选测试(测试项目会变多),二是按以下配置关闭相关配置项,若没有对应配置修改,则建议让实验室勾选测试,或者联系我们处理。
- TSPC HFP 3 14 and BRSF value don't match.Echo Canceling (EC) and Noise Reduction (NR) (O)
这个可以勾选
- TSPC_HFP_3_12(0) and BRSF(1) value don't match.three way calling
不需要的话这个配置0.
u8 hfp_feature_support_three_way = 0 ;
- TSPC_HFP_3_15 and BRSF value don't match.Voicerecognition activation/deactivation(O)
不需要的话可以配置0
u8 hfp_feature_support_voice_recognition = 0 ;
-TSPC_HFP_3_18b and BRSF value don't match.Remote audio volume control-microphone(O)
这个勾上
- TSPC_HFP_3_3c and BRSF value don't match.Codec Negotiation(C.5)
不需要的话这个可以配置0
u8 hfp_feature_support_codec_negotiation = 1 ;//建议开启,会影响其他常用测试项
- HFP/HF/ATH/BV-03-C To verify that HF can transfer the audio paths from the AG to the HF after establishing a service level connection, during an ongoing call.
测试流程:pts软件中此项开始测试等弹出第一个窗口点ok,重新开关机,再等弹出第二个窗口后点击ok,然后按键发送
user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL)SCO回连命令,之后一直点ok就能过。
注:如果还是不行,关闭TWS和自动主从切换(参考 一、2),并定义下面变量为1。
const int CONFIG_LMP_MASTER_ESCO_ENABLE = 1;
- HFP/HF/ATH/BV-05-C To verify that the AG can transfer of the audio paths from the AG to the HF after establishing a service level connection during an ongoing call.
处理建议:要有一个按键KEY_MUSIC_PP 去接听电话 - HFP/HF/IIA/BV-04-C Verify that the HF device can send a correctly formatted command to activate or deactivate some indicators.
处理建议:要有一个按键发送命令
user_send_cmd_prepare(USER_CTRL_HFP_CMD_SEND_BIA, 0, NULL); - HFP/HF/VRD/BV-01-C、HFP/HF/VRA/BV-01-C、HFP/HF/VRA/BV-02-C To verify that the HF issues to the AG a request for deactivating the Voice Recognition function.
整改方案:
以上三项修改:如下图加按键根据pts提示框,按键调用打开和关闭siri即可pass
case KEY_OPEN_SIRI:
static u8 state_siri = 0;
if(state_siri){
state_siri = 0;
user_send_cmd_prepare(USER_CTRL_HFP_GET_SIRI_CLOSE, 0, NULL);
}else{
state_siri = 1;
user_send_cmd_prepare(USER_CTRL_HFP_GET_SIRI_OPEN, 0, NULL);
}
break;
如果样机不能关闭语音助手,遇到此问题时可尝试测试时先通过按键发命令打开siri,再发命令重新关闭siri。
8. HFP/HF/ACC/BV-08-C、HFP/HF/ACC/BV-10-C、HFP/HF/ACC/BV-11-C、HFP/HF/ACC/BV-12-C、HFP/HF/TDS/BV-01-C To verify the capability of the HF of initiating a working Codec Connection Setup as CVSD successfully with an AG following an already successful Codec Connection Setup procedure, selecting the same codec.
整改方案:加个按键测试过程中调用发user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL)
9. HFP/HF/TWC/BV-02-C、HFP/HF/TWC/BV-03-C 三方通话相关测试项,根据pts测试窗口提示,发对应命令
// USER_CTRL_HFP_THREE_WAY_ANSWER1, //挂断当前去听另一个(未接听或者在保留状态都可以)
// USER_CTRL_HFP_THREE_WAY_ANSWER2, //保留当前去接听, 或者用于两个通话的切换
user_send_cmd_prepare(USER_CTRL_HFP_THREE_WAY_ANSWER1, 0, NULL);
user_send_cmd_prepare(USER_CTRL_HFP_THREE_WAY_ANSWER2, 0, NULL);
10. HFP/HF/CGSIT/SFC/BV-01-C 测试项需要增加一个按键回连操作,按第一次回连上会马上断开,然后提示linkkey minssing,这个时候按PTS停止这次测试,再重新开始等待样机回连,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
实际到pts工程里大概是开始测试后先点OK,第二个弹窗点NO,后面按要求断开和回连,断连直接关机,回连则开机。
11. HFP/HF/TCA/BV-04-C 先测试HFP/HF/TCA/BV-03-C项,记录一个电话号码,再测试BV-04-C项,开始测试后,单击OK,然后发回拨按键KEY_CALL_LAST_NO,再发KEY_MUSIC_PP键挂断电话,即可PASS。
12. HFP/HF/ICR/BV-01-C 开始测试后,按照弹窗提示,发拒接电话命令user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL),即可PASS。
13. HFP/HF/ACC/BV-03-C 先测试其他项保留回连地址,开始测试后,单击OK,然后关机重启回连,建立连接后,后续弹窗按OK,即可PASS。
14. HFP/HF/ACC/BV-09-C 开始测试后,单击OK,然后发SCO连接命令
user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL),然后点击OK,即可PASS。
15. HFP/HF/ACS/BV-12-C 开始测试后,先发SCO连接命令建立连接,user_send_cmd_prepare(USER_CTRL_SCO_LINK, 0, NULL),然后按PP键接听电话,再点击OK,即可PASS。
16. HFP/HF/ICA/BV-02-C 开始测试后,按指令发接听电话和挂断电话user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL)的命令即可,其他弹窗点击OK,即可PASS。
- AVRCP AVRCP TG端关掉方法:关掉音量同步功能
- AVRCP/CT/CEC/BV-01-C To verify that the CT can establish a connection for control towards the TG.
处理建议:如果测试没有通过,可先尝试测试时先测AVRCP/CT/CEC/BV-02-I,有个记录,然后测试AVRCP/CT/CEC/BV-01-I,提示框出来的时候关机重启进行回连。
①若样机使用的程序是AC693x_sdk_release_V0.6.8 、V0.6.7或0.6.9 则在对应资料中:
解决方法是:使用资料包中的“若使用AC693x_sdk_release_V0.6.8程序需要更换的蓝牙库.zip”蓝牙库或“若使用AC693x_sdk_release_V0.6.7程序需要更换的蓝牙库.zip”蓝牙库,或“若使用AC693x_sdk_release_V0.6.9程序需要更换的蓝牙库.zip”蓝牙库,换库后要记得 rebuilt 。
②若样机使用的程序是AC695N_earphone_sdk_release_0.1.9 则在对应资料中:
解决方法是:使用资料包中的“若使用AC695N_earphone_sdk_release_0.1.9程序需要更换的蓝牙库.zip”。换库后要记得 rebuilt 。
③若样机使用的程序是AC897N_AD697N_earphone_release_V2.1.0 则在对应资料中:
解决方法是:使用资料包中的“若使用AC897N_AD697N_earphone_release_V2.1.0程序需要更换的蓝牙库.zip”。换库后要记得 rebuilt 。
④如果使用的是比较高版本的SDK,没有以上描述的库,则按以下两点修改:(大部分版本按此修改) - 关掉TWS功能:

- 关掉主从切换:(必要操作)

- AVRCP/CT/PTH/BV-01-C、AVRCP/CT/PTT/BV-01-C 要有一个按键能根据pts提示窗触发播放暂停,上下曲等命令;
//PLAY和PAUSE发
bt_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
//STOP发
bt_cmd_prepare(USER_CTRL_AVCTP_OPID_STOP, 0, NULL);
//FORWARD发
bt_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
//BACKWARD发
bt_cmd_prepare(USER_CTRL_AVCTP_OPID_PREV, 0, NULL);
- AVRCP/CT/CGSIT/SFC/BV-01-C 第一种测试方法:
测试项需要增加一个按键回连操作,按第一次回连上会马上断开,然后提示linkkey minssing,这个时候按PTS停止这次测试,再重新开始等待样机回连,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
实际到pts工程里大概是开始测试后,前两个弹窗出来后均点ok,此时测试会停住,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
第二种测试方法:
开始测试后pts第一个弹窗出来点ok,第二个弹窗出来点no,随后等待样机回连即可测过。 - AVRCP/CT/PTT/BV-01-C 要找个文件定义
u8 avctp_browsing_support_for_bqb = 1; - AVRCP/TG/VLH-BI-01-C、AVRCP/TG/VLH/BI-04-C 如果需要支持AVRCP TG角色,则开启音量同步,否则关闭;
处理建议:请告知测试公司如何调节音量的大小。(自己样机按键是如何调音量大小的)
解决方案:开启音量同步,用按键将小机音量调节同步到远端。要有一个按键KEY_VOL_UP和KEY_VOL_DOWN去根据pts提示框调节音量大小
如果没有效果,可以尝试把HID协议关掉测试:
- AVRCP/TG/PTT/BV-02-C 要找个文件定义
u8 avctp_browsing_support_for_bqb = 1; - AVRCP/TG/CRC/BV-02-C 开始测试后pts会主动断开连接,导致测试流程卡主,此时需要发这条回连命令:
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);
回连上pts设备后,需要测试样机主动断开与pts的AVRCP连接,等pts提示窗口提示需要断开连接后,关机或者发命令:user_send_cmd_prepare(USER_CTRL_AVCTP_DISCONNECT, 0, NULL); - AVRCP/TG/CGSIT/SFC/BV-01-C 测试项需要增加一个按键回连操作,按第一次回连上会马上断开,然后提示linkkey minssing,这个时候按PTS停止这次测试,再重新开始等待样机回连,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
实际到pts工程里大概是开始测试后,前两个弹窗出来后均点ok,此时测试会停住,此时按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连就可以测过。
如果按照以上方法测试不通过,则第二个弹窗出来后点no,再按键发
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);进行回连。 - HOGP
- HOGP/HD/HGDS/BV-01-I
解决方案:直接跑hid case的工程就可以过了 - RFCOMM
- 测试rfcomm,提醒实验室先在PTS软件上修改下图iut以及uuid16位置的信息值

②开始测rfcomm测试项时,当pts弹窗提示连接时,需先发下面这条命令连接RFCOMM
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);
③可以先测DEVB部分,有了地址之后,再按键测试DEVA部分。测试DEVA项目是耳机去回连 - RFCOMM/DEVA-DEVB/RFC/BV-07-C 若已连接rfcomm,则等待完成连接后调下这个接口
extern void BQB_send_rfcomm_disc();
BQB_send_rfcomm_disc();
若未连接,则先发下面这条命令连接RFCOMM
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL); - RFCOMM/DEVA-DEVB/RFC/BV-04-C 若已连接rfcomm,则等待完成连接后调下这个接口
extern void BQB_close_rfcomm_session();
BQB_close_rfcomm_session(); //TP/RFC/BV-04-C
若未连接,则先发下面这条命令连接RFCOMM
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL); - RFCOMM/DEVA-DEVB/RFC/BV-21-C RFCOMM/DEVB/RFC/BV-06-C
若已连接rfcomm,则等待完成连接后调下这个接口
extern void hfp_BQB_test_rfcomm_send_data();
hfp_BQB_test_rfcomm_send_data(); //TP/RFC/BV-21-C 发一次
若未连接,则先发下面这条命令连接RFCOMM
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL); - RFCOMM/DEVA/RFC/BV-01-C、RFCOMM/DEVA/RFC/BV-05-C、RFCOMM/DEVB/RFC/BV-02-C、RFCOMM/DEVA-DEVB/RFC/BV-03-C、 RFCOMM/DEVA-DEVB/RFC/BV-08-C、RFCOMM/DEVA-DEVB/RFC/BV-11-C、RFCOMM/DEVA-DEVB/RFC/BV-13-C、RFCOMM/DEVA-DEVB/RFC/BV-15-C、RFCOMM/DEVA-DEVB/RFC/BV-17-C、RFCOMM/DEVA-DEVB/RFC/BV-19-C、RFCOMM/DEVA-DEVB/RFC/BV-22-C、RFCOMM/DEVA-DEVB/RFC/BV-25-C 若已连接rfcomm,则等待样机回连后开始测试即可直接测过
若未连接,则发下面这条命令连接RFCOMM即可测过
user_send_cmd_prepare(USER_CTRL_START_CONNEC_VIA_ADDR_MANUALLY, 0, NULL);
692系列:软件修改如下后,开始测试后可直接pass

- MESH
- MESH/NODE/BCN/SNB/BV-01-C
解决方案:修改软件如下


- IOPT
- IOPT/CL/A2DP-SRC/SFC/BV-04-I 测试流程:pts开始测试后第一个弹窗出来点击ok,等第二个弹窗出来点NO,然后样机断电重启即可测过
- IOPT/CL/AVRCP-CT/SFC/BV-03-I 测试流程:pts开始测试后第一个弹窗出来点击ok,等第二个弹窗出来点NO,然后样机断电重启即可测过
- AVDTP
- AVDTP/SRC/INT/SIG/SMG/BV-19-C 测试时根据pts弹窗发送命令:
user_emitter_cmd_prepare(USER_CTRL_A2DP_CMD_CLOSE,0,NULL); - AVDTP/SRC/INT/SIG/SMG/BV-23-C 测试时根据pts弹窗发送命令:
user_emitter_cmd_prepare(USER_CTRL_A2DP_CMD_ABORT,0,NULL); - AVDTP/SRC/INT/SIG/SMG/BV-25-C、AVDTP/SRC/INT/SIG/SMG/BV-28-C、AVDTP/SRC/INT/SIG/SMG/BV-35-C、AVDTP/SRC/INT/SIG/SMG/BV-36-C 添加代码:
USER_CTRL_A2DP_CMD_ALL_CAP, // 142
测试时根据pts弹窗发送命令:
user_emitter_cmd_prepare(USER_CTRL_A2DP_CMD_ALL_CAP,0,NULL); - HID 2024更新测试标准后,HID测试项目需修改如下

const u8 sdp_make_hid_service_data[] = {
0x35, 0xEF, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x06, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19,
0x11, 0x24, 0x09, 0x00, 0x04, 0x35, 0x0D, 0x35, 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x11, 0x35,
0x03, 0x19, 0x00, 0x11, 0x09, 0x00, 0x05, 0x35, 0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x06, 0x35,
0x09, 0x09, 0x65, 0x6E, 0x09, 0x00, 0x6A, 0x09, 0x01, 0x00, 0x09, 0x00, 0x08, 0x08, 0xFF, 0x09,
0x00, 0x09, 0x35, 0x08, 0x35, 0x06, 0x19, 0x11, 0x24, 0x09, 0x01, 0x01, 0x09, 0x00, 0x0D, 0x35,
0x0F, 0x35, 0x0D, 0x35, 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x13, 0x35, 0x03, 0x19, 0x00, 0x11,
0x09, 0x01, 0x00, 0x25, 0x17, 0x48, 0x75, 0x6D, 0x61, 0x6E, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72,
0x66, 0x61, 0x63, 0x65, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x09, 0x02, 0x00, 0x09,
0x01, 0x11, 0x09, 0x02, 0x02, 0x08, 0x0C, 0x09, 0x02, 0x03, 0x08, 0x21, 0x09, 0x02, 0x04, 0x28,
0x01, 0x09, 0x02, 0x05, 0x28, 0x01, 0x09, 0x02, 0x06, 0x35, 0x2F, 0x35, 0x2D, 0x08, 0x22, 0x25,
0x29, 0x05, 0x0C, 0x09, 0x01, 0xA1, 0x01, 0x85, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95,
0x08, 0x09, 0xEA, 0x09, 0xE9, 0x09, 0xE2, 0x09, 0xCD, 0x09, 0xB6, 0x09, 0xB5, 0x09, 0x83, 0x09,
0xB4, 0x81, 0x02, 0x75, 0x08, 0x95, 0x02, 0x91, 0x03, 0xC0, 0x09, 0x02, 0x07, 0x35, 0x08, 0x35,
0x06, 0x09, 0x04, 0x09, 0x09, 0x01, 0x00, 0x09, 0x02, 0x0E, 0x28, 0x01, 0x09, 0x02, 0x0B, 0x09,
0x01, 0x00, 0x09, 0x02, 0x0A, 0x28, 0x01, 0x09, 0x02, 0x09, 0x28, 0x01, 0x09, 0x02, 0x0D, 0x28,
0x01,
};
- GAVDP
- GAVDP/ACP/APP/CON/BV-01-C 直接给测试结果,如下:
【金山文档 | WPS云文档】 GAVDP测试结果
https://www.kdocs.cn/l/ckInMKNTJDws - MAP(需使用PTS 8.11.1版本测试,以及勾选下面截图的选项)

- 大部分测试项 先重启或者按键回连 pts 设备,后发送 USER_CTRL_MAP_SET_NOTIFICATION 命令。
- MAP/MCE/MSM/BV-03-C 先重启或者按键回连 pts 设备,后发送 USER_CTRL_MAP_SET_NOTIFICATION 命令,再按需求发APP_MSG_CALL_MAP_STOP_NOTIFCATION和APP_MSG_CALL_MAP_STOP_READING。
- MAP/MCE/MSM/BV-04-C 先重启或者按键回连 pts 设备,后发送 USER_CTRL_MAP_SET_NOTIFICATION 命令,再按需求发APP_MSG_CALL_MAP_STOP_READING。
- PBAP(需使用PTS 8.11.1版本测试)
- 大部分测试项 先重启或者按键回连 pts 设备,后发送 USER_CTRL_PBAP_READ_ALL 命令。
- PBAP/PCE/PBF/BV-02-C 先重启或者按键回连 pts 设备,后发送 USER_CTRL_PBAP_READ_ENTRIES 命令。
三、版本问题
- BQB profile版本 (1)AC690X
【金山文档 | WPS云文档】 ac69_sdk_v2012_p3&ac69_sdk_v2012_p4蓝牙bqb版本修改最新替换库20240520
https://kdocs.cn/l/cuWuZGpmr7bA
(2)AC692X
【金山文档】 AC692X profile 认证HFP、A2DP等协议版本更新
https://kdocs.cn/l/cnY0IZBAjvUm
(3)AC695XAC696X/AC697X/AC700X/AC701X - A2DP 、GAVDP/AVDTP的版本问题 提示 A2DP 、GAVDP/AVDTP的版本号不正确,需要改版本号的,可以参考以下改法(以下例子是将版本号修改为V1.4):
重新定义以下A2DP版本信息数组:
const u8 sdp_a2dp_service_data_v10[79] = {
0x36, 0x00, 0x4A, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x09, 0x00, 0x01, 0x36, 0x00,
0x03, 0x19, 0x11, 0x0B, 0x09, 0x00, 0x04, 0x36, 0x00, 0x12, 0x36, 0x00, 0x06, 0x19, 0x01, 0x00,
0x09, 0x00, 0x19, 0x36, 0x00, 0x06, 0x19, 0x00, 0x19, 0x09, 0x01, 0x03/* GAVDP/AVDTP version */, 0x09, 0x00, 0x09, 0x36,
0x00, 0x09, 0x36, 0x00, 0x06, 0x19, 0x11, 0x0D, 0x09, 0x01, 0x04/A2DP version/, 0x09, 0x03, 0x11, 0x09, 0x00,
0x01, 0x09, 0x01, 0x00, 0x25, 0x07, 0x4A, 0x4C, 0x5F, 0x41, 0x32, 0x44, 0x50, 0x00, 0x00
};
红色这里改为 0x01,0x04 。 就是 V1.4版本
在程序文件 bt_profile_config.c 中替换SDK原先使用的数组:
注意:若有实验室要求把A2DP 版本改成1.3.2 。那么请按以上描述,改成1.3 。然后跟实验室称支持1.3.2 即可。 - HFP 的版本问题 提示 HFP 的版本号不正确,需要改版本号的,可以参考以下改法(以下例子是将版本号修改为V1.9):
重新定义以下HFP版本信息数组:
const u8 sdp_hfp_service_data_v10[77] = {
0x36, 0x00, 0x48, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x03, 0x09, 0x00, 0x01, 0x36, 0x00,
0x06, 0x19, 0x11, 0x1E, 0x19, 0x12, 0x03, 0x09, 0x00, 0x04, 0x36, 0x00, 0x0E, 0x36, 0x00, 0x03,
0x19, 0x01, 0x00, 0x36, 0x00, 0x05, 0x19, 0x00, 0x03, 0x08, 0x04, 0x09, 0x00, 0x09, 0x36, 0x00,
0x09, 0x36, 0x00, 0x06, 0x19, 0x11, 0x1E, 0x09, 0x01, 0x09/hfp version/, 0x09, 0x03, 0x11, 0x09, 0x00, 0x3F,
0x09, 0x01, 0x00, 0x25, 0x06, 0x4A, 0x4C, 0x5F, 0x48, 0x46, 0x50, 0x00, 0x00,
};
备注:0x01, 0x09/hfp version/ 这里就是HFP版本为1.9
在程序文件 bt_profile_config.c 中替换SDK原先使用的数组:
- AVCTP和AVRCP 的版本问题 提示 AVCTP 的版本低,需要改版本号的,可以参考以下改法(以下例子是将版本号修改为V1.4):
(注意:第③点的AVCTP 和第④点的AVRCP的版本问题修改是共用数组的!)
重新定义以下AVCTP版本信息数组:
const u8 sdp_avctp_ct_service_data_v10[70] = {
0x36, 0x00, 0x41, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x02, 0x09, 0x00, 0x01, 0x36, 0x00,
0x06, 0x19, 0x11, 0x0E, 0x19, 0x11, 0x0F, 0x09, 0x00, 0x04, 0x36, 0x00, 0x12, 0x36, 0x00, 0x06,
0x19, 0x01, 0x00, 0x09, 0x00, 0x17, 0x36, 0x00, 0x06, 0x19, 0x00, 0x17, 0x09, 0x01, 0x04/AVCTP VERSION/, 0x09,0x00, 0x09, 0x36, 0x00, 0x09, 0x36, 0x00, 0x06, 0x19, 0x11, 0x0E, 0x09, 0x01, 0x06/AVRCP VERSION/, 0x09, 0x03,0x11, 0x09, 0x00, 0x01, 0x00, 0x00,
};
备注:0x01, 0x04/AVCTP VERSION/这里就是AVCTP版本为1.4
若有音量同步功能还需要重定义以下数组(没有音量同步功能则不需要修改):
const u8 sdp_avctp_ta_service_data_v10[67] = {
0x36, 0x00, 0x3E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x05, 0x09, 0x00, 0x01, 0x36, 0x00,
0x03, 0x19, 0x11, 0x0C, 0x09, 0x00, 0x04, 0x36, 0x00, 0x12, 0x36, 0x00, 0x06, 0x19, 0x01, 0x00,
0x09, 0x00, 0x17, 0x36, 0x00, 0x06, 0x19, 0x00, 0x17, 0x09, 0x01, 0x04/AVCTP VERSION/, 0x09, 0x00, 0x09, 0x36,0x00, 0x09, 0x36, 0x00, 0x06, 0x19, 0x11, 0x0E, 0x09, 0x01, 0x06/AVRCP VERSION/, 0x09, 0x03, 0x11, 0x09, 0x00, 0x02, 0x00, 0x00,
};
备注:0x01, 0x04/AVCTP VERSION/这里就是AVCTP版本为1.4
0x01, 0x06/AVRCP VERSION/这里就是AVRCP版本为1.6
在程序文件 bt_profile_config.c 中替换SDK原先使用的数组:
- spp版本问题 处理方案:修改软件
const u8 sdp_spp_service_data_2[68] = {
0x36, 0x00, 0x3F, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x04, 0x09, 0x00, 0x01, 0x36, 0x00,
0x03, 0x19, 0x11, 0x01, 0x09, 0x00, 0x04, 0x36, 0x00, 0x0E, 0x36, 0x00, 0x03, 0x19, 0x01, 0x00,
0x36, 0x00, 0x05, 0x19, 0x00, 0x03, 0x08, 0x02, 0x09, 0x00, 0x09, 0x36, 0x00, 0x09, 0x36, 0x00,
0x06, 0x19, 0x11, 0x01, 0x09, 0x01, 0x02, 0x09, 0x01, 0x00, 0x25, 0x06, 0x4A, 0x4C, 0x5F, 0x53,
0x50, 0x50, 0x00, 0x00,
};
u8 spp_profile_support = 1;
SDP_RECORD_HANDLER_REGISTER(spp_sdp_record_item) = {
// .service_record = (u8 *)sdp_spp_service_data,
.service_record = (u8 *)sdp_spp_service_data_2,
.service_record_handle = 0x00010004,
};
- 蓝牙版本
- AC690X /*AC690蓝牙BQB版本设置
这里的0x08改为0x0a,对应的就是5.1的。
0x08 4.2
0x09 5.0
0x0a 5.1
0x0b 5.2
0x0c 5.3
0x0d 5.4
AC690 系列修改蓝牙版本号,由于 SDK 中默认把蓝牙的版本写为 2.1,在外层可以进行修改。ac690x 系列程序修改蓝牙版本信息修改在 bt_configs_user.c 文件里面添加下面代码
*/
struct lmp_deviceni
{
u8 *name;
u8 pin_code[16];
u8 addr[6];
u8 version[5];
};
extern struct lmp_device local;
void patch_version()
{
local.version[0]=0x08;
local.version[1]=0xd6;
local.version[2]=0x05;
}
在bt_app_cfg 函数开头调用 patch_version 函数如下:
【金山文档】 bluetooth_lib-690-emitter_v107-BQB-修改5.3
https://kdocs.cn/l/cnEkA0rXnc45
【金山文档】 bluetooth_lib-690-v2012v4-BQB-修改5.3
https://kdocs.cn/l/cqWEp330X0sl - AC692X 在上层 APP 程序加入如下修改,把蓝牙版本修改为 5.0 版本。
extern u8 *get_device_version(void);
u8 *lmp_pal_version = get_device_version();
*lmp_pal_version = 0x09;
【金山文档】 bluetooth_lib-br21-v2.6.3-BQB-修改5.3
https://kdocs.cn/l/ck7wl55B6q0S - AC695X/AC696X/AC697X/AC700X 蓝牙版本号修改 蓝牙版本修改(蓝牙5.3就设置0x0c,蓝牙5.4就设置0x0d):

- AC702X 蓝牙版本号修改 蓝牙版本修改(蓝牙5.3就设置0x0c,蓝牙5.4就设置0x0d):
修改蓝牙版本号,改成5.3的话就是传0x0C 的值:
- 蓝牙6.0版本修改方法 按下面截图修改设置为6.0版本,再按上面教程修改HFP版本为1.9,AVRCP版本为1.6.
#define BLUETOOTH_CORE_SPEC_54 0x0d
#define BLUETOOTH_CORE_SPEC_60 0x0e
set_bt_version(BLUETOOTH_CORE_SPEC_60);//设置蓝牙 core 版本号

蓝牙主机
一、AC695X&AC696X蓝牙发射器过BQB profile前需要做以下修改:
- 过认证前需替换的库(有测A2DP新增测试项必须换) 如果有使用到下列sdk测BQB profile认证,需替换对应库后再去实验室测试,正常做货时再换回原来的库即可。(提供的库有认证的流程修改,不用于正常程序)
如果没有使用到下列sdk,请联系我们获取对应版本sdk替换库文件后,再去实验室测试。
【金山文档】 695v200过profile需要换的库20230106
https://kdocs.cn/l/cbZayCpiuHw7
【金山文档】 AC695X SDK301蓝牙发射器过BQB profile需要替换的库
https://kdocs.cn/l/ctvyGGUvTl3G
【金山文档】 695v304过profile需要换的库20230414
https://kdocs.cn/l/ct3GlsaqFLm4
【金山文档】 695v310过profile需要换的库20230110
https://kdocs.cn/l/ce2YGDNR4LoY
【金山文档】 696v140过profile需要换的库20230106
https://kdocs.cn/l/cg5xyUlas5XZ
【金山文档】 696v150过profile需要换的库20230414
https://kdocs.cn/l/ca0NRVB4WYFi
【金山文档】 696v170过profile需要换的库20230207
https://kdocs.cn/l/cjxPW10x9c2p - #define USER_SUPPORT_PROFILE_A2DP 0 (这个是A2DP sink的,蓝牙发射器只需要测试A2DP source,因此将其关闭)
- 编译报错在lib_btctrler_config.c加几个定义
const int config_le_hci_connection_num = 0;//支持同时连接个数
const int config_le_sm_support_enable = 0; //是否支持加密配对
const int config_le_gatt_server_num = 0; //支持server角色个数
const int config_le_gatt_client_num = 0; //支持client角色个数
- 库的这个函数定义变了extern void __emitter_send_media_toggle(u8 *addr,u8 toggle); 统一改成__emitter_send_media_toggle(NULL,1);
- 在void bt_function_select_init函数里面加上: change_hci_class_type(0x28041C);
- 在void emitter_or_receiver_switch(u8 flag)函数里面,原来上电搜索的改成等测试设备连接

二、经常遇到的一些问题及处理建议:
- A2DP/SRC/REL/BV-01-I提示这个的话:
需要打开可发现可连接:
user_send_cmd_prepare(USER_CTRL_WRITE_SCAN_ENABLE, 0, NULL);
user_send_cmd_prepare(USER_CTRL_WRITE_CONN_ENABLE, 0, NULL);
可以在样机开机切进蓝牙发射模式时调用或按键发消息处理:
切发射模式时调用例子:
- 提示以下错误:
做一个需要发一下命令:
if (get_emitter_curr_channel_state() & A2DP_SRC_CH) {
user_emitter_cmd_prepare(USER_CTRL_A2DP_CMD_CLOSE, 0, NULL);
} - 提示 A2DP 、GAVDP/AVDTP的版本号不正确,需要改版本号的,可以参考以下改法(以下例子是将版本号修改为V1.3): 重新定义以下A2DP版本信息数组:
const u8 sdp_a2dp_source_service_data_source[] = {
0x36, 0x00, 0x4E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x0B, 0x09, 0x00, 0x01, 0x36, 0x00,
0x03, 0x19, 0x11, 0x0A, 0x09, 0x00, 0x04, 0x36, 0x00, 0x12, 0x36, 0x00, 0x06, 0x19, 0x01, 0x00,
0x09, 0x00, 0x19, 0x36, 0x00, 0x06, 0x19, 0x00, 0x19, 0x09, 0x01, 0x03/*A2DP version */, 0x09, 0x00, 0x09, 0x36,
0x00, 0x09, 0x36, 0x00, 0x06, 0x19, 0x11, 0x0D, 0x09, 0x01, 0x03/*GAVDP/AVDTP version */, 0x09, 0x03, 0x11, 0x09, 0x00,
0x01, 0x09, 0x01, 0x00, 0x25, 0x0B, 0x4A, 0x4C, 0x5F, 0x41, 0x32, 0x44, 0x50, 0x5F, 0x53, 0x52,
0x43, 0x00,
};
红色这里改为 0x01 和 0x03。 就是 V1.3 版本
在程序文件 bt_profile_config.c 中替换SDK原先使用的数组:
注意:数组修改的地方,和数组内容跟蓝牙从机上面AD2DP数组和修改位置是不一样的哦。要仔细检查好!
三、demo程序:
- 【金山文档】 AC695X_SDK v300发射器BQB认证参考程序 https://kdocs.cn/l/cgi1BCadD74O
注意:若样机程序添加了一些自动回连等相关操作的。请先关掉再测试。因为这些自行添加的功能有时会影响认证测试。若按上述文档处理完后,还测试不通过,建议用公版SDK,稍微改些按键测试确认。
LE_AUDIO Profile(Auracast)
一、发射端
- PBP
- PBP/PBS/STR/BV-01-C、PBP/PBS/STR/BV-05-C
修改方法:
1.使能PBP
2.设置采样率为16000
3.配对蓝牙名也要改的跟实验室的测试仪器的名字一样,一般是Broadcaster