diff --git a/epicardium/modules/hw-lock.c b/epicardium/modules/hw-lock.c
index f02a5882b1bdb2aabddeb2ccea77d59fe14939c4..cc9986ec96285c7f2f42e6b06a51364d656f2b0e 100644
--- a/epicardium/modules/hw-lock.c
+++ b/epicardium/modules/hw-lock.c
@@ -25,13 +25,25 @@ int hwlock_acquire(enum hwlock_periph p, TickType_t wait)
 	if (p >= _HWLOCK_MAX) {
 		return -EINVAL;
 	}
+	TaskHandle_t task = xTaskGetCurrentTaskHandle();
 
 	if (xSemaphoreTake(hwlock_mutex[p], wait) != pdTRUE) {
-		LOG_WARN("hwlock", "Lock %u is busy.", p);
+		LOG_WARN(
+			"hwlock",
+			"Lock %u is busy, held by: %s, attempt to accquire by: %s",
+			p,
+			pcTaskGetName(hwlock_tasks[p]),
+			pcTaskGetName(task)
+		);
+		LOG_DEBUG(
+			"hwlock",
+			"...attempted to lock from pc %p",
+			__builtin_return_address(0)
+		);
 		return -EBUSY;
 	}
 
-	hwlock_tasks[p] = xTaskGetCurrentTaskHandle();
+	hwlock_tasks[p] = task;
 
 	return 0;
 }
diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c
index 093e97ecdad2bd250636150c59ac18fcb16ad279..89365ffbf3fa587f53d00207905eb0942b3eb607 100644
--- a/epicardium/modules/pmic.c
+++ b/epicardium/modules/pmic.c
@@ -16,6 +16,7 @@
 #include "timers.h"
 
 #include <stdio.h>
+#include <string.h>
 
 /* Task ID for the pmic handler */
 static TaskHandle_t pmic_task_id = NULL;
@@ -207,7 +208,10 @@ static void pmic_check_battery()
 
 	res = pmic_read_amux(PMIC_AMUX_BATT_U, &u_batt);
 	if (res < 0) {
-		LOG_ERR("pmic", "Failed reading battery voltage: %d", res);
+		LOG_ERR("pmic",
+			"Failed reading battery voltage: %s (%d)",
+			strerror(-res),
+			res);
 		return;
 	}