ender5-plus-upgrade.md — ryan-griffin.com
← main site
projects › 3d-printing › ender5-plus-upgrade.md

Rebuilding an Ender 5 Plus: Manta M8P, HDMI touchscreen, and direct drive

// 3d-printing · October 2026 · hardware, firmware, Klipper

TODO: Draft written from the build outline. Yellow boxes like this one mark spots for your own numbers, photos and stories. Delete each box once it's filled in.

The Creality Ender 5 Plus has a lot going for it: a rigid cube frame, a 350 × 350 × 400 mm build volume, and dual Z motors. The electronics, however, held it back. It shipped with a stock Creality board running Marlin, a small proprietary touchscreen, and a long Bowden tube between the extruder and the hotend. This project replaced all three.

##Goals

  • Quieter, more capable motion: modern TMC drivers and a faster controller.
  • Klipper firmware: configuration in a text file, input shaping, pressure advance, and no recompiling to change a setting.
  • A real touchscreen: an HDMI display running KlipperScreen instead of the stock panel.
  • Direct drive: better retraction, cleaner flexible filament, and less stringing.

##Parts list

PartRoleNotes
BigTreeTech Manta M8PMainboard (MCU)8 stepper slots, onboard socket for a compute module. TODO: board revision (v1.x / v2.0)
BTT CB1 or Raspberry Pi CM4Klipper hostRuns Linux, Klipper, Moonraker, Mainsail and KlipperScreen right on the M8P. TODO: which one
TMC2209 stepper drivers ×5X, Y, Z, Z1, EUART mode, so current is set in config instead of with a screwdriver. TODO: confirm driver model and count
HDMI touchscreenLocal UITODO: model and size (e.g. BTT HDMI5 / HDMI7)
Micro Swiss Direct Drive Extruder (Ender 5 Plus)ExtruderMounts on the carriage and reuses the stock extruder stepper.
Wiring suppliesConnectorsJST-XH crimp kit, ferrules, labels, zip ties.

##How the pieces fit together

# signal path after the upgrade
 browser (Mainsail) ──Wi-Fi/LAN──┐
                                 ▼
 HDMI touchscreen ◀─HDMI── [ CB1/CM4 : Linux ]
   (KlipperScreen)          klipper · moonraker
                                 │  internal USB
                                 ▼
                         [ Manta M8P MCU ]
                    steppers · heaters · thermistors
                    endstops · BLTouch · fans

In Klipper, the Linux host handles the computation (kinematics, input shaping, motion planning) and streams precisely timed steps to the microcontroller. Because the M8P carries the compute module on the board itself, the whole printer runs from one board and one power supply. No separate Raspberry Pi is needed.

##1 · Document before you disconnect

Before unplugging anything, I photographed every connector on the stock board and labeled each cable with its function (X-MOT, Z-END, BED-TH…). The Ender 5 Plus has a lot of wiring running to the electronics bay, and several connectors look identical.

[ photo: stock board with labeled wiring ]
TODO: add photo (assets/img/ender-stock-board.jpg)

TODO: Note anything surprising about the stock wiring, such as connectors that didn't match the new board or wires you had to extend.

##2 · Mounting the Manta M8P

The M8P's footprint and hole pattern differ from the stock board's, so it needs an adapter.

TODO: Describe how you mounted it (printed adapter plate, standoffs, a link to the model you used) and how you handled cooling for the drivers and the compute module.

##3 · Wiring

I connected each motor and sensor to the M8P and recorded every port assignment in a table. That table later becomes the pin map in printer.cfg.

FunctionM8P port
X stepperTODO
Y stepperTODO
Z / Z1 steppers (dual Z)TODO
Extruder stepperTODO
X / Y endstopsTODO
BLTouch (probe + servo)TODO
Hotend heater / thermistorTODO
Bed heater / thermistorTODO: note whether the bed is switched through an external MOSFET or SSR
Part / hotend fansTODO
Filament runout sensorTODO

Two things are easy to get wrong here. First, the driver jumpers must be set for UART mode. Second, crimp quality matters: a loose heater or thermistor connection is a fire risk, not just a print defect. Klipper's verify_heater checks help protect against this, but they don't replace a good crimp.

##4 · Installing Klipper

Host (CB1 / CM4)

