Skip to content
GCode Step and Alignment Tool, a GCODE debug/step for Grbl like GCODE interpreter. Targeted for CNCs like ShapeOko
Branch: master
Clone or download
duembeg Merge pull request #13 from duembeg/g2core_support
Add latets tinyG2 (g2core) verbosity support
Latest commit 5913cd6 Dec 29, 2016


gsat is a cross-platform GCODE debug/step and alignment tool for TinyG and Grbl like GCODE interpreter. with features similar to software debugger. For example usage of breakpoints, change program counter (position), stop and inspection/modification of machine variables, step, run.

use case: The GCODE file is a drill program for a PCB, gsat will make it possible to set-up a break point right before the tool plunge. At this point with the jogging controls it is possible to lower the tool right before penetrating the surface to verify alignment is adequate. Once this is verify and or adjusted, the program can continue.

Development Environment

gsat's dependencies are:

Additional dependencies if enabling OpenCV


  • TinyG is a 6 axis motion control system designed for high-performance on small to mid-sized machines.
  • TinyG2 is a cross-platform ARM Port of the TinyG motion control system that runs on the Arduino Due and on Synthetos hardware.
  • Grbl is a free, open source, high performance CNC milling controller that will run on a straight Arduino.

CNCs use for development

  • ShapeOko is a Open-Source desktop CNC machine.
  • Proxxon MF70 costume CNC conversion, there are multiple offerings.
  • Other CNC machines that use the above devices.


  • Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04

    • Installing dependencies:
    sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n python-pip
    sudo pip install pyserial
    • Optional dependecies for OpenCV
    sudo apt-get install python-numpy python-opencv
  • Mac OS X

    • Install python following the instructions at
      • After installing python install pySerial
      pip install pyserial
    • Install wxPython following the instructions at wxPython
    • Optional dependecies for OpenCV
    brew install numpy
    brew tap homebrew/science
    brew install opencv
  • Windows 7

    • Install python following the instructions at
    • install pip following instructions at
      • After installing pip install pySerial
      python -m pip install pyserial
    • Install wxPython following the instructions at wxPython
    • Optional dependencies for OpenCV
      • Install OpenCV follow instructions at OpenCV windows install
      • Note if there are errors regarding "OpenCV 2.4.8: module compiled against API version 9", go here for latest NumPy build.

Editors used for development.

Screen Shoots

Main window

####* Linux Main window, Linux

* Mac

Main window, Mac

* Windows

Main window, Windows

Settings Dialog

Settings Dialog



  • Added Support for verbosity changes in TinyG2 latest master branch now known as g2core.
  • Fixed bug on jogging UI; where an operation was selected without selecting an axis. This resulted on a serial write and wait for ack, since string was empty there will be no ack.


  • Added support for TinyG2.
  • Added support for Mac OS X Mavericks with working OpenCV.
  • Added run time dialog at end of program run (configurable option).
  • Added PAUSE state, tool-bar button and menu item, in pause state run time continues.
  • Added machine setting for Grbl, TinyG, or TinyG2.
  • Added machine setting for initialization script, useful to send setup commands after device connect detect.
  • Added machine run time status.
  • Added machine Auto Status request setting (mainly for Grbl not needed with TinyG(2)).
  • Consolidated Link and Machine setting panels (require a one time reconfiguration of port and baud when upgrading from old version).
  • Added jog settings to auto update from machine status.
  • Added jog settings to auto request update from machine after jog set operation that don't normally generate verbose information, like set to zero or set to job values.
  • Added jog custom button support for scripts.
  • Removed second set of XYZ coordinates and enlarge the reminding for ease of view at a distance.
  • Updated G-Code message dialog, it is now treated as entering PAUSE state (run time continues).
  • Fixed bug with missing variable "serialBaud" not found when changing settings while serial port was open.
  • Fixed bug with File->Open being enabled while RUN state was active.
  • Fixed multiple UI issues with Mac OS X
  • Moved decode of status string processing to program exec thread, this will help UI from becoming temporarily unresponsive.


  • Added support for TinyG.
    • TODO: Create dedicated class/interfaces for TinyG and grbl, including settings dialog, status window, etc.
  • Added support for Mac OS X, tested with TinyG and Grbl.
  • Improved serial communication with dedicated serial RX thread.
  • Improved serial exception handling.
  • Updated G-Code message dialog, now one can continue from dialog.
  • Added better acknowledge check for g-code commands.
  • Added finer Jogging controls for each axis.
  • Added link port, link baud, and percent of lines sent on status panel.


  • Program/repo name change gcs to gsat (g-code step and alignment tool) to port your old config file just rename from .gcs to .gsat while gsat is not running.


  • Added G-code message dialog (it is treated as break point, hit run after "ok" button)
  • Added try/catch block for open serial port.
  • Fix Save-As bug, document title was not updated.
  • Fix make sure strings sent to pySerial are ascii and not Unicode.


  • UI updates
    • Added Find and Goto Line controls to tool bar.
    • Added G-Code syntax highlighting.
    • Updated icons to more colorful versions.
    • Removed CLI panel, moved CLI into Jogging panel.
  • Separated code into modules, for better maintainability and preparing for plug-in support.


  • Initial Release
You can’t perform that action at this time.