diff --git a/libraries/GSM/src/GSM.cpp b/libraries/GSM/src/GSM.cpp
index 1e29a9962..f45d7b35c 100644
--- a/libraries/GSM/src/GSM.cpp
+++ b/libraries/GSM/src/GSM.cpp
@@ -71,9 +71,7 @@ int arduino::GSMClass::begin(const char* pin, const char* apn, const char* usern
 
   _device->set_cmux_status_flag(_cmuxGSMenable);
   _device->set_retry_timeout_array(_retry_timeout, sizeof(_retry_timeout) / sizeof(_retry_timeout[0]));
-#if GSM_DEBUG_ENABLE
   _device->attach(mbed::callback(this, &GSMClass::onStatusChange));
-#endif
   _device->init();
 
   _pin = pin;
diff --git a/libraries/GSM/src/GSMDebug.cpp b/libraries/GSM/src/GSMDebug.cpp
index cce912ff8..2edfda2f9 100644
--- a/libraries/GSM/src/GSMDebug.cpp
+++ b/libraries/GSM/src/GSMDebug.cpp
@@ -184,8 +184,15 @@ const char * arduino::GSMClass::getRegistrationStateString(const mbed::CellularN
   }
 }
 
+#endif
+
 void arduino::GSMClass::onStatusChange(nsapi_event_t ev, intptr_t in) {
 
+  if(ev == CellularStateRetryEvent) {
+    feedWatchdog();
+  }
+
+#if GSM_DEBUG_ENABLE
   const cell_callback_data_t *data = (const cell_callback_data_t *)in;
 
   switch(ev)
@@ -270,6 +277,5 @@ void arduino::GSMClass::onStatusChange(nsapi_event_t ev, intptr_t in) {
     }
     break;
   }
-}
-
 #endif
+}