Esp32-WROOM-32D无法连接家庭WiFi,排查路由设置后仍未解决
ESP32 无法连接Netgear WiFi 排查思路
问题背景
我尝试让ESP32连接WiFi,但始终无法成功,代码无问题(附代码),使用Netgear双频路由器,已确认ESP32能扫描到2.4G网络且是WPA2加密,路由器曾将ESP32的连接判定为DoS攻击,已关闭DoS防护并添加MAC白名单,但问题仍存在。
代码示例
#include<WiFi.h> const char *ssid = "mySSID"; const char *password = "myPW"; void initWiFi() { WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to WiFi .."); while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); delay(1000); } Serial.println(WiFi.localIP()); } void setup() { Serial.begin(115200); initWiFi(); Serial.print("RRSI: "); Serial.println(WiFi.RSSI()); } void loop() { // put your main code here, to run repeatedly: }
排查思路
- 检查路由器2.4G频段设置
- 调整2.4G信道为1、6、11这类不重叠的低拥挤信道,部分ESP32对高编号信道兼容性较差
- 强制路由器2.4G使用**WPA2-PSK(AES)**加密,关闭WPA3混合模式,避免加密协议不兼容
- 确认MAC地址过滤的“仅允许列表”是否正确添加ESP32的MAC,部分路由器2.4G和5G的MAC过滤是分开设置的
- 关闭路由器的AP隔离功能,该功能可能会阻止ESP32完成入网流程
- 调试ESP32连接状态码
修改代码打印具体连接状态码,精准定位问题:
常见状态码对应问题:while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); Serial.print(" Status code: "); Serial.println(WiFi.status()); delay(1000); }- 4(WL_CONNECT_FAILED):密码错误或加密方式不匹配
- 6(WL_DISCONNECTED):路由器主动拒绝连接
- 路由器其他限制排查
- 检查路由器的最大连接设备数,若已达上限需先移除闲置设备
- 确认连接的是主网络而非访客网络,访客网络可能存在额外访问限制
- 重启路由器清除临时缓存,部分情况下路由器会话缓存会导致设备无法接入
- ESP32侧额外调试
- 在
WiFi.begin()前添加缓存清除代码:WiFi.disconnect(true); delay(100); - 将ESP32靠近路由器测试,排除信号强度过低导致的连接失败
- 用手机等设备连接同一2.4G网络,确认网络本身可正常使用
- 在
内容的提问来源于stack exchange,提问作者trashkev
相关产品推荐
相关产品推荐

