Communication / Control

From ShapeOko
Jump to: navigation, search

Please note that GRBL is limited in how long of a line it will accept. If your job is previewing correctly, but not running properly, check to see that line lengths are w/in its limits (50 for older versions, 70 for 0.8c dev or later) as discussed here. Certain programs may trim or round such off automatically (see below). Forum User TonyB has created a JavaScript (wrapped up in HTML so as to open from a local copy in a web browser) to round off decimals in files, available here.

Note that communicating w/ a micro controller is fundamentally the same as using a terminal program to communicate w/ another system. This means that some of the same trouble-shooting techniques and features apply, such as a delay between sending and receiving.[1]

While the new Carbide Motion Board for the Shapeoko 3 affords the option of using Carbide3D's Carbide Motion control software, any G-code program will work.[2]

Also see Grbl Gru on the Previewing G-Code page which now also supports TinyG.[3] (Troubleshooting connection information here: )

Communication / Control is at the heart of how a CNC operates, as described in this page.

Most run on Windows or Mac OS X or Linux. Discussion of Raspberry Pi g-code senders for Grbl.

Please vote for the tools you use in the poll.

Discussion of Carbide Motion Machine Control Software, Universal G-Code Sender, ChiliPeppr, and bCNC

Note that Linux users may need to add their account to the “dialout” group to access the serial port.[4] Shapeoko 3 connected to Debian Linux - Install & Setup notes

Troubleshooting techniques for Comm / Control programs[5]:

  • Have you tried other gcode senders?
  • Do you have a difference PC you could use just for testing, like a laptop?
  • It could be static electricity as I have had that problem myself, but not with the same sympthoms..
  • If you try to run the comm/control program and the gcodes without powering your steppers, will the PC crash then too?


Type Name/Link Description
G-code sender Carbide Motion Machine Control Software The default control program for the Shapeoko 3, any G-code sender which will communicate w/ Grbl will work.[6] Written using QT frameworks. Available for Windows 7 and later, Mac OS X 10.7 and later. Newer version(s) (v2 or later) support the Shapeoko[7]
G-code sender and previewer bCNC Python GRBL CNC command sender, autoleveler and g-code editor. Requires Tkinter and PySerial.[8][9]
G-code sender and previewer grblControl GRBL controller application with G-Code visualizer written in Qt. Includes French translation. Noted as working well on large files.[10]
G-code sender GcodeSender G-code sender by Otto Hermansson
G-code sender Grbl-Panel A control panel for Grbl, allows use of the keyboard or pointer and quickly choosing from a set of values to jog.[11] Has explicit support for offsets/work-coordinate systems and other features from professional systems. Wiki Frequently updated.[12] Current version:
G-code sender GCodeTeleporter Windows tool for sending GCode to CNC machines.

Features include a GCode Viewer/Simulator, GCode Truncater, Gcode Scaler (under dev) and Web Cam support.[13]

G-code sender grblfeeder Nascent Mac OS X app for streaming gcode files to the GRBL Arduino CNC controller.
G-code sender Universal CNC Controller Simple *nix CLI for streaming G-code to and jogging a grbl-controlled machine. Written in Shell as a wrapper to the python script. Runs on Linux, OSX, and BSD with py-serial installed. Ideal for low-powered hardware such as the Raspberry Pi.
G-code sender GCtrl Processing Script to stream Gcode. c.f. Gcode_Feeder_GUI.pde, Gremote, rsteppercontroller
G-code sender and previewer Universal-G-Code-Sender Java version of GcodeSender by Will Winder. Cross-platform (Win32, Win64, Linux, MacOS). Additional features include: Truncate decimal point precision to a configurable amount, Remove whitespace, Remove comments, Override speed rates, Arc to line conversion.

Installation on Raspberry Pi

G-code sender and previewer grblgui Java program w/ support for Android
G-code sender and previewer Grbl Controller Cross-platform graphical Grbl Controller for Mac, Windows and Linux (including the Raspberry Pi) originally written by Kosme, currently maintained by zapmaker. Allows you to jog X, Y, Z, and see the current position. Newer versions include a previewer, v3.4 will trim too-long lines[14].
G-code sender grblfeeder Python serial terminal designed for sending gcode files to a microcontroller running grbl.
G-code sender (Windows) 3dpBurner Sender Designed for GRBL based devices (laser and milling), uses Advanced Character-Counting streaming protocol for better performance.[15]
G-code sender (Windows) CNCInfusion Currently under development in C#.
G-code sender GCode Step and Alignment Tool (GSAT, previously GCS) Cross-platform GCODE debug/step and alignment tool for Grbl 0.8c or later. with features similar to software debugger. For example usage of breakpoints, change program counter (position), stop and inspection/modification of machine variables, step, run. Especially useful for allowing tool changes during operation. c.f.,

