This is a version of grbl that supports both spindle and laser based on grbl version 1.0c from Inventables. It contains the original changes by Andrew L. Sandoval to produce grbl version 0.9g for J Tech as well as some optimizations that I included for the laser functions.

Thanks to Jeff @picengravertoo (Who tragically died this year) and John @JohnChamplain for their help in testing this new version.

There are two build versions.

The first version (release 11/12/2016) is the base version for spindle and laser.

The second version (release 9/1/2017) is a modification of the first release to change the Dwell (G4) to allow smaller increments for Dwell.

The first version uses the standard 50ms floor with 50ms steps for the dwell and the second version uses a 1ms floor and 1ms steps.

9/1/2017 - added version with Dwell change
10/12/2016 - update (bug fix) ghosting
9/28/2016 - original release

First time users - you really need to read the readme.pdf


The PWM from the Arduino can go directly to the iot relay. But, Inventable has an interface that came with the Generation 1 X-carves that has a nice switch. ON/OFF/PWM. but it's not needed.

The following is all copied directly from the links above.

The following is all copied directly from the links above.

The push buttons controls are easy to hook up and use. I use the ABORT button as an E-STOP. But good practices and experience means less need for one. The Pause and resume buttons are nice for long carves that need to be paused at night and resumed in the morning. The Abort is Pin A0, the Feed Hold is Pin A1, and the Resume is Pin A2. You just need momentary push buttons connected on one side to those pins and the other side can all be connected together and go to GND. I used an 18/4 cable to have all 4 contained inside one nice jacketed cable leading to a remote box.




GRBL Version 1.0c For Laser And Spindle


How to use Xloader to load a new version of grbl into the Arduino/X-controller.

The left screenshot shows the window that Xloader displays when it starts.

Enter the file path or browse to the .hex file that you would like to load into the Arduino/X-controller.

Select the device type you are going to load into (Uno/ATmega328 for the Arduino/X-controller).

Select the COM port where your Arduino/X-controller is attached.

The baud rate should be 115200.

Press the "Upload" button.

When the .hex file has been loaded into the Arduino/X-controller the right screenshot will show the size of the file uploaded, or an error message if the upload fails.

The following is all copied directly from the links above.

For the Adafruit (or similar) proto screw shield, I utilized the prototyping part to make a quick replacement area for the 0.47uF capacitors. The capacitors connect from Pin 9 to GND, Pin 10 to GND, and Pin 12 to GND. The screw shield portion makes it very easy to connect all wires. There are versions that don’t require soldering on Amazon, but I don’t mind the soldering. You’ll have to come up with a mount for the Arduino. I used a hacked apart box from my original X-carve Gshield enclosure.



I started out by deciding the best way to lay out the TB6600 drivers was with their cooling fins all lined up and in order. That way one fan can blow past all of them for cooling. I also come from an electrical cabinet design background so I keep to the good practice of only one wire per barrier strip or terminal block connection if at all possible. Also with grounding, all motor and limit switch cables are shielded. To ground a shielded cable correctly, you only ground it on one end, the control box end. Also, all grounds should have the same potential so I tapped the 120 VAC ground off the power supply to also tie into the box. You’ll see in the schematic that all grounds are tied to each other.

Update 12/29/2015

It appears that this doesn't work on Windows 10. I don't have Windows 10 so I can't try it, but another forum member tried it and it didn't work for him.

Updated 12/12/2015

Revised method for uploading a .hex file to the Arduino. This is an alternate method for uploading if you have difficulties with Xloader. This version prompts for the COM port and filename.

**** Readme file 12/12/2015 ****

To use this .zip file to load a hex file into your Arduino you first need to copy your .hex file to the same directory where you unzipped this file.

Double click the AVRDUDE_Upload.bat file and a command prompt window will appear.

The first thing the command prompt window will ask for is the port that the Arudino is attached to. For example, COM1. Enter the port name on your system where the Arduino is attached.

Next the batch file executing will ask for the filename of the .hex file you want to upload. Enter the file name of the .hex file you copied into the location where you unzipped the .zip file.

Now the batch file will upload your .hex file to the Arduino.

Once finished the batch file will pause to let you look at the upload comments. Press the space bar to allow the batch file to terminate once you have examined the upload comments.

Be sure to keep all of these files in the same directory and execute the batch file from the directory where you unzipped the files.

The .HEX file included is grbl version 1.0c from above. (I (Phil Johnson) swapped out the old 0.9J GRBL for the new one above)

This section is for the post build uploading GRBL onto the Arduino. There are many versions available, but I will be focused on the most stable version, which was completely gone through and revised by my GURU, Larry Mayberry who we tragically lost this year (2019). Also know as LarryM on the inventables forum. All information is copied from or derived from Larry with his permission before he pasted. Larry will always live on in every machine I make.

Vectric Products Post Processor files:

NOTE: Easel cannot send files created with these post processors (Easel does NOT do arcs [G2/G3]).

Vectric Post Processor Location:

If you use the default install directories, then the private post processors should be moved to this directory:


Example: for Vcarve Pro version 8.5 the directory would be:
C:\ProgramData\Vectric\VCarve Pro\V8.5\My_PostP

links to Inventables posts


I figured 3D printing is the act of creation because it's additive... So CNC is the act of destruction. So what better way to show it's destructive force than a Demon. This is the Demon from the movie Legend. I back lit it with Red LED's and connected it to the 24 VDC power supply via a 24 VDC to 12 VDC stepdown transformer. So it lights up when the controller turns on.

These links will not be around forever so I will repost it below.

Main components list:

·         (4) TB6600 drives (Approx. $15 each)

·         (1) Arduino Uno Rev 3 (Approx. $30)

·         24 VDC 16 amp Power Supply (I used the Inventables power supply)

·         (1) Adafruit Proto Screw Shield (Approx. $15)

·         (5) 12 Position Barrier Strips W/ Jumpers (Approx. $12)

·         (3) 0.47uF Capacitors for Limit Switch Noise Filter

·         Lots of 18 awg stranded (22 awg will probably work for the signal only connections)

·         2 lengths of 12-14 awg stranded for main power to the drivers

·         Wire Duct or Some Form Of Wire Management

·         24 VDC Fans or 12 VDC W/ a Step Down Transformer