diff --git a/ArduCopter/defines.h b/ArduCopter/defines.h
index abb485250da3bd9cca6e7cebca40a95e5e94ea9b..47d2b68ce63a36f64fa7214b7d129a8fef07c5f7 100644
--- a/ArduCopter/defines.h
+++ b/ArduCopter/defines.h
@@ -446,8 +446,9 @@ enum gcs_severity {
 // subsystem specific error codes -- radio
 #define ERROR_CODE_RADIO_LATE_FRAME         2
 // subsystem specific error codes -- failsafe
-#define ERROR_CODE_RADIO_FAILSAFE_THROTTLE  2
-#define ERROR_CODE_RADIO_FAILSAFE_BATTERY   3
+#define ERROR_CODE_FAILSAFE_THROTTLE  2
+#define ERROR_CODE_FAILSAFE_BATTERY   3
+#define ERROR_CODE_FAILSAFE_WATCHDOG  4
 
 
 
diff --git a/ArduCopter/events.pde b/ArduCopter/events.pde
index 7a7f4e3260d2382c392cc44119b45d4e0232af32..7b189af96339ef6899a2bf7f71975489e8beb842 100644
--- a/ArduCopter/events.pde
+++ b/ArduCopter/events.pde
@@ -48,7 +48,7 @@ static void failsafe_on_event()
     }
 
     // log the error to the dataflash
-    Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE, ERROR_CODE_RADIO_FAILSAFE_THROTTLE);
+    Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE, ERROR_CODE_FAILSAFE_THROTTLE);
 
 }
 
@@ -95,7 +95,7 @@ static void low_battery_event(void)
 
     // warn the ground station and log to dataflash
     gcs_send_text_P(SEVERITY_LOW,PSTR("Low Battery!"));
-    Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE, ERROR_CODE_RADIO_FAILSAFE_BATTERY);
+    Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE, ERROR_CODE_FAILSAFE_BATTERY);
 
 #if COPTER_LEDS == ENABLED
     if ( bitRead(g.copter_leds_mode, 3) ) {         // Only Activate if a battery is connected to avoid alarm on USB only
diff --git a/ArduCopter/failsafe.pde b/ArduCopter/failsafe.pde
index c39dc7d9c1462409319a403eb474e8eb59edcbce..09dfb5185920940a9d8a00d760b3c5b2b1ade821 100644
--- a/ArduCopter/failsafe.pde
+++ b/ArduCopter/failsafe.pde
@@ -48,13 +48,14 @@ void failsafe_check(uint32_t tnow)
         in_failsafe = true;
     }
 
-    if (in_failsafe && tnow - failsafe_last_timestamp > 1000000) {
+    if (failsafe_enabled && in_failsafe && tnow - failsafe_last_timestamp > 1000000) {
         // disarm motors every second
         failsafe_last_timestamp = tnow;
         if(motors.armed()) {
             motors.armed(false);
         	set_armed(true);
             motors.output();
+            Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE, ERROR_CODE_FAILSAFE_WATCHDOG);
         }
     }
 }
\ No newline at end of file