diff --git a/ArduCopter/motors.pde b/ArduCopter/motors.pde
index 92d2d3402b8207d4ed404b64078078f99076c483..3f55f25be120d2311697fa77fe323bb11438c9c2 100644
--- a/ArduCopter/motors.pde
+++ b/ArduCopter/motors.pde
@@ -215,7 +215,13 @@ static bool init_arm_motors()
 // perform pre-arm checks and set ap.pre_arm_check flag
 static void pre_arm_checks(bool display_failure)
 {
+    // exit immediately if already armed
+    if (motors.armed()) {
+        return;
+    }
+
     // exit immediately if we've already successfully performed the pre-arm check
+    // run gps checks because results may change and affect LED colour
     if (ap.pre_arm_check) {
         pre_arm_gps_checks(display_failure);
         return;