Skip to main content

Ender 3 Motherboard Upgrade: Installing a BIGTREETECH SKR Mini E3 V2.0

·2160 words·11 mins
Emiliano Fernández Cervantes
Author
Emiliano Fernández Cervantes
I build things where hardware meets software: Verilog architectures, biomedical instrumentation, and a home lab that keeps growing.
Ender 3 Upgrade - This article is part of a series.
Part 2: This Article

Is your early Ender 3 the loudest thing in the room every time it starts a layer, or have you hit a wall trying to add features that the stock firmware simply will not fit? Both problems trace back to the same part: the mainboard Creality shipped it with. That whine is not a quirk of cheap printers in general. It is a very specific consequence of the drivers soldered onto that board, and it is only one of several things about it that quietly limit what the machine can do.

The fix is a straightforward swap, and it is one you can do in an evening even if you have never opened the printer before. This post walks through replacing the stock board with a BIGTREETECH SKR Mini E3 V2.0: what the stock board actually holds back, why this particular replacement is the easy answer for an Ender 3, and how to do the swap without releasing the magic smoke. It is part 2 of five. Part 1 printed the parts that fixed everything mechanical about this machine, part 3 adds a BLTouch probe, and part 4 compiles custom Marlin firmware for the whole thing in VS Code.

Placeholder graphic reading SKR Mini E3 V2.0 photo coming soon
The BIGTREETECH SKR Mini E3 V2.0 next to the stock Creality board it replaced.

What the stock board is actually costing you
#

The board in an early Ender 3 is a Creality design descended from the Melzi family. It is built around an ATmega1284P: an 8-bit AVR microcontroller running at 16 MHz, with 128 KB of flash and 16 KB of RAM. That is the same family of chip as an Arduino, and it does work. The printer prints. But there are four real limits baked into it.

The stepper drivers are soldered on. Those are A4988-class drivers, and they are not on sockets, so you cannot swap them for something quieter. Every move the printer makes is audible because of how those drivers chop current through the motor coils. This is the noise everyone complains about.

Most of these boards ship without a bootloader. On a normal Arduino, a bootloader is the small program that lets the chip accept new firmware over USB. Creality left it off, which means that to flash your own firmware you first have to burn a bootloader onto the chip using a second device as an in-system programmer, wiring an Arduino Uno or a USBasp to the ICSP header on the board. Although that is not hard, it is a whole extra project standing between you and a firmware change.

128 KB of flash is not much. Modern Marlin with the features you actually want (auto bed levelling, a levelling mesh, babystepping, linear advance, a probe wizard) does not comfortably fit. You end up trading features against each other and hitting “the sketch is too big” style build errors.

There is nowhere sensible to plug in a probe. The stock board has no dedicated probe or servo header, so adding a BLTouch means splitting its five wires between a servo signal you have to improvise and the Z endstop input.

So: noisy, hard to flash, out of space, and awkward to extend. Replacing the board fixes all four at once.


Why the SKR Mini E3 V2.0 specifically
#

BIGTREETECH designed this board as a drop-in replacement for the Ender 3 mainboard, and “drop-in” is meant literally. The mounting holes line up with the stock standoffs, the connectors are the same types in roughly the same places, and the stock LCD plugs straight into it. There is no adapter cable, no drilling, no rewiring of the display.

What you get for that:

  • A 32-bit STM32F103RC running at 72 MHz with 256 KB of flash. Twice the space and far more headroom for both features and motion planning.
  • TMC2209 drivers, soldered but in UART mode. Soldered is fine here, because these are the quiet ones. In StealthChop mode the motors are genuinely near-silent, and UART control means the firmware can set current, microstepping and modes in software instead of you turning tiny trim pots with a screwdriver.
  • Firmware flashing from the microSD card. Instead of burning a bootloader with an ISP programmer, you copy a firmware.bin file onto a card, put it in the board, and power on. That is the entire process.
  • A dedicated 5-pin probe header, so a BLTouch plugs in with its own connector instead of being spliced across two ports. That is what part 3 relies on.
  • Compatibility with the stock rotary-knob display, which in Marlin is the CR10_STOCKDISPLAY option.

One thing to check before you order: which version you have matters. BIGTREETECH’s repository covers the V1.0, V1.2 and V2.0 of this board, and they are not the same board. The version is printed on the PCB itself. Everything in this series is the V2.0, and later on, in the firmware, that becomes the line #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0. Get that define wrong and the firmware will build cleanly and then behave like it is possessed, because it will be driving the wrong pins.


Before you unplug anything
#

Two habits that will save you a bad evening.

Photograph the wiring first. Take the base cover off, and before touching a single connector, take clear, well-lit photos of the whole board from directly above, then close-ups of each corner. When you are reconnecting an hour later and two black-and-red two-wire connectors look identical, those photos are the only source of truth you have.

Label the connectors. Masking tape and a pen. Hotend heater, hotend thermistor, part-cooling fan, hotend fan, bed heater, bed thermistor, X/Y/Z/E motors, X/Y/Z endstops, display. It takes five minutes and removes the entire category of mistakes where you plug the bed thermistor into the hotend thermistor input.

Additionally, unplug the printer from the wall and give the PSU a minute to bleed down before you start. And while you are in there, do not touch the little voltage-selector switch on the power supply if yours has one; it is set for your country’s mains voltage and nothing about this upgrade requires changing it.

Placeholder graphic reading Stock board wiring photo coming soon
The stock Creality board still in place, photographed before anything was disconnected. This is the reference photo you will want later.

The swap, step by step
#

1. Open the base
#

