diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 25d0d2d..6f699fa 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -272,17 +272,19 @@ boolean WiFiManager::autoConnect(char const *apName, char const *apPassword) { DEBUG_WM(F("AutoConnect")); #endif - // sethostname before wifi ready - // https://github.com/tzapu/WiFiManager/issues/1403 #ifdef ESP32 - if(_hostname != ""){ - setupHostname(false); - } - #endif + setupHostname(true); - #ifdef ESP32 - if(WiFi.getMode() != WIFI_STA){ - WiFi.mode(WIFI_STA); + if(_hostname){ + // disable wifi if already on + if(WiFi.getMode() & WIFI_STA){ + WiFi.mode(WIFI_OFF); + int timeout = millis()+1200; + // async loop for mode change + while(WiFi.getMode()!= WIFI_OFF && millis()