diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 53d829acf0..916f0c8c4d 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -673,6 +673,11 @@ void get_command()
           }
 
         }
+
+        //If command was e-stop process now
+        if(strcmp(cmdbuffer[bufindw], "M112") == 0)
+          kill();
+        
         bufindw = (bufindw + 1)%BUFSIZE;
         buflen += 1;
       }
@@ -1830,6 +1835,9 @@ void process_commands()
 #endif
       setWatch();
       break;
+    case 112: //  M112 -Emergency Stop
+      kill();
+      break;
     case 140: // M140 set bed temp
       if (code_seen('S')) setTargetBed(code_value());
       break;
@@ -3426,6 +3434,9 @@ void handle_status_leds(void) {
 
 void manage_inactivity()
 {
+  if(buflen < (BUFSIZE-1))
+    get_command();
+
   if( (millis() - previous_millis_cmd) >  max_inactive_time )
     if(max_inactive_time)
       kill();
diff --git a/README.md b/README.md
index 0b955540ff..17e920ec00 100644
--- a/README.md
+++ b/README.md
@@ -195,6 +195,7 @@ M Codes
 *  M107 - Fan off
 *  M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
 *         Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
+*  M112 - Emergency stop
 *  M114 - Output current position to serial port
 *  M115 - Capabilities string
 *  M117 - display message