Hi,
I use Autoleveller, a software utility that probes the surface of a nominally flat printed circuit board blank. Then it manipulates the Gcode file to accommodate the inevitable wave and/or warp
of the blank. As such probing has to work well and accurately, say within a few um otherwise it does not work.
Initially I used Mach3 and a parallel port, and Autoleveller worked well, ie within a few um.
Then I used Mach3 and an Ethernet SmoothStepper, and that worked well also.
Then I went to Mach4 and the ESS and have used it extensively for seven years. With my new build mill, having quite good acceleration, I can get about 1.5um accuracy/repeatability with g31 moves.
I use it daily, if not multiple times per day, so g31 works. It's something about your machine, or as John has postulated, the controller. Consider getting a US or European made controller, we know they work
and the manufacturers support them, unlike the Chinese manufacturers.
Craig