KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

GFP谷歌快连及其认证流程指引

📎 原始文档:https://www.kdocs.cn/l/cdHBXEhCW2Mq GFP谷歌快连及其认证流程指引

官方文档说明指引

快速配对 3.2 认证指南 (v2.0) | Fast Pair | Google for Developers

说明

概览

The Google Fast Pair Service (GFPS) utilizes Bluetooth Low Energy (BLE) to discover nearby Bluetooth devices without using significant phone battery, enabling “magical” scenarios based on device proximity.
即基于BLE广播实现手机发现耳机并弹窗,使得用户可以在手机上进行快速配对的功能

自测APP

Fast Pair Validator
image 使用说明参考如下官方说明:
音频切换验证器应用用户手册 | Fast Pair | Google for Developers

环境搭建

快速配对帮助 | Fast Pair | Google for Developers
手机需要科学上网,然后在设备中打开包含调试结果(不同手机,该配置项的位置可能会有点不一样,以下仅供参考)
imageimageimageimage

代码填写用的Model ID和Private\Public Key

申请Model ID的时候如果没有特殊需求建议填3.1的GFP版本号,ini pair/auto pair, sub pair, calib, e2e四项用app测,剩下的手测。
谷歌官方给到的密钥是Base64转换后得到的,因此填入代码中的内容需要经过Base64转十六进制填入BUFFER,此处提供如下在线工具
Base64与十六进制互转 - 在线工具 (toolhelper.cn)
imageimage

调整GFP的弹窗距离

  1. 确认好样机的RF性能符合要求,且无异常
  2. 调整BLE广播包的TxPower和BLE本身的发射功率
  3. TxPower计算方式 image 谷歌手机将自身位置的TxPower假设为0dB,以1m距离做41dBm的信号强度衰减
    因此此处需要结合手机本身和耳机本身的rf,调节耳机的BLE发射功率,配合BLE广播包中的TxPower
  4. TxPower测试方式参考 官方提供的自测APP(Fast Pair Validator)中存在该测试项,当账号测试群组中添加申请耳机的资料找到对应的Model ID后,点击对应的设备进入后,可看见如下页面
    image 其中Calibration即提供测试TxPower及相应的BLE发射功率在该手机上是否能符合预期距离
    注:自测APP的测试TxPower数值大小,仅提供调试方向,具体距离以实际弹窗测试距离为准
  5. 代码调试方向 结合第3点计算方式,即当BLE广播中的TxPower数值越小,手机会认为耳机的发射功率本身越低,则在相同距离下会越容易弹窗。
    因此首先:根据实际弹窗情况调用接口调整耳机的BLE广播包中的TxPower,且用nrf connect确认好
    BLE广播包中的TxPower确实更新
void gfps_tx_power_set(u8 value)//需要BLE广播包开启前调用设置

可视化的设置TX POWER函数如下:

extern void gfps_tx_power_set(u8 value)

image 当TxPower为最大0xff下,耳机在1.2m外依然容易弹窗,此时修改BLE本身的tx power,并重新调整BLE广播包中的tx power以达到GFP认证标准
image

初始配对广播和后续配对广播

初始配对广播:耳机未连接手机或者耳机回连超时后开启,广播包中仅带有Model ID和TxPower,用于未绑定耳机的谷歌账号进行初次配对,调用接口如下:

void gfps_set_pair_mode(void *priv)

后续配对广播:当耳机在A手机上同谷歌账号绑定设备后,耳机的GFP广播包变为后续配对广播,用于登陆与A手机相同谷歌账号的B手机弹窗已绑定设备用,不调用gfps_set_pair_mode()接口即为后续配对广播
注:GFP认证会要求耳机有按键操作可以在绑定后的情况下重新打开初始配对广播,不支持一拖多的耳机,如果用户在另一台登陆了谷歌账号的手机上点击初始配对广播,需要耳机断开已连接的手机,以便连接新手机

耳机连接后的电量弹窗

协议如下:
image 代码中控制接口为:

void gfps_set_battery_ui_enable(uint8_t enable)

默认流程中支持GFP的手机连接耳机后,会连接到GFP的SPP通道,此时会打开电池电量广播
头戴式耳机不需要弹电量框
TWS入仓关盖需要添加消窗流程,维持1秒以上
gfps_set_battery_ui_enable(0);

GFP自定义设备名

耳机与谷歌账号绑定后,用户可在手机蓝牙界面修改耳机的设备名,该设备名为谷歌手机连接专用的设备名。
GFP认证要求存在按键操作可以在用户修改设备名后恢复默认的设备名,调用如下接口:

void gfps_all_info_recover(void);//报错就用下面的函数
void gfps_factory_reset(void);

可视化的SDK,使用下面这句

//extern void gfps_all_info_recover(u8 name_reset);
gfps_all_info_recover(1)

demo代码

700N/701N普通SDK进入GFP配对的demo