I flashed BigTreeTech's Linux image to the compute module, connected over SSH, and installed the software stack with KIAUH:

git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh
# install: Klipper → Moonraker → Mainsail → KlipperScreen

MCU firmware (the M8P itself)

Klipper's firmware for the board's STM32 chip is built with make menuconfig. The processor model, bootloader offset, clock and communication settings depend on the board revision, so I copied them straight from BigTreeTech's Manta M8P documentation.

cd ~/klipper
make menuconfig     # settings per BTT docs for your M8P revision
make clean && make
# then flash per BTT's instructions, and find the MCU's serial path:
ls /dev/serial/by-id/

TODO: Paste the menuconfig settings and flashing method you actually used.

##5 · printer.cfg

I started from the generic Manta M8P example in Klipper's config/ folder, which already has the board's pin names, and then added the Ender 5 Plus geometry. Here is a trimmed excerpt, with pins left as placeholders:

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32..._XXXX-if00

[printer]
kinematics: cartesian
max_velocity: 300        # TODO: your tuned values
max_accel: 3000
max_z_velocity: 10

[stepper_x]
step_pin: PIN_FROM_SAMPLE
rotation_distance: 40    # GT2 belt, 20-tooth pulley
microsteps: 16
position_max: 350       # TODO: measure your real travel

[stepper_z]            # + [stepper_z1] for the second Z motor
rotation_distance: 8     # TODO: confirm lead screw pitch
position_max: 400

[tmc2209 stepper_x]
uart_pin: PIN_FROM_SAMPLE
run_current: 0.8        # TODO

[bltouch]
sensor_pin: ^PIN_FROM_SAMPLE
control_pin: PIN_FROM_SAMPLE
x_offset: 0             # TODO: offsets for the Micro Swiss mount
y_offset: 0

[bed_mesh]
mesh_min: 30, 30
mesh_max: 320, 320
probe_count: 7, 7

The full, working config is linked at the end of this post.

TODO: Link your full printer.cfg (e.g. a GitHub repo or a file at /projects/files/ender5plus-printer.cfg).

##6 · Micro Swiss direct drive

The Micro Swiss kit replaces the frame-mounted extruder and long Bowden tube with a short, direct filament path on the carriage. Moving to direct drive changes three settings:

  • rotation_distance: the new drive gears push a different amount of filament per motor revolution, so I recalibrated. Mark the filament 120 mm above the extruder, command 100 mm of extrusion, and measure what's left.
    new = old × (actual mm extruded ÷ 100)
  • Retraction: drops from several millimeters with Bowden to roughly 0.5–1 mm. I tuned it with a retraction tower.
  • Pressure advance: much lower than with Bowden. I tuned it with Klipper's tower test (TUNING_TOWER).
# extruder calibration, with the hotend at printing temp
G91
G1 E100 F60
# measure, update rotation_distance, then FIRMWARE_RESTART

The added weight on the carriage affects ringing, which makes input shaping more important after this upgrade than before.

TODO: Add your final rotation_distance, retraction and pressure_advance values. If you ran input shaper calibration (accelerometer or ringing tower), add those results too.

[ photo: Micro Swiss direct drive on the carriage ]
TODO: add photo

##7 · HDMI touchscreen + KlipperScreen

The stock touchscreen speaks a proprietary protocol to Marlin, so it can't be reused with Klipper. In its place, the HDMI display plugs into the compute module and runs KlipperScreen, which provides temperatures, a bed mesh view, file selection and macros. Touch input comes in over USB.

TODO: Describe how you mounted the screen (printed bracket? reused the stock location?) and any rotation or calibration settings you needed.

[ photo: KlipperScreen running on the printer ]
TODO: add photo

##Results

Before (stock)After
FirmwareMarlinKlipper
ExtruderBowdenMicro Swiss direct drive
InterfaceStock touchscreenHDMI + KlipperScreen, Mainsail on the network
Benchy print timeTODOTODO
NoiseTODOTODO

##Lessons learned

TODO: Three or four honest bullet points: what broke, what took longest, and what you'd do differently. Hiring managers read this section most closely, because it shows how you troubleshoot.


Next up: how this site is self-hosted on a Synology DS920+ (DNS, port forwarding, firewall rules and a Let's Encrypt certificate).