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

ESP32无法运行经典蓝牙SPP acceptor示例问题求助

ESP32经典蓝牙SPP Acceptor配对后自动断开,无法触发ESP_SPP_SRV_OPEN_EVT

问题现象

运行ESP-IDF官方经典蓝牙SPP Acceptor示例,使用示例默认sdkconfig配置,出现以下异常:

  • 手机搜索到ESP32设备并发起连接,手机弹出配对码窗口,终端输出日志:
    W (162921) BT_HCI: hcif conn complete: hdl 0x80, st 0x0
    W (162940) BT_HCI: hcif link supv_to changed: hdl 0x80, supv_to 8000
    
  • 手机完成配对认证后,终端立即收到断开日志:
    W (245220) BT_HCI: hci cmd send: disconnect: hdl 0x80, rsn:0x13
    W (245296) BT_HCI: hcif disc complete: hdl 0x80, rsn 0x16
    
  • 始终无法触发ESP_SPP_SRV_OPEN_EVT回调,测试ESP32 WROOM-32(无法完成配对)和ESP32 PICO MINI 02(配对后自动断开)均出现问题,切换PCM/HCI配置无改善。

排查与解决方向

1. 调整蓝牙安全配对配置

  • 确认sdkconfig中CONFIG_BT_SSP_ENABLE(安全简单配对)已开启,部分手机仅支持SSP模式,关闭该选项会导致配对后异常断开。
  • 修改CONFIG_BT_AUTH_MODE配置,尝试切换为BT_AUTH_MODE_SC(带加密的安全连接)或BT_AUTH_MODE_LEGACY(传统配对),不同手机对配对模式的兼容性存在差异。

2. 解析断开原因码定位问题

日志中的断开原因码对应蓝牙标准定义:

  • rsn:0x13:远程设备因资源不足终止连接
  • rsn:0x16:连接被本地主机终止
    通过开启详细日志进一步排查:
  • 在sdkconfig中开启CONFIG_BT_DEBUG_LOG和CONFIG_BT_HCI_DEBUG_LOG,获取配对过程中更完整的交互细节,明确是ESP32主动断开还是手机端触发。

3. 优化蓝牙连接参数

  • 修改示例中的蓝牙监督超时参数,在bt_spp_acceptor.c中调整连接超时相关配置,增大监督超时(supv_to)值,避免因超时导致连接断开。
  • 确认CONFIG_BT_BLE_ENABLE已关闭,经典蓝牙示例无需启用BLE模式,误开启可能干扰经典蓝牙连接流程。

4. 硬件兼容性排查

  • 对于ESP32 PICO MINI 02模块,检查PCB天线是否被金属遮挡,信号强度不足可能导致配对后连接不稳定。
  • 测试不同品牌的安卓/iOS设备,排除手机蓝牙协议栈与ESP32的兼容性问题。

5. 更新ESP-IDF版本

部分旧版本ESP-IDF存在经典蓝牙配对的已知bug,建议升级到最新稳定版(如v4.4.x或v5.1.x系列),重新编译烧录示例程序。

内容的提问来源于stack exchange,提问作者Agustin Cruz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:35:12