diff --git a/master/fsm_coe.c b/master/fsm_coe.c
index 903d457ae83463adc79391fecc5b46361bb7c4e4..e2634e10ea4efeecfc926568bade653d01b1729d 100644
--- a/master/fsm_coe.c
+++ b/master/fsm_coe.c
@@ -281,6 +281,13 @@ void ec_fsm_coe_dict_start(ec_fsm_coe_t *fsm /**< finite state machine */)
         return;
     }
 
+    if (slave->sii.has_general && !slave->sii.coe_details.enable_sdo_info) {
+        EC_ERR("Slave %u does not support Sdo information service!\n",
+                slave->ring_position);
+        fsm->state = ec_fsm_coe_error;
+        return;
+    }
+
     if (!(data = ec_slave_mbox_prepare_send(slave, datagram, 0x03, 8))) {
         fsm->state = ec_fsm_coe_error;
         return;
diff --git a/master/fsm_master.c b/master/fsm_master.c
index 3d4b451528fec4b403e5b19b25f5f9be47faf673..002fc7b5d87cf4dd087841c96781aa2cc2866c2b 100644
--- a/master/fsm_master.c
+++ b/master/fsm_master.c
@@ -489,8 +489,11 @@ void ec_fsm_master_action_idle(
             slave < master->slaves + master->slave_count;
             slave++) {
         if (!(slave->sii.mailbox_protocols & EC_MBOX_COE)
+                || (slave->sii.has_general
+                    && !slave->sii.coe_details.enable_sdo_info)
                 || slave->sdo_dictionary_fetched
                 || slave->current_state == EC_SLAVE_STATE_INIT
+                || slave->current_state == EC_SLAVE_STATE_UNKNOWN
                 || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ
                 ) continue;