ESP32-S3 BLE服务器重启后客户端无法重连求助
ESP32-S3 BLE服务器重启后客户端无法扫描重连问题
基于ESP32-S3(WROOM)搭建1台BLE服务器+2台BLE客户端的多设备连接系统,服务器通过广播发送字节同步动作,常规连接场景均正常,但服务器重启后客户端扫描不到服务器,无法完成重连。
测试场景
- 服务器先启动→客户端启动:连接正常
- 服务器先启动→客户端启动→客户端断开/重启:连接正常
- 服务器先启动→客户端启动→服务器断开/重启:无法重连
- 客户端先启动→服务器启动:连接正常
- 客户端先启动→服务器启动→客户端断开/重启:连接正常
- 客户端先启动→服务器启动→服务器断开/重启:无法重连
已排查数小时未找到问题根源,推测可能是服务器断开后未重新广播导致,附上完整代码,请求协助定位代码中的Bug。
排查方向建议
- 广播启动逻辑检查:确认服务器重启后是否重新执行了
esp_ble_gap_start_advertising()。如果广播启动代码仅在首次上电初始化时执行,软件重启后未触发,就会导致无法广播。 - GAP状态验证:重启后打印BLE GAP的广播状态,确认是否处于
ESP_BLE_ADV_STATE_START。若状态异常,说明广播未正确启动。 - 广播参数重置:检查连接过程中是否修改过广播参数,重启后是否恢复到初始的广播配置(如广播间隔、类型)。
- NVS绑定信息清理:ESP32的BLE绑定信息可能存在NVS中,服务器重启后若残留旧绑定状态,可能阻碍广播。可尝试在启动时调用
esp_ble_gap_clear_bonded_devices()清除绑定,或禁用BLE的NVS存储。 - BLE栈重新初始化:如果是软件重启,需确保先销毁BLE栈(
esp_bluedroid_disable()、esp_bluedroid_deinit()),再重新初始化(esp_bluedroid_init()、esp_bluedroid_enable()),避免资源泄漏导致广播失败。
请提供服务器端BLE初始化、广播启动、重启处理的核心代码片段,以便精准定位问题。
内容的提问来源于stack exchange,提问作者just4phil
相关产品推荐
相关产品推荐

