diff --git a/epicardium/modules/buttons.c b/epicardium/modules/buttons.c
index 6afbdf9c1513f7e5014d132b9d1eaefebf04da09..0caa50c3992352759da84db2d8817aed445b5b21 100644
--- a/epicardium/modules/buttons.c
+++ b/epicardium/modules/buttons.c
@@ -16,20 +16,15 @@ static const uint8_t pin_mask[] = {
 uint8_t epic_buttons_read(uint8_t mask)
 {
 	uint8_t ret = 0;
-	if (portexpander_detected() && (mask & 0x7)) {
-		if (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-			LOG_ERR("buttons", "Can't acquire I2C bus");
-			return 0;
-		}
 
+	hwlock_acquire(HWLOCK_I2C);
+	if (portexpander_detected() && (mask & 0x7)) {
 		/*
-		 * Not using PB_Get() here as that performs one I2C transcation
+		 * Not using PB_Get() here as that performs one I2C transaction
 		 * per button.
 		 */
 		uint8_t pin_status = ~portexpander_in_get(0xFF);
 
-		hwlock_release(HWLOCK_I2C);
-
 		for (uint8_t m = 1; m < 0x8; m <<= 1) {
 			if (mask & m && pin_status & pin_mask[m]) {
 				ret |= m;
@@ -41,5 +36,6 @@ uint8_t epic_buttons_read(uint8_t mask)
 		ret |= BUTTON_RESET;
 	}
 
+	hwlock_release(HWLOCK_I2C);
 	return ret;
 }