Forum thread:

Includes WebCam interface.[16]

G-code sender GRBLweb Web-based GCODE sender and controller for GRBL. Multiple serial devices can be connected to control multiple machines --- able to run on a Raspberry Pi (pre-built Raspberry Pi image based on Raspbian running GRBLweb available here).

G-code sender grblUI Simple graphical user interface programmed in Java, using rxtx for serial communication.
G-code sender grblgui Graphical user interface programmed in Java, using rxtx for serial communication and OpenGL 2.0 for rendering. Displays the job duration and remaining time to complete in minutes, current speed, and buffer status graphically on the toolpath, allows toggling feed hold and entering G-Code commands.
G-code sender EFL CNC[17] Software to control 3 axis stepper motors for GCode CNC projects.

Load Gcode file and stream it, can also flash your Arduino UNO. Integrated settings and options dialog box.

G-code sender and remote web interface Octoprint for CNC / Grbl by PxT Communication program which allows submission of jobs, previewing, monitoring and control through a web interface. Unique in being suitable for Grbl as well as 3D printer firmwares. New version will round to 3 decimal places to preclude the too long line problem. Instructions for installing on a Raspberry Pi. Original version.
browser-gcode-sender/All-in-one Web program Easel: Browser-based CAD + CAM + Machine Control app made by Inventables. Design, generate toolpaths, and/or import SVG, preview in 3D and send the job to your machine from one web app. Note that in its setup it may incorrectly calculate the Z-axis step value. $102 should be changed back to the original value of 20.
G-code sender (3D Printers) CNCGcodeController Allows usage of Marlin, &c. for CNC.[18] SerialComCNC --- German program for Windows for controlling Grbl. --- web-based CNC milling controller for the Arduino running GRBL [19] --- video [20]

CLI --- Windows CLI sending tool --- A minimalist, scriptable command-line interface for GRBL v0.9.[21]

Laser-specific [22]


Type Name/Link Description
chrome-gcode-sender chrome-gcode-sender gcode sender for the Chrome web browser and ChromeOS computers. github source.


Type Name/Link Description
G-code Interpreter and machine controller LinuxCNC (formerly EMC2) Now known as Linux CNC- a free Linux based application for controlling and monitoring CNC machines. It runs from a Live-CD distribution of Linux called LinuxCNC. It is used for machines/drivers working through a parallel port connection, so no USB controller is supported.


Note also the Chrome sender above under Grbl [23]

Type Name/Link Description
G-code sender (Android) GRBLDroid Allows your Android device to control your CNC.[24]
G-code sender (Android) TinyG CNC Console Allows your Android device to control your CNC controller via network, USB host mode (3.1 and up) and USB accessory mode (2.3.4 and up). [25].

Raspberry Pi

Several of the comm/control programs run on the Raspberry Pi.

GrblServer is notable for being specific to it and using Node.js:

Similarly, there is New minimal control software: RasPyCNCController, available at: which has image files available from: [26] [27] --- instructions for installation:

Shapeoko 3 XXL + Raspberry Pi 3 + CNCJS + Tablet

Recommended OS: [28]


Type Name/Link Description
browser-gcode-sender ChiliPeppr 3D Viewer. Gcode Sender. Jog controls. Has a Serial Port JSON Server you put on device with serial port like Win/Mac/Linux/Raspberry Pi/BeagleBone/etc, but run jobs from your local laptop/desktop browser. Exists as a "Hardware Fiddle" with ability to fork all code. [29] Google forum There are now SPJS downloadables for Pi1 and Pi2.[30]

Workspace for auto-leveling: [31] metric-only, Imperial not supported[32]

Offline usage[33]

G-code sender Steuersoftware JCNC V1.03 G-codesender for Grbl and TinyG, with preview of the toolpath.[34]
G-code sender and previewer Goko GCode sender, 4 Axis 3D Viewer, Jog controls, GCode modification, Wrapper, Autoleveler, metric and imperial units.

For TinyG v0.97 and Grbl v0.8 & v0.9 [35]

Support forum

Windows Machine Simulation

Grbl Gru supports Grbl and TinyG.[36] --- for Windows users who don't mind closed-source, it should definitely be considered. Listed on the Previewing G-Code page.


  • tgFX --- A GUI controller for the TinyG motion controller (discontinued, see Chilipeppr instead)

Additional Programs


Obsolete / Moribund / Abandoned?

  • G-code sender PythonCNCGUI --- HMI/GUI done in Python using Opengl for graphics is used to interface to modified Grbl CNC code on an Arduino over USB. Operating System Notes: Currently runs well in Linux with Ubuntu and Python2.5. Also in process it now runs in Windows XP 32-bit with Python2.7.