diff --git a/examples/mini/mini.c b/examples/mini/mini.c
index 93373a22955afbdc1e5230f78a8e6cb97c112391..df6ce92b1e1b693549b94eb70f94e56bd84b61c2 100644
--- a/examples/mini/mini.c
+++ b/examples/mini/mini.c
@@ -86,7 +86,7 @@ static uint8_t off_ana_out;
 
 const static ec_pdo_entry_reg_t domain1_regs[] = {
     {0, 1, Beckhoff_EL3162, 0x3101, 2, &off_ana_in},
-    {0, 2, Beckhoff_EL4102, 0x3001, 1, &off_ana_out},
+    //{0, 2, Beckhoff_EL4102, 0x3001, 1, &off_ana_out},
     {}
 };
 #endif
diff --git a/master/fsm_master.c b/master/fsm_master.c
index 70b5e98ae7c238f3906187f73beb87819d2e5b9b..fd20a0049744c327983aa144bddb260c48a7a2c4 100644
--- a/master/fsm_master.c
+++ b/master/fsm_master.c
@@ -845,6 +845,8 @@ void ec_fsm_master_state_clear_addresses(
     if (datagram->state != EC_DATAGRAM_RECEIVED) {
         EC_ERR("Failed to receive address clearing datagram (state %i).\n",
                 datagram->state);
+        master->scan_state = EC_REQUEST_FAILURE;
+        wake_up_interruptible(&master->scan_queue);
         fsm->state = ec_fsm_master_state_error;
         return;
     }
diff --git a/master/master.c b/master/master.c
index 19b59324fa3bae37b10416db3e20738cd9516ae0..52e351d7b48a460e0414d60c5bccc9cad012db6d 100644
--- a/master/master.c
+++ b/master/master.c
@@ -126,7 +126,7 @@ int ec_master_init(ec_master_t *master, /**< EtherCAT master */
     
     INIT_LIST_HEAD(&master->configs);
 
-    master->scan_state = EC_REQUEST_IN_PROGRESS;
+    master->scan_state = EC_REQUEST_COMPLETE;
     master->allow_scan = 1;
     init_MUTEX(&master->scan_sem);
     init_waitqueue_head(&master->scan_queue);
@@ -454,15 +454,20 @@ int ec_master_enter_operation_mode(ec_master_t *master /**< EtherCAT master */)
     if (master->debug_level)
         EC_DBG("Waiting for pending slave configuration returned.\n");
 
+    if (master->debug_level)
+        EC_DBG("Disable scanning, current scan state: %u\n",
+                master->scan_state);
     down(&master->scan_sem);
     master->allow_scan = 0; // 'lock' the slave list
     up(&master->scan_sem);
 
-    // wait for slave scan to complete
-    if (wait_event_interruptible(master->scan_queue,
-                master->scan_state != EC_REQUEST_IN_PROGRESS)) {
-        EC_INFO("Waiting for slave scan interrupted by signal.\n");
-        goto out_allow;
+    if (master->scan_state == EC_REQUEST_IN_PROGRESS) {
+        // wait for slave scan to complete
+        if (wait_event_interruptible(master->scan_queue,
+                    master->scan_state != EC_REQUEST_IN_PROGRESS)) {
+            EC_INFO("Waiting for slave scan interrupted by signal.\n");
+            goto out_allow;
+        }
     }
 
     if (master->debug_level)
@@ -1347,19 +1352,21 @@ int ecrt_master_activate(ec_master_t *master)
     // request slave configuration
     down(&master->config_sem);
     master->allow_config = 1; // request the current configuration
-    master->config_state = EC_REQUEST_IN_PROGRESS;
     up(&master->config_sem);
 
-    // wait for configuration to complete
-    if (wait_event_interruptible(master->config_queue,
-                master->config_state != EC_REQUEST_IN_PROGRESS)) {
-        EC_INFO("Waiting for configuration interrupted by signal.\n");
-        return -1;
-    }
+    if (master->main_device.link_state) {
+        // wait for configuration to complete
+        master->config_state = EC_REQUEST_IN_PROGRESS;
+        if (wait_event_interruptible(master->config_queue,
+                    master->config_state != EC_REQUEST_IN_PROGRESS)) {
+            EC_INFO("Waiting for configuration interrupted by signal.\n");
+            return -1;
+        }
 
-    if (master->config_state != EC_REQUEST_COMPLETE) {
-        EC_ERR("Failed to configure slaves.\n");
-        return -1;
+        if (master->config_state != EC_REQUEST_COMPLETE) {
+            EC_ERR("Failed to configure slaves.\n");
+            return -1;
+        }
     }
     
     // restart EoE process and master thread with new locking
diff --git a/master/module.c b/master/module.c
index e7310efaba6b0468202e725e5e7cf0318de34a25..f52bb2b25872ad7bac1f938a66723994f6beb694 100644
--- a/master/module.c
+++ b/master/module.c
@@ -577,11 +577,6 @@ ec_master_t *ecrt_request_master(unsigned int master_index)
 
     up(&master->device_sem);
 
-    if (!master->main_device.link_state) {
-        EC_ERR("Link is DOWN.\n");
-        goto out_module_put;
-    }
-
     if (ec_master_enter_operation_mode(master)) {
         EC_ERR("Failed to enter OPERATION mode!\n");
         goto out_module_put;