diff --git a/epicardium/modules/dispatcher.c b/epicardium/modules/dispatcher.c
index 1f504eca52e20bfb8c118281c772942e72ac7a18..03f8534cc0a1c02dccc61f8c03e486e2ab472ff8 100644
--- a/epicardium/modules/dispatcher.c
+++ b/epicardium/modules/dispatcher.c
@@ -13,14 +13,17 @@ TaskHandle_t dispatcher_task_id;
 static StaticSemaphore_t api_mutex_data;
 SemaphoreHandle_t api_mutex = NULL;
 
+void dispatcher_mutex_init(void)
+{
+	api_mutex = xSemaphoreCreateMutexStatic(&api_mutex_data);
+}
+
 /*
  * API dispatcher task.  This task will sleep until an API call is issued and
  * then wake up to dispatch it.
  */
 void vApiDispatcher(void *pvParameters)
 {
-	api_mutex = xSemaphoreCreateMutexStatic(&api_mutex_data);
-
 	LOG_DEBUG("dispatcher", "Ready.");
 	while (1) {
 		if (api_dispatcher_poll()) {
diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c
index c944c6b9f140b5e6952c28996943bf19d1254332..91a87471ab87b518eb2297c9f009110c33e819b9 100644
--- a/epicardium/modules/hardware.c
+++ b/epicardium/modules/hardware.c
@@ -177,6 +177,11 @@ int hardware_early_init(void)
 	 */
 	hwlock_init();
 
+	/*
+	 * API Dispatcher Mutex
+	 */
+	dispatcher_mutex_init();
+
 	return 0;
 }
 
diff --git a/epicardium/modules/modules.h b/epicardium/modules/modules.h
index 9eea0cb6130dbe3e94492e402620100714177af5..87124144fd98a5c4c230596ac4234f4f84332d98 100644
--- a/epicardium/modules/modules.h
+++ b/epicardium/modules/modules.h
@@ -9,6 +9,7 @@
 
 /* ---------- Dispatcher --------------------------------------------------- */
 void vApiDispatcher(void *pvParameters);
+void dispatcher_mutex_init(void);
 extern SemaphoreHandle_t api_mutex;
 extern TaskHandle_t dispatcher_task_id;