๐ก ESP8266 Not Connecting to WiFi - Complete Fix Guide
๐ Common Causes of WiFi Connection Issues
- ๐ Wrong SSID or Password โ Case-sensitive, special characters
- ๐ 5GHz Network โ ESP8266 only supports 2.4GHz WiFi!
- ๐ Weak Signal โ Distance from router or interference
- ๐ DHCP Issues โ Router not assigning IP address
- ๐ Power Supply Problems โ WiFi draws ~200mA peaks
- ๐ Router Security Settings โ WPA3 not supported, only WPA2
๐ ESP8266 WiFi Specifications
| Specification | Details |
|---|---|
| Frequency | 2.4GHz ONLY (No 5GHz support) |
| Standards | 802.11 b/g/n |
| Security | WEP, WPA, WPA2 (No WPA3) |
| Channels | 1-14 |
| Max TX Power | +20dBm (100mW) |
| Peak Current | ~200mA during transmission |
1๏ธโฃ Check Your WiFi Network Type (Most Common Issue)
How to check:
- Most modern routers broadcast both 2.4GHz and 5GHz with different SSIDs
- Look for network name ending with "2.4", "2G", or check router settings
- If your network is 5GHz only, enable 2.4GHz in router settings or use a different network
// Debug code to see what networks are available
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
delay(1000);
// Scan for networks
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
int n = WiFi.scanNetworks();
Serial.println("Scan done");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(" dBm) ");
Serial.println(WiFi.encryptionType(i));
delay(10);
}
Serial.println("");
}
void loop() {}
2๏ธโฃ Verify SSID and Password
Common mistakes:
- Case sensitivity โ "MyWiFi" is different from "mywifi"
- Hidden SSID โ ESP8266 has trouble with hidden networks
- Special characters โ Avoid spaces, symbols in SSID/password
- Too long โ SSID max 32 chars, password max 64 chars
#include <ESP8266WiFi.h>
const char* ssid = "YourNetworkName";
const char* password = "YourPassword";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.print("Connecting to: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(1000);
Serial.print(".");
attempts++;
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Connected successfully!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("Connection failed!");
Serial.print("Status code: ");
Serial.println(WiFi.status());
// 1 = no SSID found, 2 = connection timeout, 4 = wrong password
}
}
void loop() {}
3๏ธโฃ Improve WiFi Signal Strength
Check your signal strength (RSSI):
long rssi = WiFi.RSSI();
Serial.print("Signal strength: ");
Serial.print(rssi);
Serial.println(" dBm");
// RSSI values:
// -30 dBm = Excellent
// -50 dBm = Good
// -60 dBm = Fair
// -70 dBm = Poor
// -80 dBm = Unreliable
// -90 dBm = No connection
Improve signal:
- Move ESP8266 closer to router (within 10 meters / 30 feet)
- Remove obstacles (walls, metal objects, appliances)
- Avoid interference from microwaves, baby monitors, cordless phones
- Change router channel (use 1, 6, or 11 for best results)
- Use external antenna on ESP8266 (some boards have antenna connectors)
4๏ธโฃ Fix Power Supply Issues
Solutions:
- Use a quality USB cable (not just charging cable)
- Use a 1A or higher power supply
- Add a 470-1000ยตF capacitor between 3.3V and GND
- Avoid powering ESP8266 from computer USB (limited to 500mA)
- Use separate power for sensors (don't power from ESP8266 3.3V pin)
// Check for brownout (power issue)
void setup() {
Serial.begin(115200);
// ESP8266 doesn't have built-in brownout detection like ESP32
// But you can monitor voltage with analogRead(A0)
int voltage = analogRead(A0); // Needs voltage divider
Serial.print("Voltage reading: ");
Serial.println(voltage);
}
5๏ธโฃ Use Static IP (Fix DHCP Issues)
If DHCP fails, assign a static IP address:
#include <ESP8266WiFi.h>
const char* ssid = "YourNetwork";
const char* password = "YourPassword";
// Static IP configuration
IPAddress staticIP(192, 168, 1, 200); // Choose an available IP
IPAddress gateway(192, 168, 1, 1); // Router IP
IPAddress subnet(255, 255, 255, 0); // Subnet mask
IPAddress dns(8, 8, 8, 8); // Google DNS
void setup() {
Serial.begin(115200);
delay(1000);
// Configure static IP before connecting
WiFi.config(staticIP, gateway, subnet, dns);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected with static IP!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {}
6๏ธโฃ Check Router Security Settings
ESP8266 supports only:
- โ WEP (not recommended)
- โ WPA (deprecated)
- โ WPA2 (recommended)
- โ WPA3 (NOT supported)
- โ Enterprise networks (WPA2-Enterprise)
If using WPA3: Change router security to WPA2-PSK (AES).
Open networks: Use password = NULL
// Connect to open network (no password)
const char* ssid = "OpenNetwork";
const char* password = NULL;
WiFi.begin(ssid, password);
7๏ธโฃ Enable Auto-Reconnect
Handle disconnections gracefully:
#include <ESP8266WiFi.h>
const char* ssid = "YourNetwork";
const char* password = "YourPassword";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// Enable auto-reconnect
WiFi.setAutoReconnect(true);
// Optional: Set keep-alive
WiFi.setSleepMode(WIFI_NONE_SLEEP); // Better connection stability
}
void loop() {
// Check connection status
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi disconnected! Reconnecting...");
WiFi.reconnect();
delay(1000);
}
// Your main code here
delay(100);
}
๐ง Complete WiFi Debugging Sketch
#include <ESP8266WiFi.h>
const char* ssid = "YourNetworkName";
const char* password = "YourPassword";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n=== ESP8266 WiFi Debugger ===");
// 1. Print MAC address
Serial.print("MAC Address: ");
Serial.println(WiFi.macAddress());
// 2. Scan networks
Serial.println("\nScanning for networks...");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("No networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(" dBm)");
// Check if this is our network
if (WiFi.SSID(i) == ssid) {
Serial.print(" โ YOUR NETWORK");
}
Serial.println();
}
}
// 3. Attempt connection
Serial.println("\nAttempting to connect...");
WiFi.begin(ssid, password);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 30) {
delay(1000);
Serial.print(".");
attempts++;
// Print status codes
if (WiFi.status() == 1) {
Serial.println("\nNo SSID found - check network name");
} else if (WiFi.status() == 2) {
Serial.println("\nConnection timeout - check signal/power");
} else if (WiFi.status() == 4) {
Serial.println("\nWrong password!");
}
}
Serial.println();
// 4. Print result
if (WiFi.status() == WL_CONNECTED) {
Serial.println("โ CONNECTED SUCCESSFULLY!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.print("Signal Strength: ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
} else {
Serial.print("โ Connection failed. Status: ");
Serial.println(WiFi.status());
// Status codes:
// 1 = No SSID found
// 2 = Connection timeout
// 4 = Wrong password
// 6 = Disconnected
}
}
void loop() {}
โ Best Practices for ESP8266 WiFi
- Use 2.4GHz network only โ ESP8266 cannot connect to 5GHz
- Use WPA2-PSK (AES) security โ Most compatible
- Keep SSID and password simple โ No special characters
- Ensure adequate power โ 1A supply minimum
- Add 1000ยตF capacitor to 3.3V line for stability
- Use auto-reconnect โ WiFi.setAutoReconnect(true)
- Keep ESP8266 within 10 meters of router
- Avoid placing ESP8266 near metal objects or concrete walls
โ Frequently Asked Questions
Q: Does ESP8266 support 5GHz WiFi?
A: No. ESP8266 only supports 2.4GHz WiFi. If your router only broadcasts 5GHz, you need to enable 2.4GHz in router settings.
Q: Why does my ESP8266 connect then disconnect?
A: Usually power supply issues. WiFi transmission peaks at ~200mA, and weak power causes brownouts. Add a 1000ยตF capacitor or use a better power supply.
Q: Can ESP8266 connect to hidden SSID?
A: Yes, but it's unreliable. Use this: WiFi.begin(ssid, password, 0, NULL, true); The last parameter (true) enables hidden SSID scanning.
Q: What WiFi security does ESP8266 support?
A: WEP, WPA, and WPA2. WPA3 is NOT supported. Change router security to WPA2 if you have connection issues.
Q: Does OceanRemote work with ESP8266?
A: Yes! OceanRemote fully supports ESP8266. Our firmware generator works for both ESP32 and ESP8266. Generate your firmware โ
๐ Related Troubleshooting Guides
๐ Need Ready-to-Use Firmware?
OceanRemote for ESP8266 includes:
- โ Automatic WiFi connection
- โ Auto-reconnect on disconnect
- โ Power-optimized code
- โ No coding required
- โ Free for up to 10 devices