diff --git a/motionblindsble/device.py b/motionblindsble/device.py
index 9c6ecf9..0d9affc 100644
--- a/motionblindsble/device.py
+++ b/motionblindsble/device.py
@@ -11,6 +11,8 @@ from asyncio import (
     TimerHandle,
     create_task,
     get_event_loop,
+    new_event_loop,
+    set_event_loop,
     sleep,
     wait,
 )
@@ -248,7 +250,13 @@ class ConnectionQueue:
             )
             return device._create_task(target=device.establish_connection())
         _LOGGER.debug("(%s) Connecting", device.ble_device.address)
-        return get_event_loop().create_task(device.establish_connection())
+        try:
+            loop = get_event_loop()
+        except RuntimeError:
+            loop = new_event_loop()
+            set_event_loop(loop)
+
+        return loop.create_task(device.establish_connection())
 
     async def wait_for_connection(self, device: MotionDevice) -> bool:
         """Wait for a connection, return True to last caller if connected."""
