diff --git a/master/master.c b/master/master.c
index da9627ea531704a662879c8596143178d7a81437..90dfc8cd7f5118aafac4b4a0291aea2bb5db1e8f 100644
--- a/master/master.c
+++ b/master/master.c
@@ -710,6 +710,18 @@ void ec_fmmu_config(const ec_fmmu_t *fmmu, /**< FMMU */
 
     sync_size = ec_slave_calc_sync_size(slave, fmmu->sync);
 
+    if (slave->master->debug_level) {
+        EC_DBG("Slave %i, FMMU %i:\n",
+               slave->ring_position, fmmu->index);
+
+        EC_DBG("  Logical address: 0x%04X\n", fmmu->logical_start_address);
+        EC_DBG("             Size: %i\n", sync_size);
+        EC_DBG(" Physical address: 0x%04X\n",
+               fmmu->sync->physical_start_address);
+        EC_DBG("        Direction: %s\n",
+               ((fmmu->sync->control_register & 0x04) ? "output" : "input"));
+    }
+
     EC_WRITE_U32(data,      fmmu->logical_start_address);
     EC_WRITE_U16(data + 4,  sync_size); // size of fmmu
     EC_WRITE_U8 (data + 6,  0x00); // logical start bit
diff --git a/master/slave.c b/master/slave.c
index b4412d45b626939cd1c2fa88bf8e1893eee775aa..6a491ad341f3c5cfb487df1e6d7c6664162e2fcd 100644
--- a/master/slave.c
+++ b/master/slave.c
@@ -464,11 +464,14 @@ int ec_slave_prepare_fmmu(ec_slave_t *slave, /**< EtherCAT slave */
                           )
 {
     unsigned int i;
+    ec_fmmu_t *fmmu;
 
     // FMMU configuration already prepared?
-    for (i = 0; i < slave->fmmu_count; i++)
-        if (slave->fmmus[i].domain == domain && slave->fmmus[i].sync == sync)
+    for (i = 0; i < slave->fmmu_count; i++) {
+        fmmu = &slave->fmmus[i];
+        if (fmmu->domain == domain && fmmu->sync == sync)
             return 0;
+    }
 
     // reserve new FMMU...
 
@@ -477,9 +480,13 @@ int ec_slave_prepare_fmmu(ec_slave_t *slave, /**< EtherCAT slave */
         return -1;
     }
 
-    slave->fmmus[slave->fmmu_count].domain = domain;
-    slave->fmmus[slave->fmmu_count].sync = sync;
-    slave->fmmus[slave->fmmu_count].logical_start_address = 0;
+    fmmu = &slave->fmmus[slave->fmmu_count];
+
+    fmmu->index = slave->fmmu_count;
+    fmmu->domain = domain;
+    fmmu->sync = sync;
+    fmmu->logical_start_address = 0;
+
     slave->fmmu_count++;
     slave->registered = 1;
 
diff --git a/master/slave.h b/master/slave.h
index e53a4fea010f444e6080401b8e21c3071ff01f42..d4128ea5f9fbd94630f52d5f9ec3410b7785c3e1 100644
--- a/master/slave.h
+++ b/master/slave.h
@@ -173,6 +173,7 @@ ec_sii_pdo_entry_t;
 
 typedef struct
 {
+    unsigned int index; /**< FMMU index */
     const ec_domain_t *domain; /**< domain */
     const ec_sii_sync_t *sync; /**< sync manager */
     uint32_t logical_start_address; /**< logical start address */