diff --git a/epicardium/ble/epic_ble_api.c b/epicardium/ble/epic_ble_api.c
index c1fa3e11ec5efdb4c8fe303115481d19650fb891..68ad55a3bd3ddede3d845ac51b8f60017ea0b129 100644
--- a/epicardium/ble/epic_ble_api.c
+++ b/epicardium/ble/epic_ble_api.c
@@ -97,6 +97,10 @@ void ble_epic_ble_api_trigger_event(enum epic_ble_event_type type, void *data)
 
 int epic_ble_get_event(struct epic_ble_event *e)
 {
+	if (!ble_is_enabled()) {
+		return -EIO;
+	}
+
 	if (xQueueReceive(ble_event_queue, e, 0) != pdTRUE) {
 		return -ENOENT;
 	}
@@ -162,6 +166,10 @@ void vDmTimerCallback()
 
 int epic_ble_init(void)
 {
+	if (!ble_is_enabled()) {
+		return -EIO;
+	}
+
 	if (dm_timer == NULL) {
 		dm_timer = xTimerCreateStatic(
 			"dmtimer",
diff --git a/pycardium/modules/modbluetooth_card10.c b/pycardium/modules/modbluetooth_card10.c
index 61d244ca563e24533ea9d7951b29bb69a94bea62..995a0c1c216d4081ef74e60583dfa4901c330159 100644
--- a/pycardium/modules/modbluetooth_card10.c
+++ b/pycardium/modules/modbluetooth_card10.c
@@ -474,9 +474,14 @@ int mp_bluetooth_init(void)
 		MP_ROM_INT(EPIC_INT_BLE), (mp_obj_t *)&ble_event_obj
 	);
 	clear_events();
-	epic_ble_init();
-	active = true;
-	return 0;
+	int ret = epic_ble_init();
+
+	if (ret == 0) {
+		active = true;
+	} else {
+		active = false;
+	}
+	return ret;
 }
 
 // Disables the Bluetooth stack. Is a no-op when not enabled.