diff --git a/ampel-firmware/led_effects.cpp b/ampel-firmware/led_effects.cpp
index f0b672c9d0c76e1cac6916d94783e85577f387fd..136088dead0e00d6e2db6a3a09889b2f5cfae4b9 100644
--- a/ampel-firmware/led_effects.cpp
+++ b/ampel-firmware/led_effects.cpp
@@ -210,6 +210,15 @@ namespace led_effects {
     }
   }
 
+  void greenAlert() {
+    static uint8_t i;
+    i = (i + 1) % 10;
+    pixels.setBrightness(static_cast<int>(config::max_brightness * (1 - i * 0.1)));
+    delay(50);
+    pixels.fill(color::green);
+    pixels.show();
+  }
+
   /**
    * Displays a complete blue circle, and starts removing LEDs one by one. Returns the number of remaining LEDs.
    * Can be used for calibration, e.g. when countdown is 0. Does not work in night mode.
diff --git a/ampel-firmware/led_effects.h b/ampel-firmware/led_effects.h
index a910d307f7c6294db889e704f745c3777136d19b..7ce310a5f50593ea603e844564f18a0c4fffd9e6 100644
--- a/ampel-firmware/led_effects.h
+++ b/ampel-firmware/led_effects.h
@@ -26,6 +26,7 @@ namespace led_effects {
 
   void setupRing();
   void redAlert();
+  void greenAlert();
   int countdownToZero();
   void showWaitingLED(uint32_t color);
   void showKITTWheel(uint32_t color, uint16_t duration_s = 2);
diff --git a/ampel-firmware/src/lib/WiFiManager/WiFiManager.cpp b/ampel-firmware/src/lib/WiFiManager/WiFiManager.cpp
index 8a42e3d14453f09662e53720c14831aeccbefce7..d258686c29a510453d7c379d94d17415b27177d9 100644
--- a/ampel-firmware/src/lib/WiFiManager/WiFiManager.cpp
+++ b/ampel-firmware/src/lib/WiFiManager/WiFiManager.cpp
@@ -785,7 +785,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
     // connect using saved ssid if there is one
     if (WiFi_hasAutoConnect()) {
       wifiConnectDefault();
-      connRes = waitForConnectResult();
+      connRes = waitForConnectResult(_saveTimeout);
     }
     else {
       DEBUG_WM(F("No wifi save required, skipping"));
@@ -927,7 +927,11 @@ uint8_t WiFiManager::waitForConnectResult(uint16_t timeout) {
       return status;
     }
     DEBUG_WM (DEBUG_VERBOSE,F("."));
-    delay(100);
+    if ( _waiting_for_connection_callback == NULL){
+      delay(100);
+    } else {
+      _waiting_for_connection_callback();
+    }
   }
   return status;
 }
@@ -2207,6 +2211,11 @@ void WiFiManager::setWaitingForClientCallback( std::function<void()> func ) {
   _waiting_for_client_callback = func;
 }
 
+// CUSTOM for Ampel
+void WiFiManager::setWaitingForConnectionCallback( std::function<void()> func ) {
+  _waiting_for_connection_callback = func;
+}
+
 /**
  * set custom head html
  * custom element will be added to head, eg. new style tag etc.
diff --git a/ampel-firmware/src/lib/WiFiManager/WiFiManager.h b/ampel-firmware/src/lib/WiFiManager/WiFiManager.h
index f2fff25f5ce3718fcaee05204bfd135169f3efc2..30b8a33f3749ff3b62e7e3b8bec325eca08d7601 100644
--- a/ampel-firmware/src/lib/WiFiManager/WiFiManager.h
+++ b/ampel-firmware/src/lib/WiFiManager/WiFiManager.h
@@ -219,6 +219,9 @@ class WiFiManager
     //called while waiting for client to connect to config. Used for LEDs
     void          setWaitingForClientCallback( std::function<void()> func );
 
+    //called while waiting for ESP to connect. Used for LEDs
+    void          setWaitingForConnectionCallback( std::function<void()> func );
+
 
     //sets timeout before AP,webserver loop ends and exits even if there has been no setup.
     //useful for devices that failed to connect at some point and got stuck in a webserver loop
@@ -604,6 +607,7 @@ class WiFiManager
     std::function<void()> _saveparamscallback;
     std::function<void()> _resetcallback;
     std::function<void()> _waiting_for_client_callback;
+    std::function<void()> _waiting_for_connection_callback;
 
     template <class T>
     auto optionalIPFromString(T *obj, const char *s) -> decltype(  obj->fromString(s)  ) {
diff --git a/ampel-firmware/wifi_util.cpp b/ampel-firmware/wifi_util.cpp
index be34e998a7726329afa4fd5a1912fbfa8d43af18..d38615dd394a5d3660d29a790d6181a402ffac5a 100644
--- a/ampel-firmware/wifi_util.cpp
+++ b/ampel-firmware/wifi_util.cpp
@@ -55,7 +55,7 @@ namespace wifi {
 //    });
 //
     wifiManager.setWaitingForClientCallback([](){
-      led_effects::showRainbowWheel(50); // Shouldn't last too long, web server needs to be able to answer.
+      led_effects::greenAlert();
     });
 //
 //    wifiManager.setWebServerCallback([]() {
@@ -69,7 +69,12 @@ namespace wifi {
 //    wifiManager.setSaveConfigCallback([]() {
 //      led_effects::showKITTWheel(color::magenta);
 //    });
+
+    wifiManager.setWaitingForConnectionCallback([](){
+      led_effects::showRainbowWheel(100);
+    });
 //
+    wifiManager.setSaveConnectTimeout(WIFI_TIMEOUT);
     wifiManager.autoConnect(hostname);
   }
 }