Makermade M2 - CNCjs calibration issue

So first I would like to state that this is my first time using a CNC machine.

I just received the new M2 from maker made. It is their upgrade version of the Maslow CNC. More or less the same with some upgrade motor brackets, z-control and things of that shot.

Needless to say I was super excited when it arrived and spent a few hours building the frame and setting up my station.

I followed the supplied directions and everything came together pretty quickly.

One of the big differences is that the M2 does not use Ground Control. Makermade recommends using CNCjs. So that is what I have downloaded.

There was little to no calibration directions and it seems that after to invert the z axis and adjust the Baud rate you should be in buisness.

Well that is only partially true.

I was able to get the machine centered and homed. Uploaded a simple square with G-Code to use as a test.

Well the cutting was fast but not perfect.

The square was supposed to be 2inch by 2inch, but when it cut it out it was 1 7/8 w x 2 3/8 h.
And now i’m not sure what to do. I have spent a few hours searching online for directions on how to calibrate with no luck.

Does anyone know how to make adjustments to this, or what kind of adjustment i need to make so i could perform a better search on what to do???

1 Like

I suggest reaching out to @MakerMadeCNC directly (email or call) I’ve wondered about this myself…


@MakerMadeCNC any idea on how to calibrate? or what might be wrong?

They also have a facebook page…

Looking at @ldocull’s source code for grbl-due (which I believe is what makermade uses, but haven’t confirmed), you may need to manually adjust settings via issuing an $xx=yy command. For instance, you measure the distance between motors and then issue a $83=xxxx where xxxx is the distance in millimeters (the default distance between motors is 3021.013 mm). $84 is the distance between motors and top of workspace and its default is 577.85 mm. Measure your build and if either of the actual values differ from the defaults, then try issuing a settings update command.

The only other two settings I see that could affect calibration are $85 and $86 which are an x, y scaling factor, respectively. The defaults are 1.003922 and $1.026111 for x and y, respectively. After you get the $83 and $84 as accurate as possible, then modify $85 and $86 to change the size of the cuts.

1 Like


Thank you for this. I appreciate all the help I can get. I have reached out to @MakerMadeCNC on facebook and above here and will see if they have any input as well. But I will try your suggestions now.

I measured the distance between motors (did the center of the gear to center of gear) and it was slightly off from the default so I updated to 3009.9
But when I measured the center of the motor gear to the top of the wasteboard the distance was way off, updated to 330.2.

I ran another test cut but the size was the same. 2x2 cuting as 1.875x2.25 (so 1/8th of a difference in height since last cut)

So now I want to try the $85 and $86 settings. What are these numbers based off of? I mean is there something I should be measuring to get the values or is it more of a guess and check method?

I’ve got no experience with the grbl-due calibration, but this is how I would try to do it.

Working with x first, take the 2 inch goal and divide by the measured value (1.875). That gives you an x-scaling factor of 1.06667. But that 1.875 inch square was cut using an x scaling factor of 1.003922 (assuming that’s what the current value is). So, multiply the 1.06667 by 1.003922 to get 1.07085. Issue a $85=1.07085.

Repeat the process for the y measurement. Edit: accidentally posted original value… not in position to do the math and correct…/end edit

Cut another square and see if it works. I think making the square bigger probably would improve your accuracy in calibration. Just keep repeating the process until its good.

New scaling factor = desired size / actual size * current scaling factor.

Exactly what I tried to find out, because I might have read something about ‘higher accuracy’, got interested. no search helped to get a clue. Calibration is mentioned in the original, but circling in was not a part, as from my memory it was shared open source, as a starting point from where to continue improving and labelled as that. No idea what firmware M2 uses, will keep following.
Kind regards, Gero


Thanks for helping out and giving me direction on how to rescale the machine.

After a few (lots) of attempts and recalculations I was able to dial in the scaling.
I got a 4x4 sqaure to cut within 1/32 of an inch in width, and spot in height. Might still play with it a bit more to get it even more accurate. (i listened to your advise and scaled the cut larger to help with the measurements)

1/32 is excellent. If you have the time, try cutting squares (maybe 5 inch) in all four corners of the workspace (maybe 6 inches in from the edge). Those extremes are the most difficult for a traditional maslow and I’m really interested in seeing how the grbl-due firmware and calibration works there.

I definitely will. I don’t have any full sheets of plywood lying around right now, but once I do I’ll let you know how it goes.

1 Like

makermadecnc has a github repository which includes forks to the maslowdue project, cncjs, webcontrol, and groundcontrol. I was under the impression that was their goto library development code, but after a closer look, the most recent update was webcontrol about a year ago…

1 Like


Yeah without knowing what I was looking for it was hard to find anything.

The directions that come with the new M2 only show you which programs to download ( easel and cncjs) but don’t say anything about calibration or what the settings are.

Once @madgrizzle pointed me in the right direction it made it so much easier. He gave me enough info to fix my issue and find more documentation online as well. Here is a link (also updated about a year ago) that at least explains which settings do what and how to/why to edit them.

Now I am in business and cutting away


yeah, that @madgrizzle. He’s a good egg.


Check out the video from MakerMade:

