diff --git a/epicardium/modules/bhi.c b/epicardium/modules/bhi.c
index 658c4b19a72351681d4cd6c5d16675f6685cbc4f..16021494d060357f34ab390e3d2dc514b8f0b9fc 100644
--- a/epicardium/modules/bhi.c
+++ b/epicardium/modules/bhi.c
@@ -417,7 +417,8 @@ void vBhi160Task(void *pvParameters)
 
 	int lockret = hwlock_acquire(HWLOCK_I2C, pdMS_TO_TICKS(100));
 	if (lockret < 0) {
-		return;
+		LOG_CRIT("bhi160", "Failed to acquire I2C lock!");
+		vTaskDelay(portMAX_DELAY);
 	}
 
 	/* Take Mutex during initialization, just in case */
@@ -447,9 +448,14 @@ void vBhi160Task(void *pvParameters)
 		vTaskDelay(portMAX_DELAY);
 	}
 
-	/* Wait for first two interrupts */
-	ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(100));
+	/* Wait for first interrupt */
+	hwlock_release(HWLOCK_I2C);
 	ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(100));
+	lockret = hwlock_acquire(HWLOCK_I2C, pdMS_TO_TICKS(100));
+	if (lockret < 0) {
+		LOG_CRIT("bhi160", "Failed to acquire I2C lock!");
+		vTaskDelay(portMAX_DELAY);
+	}
 
 	/* Remap axes to match card10 layout */
 	bhy_mapping_matrix_set(