diff --git a/examples/mini/mini.c b/examples/mini/mini.c
index 2eed05ac9164d82d79903670f0f5b1a1595c2bdc..cb62a70b72e50d5081c8d6256051608c8e824a3d 100644
--- a/examples/mini/mini.c
+++ b/examples/mini/mini.c
@@ -201,12 +201,9 @@ void __exit cleanup_mini_module(void)
 {
     printk(KERN_INFO "=== Stopping Minimal EtherCAT environment... ===\n");
 
-    if (master) {
-        del_timer_sync(&timer);
-        printk(KERN_INFO "Deactivating master...\n");
-        ecrt_master_deactivate(master);
-        ecrt_release_master(master);
-    }
+    del_timer_sync(&timer);
+    printk(KERN_INFO "Releasing master...\n");
+    ecrt_release_master(master);
 
     printk(KERN_INFO "=== Minimal EtherCAT environment stopped. ===\n");
 }
diff --git a/examples/msr/msr_sample.c b/examples/msr/msr_sample.c
index 82b3fbce2721ce9e49eaef374b7ab58f598e4f6f..0d148216382e076f06c8df8059ed37e5b7d10f7f 100644
--- a/examples/msr/msr_sample.c
+++ b/examples/msr/msr_sample.c
@@ -214,7 +214,6 @@ void __exit cleanup_mod(void)
 
     rt_task_delete(&task);
     stop_rt_timer();
-    ecrt_master_deactivate(master);
     ecrt_release_master(master);
     rt_sem_delete(&master_sem);
     msr_rtlib_cleanup();
diff --git a/examples/rtai/rtai_sample.c b/examples/rtai/rtai_sample.c
index aa5365175bbd4f857be6b8f6c03976fffee67338..79889a35db1bf9843f7abce5abcd133b4ad3aa17 100644
--- a/examples/rtai/rtai_sample.c
+++ b/examples/rtai/rtai_sample.c
@@ -202,7 +202,6 @@ void __exit cleanup_mod(void)
 
     rt_task_delete(&task);
     stop_rt_timer();
-    ecrt_master_deactivate(master);
     ecrt_release_master(master);
     rt_sem_delete(&master_sem);
 
diff --git a/include/ecrt.h b/include/ecrt.h
index d6120e9e034fce43eb701d0f940c36b17032368b..b1c14f5ca899fe69abb7a542bb0c716ab1e26c1b 100644
--- a/include/ecrt.h
+++ b/include/ecrt.h
@@ -109,7 +109,7 @@ void ecrt_master_callbacks(ec_master_t *master, int (*request_cb)(void *),
 ec_domain_t *ecrt_master_create_domain(ec_master_t *master);
 
 int ecrt_master_activate(ec_master_t *master);
-void ecrt_master_deactivate(ec_master_t *master);
+void ecrt_master_deactivate(ec_master_t *master); // deprecated!
 
 void ecrt_master_prepare(ec_master_t *master);
 
diff --git a/master/master.c b/master/master.c
index 388118d0387b419e8664c81e80529d92bfe58e8c..98d158aa60a792cf033ca5dc6127076e49f553b3 100644
--- a/master/master.c
+++ b/master/master.c
@@ -417,6 +417,25 @@ void ec_master_leave_operation_mode(ec_master_t *master
                                     /**< EtherCAT master */)
 {
     ec_slave_t *slave;
+    ec_fsm_t *fsm = &master->fsm;
+    ec_datagram_t *datagram = &master->fsm.datagram;
+
+    // wait for FSM datagram
+    if (datagram->state == EC_DATAGRAM_SENT) {
+        while (get_cycles() - datagram->cycles_sent
+               < (cycles_t) EC_IO_TIMEOUT /* us */ * (cpu_khz / 1000)) {}
+        ecrt_master_receive(master);
+    }
+
+    // set states for all slaves
+    list_for_each_entry(slave, &master->slaves, list) {
+        ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
+    }
+
+    // execute master FSM to deactivate slaves
+    while (ec_fsm_exec(fsm)) {
+        ec_master_sync_io(master);
+    }
 
     ec_master_destroy_domains(master);
 
@@ -1325,31 +1344,14 @@ int ecrt_master_activate(ec_master_t *master /**< EtherCAT master */)
 
 /**
    Resets all slaves to INIT state.
+   This method is deprecated and will disappear in the next version
+   of the realtime interface. The functionality is moved to
+   ecrt_master_release().
    \ingroup RealtimeInterface
 */
 
 void ecrt_master_deactivate(ec_master_t *master /**< EtherCAT master */)
 {
-    ec_fsm_t *fsm = &master->fsm;
-    ec_slave_t *slave;
-    ec_datagram_t *datagram = &master->fsm.datagram;
-
-    // wait for FSM datagram
-    if (datagram->state == EC_DATAGRAM_SENT) {
-        while (get_cycles() - datagram->cycles_sent
-               < (cycles_t) EC_IO_TIMEOUT /* us */ * (cpu_khz / 1000)) {}
-        ecrt_master_receive(master);
-    }
-
-    // set states for all slaves
-    list_for_each_entry(slave, &master->slaves, list) {
-        ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
-    }
-
-    // execute master FSM to deactivate slaves
-    while (ec_fsm_exec(fsm)) {
-        ec_master_sync_io(master);
-    }
 }
 
 /*****************************************************************************/