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’.

Safe Height

In gSender’s general settings you’ll see a space to fill out a ‘safe height’ value. This value is used specifically when using the ‘goto’ buttons in gSender to manually move your machine around and so is independent from a safe height you might define in your CAM software.

If you have ‘homing’ enabled a value of 5mm will make the CNC move to 5mm offset from the max Z-axis travel, make the goto movement, and then return back to where the bit started, whereas if homing is disabled it will move 5mm upwards from the current position and then move 5mm back down at the end. This flip in behaviour is because ideal safe height movements should be as high up as possible to avoid bit collision which is only possible with a homed machine, otherwise safe height movements need to be kept to a minimum to avoid situations where gotos are used on taller material and the Z-axis moves past its maximum point.


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.

If you’re running into difficulty with getting a particular joystick set up in gSender consider searching for documentation provided by the manufacturer. Some joysticks will require additional drivers to be downloaded to your computer to enable it to read the signals that the joystick sends out.

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 ‘Spindle/Laser’ section in the left toolbar, 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 on 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 predetermined 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.

For more in-depth reading about the Macro Variables available feel free to check out the code supported by the library we use (https://esprima.org/) and some of their documentation available here: https://docs.esprima.org/en/latest/syntactic-analysis.html. An example of more advanced variable usage could be using JS Math functions to perform trigonometry on-the-fly in an intricate probing cycle, see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math. Another example is using ternary expressions to choose between two outcomes (e.g. %value=(30 > 20) ? 10 : 20 and then printing or using that value later on ([value]) or G0 X[value]).


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 by clicking the icon beside the “Run” button

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 saves 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’
    gsender surfacing tool dialogue box
  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.

  • To choose your machine profile, select your machine name from the drop down menu.
  • ‘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

Machine Profiles

Currently, LongMills ship with LongMill MK2 30×30 firmware pre-installed. If you have a 12×30 or 48×30 MK2, a LongMill MK1, or a machine from a different vendor, you need to change your machine profile. Open the firmware tool at the top right of the main screen and beside the word “Profile’, select your machine from the dropdown menu. Please Note: If your Z-axis is working in the opposite direction than expected, confirm you have the correct profile. MK2 users must choose either LongMill MK2 12×30, LongMill MK2 30×30, or LongMill MK2 48×30. You can find instructions on how to flash firmware here: https://resources.sienci.com/view/lmk2-grbl-firmware/

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 any job you run and turn them off at the end then you’d simply use the M8 and M9 commands pictured.

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
  • Manual – 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 predetermined 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.

Transferring Settings

gSender’s settings are stored on a file on whatever computer is used to run it. This mostly includes everything that you’ll find in the settings menu such as units, machine preset, probe, tools, jogging presets, keymapping, tool change g-code, start/stop g-code, and more. If you plan on using a different computer to run your CNC using gSender or want to run gSender remotely, some of these settings might be very important to carry over to the alternate computer to make sure things keep running as expected.

To transfer your settings over:

    1. Begin by opening gSender, going to the settings gear in the top-right corner, and clicking the ‘Export Settings’ button in the ‘General’ tab
  1.  Save the file somewhere onto your computer that you can find afterwards
  2. Outside of gSender, find the file and transfer it using a memory stick or sending it over the internet by emailing to yourself or using Google Drive or OneDrive.
  3. Once you’ve got the file onto the other computer it’s now easy enough to open gSender on that computer, or in the web browser if you’re doing remote control, and go to the settings and click the ‘Import Settings’ button in the ‘General’ tab.
  4. Locate the file and click ‘Open’
  5. You’ll get a warning. Click ‘Import Settings’ if you want to continue. Once you do, gSender will disconnect and you’ll need to reconnect the machine to resume operation but the settings should now be brought over.

About Page

You can find the latest release notes for all versions of gSender and gSender Edge in the “About” section of the settings.


Check out this livestream if you’d like to see a super deep dive on gSender and all of its 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: