You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Chrome响应蓝牙服务变更特征?附设备名称显示问题

Chrome蓝牙调试:服务缓存清除、设备名称显示及Service Changed实现说明

一、清除Chrome蓝牙服务缓存的有效方法

Chrome的BLE服务缓存与系统蓝牙配对记录深度绑定,仅靠Service Changed特征可能无法触发缓存刷新,可尝试以下步骤:

  • 删除系统配对记录+Chrome内部移除设备:
    1. 在操作系统蓝牙设置中删除目标设备的配对记录;
    2. 打开Chrome的蓝牙内部调试页面(地址栏输入chrome://bluetooth-internals/),切换到"Devices"标签,找到对应设备后点击"Forget Device";
  • 完全重启Chrome:关闭所有Chrome窗口,在任务管理器中结束所有Chrome进程后重新打开;
  • 主动断开连接:调试代码中每次操作完成后调用device.gatt.disconnect(),避免持久化连接导致缓存留存。

二、Chrome对Service Changed特征的实现要求

Chrome支持Service Changed特征,但需严格遵循规范才能触发服务重新发现:

  • 特征必须属于Generic Attribute Service(UUID 0x1801),且属性需设置为Indicate(而非Notify);
  • 服务/特征变更后,服务器需主动向已连接的客户端发送Indication,数据格式为两个16位小端字节:起始句柄和结束句柄(用0x0000和0xFFFF表示全量服务更新);
  • 注意:Chrome仅在已连接状态下接收该Indication才会触发重新发现,若变更发生在连接前,需重新连接才能生效。

三、Chrome扫描窗口显示设备名称的规则

Chrome优先读取广播包中的设备名称,仅当广播包无名称时才会在连接后读取Generic Access Service(0x1800)下的Device Name特征(0x2A00),常见问题排查:

  • 广播包名称长度限制:BLE广播包总长度不超过31字节,若设置的名称过长会被截断或不生效,需确保名称长度在合理范围内;
  • aioble广播配置:调用aioble.advertise()时需明确设置name参数,并确保广播数据包含Complete Local Name字段(部分库需手动配置广播数据结构);
  • 缓存残留:旧名称可能留存于Chrome扫描缓存中,需通过前面的清除缓存步骤刷新显示。

内容的提问来源于stack exchange,提问作者Zach Moshe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:03:30