diff --git a/drivers/ng_at86rf2xx/ng_at86rf2xx.c b/drivers/ng_at86rf2xx/ng_at86rf2xx.c
index 4f6b4f1ef99952bd54c3f8de751b34ee374b5f9e..22ffe7d382ce4ee23c0fe3dcd3617d54f3ce09d1 100644
--- a/drivers/ng_at86rf2xx/ng_at86rf2xx.c
+++ b/drivers/ng_at86rf2xx/ng_at86rf2xx.c
@@ -215,8 +215,11 @@ void ng_at86rf2xx_tx_prepare(ng_at86rf2xx_t *dev)
     do {
         state = ng_at86rf2xx_get_status(dev);
     }
-    while (state == NG_AT86RF2XX_STATE_BUSY_RX_AACK);
-    dev->idle_state = state;
+    while (state == NG_AT86RF2XX_STATE_BUSY_RX_AACK ||
+           state == NG_AT86RF2XX_STATE_BUSY_TX_ARET);
+    if (state != NG_AT86RF2XX_STATE_TX_ARET_ON) {
+        dev->idle_state = state;
+    }
     ng_at86rf2xx_set_state(dev, NG_AT86RF2XX_STATE_TX_ARET_ON);
     dev->frame_len = NG_IEEE802154_FCS_LEN;
 }