Skip to main content

Site Navigation

Your Account

Choose Language

G-Codes not implemented

This page lists G-Codes that may be found in other firmwares/CNC control software which are not implemented in RepRapFirmware.

For the detail on implemented G-Codes see the Gcode page. Some will be implemented in future firmware releases (see this forum for more details Other features are covered by existing RepRapFirmware G-Codes, are obsolete, or deprecated.

Note, in RepRapFirmware 2.03 and later, if you try to execute a G- or M-command that RRF does not implement, it will execute a system macro of that name if it exists. For example, if you send G40 then it will execute /sys/G40.g if it exists; and if you send M48 then it will execute /sys/M48.g if it exists.

G-Codes not yet implemented but may be in the future

When these are implemented depends very much on the demand.

  • G17..19: Plane Selection (CNC specific)
  • G40: Compensation Off (CNC specific)
  • G80: Cancel Canned Cycle (CNC specific)
  • M6: Tool change (although tool change macros and entering Tn commands allow for greater functionality)
  • M7: Mist Coolant On (CNC specific) (pumps or other motors can be controlled using appropriate circuity on a fan pin, see M106 or an unused IO pin, see M42)
  • M8: Flood Coolant On (CNC specific) (but see comments above on M7)
  • M9: Coolant Off (CNC specific) (but see comments above on M7)
  • M10: Vacuum On (CNC specific) (but see comments above on M7)
  • M11: Vacuum Off (CNC specific) (but see comments above on M7)
  • M33: Stop and Close File and save restart.gcode (possibly not using this specific G-Code)
  • M85: Set inactivity shut down timer (No demand)
  • M123: Tachometer value
  • M142: Holding Pressure (for vacuum tables)
  • M407: Display filament diameter (currently does the same as M404, possibly change to display measured diameter in future)
  • M590: Report current tool type and index (see M450)
  • M668: Set Z-offset compensations polynomial (currently only implemented in dc42-cmm) fork.
  • M910: Set decay mode (Detailed driver configuration can be achieved using the "C" Parameter of M569)

G-Codes not implemented which are not planned for implementation

These are unlikely to be implemented due to functionality existing in other RepRapFirmware G-codes or there being no perceived demand (if that is wrong then post in the firmware wishlist on the forum)

  • G6: Direct Stepper Move (Use G1 S1 instead)
  • G33: Measure/List/Adjust Distortion Matrix (Use G29 or G32 instead)
  • G93: Feed Rate Mode (Inverse Time Mode) (No demand)
  • G94: Feed Rate Mode (Units per Minute) (No demand)
  • G100: Calibrate floor or rod radius (No demand)
  • G130: Set digital potentiometer value (Use M906)
  • G131: Remove offset
  • G132: Calibrate endstop offsets (For Delta see M666, M208 allows endstop positions to be set)
  • G133: Measure steps to top
  • G161: Home axes to minimum (use G28, if that homes to max then consider a macro to move to 0,0,0 after homing)
  • G162: Home axes to maximum (use G28, if that homes to min then consider a macro to move to max,max,max after homing)
  • M2: Program End (Not required)
  • M17: Enable/Power all stepper motors (Not required)
  • M31: Output time since last M109 or SD card start to serial (No demand)
  • M33: Get the long name for an SD card file or folder (Not required, other SD card M commands already support long file names)
  • M34: Set SD file sorting options (Not Required as the UI, e.g. DWC or PanelDue is better suited to handling how file lists are displayed)
  • M40: Eject (No requirement, define a macro to eject parts)
  • M41: Loop (No requirement)
  • M43: Stand by on material exhausted (use M591)
  • M43: Pin report and debug (much of this functionality is available within M42, M581,M582, M583)
  • M48: Measure Z-Probe repeatability (use a macro)
  • M93: Send axis_steps_per_unit (use M92)
  • M101: Turn extruder 1 on (Forward), Undo Retraction (use standard G1 commands, or G10 for firmware retraction)
  • M102: Turn extruder 1 on (Reverse) (use standard G1 commands, or G10 for firmware retraction)
  • M103: Turn all extruders off, Extruder Retraction (use standard G1 commands, or G10 for firmware retraction + M18/M84 to turn of specific motors)
  • M113: Set Extruder PWM (No requirement)
  • M124: Immediate motor stop
  • M126: Open Valve (Can use a servo on any PWM pin and M280)
  • M127: Close Valve (Can use a servo on any PWM pin and M280)
  • M128: Extruder Pressure PWM (use M42)
  • M129: Extruder pressure off (use M42)
  • M130: Set PID P value (use M301)
  • M131: Set PID I value (use M301)
  • M132: Set PID D value (use M301)
  • M133: Set PID I limit value (use M301)
  • M134: Write PID values to EEPROM (use M500)
  • M136: Print PID settings to host (use M301)
  • M146: Set Chamber Humidity (use a macro and M42 to control humidifier, M305 to view the humidity with a DHT sensor)
  • M149: Set temperature units (No demand, just use C)
  • M150: Set display color (No demand/also should be configured on the display not by printer firmware)
  • M155: Automatically send temperatures (hosts should use polling)
  • M160: Number of mixed materials ( use M567)
  • M163: Set weight of mixed material ( use M567 to define the ratios based on extrusion percentage not weight)
  • M164: Store weights (Not required w/o M163)
  • M165: Set multiple mix weights (use M567)
  • M202: Set max travel acceleration (use M204)
  • M207: Calibrate z axis by detecting z max length (Clashed with existing meaning of M207, Use G1 H3 instead)
  • M208: Set unretract length (Clashes with M208 Set axis max travel and can be achieved using M207)
  • M209: Enable automatic retract (no demand)
  • M210: Set homing feedrates (homing feedrates are specified in the home....g macros)
  • M211: Disable/Enable software endstops (use M564)
  • M212: Set Bed Level Sensor Offset (use G31)
  • M218: Set Hotend Offset (use G10)
  • M227: Enable Automatic Reverse and Prime (anti ooze strategy is better managed by the slicer)
  • M228: Disable Automatic Reverse and Prime (anti ooze strategy is better managed by the slicer)
  • M229: Enable Automatic Reverse and Prime (anti ooze strategy is better managed by the slicer)
  • M240: Trigger camera (use M42 to trigger a pin connected to a camera)
  • M240: Start conveyor belt motor / Echo off (use a macro to control a conveyor axis/for echo debug use M111)
  • M241: Stop conveyor belt motor / echo on (use a macro to control a conveyor axis/for echo debug use M111)
  • M245: Start cooler (use normal fan control M106 etc)
  • M246: Stop cooler (use normal fan control M106 etc)
  • M250: Set LCD contrast (better set using the LCD if its a smart LCD)
  • M251: Measure Z steps from homing stop (Delta printers) (No demand)
  • M306: Set home offset calculated from toolhead position (No demand)
  • M320: Activate autolevel (use bed probing, levelling Gcodes G29-G32)
  • M321: Deactivate autolevel
  • M322: Reset autolevel matrix
  • M323: Distortion correction on/off
  • M340: Control the servos (use M280)
  • M355: Turn case lights on/off (use M42)
  • M360: Report firmware configuration (look at config.g)
  • M360-M364: SCARA calibration codes (not required, use G1 S2 moves commands instead)
  • M365 SCARA scaling factor (use M579)
  • M371: Move to next calibration position
  • M372: Record calibration value, and move to next position
  • M373: End bed level calibration mode
  • M380: Activate solenoid (use M42)
  • M381: Disable all solenoids (use M42)
  • M405: Filament Sensor on (This and M406 are a subset of the functionality of M591)
  • M406: Filament Sensor off
  • M420: Set RGB Colors as PWM (use M42)
  • M420/M421: Enable/Disable Mesh Leveling (use bed probing, levelling Gcodes G29-G32)
  • M460: Define temperature range for thermistor controlled fan (use M106 to set a fan in thermostatic mode)
  • M530: Enable printing mode (not required)
  • M531: Set print name (not required)
  • M532: Set print progress (not required)
  • M540: Enable/Disable "Stop SD Print on Endstop Hit" (No demand)
  • M565: Set Z probe offset (see G31)
  • M600: Set line cross section (volume extrusion not supported)
  • M600: Filament change pause (use pause.g macro to define what happens on pause)
  • M605: Set dual x-carriage movement mode (no requirement use M563)
  • M700: Level plate (See G32)
  • M703: Get Board Type (use M115/M122)
  • M710: Erase the EEPROM and reset the board (use M503, M500 and then M112, in a macro if you need to do this odd command)
  • M800: Fire start print procedure (use start gcode in slicer)
  • M801: Fire end print procedure (use end gcode in slicer)
  • M851: Set Z-Probe Offset (use G31)
  • M907: Set digital trimpot motor (use M906)
  • M908: Control digital trimpot directly (no requirement, use M906)
  • M909: Set microstepping (use M350)
  • M928: Start SD logging (See M929)


Add Comment

View Statistics:

Past 24 Hours: 6

Past 7 Days: 16

Past 30 Days: 109

All Time: 2,321