Machine & Work Positions not at 0 (ZERO)

This may be the wrong category for this. If so, my apologies and feel free to move it.

Every time I use the HOME button in the Machine tab the
Machine Inspector tab gives these coordinates:

Machine Position
X: -789.000
Y: -789.000
Z: -1.000
Work Position
X: -860.120
Y: -590.880
Z: 70.967
I don’t understand why the numbers would not be 0,0,0 at both the
Machine and Work positions!!

Yes, I do.

Sorry, I haven’t even figured out what soft limits are yet. Haven’t looked at UGS yet either.

Machine Zero in grbl is established when you turn on your machine. As grbl doesn’t know the physical location of your spindle and it doesn’t have any idea where to establish Machine Zero, what it does is set Machine Zero at the physical location of the spindle when grbl initializes.

Many people use homing which alters Machine Zero to the location at the end of the homing cycle. At this point the software is at Machine Zero and the spindle is at a known location. The homing process synchronizes the software (grbl) to the physical location determined by the homing cycle

At this point, Work Zero is unknown. Although, the last Work Zero that you used will most likely be reported in the display.

Personally, I prefer to work with positive co-ordinates. It’s just more natural to me and if you want to work that way I can generate a version of the firmware that will do that for you as well.

Do you know how to update the firmware on the Arduino (X-controller)?

I would prefer to work with positive numbers. I assume you mean that when you home the machine it would say 0,0,0. Then when the router is moved the numbers would go up; just seems more natural. But, no I have no idea how to update the firmware of the X-Controller.

1 Like

I think that would clear up a lot confusion Phil. With the amount of time and input that you share with this forum, I would think that the folks at Inventables would at the very least make you an honorary moderator or SME. I would definitely throw some bucks in a tip jar in appreciation. Thanks for your help!


I just checked out the Easel function for loading grbl into the Arduino/X-controller and they don’t allow you to select the .hex file you want to use, only loads in the .hex files they allow you to use so you would have to use a third party program to load in a version more suited to the way you want to work.

Many people use Xloader. Here is the version I use. (646.7 KB)

Here is a screen shot of the Xloader interface:

You would select the Uno(ATmega328) as the device, 115200 as the baud rate, the COM port where your X-controller is attached, and the .hex file name in the Hex file slot. Then press Upload.

Which version of grbl do you want?

1 Like

I sent you one, did you not get it?

Look in your private messages.

1 Like

LOL! Larry, I don’t think you understand just how new I am at this! I don’t even know what grbl is! Sorry, I’m not trying to be obtuse; I just have absolutely no experience with this!

Stupid spellchecker!

That’s Ok, every one of us was where you are at one point.

grbl is the firmware that runs inside the X-controller to accept G-code and convert it into machine movements. It’s basically the brains of the X-carve.

1 Like

So how can I tell you what version I have or want?

Go into Easel to Machine->Advanced->Machine Inspector at the top left of that screen it tells you the firmware version and the Easel version you are using.

Firmware version should be something like 0.9j or 1.0c.

Thank you, Larry, I will check it out tomorrow and let you know.

1 Like

I’m going to jump ahead and assume (bad, bad, bad) that you are running version 1.0c. Most of the X-controllers I’ve dealt with have 1.0c, so I’m uploading a 1.0c that homes to positive space.

One other change that is required is to disable Parking.

Parking is a function that is associated with the Safety Door function. When Safety Door is enabled the Feed Hold (Pause) functionality is modified to do the Feed Hold and then turn off the spindle and “park” it. This just means that it moves it out of the way. Then when you do the Cycle Start (Resume) the spindle is restarted and moves back to the work piece.

With the positive space setup, Parking is not supported. However, the spindle on/off functionality is still present when the Safety Door signal is tripped.

grbl_1_0_c_20161011_Positive.hex (79.9 KB)


If rpm max ($30) is less than or equal to rpm min ($31) the PWM pin does not do PWM, but does do on/off.

[Edit] - got to thinking about this so I did a test. With rpm max <= rpm min then the on/off functions of M3/M5 work, but S0 does not work. So, if you are using S0 to turn your spindle off you need to specify an rpm max greater than rpm min and use PWM.

$0=10 (step pulse, usec)
$1=255 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=3 (dir port invert mask:00000011)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=115 (status report mask:01110011)
$11=0.020 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=1 (soft limits, bool)
$21=0 (hard limits, bool)
$22=1 (homing cycle, bool)
$23=3 (homing dir invert mask:00000011)
$24=25.000 (homing feed, mm/min)
$25=750.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$30=12000. (rpm max)
$31=0. (rpm min)
$100=40.000 (x, step/mm)
$101=40.000 (y, step/mm)
$102=188.976 (z, step/mm)
$110=8000.000 (x max rate, mm/min)
$111=8000.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=500.000 (x accel, mm/sec^2)
$121=500.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=290.000 (x max travel, mm)
$131=290.000 (y max travel, mm)
$132=100.000 (z max travel, mm)

That kicks major ■■■! Thanks again Phil!

Hi Larry,
Sorry for the delay but once again real life got in the way and I’ve just finally had time to upload and install that hex file. Thank you so much, it works and I do find it more logical to start at 0,0,0. Now, on with the learning curve. :wink: Thanks again!

Thank you, Phil! I look forward to checking it out.


I just got a notification that a new Grbl file (Grbl 1.1f) was available and without thinking (that’s nothing new) I upgraded it. Now I’m back to where I was, working with negative numbers. I tried going back by uploading the file from Larry M that I installed last November but XLoader gives the notice “can’t open port”. Not sure what to do now. I HATE trying to decipher these negative numbers! My OLD brain just doesn’t cope well with this. Any guidance would be appreciated!
Thank you,

Make sure no other program is open using the serial port when you run xloader.

Make sure that your COM port number is still the same.

You should be able to get it loaded in.

1 Like