diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index db7157d09777d0aebcada086f932de32c146d763..dd2c20cafd1019200592abe528266c6a0e54f46b 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -17,10 +17,12 @@
 static void do_update(void)
 {
 	hwlock_acquire(HWLOCK_LED);
+	hwlock_acquire(HWLOCK_I2C);
 
 	leds_update_power();
 	leds_update();
 
+	hwlock_release(HWLOCK_I2C);
 	hwlock_release(HWLOCK_LED);
 }
 
diff --git a/epicardium/modules/personal_state.c b/epicardium/modules/personal_state.c
index 3aa5138ab52be9ba4fbbc1f9118249a32d4902c9..e9390bf82cef029e4210931818f102ff7e14bfdf 100644
--- a/epicardium/modules/personal_state.c
+++ b/epicardium/modules/personal_state.c
@@ -125,9 +125,13 @@ void vLedTask(void *pvParameters)
 						(float)(1000 /
 							led_animation_rate))));
 			}
+
+			hwlock_acquire(HWLOCK_I2C);
+
 			leds_update_power();
 			leds_update();
 
+			hwlock_release(HWLOCK_I2C);
 			hwlock_release(HWLOCK_LED);
 		}