Has anyone attempted to use AUTO_BED_LEVELING

I’ve been successful getting the different auto bed leveling working on my 3D printer and thought it wold solve my some what warped waste board problem. The warpage is only about 2mm at 580mm but screws up the fine engraving. Milling the board seems to be a wast of time if I can get the Marlin code to work. A printer bed and a CNC waste board ain’t that much different, just bigger. The bit is the Z probe analog.
I have tried all three of the ABL methods with some success. It seems as the SW doesn’t seem to like a work surface of 580mm. Marlin must calculate the probe limits internally because the limits found in earlier version aren’t there. I’m hoping that its just my age (80) and I’m missing something.
I know this should work on a CNC because its just a 3D printer with a drill!
I did find a YouTube channel that did it with earlier SW, smaller CNC and and it worked.

Any help would be welcome.
MPCNC 580x580mm work area.
Arduino IDE 1.8.12

I’ll sent both config files if I can figure out this new forum format.
Tks, Doug

Bed probing is not for the faint of heart! It seems to want a z endstop and there may be an issue with the newer marlin firmwares wanting the z endstop zero to be close to your stock zero requiring some code to be commented out. I have probed my 8 foot by 4 foot table no problem. Some info is here:

And here

Yeah, I used it, but I can’t recommend you to go this way, that’s not the proper solution.

You need to purchase a surfacing bit and make it run across your whole spoil board, don’t waste your time with autobed leveling, it will give you bad results.

HMM. I’m looking to just taking out the major changes in height of the bed. In that I still think that one of the ABL methods in the Marlin SW will do the trick with the precision I want not need. I’m an engineer. I don’t see why that the same procedures used on the 3D printer is comparable with a CNC . I hope to do this using the router bit closing the circuit to the switch just like the inductive Z probe. It does seem to measure points for a quarter of the board then terminates. That’s the part I cant figure out. I need to contact Marlin and find out how they set the grid pattern and why it quits. You’re right in that ABL is not easy to setup.


Unless you’re milling wet lasagna noodles your work doesn’t totally conform to the uneven bed. It averages it out. So if you use a bed probe, then you’re just transfering the unevenness to the top of your piece. Generally it’s not that big a deal, until you start v-bit cutting text, then the flatter you can get everything the better. It’s also going to slow everything down since we’re limited on Z speed. If the machine is constantly moving the z up and down with the contours of the bed, it will slow x and y to compensate.

I’ve never really looked into it, but does printer bed mesh only fix the first few layers, or does it go through the entire print? Seems like a shitty way to make good mechanical parts if it goes through the whole print.

1 Like

I imagine if only worked on the first few layers, your print would not be true to scale, with a built up wedge on the bottom. Maybe i’m not fully understanding how it works, but i can see my Z steppers slightly move all the way through the print.

Yeah, as far as I can tell it will adjust the Z for the entire toolpath not just the first layers.

If you are cutting right through your material, a perfect Z shouldn’t really matter, it’ll just ding up your spoil board a bit. If you are engraving or pocketing then ABL is probably your best bet (if you can’t surface your spoil board for some reason)

I run ABL on my printer because I have a huge 12” x 12” print bed. Once it’s up to temperature it is slightly warped and is impossible to adjust mechanically.
It’s not a big deal when I print something small in the center of the bed, but if I am printing something that stretches from one corner to the other It would end up not sticking to the bed. And just 5c in temp changes the amount of warp also.

As for a router, unless we are talking about a huge work area I see ABL as a half assed way of doing it, instead of starting with a level surface to begin with and adjusting leg lengths correctly.

I’d think if you were to apply ABL to say like a full sheet LR2, instead of bi-linear, I’d probably go with unified bed leveling to define way more points than just 9. Just my 2 cents.

Hmmm. Does the software save the mesh grid someplace? If you move your workpiece to a different spot and rezero, does the software place it in the cutter part of the mesh? On a printer, zero is always in the same place, i think. That could make some trouble.
If it doesn’t save, then it seems like surfacing is more convenient, as well. Once per spoil board, unless you have a thick one and can resurface it instead of replacing it.

Its all in the setup. In a 3D printer ABL works this way. You plot the bed with a number of points. These points are saved to EEPROM, up to eight locations I believe. When the print runs, these values are added or subtracted to the zero homing value ± Z offset. It will do this for the first few layers. This is called FADE, meaning it reduces the mesh value on subsequent layers until its no longer an effect. That distance can be set Marlin. Typically 10. I’m hoping that if FADE is turned off, then that level correction continues for the whole print.
I believe you only need to plot about nine points for the whole work surface to remove any bed to router X/Y travel error. At least that’s what I’m hoping for.


Don’t they usually read the work pieces and apply it to the top surface? PCB are cut this way to eliminate surface imperfections. 2D cuts on curve ect. Can this be applied this way or does it have to be to the bed?

In answer to Barrys milling comment, I agree. However what I need is to be able to engrave shallow (<2mm) letters and lines into a large surface. I’m not worried about the Z axes moving out of tram with the bed. In my application that’s a very small error in the scheme of things.
Maybe I’ll figure how to adjust the four MPCNC legs so the XY travel is parallel to the bed. Then use ABL if I need to compensate for a slight bed warp.

1 Like

I’ll check this out. I wonder if the fade compensation works properly when using a subtractive cut path (compared to 3D printing).

I’m not sure. I don’t think it would make difference. My understanding (could be wrong) is that the mesh value is interpolated and then added to the proposed cut Z value. The values in the mesh are + or -.

Agreed, there are many other ways and opinions to deal with ‘level bed’. But I guess my problem is WHY can’t I get Marlin to scan the entire bed??? Weather it makes sense to use it or not isn’t my real concern. Guess I’ll pass this SW (or my) problem over to the troops at Marlin and find out. Thanks for all the help however. Doug

1 Like

Is it tied to bed size

I think if the middle of your work area was 2mm lower than the edges, a 1000mm sheet good would conform and be touching the spoil board in the middle. It won’t instantly react to a pebble under the work, but it will generally follow the spoil board.

But the errors you can compensate for with bed leveling include:

  • slope of the XY plane, because the feet aren’t the same length
  • sag in the gantry, because the tubes are bending over a large area (this is also true for LR builds)
  • twist, slope, or bulges from a not-perfectly flat or swelling table surface.

If you surface your spoil board, you could actually be making the spoil board more like “rolling hills” because it will follow whatever inaccuracies you have in the XY plane that the router follows. And it is totally fine, because you are talking about tiny Z over huge XY, and our materials will conform (maybe carbon fiber wouldn’t but wood is heavy, and doesn’t have that kind of strength).

The bed leveling compensation in Marlin can be set to either average out the compensation by a certain Z value, or to just keep it the whole time. Even on a printer, it really is better to keep an eye on the numbers and make sure it isn’t compensating for some huge error. In a printer, the goal is a perfect first layer, the total dimensions of the part aren’t going to be exact (to within a tenth of a layer height), so the compensation isn’t really noticeable in the final part. I get much more error in dimensions from warp, which bed levelling significantly reduces by having a consistent thickness on the first layer.

I haven’t ever used ABL though, I use bilinear on my printers, and I didn’t know you could send a command to probe in a certain region. I will definitely have to try that.

That’s how I use bed levelling… I just read the max X,Y of the cut off CNC.js and then have it probe the surface of the material I am about to cut.

I was thinking it would be nice to have a little plugin in cnc.js or something to do this on an imported gcode file.


I got it all figured out and working. I think we have been over thinking the problem and and I wasn’t adhering to KISS. Got to go now but I’ll post what I found and where it lead me in a bit. thanks all cheers.