Mechanica Software – GRBL Controller



Informatie (ENG):

Grbl Controller is software that is designed to send GCode to CNC machines, such as 3D milling machines. It isn’t super smart, it just needs to give the user a nice way to get commands down to whatever controller they are using.

Version 3.0 is has been optimized for the Arduino to control Grbl shields. I am using it to control my Shapeoko milling machine. It is the only program I use with my Shapeoko in order to maximize the amount of real-world testing.

Grbl Controller is written using the Qt cross-platform libraries. It also gets some help from the QextSerialPort library to simplify choosing the correct USB serial port.

Qt is pretty cool because you can create a nice GUI application for Windows, Mac and Linux. Qt was originally developed by Nokia (ok, Trolltech to be exact, bought by Nokia). To develop in Qt you must be proficient in C++.

Why am I writing about this? I wanted a controller that would run on an old Pentium III laptop running Debian 6 – the only option was Universal G-Code-Sender written in Java, which unfortunately ran really slow on 256 MB of RAM due to the Java requirements. There is a pretty nice Windows-only project called GCodeSender that has been in use for the Shapeoko project since the early days.

I found a project on github called GrblHoming aka Grbl Controller, which was originally developed by Kosme, which showed promise for running native C++ on Linux, however it needed some attention.

I forked the project and started tweaking it to compile and run under Linux. I got it working and posted a version. Although it mostly worked, the bugs started to, well, bug me. I also knew people were interested in a native Mac version, so lots of hours later (mostly spent learning the ins and outs of Qt) I’ve produced version 3.0, which provides some neat enhancements like a status bar and time elapsed. It is also a near full rewrite to take into account how Qt protects memory objects across multiple threads using “signals and slots”.

For information on how to build it on all three platforms, check out this multi-page “manual”.

Give it a try and let me know if it works for you.

Here is an interface of the Grbl Controller V3.0. In this shot it is connected to my test Arduino running an older version of the Grbl code. The latest code doesn’t echo commands.

Using Grbl Controller 3.0


  • Power up Arduino and shield
  • With motor off, manually position milling bit over origin (0,0) on the work piece. The origin is the intersection of X and Y on your CAD drawing.
  • Start Grbl Controller
  • Select COM port and open


  • Choose appropriate step size (start with 1)
  • Press the Z down button, the milling bit should move down towards the work piece 1 mm. The Z jog speed can be adjusted in menu Tools -> Options
  • Repeat until the the bit is almost touching
  • Turn on motor
  • Press Grbl Controller’s Reset button to zero the Arduino Grbl code

Sending G-code

  • Choose Send GCode radio button
  • Open desired file, usually .nc
  • Press Begin. If for some reason there is a long, slow traverse, the controller may time out. Increase timeout value in Tools -> Options


  • Turn off motor when milling is complete


  • Press the Reset, Stop or Close button on Grbl Controller – the steppers should stop within a second or two. If not, power off your shield

Download GRBL controller @