GRBL – Motion Control for Makers

GRBL - Machine Control for Makers

GRBL software powers the Arduino CNC revolution. I am not aware of any comparable software. What exactly does it do? Basically, the software when loaded onto an Arduino creates the heart of a low cost high performance cnc controller. It allows us to use an Arduino to run our CNC machines. If you already have GRBL and need more information on how to adjust the settings for your machine get the GRBL Settings Pocket Guide by clicking the link below.

Download the GRBL Pocket Guide by clicking Here


Much of the following is from the GRBL wiki & GitHub page.

Download GRBL software from the GitHub page click here

Access the GRBL Wiki page here  It’s an exhaustive information repository and well worth a look.

I use GRBL in my DIY CNC Controller. The software runs the machine very smoothly with excellent acceleration & deceleration control. The best part, I do not need a computer with a parallel port to run my CNC mill. GRBL looks for lines of G-code passed over USB. It also manages all of the timing necessary which allows for the machine controller to be computer agnostic. As long as you have a PC with a USB port and gCode parsing software, you have the makings of a CNC controller.


The following is directly from the GitHub page:

“An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino”

Open source – v0.9 released under the GPLv3 license available for anyone to download and use at no cost. In fact several companies use GRBL as the motion control software of choice. They include the following: Inventables, Carbide 3D, OpenBuilds, Panucatt Devices & Protoneer


Origins: Based on Arduino gCode Interpreter by Mike Ellery
Lead Developer [2009 – 2011]: Simen Svale Skogsrud (Norway). aka The Originator/Creator/Pioneer/Father of Grbl.

Simen is a principal at Bengler a company that invents “unlikely and interesting uses for technology.” He specializes in product design, software architecture and broad spectrum tinkering. Simen coined the phrase “Motion control for machines that make things.” Check out his excellent post here detailing GRBL

Lead Developer [2011 – Current]: Sungeun(Sonny) K. Jeon, Ph.D. (USA) aka @chamnit

Why Arduino

Arduino is everywhere. People are familiar with the hardware and IDE. Its low cost minimizes the barrier to entry for CNC motion control. Additionally, the proliferation of Arduino allows for widespread adoption of GRBL. Using the Arduino platform aligns with the larger maker movement of democratizing fabrication.


GRBL has some excellent features that are worth mentioning.

1) It enables communication over USB. No more trying to find a boat anchor of a computer with a native parallel port. Most industrial and many hobby CNC controllers require a parallel port.

2) Grows with your skill as a machine operator. GRBL has many advanced parameters that many beginners will not need. However, these functions allow the user to grow into using the full capabilities of their machine.

What GRBL doesn’t do

I am having a hard time writing this. Keep in mind, I am not aware of a comparable alternative for comparison. I find it hard to complain about free software that provides so much utility. Nonetheless, these are a few of the current limitations & drawbacks.

1) Backlash compensation – in any machine there is “slop” that’s a technical term. Backlash is lost motion due to the mechanical components of the system. The best way I know how to explain this is consider a traditional milling machine. You turn the hand in one direction and the table moves. If you stop and then turn the handle in the opposite direction, the table will not move immediately in the opposite direction. Backlash is measured in the number of thousands of an inch the handle rotates before the machine table moves. Backlash compensation is a way to tell the software how much lost motion your machine has in the x,y & z axis. The machine controller will use these values each time the machine changes direction to improve the precision of the motion.

2) Currently Grbl supports 3 axis of motion, x, y and z. but does not support rotation axes.

3) Tuning GRBL can be somewhat intimidating. However, I created this pocket guide to help with the setup. Click Here to Download Your GRBL Pocket Guide

What else does GRBL need?

In order to create a cnc controller using GRBL software, we need a few additional items outlined below. Click here for a step by step guide to setup your DIY CNC Controller.

What you need…

1) Arduino – to host the GRBL software

2) Stepper Motor Drivers – the bridge between the Arduino and stepper motors that actually move your machine.

3) Power supply – connect to your stepper motor drivers and provides the power to the drivers & stepper motors. Note, you will need to power your Arduino separately. I power mine over the USB line from my netbook.

4) Computer – You will need to have a USB connection between a computer and the Arduino

5) G-Code Parser – (Software) This allows you to upload a gCode file and the software sends the file one line at time to the GRBL software.

6) Stepper Motors – These provide the motion to move your machine

The graphic below outlines how all of these items work together. It makes more sense to me when I can see the big picture.

DIY CNC Controller Overview with Arduino, grblShield, power supply and stepper motors

DIY CNC Controller – Overview

What’s next for GRBL? (H3)

The first one on the list below is of particular interest to me. I would love the ability to adjust feed rates in real time. This is particularly helpful when running a part for the first time when the speeds and feeds recipe is still unproven. In my case, I run lots of different parts in small quantities. I often have to stop the machine and go back to my CAM software to update the feed rates and repost the tool paths. Go back to my mini mill and start the program again.

The following is directly from the GRBL Wiki page

Queued for the next Grbl release:

1) Real-time adjustable feedrates: On Haas CNCs, there is a feature with 5%, 25%, 50%, and 100% real-time feed rate adjustments. This is primarily for testing and proofing G-code programs and to adjust feed rates live, if a cutting tool is chattering and needs to be slightly sped up or down. The implementation has been solved at this point, but just needs to be installed and bugs to be worked out.

2) Other overrides: Along with feed rate overrides, other overrides will be added, such as coolant, spindle, and rapids overrides.

3) Backlash compensation: There are many ways of handling backlash, which all have different levels of complexity and drawbacks. The main problem is how to ensure that the CNC keeps moving smoothly as possible through the backlash without compromising accuracy.

4) Jogging: This is planned as a separate Grbl run-time mode to be run independent of grbl’s G-code parser. In production CNC machines, this is the same behavior, where jogging is a special control mode.

5) Other Advanced Controller Features: Program resume (restart a job midway), block deletes, single block mode, and ‘%’ program mode.


We in the maker community owe a big thank you to Simen Svale Skogsrud the original developer of GRBL. Without his work & generosity, we would not have the opportunity to bring CNC manufacturing into the home. In 2009, Simen transitioned the development responsibilities to Sungeun(Sonny) K. Jeon. We also owe him a debt of gratitude. If you would like to help support the further development of GRBL, you can donate directly to Sonny by cliking the link below.

Click Here to Support GRBL

I am a big fan of GRBL. Without this software, I would not have been able to learn CNC machining.

Leave a Comment

Your email address will not be published. Required fields are marked *