diff --git a/src/sis8300llrfDevice.cpp b/src/sis8300llrfDevice.cpp
index ce0dee8d42c5ad1ffc05c9f4015bf876ca5b4a7f..6e9d6732b70503109fdbfecdee0f5ff0dea0c1c2 100644
--- a/src/sis8300llrfDevice.cpp
+++ b/src/sis8300llrfDevice.cpp
@@ -1195,6 +1195,13 @@ ndsStatus sis8300llrfDevice::controlLoopTask(nds::TaskServiceBase &service) {
  * LOCKING THE DEVICE AND CG PORT!!!
  *****/
         lock();
+        //This avoids the loop task start when is at reset or init state
+        if (getCurrentState() != nds::DEVICE_STATE_ON)
+        {
+            unlock();
+            continue;
+        }
+        NDS_INF("Before clear latched");
         status = sis8300llrfdrv_clear_latched_statuses(_DeviceUser, SIS8300LLRFDRV_STATUS_CLR_GENERAL | SIS8300LLRFDRV_STATUS_CLR_SIGMON);
         SIS8300NDS_STATUS_ASSERT_UNLOCK("sis8300llrfdrv_clear_gop", status, this);
 
@@ -1254,6 +1261,13 @@ ndsStatus sis8300llrfDevice::controlLoopTask(nds::TaskServiceBase &service) {
  *****/
         lock();
 
+        //This avoids the loop task run when is at reset or init state
+        if (getCurrentState() != nds::DEVICE_STATE_ON)
+        {
+            unlock();
+            continue;
+        }
+
         getFirmwareStatus();
         getFirmwareInfo();
         if (_FSMFirmware >= fsm_state_lps_daq){