diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 45907f3557..10d26ac98b 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -5040,10 +5040,14 @@ inline void gcode_M121() { endstops.enable_globally(false); }
     uint8_t addr = code_seen('A') ? code_value_short() : 0;
     int bytes    = code_seen('B') ? code_value_short() : 0;
 
-    if (addr && bytes) {
+    if (addr && bytes > 0 && bytes <= 32) {
       i2c.address(addr);
       i2c.reqbytes(bytes);
     }
+    else {
+      SERIAL_ERROR_START;
+      SERIAL_ERRORLN("Bad i2c request");
+    }
   }
 
 #endif //EXPERIMENTAL_I2CBUS