Amalgam Calibration Cheat Sheet
Quick reference for Klipper calibration commands. For detailed explanations, see calibration-guide.md.
The 80/20 Path (Quick Start)
Just want to print? Do these 3 things and you’re 80% calibrated:
| Step | Time | What to Check | |
|---|---|---|---|
| 1. First Layer | See options below | 2-10 min | Lines touch, smooth surface, consistent |
| 2. Dimensions | xyz_calibration_cube.stl |
15 min | Measures 20.0mm on all axes |
| 3. Quality | 3DBenchy.stl |
60 min | No stringing, good overhangs, clean detail |
First layer options: - first_layer_patch_0.2mm.stl - Quick center check (~2 min) - first_layer_grid.stl - Full bed test (~10 min) - prusa_live_z.stl - Adjust Z live while printing (~8 min)
If all three pass: You’re ready to print. Do the advanced tuning later (or never).
If something’s wrong: Check the troubleshooting table at the bottom, then do the relevant advanced calibration.
# Generate parametric calibration prints (uses your bed size)
./build.sh build first_layer_grid # Grid of squares
./build.sh build prusa_live_z # Prusa-style live Z pattern
# Download standard calibration prints
python utilities/download_calibration.pySimple vs Advanced Path
| Path | Prints | Time | Result |
|---|---|---|---|
| Simple (80/20) | First layer → XYZ cube → Benchy | ~90 min | Good prints, works for most people |
| Advanced | All 10 steps below | 3-4 hours | Optimized PA, Input Shaper, perfect corners |
When to go Advanced: - Printing functional parts with tight tolerances - Seeing ringing/ghosting artifacts - Corners are bulging or have gaps - Want maximum print speed
Parametric Calibration Prints (build123d)
Generated to match your bed size from config.py:
| Model | Command | Use For |
|---|---|---|
first_layer_grid.stl |
./build.sh build first_layer_grid |
Grid of squares across bed |
first_layer_snake.stl |
(generated with grid) | Alternative snake pattern |
prusa_live_z.stl |
./build.sh build prusa_live_z |
Live Z adjustment while printing |
First Layer Test Options
| Pattern | Source | Best For |
|---|---|---|
first_layer_patch_0.2mm.stl |
Ellis (download) | Quick center check (~2 min) |
first_layer_grid.stl |
Amalgam (build123d) | Full bed coverage, tests mesh leveling |
prusa_live_z.stl |
Amalgam (build123d) | Live Z adjustment while printing |
Quick check? Use Ellis patch (center only). Testing bed mesh? Use grid (covers entire bed). Tuning Z-offset? Use Prusa pattern (adjust while printing).
Downloaded Calibration Models
Run python utilities/download_calibration.py to download these:
| Model | Size | Use For | Source |
|---|---|---|---|
first_layer_patch_0.2mm.stl |
0.2mm | First layer / bed level | Ellis |
extrusion_multiplier_cube.stl |
~25mm | Flow rate calibration | Ellis |
xyz_calibration_cube.stl |
20mm | Quick dimensional check | 5axes |
voron_design_cube.stl |
30mm | Advanced calibration | Voron |
square_tower.stl |
~80mm | PA, Temperature | Klipper |
ringing_tower.stl |
~80mm | Input Shaper | Klipper |
3DBenchy.stl |
~48mm | Final validation | CreativeTools |
Key: TUNING_TOWER requires a tall object. Use square_tower.stl, NOT the cubes.
XYZ Cube vs Voron Cube
| Feature | XYZ Cube (20mm) | Voron Cube (30mm) |
|---|---|---|
| Dimensional check | Yes | Yes |
| Overhang test | No | Yes (logos) |
| Bridging test | No | Yes (internal) |
| Bearing fit test | No | Yes (625, F695) |
| PA corner check | No | Yes (90° corners) |
| Print time | ~15 min | ~30 min |
Use XYZ cube for quick dimensional checks. Use Voron cube when tuning for functional parts with bearing fits and overhangs.
Voron Cube vs Benchy
| Test | Voron Cube | Benchy |
|---|---|---|
| Dimensions | Yes (30mm) | Yes (60mm hull) |
| Overhangs | Yes (logos) | Yes (hull, multiple angles) |
| Bridging | Yes (internal) | Yes (cabin roof) |
| Fine detail | No | Yes (text, windows) |
| Curved surfaces | No | Yes (hull) |
| Stringing test | No | Yes (chimney) |
| Bearing fits | Yes | No |
| PA corners | Yes | No |
| Universal reference | No | Yes (compare to millions online) |
Voron cube = “Can I print functional parts?” (tolerances, bearing fits) Benchy = “Does my print look right?” (visual reference everyone knows)
Recommendation: Print Voron cube for functional validation. Print Benchy if you want visual comparison or suspect quality issues. Print Fidget Bolt as the real victory test (working threads = well calibrated).
Calibration Order (Advanced Path)
| # | Step | Path | Required? |
|---|---|---|---|
| 1 | Mechanical check | Both | Yes |
| 2 | PID tune hotend & bed | Both | Yes (once) |
| 3 | Z-offset & bed mesh | Both | Yes |
| 4 | First layer test | Simple | Yes |
| 5 | Extruder steps (e-steps) | Advanced | If dimensions off |
| 6 | Pressure Advance | Advanced | If corners bulge |
| 7 | Input Shaper | Advanced | If ringing/ghosting |
| 8 | Flow rate | Advanced | If walls wrong thickness |
| 9 | Temperature | Advanced | Per filament |
| 10 | Retraction | Advanced | If stringing |
Simple path: Steps 1-4, then print XYZ cube and Benchy to validate.
1. PID Tuning
Stabilizes temperature control. Run once per hotend/bed change.
# Hotend (at typical print temp)
PID_CALIBRATE HEATER=extruder TARGET=210
# Bed
PID_CALIBRATE HEATER=heater_bed TARGET=60
# Save results
SAVE_CONFIG
2. Z-Offset & Bed Mesh
G28 # Home all
PROBE_CALIBRATE # Interactive Z-offset (paper test)
# Adjust with TESTZ Z=-0.1 or TESTZ Z=+0.1
ACCEPT # When paper drags slightly
SAVE_CONFIG
# Then create bed mesh
G28
BED_MESH_CALIBRATE
SAVE_CONFIG
Live Z adjust during print:
SET_GCODE_OFFSET Z_ADJUST=-0.02 MOVE=1 # Lower (more squish)
SET_GCODE_OFFSET Z_ADJUST=+0.02 MOVE=1 # Higher (less squish)
3. First Layer Test
Print the Ellis first layer patch (first_layer_patch_0.2mm.stl).
| Symptom | Fix |
|---|---|
| Lines don’t touch | Lower Z-offset |
| Rough/transparent | Lower Z-offset |
| Ridges between lines | Raise Z-offset |
| Varies across bed | Re-run BED_MESH_CALIBRATE |
4. Extruder Steps (E-steps)
Ensures extruder pushes exactly 100mm when asked.
# Heat hotend
M104 S210
# Mark filament 120mm from extruder entrance
# Extrude 100mm slowly
G91 # Relative mode
G1 E100 F100 # Extrude 100mm at 100mm/min
G90 # Back to absolute
# Measure remaining distance to mark
# If 20mm remains = perfect. If 18mm remains = over-extruding.
Calculate new e-steps:
new_e_steps = current_e_steps × (100 / actually_extruded)
Update rotation_distance in printer.cfg (inverse relationship).
5. Pressure Advance
Compensates for filament pressure lag. Eliminates bulging corners.
Print: square_tower.stl (~80mm tall)
# Set conservative speed limits
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
# Start tuning tower - parameter changes with Z height
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
Examine the tower walls. Find the height where corners look best (no bulging, no gaps).
PA = START + (height_in_mm × FACTOR)
PA = 0 + (10mm × 0.005) = 0.05
Typical values: | Filament | PA Range | |———-|———-| | PLA | 0.02 - 0.08 | | PETG | 0.05 - 0.10 | | TPU | 0.10 - 0.20 |
Add to printer.cfg:
[extruder]
pressure_advance: 0.056. Input Shaper
Eliminates ringing/ghosting. Klipper’s superpower.
Option A: With accelerometer (recommended)
SHAPER_CALIBRATE
SAVE_CONFIG
Option B: Manual with ringing tower
# Print ringing_tower.stl at 80-100mm/s
# Examine for ringing patterns
# Try different shapers:
SET_INPUT_SHAPER SHAPER_FREQ_X=40 SHAPER_FREQ_Y=40 SHAPER_TYPE=mzv
Add to printer.cfg:
[input_shaper]
shaper_freq_x: 40
shaper_freq_y: 40
shaper_type: mzv7. Flow Rate / Extrusion Multiplier
Print Ellis extrusion_multiplier_cube.stl (single wall, 0 infill, 0 top layers).
Measure wall thickness with calipers. Should equal line width (typically 0.4mm).
new_flow = (expected_width / measured_width) × current_flow
new_flow = (0.4 / 0.44) × 100% = 91%
Adjust in slicer, not Klipper.
8. Temperature Tuning (Optional)
Print: square_tower.stl (~80mm tall)
# Temperature varies with Z height
# START=190, FACTOR=2 means: 190°C at Z=0, 200°C at Z=5mm, 210°C at Z=10mm...
TUNING_TOWER COMMAND=SET_HEATER_TEMPERATURE HEATER=extruder PARAMETER=TARGET START=190 FACTOR=2
Examine each 5-10mm section of the tower: - Too cold: Poor layer adhesion, rough surface, weak - Too hot: Stringing, blobbing, discoloration
Mark the height of the best-looking section, calculate temp: temp = 190 + (height × 2)
9. Retraction Tuning (Optional)
For direct drive (like Pitan), start with: - Distance: 0.5-1.0mm - Speed: 30-45mm/s
Test with stringing torture test or travel-heavy print.
PETG: Less retraction than PLA (more viscous) TPU: Minimal or zero retraction
Validation Prints
After calibration, print these to verify:
| File | What to Check | |
|---|---|---|
| XYZ Cube | xyz_calibration_cube.stl |
Quick check: 20.0mm on X, Y, Z |
| Voron Cube | voron_design_cube.stl |
Full check: 30.0mm, overhangs, bearing fits |
| 3DBenchy | 3DBenchy.stl |
Overhangs, bridging, detail, stringing |
| Maker Coin | ./build.sh build maker_coin |
Logo clarity, layer adhesion |
| Fidget Bolt | ./build.sh build fidget_bolt |
Threads work = well calibrated! |
Quick Troubleshooting
| Problem | Likely Cause | Fix |
|---|---|---|
| First layer doesn’t stick | Z too high | Lower Z-offset |
| Elephant foot | Z too low | Raise Z-offset |
| Ringing/ghosting | No Input Shaper | Run SHAPER_CALIBRATE |
| Bulging corners | No Pressure Advance | Calibrate PA |
| Stringing | Retraction/temp | Tune retraction, lower temp |
| Layer shifts | Loose belts, too fast | Tighten belts, reduce accel |
| Inconsistent extrusion | Flow rate wrong | Calibrate e-steps and flow |
External Resources
- Ellis Print Tuning Guide: ellis3dp.com/Print-Tuning-Guide - Detailed methodology, works for any Klipper printer
- Teaching Tech Calibration: teachingtechyt.github.io/calibration - Interactive gcode generators
- Klipper Documentation: klipper3d.org - Official reference
Download Calibration Prints
cd cad
python utilities/download_calibration.pyDownloads from Klipper, Voron, and Ellis GitHub repos. See calibration-guide.md for print settings.
Credits & Acknowledgments
Amalgam’s calibration system stands on the shoulders of giants:
| Source | Contribution | License |
|---|---|---|
| Klipper3d | Ringing tower, square tower, TUNING_TOWER | GPL-3.0 |
| VoronDesign | Voron Design Cube v7 | GPL-3.0 |
| Ellis (AndrewEllis93) | First layer patch, EM cube, tuning methodology | — |
| 5axes | XYZ Calibration Cube | — |
| CreativeTools | 3DBenchy | Public Domain |
| Prusa Research | Live Z pattern concept | — |
| Teaching Tech | Calibration methodology | — |
Amalgam-created prints (first_layer_grid, prusa_live_z) are original build123d implementations inspired by community patterns. Licensed under the same terms as the Amalgam project.
“Measure twice, print once. Or just print it and iterate.”