Posted by SainSmart on

Written by Graham B

A minor update to my pocket reference for Grbl, some slight rewording and added settings for a rotary 4th axis.
A pocket reference to Grbl, Error codes, Alarm codes, settings, supported Gcode and States.
Print it double sided (or stick the two pieces of paper together) and it will fold into 3.
If you don't do this you will need large pockets!




Grbl Error Codes

Code Description
1 GCode Command letter was not found.
2 GCode Command value invalid or missing.
3 Grbl '$' not recognized or supported.
4 Negative value for an expected positive value.
5 Homing fail. Homing not enabled in settings.
6 Minstep pulse must be greater than 3usec.
7 EEPROM read failed. Default values used.
8 Grbl '$'command Only valid when Idle.
9 GCode commands invalid in alarm or jog state.
10 Soft limits require homing to be enabled.
11 Max characters per line exceeded. Ignored.
12 Grbl '$'setting exceeds the maximum step rate.
13 Safety door opened and door state initiated.
14 Build info or start-up line > EEPROM line length
15 Jog target exceeds machine travel, ignored.
16 Jog Cmd missing '=' or has prohibited GCode.
17 Laser mode requires PWM output.
20 Unsupported or invalid GCode command.
21 > 1 GCode command in a modal group in block.
22 Feed rate has not yet been set or is undefined.
23 GCode command requires an integer value.
24 > 1 GCode command using axis words found.
25 Repeated GCodeword found in block.
26 No axis words found in command block.
27 Line number value is invalid.
28 GCode Cmd missing a required value word.
29 G59.x WCS are not supported.
30 G53 only valid with G0 and G1 motion modes.
31 Unneeded Axis words found in block.
32 G2/G3 arcs need >= 1 in-plane axis word.
33 Motion command target is invalid.
34 Arc radius value is invalid.
35 G2/G3 arcs need >= 1 in-plane offset word.
36 Unused value words found in block.
37 G43.1 offset not assigned to tool length axis.
38 Tool number greater than max value.


Grbl Alarm Codes

Code Alarm Description
1 Hard limit triggered. Position Lost.
2 Soft limit alarm, position kept. Unlock is Safe.
3 Reset while in motion. Position lost.
4 Probe fail. Probe not in expected initial state.
5 Probe fail. Probe did not contact the work.
6 Homing fail. The active homing cycle was reset.
7 Homing fail. Door opened during homing cycle.
8 Homing fail. Pull off failed to clear limit switch.
9 Homing fail. Could not find limit switch.


Grbl Non Gcode Commands

Command Description
$$ Display Grbl Settings.
$x=val Change Grbl Setting xtoval.
$# View GCode Parameters.
$G View GCode parser state.
$C Toggle Check Gcode Mode
$H Run Homing Cycle
$J=gcode Run Jogging Motion.
$X Kill Alarm Lock state.
$I View Build Info
$N View saved start up code
$Nx=line Save Start-up GCode line (x=0 or 1) There are
executed on a reset.
$RST=$ Restores the Grbl settings to defaults.
$RST=# Erases G54-G59 WCS offsets and G28/30
positions stored in EEPROM.
$RST=* Clear and Load all data from EEPROM.
$SLP Enable Sleep mode.
Ctrl-x Soft Reset
? Status report query.
~ Cycle Start/Resume from Feed Hold, Door or
Program pause.
! Feed Hold – Stop all motion.

NOTE: There area number of other realtime commands using non typeable characters. These are for developers and are not normally used outside from the console. These control things such as feed overrides. And are not covered here.


Grbl Settings

