Grbl Controller Downloads

Welcome. Normally I would keep downloads on github, but because github has stopped hosting binary/installer downloads as of January 2013, I have moved the installers to Amazon S3.

Windows installer should be straightforward. The Grbl Controller was built with MinGW and all required DLLs are provided. You will probably need to visit the Arduino web site to install USB serial drivers.

Mac has two installers, the 64 bit installer is for modern Mac OSX versions while there is one 32 bit Intel installer for older Mac Minis and Macbooks. Sorry, PPC is not provided. To properly run GrblController on the Mac, you will need to download and install the FTDI drivers first!

Note – I have decided not to host the Linux/Raspberry Pi installers as they are difficult to get running – I recommend you build the Grbl Controller using a process as documented here.

Version 3.2

No longer restarts COM connection, rather, position is maintained as long as possible. Button to zero position using gcode is used instead. Position is now reported by requesting it from Grbl instead of computing it. Optional new “aggressive preload” mode sends commands as fast as Grbl can process them – Caution: motions may be faster than  normal mode and will definitely see how good your stepper controller heat sink is!

Version 3.0

Original version. Reinitializes COM port for every file send (a non-optimal solution to zeroing position)

22 thoughts on “Grbl Controller Downloads

  1. hi, im new to cnc, and g code and arduinos, and iv recently assembled a shapeoko and am using grbl controller 3.2 to communicate with the arduino. the problem I’m having is that when i try to execute a project the arduino tries to send the dermal out side its physical parameters. so my question is is there some sort of calibration process that the arduino needs to undergo in order for it to know the axis’ limits? iv read a little about arduinos (still hardly know anything) but it sounds like they need to be programmed before use. is there an already produced code that i can just copy and paste to grbl controller ? thank you

    • Apparently Grbl 0.9 supports soft limits. I have not tested this feature yet.

      Please read

      Currently there is no user-interface support in Grbl Controller for soft limits, so you will need to issue manual commands via Grbl Controller to grbl to get this functionality. Hope that helps.

  2. Hello Zapmaker,

    I am trying to use Grblcontroller with Arduino UNO for my new armrobot and it works but there are some bugs. I do not need to use spindle control and other controls for my robot.
    1. The controller says there is no C-axis but it can send the code to the UNO. There is no response of the C-position on the screen.
    2. In the Arduino sketch I added a second mask for step and dir for the C port, but the pins do not react.

    What did I do wrong ?

    Best regards

    • I think I need more information on what you are trying to do. When you say you have a sketch, that is a problem already. GrblController only works with grbl running on the Arduino processor. grbl is written as C code and is installed onto the processor as a hex file. There is no grbl sketch.

      If you are trying to emulate grbl in a self-written Arduino sketch, you may find that the performance is poor and I do not recommend it.

  3. When i test the GRBL Controller today, The system unable to connect to my Arduino UNO and Arduino Mega 2560..
    I am sure that my Arduino is upload with the lastest 0.8c hex file.
    When i click Open following message appear.:=
    No data from COM port after connect. Expecting Grbl version strin.
    And 1 more thing Micro controller chip getting hot. What causing the problem and how to safe it ?

    • The most likely thing is you either have a short in the stepper driver shield or on the Arduino, most likely caused if you are milling metal – the tiny fragments can get onto the circuit board. Avoid milling metal or having the ardunio or shield near metal filings, or fully enclose the Arduinos (but with enough tiny ventilation holes, perhaps with foam to capture dust before it gets into the enclosure). Another possibility is problems with the steppers. Here is how to diagnose:

      Try to see if your arduinos still work as ardunios. Start with the UNO – make sure any shields are removed, try uploading the original Arduino firmware file with ArduinoUploader or similar app.

      The firmware files are found in C:\Program Files (x86)\Arduino\hardware\arduino\firmwares\atmegaxxu2

      Start with Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex, then try UNO-dfu_and_usbserial_combined.hex if that doesn’t work.

      Then use the Arduino IDE to upload the Blink example and make sure the LED blinks.

      Repeat same with the Mega 2560, but using a different firmware file.

      If all this works, then your Arduinos are working standalone.

      Next, upload the appropriate grbl hex files and connect with Grbl Controller – that should also work, Grbl Controller should be able to talk and you should see the version string and other output in the status window.

      If that works, then install the shield on one of the arduinos and repeat the test with Grbl Controller. This should tell you if the problem is with the Arduino or the shield.

      • I am sure that my UNO is gone… For the Mega2560, I test everything and it work fine.. but still having the same problem when try to connect with the Grbl Controller. The chip when warm too when i plug it into the USB without any shield install and i have not using it to milling anything yet.

        • I ran a test with Arduino running and also grbl running on my Mega2560 and the chip runs slightly warm after an hour, in both cases. Very puzzling why yours is running hot. Does it run hot with Arduino running on it? If it runs hot only with grbl, make sure you have the correct build – I am using the one where the filename ends with 38400.hex (see my Mega25600 page on this site) …

          • Thanks, zapmaker
            Finally i manage to connect my Mega to Grbl controller, The Mega2560 only can connect at the 38400 Baud Rate is that normal.?

        • The grbl hex file on my site for the Mega2560 is compiled to run only at 38400. You would have to change some code and create a new hex file to change the baud rate.

  4. Hi
    I have almost finished a small 3 axis router that i want to use for pcb making and now i am looking at the electronics. I want to use my duemilanove 328 or mini328 with grbl but i am having trouble understanding how to do it. Does anybody know a foolproof tutorial as I find things hard to take in.Thanks.

    • Great question. Not sure if you had a chance to navigate around the site via the flyout menus, but I do have a tutorial (not claiming to be foolproof! Just a detailed overview) here:

      Turns out that the link isn’t specific to the Shapeoko and should work for any hobbyist 3-axis mill run via steppers.

      You may find info online, such as youtube. Also check out the shapeoko forum for ideas. Here is an interesting topic, but not exactly what you need…

      I will take it into consideration to put together a video on how to do this, but may take awhile before I get it done.

  5. Thank you so much for sharing your program with the online community! I have been using Universal GCode Sender up until now, and your program is an excellent alternative.

    Couple questions-
    1. In a future build, is it possible to add better lasercutter support? For example, instead of driving the Z-Axis, there could be an option to automatically change the command to turn the Spindle Off/On.

    2. Sometimes I just want to manually jog over to specific areas and plunge down to make holes I need. Unfortunately I cannot then take these movements and create GCode from them. Is it possible to write GCode like this on the fly? To somewhat echo Winch’s request (from another post here on your site), might it be possible to add a Macro/Record function so that I can manually make certain cuts, and then have the program repeat the commands when a “playback” button is pressed? That would be AMAZING!


    • Regarding question 1, do you have something in mind like a downward motion in Z means spindle on and upward spindle off?

      Regarding question 2, it sounds like you want a macro recorder – turn on recording, manually move, stop recording and save. Then when you run the macro it runs relative to the current postion (not absolute position).

      Does this sound right?

      • Thank you so much for the response, and I do apologize for the late reply (I just now noticed your comments after re-visiting your site).

        RE: 1) I’m still in the midst of putting together my homemade lasercutter, so I can’t confirm with sample code (unfortunately). But yes, the jist would be that whenever the Z-axis is to jog downward, it would activate the spindle via using an M3 command. Up would deactivate it. Once I have sample code, I should be able to better explain it.

        RE: 2) Bingo. Yeah, you got it.

        I also have an additional question- if you don’t mind. Is there something that I have to toggle in order to have have the stepper continue to jog while holding down one of the directional buttons? It just goes for the number of steps, and then stops. Is there a way to have the stepper continue to jog if you continue holding the button after it has exceed its number of steps? Furthermore, is it not possible to jog in two directions at once? It just runs the one stepper. Stops. The runs the other. Is it due to the limitations of USB or something? Thanks!

  6. (1) I would like to program a G-code program based on an input value. Would I need an extra program or would it be possible to use your GRBL-controller as input terminal and for calculating the G-code path? (Example: My x-axis describes a circle. In case the object circles around twice it does not need to go back all the way.)

    (2) Is it correct that the position is not transmitted back to the GRBL-controller in case of a manual movement?

    Thank you!

    • 1. Grbl Controller only manages gcode produced by CAM programs – I think you are looking for a program like CamBam to create the design first.

      2. The position is transmitted back automatically for manual movements because Grbl Controller requests the positions from grbl

  7. Hi. Is it possible to get a Linux version of the newest release? I notice only a very old one is for linux. I’m not computer savvy enough to figure out if I can run the windows one from ubuntu LTS which is what my box happens to run. Thanks. :)

    • It is difficult to build a generic version for Linux due to the multiple distributions that are possible and library version incompatibilities.

      I will look into building a static build for ubuntu which may do what you need.

  8. Hi I have left this alone for a few months and the arduino duemilanove is not playing ball now so I have a handful of mini pro 328 boards and hope this will work. I do have head issues since a fall 5 years ago and am struggling to find arduino grbl to d\load and I have linked the 6 pin on board programming pins to the 6 pins on my target mini pro 328 1 to 4 to 1 to 4 and 6 to 6 but 5 on target to d10 the program pin on the programmer (mini pro) .Could you advise me if it will (Should) work and if possible a link to software. I don’t feel I am getting there but once it’s programmed it should be ready to go. Any help will be appreciated Thanks.

  9. friend,
    I’m trying to compile the GRBL Controller 3.6.1 -T4 and I’m in trouble … I open the … and to build the error appears … \ GCV – 3.6.1 -T4 \ src \ visu3D \ Tools3D .h : 14 : error: QGLViewer / qglviewer.h : No such file or directory
    #include …. can you help me ?

Leave a Reply to Deives Cancel reply

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


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>