diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp
index 196455db..623574ae 100644
--- a/Firmware/mmu.cpp
+++ b/Firmware/mmu.cpp
@@ -180,6 +180,12 @@ void mmu_loop(void)
 				mmu_puts_P(PSTR("C0\n")); //send continue loading
 				mmu_state = 3;
 			}
+			else if (mmu_cmd == MMU_CMD_U0)
+			{
+				printf_P(PSTR("MMU <= 'U0'\n"));
+				mmu_puts_P(PSTR("U0\n")); //send continue loading
+				mmu_state = 3;
+			}
 			mmu_cmd = 0;
 		}
 		else if ((mmu_last_response + 1000) < millis()) //request every 1s
@@ -588,9 +594,8 @@ void extr_unload()
 		current_position[E_AXIS] -= 80;
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
 		st_synchronize();
-		printf_P(PSTR("U0\n"));
-		fprintf_P(uart2io, PSTR("U0\n"));
 
+		mmu_command(MMU_CMD_U0);
 		// get response
 		manage_response(false, true);
 
diff --git a/Firmware/mmu.h b/Firmware/mmu.h
index a24dc4cc..05f8e358 100644
--- a/Firmware/mmu.h
+++ b/Firmware/mmu.h
@@ -29,6 +29,7 @@ extern int16_t mmu_buildnr;
 #define MMU_CMD_L3   0x23
 #define MMU_CMD_L4   0x24
 #define MMU_CMD_C0   0x30
+#define MMU_CMD_U0   0x40
 
 extern int mmu_puts_P(const char* str);