Skip to content

Firmware setup information

Huub Buis edited this page Oct 19, 2026 · 8 revisions

Some firmware needs a specific compiler setup to make the firmware more compatible with the original Grbl firmware. For most compilers the is a lot of information on how to setup and compile the firmware. I could not find information on how to setup and compile uCNC. So next month I will make a YouTube video showing how to setup and compile uCNC using the uCNC web config.
There is more compatible firmware than the list below but testing them all is not feasible.

GRBL

No specific setup needed. Read the WiKi for more information.

GRBL-L

No specific setup needed. Read the WiKi for more information.

GRBL-L-Mega

No specific setup needed. Read the WiKi for more information.

uCNC

I will make a video showing how to setup and use the uCNC web config next month. Read the WiKi for more information.

In the configuration (use the uCNC web builder) you have to add the single axis homing module. For threading you have to add the G33 threading module.

These settings are needed for compatibility reasons. You need to add these lines to the Custom Hal configs section in the WebConfig.
#define DEFAULT_STATUS_MASK 7
#define EMULATE_GRBL_STARTUP 3
#define ENABLE_MULTI_STEP_HOMING
#define ENABLE_LONG_HOMING_CYCLE
#define ENABLE_GRBL_STYLE_HOMING
#define DEFAULT_STATUS_MASK 7

These setting can speedup the passes, add them when appropriate.
#define DELAY_ON_SPINDLE_SPEED_CHANGE 0

FluidNC

No specific setup needed. Read the WiKi for more information.

grblESP32

No specific setup needed. Read the WiKi for more information.

grblHAL

No specific setup needed. Read the WiKi for more information.

First steps after flashing any firmware

First power cycle the board by disconnecting the board from the computer. Than connect the board using a USB connection and a serial console. The Arduino serial monitor is perfect for this task. Request a status update by sending a ? command. If the status reports an alarm state, try clearing the alarm by sending a ctrl X command. Update the status and check the alarm state has gone. If not, the status probably shows some information about the problem.
Some boards requite a full reset of the settings after a firmware update. They will request to send a $rst=* command. If so, you have to send this command. Beware, all settings will be reset to their default values.
Once the status update reports an IDLE state, check if there are limit switches active. If so, check it the switch is actually triggered and if so, move the axis away from the limit switch to be sure the switch is not triggered.
If a limit switch is reported active and the switch is connected but not triggered, than maybe you have to invert the limit switch active level to clear the switch.
Once the status report shows an IDLE state and no limit switches are active, try to connect using the CNCL application. If CNCL does not connect, select the GRBL information task and retry to connect. Check the information on the screen to find the cause of the connection problems.

Clone this wiki locally