Keeping zero position

Hey Dave,

what exactly did you do? I’d really like to provide support, but I can not diagnose what happened without the positions, absolute positions and offsets before, a step-by-step description of what you exactly did or entered, and how the values are after your input.

The values in your error screen photo suggest that we didn’t or don’t have a situation like I described before or that you described, or that you entered something different, or you entered something else earlier that you forgt to mention(!). Numbers like 2989.63 mm are much too big and I cannot see any reason where you got such values from (except if you had units set to imperial and entered millimeters!)

I have tested all my suggestions on my controller and it worked perfectly.

Can you provide the details requested above?

1 Like

Hey Dave,

oh man, you really did! :slight_smile: You really entered 117.702 mm but you were in imperial mode. I just tried to reproduce your numbers. That exactly gave me “X axis position 2989.63mm is greater than maximum soft limit”, exactly as in your screen photo. Okay, it’s clear that cannot work, if you mix up units modes :frowning:

G20, G21 (Units mode)

G20 ; Set imperial units mode, use inches for length units.
G21 ; Set metric units mode, use millimeters for length units.

Okay, with making sure to stay with one unit system during one operation, everything should work.

1 Like

Agreed about homing, although if you manually home, you can get your machine’s absolute zero pretty reliably in the same spot in order to maximize the workable area (i.e., the soft limits).

I could maybe see squeezing a corner alignment jig onto a QCW/rolling-folding and having something set up to give you a gnat’s butt accurate/repeatable workplace zero that is therefore inside the soft limit area (based on the above repeatable/accurate absolute zero).

As you (and @Aiph5u) mentioned, for a smaller project well within the soft limit area defined by the absolute x,y zero, it would be enough to just (re-) define the workpiece zero when the workpiece is re-mounted, or alternatively continue on using the offsets mentioned in Aiph5u’s “Resetting after a power…” post.

1 Like

I will suggest this method of keeping track of your origin.
I am now in the middle of a 3 day carve. ( not 3 days long but i am splitting up a 4 hour program over 3 days since I only get an hour or so a night to work on it. )
I do not leave the controller on. It is shut off. And I do not worry about keeping the axis in the position I left off at.

Start by clamping a block on your table that can be permanent, for the duration of your job, and away from your work. I have a notch cut out of the front left corner of the wasteboard that is for this purpose.
Use your tool setter block to find the front left corner of that block. Make that the origin for now.
Write down the numbers circled in the pic below:
Then find your origin on your actual workpiece and make that your origin in the usual way.
Write down those numbers as circled in the pic below:
Now use paper and pencil or Notepad as I did to organize those numbers and subtract the first set from the second set as done below:
“ORIGIN OF WORK:” is the origin of the actual workpiece I am working on.
“FAR FRONT LEFT CORNER:” is the origin of the cutout on my waste board. This would be the permanent block you clamp somewhere. This number will be different every time I start the machine and home it. Only by .010 to .020 but enough that it would ruin my work. This is why I do not just use the offsets from the home position.

Then start your job in the usual way and stop it when you want and shut every thing down. Move the axis if you want - it doesn’t matter.

Then when I come back to start the job again be it a day or a week later - I start my machine and home it.
Then I find the front left corner of that permanent block I still have clamped to the table and make that the origin temporarily.
Don’t write down any numbers now - it is not needed.
Go the the MDI and type in the X and Y distance to move I calculated before:
I leave the the Z out of it for now because rapiding on X Y and Z at the same time is dangerous if anything is in the way. Leave the spindle up high. ← I stress again PUT YOUR SPINDLE UP HIGH BEFORE YOU PRESS PLAY! ( Don’t ask me how I know this is so important)

Press play on the MDI and go to the new offset position. Make that new place the X and Y origin.
Then move the spindle to a safe place and press the Z0 button on the controller to take it down to the Z0 of that permanent block.
Then type in the MDI again G0 G90 Z.651 ← this is the number I computed earlier.
Set that new place as the new Z0.

That’s it. ( it takes longer to explain it than to do it )
You are now back to your original origin.
If you take the time to setup this separate block and record these numbers before you start a big or expensive job you will not have to worry about finding your origin after a power failure either.

You will also note I wrote down “Roughed to .980 above Z0”
That is so I can stop a 4 hour program, go into it latter and edit it to start right where I left off. That is a discussion for another day.


A vey good explanation using offsets to re establish a work offset or zero point to resume a program. If this is something that is a very common operation I would suggest looking into implementing proximity sensors for homing from stall homing, I have been able to repeatability home +/- .02mm using them (possibly more precise than this but my measuring instrument only shows .02mm graduations). Then I can apply the offset without the extra step of probing a previously fixed position.

Also I had decent success boring a .250 hole somewhere that could become my base point on my fixtures and jigs vs having a fixed block to work from. This was precise enough for reuse of a program to create a part over and over at different time. I affix the fixture somewhere on the waste board, align to the .250" hole in the fixture, insert stock, hit go.


Hey Chris,

in fact you do the same as what @JDog does as mentioned above, which means to circumvent the unreliable stall homing by using the touch probe on a corner that is fixed on machine bed, thereby reducing the use of the touch probe to once per bootup period, and to achieve practically perfect repeatibility. Great!

But I agree to Derek @WaywardWoodworker that with retrofitted inductive proximity sensors you would not even need this probing once, but just entering any value you like and it would be perfectly reliable.

As you can see on the datasheet of a typical inductive proximity sensor (Omron E2B), the moment when it is triggered is very predictable and therefore brings accurate homing repeatability.

