Additional Features

This page covers all the advanced features of gSender such as shortcuts, macros, workspaces, calibration tools, controlling spindles, lasers, coolant, and more. Remember, you can always quickly navigate the page by clicking the headings in the ‘Page Contents’.


Starting off as a more advanced gSender user, the first feature you’ll want to leverage is shortcuts. These can be assigned to keys, key combinations, or joystick movements to perform actions that would normally require you press a button in the software itself.

Going to the settings gear, then the ‘Shortcuts’ section, you’ll see that shortcuts can come in the form of ‘Keyboard Shortcuts’ or ‘Joystick Shortcuts’. Both options enable you to set up, modify, and enable or disable shortcuts. These will be automatically saved when you close the dialog box and will remain on gSender as long as the program is installed on your computer. Updates to the program should not affect this.

Keyboard Shortcuts

Either for use on a keyboard, macro pad, or mini Bluetooth keyboard, these are split up into categories so they’re easy to locate and modify. There are shortcuts for carving, overrides, jogging, zero setting, probing, window navigation, and more!

Joystick Shortcuts

For use with a joystick, or gamepad / controller such as Xbox and PlayStation controllers. To start, connect your joystick to your computer and create a new profile using the ‘Add New Joystick Profile’ button. This profile will allow for shortcut assignment in a very similar manner as keyboard shortcuts, while also remembering your particular joystick. This will enable you to set up multiple profiles if desired. You will be prompted with further instructions on gSender on how to set it up.

Lightweight Mode

This mode enables gSender to run faster on computers that are less powerful and prone to lagging. ‘Lightweight Mode’ reduces the memory gSender uses by turning off processor-heavy aspects of the visualizer, from reducing detail to disabling it altogether. You can toggle it on or off using the slider positioned at the top right of the visualizer

If you go to the visualizer settings, you can also customize what features are active in both ‘Regular’ and ‘Lightweight’ modes.

Coolant Control / IOT Relay

If you have a coolant control pin on your CNC machine, gSender has a tab for manually controlling it. Under the ‘Coolant’ tab on the main screen, you can find the ‘Mist’ and ‘Flood’ buttons to activate the different modes of coolant use, as well as an indicator for whether the coolant function is active or inactive. This indicator also functions during job sending. You can turn off both coolant pins by pressing the ‘Off’ button.

Many hobby CNCers don’t have a need for coolant and so prefer to use these outputs for controlling other periphery. The most common is an IOT relay that can be used to automatically control a vacuum for dust collection, the CNC’s router, LED lighting, and more. See an example of how to set that up here: https://resources.sienci.com/view/lm-iot-relay/

Spindle / Laser Control

Similar to the manual coolant control, this area is for manual control of a spindle or laser outside of g-code sending. If you have a spindle or laser, you can activate these controls by going to the settings gear at the far right. In the ‘General’ section, press the toggle for ‘Spindle/Laser’.

Back at the main screen, you’ll see the ‘Spindle/Laser’ tab at the bottom right. Here you can click to toggle between ‘Spindle Mode’ and ‘Laser Mode’, changing your GRBL settings for you and displaying buttons specific to each device. For each mode there is also a red caution circle that indicates whether the spindle or laser is active. This works during manual control but also during job sending.

In spindle mode you can set the spindle speed with a slider, spin it up in either direction, and stop it again with the ‘Stop’ button. These are all based off g-code commands that can also be entered into the console manually if desired. The speed slider is set from your GRBL firmware settings, so max and min speed can be altered in the Firmware Tool.

‘Laser Mode’ is very similar, allowing for On/Off control, a slider for setting the laser power during manual control, and a ‘Laser Test’ button. The laser testing function is handy when troubleshooting your laser setup or for other sorts of locating and alignment because it only enables the laser for a short time before turning it back off again. Though this is much safer than regular on/off control, we still highly advise that you have you have a hand on a kill switch or e-stop during testing or control of either Laser or Spindle modes so that in case something goes wrong with your computer or the program they can still be safely deactivated.


Macros are standalone buttons within the gSender interface that allow you to execute a series of g-code commands when they’re run. Macros can come in handy for a variety of uses:

  • Button to run a v-carve or laser engraving of a common insignia into the back of your wood pieces
  • Perform a specialized probing function for a particular jig you’ve set up
  • Apply a pre-determined offset that allows you to easily array your cutting jobs

You can create macros using the ‘+’ button under the ‘Macros’ tab. Here you’ll see a space for inputting your custom g-code and adding a name and description for the macro. Advanced users may also want to leverage ‘Macro Variables’ which allow for greater g-code manipulation and pseudo-programming. Press ‘Add New Macro’ when completed.

