EEprom plugin ... what the ^$A%#

I have been using the EEprom plugin on my Creality CR-10 for over a year now. I use it extensively and thought it to be the best thing since sliced bread.
Recently I did a substantial overhaul of the hot end, new hardware on the leveling screws, new glass plate etc etc, you get the drift. I did all the hardware changes and proceeded to re-level the bed. Everything was honky dory until, after doing the 4 corner manual bed leveling, I ran the mesh bed compensation scan on the bed. No matter how careful I set up things, by the time I finished and tried a test print, I ended up printing in the air (too high).
After many hours of farting around with things, I seem to have figured out what is going on but I need to understand the logic behind this weirdness.
I used the EEprom plugin to avoid having to recompile source code after every minor setup change - I was under the impression that this was the whole purpose behind the plugin.
I would for example measure the Z probe offset (BLTouch) very carefully and set it up in the EEprom plugin, upload it to Marlin and as they say 'Bob is your uncle' - no muss, no fuss and especially no recompiling.
Well, as I found out after way too many hours of screwing around, if I do a mesh bed scan, the Z offset that I measured so carefully and entered via the EEprom plugin gets discarded and replaced by the value that is configured in the source code !
The settings in EEprom survive power cycles so why do they not stay after a mesh bed scan ? What's the point of being able to change these settings if at any time they can be reset unbeknownst to me and throw everything off?
I have also seen home offsets being changed back to source code based values under certain conditions.

The three questions I have:

  1. Why are the plugin changes not permanent?
  2. what possible reason could there be to revert the EEprom settings to hard coded defaults?
  3. Do I have to go back to recompiling source code every time I change something a bit or is there a better way ?

I think I remember using a Marlin EEPROM Editor plugin in the past. After you change the value are you pressing any other buttons in the interface (in an attempt to then push that to the EEPROM)?

Yes, you have to upload the data to the EEprom which is a required button push. I also press the 'save' button on the bottom just for the heck of it although I do not know what that button does or why it is there.

I'm guessing that we're talking about a G29 command of some sort to run the leveling routine. Or maybe the BLTouch has it's own command for that.

Like you, I'm thinking that doing that then uploads a different z-offset value to your EEPROM. I don't remember it ever doing that in the past but I'm not the best person to ask. I thought there were three values going on:

  • z-offset
  • z-somethingelse
  • a mesh to describe an array of offsets from these two

This may be helpful if you've flashed your Marlin at some point. Maybe if that's commented-out it's ignoring the EEPROM plugin's M500 command when you're trying to save.

I don't see what's so hard about this... :laughs at the complexity that Marlin's become:
M206
M500
G29, G29, G29 and G26
M851
M420
M421
G28 and M428
M852

The printer does proper mesh compensation so the M500 isn't an issue. It's either an issue with the plugin or more likely an issue with Marlin deciding to renew it's EEprom settings from the hard coded defaults and overwriting what the EEprom plugin wrote.
I find compiling isn't hard but it is cumbersome especially if you need to change a value a number of times. It takes some time to run the compile but then you need to disconnect the octoprint setup, hook the computer up directly to the controller, upload the new firmware, reconnect the octoprint etc etc. Doing it once is an annoyance, having to do it a number of times as you are changing things is unacceptable.The other thing, and this will probably indicate my age, if the last time I compiled the firmware was a year ago, there is significant re-learning involved for me. It's trivial (but annoying) when you do it all the time but definitely non trivial if you do it once in a blue moon.
I see a Duet controller changeover in my future.
Anyone want to buy a complete Creality control box? Maybe as a spare ?

I hear you. What I do is create a MarkDown document which describes the process and I keep a variety of those around. Then—a year later—I go read my own notes on the subject.

If you flash your firmware using the Arduino IDE this project is likely in your recently-opened projects from that interface. Sometimes the tricky part is trying to remember if any buttons need to be pressed to put the board into a certain mode. But remember that once you figure it out, you can always just add a comment in your MarkDown document or even at the top of configuration.h for that matter.

After you do the upload and save you have to do M500 to make the changes permanent in the EEPROM

In the past, it did...

code

And yet, look at all this stuff. I guess you'd have to compare your own version of Marlin against that very long list of versions to be able to say whether or not that section works.