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

如何通过Web Bluetooth API为HC-06模块启用写入访问权限

核心问题定位

你当前获取到的GATT特征值并非HC-06用于数据透传的业务特征,因此属性中读、写权限均为false,这一现象和前端权限、模块锁配置无关,属于服务/特征匹配错误,或硬件协议不匹配导致。


对你三个疑问的明确解答

  • 无法通过Web Bluetooth API修改特征权限
    BluetoothCharacteristicProperties的字段值是蓝牙设备固件在GATT服务声明阶段固定上报的属性,属于设备侧的协议层配置,Web Bluetooth API没有提供修改该配置的接口,也不存在相关协议支持。

  • 老款纯经典蓝牙版HC-06本身和Web Bluetooth API不兼容
    你之前用Python脚本、安卓蓝牙调试终端能正常连接通信,是因为这些运行环境可以调用系统级经典蓝牙(BR/EDR)的SPP/RFCOMM接口;而Web Bluetooth API仅支持BLE(低功耗蓝牙)GATT协议,不支持经典蓝牙连接,纯经典蓝牙版本的HC-06无法在Web环境下通信,和AT配置无关。
    如果你使用的是双模/BLE版本的HC-06,不存在兼容性问题,连接失败的原因是没有匹配到正确的透传特征。

  • 常规场景下不需要通过AT指令修改HC-06配置
    纯经典蓝牙版HC-06无论怎么改AT参数,都无法适配Web Bluetooth的BLE协议要求,直接更换为BLE透传模块(如HC-08、BLE版HC-06)即可;BLE版HC-06的默认透传配置就可以和Web Bluetooth通信,不需要额外调整AT参数。


可直接落地的修复步骤

  1. 确认你使用的HC-06支持BLE功能,纯经典蓝牙版本直接更换硬件。
  2. 在调用蓝牙设备请求接口时,必须显式声明透传服务UUID,不要依赖默认扫描结果匹配服务,BLE版HC-06的透传服务UUID固定为0000ffe0-0000-1000-8000-00805f9b34fb,对应可读写的透传特征UUID为0000ffe1-0000-1000-8000-00805f9b34fb。
  3. 参考如下代码逻辑连接,拿到对应特征后即可正常读写:
// 替换为你的HC-06实际广播名称
const HC06_NAME = 'HC-06';
const HC06_SERVICE_UUID = '0000ffe0-0000-1000-8000-00805f9b34fb';
const HC06_CHAR_UUID = '0000ffe1-0000-1000-8000-00805f9b34fb';

navigator.bluetooth.requestDevice({
  filters: [{ name: HC06_NAME }],
  optionalServices: [HC06_SERVICE_UUID]
})
.then(device => device.gatt.connect())
.then(server => server.getPrimaryService(HC06_SERVICE_UUID))
.then(service => service.getCharacteristic(HC06_CHAR_UUID))
.then(characteristic => {
  // 此处打印characteristic.properties,可看到write、notify字段均为true
  const cmdEncoder = new TextEncoder();
  // 发送指令示例,根据你的模块实际要求加换行后缀
  characteristic.writeValue(cmdEncoder.encode('AT\r\n'));
})
  1. 注意Web Bluetooth API仅在HTTPS环境(本地localhost调试除外)下可用,HTTP环境会直接被浏览器拦截权限。

内容的提问来源于stack exchange,提问作者Michael Kerr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:21:41