diff --git a/micropython/drivers/radio/nrf24l01/nrf24l01.py b/micropython/drivers/radio/nrf24l01/nrf24l01.py
index 9b034f8ba..04f07b9d9 100644
--- a/micropython/drivers/radio/nrf24l01/nrf24l01.py
+++ b/micropython/drivers/radio/nrf24l01/nrf24l01.py
@@ -220,6 +220,13 @@ def send(self, buf, timeout=500):
         result = None
         while result is None and utime.ticks_diff(utime.ticks_ms(), start) < timeout:
             result = self.send_done()  # 1 == success, 2 == fail
+
+        if result is None:
+            # timed out, cancel sending and power down the module
+            self.flush_tx()
+            self.reg_write(CONFIG, self.reg_read(CONFIG) & ~PWR_UP)
+            raise OSError("timed out")
+
         if result == 2:
             raise OSError("send failed")