diff --git a/master/master.c b/master/master.c
index eebb3c4b017e41608e24c5b814995709c7d97246..3ce54f7a0b6a8101f7cc8d667b8e6c9c597198f1 100644
--- a/master/master.c
+++ b/master/master.c
@@ -718,6 +718,14 @@ void ec_master_receive_datagrams(ec_master_t *master, /**< EtherCAT master */
         if (!matched) {
             master->stats.unmatched++;
             ec_master_output_stats(master);
+
+            if (unlikely(master->debug_level > 0)) {
+                EC_DBG("UNMATCHED datagram:\n");
+                ec_print_data(cur_data - EC_DATAGRAM_HEADER_SIZE,
+                        EC_DATAGRAM_HEADER_SIZE + data_size
+                        + EC_DATAGRAM_FOOTER_SIZE);
+            }
+
             cur_data += data_size + EC_DATAGRAM_FOOTER_SIZE;
             continue;
         }
@@ -1504,6 +1512,13 @@ void ecrt_master_receive(ec_master_t *master /**< EtherCAT master */)
             datagram->state = EC_DATAGRAM_TIMED_OUT;
             master->stats.timeouts++;
             ec_master_output_stats(master);
+
+            if (unlikely(master->debug_level > 0)) {
+                EC_DBG("TIMED OUT datagram index %02X waited %u us.\n",
+                        datagram->index,
+                        (unsigned int) (master->main_device.cycles_poll
+                            - datagram->cycles_sent) * 1000 / cpu_khz);
+            }
         }
     }