Setting Description
$0 Step pulse, microseconds
$1 Step idle delay, milliseconds
$2 Step port invert, XYZmask*
$3 Direction port invert, XYZmask*
$4 Step enable invert, (0=Disable, 1=Invert)
$5 Limit pins invert, (0=N-Open. 1=N-Close)
$6 Probe pin invert, (0=N-Open. 1=N-Close)
$10 Status report, ‘?’ status.  0= WCS, 1=Machine, 2=
plan/buffer + WCS, 3=plan/buffer + Machine.
$11 Junction deviation, mm
$12 Arc tolerance, mm
$13 Report in inches, (0=mm. 1=Inches)**
$20 Soft limits, (0=Disable. 1=Enable, Hard limits and
homing Required.
$21 Hard limits, (0=Disable. 1=Enable)
$22 Homing cycle, (0=Disable. 1=Enable)
$23 Homing direction invert, XYZmask* Sets home Pos
$24 Homing feed, mm/min
$25 Homing seek, mm/min
$26 Homing debounce, milliseconds
$27 Homing pull-off, mm
$30 Max spindle speed, RPM
$31 Min spindle speed, RPM
$32 Laser mode, (0=Off, 1=On)
$100 Number of X steps to move 1mm
$101 Number of Y steps to move 1mm
$102 Number of Z steps to move 1mm
$103 Number of A steps to move 1°
$110 X Max rate, mm/min
$111 Y Max rate, mm/min
$112 Z Max rate, mm/min
$113 A Max rate, °/min
$120 X Acceleration, mm/sec^2
$121 Y Acceleration, mm/sec^2
$122 Z Acceleration, mm/sec^2
$123 A Acceleration, °/sec^2
$130 X Max travel, mm Only for Homing and Soft Limits.
$131 Y Max travel, mm Only for Homing and Soft Limits.
$132 Z Max travel, mm Only for Homing and Soft Limits.
$133 A Max travel, ° Only for Homing and Soft Limits.

* XYZmask is a value setting for the X Y and Z axes. Change if an axis is moving in the wrong direction. Value will be 0-7.

** Reporting units are independent of the units set in the Gcode!


Grbl Supported GCodes

Code Description
F Set Feed rate in Units/min (See G20/G21).
G0 A Rapid positioning move at the Rapid Feed
Rate. In Laser mode Laser will be turned off.
G1 A Cutting move in a straight line. At the Current
F rate.
G2 Cuta Clockwise arc.
G3 Cut an Anti-Clockwise arc.
G4 Pause command execution for the time in Pnnn.
P specifies the time in seconds. Other systems use
milliseconds as the pause time, if used unchanged this
can result in VERY long pauses.
G10 L2 Sets the offset for a WCS origin using absolute
machine coordinates.
G10 L20 As G10 L2 but the parameters are offsets from
the current position.
G17 Draw Arcs in the XY plane, default.
G18 Draw Arcs in the ZX plane.
G19 Draw Arcs in the YZ plane.
G20 All distances and positions are in Inches
G21 All distances and positions are in mm
G28 Goto safe position. NOTE: If you have not run a
homing cycle and have set the safe position this is
very ‘unsafe’ to use.
G28.1 Set Safe position using absolute machine
G30 Goto the saved G30 position.
G30.1 Set Predefined position using absolute machine
coordinates, a rapid G0 move to that position
will be performed before the coordinates are
G38.2 Probe towards the stock, error on a failure.
G38.3 As G38.2, no error on failure
G38.4 As G38.2 but move away, stop on a loss of
G38.5 As G38.4, no error on failure.
G40 Cutter Compensation off. Grbl does not support
cutter compensation.
G43.1 Dynamic Tool length offset, offsets Z end of tool
position for subsequent moves.
G49 Cancel Tool length Offset.
G53 Use machine coordinates in this command.
G54 Activate the relevant saved origin.
G55-59 As G54, activates a different saved position


Grbl Supported GCodes

Code Description
G61 Exact Path mode. Grbl does not support any other
G80 Canned Cycle Cancel. Grbl does not support any of
the canned cycle modes which this cancels so it does
G90 All distances and positions are Absolute values
from the current origin.
G91 All distances and positions are Relative values
from the current position.
G91.1 Sets Arc incremental position mode
G92 Sets the current coordinate point, used to set an
origin point of zero, commonly known as the
home position.
G92.1 Reset any G92 offsets in effect to zero and zero
any saved values
G93 Inverse time motion mode.
G94 Units/min mode at the current F rate.
M0 Pause for P seconds.
M1 As M0 but only pauses if an optional stop switch
is on.
M2 Program End, turnoff spindle/laser and stops
the machine.
M3 Start spindle clockwise. In Laser mode sets
Constant power.
M4 As M3, In Laser Mode sets Dynamic power.
M5 Stop the Spindle
M7 Toggle Air Assist/Coolant.
M8 Toggle Air Assist/Coolant. (a different pin is used
than M7)
M9 Air Assist/Coolant off.
M30 Same as M2.
S Set Spindle speed in RPM or Laser Power.

NOTE: Codes can contain leading zeros, G0 and G00 are the same. There are loads more GCodes, these are the ones Grbl supports. A lot of commands are Modal meaning they are remembered and applied to subsequent commands. For example, G0 X1 followed by Z5 remembers the G0 Mode and applies it to the Z5. S is modal, remembered from the last command. Two commands in the same modal group cannot be on the same line.


Grbl Gcode Parameters

Letter Description
X Y Z A Distances or positions on the X Y Z A axes.
I J K Distances or positions for G2 and G3 Arcs.
Correspond to the Z Y X axis respectively. These
are always incremental coordinates regardless of
L Loop Cycle Count, supported but not used.
N Line Number, supported but not used.
R Arc radius for G2 and G3.
P Multi-purpose parameter depends on command it
is used in.
T Toolselection, not used.

NOTE: All parameters must be followed by a number.


Grbl States

State Description
Alarm Homing enabled but homing cycle not run or
error has been detected such as limit switch
activated. Home or unlock to resume.
Idle Waiting for any command.
Jog Performing jog motion, no new commands until
complete, except Jog commands.
Homing Performing a homing cycle, won’taccept new
commands until complete.
Check Check mode is enabled; all commands accepted
but will only be parsed, not executed.
Cycle Running GCode commands, all commands
accepted, will goto Idle when commands are
Hold Pause is in operation, resume to continue.
The safety door switch has been activated,
similar to a Hold but will resume on closing the
door. You probably don’t have a safety door on
your machine!
Sleep Sleep command has been received and
executed, sometimes used at the end of a job.
Reset or power cycle to continue.


For more information and details please refer to my ‘Intro to CNC’ series in the files section of the Facebook group ‘SainSmart Genmitsu CNC Users Group’ or the Official documentation at



Older Post Newer Post


Leave a comment

Please note, comments must be approved before they are published