-
Notifications
You must be signed in to change notification settings - Fork 3
GRBL '$' Commands
The $ commands in Rabbit GRBL are special system-level commands used to read and modify settings, view controller state, run homing cycles, store startup blocks, and perform configuration actions.
They are not G-code and execute immediately when received.
To view available system commands, open a serial terminal and type:
$
Rabbit GRBL will respond with a help list of all $ commands.
| Command | Description |
|---|---|
$$ |
View all Rabbit GRBL settings |
$+ |
View all Rabbit GRBL extended settings |
$L |
List all GRBL setting names |
$S |
List all settings (GRBL + Extended) |
$SC |
List only settings that differ from their default values |
$x=val |
Change a Rabbit GRBL setting |
$# |
View G-code parameters (offsets, probe data) |
$G |
View G-code parser modal state |
$I |
View build info string |
$N |
View startup blocks |
$Nx=line |
Save a startup block |
$C |
Check G-code mode (no movement) |
$X |
Kill alarm lock |
$H |
Run homing cycle (all axes) |
$HX $HY $HZ $HA $HB $HC |
Home a single axis |
$J=line |
Execute jog command |
$EA & $EA=id |
List all Rabbit GRBL alarm codes and titles |
$EE & $EE=id |
List all Rabbit GRBL error codes and titles |
$CMD |
List all registered $ commands |
$V |
View NVS (EEPROM) storage statistics |
$RST=$ |
Restore settings to defaults |
$RST=# |
Clear work coordinate offsets |
$RST=* |
Factory reset Rabbit GRBL EEPROM |
$NVX |
Erase the entire NVS partition |
$SLP |
Enter sleep mode |
Prints all standard GRBL configuration settings (steps/mm, max rate, acceleration, limits, etc.).
Values are stored in NVS (non-volatile storage) and persist across power cycles.
See Rabbit GRBL Settings for more details.
Prints all Rabbit GRBL extended settings — configuration options that go beyond the standard GRBL setting set.
These include Rabbit GRBL-specific parameters such as spindle delays, stepper enable delays, and other advanced options.
Like standard settings, extended settings are stored in NVS and persist across power cycles.
Prints the named path of every standard GRBL setting.
This is useful for identifying the human-readable name of a setting alongside its numeric index.
Example response:
$0 =Stepper/Pulse
$1 =Stepper/IdleDelay
$2 =Stepper/StepInvert
...
Prints all settings — both standard GRBL settings and Rabbit GRBL extended settings — in a single combined list.
This is equivalent to running $$ and $+ together.
Prints only the settings whose current value differs from their compiled default.
This is useful for auditing your configuration and quickly identifying what has been customized.
Writes a value to a setting.
Example:
$100=80
Sets X-axis steps/mm to 80.
Displays stored coordinate offsets and system values:
- G54–G59 work coordinate offsets
- G28/G30 stored positions
- G92 offset
- Tool length offset (
TLO) - Last probe position (
PRB)
Example response:
[G54:0.000,0.000,0.000]
[PRB:10.000,5.000,-2.000:1]
Shows all currently active G-code modal states.
Example:
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F500 S0]
Prints firmware version and optional custom identifier.
When sent to the controller, it responds with structured status lines such as:
[VER:1.1h.20260222]
[OPT:MPH]
-
[VER:1.1h.20260222]
Contains the GRBL core version (1.1h) and the firmware build date inYYYYMMDDformat. -
[OPT:MPH]
Lists the compile-time options enabled in the firmware.
G-code senders use the VER string to determine how the controller's Status Report should be parsed.
Rabbit GRBL reports VER:1.1h because its Status Report message format is 100% compatible with the GRBL 1.1h Status Report structure.
This ensures that G-code senders designed for GRBL 1.1h can correctly interpret and parse the status messages returned by Rabbit GRBL.
Shows stored startup lines executed automatically on reset.
Example:
$N0=
$N1=
Stores a G-code line to run at startup.
Example:
$N0=G20 G17 G54
They will run after reset and may cause unintended movement.
This command toggles Check Mode in Rabbit GRBL.
When enabled, Rabbit GRBL processes all incoming G-code blocks exactly as it would during normal operation, fully parsing and validating them. However, no axis motion is executed, dwell commands are ignored, and the spindle and coolant outputs remain off.
This mode allows users to verify how their G-code program is interpreted by the parser and detect potential errors before running a real job. If soft limits are enabled, soft limit violations are also checked.
When Check Mode is toggled off, Rabbit GRBL performs an automatic soft reset (^X). This simplifies internal state management and ensures the controller returns to a clean and consistent state, preventing accidental job execution with unexpected or leftover modal states. A system reset guarantees a predictable starting condition before actual machining begins.
Rabbit GRBL enters Alarm mode when a critical condition occurs, such as a hard limit trigger, an abort during a cycle, or when the controller does not know its machine position.
If homing is enabled, Rabbit GRBL will enter Alarm mode at power-up because the machine position is unknown. In this state, all G-code commands are locked until a homing cycle ($H) is completed.
The $X command clears the alarm lock and re-enables G-code execution without performing homing. This can be useful, for example, to move the machine away from limit switches.
However, use this command with extreme caution. The machine position is likely undefined, and the controller may not be where you expect it to be. It is strongly recommended to use G91 (incremental mode) and perform short, controlled moves. A homing cycle or a full reset should be executed immediately afterward.
Startup lines do not execute after a $X command. Once the alarm condition has been resolved, perform a reset to return the controller to a known and consistent state. After reset, startup lines will execute normally.
This command is the only way to execute the homing cycle in Rabbit GRBL.
Unlike some motion controllers that use a dedicated G-code command for homing, Rabbit GRBL follows the G-code standard, where homing is handled as a controller-level command, not as a G-code instruction.
TIP: After completing a homing cycle, instead of manually jogging the machine to a preferred working area every time, you can define a preset position using G28 or G30.
To set a post-homing position:
- Jog the machine to the desired location.
- Enter
G28.1(orG30.1) to store that position.
After running $H, you can simply enter G28 (or G30) and the machine will automatically move to the stored position.
A common and safe practice is to move the XY axes toward the center of the workspace and keep the Z-axis raised. This reduces the risk of tool interference and prevents the spindle from catching on fixtures or material.
When HOMING_SINGLE_AXIS_COMMANDS is enabled at compile time, Rabbit GRBL registers individual homing commands for each axis.
| Command | Description |
|---|---|
$HX |
Home the X axis only |
$HY |
Home the Y axis only |
$HZ |
Home the Z axis only |
$HA |
Home the A axis only |
$HB |
Home the B axis only |
$HC |
Home the C axis only |
These commands are useful when you need to re-home a single axis without running a full homing cycle. Each command obeys the same homing rules (feed rate, pull-off, direction) as the full $H cycle.
Note: Single-axis homing commands do not execute startup lines after completion. Startup lines only run after a full
$H(all axes) cycle.
Executes a real-time jog movement.
Example:
$J=G91 X5 F200
Notes:
- Jog commands do not modify modal state.
- Can be cancelled with the Jog Cancel real-time command.
- Soft-limit violations return an error but do not trigger an ALARM.
Prints a list of all Rabbit GRBL alarm codes, their titles and descriptions.
Example response:
[ALARMCODE:0|No alarm|No alarm has been triggered.]
[ALARMCODE:1|Hard limit|Hard limit has been triggered. Machine position is likely lost due to sudden halt. Re-homing is highly recommended.]
[ALARMCODE:2|Soft limit|Soft limit alarm. G-code motion target exceeds machine travel. Machine position retained. Alarm may be safely unlocked.]
...
You can also query a specific alarm by number:
$EA=1
Response:
[ALARMCODE:1|Hard limit|Hard limit has been triggered. Machine position is likely lost due to sudden halt. Re-homing is highly recommended.]
Prints a list of all Rabbit GRBL error codes, their titles and descriptions.
Example response:
[ERRORCODE:0|No error|No error.]
[ERRORCODE:1|Expected command letter|G-code words consist of a letter and a value. Letter was not found.]
[ERRORCODE:2|Bad number format|Missing the expected G-code word value or numeric value format is not valid.]
...
You can also query a specific error by number:
$EE=8
Response:
[ERRORCODE:8|Command requires idle state|Grbl '$' command cannot be used unless Grbl is IDLE. Ensure no motions are active and try again.]
Prints a complete list of all registered $ commands, including their descriptions.
This is useful for discovering all available commands at runtime, especially on custom builds where optional commands (such as single-axis homing) may or may not be enabled.
Example response:
$ = Help
$I = Build Info
$J = Jog Command
$$ = Report Settings
$+ = Report Extended Settings
...
Prints NVS (Non-Volatile Storage) partition usage statistics.
Example response:
[MSG:NVS Used: 12 Free: 488 Total: 500]
This is useful for diagnosing storage issues on the ESP32, especially after many setting changes or if the controller behaves unexpectedly after a power cycle.
Resets all $$ settings to their compiled defaults.
Clears all $# coordinate offsets (G54–G59, G28, G30, G92, TLO, PRB).
Clears all settings, offsets, startup lines, and the build info string.
Completely erases the ESP32 NVS (Non-Volatile Storage) partition. This removes all stored data, including settings, coordinate offsets, startup lines, and any other persisted values.
This is a lower-level operation than $RST=*. Use this only as a last resort, for example when the NVS partition is corrupted and the controller fails to boot or behave correctly.
After executing $NVX, the controller must be reset. On next boot, all settings will revert to their compiled defaults.
De-energizes stepper motors, spindle, and coolant.
Rabbit GRBL will enter ALARM state when woken via reset or power cycle.
-
$commands are configuration or state commands — not motion commands. - Real-time commands (
~,!,?,Ctrl+X) are completely separate from$commands. - Startup blocks do not execute if Rabbit GRBL powers up in ALARM state.
Copyright (C) Nikolaos Siatras / SourceRabbit
Rabbit GRBL is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
See the LICENSE file in the repository for full license text.
SourceRabbit® is a trademark of Nikolaos Siatras.
All other trademarks are property of their respective owners.