tl;dw: they’re using $100 for the X-scale, not $84. They’ve also forked CNCjs into “Makerverse” software, and have a custom panel for calibration. This offends my open-source sensibilities greatly, since they haven’t distributed a RPi image, web app, or even the source code for their CNCjs widget AFAICT.

But… I don’t see how this calibration could possibly be accurate to the level I’ve come to expect. The video/software makes no distinction between top width and bottom width of the test cut. Just like with the Maslow Classic, my M2 out-of-the-box has some +/- 3% variation in these cuts.

I think that further variables need tweaking. I can’t even find what the weight of the sled they’re using is, which is a problem since the M2 upgrade doesn’t come with a new sled. So that configuration is definitely wrong, and I’m basically trying to reverse-engineer how to encode these values.

According to the MaslowDue Gtihub repo, here are the purposes and default values of the variables. But if you connect to the M2 DUE for the first time with fresh firmware, the variables spits out. are different in terms Kp, Kd, YcorrScaling, etc. I suspect they did not update the README and would refer to the link for the correct default values.

$40=25600 (X-axis Kp): This is the proportion constant scaled as
$41=17408 (X-axis Ki): This is the integral constant scaled as
$42=21504 (X-axis Kd): This is the derivative constant scaled as
$43=5000 (X-axis Imax): This is the maximum integer value that the integrator can build to

$50=25600 (Y-axis Kp): These are the PID constants for Y
$51=17408 (Y-axis Ki)
$52=21504 (Y-axis Kd)
$53=5000 (Y-axis Imax)

$60=22528 (Z-axis Kp): These are the PID constants for Z
$61=17408 (Z-axis Ki)
$62=20480 (Z-axis Kd)
$63=5000 (Z-axis Imax)

$81=2438.400 (Bed Width, mm): This defines a 8-foot WIDE work surface
$82=1219.200 (Bed Height, mm): This defines a 4-foot HIGH work surface

$83=3021.013 (distBetweenMotors, mm)
$84=577.850 (motorOffsetY, mm)
$85=1.004 (XcorrScaling)
$86=0.998 (YcorrScaling)

$100=127.775 (x, step/mm)
$101=127.775 (y, step/mm)
$102=735.000 (z, step/mm)

I just started calibration yesterday, I’ll be doing it all day today…

For MaslowDue, from what I can tell, it just does simple trig from the center of the motor sprocket to the target coordinate., with the target coordinates getting altered by the scale value. So if you have x-scale of 1.01 and tell it to go to x=100 mm, it’ll calculate chain length based upon x=101 mm. It doesn’t seem to consider that the chain originates from a tooth of a sprocket, and not the center, and that the chain wraps around the sprocket for a portion of its length. It also doesn’t consider catenary effects and chain tolerance. It appears the intent is for it all to be handled by x-scale/y-scale values.

I don’t know if makermade has made any adjustments to it though that’s not reflected in their github repo.


Oh, I see from the video that they don’t really use the x-scale and y-scale and modify the steps/mm instead (as @zaneclaes pointed out). The effect is the same.

Is the ‘official’ M2 firmware the MaslowDue from their github page or is there something else? If it is, for someone inclined, it wouldn’t be a huge challenge to incorporate the holey calibration kinematics if the performance of the current methodology doesn’t meet their desired level. You could also, fairly easily, create a standalone program to do the calibration calculations.

1 Like

could you make a cnc.js plugin for calibration?

Me, probably not. Someone, probably so.

Sorry unclear question. Of course, your work speaks for itself, so while ‘you’ could, I was not meaning to ask you if you would.

Should have been: Would it be possible and reasonable to make a plug-in for that system?

I believe they have a pendant script option that could be tied into, so it may not even require a communication library to talk directly to the due. Just go through the cncjs.

Success! … kind of. Holes are good, but not low corner cuts (due to chain sag). It’s better than most machines, I suspect, but not anywhere as good as I had my Classic.

I’ve been doing calibration for the past ~6h nonstop. I had to invent a calibration approach in order to achieve the same accuracy I had with the classic. My “success criteria” is being able to cut a 1" border off a 4x8 with 1/16in tolerance. I was able to place holes more or less accurately, but they drifted by about 1/4" in the low corners.

I’m planning to make a calibration widget out of this, as I’ve already been investigating CNCjs in anticipation.

@madgrizzle I downloaded their Makerverse software and discovered than in the latest version, they are indeed changing $84 and $85 (not $100 and $101).

Also, the hint about the trig was great. I ended up measuring from the last gear on the bottom of the sprocket before the chain becomes straight (for the motor height & motor width measurements). AFAICT, this creates the appropriate triangular shape.

The hard part is dialing in the motor offset “just right.” If it is wrong, it causes bowing in the Y-axis, so the middle part is higher/lower than the sides. If the center bows upwards, the motor height is too large (and vice versa). I basically used the same 6 holes cut by the Holey calibration, but instead placed them 1" from the border of the stock (as I explained here, with the idea of “overclocking”). Simply diving the expected vs. measured distances between the holes was enough to zero in on the correct scale factors. My early mistake was being off by ~5mm in the motor height and trying to dial in scale first.

My sled is at 26 lbs… I am getting a tiny bit of rounding (chain sag) in the lowest 1" corners when cutting (and therefore dragging) right on the corner, but nothing too bad (1/4" rounding at worst).

Time to try using the new 1/8" bit to cut something…

1 Like