# Setting Junction Deviation in firmware has no effect

I have built a 3D printer with Marlin bugfix-2.0.x forked from github.

I am attempting to set the default value for junction deviation so that I don't have to change it through the printer's screen/interface every time I power cycle the printer, but what I thought would set it properly isn't doing the trick.

My thought was that uncommenting this in Configuration_adv.h would work:

#define JUNCTION_DEVIATION_MM 0.02


I have tried setting this define inside of and outside of the default if block in which it appears, just to make sure the issue wasn't because I didn't have something else set, and I get the same behavior when this define statement is either protected or unprotected by an if

Also, the default if block is this:

#if ENABLED( JUNCTION_DEVIATION )
#define JUNCTION_DEVIATION_MM 0.02
#endif


Uncommenting #define JUNCTION_DEVIATION leaves me with a compiler error telling me that I don't need to do that, so I'm not seeing anything that I am supposed to enable to get it to use the JUNCTION_DEVIATION_MM setting. In other words, I can't actually enable "JUNCTION_DEVIATION" any more, so I HAVE to break the JUNCTION_DEVIATION_MM setting out of the if but it still has no effect.

After setting this parameter, when I power cycle the printer, the junction deviation is set to 0 (although one touch of the adjustment knob makes it jump to 0.010, so I think that what is displayed as "0" may actually mean "unset"), which is causing a significant stop/start jerk on every angle change until I manually set the junction deviation.

My current Configuration.h and Configuration_adv.h are taken from this Marlin fork.

In case it matters, I'm running this on an SKR V1.3 with TMC2208 drivers at 24V.

Any ideas what I'm missing? I'm sure it's something simple, I just haven't found it.

UPDATE: Still no solution after 10 days. Here is additional information from another forum where I posted this request:

Did you run M502 and M500 after updating your firmware?

I dug into this a little more, and I am either running into a bug, or I'm simply not understanding what I'm supposed to be seeing.

I send this command:

M205 J0.020

Then verify that junction deviation is set correctly (it is) Then this:

M500

And that responds with:

Settings Stored (616 bytes; crc 51371)

Then I send this:

M503

And the report for M205 is missing the setting I just confirmed to have changed and been working:

... M205 B20000.00 S0.00 T0.00 ...

And power cycling or resetting the controller leads to the same result: Junction Deviation is reset to 0.

Shouldn't I see "J0.020" in the M205 line immediately after changing the setting, and verifying that it works?

• After a few months of dealing with this, I have simplified the test cases, and I have come to believe that it's a bug in the SKR 1.3. I'm waiting for a new SKR 1.4 to arrive, and if the problem exists there as well, I'm submitting a bug report on github. Will update this question when that's done. – Chris Ostmo Jan 3 at 2:22
• There is a bug in the Marlin code/SKR board preventing storing any alterations after the firmware is loaded (to the SD card). There is a PR on Marlin that fixes it, but it has not been merged into Marlin yet. – 0scar Jan 3 at 21:01
• @0scar It doesn't look like that pull request has been merged yet, but I merged the changes from the Marlin bugfix-2.0.x branch for the first time in about 1.5 months, and the problem has been resolved. Confirmed on an SKR V1.3 and an SKR V1.4 (the problem may not have ever existed on the latter). I'm not sure which commit did the trick. If you post an answer, I'll accept it as the solution. Thanks! – Chris Ostmo Jan 14 at 19:39