-
Notifications
You must be signed in to change notification settings - Fork 27
G code commands
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.
// 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
| Command | Description | Notes |
|---|---|---|
M155 S<0-...> |
Automatically send temperatures |
| 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 |
| 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 |
The FABlin architecture:
- Interface - G code commands, Error codes
- Application - Add-ons, G-code intepreter, Planner, Working modes
- Middleware - Servo, Stepper, Temperature
- MCU subsystems - ADC, GPIO, PWM
- Hardware - IO table