TinyG Status Codes

Alden Hart edited this page Mar 18, 2017 · 57 revisions

This page contains status codes and other enumerations that may be returned in status reports See also:

Status Codes

The following status code are defined. Status codes are returned in the second element of the footer array, e.g.

"f":[1,0,255,1234]   -- '0' is the OK code

Earlier revisions (build 380.xx) may be using these status codes

Code Label Description
Low level codes System and comms status
0 OK universal OK code
1 ERROR generic error return
2 EAGAIN function would block here
3 NOOP function had no-operation
4 COMPLETE operation is complete
5 TERMINATE operation terminated (gracefully)
6 RESET operation was hard reset (sig kill)
7 EOL returned end-of-line
8 EOF returned end-of-file
9 FILE_NOT_OPEN
10 FILE_SIZE_EXCEEDED
11 NO_SUCH_DEVICE
12 BUFFER_EMPTY
13 BUFFER_FULL
14 BUFFER_FULL_FATAL
15 INITIALIZING initializing - not ready for use
16 ENTERING_BOOT_LOADER emitted by boot loader, not TinyG
17 FUNCTION_IS_STUBBED
18 - 19 Reserved
Internal System Errors
20 INTERNAL_ERROR unrecoverable internal error
21 INTERNAL_RANGE_ERROR
22 FLOATING_POINT_ERROR number conversion error
23 DIVIDE_BY_ZERO
24 INVALID_ADDRESS
25 READ_ONLY_ADDRESS
26 INIT_FAIL
27 ALARMED
28 FAILED_TO_GET_PLANNER_BUFFER
29 GENERIC_EXCEPTION_REPORT used for test
30 PREP_LINE_MOVE_TIME_IS_INFINITE
31 PREP_LINE_MOVE_TIME_IS_NAN
32 FLOAT_IS_INFINITE
33 FLOAT_IS_NAN
34 PERSISTENCE_ERROR
35 BAD_STATUS_REPORT_SETTING
36 – 89 Reserved
Assertion Failures Build down from 99 until they meet system errors
90 CONFIG_ASSERTION_FAILURE
91 XIO_ASSERTION_FAILURE
92 ENCODER_ASSERTION_FAILURE
93 STEPPER_ASSERTION_FAILURE
94 PLANNER_ASSERTION_FAILURE
95 CANONICAL_MACHINE ASSERTION_FAILURE
96 CONTROLLER_ASSERTION_FAILURE
97 STACK_OVERFLOW
98 MEMORY_FAULT generic memory corruption detected
99 GENERIC_ASSERTION_FAILURE unclassified assertion failure
Application and Data Input Errors
Generic Data Input Errors
100 UNRECOGNIZED_NAME parser didn't recognize the command
101 INVALID_OR_MALFORMED_COMMAND malformed line to parser
102 BAD_NUMBER_FORMAT number format error
103 BAD_UNSUPPORTED_TYPE number or JSON type is not supported
104 PARAMETER_IS_READ_ONLY this parameter is read-only - cannot be set
105 PARAMETER_CANNOT_BE_READ this parameter is not readable
106 COMMAND_NOT_ACCEPTED command cannot be accepted at this time
107 INPUT_EXCEEDS_MAX_LENGTH input string too long
108 INPUT_LESS_THAN_MIN_VALUE value is under minimum
109 INPUT_EXCEEDS_MAX_VALUE value is over maximum
110 INPUT_VALUE_RANGE_ERROR value is out-of-range
111 JSON_SYNTAX_ERROR JSON input string is not well formed
112 JSON_TOO_MANY_PAIRS JSON input string has too many pairs
113 JSON_TOO_LONG JSON exceeds buffer size
114 – 129 Reserved
Gcode Errors and Warnings Most are from NIST
130 GCODE_GENERIC_INPUT_ERROR generic error for gcode input
131 GCODE_COMMAND_UNSUPPORTED G command is not supported
132 MCODE_COMMAND_UNSUPPORTED M command is not supported
133 GCODE_MODAL_GROUP_VIOLATION gcode modal group error
134 GCODE_AXIS_IS_MISSING requires at least one axis present
135 GCODE_AXIS_CANNOT_BE_PRESENT error if G80 has axis words
136 GCODE_AXIS_IS_INVALID axis specified that’s illegal for command
137 GCODE_AXIS_IS_NOT_CONFIGURED WARNING: attempt to program an axis that is disabled
138 GCODE_AXIS_NUMBER_IS_MISSING axis word is missing its value
139 GCODE_AXIS_NUMBER_IS_INVALID axis word value is illegal
140 GCODE_ACTIVE_PLANE_IS_MISSING active plane is not programmed
141 GCODE_ACTIVE_PLANE_IS_INVALID active plane selected not valid for this command
142 GCODE_FEEDRATE_NOT_SPECIFIED move has no feedrate
143 GCODE_INVERSE_TIME_MODE CANNOT_BE_USED G38.2 and some canned cycles cannot accept inverse time mode
144 GCODE_ROTARY_AXIS CANNOT_BE_USED G38.2 and some other commands cannot have rotary axes
145 GCODE_G53_WITHOUT_G0_OR_G1 G0 or G1 must be active for G53
146 REQUESTED_VELOCITY EXCEEDS_LIMITS
147 CUTTER_COMPENSATION CANNOT_BE_ENABLED
148 PROGRAMMED_POINT SAME_AS_CURRENT_POINT
149 SPINDLE_SPEED_BELOW_MINIMUM
150 SPINDLE_SPEED_MAX_EXCEEDED
151 S_WORD_IS_MISSING
152 S_WORD_IS_INVALID
153 SPINDLE_MUST_BE_OFF
154 SPINDLE_MUST_BE_TURNING some canned cycles require spindle to be turning when called
155 ARC_SPECIFICATION_ERROR generic arc specification error
156 ARC_AXIS_MISSING FOR_SELECTED_PLANE arc missing axis (axes) required by selected plane
157 ARC_OFFSETS_MISSING FOR_SELECTED_PLANE one or both offsets are not specified
158 ARC_RADIUS OUT_OF_TOLERANCE WARNING - radius arc is too large - accuracy in question
159 ARC_ENDPOINT IS_STARTING_POINT
160 P_WORD_IS_MISSING P must be present for dwells and other functions
161 P_WORD_IS_INVALID generic P value error
162 P_WORD_IS_ZERO
163 P_WORD_IS_NEGATIVE dwells require positive P values
164 P_WORD_IS_NOT_AN_INTEGER G10s and other commands require integer P numbers
165 P_WORD_IS_NOT_VALID_TOOL_NUMBER
166 D_WORD_IS_MISSING
167 D_WORD_IS_INVALID
168 E_WORD_IS_MISSING
169 E_WORD_IS_INVALID
170 H_WORD_IS_MISSING
171 H_WORD_IS_INVALID
172 L_WORD_IS_MISSING
173 L_WORD_IS_INVALID
174 Q_WORD_IS_MISSING
175 Q_WORD_IS_INVALID
176 R_WORD_IS_MISSING
177 R_WORD_IS_INVALID
178 T_WORD_IS_MISSING
179 T_WORD_IS_INVALID
180 - 199 Reserved reserved for Gcode errors
TinyG Errors and Warnings
200 GENERIC_ERROR
201 MINIMUM_LENGTH_MOVE move is less than minimum length
202 MINIMUM_TIME_MOVE move is less than minimum time
203 MACHINE_ALARMED machine is alarmed. Command not processed
204 LIMIT_SWITCH_HIT limit switch was hit causing shutdown
205 PLANNER_FAILED_TO_CONVERGE planner can throw this exception
206 - 219 Reserved
220 SOFT_LIMIT_EXCEEDED soft limit error - axis unspecified
221 SOFT_LIMIT_EXCEEDED_XMIN soft limit error - X minimum
222 SOFT_LIMIT_EXCEEDED_XMAX soft limit error - X maximum
223 SOFT_LIMIT_EXCEEDED_YMIN soft limit error - Y minimum
224 SOFT_LIMIT_EXCEEDED_YMAX soft limit error - Y maximum
225 SOFT_LIMIT_EXCEEDED_ZMIN soft limit error - Z minimum
226 SOFT_LIMIT_EXCEEDED_ZMAX soft limit error - Z maximum
227 SOFT_LIMIT_EXCEEDED_AMIN soft limit error - A minimum
228 SOFT_LIMIT_EXCEEDED_AMAX soft limit error - A maximum
229 SOFT_LIMIT_EXCEEDED_BMIN soft limit error - B minimum
230 SOFT_LIMIT_EXCEEDED_BMAX soft limit error - B maximum
231 SOFT_LIMIT_EXCEEDED_CMIN soft limit error - C minimum
232 SOFT_LIMIT_EXCEEDED_CMAX soft limit error - C maximum
233 – 239 Reserved
240 HOMING_CYCLE_FAILED 240 homing cycle did not complete
241 HOMING_ERROR_BAD_OR_NO_AXIS
242 HOMING_ERROR_SWITCH_MISCONFIGURATION
243 HOMING_ERROR_ZERO_SEARCH_VELOCITY
244 HOMING_ERROR_ZERO_LATCH_VELOCITY
245 HOMING_ERROR_TRAVEL_MIN_MAX_IDENTICAL
246 HOMING_ERROR_NEGATIVE_LATCH_BACKOFF
247 HOMING_ERROR_SEARCH_FAILED
248 Reserved
249 Reserved
250 PROBE_CYCLE_FAILED probing cycle did not complete
251 PROBE_ENDPOINT IS_STARTING_POINT
252 JOGGING_CYCLE_FAILED jogging cycle did not complete

Status Report Enumerations

Values commonly reported in status reports are listed below. See canonical_machine.h for the actual code.

** Notice: as per recent documentation on the Synthetos github some changes (new codes as well as re-arrangements) are planned. These have been last updated here as per 440.21 (Latest commit d785510 on Sep 14, 2015)

Token Value Description
"stat" Machine State
0 machine is initializing
1 machine is ready for use
2 machine is in alarm state (soft shut down)
3 program stop or no more blocks (M0, M1, M60)
4 program end via M2, M30
5 motion is running
6 motion is holding
7 probe cycle active
8 machine is running (cycling)
9 machine is homing
10 machine is jogging
11 machine is in hard alarm state (shut down)
"momo" Gcode Motion Mode
0 G0 - straight (linear) traverse
1 G1 - straight (linear) feed
2 G2 - CW arc traverse
3 G3 - CCW arc traverse
4 G80 - cancel motion mode (no motion mode active)
"unit" Gcode Units
0 G20 - inches mode
1 G21 - millimeter mode
"macs" Raw Machine State
0 machine is initializing
1 machine is ready for use
2 machine is in alarm state (soft shut down)
3 program stop or no more blocks (M0, M1, M60)
4 program end via M2, M30
5 machine is in cycle
6 machine is in shutdown state
"cycs" Cycle State
0 cycle off (not in cycle)
1 normal machine cycle
2 probe cycle
3 homing cycle
4 jog cycle
"mots" Motion State
0 motion off
1 motion run
2 motion hold
"hold" Feedhold State
0 feedhold off (not in feedhold)
1 feedhold sync phase
2 feedhold planning phase
3 feedhold deceleration phase
4 feedhold holding
5 feedhold end hold
"coor" Gcode Coordinate System
0 G53 - machine coordinate system
1 G54 - coordinate system 1
2 G55 - coordinate system 2
3 G56 - coordinate system 3
4 G57 - coordinate system 4
5 G58 - coordinate system 5
6 G59 - coordinate system 6
"plan" Gcode Arc Plane Selected
0 G17 - XY plane
1 G18 - XZ plane
2 G19 - YZ plane
"path" Gcode Path Control Mode
0 G61 - Exact path mode
1 G61.1 - Exact stop mode
2 G64 - Continuous mode
"dist" Gcode Distance Mode
0 G90 - Absolute distance mode
1 G91 - Incremental distance mode
"frmo" Gcode Feed Rate Mode
0 G93 - Inverse time mode
1 G94 - Units-per-minute mode (i.e. feedrate mode)
2 G95 - Units-per-revolution mode

ASCII Character Usage

Hex char name used by
0x00 NUL null everything; may be returned to Kinen SPI when no device is plugged in
0x01 SOH ctrl-A
0x02 STX ctrl-B Kinen SPI protocol - Request character
0x03 ETX ctrl-C Kinen SPI protocol - Return no character
0x04 EOT ctrl-D
0x05 ENQ ctrl-E
0x06 ACK ctrl-F
0x07 BEL ctrl-G
0x08 BS ctrl-H
0x09 HT ctrl-I
0x0A LF ctrl-J
0x0B VT ctrl-K
0x0C FF ctrl-L
0x0D CR ctrl-M
0x0E SO ctrl-N
0x0F SI ctrl-O
0x10 DLE ctrl-P
0x11 DC1 ctrl-Q XOFF
0x12 DC2 ctrl-R
0x13 DC3 ctrl-S XON
0x14 DC4 ctrl-T
0x15 NAK ctrl-U Kinen SPI protocol - Slave buffer overrun detected
0x16 SYN ctrl-V
0x17 ETB ctrl-W
0x18 CAN ctrl-X TinyG / grbl software reset
0x19 EM ctrl-Y
0x1A SUB ctrl-Z
0x1B ESC ctrl-[ Used to enter the boot loader - ESC is an AVRdude convention
0x1C FS ctrl-\
0x1D GS ctrl-]
0x1E RS ctrl-^
0x1F US ctrl-_
0x20 space Gcode blocks, other uses
0x21 ! excl point TinyG feedhold command character
0x22 " quote JSON notation
0x23 # number Gcode parameter prefix; JSON topic prefix
0x24 $ dollar TinyG / grbl out-of-cycle settings prefix
0x25 & ampersand universal symbol for logical AND (not used here)
0x26 % percent TinyG Queue Flush command character
0x27 ' single quote
0x28 ( open paren Gcode comments
0x29 ) close paren Gcode comments
0x2A * asterisk Gcode expressions
0x2B + plus Gcode numbers, parameters and expressions
0x2C , comma JSON notation
0x2D - minus Gcode numbers, parameters and expressions
0x2E . period Gcode numbers, parameters and expressions
0x2F / fwd slash Gcode expressions & block delete char
0x3A : colon JSON notation
0x3B ; semicolon Gcode comment - Mach3 and reprap style
0x3C < less than Gcode expressions
0x3D = equals Gcode expressions
0x3E > greater than Gcode expressions
0x3F ? question mk TinyG / grbl query
0x40 @ at symbol JSON address prefix
0x41 – 0x5A chars regular old alphanumeric characters
0x5B [ open bracket Gcode expressions
0x5C \ backslash JSON notation (escape)
0x5D ] close bracket Gcode expressions
0x5E ^ caret Reserved for TinyG in-cycle command prefix
0x5F _ underscore
0x60 ` grave accent
0x7B { open brace JSON notation (start object)
0x7C pipe pipe universal symbol for logical OR (not used here)
0x7D } close brace JSON notation (end object)
0x7E ~ tilde TinyG cycle start command character
0x7F DEL
0xFF DEL may be returned to Kinen SPI when no device is plugged in

Notes

Status Code 27 - System Alarmed

System alarms occur when the system must halt operation for some reason. You will see a message like this:

{“er”:{“fb”:370.08,”st”:27,”msg”:”System alarmed”,”val”:1}}

Alarms may occur when:

  • A limit switch has been hit. This is normal if you have limit switches enabled. This can also happen sporadically if there is noise on the limit switch line.
  • Memory fault or corruption has been detected. This indicates a program error. Please report this to Synthetos.

Legacy Status Codes

errno name Description
0 TG_OK universal OK code (function completed successfully)
Low level codes typically system and communications status
1 TG_ERROR generic error return (EPERM)
2 TG_EAGAIN function would block here (call again)
3 TG_NOOP function had no-operation
4 TG_COMPLETE operation is complete
5 TG_TERMINATE operation terminated (gracefully)
6 TG_RESET operation was hard reset (sig kill)
7 TG_EOL function returned end-of-line or end-of-message
8 TG_EOF function returned end-of-file
9 TG_FILE_NOT_OPEN
10 TG_FILE_SIZE_EXCEEDED
11 TG_NO_SUCH_DEVICE
12 TG_BUFFER_EMPTY
13 TG_BUFFER_FULL
14 TG_BUFFER_FULL_FATAL
15 TG_INITIALIZING initializing - not ready for use
16 TG_ENTERING_BOOT_LOADER entering boot loader from application
17-19 TG_ERROR_16 - TG_ERROR_19 reserved
Internal errors typically unrecoverable
20 TG_INTERNAL_ERROR unrecoverable internal error
21 TG_INTERNAL_RANGE_ERROR number range error other than by user input
22 TG_FLOATING_POINT_ERROR number conversion error
23 TG_DIVIDE_BY_ZERO
24 TG_INVALID_ADDRESS
25 TG_READ_ONLY_ADDRESS
26 TG_INIT_FAIL Initialization failure
27 TG_SHUTDOWN System alarmed and went into shutdown
28 TG_MEMORY_FAULT Memory fault or corruption detected
29-39 TG_ERROR_29 - TG_ERROR_39 reserved
Input errors typically data problems on inputs
40 TG_UNRECOGNIZED_COMMAND parser didn't recognize the command
41 TG_EXPECTED_COMMAND_LETTER malformed line to parser
42 TG_BAD_NUMBER_FORMAT number format error
43 TG_INPUT_EXCEEDS_MAX_LENGTH input string is too long
44 TG_INPUT_VALUE_TOO_SMALL value is under minimum for this parameter
45 TG_INPUT_VALUE_TOO_LARGE value is over maximum for this parameter
46 TG_INPUT_VALUE_RANGE_ERROR input error: value is out-of-range for this parameter
47 TG_INPUT_VALUE_UNSUPPORTED input error: value is not supported for this parameter
48 TG_JSON_SYNTAX_ERROR JSON string is not well formed
49 TG_JSON_TOO_MANY_PAIRS JSON string or has too many name:value pairs
50 TG_JSON_TOO_LONG JSON output string too long for output buffer
51 TG_NO_BUFFER_SPACE Buffer pool is full and cannot perform this operation
52 - 59 TG_ERROR_51 - TG_ERROR_59 reserved
Gcode and machining errors application specific errors for Gcode problems
60 TG_MINIMUM_LENGTH_MOVE_ERROR move is below minimum length or zero
61 TG_MINIMUM_TIME_MOVE_ERROR move is below minimum time or zero
62 TG_GCODE_BLOCK_SKIPPED block was skipped - usually because it was is too short
63 TG_GCODE_INPUT_ERROR general error for gcode input
64 TG_GCODE_FEEDRATE_ERROR no feedrate specified
65 TG_GCODE_AXIS_WORD_MISSING command requires at least one axis present
66 TG_MODAL_GROUP_VIOLATION gcode modal group error
67 TG_HOMING_CYCLE_FAILED homing cycle did not complete
68 TG_MAX_TRAVEL_EXCEEDED
69 TG_MAX_SPINDLE_SPEED_EXCEEDED
70 TG_ARC_SPECIFICATION_ERROR
71-79 TG_ERROR_71 - TG_ERROR_79 reserved
80-99 Expansion Expansion ranges
100-119 Expansion
etc. Expansion
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.