diff --git a/quad/scripts/tests/run_virtual_test_flight.rb b/quad/scripts/tests/run_virtual_test_flight.rb
index 9893fd2f46e7aa7fb9541510346739a4682bda6d..17e6bc732e9549101b38ec9fd080493b5f7afa84 100644
--- a/quad/scripts/tests/run_virtual_test_flight.rb
+++ b/quad/scripts/tests/run_virtual_test_flight.rb
@@ -11,10 +11,12 @@ require script_dir + "/testing_library"
 bin_dir = script_dir + "/../../bin/"
 Dir.chdir(bin_dir)
 
+puts("Firing up the quad...")
+
 # Start virtual quad
-quad = Process.spawn("./virt-quad")
+quad = Process.spawn("./virt-quad -q")
 
-sleep 1
+delay_spin_cursor(3)
 
 ##################
 #  Begin Flight!
@@ -37,7 +39,7 @@ begin
   end
 
   puts("Hovering for 10 seconds")
-  sleep 10
+  delay_spin_cursor(10)
 
   puts("Relaxing thrust to zero")
   i = THROTTLE_MID
diff --git a/quad/scripts/tests/test_safety_checks.rb b/quad/scripts/tests/test_safety_checks.rb
index ae281c259d45d1dd52c2f1c97b3dbe009be096f2..6faa9546f714a35875d0467938263e714f9c753e 100644
--- a/quad/scripts/tests/test_safety_checks.rb
+++ b/quad/scripts/tests/test_safety_checks.rb
@@ -20,11 +20,11 @@ Timeout::timeout(30) {
   sleep 1
 
   # Start virtual quad
-  quad_pid = Process.spawn("./virt-quad",
+  quad_pid = Process.spawn("./virt-quad -q",
                            { :rlimit_as => 536870912, # 512 MiB total RAM
                              :rlimit_stack => 1048576}) # 1 MiB stack
 
-  sleep 5
+  delay_spin_cursor(5)
 
   #################
   #  Begin Tests
@@ -83,7 +83,7 @@ Timeout::timeout(30) {
     puts averages, "(#{average})"
     assert average.between?(THROTTLE_EIGHTH, MOTOR_MAX)
 
-    # Check that gear switch kills the motors
+    puts("Check that gear switch kills the motors")
     # (and that light goes off)
     File.write(GEAR, GEAR_OFF)
     sleep 0.1
diff --git a/quad/scripts/tests/test_unix_uart.rb b/quad/scripts/tests/test_unix_uart.rb
index d3164238fd55c5b0783ade10c46714483f42edf1..1c9b6a82e4fb3c84ded4038e666378c8b4a5016f 100644
--- a/quad/scripts/tests/test_unix_uart.rb
+++ b/quad/scripts/tests/test_unix_uart.rb
@@ -19,11 +19,11 @@ Timeout::timeout(30) {
   sleep 1
 
   # Start virtual quad
-  quad_pid = Process.spawn("./virt-quad",
+  quad_pid = Process.spawn("./virt-quad -q",
                            { :rlimit_as => 536870912, # 512 MiB total RAM
                              :rlimit_stack => 1048576}) # 1 MiB stack
 
-  sleep 5
+  delay_spin_cursor(5)
 
   #################
   #  Begin Tests
diff --git a/quad/scripts/tests/testing_library.rb b/quad/scripts/tests/testing_library.rb
index a7c4c1ed8f5d86f3c914416eb99aae2986759895..668e2bad9e36bdb39256b3b2aa4cb2be550c06e4 100644
--- a/quad/scripts/tests/testing_library.rb
+++ b/quad/scripts/tests/testing_library.rb
@@ -75,3 +75,15 @@ def check_led(is_on)
   led = read_fifo_num(LED)
   assert_equal(led, is_on)
 end
+
+def delay_spin_cursor(delay)
+  fps = 10
+  chars = %w[| / - \\]
+  iteations = delay * fps
+  iter = 0
+  iteations.times() do
+    print chars[(iter+=1) % chars.length]
+    sleep (1.0/fps)
+    print "\b"
+  end
+end
diff --git a/quad/src/virt_quad/main.c b/quad/src/virt_quad/main.c
index a87b8013f5037d6a2db5badd74c7166f681e3e8c..f703f6ab77943a760ce7db7a1604ec672edb4e7b 100644
--- a/quad/src/virt_quad/main.c
+++ b/quad/src/virt_quad/main.c
@@ -1,6 +1,8 @@
 #include <stdio.h>
+#include <unistd.h>
 #include "hw_impl_unix.h"
 #include "quad_app.h"
+#include <fcntl.h>
 
 int setup_hardware(hardware_t *hardware) {
   hardware->i2c = create_unix_i2c();
@@ -14,8 +16,21 @@ int setup_hardware(hardware_t *hardware) {
   return 0;
 }
 
-int main()
-{
+int main(int argc, char *argv[]) {
+  int fd, opt;
+  while ((opt = getopt(argc, argv, "q")) != -1) {
+    switch (opt) {
+    case 'q':
+      fd = open("/dev/null", O_WRONLY);
+      close(STDOUT_FILENO);
+      dup2(STDOUT_FILENO, fd);
+      break;
+    default: /* '?' */
+      fprintf(stderr, "Usage: %s [-q]\n", argv[0]);
+      exit(EXIT_FAILURE);
+    }
+  }
+
   quad_main(setup_hardware);
   return 0;
 }