New macros will appear as buttons in the ‘Macro’ tab that can be rearranged by dragging them around. These buttons will display the macro name, show the description if you hover your mouse over them, and can always be later altered or deleted by clicking on their ‘…’ button.

Any macro can be executed by pressing it. Before pressing it, a play icon will appear to show that you can select it. Once running, you should see the macro start to pulse green while a toast notification on the bottom left hand side of gSender also notifies you that it’s running.

Macros can also be executed using shortcuts. Every time you create a new macro it’ll become available at the bottom of the shortcuts list for you to assign a key or joystick button to. Add your keybindings and enable them by pressing the slider beside the label.

You can share macros with other users or transfer them between computers by using the import and export features. To import one or multiple macros, just press the button with the downward arrow and a browsing window will appear so that you can select the macros you wish to import. Similarly, to export all your current macros, press the button with the upward arrow and it’ll generate a save file for you.


The console is a tab that you can access at the bottom right hand side of the gSender window. The text here shows a truer representation of the communication that happens between your computer and your CNC. As you start to understand more about your machine, this is a great tab to reference so you can see if commands are being properly sent, received, and executed. It’s also great for troubleshooting since you can:

  • Manually send g-code commands to your CNC
  • Check for errors or alarms and the g-code that caused them (normally the line that comes before)
  • Copy text straight from the console to send in an email for help

When you first start up gSender, the console will display EEPROM settings that are sent from the Arduino in the control box. These EEPROM settings control parameters for your CNC such as:

  • Maximum speed and acceleration in each axis
  • Boundaries of the work area
  • Direction of each axis movement
  • Limit switch settings

To access EEPROM settings again, enter in “$$” into the console and hit the ‘Enter’ key or click the ‘Run’ button. These settings can be changed via the console as well as the Firmware Tool which we’ve designed as a much more visual way to alter machine settings.

Calibrate Tool

The ‘Calibration Tool’ on gSender enables you to make finer adjustments to your machine for improved performance. There are three processes available on gSender:

  • XY Squaring
  • Movement Tuning
  • Surfacing Wasteboard

XY Squaring

