Skip to content

For GCode Sender Developers

Nikos Siatras edited this page Mar 2, 2026 · 7 revisions

This page targets developers and AI assistants building G-Code Sender Software (desktop, web, mobile, embedded) that communicates with Rabbit GRBL.

Rabbit GRBL is designed to remain 100% backward compatible with GRBL v1.1h (AVR) command set and to work with standard GRBL senders, while providing deterministic performance on ESP32.

Connecting

On many Arduino-based GRBL controllers, opening the serial port (USB Serial) typically triggers a hard reset of the MCU, resulting in a clean startup. In practice, this means the controller enters a well-defined state and usually prints the welcome/startup message right after connecting.

This is not the case with Rabbit GRBL. Due to ESP32 USB/serial behavior (i.e., the MCU is not necessarily reset when the host opens the serial port), opening the connection does not guarantee a reset. Therefore, you should not assume that the welcome/startup message will be sent automatically on connect.

To bring the controller into a known state and to receive the welcome message, the sender must issue a Soft Reset (byte 18) after connecting (optionally followed by ? to synchronize/confirm the current status).

Diagnostics List ($EA / $EE)

Alarm and error code sets (including translations/messages) can be fetched directly from the controller, removing the need for external files that must be kept in sync with firmware versions. Since Rabbit GRBL may evolve and include controller-specific extensions, relying on static sender-side files can easily get out of date.

Alarm codes ($EA)

Alarm codes can be enumerated with the $EA system command. The response is one line per alarm, and the last line is ok.

Format:

  • [ALARMCODE:<code>|<message>|<description>]

Example:

[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.]
...

Error codes ($EE)

Error codes can be enumerated with the $EE system command. The response is one line per error, and the last line is ok.

Format:

  • [ERRORCODE:<code>|<message>|<description>]

Example:

[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.]
...

Clone this wiki locally