shitcreek AnHardt RetireeJay46



Most 3D printer electronics include a little bit of storage (512K, 3K, or more) called EEPROM (Electrically Erasable Programmable Read-Only Memory) that persists when the power is off. Marlin uses the EEPROM to store the printer settings and loads them up the next time the machine powers up.

Updating the source code or configuration and re-flashing the firmware does not necessarily change the contents of EEPROM. This depends on EEPROM configuration options. With EEPROM_AUTO_INIT or EEPROM_INIT_NOW enabled the EEPROM contents will be initialized to default values. EEPROM contents are only preserved when flashing a near-identical version of Marlin with the same EEPROM version.

A future version of Marlin will do a better job of preserving settings across updates.



EEPROM can be an expensive feature so it is disabled by default. But if you can afford to enable EEPROM it’s extremely valuable and highly recommended. With EEPROM enabled, you can reset the EEPROM contents to “factory defaults” (as defined in Configuration.h and Configuration_adv.h) using M502 followed by M500. (To use the defaults for just one session skip the M500.)

EEPROM G-codes

G-code Description
M500 Store current settings to EEPROM (Loaded on the next reboot or M501.)
M501 Read all parameters from EEPROM (Undo changes).
M502 Restore current settings to defaults (as defined in Configuration.h and Configuration_adv.h)
Follow with M500 to reset the EEPROM.
M503 Print the current settings – Not the settings stored in EEPROM.

The EEPROM is also accessible through the MarlinUI menu and most display/controllers.