When mounting your LongMill on the table, there is a basic squaring process illustrated in our instructions (https://resources.sienci.com/view/lm-table-mounting/). If you do find that the machine is not perfectly square, you can follow the steps in this process to fine tune the position of your rails.

When you access the ‘Calibration Tool’ window, the ‘XY Squaring’ procedure is shown on the first tab. All instructions are illustrated in the window, however a brief overview will be provided.

You will need the following:

  • Ruler or measuring tape
  • Tapered bit or V-bit
  • Tape
  1. Jog the machine to the front left corner, with the bit raised slightly over the surface of your wasteboard.
  2. Mark the points with tape and move the machine as directed
  3. Measure the distance between the marked points and record the values
  4. Adjust your rail positions with the values determined by the XY Squaring procedure

The great advantage to this tool is it save you having to do the trigonometry yourself and will also let you know if your machine is aligned closely enough that it’s not worth worrying about.

Movement Tuning

You are able to change how much your motors turn to improve the accuracy of your machine movement. This is done through modifying the EEPROM settings that are stored on your LongMill, which this process will guide you through. You can tune the X, Y and Z axes individually.  All instructions are illustrated in the ‘Calibration Tool’, however a brief overview will be provided.

You will need:

  • Marker or tape
  • Measuring tape
  1. Jog your machine to the middle of whichever axes you choose to tune, so that there is enough room to complete this procedure. For example, on the X-axis you would jog halfway on the X-axis rail.
  2. Select what axis to tune on the drop down menu.
  3. Mark down the location of your reference on the machine. For example the X-axis tuning references the edge of the XZ gantry on the X rail.
  4. Move the axis a chosen distance.
  5. Measure the travel distance between the marked location and the reference edge.
  6. Change the EEPROM setting as recommended by the procedure by pressing ‘Set EEPROM setting’.
  7. Repeat the procedure for each axis you wish to tune.


Surfacing the wasteboard of your machine can easily be done through gSender. You can find the ‘Surfacing’ procedure on the main screen or in the ‘Calibration Tool’ window.  All instructions are illustrated in the window, however a brief overview will be provided.

  1. Zero your machine on the back left corner of your machine.
  2. Open the ‘Surfacing’ window.
  3. Input the dimensions and settings for your setup. Make sure you have the right bit for this operation, as we recommend using a surfacing bit or a large flat end mill.
  4. Press ‘Generate G-code’ and check your surfacing toolpath using the Visualizer Preview and G-code Viewer.
  5. Press ‘Run on Main Visualizer’ to bring the g-code into gSender’s main screen, and start the job when ready.

Firmware Tool

Firmware is pre-installed into each Arduino on the Longboard, along with the custom EEPROM settings, so typically users do not need to access the ‘Firmware’ tool at the top of the screen. However, if necessary, the ‘Firmware’ tool can be utilized to restore everything to factory settings or make other machine alterations. Once you press ‘Firmware’ a dialog box will open, showing the EEPROM settings that are on the Arduino.

  • ‘Flash GRBL’ will reset your firmware back to its default configuration
  • To import new EEPROM settings from a file, press ‘Import Settings’
  • To export the current EEPROM settings, press ‘Export Settings’
  • ‘Restore Defaults’ will bring back your machine defaults in case they’ve somehow been altered or wiped

Start/Stop G-code

These sections can be used to automatically apply g-code to the beginning and end of your cutting job. For example, if you wanted an IOT relay to turn on your router and vacuum for any job you run, and then turn them back off at the end of the job.

On gSender you can find ‘Start/Stop G-code’ in the settings. Type in the g-code commands you wish to run at the start and end of each job or use the optional variable for more advanced control. Press ‘Update Start Event’ and ‘Update Stop Event’ for these commands to be applied.

You can also toggle these on and off if you don’t want them run for specific jobs. The ‘Stop’ event will also run if you stop a job prematurely, ensuring that any closing g-code is still executed.

Tool Changing

For CNC machines, tool changes are pauses that are programmed in the g-code for a user to switch out the cutting tool for a different one, thus allowing for multiple toolpaths (cutting operations) within one g-code file. The g-code for tool changing is an M6 command, in which the program will pause until the user tells it to continue, usually through a ‘Resume’ and/or ‘Confirm Tool Change’ button on the machine interface program. On gSender, you can program what happens when there is M6 in your g-code.

In settings, go to the ‘Tool Change’ section. You can choose what to do with the M6 command by selecting one of the following options:

  • Ignore – gSender will continue to run the job as normal, without stopping for the command
  • Pause – gSender will stop until you press ‘Confirm Tool Change’
  • Code – gSender will run the g-code you have inputted for the tool change, both before and after the M6 command, and will stop in between until you press ‘Confirm Tool Change’

Injecting Code

When using the ‘Code’ option in the Tool Change menu, you can input your own g-code so that your machine can perform a successful tool change for your given setup. The situation leads up as the CNC is running a carving job and then encounters an M6 g-code where:

  1. The code in the pre-hook will be run immediately
  2. A dialogue box will appear allowing for a chance to change the tool or confirm it’s been changed successfully
  3. The code in the post hook will be run, followed directly by a continuation of the cutting job

Though we have yet to test tool changing practices thoroughly, a general tool change procedure is suggested below:

  1. Pre-Hook G-code
    • Raise the bit in the Z-axis so it doesn’t drag across the material surface
    • Power off your router or vacuum if you have an automated system set up
    • Move the router to a pre-determined position for tool changing, either relative to your project or using machine coordinates
  2. Turn off your router and change out your cutting tool for your next one
  3. Press ‘Confirm Tool Change’
  4. Post-Hook G-code
    • Move your router to a location on your material or wasteboard that’s uncut to be used for probing or to the location of your tool length sensor. You’ll want to ensure the tool is close enough or has a far enough probing error-out so that you don’t get a failed probe
    • Probe using a sensor or touch plate to set the zero position in the Z-axis of your new tool
    • Raise the bit in the Z-axis so the bit does not drag across surface
    • Input a break command (M0) so you can power the router and/or vacuum back on manually if you don’t have an automated system set up. Otherwise, use the appropriate g-code commands


Usually you would only have one origin or zero position for your project, therefore gSender will only save one zero. However, if you plan to do a series of projects that require different zero positions, or are lining up to do some more complex jigging or part batches, you may want to set up multiple zero positions all at once. You can do this by creating up to six different zero positions with the six workspaces in gSender. Access each ‘Workspace’ at the top right of the program by pressing the drop down to select which workspace to use. gSender will act completely in-line with whatever workspace you’ve selected, whether you want to set zero, probe, surface, or anything else.


Check out this livestream if you’d like to see a super deep dive on gSender and all of it’s features as of 0.6.9. Chris spends a lot of time answering questions live about gSender and how to set up for a project: