Alarm and error decoder

Machine stopped? Paste the line your sender showed (like ALARM:9, error:22 or a FluidNC soft-limit message), or the code an xTool or Ruida laser shows (like M222 S9 or Water protection failure). You get the plain meaning, whether the machine still knows where it is, and what to do. Free, and it works offline once loaded.

Just powered on, or the machine won't move?

A machine that stops with an alarm right after power-on usually needs homing, or is parked against a limit switch. Home it first, unlock it, then check the job. In one owner's report it was the alarm state, not a dead board. (CLAIMED · forum report, not official; the thread doesn't name the alarm number: r/hobbycnc thread, Jan 2026 (the thread doesn't name the alarm number))

Every code

Codes with a link have a full page with steps. The rest show the firmware's own message. Official text copied from each firmware's source on 2026-11-01; position answers are Hamrun's reading unless the firmware's message says it.

GRBL 1.1 alarms (10)

CodeWhat it meansPosition
ALARM:1A limit switch was hit while the machine was moving, so the controller stopped dead.lost
ALARM:2A move in the file would take the machine past the travel it knows it has, so the controller refused to start it.kept
ALARM:3The controller was reset while the machine was moving.lost
ALARM:4The probe already looked touched (or untouched, for a probe-away move) before probing even started.kept
ALARM:5The probe moved its full distance and never touched the plate.kept
ALARM:6Homing was interrupted by a reset before it finished.not-set
ALARM:7The safety door was opened during homing.not-set
ALARM:8After touching a limit switch, the machine backed off but the switch still read as pressed.not-set
ALARM:9During homing an axis travelled as far as it's allowed to and never found its limit switch.not-set
ALARM:10On a machine with two motors on one axis, the second limit switch wasn't found when squaring.not-set

GRBL 1.1 errors (36)

CodeWhat it meansPosition
error:1The controller got a line that isn't proper G-code: something without a letter, or a stray character.kept
error:2A number in the line is missing or badly written (like X1.2.3 or a letter with no value).kept
error:3Grbl '$' system command was not recognized or supported.kept
error:4Negative value received for an expected positive value.kept
error:5You asked the machine to home, but homing is turned off in its settings.kept
error:6Minimum step pulse time must be greater than 3usec.kept
error:7An EEPROM read failed. Auto-restoring affected EEPROM to default values.kept
error:8Grbl '$' command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job.kept
error:9The controller is in an alarm or jog state, so it refused the G-code.kept
error:10Soft limits cannot be enabled without homing also enabled.kept
error:11Max characters per line exceeded. Received command line was not executed.kept
error:12Grbl '$' setting value cause the step rate to exceed the maximum supported.kept
error:13Safety door detected as opened and door state initiated.kept
error:14Build info or startup line exceeded EEPROM line length limit. Line not stored.kept
error:15A jog would go past the machine's travel, so it was ignored.kept
error:16Jog command has no '=' or contains prohibited g-code.kept
error:17Laser mode requires PWM output.kept
error:20The line has a G or M code this controller doesn't know.kept
error:21More than one g-code command from same modal group found in block.kept
error:22A cutting move came before any feed rate (F) was set.kept
error:23G-code command in block requires an integer value.kept
error:24Two commands on one line both want the X/Y/Z values, so the controller can't tell which gets them.kept
error:25Repeated g-code word found in block.kept
error:26No axis words found in block for g-code command or current modal state which requires them.kept
error:27Line number value is invalid.kept
error:28G-code command is missing a required value word.kept
error:29G59.x work coordinate systems are not supported.kept
error:30G53 only allowed with G0 and G1 motion modes.kept
error:31Axis words found in block when no command or current modal state uses them.kept
error:32G2 and G3 arcs require at least one in-plane axis word.kept
error:33A move's target is impossible, usually an arc whose end doesn't fit its centre or radius.kept
error:34Arc radius value is invalid.kept
error:35G2 and G3 arcs require at least one in-plane offset word.kept
error:36Unused value words found in block.kept
error:37G43.1 dynamic tool length offset is not assigned to configured tool length axis.kept
error:38Tool number greater than max supported value.kept

grblHAL alarms (22)

CodeWhat it meansPosition
ALARM:1A limit switch was hit while the machine was moving, so the controller stopped dead.lost
ALARM:2A move in the file would take the machine past the travel it knows it has, so the controller refused to start it.kept
ALARM:3The controller was reset while the machine was moving.lost
ALARM:4The probe already looked touched (or untouched, for a probe-away move) before probing even started.kept
ALARM:5The probe moved its full distance and never touched the plate.kept
ALARM:6Homing was interrupted by a reset before it finished.not-set
ALARM:7The safety door was opened during homing.not-set
ALARM:8After touching a limit switch, the machine backed off but the switch still read as pressed.not-set
ALARM:9During homing an axis travelled as far as it's allowed to and never found its limit switch.not-set
ALARM:10The emergency stop input is active.lost
ALARM:11The controller is set to require homing before anything else.not-set
ALARM:12A limit switch reads as pressed, so the controller won't move until it's clear.not-set
ALARM:13The probe was touched while the machine wasn't probing.lost
ALARM:14The spindle didn't report reaching its speed in time.kept
ALARM:15On a machine with two motors on one axis, the second limit switch wasn't found when squaring.not-set
ALARM:16The controller's power-on self test failed.not-set
ALARM:17A stepper or servo driver reported a fault.lost
ALARM:18Homing is set up in a way the controller can't run.not-set
ALARM:19Communication with a Modbus device (often the spindle VFD) timed out or failed.–
ALARM:20The controller lost contact with an I/O expander board.–
ALARM:21The controller couldn't read or write its settings memory.–
ALARM:22A buffer in the controller overflowed.–

grblHAL errors (89)

CodeWhat it meansPosition
error:1The controller got a line that isn't proper G-code: something without a letter, or a stray character.kept
error:2A number in the line is missing or badly written (like X1.2.3 or a letter with no value).kept
error:3'$' system command was not recognized or supported.kept
error:4Negative value received for an expected positive value.kept
error:5You asked the machine to home, but homing is turned off in its settings.kept
error:6Step pulse time must be greater or equal to 2 microseconds.kept
error:7A settings read failed. Auto-restoring affected settings to default values.kept
error:8'$' command cannot be used unless controller state is IDLE. Ensures smooth operation during a job.kept
error:9The controller is in an alarm or jog state, so it refused the G-code.kept
error:10Soft limits cannot be enabled without homing also enabled.kept
error:11Max characters per line exceeded. Received command line was not executed.kept
error:12'$' setting value cause the step rate to exceed the maximum supported.kept
error:13Safety door detected as opened and door state initiated.kept
error:14Build info or startup line exceeded line length limit. Line not stored.kept
error:15A jog would go past the machine's travel, so it was ignored.kept
error:16Jog command has no '=' or contains prohibited g-code.kept
error:17Laser mode requires PWM output.kept
error:18Reset asserted–
error:19Non positive valuekept
error:20The line has a G or M code this controller doesn't know.kept
error:21More than one g-code command from same modal group found in block.kept
error:22A cutting move came before any feed rate (F) was set.kept
error:23G-code command in block requires an integer value.kept
error:24Two commands on one line both want the X/Y/Z values, so the controller can't tell which gets them.kept
error:25Repeated g-code word found in block.kept
error:26No axis words found in block for g-code command or current modal state which requires them.kept
error:27Line number value is invalid.kept
error:28G-code command is missing a required value word.kept
error:29G59.x work coordinate systems are not supported.kept
error:30G53 only allowed with G0 and G1 motion modes.kept
error:31Axis words found in block when no command or current modal state uses them.kept
error:32G2 and G3 arcs require at least one in-plane axis word.kept
error:33A move's target is impossible, usually an arc whose end doesn't fit its centre or radius.kept
error:34Arc radius value is invalid.kept
error:35G2 and G3 arcs require at least one in-plane offset word.kept
error:36Unused value words found in block.kept
error:37G43.1 dynamic tool length offset is not assigned to configured tool length axis.kept
error:38Tool number greater than max supported value or undefined tool selected.kept
error:39Value out of range.kept
error:40G-code command not allowed when tool change is pending.kept
error:41Spindle not running when motion commanded in CSS or spindle sync mode.kept
error:42Plane must be ZX for threading and lathe cycles.kept
error:43Max. feed rate exceeded.kept
error:44RPM out of range.kept
error:45A limit switch is pressed, so only homing is allowed.kept
error:46The machine has to be homed before it will do this.kept
error:47ATC: current tool is not set. Set current tool with M61.kept
error:48Value word conflict.kept
error:49Power on self test failed. A hard reset is required.kept
error:50Emergency stop active.kept
error:51Motor fault.kept
error:52Setting value is out of range.kept
error:53Setting is not available, possibly due to limited driver support.kept
error:54Retract position is less than drill depth.kept
error:55Attempt to home two auto squared axes at the same time.kept
error:56Coordinate system is locked.kept
error:57Unexpected file demarcation.kept
error:58Port is not availablekept
error:60SDMount Error (no message text in the firmware)kept
error:61File Read Error (no message text in the firmware)kept
error:62Fs Failed Open Dir (no message text in the firmware)kept
error:63FSDir Not Found (no message text in the firmware)kept
error:64SDNot Mounted (no message text in the firmware)kept
error:65Fs Not Mounted (no message text in the firmware)kept
error:66Fs Read Only (no message text in the firmware)kept
error:70BTInit Error (no message text in the firmware)kept
error:71Unknown operation found in expression.kept
error:72Divide by zero in expression attempted.kept
error:73Too large or too small argrument provided.kept
error:74Argument is not valid for the operationkept
error:75Expression is not valid.kept
error:76Either NAN (not a number) or infinity was returned from expression.kept
error:77Authentication required.kept
error:78Access denied.kept
error:79Not allowed while critical event is active.kept
error:80Flow statement only allowed in filesystem macro.kept
error:81Unknown or invalid flow statement.kept
error:82Stack overflow while executing flow statement.kept
error:83Out of memory while executing flow statement.kept
error:84Could not open file.kept
error:85Fs Format Failed (no message text in the firmware)kept
error:86Port is not usable.kept
error:87Tool in spindle.kept
error:88No tool in spindle.kept
error:89File Delete Failed (no message text in the firmware)kept
error:90Cutter compensation is already active.kept
error:91Command not allowed while cutter compensation is active.kept
error:92Cutter compensation is not valid for current move.kept
error:253User defined error occured.kept

FluidNC alarms (18)

CodeWhat it meansPosition
ALARM:1A limit switch was hit while the machine was moving, so the controller stopped dead.lost
ALARM:2A move in the file would take the machine past the travel it knows it has, so the controller refused to start it.kept
ALARM:3The controller was reset while the machine was moving.lost
ALARM:4The probe already looked touched (or untouched, for a probe-away move) before probing even started.kept
ALARM:5The probe moved its full distance and never touched the plate.kept
ALARM:6Homing was interrupted by a reset before it finished.not-set
ALARM:7The safety door was opened during homing.not-set
ALARM:8After touching a limit switch, the machine backed off but the switch still read as pressed.not-set
ALARM:9During homing an axis travelled as far as it's allowed to and never found its limit switch.not-set
ALARM:10The spindle controller reported a problem.–
ALARM:11A control or limit input was already on when FluidNC started.not-set
ALARM:12A limit switch is active, but FluidNC can't tell which way to move to clear it.not-set
ALARM:13A hard stop was triggered.lost
ALARM:14The controller is set to require homing before anything else.not-set
ALARM:15FluidNC is starting up, or its setup didn't finish.not-set
ALARM:16The controller lost contact with an I/O expander board.–
ALARM:17A G-code error while running a file raised an alarm, so the job stopped.kept
ALARM:18A limit switch was hit during probing.lost

FluidNC errors (85)

CodeWhat it meansPosition
error:1The controller got a line that isn't proper G-code: something without a letter, or a stray character.kept
error:2A number in the line is missing or badly written (like X1.2.3 or a letter with no value).kept
error:3Invalid $ statementkept
error:4Negative valuekept
error:5Setting disabledkept
error:6Step pulse too shortkept
error:7Failed to read settingskept
error:8Command requires idle statekept
error:9The controller is in an alarm or jog state, so it refused the G-code.kept
error:10Soft limit errorkept
error:11Line too longkept
error:12Max step rate exceededkept
error:13Check doorkept
error:14Line too longkept
error:15A jog would go past the machine's travel, so it was ignored.kept
error:16Invalid jog commandkept
error:17Laser mode requires PWM outputkept
error:18You asked the machine to home, but homing is turned off in its settings.kept
error:19Single axis homing not allowedkept
error:20The line has a G or M code this controller doesn't know.kept
error:21Gcode modal group violationkept
error:22A cutting move came before any feed rate (F) was set.kept
error:23Gcode command value not integerkept
error:24Two commands on one line both want the X/Y/Z values, so the controller can't tell which gets them.kept
error:25Gcode word repeatedkept
error:26Gcode no axis wordskept
error:27Gcode invalid line numberkept
error:28Gcode value word missingkept
error:29Gcode unsupported coordinate systemkept
error:30Gcode G53 invalid motion modekept
error:31Gcode extra axis wordskept
error:32Gcode no axis words in planekept
error:33A move's target is impossible, usually an arc whose end doesn't fit its centre or radius.kept
error:34Gcode arc radius errorkept
error:35Gcode no offsets in planekept
error:36Gcode unused wordskept
error:37Gcode G43 dynamic axis errorkept
error:38Gcode max value exceededkept
error:39P param max exceededkept
error:40Check startup pinskept
error:60Failed to mount devicekept
error:61Read failedkept
error:62Failed to open directorykept
error:63Directory not foundkept
error:64File emptykept
error:65File not foundkept
error:66Failed to open filekept
error:67Device is busykept
error:68Failed to delete directorykept
error:69Failed to delete filekept
error:70Failed to rename filekept
error:80Number out of range for settingkept
error:81Invalid value for settingkept
error:82Failed to create filekept
error:83Failed to format filesystemkept
error:90Failed to send messagekept
error:100Failed to store settingkept
error:101Failed to get setting statuskept
error:110Authentication failed!kept
error:111End of linekept
error:112End of filekept
error:113System Reset–
error:114No Datakept
error:115Deferredkept
error:120Another interface is busykept
error:130Jog Cancelledkept
error:150Bad Pin Specificationkept
error:151Bad Runtime Config Settingkept
error:152FluidNC's configuration file has a problem, so it won't run until it's fixed.kept
error:160File Upload Failedkept
error:161File Download Failedkept
error:162Read-only settingkept
error:170Expression Divide By Zerokept
error:171Expression Invalid Argumentkept
error:172Expression Invalid Result (no message text in the firmware)kept
error:173Expression Unknown Operatorkept
error:174Expression Argument Out of Rangekept
error:175Expression Syntax Errorkept
error:176Flow Control Syntax Errorkept
error:177Flow Control Not Executing Macrokept
error:178Flow Control Out of Memorykept
error:179Flow Control Stack Overflowkept
error:180Parameter Assignment Failedkept
error:181Gcode invalid word valuekept
error:182Gcode M72 without saved modal statekept

Laser controllers (29)

xTool and Ruida don't number their codes the GRBL way, and xTool uses different schemes on different models. Meanings are in Hamrun's own words from each maker's list; neither maker says what happens to position, so none is guessed. “Hard limit protection” and “Border crossing” are named in Ruida's manual without an explanation, so they aren't listed.

ControllerCode or messageWhat it means
xTool S1M222 S4The machine was moved or knocked while it was set up or working. source
xTool S1M222 S7 ⚠A job was started with no project file loaded, or with the lid up. source
xTool S1M222 S9 ⚠The machine's sensor saw a flame. source
xTool S1M222 S20A move during the job reached the end of the machine's travel. source
xTool S1M222 S21The Wi-Fi part of the machine stopped talking to the main board. source
xTool S1M222 S22The laser head stopped talking to the main board. source
xTool S1M363 S0Measuring the distance to the work went wrong. source
xTool S1M363 S2The distance sensor's signal isn't coming through properly. source
xTool S1M363 S3The distance sensor didn't return to its starting position. source
xTool S1M363 S4Measuring the distance to the work went wrong. source
xTool S1M363 S5Measuring the distance to the work went wrong. source
xTool S1M53 T0The machine's internal storage, or its SD card, has a problem or may be damaged. (xTool lists M53 T0 twice with different descriptions; this is listing 1 of 2.) source
xTool S1M53 C1/C2/W2Something is wrong with the base plate or the riser base. source
xTool S1M53 I0Outside light is interfering with the machine's sensors. source
xTool S1M53 S0The safety key was taken out. source
xTool S1M53 T0The SD card or the machine's internal storage has failed or isn't working. (xTool lists M53 T0 twice with different descriptions; this is listing 2 of 2.) source
xTool S1M53 W0 ⚠The laser module is too hot. source
xTool S1M53 F5 ⚠The machine thinks there's a risk of fire. source
xTool S1M8A chip that drives the motors reported a fault. source
xTool P2BOARDS.ELEMENT_NOT_FOUND.wcb_gd330The main board can't reach the water-cooling board. source
xTool P2BOARDS.ELEMENT_NOT_FOUND.ui_gd330The main board can't reach the board behind the screen and buttons. source
xTool P2BOARDS.ELEMENT_NOT_FOUND.motion_gd450The machine can't reach its main control board. source
xTool D seriesM363 N1Outside light is interfering with the machine's sensors. source
xTool F1FIRE_RECOGNITION ⚠The machine's sensor saw a flame. source
Ruida RDC6445Water protection failure ⚠The controller thinks the laser tube's cooling water isn't flowing, or the water sensor or its wiring has a problem. It can also be a temperature reading out of range. source
Ruida RDC6445Cover protection ⚠The lid switch says the lid is open, or its sensor or wiring is faulty. source
Ruida RDC6445Over breadthThe job goes outside the machine's work area. source
Ruida RDC6445X/Y/Z/U axis Over breadthThe job goes past the travel of one axis (the message names X, Y, Z or U). source
Ruida RDC6445Insufficient motion buffer distanceThe job asks for more speed than the machine has room to reach and stop from. source

⚠ = fire or safety risk: stop and check for flame first.