Universal GCode Sender for Dummies?

I’m New to the X-Carve and Easel. I’ve used Easel enough to realize that I hate it, it feels like I’m working with MS Paint. I have other options for creating GCode, and I would prefer to send the G-Code to the X-Carve using Mach 3, but I’ve learned that I have to change out the GRBL in order to do that. I’m afraid to dive into that project until I’ve explored my other options. I keep reading about the Universal GCode Sender, and so I thought I would try that. Are there any tutorials out there to explain to a Dummy how to use it? I find Mach 3 to be very intuitive and easy to use, but UGS doesn’t seem user friendly at all. For example, If I just want to determine if my part is within the bounds of my workspace, how can I do that? I’ve searched for videos to go over the basics of UGS, but can’t find anything.


Here is the main link to the UGS web page:

Here is a link to a nice Youtube video showing how to use SketchUp, MakerCam, Universal Gcode Sender.

1 Like

AllenMassey, thank you. If you wanted to physically verify using UGS the boundaries of the part to make sure you stayed within the material and work space, do you know how you would do that?

make sure you use the 2.0 nightly build and not v1.08

2.0 works much better. had nothing but trouble with 1.08

as far as boundary of your work area, does your part fit within your x carve wasteboard? id think you would set up the part work space in whatever cad program you are using. UGS simply sends the gcode to the machine.
you can set soft and hard limits in grbl which will stop your machine from going to far but other than that im not understanding the question

UGS knows nothing about the machine or the part you are making, it is simply sending the gcode to the controller.

However Grbl (which is the code running on your Arduino controller) does know what you have told it about your machine and what the gcode is directing it to do.

If you home your machine and have enabled soft limits in Grbl, Then Grbl can prevent any gocode command from moving the spindle outside of the physical limits you set, or you can install limits switches and enable hard limits in Grbl to accomplish the same thing (basically if the spindle hits a limit switch Grbl stop all motion)

You can however use UGS to send configuration command to Grbl, for example sending $$ will cause Grbl to respond with it’s configuration settings.

The $20 parameter will enable or disable Soft limits, (Set to 0 or 1)

Soft limits is a safety feature to help prevent your machine from traveling too far and beyond the limits of travel, crashing or breaking something expensive. It works by knowing the maximum travel limits for each axis and where Grbl is in machine coordinates. Whenever a new G-code motion is sent to Grbl, it checks whether or not you accidentally have exceeded your machine space. If you do, Grbl will issue an immediate feed hold wherever it is, shutdown the spindle and coolant, and then set the system alarm indicating the problem. Machine position will be retained afterwards, since it’s not due to an immediate forced stop like hard limits.

NOTE: Soft limits requires homing to be enabled and accurate axis maximum travel settings, because Grbl needs to know where it is. $20=1 to enable, and $20=0 to disable.

The $21 parameter will enable or disable Hard limits, (Set to 0 or 1)

Hard limit work basically the same as soft limits, but use physical switches instead. Basically you wire up some switches (mechanical, magnetic, or optical) near the end of travel of each axes, or where ever you feel that there might be trouble if your program moves too far to where it shouldn’t. When the switch triggers, it will immediately halt all motion, shutdown the coolant and spindle (if connected), and go into alarm mode, which forces you to check your machine and reset everything.

To use hard limits with Grbl, the limit pins are held high with an internal pull-up resistor, so all you have to do is wire in a normally-open switch with the pin and ground and enable hard limits with $21=1. (Disable with $21=0.) We strongly advise taking electric interference prevention measures. If you want a limit for both ends of travel of one axes, just wire in two switches in parallel with the pin and ground, so if either one of them trips, it triggers the hard limit.

Keep in mind, that a hard limit event is considered to be critical event, where steppers immediately stop and will have likely have lost steps. Grbl doesn’t have any feedback on position, so it can’t guarantee it has any idea where it is. So, if a hard limit is triggered, Grbl will go into an infinite loop ALARM mode, giving you a chance to check your machine and forcing you to reset Grbl. Remember it’s a purely a safety feature.

1 Like

AllenMassey, Thank you for your detailed response. I have limit switches, but have yet to get them to work. I’ve tried setting them up in Easel, but for some reason the setup procedure doesn’t appear to do anything. I need to check out these soft limits. Are the soft limits all handled from within UGS? If I’m using UGS, am I also able to set up the limit switches within UGS? I need to go to that link you sent me and see what help I can find.

BadWolf, I have a CNC Plasma, and for that I use Mach 3 to control. With Mach 3 I can graphically see my tool path and the current tool position in Mach 3. i can “jog” the tool to the boundaries of the part, and make sure it’s going to fit on the material and make sure I don’t run into anything. It’s very simple and intuitive in mach 3, and was just looking for a similar capability in UGS. .

Where is the nightly build?

Here is a link to UGS 2.0 (nightly build)



The soft limits are configured through the parameters in Grbl

send $22=1 This enables soft limits
send $9 = 500 this sets the X soft limit to 500 mm
send $10 = 70 this sets the Y at 500 mm
send $11 = 110 .this sets the Z at 110 mm

Just remember that the only way the soft limits can work is if the machine is homed


Is it just me, or does it not save macros?

you have to hit “enter” after typing the macro

1 Like

I have never tries to send $ commands to the GRBL software through a gcode file, so I may be wrong but I really don’t think it would work. You need to use the command line to set parameters. There are not that many and you do not need to change then very often (if ever).

I use Chilipeppr with a Raspberry PI to run the serial port server. The Raspberry PI is unnecessary but I like having a separate unit running the machine. Chilipeppr is nice for jogging, zeroing and selectively running different ops. The first time setup is not perfectly intuitive but it is not hard.

Can you type a bunch of options like this into a file and then tell UGS to “run” it? It should just upload each line, one at a time, which (in theory) would simply cause Garble to set those parameters.

Don’t do this! UGS streams multiple commands at a time to GRBL, but if you try setting multiple EEPROM options at a time it usually corrupts the EEPROM. You do have options in UGS though.

In Settings -> Firmware Settings -> GRBL there is a table which might be simpler for updating settings.

Alternatively you can enable “single step mode” in Settings -> Sender Settings and only then stream your setting file as though it were a gcode file.

1 Like

Why do I always get NO Serial Port when I punch up Universal g code sender ?

It’s possible something else is grabbing the port. Do you have Easel or another software open that could be grabbing the port?

I have looked in the forum and google and the links to the UGS home page but I can’t find anything like a real UGS help guide at all. I am curious what are the following bits are for:

  1. Command Table (Tab)
  2. Pendant (Menu)
  3. Soft Reset (Button)
    I am using the Nightly build 2.0 Jan 24 2016 (which I think came from Allen Massey’s link above) with the original Arduino controller, on Windows 10, if this makes a difference.
1 Like

Hello everyone…newbie here. New to CNC too, having a blast so far but I’ve hit a snag and I’m looking for help from this awesome community.

I’m sure the solution is simple but to a newbie it seems incredibly difficult.

I’ve created a GCode file in F-engrave, homed my machine, uploaded the gcode, jogged to location and reset all my zeros. when i click run the z axis moves up about a millimeter and the command code in UGS says ALARM:2
[MSG:Reset to continue]

I have no idea what this means or how to fix it. I’ve searched forums with no results. I’d really appreciate some direction.

my issue has been resolved. i was going beyond the soft limits in the Z axis. simple stuff but hard for a newbie.

Hi Mike,

What program are you using to generate your G-Code? Have you tried using Easel’s g-code import functionality?