M500 not saving calibrated M92 X,Y, Z values

After getting some horizontal expansion in the prints (holes are more like ovals and there is a ~+.20mm on x,y outside dimensions, -.20 on inside dims) I decided to calibrate the steppers to fix it but when I try to set the M92 values, it is not persisted after a reboot. E is saved, but none of the x,y or z values. It goes back to default 400’s. Tried one at a time, (set, save, next, save, reboot) set all and then saved & reboot, goes back to 400. I upgraded to Firmware 1.13.2, didn’t save. downgraded to 1.13.1 and it doesn’t save either. What am I missing, or is this a bug?

I think on Github the developers clarified that M92 is ignored and the linear module parameters are loaded dynamically at startup based on the module, or something like that.

Thanks for that link. I have no idea what their codebase looks like (I haven’t looked at it yet) but the software developer in me is speechless. Guess its cura or adjusting the dimensions in fusion 360 +.20 / -.20 on all prints until/if they get it worked out in a later firmware.

Yea, there’s probably a few topics here worth talking about a little deeper

Why are you getting horizontal expansion? Are you an early adopter? Is the expansion along the X axis? If so, maybe you have a faulty leadscrew in the module, some of the early ones had manufacturing issues. You may be able to create a support ticket and get a new module sent to you under warranty.

If the expansion was along the Y axis that would be problematic to be traced back to a leadscrew manufacturing tolerance because both modules would have to have an equal problem on both matching modules.

Is it possible you’re seeing backlash and that it’s not so much horizontal expansion as much as a shrinkage in the other dimension, combined with some other aggravating factor.

I purchased this machine on May 20, 2021 so I don’t think I’d be an early adopter? I also have the upgraded pint module with vents on the front.

This is my first printer and just started printing things about 2 months ago. I figured the oval circles were just illusions with the layers orientation but there’s also stretch in hex nut sockets and more recently the cnc bit setters dimensions were short- which sent me down this rabbit hole of calibration.

It could be backlash out of the box. the first couple of prints I did (ca glue bottle holder, mt20 holders for pegboard) ended up being tight and I just chalked it up to movement/mis measure.

I was thinking of the upgrade package, but from what people say on here, there wouldn’t be much benefit if I already have the updated printer and I don’t plan on trying to cut metal with the laser. I’ll have to look into the support ticket.

Oh- about the Y axis. The measurements ranges +/- a few hundredths depending on where it is measured. Had some 20.201 and other spots 20.270. There is also a bulge on the 4-6th layer from the bottom and the print seems to lean in one direction, I think towards the back of the machine but I’ll check the orientation when I get back. It’s not the elephants foot, the initial layers are spot on.

I find measuring backlash easiest to do with the laser head with a bunch of circles. Between each circle I incremented the backlash compensation.

If nothing else, it better be the same on X and Y, since they should have the same geometry. If they don’t, maybe check the carriages for looseness internal.

Normal backlash is very small on this machine, around 0.02mm. That linked thread was after a crash, I got 0.12mm in X axis, requiring hardware fixing.

I’ve found backlash correction leads to issues for large values, there’s some bug somewhere but I can’t find it. Results in accumulated drift over long times, causing a few laser projects of mine to fail. More on that, here: Long Laser Project - Position Drift in X? - #21 by brent113, if you are interested in giving it some thought, still an open issue to me.

I’ll have to try that. My ram is maxed out and needs to finish some smaller tasks so I can focus more on figuring this machine out without getting distracted. I’ll take a look at that thread, open my machine up and give it some thought.

Maybe I’m too new to this but we’ve probed a comet and driving a robot all over the place on another planet. It’s a bit frustrating thinking (noobing out here) that it doesn’t seem like much to store the calibrated values, load the screw size from the module, run conditionals on that input and either set the calibrated values back in or set the defaults for that screw size. There’s constants, like screw size, length(?), previously loaded module info. If the user changes back to the other size (why would they though?), the conditional sets the default. I know there’s more involved and more math and I’m just contemplating with no experience coding for this type of application- but if it’s to prevent damaging the machine, isn’t that what soft stops are for? True story, I learned about them while setting up the shapeoko last weekend. They don’t activate it as a default and nothings mentioned in the instructions. One of the pins on the board is mislabeled so the Y stop is backwards. The gantry bottomed out a few times against the Y axis. Nice huh? Then a few other times trying to figure out cncjs and forgetting to change the jog distance. Thank god for Google, YouTube and some guy named Winston.