The mainboard lives in the enclosure under the printer. Lay the machine on its side, remove the screws around the cover plate, and lift it off. Everything from here is done with the printer unplugged.

2. Disconnect everything from the stock board
#

Work around the board methodically rather than pulling connectors at random:

  • Steppers: X, Y, Z and E. On an Ender 3 these are four identical four-pin JST connectors, which is exactly why you labelled them.
  • Endstops: X, Y and Z, three two-pin connectors.
  • Hotend: the heater cartridge (two thicker wires) and the thermistor (two thin wires).
  • Fans: the part-cooling fan and the hotend fan.
  • Bed: the heater wires (thick, usually screw terminals) and the bed thermistor.
  • Display: the ribbon cable to the LCD.
  • Power: the 24 V input from the PSU. Note the polarity now (it is printed on the board next to the terminal).

Some connectors are held in by a small tab; pull on the plastic housing, never on the wires themselves.

3. Unscrew and remove the old board
#

Four screws into the standoffs, then lift the board out. Keep the screws; you will reuse them.

4. Mount the SKR Mini E3
#

It goes onto the same standoffs with the same screws. If it does not line up, stop and check that you have the Ender 3 variant of the board rather than a different SKR model.

5. Reconnect, using the silkscreen
#

Every port on the SKR Mini E3 is labelled on the PCB. Go through the same list as before, matching the label rather than the position: XM, YM, ZM, EM for the motors; X-STOP, Y-STOP, Z-STOP for the endstops; HE0 and TH0 for the hotend heater and thermistor; FAN0 and FAN1 for the part-cooling and hotend fans; HB and TB for the bed; EXP1 for the display.

Do the 24 V input last, and double-check the polarity against what you noted in step 2. This is the one connector that can destroy the board if it goes on backwards.

A note on the extruder motor. On this board the extruder connector ends up electrically reversed compared to the stock Creality wiring. Do not fix this by re-crimping the connector or flipping wires around. It is fixed in firmware with a single line, #define INVERT_E0_DIR true, which is part of the configuration in part 4. If you flash BIGTREETECH’s prebuilt firmware and the extruder runs backwards, this is why.

Placeholder graphic reading New board installed photo coming soon
The SKR Mini E3 V2.0 mounted on the stock standoffs with everything reconnected, before the cover goes back on.

Getting firmware onto it
#

A new SKR Mini E3 does not arrive knowing it is attached to an Ender 3. It needs firmware, and the flashing process is refreshingly simple:

  1. Format a microSD card as FAT32. Cards of 32 GB or smaller are the safe choice; some boards are picky about larger ones. A 4096-byte allocation unit size is the usual recommendation.
  2. Copy a file named exactly firmware.bin to the root of the card. Not in a folder.
  3. With the printer powered off, insert the card into the board’s microSD slot.
  4. Power on and wait. The board reads the file, writes it to flash, and renames the file on the card to FIRMWARE.CUR to mark it as consumed. The LCD comes up when it is done.

That rename is your success indicator. If the file is still called firmware.bin after a power cycle, the board never read it: wrong format, wrong filename, wrong card, or the file was in a subfolder.

BIGTREETECH ships prebuilt binaries in their repository, under firmware/V2.0/, including firmware.bin, firmware-bltouch.bin and firmware-bltouch-for-z-homing.bin. They are a perfectly reasonable way to confirm the board works the first time you power it up, and a useful fallback if a build of your own misbehaves. But they are generic, and they will not know your probe offsets, your bed size or your preheat temperatures. Compiling your own is the point of part 4.


First power-on: check before you print
#

Although it is tempting to load filament and start a Benchy right away, resist the urge. Do this instead, with the cover still off so you can reach the power switch quickly:

Power on with nothing heating. The display should light up and show the usual Marlin status screen. If it stays dark, power off immediately and check the display ribbon and the 24 V connector.

Move each axis from the menu. Small moves, 10 mm at a time. Each axis should move in the direction you asked. If an axis moves the wrong way, that is a firmware direction setting, not a wiring fault.

Test the endstops. Connect over USB with a terminal (Pronterface, OctoPrint, or the serial monitor in VS Code) and send:

M119

You get a report of every endstop’s state. Trigger each one by hand and send M119 again; the corresponding line should flip between open and TRIGGERED. If an endstop reports TRIGGERED when nothing is touching it, check that connector before you ever home the machine.

Then home. G28, watching the machine with a finger over the power switch. Homing is when a wrong endstop or a wrong direction turns into a crashed axis.

Check the thermistors before the heaters. With everything cold, the hotend and bed temperatures on the display should both read something close to room temperature. If either reads a wild number, you have the thermistors swapped or a bad connection, and you do not want to find that out by turning on a heater.

Only once all of that is clean, put the cover back on and print something small.


What you gain, and what is next
#

Immediately after the swap, two things change: your printer gets dramatically quieter, and flashing firmware becomes a drag-and-drop operation instead of a soldering project. That second one is what actually matters, because it turns the firmware from something fixed into something you can keep iterating on. When I did this swap, that shift was the whole point: it is what made the next two upgrades in this series possible in the first place.

Additionally, you now own a board with headroom you did not have before: twice the flash, a dedicated probe header, and drivers you control from software instead of a screwdriver. That headroom is exactly what the rest of this series spends. Part 3 installs a BLTouch probe on the hotend using a printed mount, wires it into the dedicated probe header this board provides, and works out the probe offsets. Part 4 sets up VS Code with PlatformIO and Auto Build Marlin, and walks through every configuration change needed to compile firmware that knows about all of it.

Ender 3 Upgrade - This article is part of a series.
Part 2: This Article