diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 64d3d1f3505ad450c0808c9150e7cd5c63ebd3c8..b66f900950abe3a66bf5e47b35d9d2634c1900b3 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -263,6 +263,7 @@ static millis_t max_inactive_time = 0;
 static millis_t stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME * 1000L;
 millis_t print_job_start_ms = 0; ///< Print job start time
 millis_t print_job_stop_ms = 0;  ///< Print job stop time
+static millis_t last_command_time = 0;
 static uint8_t target_extruder;
 bool no_wait_for_cooling = true;
 bool target_direction;
@@ -724,8 +725,15 @@ void get_command() {
 
   if (drain_queued_commands_P()) return; // priority is given to non-serial commands
   
+  millis_t ms = millis();
+  
+  if (!MYSERIAL.available() && commands_in_queue == 0 && ms - last_command_time > 1000) {
+    SERIAL_ECHOLNPGM(MSG_WAIT);
+    last_command_time = ms;
+  }
+  
   while (MYSERIAL.available() > 0 && commands_in_queue < BUFSIZE) {
-
+    last_command_time = ms;
     serial_char = MYSERIAL.read();
 
     if (serial_char == '\n' || serial_char == '\r' ||
diff --git a/Marlin/language.h b/Marlin/language.h
index ba5f3f700e3f7694a569e96e21369648b3f2de12..220f715e693bfe13b9816f7fe1b104808ab1dc7d 100644
--- a/Marlin/language.h
+++ b/Marlin/language.h
@@ -121,6 +121,7 @@
 #define MSG_FREE_MEMORY                     " Free Memory: "
 #define MSG_PLANNER_BUFFER_BYTES            "  PlannerBufferBytes: "
 #define MSG_OK                              "ok"
+#define MSG_WAIT                            "wait"
 #define MSG_FILE_SAVED                      "Done saving file."
 #define MSG_ERR_LINE_NO                     "Line Number is not Last Line Number+1, Last Line: "
 #define MSG_ERR_CHECKSUM_MISMATCH           "checksum mismatch, Last Line: "