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

<p>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.</p>

<p>My thought was that uncommenting this in Configuration_adv.h would work:</p>

<pre><code>#define JUNCTION_DEVIATION_MM 0.02
</code></pre>

<p>I have tried setting this define inside of and outside of the default <code>if</code> 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 <code>define</code> statement is either protected or unprotected by an <code>if</code></p>

<p>Also, the default <code>if</code> block is this:</p>

<pre><code>#if ENABLED( JUNCTION_DEVIATION )
    #define JUNCTION_DEVIATION_MM 0.02
#endif
</code></pre>

<p>Uncommenting <code>#define JUNCTION_DEVIATION</code> 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 <code>if</code> but it still has no effect.</p>

<p>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.</p>

<p>My current <a href="https://github.com/appideasDOTcom/Marlin/blob/printerx/Marlin/Configuration.h" rel="nofollow noreferrer">Configuration.h</a> and <a href="https://github.com/appideasDOTcom/Marlin/blob/printerx/Marlin/Configuration_adv.h" rel="nofollow noreferrer">Configuration_adv.h</a> are taken from <a href="https://github.com/appideasDOTcom/Marlin/tree/printerx/Marlin" rel="nofollow noreferrer">this Marlin fork</a>.</p>

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

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

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

<blockquote>
  <p>Did you run <code>M502</code> and <code>M500</code> after updating your firmware?</p>
</blockquote>

<p>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.</p>

<p>I send this command:</p>

<p><code>M205 J0.020</code></p>

<p>Then verify that junction deviation is set correctly (it is)
Then this:</p>

<p><code>M500</code></p>

<p>And that responds with:</p>

<p><code>Settings Stored (616 bytes; crc 51371)</code></p>

<p>Then I send this:</p>

<p><code>M503</code></p>

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

<p><code>...
M205 B20000.00 S0.00 T0.00
...</code></p>

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

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

[{'answer_id': 11774, 'author': '0scar', 'author_id': 5740, 'author_profile': 'https://3dprinting.stackexchange.com/users/5740', 'pm_score': 2, 'selected': True, 'text': '<p>I\'ve bought an SKR Pro V1.1 which is suffering from the same problem. It has actually to do with a shortcoming or design flaw (of the "HAL" or "Hardware Abstraction Layer" addressing of SPI devices) of Marlin and access to the SD card; I <a href="https://github.com/MarlinFirmware/Marlin/pull/16260" rel="nofollow noreferrer">quote</a>:</p>\n\n<blockquote>\n  <p>The problem: On board SD-Card on SKR-PRO 1.1 can\'t be used. </p>\n</blockquote>\n\n<p>After the SD card has been inserted, the firmware binary is loaded into memory, and all access to the SD card is gone. The initial connection is by hardware design of the SKR boards.</p>\n\n<p>Basically, there is a bug in the Marlin code/SKR boards preventing storing (to the SD card) any alterations after the firmware is loaded. There is a <a href="https://github.com/MarlinFirmware/Marlin/pull/16260" rel="nofollow noreferrer">PR on Marlin</a> that fixes it, but it has not been merged into Marlin yet.</p>\n\n<p>There are 2 options, </p>\n\n<ol>\n<li>Every change to the firmware has to be compiled and uploaded to the board by placing a hex (firmware.bin) on the SD card;</li>\n<li>Compile a firmware version from the sources from the fore mentioned PR.</li>\n</ol>\n'}, {'answer_id': 14791, 'author': 'Francis Dalmas', 'author_id': 25299, 'author_profile': 'https://3dprinting.stackexchange.com/users/25299', 'pm_score': 0, 'selected': False, 'text': '<p>For the SKR, to store the new Marlin definitions it is necessary to send the comand <code>M502</code> to restore to the factory settings (will use the configuration on the SD card) and send the comand <code>M500</code> to save the configurations.</p>\n'}]
['https://3dprinting.stackexchange.com/questions/11261', 'https://3dprinting.stackexchange.com', 'https://3dprinting.stackexchange.com/users/18989/']