Skip to content
Simone C edited this page May 4, 2018 · 5 revisions

FABlin implements a superset of the g-codes supported by Marlin 1.0.x support, as showed in following tables. The supported codes can be divided in:

  • Marlin 1.0.x commands
  • Marlin 1.1.x commands
  • Other commands as defined in other 3D printer firmwares, can have discrepancies in accepted arguments
  • Proprietary commands commands with a custom definition or implementation

Commands are documented inside FABlin developer documentation. For each command a tentative compatibility table is given (according to RepRap G-code).

FABlin tries to adhere to de facto standards or already documented implementations when adding new functionality. This not only increases interoperability but most of all lowers friction for users or developers having experience of other firmware when diving into FABlin.

Marlin 1.0.x

// G1  - Coordinated Movement X Y Z E
// G2  - CW ARC
// G3  - CCW ARC
// G4  - Dwell S<seconds> or P<milliseconds>
// G10 - retract filament according to settings of M207
// G11 - retract recover filament according to settings of M208
// G28 - Home all Axis
// G29 - Detailed Z-Probe, probes the bed at 3 or more points.  Will fail if you haven't homed yet.
// G30 - Single Z Probe, probes bed at current XY location S<mm> searching Z length
// G90 - Use Absolute Coordinates
// G91 - Use Relative Coordinates
// G92 - Set current position to coordinates given

// M Codes
// M0   - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
// M1   - Same as M0
// M17  - Enable/Power all stepper motors
// M18  - Disable all stepper motors; same as M84
// M20  - List SD card
// M21  - Init SD card
// M22  - Release SD card
// M23  - Select SD file (M23 filename.g)
// M24  - Start/resume SD print
// M25  - Pause SD print
// M26  - Set SD position in bytes (M26 S12345)
// M27  - Report SD print status
// M28  - Start SD write (M28 filename.g)
// M29  - Stop SD write
// M30  - Delete file from SD (M30 filename.g)
// M31  - Output time since last M109 or SD card start to serial
// M32  - Select file and start SD print (Can be used _while_ printing from SD card files):
//        syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"
//        Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).
//        The '#' is necessary when calling from within sd files, as it stops buffer prereading
// M42  - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
// M80  - Turn on Power Supply
// M81  - Turn off Power Supply
// M82  - Set E codes absolute (default)
// M83  - Set E codes relative while in Absolute Coordinates (G90) mode
// M84  - Disable steppers until next move,
//        or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled.  S0 to disable the timeout.
// M85  - Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default)
// M92  - Set axis_steps_per_unit - same syntax as G92
// M104 - Set extruder target temp
// M105 - Read current temp
// M106 - Fan on
// 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
//        IF AUTOTEMP is enabled, S<mintemp> B<maxtemp> F<factor>. Exit autotemp by any M109 without F
// M114 - Output current position to serial port
// M115 - Capabilities string
// M117 - display message
// M119 - Output Endstop status to serial port
// M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
// M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
// M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
// M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
// M140 - Set bed target temp
// M150 - Set ambient light fading color and speed R: Red<0-255> U(!): Green<0-255> B: Blue<0-255>, S: Speed<0-255>, S0 disables fading G for green does not work as it's a G command.
// M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
//        Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
// M200 D<millimeters>- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
// M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate
// M205 -  advanced settings:  minimum travel speed S=while printing T=travel only,  B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
// M206 - set additional homing offset
// M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
// M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
// M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
// M218 - set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
// M220 S<factor in percent>- set speed factor override percentage
// M221 S<factor in percent>- set extrude factor override percentage
// M226 P<pin number> S<pin state>- Wait until the specified pin reaches the state required
// M240 - Trigger a camera to take a photograph
// M250 - Set LCD contrast C<contrast value> (value 0..63)
// M280 - set servo position absolute. P: servo index, S: angle or microseconds
// M300 - Play beep sound. S<beeps> number of beeps, D<dur> duration of the beep in 10ms x dur, P<pause> pause between beeps in 10ms x pause
// M301 - Set PID parameters P I and D
// M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
// M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
// M304 - Set bed PID parameters P I and D
// M350 - Set microstepping mode.
// M351 - Toggle MS1 MS2 pins directly.
// M400 - Finish all moves
// M401 - Lower z-probe if present
// M402 - Raise z-probe if present
// M500 - stores parameters in EEPROM
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
// M503 - print the current settings (from memory not from EEPROM)
// M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
// M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
// M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
// M665 - set delta configurations
// M666 - set delta endstop adjustment
// M907 - Set digital trimpot motor current using axis codes.
// M908 - Control digital trimpot directly.
// M928 - Start SD logging (M928 filename.g) - ended by M29
// M999 - Restart after being stopped by error

Marlin 1.1.x

Command Description Notes
M155 S<0-...> Automatically send temperatures

Other Commands

