Klipper Firmware: Why You Should Switch and How to Set It Up
This article may contain affiliate links. If you make a purchase through these links, we may earn a small commission at no extra cost to you. This helps us keep creating free content.
If you're running Marlin on a budget printer with an 8-bit control board, you've probably noticed the limitations. Curved surfaces stutter because the processor can't calculate fast enough. Acceleration is conservative because the board runs out of processing headroom. Advanced features like pressure advance and input shaping aren't available at all. Klipper solves every one of these problems by moving the math to a much more powerful computer.
Klipper is open-source firmware that splits the workload: a Raspberry Pi (or similar single-board computer) handles all the trajectory planning and calculations, then sends pre-computed step commands to the printer's control board over USB. The control board becomes a dumb executor of precise timing signals, which is exactly what a simple microcontroller is good at. The result is faster, smoother, more capable printing from the same hardware you already own.
Why Switch from Marlin?
Speed: Klipper's superior motion planning handles higher accelerations without quality loss. An Ender 3 running Marlin typically maxes out around 60-80 mm/s before quality degrades. The same printer on Klipper with input shaping tuned can hit 150+ mm/s with equal or better quality.
Input shaping: This is the killer feature. Input shaping uses an accelerometer to measure your printer's resonance frequencies, then actively cancels the vibrations that cause ghosting and ringing artifacts. The result is clean print surfaces at speeds that would produce ugly ringing on Marlin.
Pressure advance: The Klipper equivalent of Marlin's linear advance, but more precisely tuned. Pressure advance compensates for the pressure buildup and release in the nozzle during speed changes, producing sharper corners and cleaner transitions between infill and perimeters.
Configuration flexibility: Klipper uses a plain-text configuration file (printer.cfg) instead of requiring firmware recompilation for every change. Adjust PID values, stepper currents, retraction settings, and motion parameters by editing a text file and restarting, no reflashing needed.
What You Need
Creality Ender 3 V2
Silent 32-bit board + carborundum glass bed, 220Γ220Γ250, the classic tinkerer entry printer.
See on Amazon β- Raspberry Pi 3B+, 4, or 5 (Pi 4 with 2GB+ RAM recommended). Pi Zero 2W works but is borderline on processing power for complex prints.
- MicroSD card (16GB+ Class 10)
- USB cable connecting the Pi to your printer's control board
- 5V/3A power supply for the Pi (use the official one, cheap PSUs cause brownouts and crashes)
- Your printer's control board documentation, you need to know the MCU type (STM32, ATMEGA2560, etc.) and pin mappings
Optional but highly recommended: an ADXL345 accelerometer for input shaper calibration ($5-10 on Amazon). This transforms print quality at high speeds.
Step 1: Install KIAUH on the Raspberry Pi
KIAUH (Klipper Installation And Update Helper) is a script that automates the entire installation. Flash Raspberry Pi OS Lite to your SD card, boot the Pi, connect via SSH, and run:
sudo apt update && sudo apt upgrade -y
git clone https://github.com/dw-0/kiauh.git
cd kiauh && ./kiauh.sh
From the KIAUH menu, install these components in order:
- Klipper, the core firmware
- Moonraker, the API server that lets web interfaces communicate with Klipper
- Mainsail or Fluidd, your web interface (pick one; both are excellent, Mainsail is slightly more feature-rich)
The entire installation takes about 15-20 minutes on a Pi 4.
Step 2: Flash the MCU Firmware
Klipper needs a small firmware binary on your printer's control board. From the KIAUH menu, select "Build Firmware" and choose your board's MCU. Common configurations:
- Ender 3 (4.2.2/4.2.7 board): STM32F103 with 28KB bootloader
- SKR Mini E3: STM32F103 with 28KB bootloader
- BTT Octopus: STM32F446 with 32KB bootloader
After building, copy the firmware binary to an SD card, insert it into the printer board, and power on. The board flashes itself automatically on most Creality and BTT boards.
Step 3: Configure printer.cfg
This is where the real work happens. The printer.cfg file defines every aspect of your printer's behavior. Klipper provides example configurations for hundreds of printers in its repository, start with the one closest to your machine and customize from there.
Key sections you'll need to configure:
[mcu]
serial: /dev/serial/by-id/usb-xxx # Your printer's USB serial path
[printer]
kinematics: cartesian # or corexy, delta, etc.
max_velocity: 300
max_accel: 3000
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40 # mm per full rotation
endstop_pin: ^PA5
position_endstop: 0
position_max: 235
homing_speed: 50
The critical value is rotation_distance, this replaces Marlin's steps-per-mm and defines how far each axis moves per motor revolution. For standard 2GT belts with 20-tooth pulleys, rotation_distance is 40. For lead screws with 8mm pitch, it's 8.
ls /dev/serial/by-id/ with the printer connected via USB. Copy the full path into your [mcu] section. Using the by-id path (not /dev/ttyUSB0) ensures the connection survives USB port changes and reboots.Step 4: First Boot and Basic Calibration
Access Mainsail or Fluidd through your browser at http://your-pi-ip. If the printer connects successfully, you'll see temperature readings and be able to send commands. Run these initial calibrations:
- PID tune the hot end:
PID_CALIBRATE HEATER=extruder TARGET=200 - PID tune the bed:
PID_CALIBRATE HEATER=heater_bed TARGET=60 - Home all axes:
G28, verify directions are correct and endstops trigger properly - Check extruder direction: Heat the nozzle, command
G1 E50 F300, and verify filament feeds forward (not backward) - Level the bed: Use
BED_SCREWS_ADJUSTfor manual leveling or configure your probe for automatic bed mesh
Save configuration after each PID tune with SAVE_CONFIG, Klipper writes the tuned values to the bottom of printer.cfg automatically.
Step 5: Input Shaper (The Fun Part)
Wire your ADXL345 accelerometer to the Pi's SPI pins (or use a USB accelerometer like the KUSBA), add the accelerometer config to printer.cfg, and run:
SHAPER_CALIBRATE
Klipper moves the print head through a range of frequencies, measures the resonance response, and recommends optimal input shaper settings for each axis. Apply them, and ghosting artifacts vanish at speeds that would have produced ugly ringing before. This single feature justifies the entire Klipper setup for many users.
Klipper's learning curve is steeper than Marlin's plug-and-play approach, but the community has made it dramatically more accessible. The Klipper documentation, r/klippers subreddit, and Ellis' Print Tuning Guide cover every edge case you'll encounter. Take the plunge, you won't go back.
Published by the 3D Printer Stuff editorial team. Published August 4, 2026.
Editorial responsibility: see Imprint.
Spotted an error or have something to add? corrections@3dprinterstuff.com
Explore more
All articles on 3D Printer Stuff β
Maker Tips, Delivered
New guides, filament tests, and project ideas β every week in your inbox.
π Free bonus: 3D Printing Starter Checklist (PDF)
You might also like
Klipper Firmware Setup: The Complete Installation and Configuration Guide
Step-by-step guide to installing Klipper firmware on your 3D printer with a Raspberry Pi, including configuration, calibration, and the performance gains you can expect.
Understanding G-Code: The Commands Behind Every Print
Every 3D print is just a list of G-code commands telling the printer where to move, how fast, and how much filament to push. Understanding the basics gives you real power over your prints.
How to Print TPU Flexible Filament Without Losing Your Mind
TPU opens up phone cases, gaskets, and wearable prints β but it fights you every step of the way if your settings are wrong. Here's how to tame flexible filament on any FDM printer.