The grbl firmware has a whole list of Alarms and Error codes that you can encounter when running your CNC. gSender will always display a question mark when there’s an alarm which you can hover over for more information about why it happened and errors will appear as a hovering box in the bottom corner of the visualizer.
You can close an alarm by clicking on the button that appears next to it in the visualizer. Most alarms can also be handled by typing “$x” into the ‘Console’ tab and hitting the ‘Run’ button.

Useful Commands
- $ reminder of all grbl commands
- $$ lists all Firmware settings and their values
- $rst=$ resets all your EEPROM settings to the default Firmware values
- ? reports any active inputs plus some other useful info
- $i tells you information on your board Firmware Version
- $# all the currently stored machine offsets
Alarms
Alarm Code | Message | Description | Example |
1 | Hard limit | Hard limit has been triggered. Machine position is likely lost due to sudden halt. Re-homing is highly recommended. | Example |
2 | Soft limit | G-code motion target exceeds machine travel. Machine position retained. Alarm may be safely unlocked. | Example |
3 | Abort during cycle | Machine position is likely lost due to sudden halt. Re-homing is highly recommended. May be due to issuing g-code commands that exceed the limit of the machine. | |
4 | Probe fail | Probe is not in the expected initial state before starting probe cycle when G38.2 and G38.3 is not triggered and G38.4 and G38.5 is triggered. Your bit is likely making contact with the touch plate or the circuit is completed before the bit is moving. Move the bit away from the touch plate. | Example |
5 | Probe fail | Probe did not contact the workpiece within the programmed travel for G38.2 and G38.4. Your bit is too far away from the touch plate. Move the bit closer, it should be within 6-12mm (1/4 -1/2in) away. | Example |
6 | Homing fail | The active homing cycle was reset. | |
7 | Homing fail | Safety door was opened during homing cycle. | |
8 | Homing fail | Pull off travel failed to clear limit switch. The machine is within the limit switches range when it tries to move away. Try increasing pull-off setting or check wiring. | Example |
9 | Homing fail | Could not find limit switch within search distances. Try increasing max travel, decreasing pull-off distance, or check wiring. The limit switch wasn’t triggered in the distances expected. If your z-axis is moving away from the switch when homing, check your firmware and confirm you have the correct profile for your machine. | Example |
10 | EStop asserted | You’ve pressed your E-stop to stop your machine! Unclick the E-stop, then clear this alarm to continue. | |
14 | Spindle at speed timeout | Either the spindle hasn’t gotten up to speed in the timeframe set for ‘spindle at speed’ or spindle has been wired incorrectly to your controller. Clear this alarm, check your setup, and try again. | |
15 | Homing fail | Could not find second limit switch for auto squared axis within search distances. Try increasing max travel, decreasing pull-off distance, or check wiring. | |
17 | Motor fault | Issue encountered with closed loop motor tracking. Position likely lost. |
Errors
Error Code | Message | Description | Example |
1 | Expected command letter | G-code words consist of a letter and a value. Letter was not found. | Example |
2 | Bad number format | Missing the expected G-code word value or numeric value format is not valid. | Example |
3 | Invalid statement | Grbl ‘$’ system command was not recognized or supported. | |
4 | Value < 0 | Negative value received for an expected positive value. | |
5 | Setting disabled | Homing cycle failure. Homing is not enabled via settings. | |
6 | Value < 3 μsec | Minimum step pulse time must be greater than 3μsec. | |
7 | EEPROM read fail. Using defaults | An EEPROM read failed. Auto-restoring affected EEPROM to default values. | |
8 | Not idle | Grbl ‘$’ command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job. | |
9 | G-code lock | G-code commands are locked out during alarm or jog state. | |
10 | Homing not enabled | Soft limits cannot be enabled without homing also enabled. | |
11 | Line overflow | Max characters per line exceeded. Received command line was not executed. | |
12 | Step rate > 30kHz | Grbl ‘$’ setting value cause the step rate to exceed the maximum supported. | |
13 | Check Door | Safety door detected as opened and door state initiated. | |
14 | Line length exceeded | Build info or startup line exceeded EEPROM line length limit. Line not stored. | |
15 | Travel exceeded | Jog target exceeds machine travel. Jog command has been ignored. | |
16 | Invalid jog command | Jog command has no ‘=’ or contains prohibited g-code. | |
17 | Setting disabled | Laser mode requires PWM output. | |
20 | Unsupported command | Unsupported or invalid g-code command found in block. | Example |
21 | Modal group violation | More than one g-code command from same modal group found in block. | |
22 | Undefined feed rate | Feed rate has not yet been set or is undefined. | |
23 | Invalid gcode ID:23 | G-code command in block requires an integer value. | |
24 | Invalid gcode ID:24 | More than one g-code command that requires axis words found in block. | Example |
25 | Invalid gcode ID:25 | Repeated g-code word found in block. | |
26 | Invalid gcode ID:26 | No axis words found in block for g-code command or current modal state which requires them. | Example |
27 | Invalid gcode ID:27 | Line number value is invalid. | |
28 | Invalid gcode ID:28 | G-code command is missing a required value word. | Example |
29 | Invalid gcode ID:29 | G59.x work coordinate systems are not supported. | |
30 | Invalid gcode ID:30 | G53 only allowed with G0 and G1 motion modes. | |
31 | Invalid gcode ID:31 | Axis words found in block when no command or current modal state uses them. | |
32 | Invalid gcode ID:32 | G2 and G3 arcs require at least one in-plane axis word. | |
33 | Invalid gcode ID:33 | Motion command target is invalid. | Example |
34 | Invalid gcode ID:34 | Arc radius value is invalid. | |
35 | Invalid gcode ID:35 | G2 and G3 arcs require at least one in-plane offset word. | |
36 | Invalid gcode ID:36 | Unused value words found in block. | |
37 | Invalid gcode ID:37 | G43.1 dynamic tool length offset is not assigned to configured tool length axis. | |
38 | Invalid gcode ID:38 | Tool number greater than max supported value. |
Error 1, 2, 20, 24, 26, 28
When any of these errors appear in gSender, it can typically be traced back to 3 sources:
- The g-code file has errors in it: if this is true, then
- Keep the file loaded
- Go to gSenders Settings ➜ Safety ➜ to make sure ‘Warn if invalid line detected’ is turned on
- Next to the ‘Load File’ button on the main screen, you’ll see another button that says ‘Verify Job’ (previously ‘Test Run’)
- Click this button and it will go through your g-code file, and if the same errors pop up then it’s likely that the file is bad. Go back and check your design software or post processor to make sure it’s all been set up correctly and then try re-generating the file.
- You have an unstable connection to your CNC: if the file didn’t have errors, then this is the next most likely issue. You’ll want to
- Check if your USB cable is loose or if other ports or connectors on your CNC board are loose.
- Try another USB port on your computer, and if you’re using a USB hub try skipping it to connect directly to your CNC.
- Don’t use a USB Stick, make sure the files on are the hard-drive of your computer.
- Try running the same job in the air with your router/spindle and dust collector turned off to see if the same errors appear as when you run the job. If they go away then try running the job with full cutting again in some scrap material just to confirm the errors come back. Once confirmed, you’ll want to look to see if your equipment isn’t properly grounded, could have improved electrical shielding, or try using another computer. An example of this is to put your controller and computer on a separate power circuit than the router/spindle and dust collector.
- Some gSender versions can have bugs: this is the least likely cause, but a couple gSender versions have been known to make errors appear that aren’t actually happening. If you’ve already tried everything else, you should first double-check that you’re connected to the “grbl” firmware if you’re using a grbl board like the LongBoard, or to “grblHAL” for boards like the SLB. After checking that, try installing and using a different gSender version.
Error 33
Can pop up as “Motion command target is invalid” and usually comes from issues with G2 or G3 arc/curve movements in the g-code. If the target is invalid you might want to verify the file again in gSender or regenerate it in CAM with the right post processor.
For example, there have been many reports that if you use the inch
post processor in Vectric, Carveco, or Fusion 360 then they won’t add enough decimal places to satisfy arc curve calculations – which will cause an Error 33. The best solution is to just use a mm
post processor to get more accurate movements, or for Carveco use UGS grbl
.
If this isn’t the cause, then refer to the steps shown for Errors 1, 2, 20, 24, 26, 28 shown above.