G53 behaviour on buildbotics-derived Onefinity Controller

Hey all,

I see a strange behaviour on my Onefinity Controller. G53 (Move in Machine Coordinates) should move in absolute machine coordinates.

So the command

G53 G0 Z0

should always move Z to machine zero (topmost position, Z home position), regardless which coordinate system offset is in effect.

But if I switch to incremental distance mode G91 (Select Incremental Distance Mode), G53 G0 Z0 does not move there, it just moves by zero distance. This is not only wrong and probably a bug, it is also clear that it makes no sense to use incremental distances when using G53.

Peter Smid writes in the standard textbook “CNC Programming Handbook 3rd Ed.”, Industrial Press, South Norwalk, CT, USA, ISBN 9780831133474 on page 400:

G53 Machine Coordinate System


Machine coordinate system G53 uses the coordinates measured from machine zero as an input – always!


  • Programmed coordinates are always relative to machine zero position

  • G53 is only used in the absolute mode (G90)

In his example program, he prepends a G90 in front of the G53.

So I understand that you can write G-code with an occurrence of G53 while G91 is active, but it should trigger an error. But it doesn’t on buildbotics-derived Onefinity Controller, at least not on onefinity-firmware version 1.0.9.

You can test this with this small G-code program:

M70             ; Save all modal states
G21             ; Switch to metric units
G92.1           ; Delete any offsets that could be active

G90             ; Select absolute distance mode
G53 G0 Z0       ; Move Z to 0, Z machine zero, topmost position
G53 G0 Z-50     ; Move Z downwards to -50 mm

G91             ; Now switch to incremental distance mode
G53 G0 Z0       ; Move to Z0 again with G53 (in machine coordinates)
M71             ; Restore all modal states

(comments can be left when copying/pasting, they will be ignored)

Here is the above program as a file that you can upload to your Onefinity machine:

test_G53_when_G91_is_active.ngc (388 Bytes)

When I run this program, on my system, it shows the following bugs:

  1. The Z axis is not moved back to topmost position but takes Z0 as relative value (and zero means no motion).
  2. No error is displayed about using G53 when G91 is active.

In the Mach support forum I found that they get an error saying “Cannot use G53 incremental” in this case.

Before I can file a bug report, I would need someone to test this on latest stable release (1.3.1 as of this writing). Please, would a friendly forum user test this?

1 Like

Hey Aiph5u,
I am on 1.3.1
I ran your test code. It is just as you say - it will not lift up when G91 is enabled.


I’ve seen the same thing. It seems the buildbotics controller interprets G53 in the context of the existing work coordinate system, which is not correct if I understand how G53 is supposed to behave. Did you find any workaround on the issue?

Hey Bill,

wanted to file a bug report but yet didn’t find the time. A workaround is to have a G90 prepended to any G53 call.

Welcome to the forum!

1 Like