Questions about CM4 / GRBL 1.1 and the Homing Process

Greetings All,

I have an S3-XL machine that’s just about one year old and I’m currently using Carbide Create for programming and Carbide Motion V3.0.366 for machine operation. All is running great with my S3 and I’ve made many parts, however jogging is jumpy and the X-Y motion is also jumpy while machining radii at higher feed rates. To compensate, I slow down the feed rate to keep radii smooth, but this sometimes causes problems with overheating of plastic materials.

I’m considering upgrading to CM4 and GRBL 1.1 because as I understand it the X-Y motion is more fluid with this version. This S3 is my first exposure to running a CNC and I’m in the dark when it comes GRBL and machine controllers. I don’t know what version of GRBL is running and I’m not even sure how to check, but I assume it is V0.9. I’ve visited the webpage that explains the upgrade process and it all seems straight forward so no issues there.

The main reason for this post is that I’m confused about homing and I want to make sure that I’m not giving up anything in the way that I work if I make the upgrade. To explain, my normal method of setting up a job is to jog the spindle to a known datum point on the workpiece and then zero X, Y, and Z. From there I run my NC program to machine the part. If I’m making multiples of the same part, the last step in my NC program is one that moves the spindle back out of the way so that I can remove a finished part from the fixture and replace it with a new workpiece.

My main concern is this: I’ve seen comments regarding homing and it sounds like this may be an automatic part of the machine operation when running CM4 / GRBL1.1.

  • Is this a routine that occurs only when the machine is initially turned on, or does the spindle return to “home” (back-right corner) after every program cycle? I am hoping this is not the case.

  • Can homing be disabled?

  • What is the relationship between the “home” position the XYZ datum point of the workpiece? Do I need to take the the “home” position into consideration when programming within Carbide Create or is it not a factor?

  • I assume that the “home” position and the workpiece’s zero datum are not one in the same. Can the XYZ zero point still be set anywhere within the working range of the machine?

I’m guessing that the answers to these questions are probably obvious to experienced users, but I’m just a bit confused by the entire homing process. Any help to explain would be greatly appreciated.


  • Dan

Do you already have homing switches installed? If not I believe they are required for Grbl 1.1 and CM4. Homing and setting zero are two different things. Homing tells the machine where it’s at “Machine Position”, zero is whatever you set it to be and stays persistent until you tell it otherwise. Homing only “has to” happen when you turn on your machine/connect to CM, me personally I re-home between each program just to make sure I end up at the same zero before I run the next program (in case steps were lost, belt slipped, etc.).

Example of why homing is important, to me at least:

Home machine, move cutter to zero of my cut, set zero, run part.
Program runs, remove part.
Now say I decide to go inside, eat inner, watch some Netflix, turn machine off. I go back out to the shop a couple hours later, move my machine by hand to change a bit, or whatever reason.
Now I want to run another of the same part, I turn the machine back on, connect to CM. If I now move back to zero, without homing, does it move back to the same place? Not likely unless I moved it back by hand to “exactly” the same place that it went before I shut it down.

With homing I home the machine, then jog it back to zero and it goes to exactly the same place, even if it’s shut down for a week and I’ve moved it all over by hand.

For me I use some dedicated fixtures for work holding, so my zero is usually in the same place, regardless of what I’m cutting. So being able to home, then return to that hard X/Y is critical for using my fixtures.

I can’t say I’ve noticed a difference in running actual programs with CM4/Grbl 1.1, versus running CM3 and Grbl 0.9 as far as smoothness (someone else may be able to answer that better). However jogging is much smoother, and the feed over rides are really nice!



For homing, please see: — to answer your questions:

  • homing happens each time one turns on the machine, and then can be re-done as needed (but will need to be re-done after each time the machine is powered down)

  • yes, but not when using CM4 — you could temporarily switch to another comm/control program, turn it off, use the other app, then re-enable

  • the machine origin is where it is defined by homing, home is where one defines it to be, and what is used until it is changed — the above link explains it more clearly — if there’s anything which you don’t find to be clear after reading through that, let us know and we’ll do our best.

The advanced motion planner may help a bit, but smoother toolpaths (using a tool such as MakerCAM which generates G2/G3 arcs rather than many line segments may help more.

First thing to try though would be a single flute endmill and a spindle which can go slower — if you’re using a Dewalt, the Makita would be an obvious thing to try.

1 Like

It will not change when you upgrade. If anything homing with the upgrade is not a naturally occurring thing except when machine is first turned on.
I found myself missing the rapid home button from CM v.3 but $H in MDI window of version 4 ( v.3 also) will perform the homing sequence.
G/L Ray


Be aware that CM4 (maybe earlier, but I think only v4+) has several un-commanded movements and homing cycles that it will lay down on top of whatever gcode you use. If you stop a cut mid-job, it will rehome. You must home prior to starting work (if homing is enabled in grbl, I believe) and when a job completes, the machine will flee to the back left of the table - presumably by a distance determined by the work area size defined in grbl, but who knows.

1 Like

Thank you all for the clarifications. My machine did come with limit switches so I should be good to go on the hardware side.

It sounds like one thing I will be giving up is the ability to pull the spindle (with the power off) to the desired zero location, then power up the S3. From this point I would make any fine adjustments necessary and zero all three axis. This is a quick shortcut that I’m accustomed to doing to speed up the setup. From what I gather, its not possible to do this with CM4/GRBL1.1 since the machine wil move to the home position at startup.

I do see the benefit of being able to return to return to the “workpiece zero” in the event that the machine losses power, GRBL locks up, etc. I still have a few questions:

  • Is the homing process accurate to within the minimum step increments of CM (.001" or .01mm)?

  • Once the workpiece zero datum has been established, does the GRBL or CM remember the last XYZ values in the event of a power down, or do I need to write down the workpiece coordinates relative to the home position in order to return to the workpiece zero position?

  • What significant improvements where made in CM4 as compared to CM3?

Sorry for so many questions. I know these could all be answered if I would simply jump in the water and make the upgrade, however after reading through the other thread it sounded like a number of people were having issues, and that reverting back to the old firmware can be tricky, so I just want to make sure that this is something I want to do before committing to it.


Correct, you’ll have to rehome when you first connect CM to the machine following power-up.

Great question. I’ve found it to be “pretty” accurate. For example, I’ve lost jobs mid-run and restarted them, with the only artifacts being a small (.003"?) ridge between the previous completed passes and the new ones. Might just be my setup, as I believe the expectation is near-perfect repeatability from the home coordinate.

I think the interface is nicer. The big reason a lot of people (myself included) went to CM4 was for grbl 1.1 support, which added on-the-fly feedrate changes

Keep in mind too that CM is just a (nice) g-code sender, and there are many other FOS (Free, open-source) apps that can send gcode to a grbl (the motion controller that drives the S3).