Skip to content

Compatibility level

Terje Io edited this page Dec 12, 2023 · 4 revisions

Compatibility levels

Compatibilty level is a compile time configuration that can be set in grbl/config.h or selected in the Web Builder Advanced features tab, default value is:

#define COMPATIBILITY_LEVEL 0

It can be used to disable new features in grblHAL that may cause some senders to behave strangely or refusing to work at all.

0 1 2 3 4 5 6 7 8 9 10
Init message starts with GrblHAL *
Restore G92 offsets on boot * *
Keep G92 offsets on soft reset * *
Keep tool number on soft reset * *
Keep tool offsets on soft reset * *
Multi axis tool offsets * * *
Allow manual tool change (M6) *
G59.1,G59.2 and G59.3 supported * *
Force "Home" status report on homing *
Repeat last error on subsequent commands1 *
Add HOME position to $# * * *
Additional (missing) $G reports * * *
$I - OPT: number of tools in table *
$I - NEWOPT: *
Allow extended legacy $-settings2 * *
$$ reports new $-settings3 * *

1 This is a safety measure, legacy grbl will happily continue executing queued gcode commands even if an error is raised. This is dangerous and pretty much restricts the sender to sending one command at a time and check for errors before sending the next. With this feature enabled a more agressive approach to streaming can be implemented that utilizes the input buffer efficiently. Note: A $-command or a blank line will clear any error.

2 Some bitmasks has been extended with new bits and when not allowed set these bits will retain their previous value, either from flashing a version beforehand with a compatibility level that allows setting them or setting the default value in grbl/config.h. Settings affected are:

  • $10 - bit 0, 1 and 2 allowed.
  • $21 - bit 0 allowed.
  • $22 - bit 0 allowed.

3 $+ can be used to report all settings regardless of compatibility level.

NOTE: Compatibility level 3 - 9 is currently undefined and will behave as if level 2 is selected. Set compatibility level to 10 to disable all extensions.


2023-08-07