busy_sleep(duration);
        } else
        {
-               alive_sleep(duration);
+               long long then=timeval_ms();
+               while ((timeval_ms()-then)<duration)
+               {
+                       target_call_timer_callbacks_now();
+                       usleep(1000);
+               }
        }
 
        return ERROR_OK;
 
 void alive_sleep(int ms)
 {
        int i;
-       for (i=0; i<ms; i+=500)
+       int napTime=10;
+       for (i=0; i<ms; i+=napTime)
        {
                int sleep_a_bit=ms-i;
-               if (sleep_a_bit>500)
+               if (sleep_a_bit>napTime)
                {
-                       sleep_a_bit=500;
+                       sleep_a_bit=napTime;
                }
-               keep_alive();
                usleep(sleep_a_bit*1000);
                keep_alive();
        }
 
        sleep 1000
        target_request debugmsgs enable
        reset run
-       sleep 20000
+       sleep 25000
        target_request debugmsgs disable
        return "See IP address above..."
 }
\ No newline at end of file