Command Description Notes
M3 S[RPM] SPINDLE ON - Clockwise
M4 S[RPM] SPINDLE ON - CounterClockwise
M5 SPINDLE OFF
M563 [Pn [D<0-2>] [S<0,1>]] Edit tool definition or query defined tools
M564 [X<max_x>] [Y<max_y>] [Z<max_z>] S<0,1> Restrict axes movements to the set limits
M575 [P<port number>] R<rx address> T<tx address> [B<baud rate>] [S<option mask>] Set communication port parameters
M998 Restart after being killed

Proprietary Commands

Command Description Notes
G38 Probe with external probe
M60 S<0-255> Set laser power immediately
M61 S<0-255> Finish moves and set laser power
M62 Turn off laser
M700 S<0-255> Laser Power Control
M701 S<0-255> Ambient Light, Set Red
M702 S<0-255> Ambient Light, Set Green
M703 S<0-255> Ambient Light, Set Blue
M704 Signalling Light ON (same colors of Ambient Light)
M705 Signalling Light OFF
M706 S<0-255> Head Light
M710 write and store in eeprom calibrated z_probe offset length
M711 write and store in eeprom calibrated zprobe extended angle
M712 write and store in eeprom calibrated zprobe retacted angle
M713 autocalibration of z-probe length and store in eeprom
M714 alternate the X axis endstop (M714 S0 use standard X axis endstop, M714 S1 use X axis max endstop)
M720 24VDC head power ON
M721 24VDC head power OFF
M722 5VDC SERVO_1 power ON
M723 5VDC SERVO_1 power OFF
M724 5VDC SERVO_2 power ON
M725 5VDC SERVO_2 power OFF
M726 5VDC RASPBERRY PI power ON
M727 5VDC RASPBERRY PI power OFF
`M728 - RASPBERRY Alive Command
M729 RASPBERRY Sleep //wait for the complete shutdown of raspberryPI
M730 Read last error code
M731 Disable kill on Door Open
M732 Enable or disable the permanent door security switch (M732 S0 -> disable (unsafe), M732 S1 -> enable (safe))
M733 S<0,1> Set homing check
M734 Enable /disable Endstop warnings
M735 Enable /disable silent mode (sounds except for power-on)
M740 read WIRE_END sensor
M741 read DOOR_OPEN sensor
M742 read REEL_LENS_OPEN sensor
M743 read SECURE_SWITCH sensor
M744 read HOT_BED placed in place
M745 read Head placed in place
M746 S<0,1,2> Enable external probe 0=disabled, 1=secure_sw, 2=i2c_scl
M747 [X<0-3>] [Y<0-3>] [Z<0-3>] Assign endstop logic levels
M750 read PRESSURE sensor (ANALOG 0-1023)
M751 read voltage monitor 24VDC input supply (ANALOG V)
M752 read voltage monitor 5VDC input supply (ANALOG V)
M753 read current monitor input supply (ANALOG A)
M754 read tempearture raw values (10bit ADC output)
M760 read FABtotum Personal Fabricator Main Controller serial ID
M761 read FABtotum Personal Fabricator Main Controller control code of serial ID
M762 read FABtotum Personal Fabricator Main Controller board version number
M763 read FABtotum Personal Fabricator Main Controller production batch number
M764 read FABtotum Personal Fabricator Main Controller control code of production batch number
M765 read FABtotum Personal Fabricator Firmware Version
M766 read FABtotum Personal Fabricator Firmware Build Date and Time
M767 read FABtotum Personal Fabricator Firmware Update Author
M785 Turn Prism UV module On/off M785 S[0-1]
M786 External Power OFF
M779 force Head product ID reading (for testing purpose only)
M780 read Head Product Name unimplemented
M781 read Head Vendor Name unimplemented
M782 read Head product ID
M783 read Head vendor ID unimplemented
M784 read Head Serial ID
M785 Turn Prism UV module On/off M785 S[0-1] overrides M785 - read Head firmware version
M786 External Power OFF overrides M786 - read needed firmware version of FABtotum Personal Fabricator Main Controller
M787 external power on/off pin control overrides M787 - read Head capability: type0 (passive, active)
M788 read Head capability: type1 (additive, milling, syringe, laser etc..) unimplemented
M789 read Head capability: purpose (single purpose, multipurpose) unimplemented
M790 Send command(s) to smart head overrides M790 - read Head capability: wattage (0-200W)
M791 read Head capability: axis (number of axis) unimplemented
M792 read Head capability: servo (number of axis) unimplemented
M793 set/read installed head soft ID
M800 changes/reads the thermistor of extruder0 type index
M801 changes/reads the current extruder0 max temp
M802 returns supported thermistor types by index
M803 changes/reads the current extruder0 thermistor input
M804 changes/reads the current automatic fan on temp change configuration.
M805 changes/reads the current wire_end detection configuration.
M852 S<0-...> Set laser security timeout

Clone this wiki locally