Slicers & Firmware¶
The slicer turns a model into G-code; the firmware turns G-code into motion and heat. This page compares the main slicers, explains Klipper versus stock firmware, and gives a full calibration sequence and a way to keep profiles under control. For what the individual settings do, see Print Settings.
Slicer comparison¶
| Slicer | Licence | Lineage | Printers | Calibration tools | Networking |
|---|---|---|---|---|---|
| PrusaSlicer | AGPL-3.0 | Fork of Slic3r | Prusa (FDM + resin) plus many bundled vendor profiles | No calibration menu; Prusa printers run first-layer/self-tests on the machine, the rest is done with test models | PrusaConnect, PrusaLink, OctoPrint and other "physical printer" hosts |
| Bambu Studio | AGPL-3.0 (optional network plugin is closed-source) | Fork of PrusaSlicer | Bambu Lab first; profiles for some other brands | Calibration menu: flow dynamics (pressure advance, auto on some models), flow rate, max volumetric speed and more | Bambu cloud and LAN via the network plugin; SD card without it |
| OrcaSlicer | AGPL-3.0 (optional Bambu network plugin) | Fork of Bambu Studio, with features from PrusaSlicer, SuperSlicer and Cura | Very wide: Bambu, Prusa, Creality, Voron, RatRig, Sovol and more | The most complete set: temperature, max volumetric speed, pressure advance, flow ratio, retraction, cornering, input shaping, VFA, tolerance | Klipper (Moonraker), PrusaLink, OctoPrint, Bambu (via plugin) |
| UltiMaker Cura | LGPL-3.0 | Independent (CuraEngine) | UltiMaker plus a large community profile library | Few built in; community plugins via the Marketplace | UltiMaker Digital Factory; others via Marketplace plugins |
graph LR
A[Slic3r] --> B[PrusaSlicer]
B --> C[SuperSlicer]
B --> D[Bambu Studio]
D --> E[OrcaSlicer]
B -.ideas.-> E
C -.ideas.-> E
Choosing
- Own a Bambu? Bambu Studio (simplest) or OrcaSlicer (more tuning).
- Own a Prusa? PrusaSlicer — profiles are tuned and maintained by Prusa.
- Klipper or mixed fleet? OrcaSlicer — broadest printer list and built-in calibration prints.
- UltiMaker / education fleet? Cura.
They're more alike than different
The three Slic3r-family slicers share most setting names, the .3mf
project format and much of the slicing code, so skills transfer. Profiles
mostly import between them, but always check temperatures and speeds after
importing.
Slicer time estimates depend on the profile
A print-time estimate is only as good as the motion limits the slicer
assumes. Acceleration, jerk/junction deviation and speed caps in the profile,
the firmware's own limits, and whether the slicer's motion model matches the
firmware (Klipper's planner differs from Marlin's) all change the answer —
community reports of 10–30 % error are common. A custom or "quality" profile
with slower outer walls, lower accelerations or more walls can take much
longer than the stock-profile estimate. Compare estimates only within the
same profile and printer, and if you need accuracy on Klipper, a tool such as
klipper_estimator can rewrite the times using Klipper's own kinematics.
Firmware: stock vs Klipper¶
| Firmware | Where you'll find it | Runs on | Notes |
|---|---|---|---|
| Marlin | Most older/budget bed-slingers (Ender-3 era) | The printer's mainboard | Open source. Linear Advance (M900 K…) for pressure; ZV input shaping since 2.1.2 (M593), more shapers via Fixed-Time Motion. Config changes usually mean recompiling and reflashing. |
| Prusa firmware | Prusa printers | Mainboard | Open source. Current models (MK4/S, MK3.5/3.9, MINI, XL, CORE One) have input shaper and pressure advance; they need matching PrusaSlicer profiles. |
| Bambu firmware | Bambu printers | Mainboard | Closed source. Automatic calibration (bed level, vibration compensation, and on X1/A1/H2D auto flow dynamics, i.e. pressure advance; P1 is manual). |
| Klipper | Voron/RatRig and many kits; vendor forks on Creality K1/K2, Sovol SV08 and others | Host computer (e.g. Raspberry Pi) + printer MCU(s) | Open source. Plain-text config, no reflashing for setting changes. Input shaping, smooth pressure advance, macros, multiple MCUs. |
How Klipper works¶
- Host + MCU. The host (a Raspberry Pi or the printer's built-in Linux board) does the kinematics and schedules every step; the microcontroller just executes them on time. More CPU = more complex motion maths without slowing down.
printer.cfg. All settings live in a text file; edit,RESTART, done. Calibration results are written back withSAVE_CONFIG.- Input shaping (
[input_shaper]) cancels frame resonance to reduce ringing, allowing higher acceleration. Tune with a ringing tower or an accelerometer (ADXL345 and similar). - Pressure advance compensates for nozzle pressure lag for sharper corners and less ooze — tune per filament.
- Macros (
[gcode_macro]) define new G-code commands with conditional logic:PRINT_START,M600filament change (built onPAUSE/RESUME), purge lines, heat-soak routines. - Front ends. Moonraker is the API server that sits beside Klipper; Mainsail and Fluidd are browser UIs built on it (OctoPrint also works).
Vendor Klipper forks
Printers that "run Klipper" out of the box (e.g. Creality K1/K2, Sovol SV08) usually ship a vendor fork: older Klipper, custom macros and sometimes a locked-down UI. Root access and mainline-Klipper conversions exist (Creality added an official root option; community projects move the SV08 to mainline), but they can void the warranty and break vendor features. Read the vendor release notes and the community project's README before flashing.
Calibration sequence¶
This extends the short list in Print Settings → Calibration order. Do the machine steps once (and after hardware changes); repeat the filament steps for each new filament brand/type.
| # | Step | Level | Why / how |
|---|---|---|---|
| 0 | Mechanical check | Machine | Belts tensioned, eccentric nuts/rods snug, frame square. No calibration fixes loose hardware. |
| 1 | PID tune hotend and bed | Machine | Stable temperatures. Klipper: PID_CALIBRATE HEATER=extruder TARGET=… then SAVE_CONFIG; Marlin: M303. |
| 2 | E-steps / rotation distance | Machine | Extruder pushes what it's told. Mark filament, extrude a known length slowly, measure, scale. (Klipper: rotation_distance; Marlin: steps/mm.) |
| 3 | First layer / Z-offset | Machine (+ bed sheet) | Correct squish. See Basics → Bed adhesion. |
| 4 | Temperature | Filament | Temperature tower; everything later depends on viscosity. |
| 5 | Flow / extrusion multiplier | Filament | Walls and top surfaces the right thickness. |
| 6 | Pressure / linear advance | Filament | Sharp corners, even line ends. |
| 7 | Retraction | Filament | Stringing test, after flow and PA (both change nozzle pressure). |
| 8 | Max volumetric speed | Filament + hotend | Highest flow (mm³/s) before under-extrusion; caps all speeds safely. |
| 9 | Input shaping (+ max acceleration) | Machine | Ringing tower or accelerometer; pick the acceleration where ringing and smoothing are acceptable. |
| 10 | Tolerance / dimensional test | Final check | Peg-and-hole fit test; feeds the clearances in Design for Printing. |
Sources disagree on the order
OrcaSlicer's guide runs temperature → max volumetric speed → pressure advance → flow ratio → retraction, then the advanced tests (cornering, input shaping, VFA, adaptive PA) and tolerance last — it puts PA before flow because a tuned PA makes the flow test easier to read. Ellis' guide also does PA before extrusion multiplier; Teaching Tech does flow first and linear advance near the end. Either works: if flow changes a lot, re-run a quick PA test. Many people also tune input shaping early on a new machine, since it is a machine property.
Let the printer do it where it can
Bambu printers and Prusa's current models calibrate several of these automatically (bed mesh, Z-offset, resonance, flow dynamics on supported models). Start from the stock profile and only hand-tune what the print shows is wrong — see Troubleshooting.
Profile management¶
Every Slic3r-family slicer splits settings into printer, filament and print (process) profiles.
- System profiles ship with the slicer and are updated with it — read-only.
- User profiles are your edited copies. Most inherit from a system profile and store only the differences, so slicer updates can change the inherited values underneath you. Detach (remove the parent link) if you need a profile frozen.
- Exporting. PrusaSlicer: File → Export → Export Config / Config Bundle. OrcaSlicer: File → Export → Export Preset Bundle (printer bundle with its filament + process presets, or filament-only). Bundles flatten inheritance into complete profiles (each profile written out in full), so keep your own "master" copy if you rely on inheritance.
Bundles can contain secrets
PrusaSlicer's Export Config Bundle with Physical Printers includes printer API keys and IP addresses. Don't share it or commit it to a public repo.
Practical habits:
- One filament profile per brand/line, named like
Brand PETG – Black 2026(colour matters for black/white/silk). Note drying status and the PA/flow values you measured. Material behaviour is covered in Filaments and Material Selection. - Back up the config folder. OrcaSlicer: Help → Show Configuration Folder
(
~/.config/OrcaSlicer/user/…on Linux,%APPDATA%\OrcaSliceron Windows); user presets are JSON files infilament/,machine/andprocess/. PrusaSlicer stores.inifiles in its own config directory. - Version control the user folder (or exported bundles) with git: text diffs show exactly which setting changed between a good print and a bad one. Exclude anything holding API keys or access codes.
- Cloud sync (Bambu Cloud, OrcaCloud) is convenient but is not a backup — keep a local copy too.
Sources & further reading¶
- PrusaSlicer (GitHub)
- Bambu Studio (GitHub)
- OrcaSlicer (GitHub)
- UltiMaker Cura (GitHub)
- UltiMaker Cura — product page
- OrcaSlicer Wiki
- OrcaSlicer Wiki — Calibration guide (suggested order)
- OrcaSlicer Wiki — User profiles
- Prusa Knowledge Base — Import and export custom profiles in PrusaSlicer
- Prusa Knowledge Base — Input Shaper
- Klipper — Features
- Klipper — Configuration checks (PID)
- Klipper — Rotation distance
- Klipper — Pressure advance
- Klipper — Resonance compensation
- Klipper — G-Codes (PAUSE/RESUME, macros)
- Moonraker documentation
- Mainsail documentation
- Fluidd documentation
- Marlin — Input Shaping
- Marlin — Linear Advance
- Bambu Lab Wiki — Flow dynamics (pressure advance) calibration
- Bambu Lab Wiki — Flow rate calibration
- Creality — K1 Series Klipper releases
- Sovol SV08 Mainline (community)
- Ellis' Print Tuning Guide
- Teaching Tech — 3D Printer Calibration
- klipper_estimator