diff --git a/registry/scripts/upgrade_all.sh b/registry/scripts/upgrade_all.sh
index cdf32243f175827d5bc851bc33cbae1ac2f2f1d5..7e2dd3796013b3e4032e7d9e9436bd18f7bdd11a 100755
--- a/registry/scripts/upgrade_all.sh
+++ b/registry/scripts/upgrade_all.sh
@@ -102,6 +102,23 @@ done < <($catcmd)
 log "Wakeonlan sent, waiting"
 while [ $wait_time -gt 0 ]
 do
+    if [ ! -z "$host" ]
+    then
+        leave=false
+        # try to skip useless wait for single upgrade
+        for ip in $(getips $MACS)
+        do
+            ping -c 3 $ip
+            if [ $? -eq 0 ]
+            then
+                leave=true
+            fi
+        done
+        if $leave
+        then
+            break
+        fi
+    fi
     log -ne "Waiting for boot, remaining $wait_time seconds\r"
     sleep $wait_step
     wait_time=$(($wait_time - $wait_step))