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

ESP32-S3 BLE服务器重启后客户端无法重连求助

ESP32-S3 BLE服务器重启后客户端无法扫描重连问题

基于ESP32-S3(WROOM)搭建1台BLE服务器+2台BLE客户端的多设备连接系统,服务器通过广播发送字节同步动作,常规连接场景均正常,但服务器重启后客户端扫描不到服务器,无法完成重连。

测试场景

  • 服务器先启动→客户端启动:连接正常
  • 服务器先启动→客户端启动→客户端断开/重启:连接正常
  • 服务器先启动→客户端启动→服务器断开/重启:无法重连
  • 客户端先启动→服务器启动:连接正常
  • 客户端先启动→服务器启动→客户端断开/重启:连接正常
  • 客户端先启动→服务器启动→服务器断开/重启:无法重连

已排查数小时未找到问题根源,推测可能是服务器断开后未重新广播导致,附上完整代码,请求协助定位代码中的Bug。


排查方向建议

  1. 广播启动逻辑检查:确认服务器重启后是否重新执行了esp_ble_gap_start_advertising()。如果广播启动代码仅在首次上电初始化时执行,软件重启后未触发,就会导致无法广播。
  2. GAP状态验证:重启后打印BLE GAP的广播状态,确认是否处于ESP_BLE_ADV_STATE_START。若状态异常,说明广播未正确启动。
  3. 广播参数重置:检查连接过程中是否修改过广播参数,重启后是否恢复到初始的广播配置(如广播间隔、类型)。
  4. NVS绑定信息清理:ESP32的BLE绑定信息可能存在NVS中,服务器重启后若残留旧绑定状态,可能阻碍广播。可尝试在启动时调用esp_ble_gap_clear_bonded_devices()清除绑定,或禁用BLE的NVS存储。
  5. BLE栈重新初始化:如果是软件重启,需确保先销毁BLE栈(esp_bluedroid_disable()、esp_bluedroid_deinit()),再重新初始化(esp_bluedroid_init()、esp_bluedroid_enable()),避免资源泄漏导致广播失败。

请提供服务器端BLE初始化、广播启动、重启处理的核心代码片段,以便精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:29:53