Flashing GRBL firmware to an Arduino is a process that involves uploading new software to the microcontroller on the board. In order to do this, you’ll need a few things:
- An Arduino MEGA 2560
- A USB cable to connect the board to your computer
- The GRBL firmware (which can be downloaded from this link). It has to be unzipped and zipped the grbl folder only.
- The Arduino IDE software (which can be downloaded from the official Arduino website)
Once you have these things, you can follow the steps below to flash the GRBL firmware to your Arduino:
Step 1: Install the Arduino IDE Software Download the Arduino IDE software and install it on your computer. Once the installation is complete, open the Arduino IDE.
Step 2: Connect the Arduino Board Connect your Arduino board to your computer using the USB cable.
Step 3: Select the Arduino Board Type In the Arduino IDE, go to the “Tools” menu and select “Board.” Choose the type of Arduino board you are using (such as “Arduino Uno” or “Arduino Nano”).
Step 4: Select the Serial Port In the same “Tools” menu, select “Port” and choose the serial port that your Arduino board is connected to. If you’re not sure which port to select, you can check the “Device Manager” on your computer to see which port the Arduino board is using.

Step 5: Open Arduino IDE. Select Sketch > Include Library > Add .zip library. When the window opens, go to the extracted folder, there’ll be another “grbl” folder inside. Select it. Click the File menu. Then go over to Examples > grbl > grbl upload. A new window of Arduino IDE will pop up.
Step 6: Upload the GRBL Firmware
You can upload it to your Arduino board. Click the “Upload” button in the Arduino IDE (it looks like an arrow pointing to the right) to upload the firmware to the board.
Step 8: Verify the Upload After the firmware has been uploaded, you can verify that it was successful by opening the Serial Monitor in the Arduino IDE. Make sure the baud rate is set to 115200, and you should see the GRBL welcome message appear in the monitor window.
Here are the default robot settings you can rewrite in ugs, or pronterface. You can also download it here and import it in Machine>Firmware>Import
- $0 = 10 (Step pulse time, microseconds)
- $1 = 255 (Step idle delay, milliseconds)
- $2 = 0 (Step pulse invert, mask)
- $3 = 0 (Step direction invert, mask)
- $4 = 0 (Invert step enable pin, boolean)
- $5 = 0 (Invert limit pins, boolean)
- $6 = 0 (Invert probe pin, boolean)
- $10 = 0 (Status report options, mask)
- $11 = 0.010 (Junction deviation, millimeters)
- $12 = 0.002 (Arc tolerance, millimeters)
- $13 = 0 (Report in inches, boolean)
- $20 = 0 (Soft limits enable, boolean)
- $21 = 0 (Hard limits enable, boolean)
- $22 = 0 (Homing cycle enable, boolean)
- $23 = 0 (Homing direction invert, mask)
- $24 = 200.000 (Homing locate feed rate, mm/min)
- $25 = 200.000 (Homing search seek rate, mm/min)
- $26 = 250 (Homing switch debounce delay, milliseconds)
- $27 = 0.000 (Homing switch pull-off distance, millimeters)
- $30 = 0 (Maximum spindle speed, RPM)
- $31 = 5 (Minimum spindle speed, RPM)
- $32 = 0 (Laser-mode enable, boolean)
- $100 = 60.000 (X-axis travel resolution, step/mm)
- $101 = 576.000 (Y-axis travel resolution, step/mm)
- $102 = 450.000 (Z-axis travel resolution, step/mm)
- $103 = 20.000
- $104 = 40.000
- $105 = 40.000
- $110 = 7000.000 (X-axis maximum rate, mm/min)
- $111 = 900.000 (Y-axis maximum rate, mm/min)
- $112 = 9000.000 (Z-axis maximum rate, mm/min)
- $113 = 9000.000
- $114 = 9000.000
- $115 = 9000.000
- $120 = 150.000 (X-axis acceleration, mm/sec^2)
- $121 = 150.000 (Y-axis acceleration, mm/sec^2)
- $122 = 150.000 (Z-axis acceleration, mm/sec^2)
- $123 = 150.000
- $124 = 150.000
- $125 = 150.000
- $130 = 150.000 (X-axis maximum travel, millimeters)
- $131 = 200.000 (Y-axis maximum travel, millimeters)
- $132 = 150.000 (Z-axis maximum travel, millimeters)
- $133 = 800.000
- $134 = 800.000
- $135 = 800.000
That’s it! You have successfully flashed the GRBL firmware to your Arduino board. You can now use the board to control