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

ESP32 BLE无法连接Windows 10/11问题求助

ESP32 BLE无法连接Windows 10/11的修复方案

问题根源

Windows的BLE栈对设备规范的兼容性要求比Mac/Linux更严格,你的代码里几个细节不符合规范,导致设备能被发现但无法完成连接:

  • 设备未设置名称,Windows对匿名BLE设备的连接支持有限
  • 电池服务特征缺少必要的描述符,不符合官方BLE规范
  • 自定义服务未在广播中声明,Windows无法识别设备提供的服务
  • 控制特征同时启用WRITE和WRITE_NR属性,触发Windows连接校验逻辑

分步修复

1. 设置设备名称

初始化BLE时必须指定非空名称,Windows不接受匿名设备:

// 原代码
BLEDevice::init("");
// 修改为
BLEDevice::init("ESP32-BLE-Device"); // 自定义任意有意义的名称

2. 完善电池服务特征

给电池电量特征添加规范要求的描述符,确保Windows能正确识别:

// 创建电池特征后添加以下代码
pBatteryLevelCharacteristic->addDescriptor(new BLE2902());

// 添加数值范围描述符(符合0x2A19特征的规范要求)
BLEDescriptor* batteryRangeDesc = new BLEDescriptor(BLEUUID((uint16_t)0x2904));
uint8_t rangeValue[] = {0x00, 0x64, 0x01, 0x00, 0x00}; // 最小值0,最大值100,单位1
batteryRangeDesc->setValue(rangeValue, sizeof(rangeValue));
pBatteryLevelCharacteristic->addDescriptor(batteryRangeDesc);

3. 在广播中声明服务

Windows需要在广播包中看到设备提供的服务UUID,否则可能拒绝连接:

BLEAdvertising* pAdvertising = pServer->getAdvertising();
// 添加要广播的服务UUID
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->addServiceUUID(BLEUUID((uint16_t)0x180F)); // 电池服务的标准UUID
pAdvertising->start();

4. 调整控制特征属性

WRITE和WRITE_NR属性不建议同时启用,二选一即可:

// 原代码
pControlCharacteristic = pService->createCharacteristic(
    CONTROL_CHAR_UUID, BLECharacteristic::PROPERTY_WRITE |
                           BLECharacteristic::PROPERTY_READ |
                           BLECharacteristic::PROPERTY_NOTIFY |
                           BLECharacteristic::PROPERTY_WRITE_NR);
// 修改为
pControlCharacteristic = pService->createCharacteristic(
    CONTROL_CHAR_UUID, BLECharacteristic::PROPERTY_WRITE |
                           BLECharacteristic::PROPERTY_READ |
                           BLECharacteristic::PROPERTY_NOTIFY);

5. 调整服务启动顺序

先启动自定义服务,再启动电池服务,避免初始化顺序导致的问题:

// 原顺序
pBatteryService->start();
pService->start();
// 修改为
pService->start();
pBatteryService->start();

额外排查点

  • 更新Windows蓝牙适配器的驱动到最新版本(尤其是Intel、高通的蓝牙芯片)
  • 删除Windows中已配对的该设备记录,重新扫描配对
  • 用nRF Connect工具扫描设备,确认服务和特征是否正常广播,测试连接是否成功

内容的提问来源于stack exchange,提问作者Usman Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:55:54