a photograph showing the AT24C I2C EEPROM module with a 1024 Kbit chip installed and all jumper connections removed except the WP. The WP two furthest right pins are the only pins that have a jumper plug connected.


Tired of SD EEPROM boot failures on the SKR V1.4. Follow the SKR V1.4 I2C EEPROM guide on installing a physical EEPROM on the SKR V1.4 board.

While you can utilise a SPI EEPROM. For this article I am going to keep to I2C as that is personally what I use. Furthermore the Inter-Integrated Circuit or I2C ( I²C to be correct) are quick and easy to use and cost very little. Moreover there are just four little connections to plug in.

Required Items

Affiliate Links Below:

Breadboard Dupont Connectors

AT24C256 I2C Module

Without a doubt one of the quickest and easiest methods of adding a physical EEPROM chip is to use a AT24C256 EEPROM Board. Furthermore it is usually supplied with a 256K EEPROM chip pre-installed. While there are a few variants, go for one that the EEPROM chip itself is not physically soldered to the board.

Additionally I prefer jumper connections over the switch variants on the grounds of longevity. Furthermore as Marlin gets bigger you can simply pull out the old chip and insert one with more capacity. For instance I am currently using 512k chips on the AT24C boards. Thats more than enough capacity for all your requirements in Marlin 2 and still leave space for all the Frivolous Games you can enable.

Setting the AT24C* Jumpers

up-close photograph of i2c AT24C jumper configuration used for the bigtreetech skr v1.4. all jumpers are removed except the WP option which has the two pins closest to the memory chip bridged by a jumper plug connection.

Before we start connecting the AT24C* EEPROM board to the SKR V1.4, we need to assign the jumper connections on the EEPROM board. Begin by removing all the jumpers. Additionally disable the write protect feature by placing a jumper to the far right on the WP connection. While leaving off the jumpers A0, A1, and A2 as shown in the picture above.

Wiring the AT24C* to SKR V1.4

Firstly make yourself a four wire female to female Dupont 2.54mm pitch cable. However you could use some female to female breadboard jumper wires for convenience. (See at beginning of article under the required items).

up-close photograph of i2c AT24C overlaid with wiring diagram of the I2C connection on the bigtreetech SKR V1.4 3d printer board. From the AT24C the SDA connects to the far left pin on the I2C connection on the SKR V1.4, the SCL from the AT24C connects next to the 2nd pin on the SKR V1.4, the GND on the AT24C connects to the 3rd pin along on the SKR V1.4. Finally the VCC on the AT24C connects to the far right pin closest to the NEOPIXEL connection on the SKR V1.4.

With the cable making out the way, let’s start by plugging in the first connection to the I2C port on the SKR V1.4.

  • Connect the 5V I2C connector on the SKR V1.4 to the VCC on the AT24C* EEPROM board.
  • Connect the GND I2C connector on the SKR V1.4 to the GND on the AR24C*.
  • Connect the 0.0 I2C connector on the SKR V1.4 to the SCL on the AR24C*.
  • Connect the 0.1 I2C connector on the SKR V1.4 to the SDA on the AR24C*.

Marlin Firmware Changes

Setting up the I2C EEPROM within Marlin 2 is a simple step of copying and pasting the codes below.


Firstly we need to enable the I2C EEPROM within the SKR V1.4 Board Pin File. See file path below:


screenshot of marlin 2 3d printer firmware setting the external I2C AT24C memory module chip size. Ion this case the I2C memory module is 256K so set the following #define I2C_EEPROM #define E2END 0x7FFF

Inside the pins_BTT_SKR_V1_4 file add the following code just below the board information declaration

#define MNV_SKRV1_4_256K_END 0x7FFF //32Kb
//#define MNV_SKRV1_4_512K_END 0xFFFF //64Kb
#define I2C_EEPROM
#define E2END MNV_SKRV1_4_256K_END


screenshot of marlin 2 3d printer firmware setting the external I2C AT24C memory module chip size. Ion this case the I2C memory module is 512K so set the following #define I2C_EEPROM #define E2END 0xFFFF

If later on you decide change the EEPROM capacity to 512K. Then un-define the 256K option by placing forward slashes in front. Furthermore remove the forward slashes from the 512K option, save, recompile marlin and upload.

//#define MNV_SKRV1_4_256K_END 0x7FFF //32Kb
#define MNV_SKRV1_4_512K_END 0xFFFF //64Kb
#define I2C_EEPROM
#define E2END MNV_SKRV1_4_512K_END


The chances are you have already enabled the EEPROM Settings within the Marlin 2 Configuration.h file. However if you have not then use the settings below.

//#define DISABLE_M503
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.

Did you notice I don’t have the EEPROM auto initialise on error turned on ? It is for good reason.

Moreover how would I know if the EEPROM has failed, if it is going to wipe itself reload the default Marlin configuration and start again ?

Why would that be a problem ? Importantly I would loose my automatic bed levelling mesh information and my bed would all of a sudden be off. Furthermore everything that has changed on the printer such as Baby Steps, PID Tuning would be lost unless it was stored on the last Marlin Firmware uploaded to the printer.

Additionally by disabling the auto init method if there is a problem, 95% of the time you can just tell something isn’t quite right, by either sight or sound. A quick and simple fix is often as simple as switching the 3D printer on and off again. Importantly when it is turned back on the EEPROM should still contain all the information and be back working as normal.

Marlin Issues

At this point in time on some versions of Marlin 2 there is a conflict created when using the I2C EEPROM on the LPC176X chipsets.

If you get an error similar to below, then have a look at our I2C Error Marlin 2 Guide.

.pio/build/LPC1768/libFrameworkArduino.a(arduino.cpp.o): In function eeprom_write_byte(unsigned char, unsigned char)’: .platformio/packages/framework-arduino-lpc176x/cores/arduino/arduino.cpp:111: multiple definition of eeprom_write_byte(unsigned char, unsigned char)’

a photography of the AT24C I2C emory module housed in 3d printed holder designed by Make 'N' Print and is wall fixable. Furthmreo this is available to download from Thingiverse
Download the Make ‘N’ Vape AT24C256 HOLDER CASE from Thingiverse

If you found this guide useful, please consider a donation to help keep the Make ‘N’ Print website running. For further information please have a look at our support us page

Thank You

© 2019-2020 Copyright - All Rights Reserved.