Source: Omron E2B Inductive Cylindrical Proximity Sensor Datasheet

Hi Derek and Aiph5u,

I agree sensors are better than stall homing for this but I am trying to show how anybody with a stock Onefinity machine with no mods can get very accurate reliable results and does not have to leave the machine on to pickup where they left off. It just takes an extra 5 minutes before a carve to clamp any block of wood down somewhere to find a temporary origin on and record the numbers.

Also a question that comes up a lot is if someone has to change a tool but the Z0 surface they used is gone - what do they do?
Just find the origin of that permanent block as I call it but on Z only. Then again in the MDI type the offset difference number you calculated for Z earlier. Go to that new place then make that the Z0 on the controller. Your back in business.

I guess I just want to stress that it is important to think and prepare for things like power failures and is possible to recover from if you make a plan before you start a carve.

1 Like

Hey Chris,

yes, I agree, absolutely. That’s why I wrote this and this to help people to understand what the values on the control page mean and how you can enter them to (re-)create a certain machine state.

By the way, I found out here the other day that the offset values are not lost after a power outage or a machine shutdown. I found that they are recorded in the bbctrl log file and this file is still there after reboots or power outages, in fact it lives as long as the logrotate configuration lets them live, which is rather long.

Understood and I agree 100%. This process will be different for Onefinity Elite owners with the Masso controller and will start to highlight the differences and benefits.

1 Like

think we are overcomplicating a simple procedure. This is all that is needed.

This relies on the level of precision of the stall homing sequence, which in my testing could be +/- .2mm, and can be further impacted by dust build up on the rails and ballscrews. This might be good enough for many operations or might leave a noticeable line in a 3d carve. I implemented inductive proximity sensors for homing switches to mitigate these issues and I use the method you describe. I now run an aftermarket controller which allows me to have auto squaring, saved positions and macros.

I agree on over complicating. When I think I may need to re-acquire xyz, I don’t use the stock. I either model a 123 block and put my CAM xyz on a corner of it. Or, and much more usually, I don’t model it and manually set xyz based on the corner I probe.

This takes my homing accuracy out of the equation. It takes needing to preserve the top height out of the equation (when z is on the stock surface.) It all comes in to re-probing accuracy and the dimensions of my 123 block. It even lets me take the stock off the cnc to let epoxy cure.

A visual is much easier to explain. I’m on the couch watching tv with the Fam so no picture of a setup. Maybe tomorrow.

So I was experimenting again tonight. I’m not sure why but the machine was switching from metric to imperial during the carve. I did find that if it had switched to imperial without me noticing I couldn’t use the g0 code to move to my zero point. If I rehomed, it re-set to metric then I was able to make it move.
Unfortunately, another issue cropped up. I was finally able to get the machine to move with the g0 code but it wouldn’t go back to my 0,0 point. Below are pics of the x0,y0 that I set, then rehomed, the used MDI to go to the x,y that I had from the start. The problem is that it wouldn’t go to the correct home. The coordinates were correct on the screen but the true home (as in the home on my work piece) was 4mm away in both directions. I thought it might be a fluke so I tried again and same result.[
Full disclosure, I had to go back to 1.09 this weekend because my laser stopped working correctly with 1.2 update. I’m not sure if this would have happened with the updated firmware.
I am working on a job right now that will take about a week. Once it is done, I am going to update the firmware again. I’ll try the rehoming thing just to see if it works better this time. I may have to also work with 1F to figure out why the laser fouled up.

Hey Dave,

just by the photos, I can not follow what you did and therefore can not tell what the problem or the solution is. Also your description is not easily understandable. Could you please provide a step-by-step description of what you did (with numbers and actions you did) and what happened as a result, step by step. I need to be able to reproduce it here.

Can you also first say what the exact intention is of what you wanted to achieve.

But I got to go now, I will be back somewhen around 20:00 CET.

After turning on the machine and homing it, I find x0,y0 on my work piece(bottom left corner). I save those coordinates and rehome it(as if there was a power outage and I had to restart the machine). I enter the coordinates I saved in the midi tab using the g0 command. Assuming it didn’t switch over to imperial without me noticing, the machine will move the bit to the coordinates I just put in but they are not at the corner of my workpiece where I set them. I then move the bit back to the actual x0,yo (the corner of the workpiece in this case) and find that the machine made an error of 3-4mm. In other words, after all that it puts the bit in a spot that is 3-4mm off from the actual xo,yo that I set in the beginning.
Does that make more sense?

Good afternoon Dave,

How exactly are you doing this?

Answering yes when it asks if I want to home. On startup

Hey Dave,

Sorry, what I meant was: How exactly are you doing this?

It appears you are homing and then using the MDI to type in the offsets you took a picture of when you first setup your work. ( Correct me if that is not what you are doing )

Homing the machine does not put it back to the same exact place all the time. 3-4mm seems more than i would have expected - i have seen 1-2mm on my machine. In other words every time I home it could be 1-2mm off of where it was when i homed when I setup my work. For you it may be 3-4mm it depends on several factors on your machine. That is why I use a secondary block to reference my work to - not home - as I described several posts above.
I would only do that more involved type of setup when there is no more corner to use on the part.

I assume the same as everyone else. I secure the piece, put in an end mill bit and bring it to the edge. Hit home for x and y then use the paper method for z. I have a spindle and didn’t understand how to alter my equipment to use the touchprobe so I sold it. This method has worked quite well for me with the 1F and for the last 2 years with the Laguna CNC at my community woodshop.