This wiki is intended to provide various instructions on how to use Grbl. Please feel free to contribute and help keep this page up-to-date!
After flashing Grbl to your Arduino, connecting to Grbl is pretty simple. You can use the Arduino IDE itself to connect to Grbl. Experiment or play with it, just to see if you like it. Other serial port programs, like CoolTerm or PuTTY, work great too. The instructions are pretty much the same.
Grbl v0.Xx ['$' for help]. This means all is good! You're connected!
From here, you can simply start sending Grbl some g-code commands, and it'll perform them for you. Or, you can type
$ to get some help on what some of Grbl's special commands are or how to write some of your machine settings into Grbl's EEPROM memory.
When have started to feel comfortable with g-code/CNC and you're ready to run a whole g-code program, we recommend that you use one of the many great GUIs that users have written to stream your g-code programs to Grbl and to fully harness all of Grbl's capabilities.
NOTE: Check out ShapeOko's Wiki. It has the most up-to-date and comprehensive list of Grbl GUIs.
A full-featured GUI, developed by @wwinder, that streams, g-code visualizer, and has complete control and feedback functionality for Grbl's higher level features. It's written in Java, which means it can be run on any Java-capable machine including the RaspberryPi! The Grbl group works closely with this project and highly recommend using this GUI. If you find any issues or would like to request more GUI features, @wwinder has done a wonderful job in completing many of the requests.
Easel is a web based project developed by Inventables specifically for us with the Shapeoko + Grbl. It is an all-in-one package for design (including SVG imports), toolpath generation and machine control. In addition to 2D design tools, Easel lets you preview your toolpaths in 3D before sending them to your machine. Easel is in constant development by the Inventables team. You can request features or report issues through the feedback button in the app.
GRBLweb is a web based GCODE sender and controller for GRBL. Multiple serial devices can be connected to control multiple machines.
There is also a pre-built Raspberry Pi image based on Raspbian running GRBLweb available here.
Maintained by retired computer professional @gerritv, GrblPanel is a GUI that implements more advanced features and functionality commonly found in production machines like Haas, Fanuc, etc. All of the required tools for setting up and running a milling job are neatly arranged and designed to be easily accessible based on decades-old accepted workflows in machine shops. GrblPanel currently only works in Windows via .Net v4.5, but will eventually be updated for cross-platform use through [Mono](http://www.mono-project.com].
NOTE: If you are having difficulties with streaming to Grbl, we will ask you to use this Python streaming script to eliminate the GUI you are using as the source of the issue. Before posting to the issues thread, please use this script to run your g-code program.
Included with the source code and officially supported by Grbl, two Python streaming scripts are supplied to illustrate simple and more complex streaming methods that work well cross-platform. These scripts don't fully support all of the Grbl's features, but are intended more as a way to compare or troubleshoot other garden variety or newly-written GUIs out there. These are located in the 'script' folder on the main repo. Note: The streaming scripts require the pySerial module installed.
s = serial.Serial('/dev/tty.usbmodem1811',9600)
python simple_stream.py (Windows)
The other, more advanced streaming script stream.py has command line arguments and does not require modifying the script itself, unlike simple_stream.py. The main difference is that stream.py uses a character counting scheme to ensure the Grbl's serial read buffer is full, which effectively creates another buffer layer on top of Grbl's internal motion queue. This allows for Grbl to access and parse the next g-code block immediately from the serial read buffer, rather than wait for the 'ok' send and response in the simple_stream.py script. This is very useful for motions, like curves, that have very rapid, short line segments in succession that may cause buffer starvation, which can lead to strange motion hiccups. In other words, it ensures a smoother motion. Use this script, if you are not afraid of command line or are experiencing weird motions.
A simple graphical user interface: https://github.com/jgeisler0303/grblUI. Programmed in Java, using rxtx for serial communication. Should theoretically run on Linux, Mac and Windows alike. Apparently some problems on Mac. Any feedback, tips and tricks appreciated (Issues or Wiki in grblUI). Check out the ready to use jar in the Downloads.
A graphical G-Code Streamer: https://github.com/cody82/grblgui. Programmed in Java, using rxtx for serial communication and OpenGL 2.0 for rendering.
Currently under development in C# https://github.com/nm156/CNCInfusion
Other than CoolTerm or PuTTY, Linux and Mac systems have a great lightweight serial emulator called
screen that's either built in or easily installable (apt-get install screen) through the terminal interface.
If your device is connected on /dev/ttyACM0 (for Mac, /dev/tty.usbxxxx), type
screen /dev/ttyACM0 115200 to connect to the device at 115200 baud. There you'll be connected to Grbl. To exit
To get out of the screen interface, simply press
Ctrl-a followed by a