extern void gfps_set_pair_mode(void);
static u16 gfp_check_pair_timer = 0;
void gfp_check_pair(void *p)
{
    printf("%s %x\n", __func__, tws_api_get_tws_state());
    if((tws_api_get_tws_state() & TWS_STA_PHONE_DISCONNECTED) && (tws_api_get_role() == TWS_ROLE_MASTER)){
        sys_timer_del(gfp_check_pair_timer);
        gfp_check_pair_timer = 0;
        bt_user_priv_var.auto_connection_counter = 0;
        tws_cancle_all_noconn();
        user_send_cmd_prepare(USER_CTRL_WRITE_SCAN_ENABLE, 0, NULL);
        user_send_cmd_prepare(USER_CTRL_WRITE_CONN_ENABLE, 0, NULL);
        gfps_set_pair_mode();
    }

    if(tws_api_get_role() != TWS_ROLE_MASTER){
        sys_timer_del(gfp_check_pair_timer);
        gfp_check_pair_timer = 0;
    }
}

//使用此函数进入gfp配对状态
void user_ctrl_bt_enter_gfp_pair_mode(void)
{
    if(tws_api_get_role() != TWS_ROLE_MASTER){
        return;
    }
    if((tws_api_get_tws_state() & TWS_STA_PHONE_CONNECTED) || hci_standard_connect_check()){
        user_send_cmd_prepare(USER_CTRL_PAGE_CANCEL, 0, NULL);
        user_send_cmd_prepare(USER_CTRL_CONNECTION_CANCEL, 0, NULL);
        user_send_cmd_prepare(USER_CTRL_POWER_OFF, 0, NULL);
    }

    if(gfp_check_pair_timer == 0){
        gfp_check_pair_timer = sys_timer_add(NULL, gfp_check_pair, 200);
    }
}

可视化SDK进入GFP配对的demo

void gfps_set_pair_mode_by_user(u8 disconn_ble);
static u16 gfp_check_pair_timer = 0;
void gfp_check_pair(void *p)
{
    printf("%s %x\n", __func__, tws_api_get_tws_state());
    if(tws_api_get_tws_state() & TWS_STA_PHONE_DISCONNECTED){
        sys_timer_del(gfp_check_pair_timer);
        gfp_check_pair_timer = 0;
        gfps_set_pair_mode_by_user(1);
    }
}

//使用此函数进入gfp配对状态
void user_ctrl_bt_enter_gfp_pair_mode(void)
{
    if(tws_api_get_role() != TWS_ROLE_MASTER){
        return;
    }

    if(tws_api_get_tws_state() & TWS_STA_PHONE_CONNECTED){
        bt_cmd_prepare(USER_CTRL_PAGE_CANCEL, 0, NULL);
        bt_cmd_prepare(USER_CTRL_CONNECTION_CANCEL, 0, NULL);
        bt_cmd_prepare(USER_CTRL_POWER_OFF, 0, NULL);
    }

    if(gfp_check_pair_timer == 0){
        gfp_check_pair_timer = sys_timer_add(NULL, gfp_check_pair, 200);
    }
}

常见问题

  1. 可视化SDK后续配对报错Frequency超范围 Frequency of BLE advertisements (573) is higher than threshold (500) while not in pairing mode
    image 调整后续配对广播时间为150
#define SUBS_PAIR_ADV_INTERVAL      150
  1. 700N普通SDK GFP需要替换库 公版的库在gfp认证测试过程中会出现从机回连手机的问题,需要替换下面的库rebuild:
    btstack-SDK-700N v138修改gpf测试断开产生回连.zip
  2. 可视化SDK电量显示异常问题 imageimage
    if (tws_api_get_role() == TWS_ROLE_MASTER) {
        gfps_ble_adv_enable(0);
        u8 buf[8];
        buf[0] = get_gfps_pair_state();
        buf[1] = gfps_rfcomm_connect_state_get();
        memcpy(buf + 2, app_ble_adv_addr_get(gfps_app_ble_hdl), 6);
        gfps_sibling_data_send(GFPS_SIBLING_SYNC_TYPE_ADV_MAC_STATE, buf, sizeof(buf));
        printf("gfps_send_pair_state:%d, spp_state:%d, ble_addr:", buf[0], buf[1]);
        put_buf(buf + 2, 6);
    }

  1. 可视化GFP需要电量按照10%间隔显示的修改 image
  2. 非对耳,GFP“让设备响铃”无法点击的问题 image 解决方法:GFP返回的第一个电量值要传0XFF
    非可视化:
    image 可视化:
    image
  3. 谷歌手机连接wifi出现网络受限 修正手机日期即可
  4. 手机不弹窗问题排查
  5. 先保证耳机有配对广播出来,配对广播如下,如果没有广播就看demo代码、代码填写用的Model ID和Private\Public Keyimage
  6. 按照环境搭建配置好手机端环境
  7. 避免频繁手动消窗,手机机制会导致不弹窗,这种情况要重启手机
  8. 打开GFPS的库打印 image
  9. 700N普通SDK,gfp连上后还会弹窗的问题 连接手机成功时修改一下广播类型
    case BT_STATUS_FIRST_CONNECTED:
        extern void gfps_enter_nopair_mode();
        gfps_enter_nopair_mode();
  1. ANC 耳机,页面显示ANC状态,但点击耳机没有响应以及耳机操作ANC后,页面没有更新 image 在切换ANC的位置进行上报
  2. Android 15无法弹窗问题(要开开发者选项和包含调试结果) imageimage

本文档包含以下子页面

Prev
TWS耳机配对方式使用及生产把控指南
Next
蓝牙发射器(bt_emitter)相关