← Back to Blog

Ender 3 V2 Neo Calibrations That Actually Matter

Skip the fluff - these are the calibrations that actually improved my print quality on the Ender 3 V2 Neo after 2 years of use.

3D Printing13 min readAuthor: Kukil Kashyap Borgohain
Ender 3 V2 Neo Calibration Guide - E-steps, Flow, PID Tuning

Why Calibration Matters More on a Budget Printer

Previously in Part 1, we got the printer assembled and running. You've printed your first Benchy, maybe a few keychains. Things are working... sort of.

But here's the thing: a stock Ender 3 V2 Neo out of the box is maybe 80% dialed in. That remaining 20% is the difference between "it works" and "this is actually good." On a Bambu Lab, the firmware handles most of this automatically. On the Ender 3, you are the firmware. The calibrations in this post are ordered by impact. Do them top to bottom, and your prints will improve dramatically.


1. Bed Leveling: The Foundation of Everything

I know, I covered this briefly in Part 1. But it deserves a deeper look because 90% of first-layer failures are leveling problems. The CR Touch auto bed leveling probe on the Neo is great, but it has limitation. It compensates for surface irregularities (warped bed, slight tilts). Also, it does NOT set the correct Z-offset (nozzle-to-bed distance). CR touch only measures a mesh, not the entire surface.

My Leveling Strategy

After 2 years, here's the routine I follow every ~10 prints:

Step 1: Manual tramming (the 4-knob method)

  1. Preheat the bed to 60°C and nozzle to 200°C
  2. Home all axes
  3. Disable steppers (so you can move the head by hand)
  4. Move the nozzle to each corner
  5. Slide a sheet of paper under the nozzle - adjust the bed knobs until there's slight friction
  6. Repeat corners twice (adjusting one corner affects the others)

Step 2: Run CR Touch probe

  1. Go to Leveling -> Auto Leveling on the printer menu
  2. Let it probe 16 points (4×4 grid)
  3. Save the mesh

Step 3: Z-offset fine tuning This is the most critical part. The Z-offset determines how close the nozzle sits to the bed during the first layer.

  1. Start a test print (a single-layer square works best)
  2. While printing, use Tune -> Z-Offset to adjust in real-time
  3. Too high: Filament doesn't stick, lines look rounded
  4. Too low: Filament squishes flat, nozzle scrapes the bed
  5. Just right: Lines are slightly squished, no gaps between them

[!TIP] Save your Z-offset after finding the sweet spot. On the Neo, go to Control -> Store Settings. Otherwise, it resets on power cycle.


2. Connecting Your Printer to a PC

Many calibrations in this guide require sending G-code commands directly to the printer. You can't do this from the printer's own screen - you need a USB connection and a host application.

What You Need

  • Micro-USB to USB-A cable (comes with the printer)
  • CH340 drivers - The Ender 3 V2 Neo uses a CH340 USB-to-serial chip. Windows 10/11 usually installs drivers automatically. If not, download from the <a href="https://www.wch-ic.com/downloads/CH341SER_EXE.html" target="_blank" rel="noopener noreferrer">manufacturer's site</a>
  • A host application - Pronterface (recommended), OctoPrint, or Cura's built-in monitor

Setting Up Pronterface (Printrun)

<a href="https://github.com/kliment/Printrun" target="_blank" rel="noopener noreferrer">Printrun</a> is an open-source 3D printer host software suite. The component we care about is Pronterface - a GUI application that lets you connect to the printer, send G-code, monitor temperatures, and even start prints directly.

Option 1: Pre-compiled binary (Windows/macOS)

  1. Download the latest binary from the <a href="https://github.com/kliment/Printrun/releases/latest" target="_blank" rel="noopener noreferrer">Printrun releases page</a>
  2. Extract the zip file
  3. Run pronterface.exe
  4. Windows Defender may flag it as unrecognized - click More Info -> Run Anyway

Option 2: pip install (Windows/Linux/macOS)

bash
1pip install Printrun

On Linux, you can also install from your package manager:

bash
1# Ubuntu / Debian / Raspberry Pi OS
2sudo apt install printrun

[⚠️Warning!] Windows pip install Issue: After pip install Printrun, running pronterface from the terminal won't work - the command isn't added to PATH. Instead, launch it using the script in Python's Scripts directory:

bash
1python %CONDA_PREFIX%\Scripts\pronterface.py

Or if you're not using Conda, find the Scripts folder with:

bash
1python -c "import sys; print(sys.prefix + '\\Scripts\\pronterface.py')"

The pre-compiled binary (Option 1) avoids this entirely.

Connecting to the Printer

  1. Plug the USB cable into the printer and your PC
  2. Open Pronterface
  3. Select the COM port from the dropdown (usually COM3 or similar on Windows, /dev/ttyUSB0 on Linux, check device manager for the correct COM port)
  4. Set baud rate to 115200
  5. Click Connect

You should see the temperature readings appear in the bottom panel. You're connected!

Sending G-code Commands

The command box at the bottom of Pronterface is your direct line to the printer:

CommandWhat It Does
M503Show current firmware settings
M92Show/set steps per mm (E-steps)
M301Set hotend PID values
M303Run PID auto-tune
M500Save settings to EEPROM
M501Load settings from EEPROM
G28Home all axes

Type a command, press Enter, and watch the response in the log. This is how we'll run the calibrations below.

[!TIP] You can also use OctoPrint (if you have a Raspberry Pi) or Cura's built-in monitor (Print -> Monitor) for sending commands. Pronterface is the lightest dedicated option.


3. E-Steps Calibration (Extruder Steps)

This is the single most impactful calibration you can do. E-steps tell the extruder motor how many steps to rotate to push exactly the right amount of filament.

Why It Matters

If your E-steps are off by even 5%, every print suffers:

  • Under-extrusion: Gaps between lines, weak layers, visible infill
  • Over-extrusion: Blobs, elephant's foot, rough surfaces

How to Calibrate

What you need: A ruler or calipers, a marker

Step 1: Check current E-steps

Send this G-code command via a terminal (Pronterface, OctoPrint, or even through Cura's built-in monitor):

cpp
1M503

Look for the line starting with M92. The E value is your current E-steps. Stock is usually around 93 for the Neo.

Step 2: Mark the filament

  1. Load filament normally
  2. Measure 120mm from where the filament enters the extruder and mark it with a marker

Step 3: Extrude 100mm

cpp
1; Heat nozzle first
2M104 S200
3; Wait for temperature
4M109 S200
5; Set extruder to relative mode
6M83
7; Extrude 100mm slowly
8G1 E100 F100

Step 4: Measure what's left

After extrusion, measure from the mark to the extruder entry. If you marked at 120mm and extruded 100mm, you should have 20mm remaining.

  • If you have 25mm remaining -> only 95mm was extruded (under-extrusion)
  • If you have 15mm remaining -> 105mm was extruded (over-extrusion)

Step 5: Calculate new E-steps

cpp
1New E-steps = Current E-steps × (100 / Actual mm extruded)

Example: If current E-steps = 93 and you actually extruded 95mm:

cpp
1New E-steps = 93 × (100 / 95) = 97.89

Step 6: Set and save

cpp
1; Set new E-steps
2M92 E97.89
3; Save to EEPROM
4M500

Step 7: Verify - repeat steps 2-4 to confirm the new value gives you exactly 100mm.

[!IMPORTANT] Do this calibration once and it's done unless you change the extruder hardware. It's the motor's step accuracy, not a filament-specific setting.


4. Flow Rate (Extrusion Multiplier)

E-steps ensure the motor pushes the right amount of filament mechanically. Flow rate fine-tunes the actual extrusion for each filament, accounting for:

  • Filament diameter variations
  • Material melt characteristics
  • Nozzle wear

How to Calibrate

Step 1: Print a single-wall cube

Print a hollow cube with:

  • 1 wall / 1 perimeter
  • 0 top layers
  • 0 bottom layers (or just 1 for adhesion)
  • 0% infill
  • 0.4mm line width (matching your nozzle)

Step 2: Measure the wall thickness

Using calipers, measure the wall thickness at several points.

  • Target: 0.4mm (your nozzle diameter)
  • Reality: Will likely be slightly off

Step 3: Calculate the new flow rate

cpp
1New Flow Rate = (Expected width / Measured width) × Current Flow Rate

Example: If walls measure 0.44mm with flow rate at 100%:

cpp
1New Flow Rate = (0.4 / 0.44) × 100 = 90.9%

Set this in your slicer's flow/extrusion multiplier setting. This is filament-specific - you'll want different values for PLA vs PETG vs TPU.


5. PID Tuning: Stable Temperatures

PID (Proportional-Integral-Derivative) tuning tells the printer how to maintain a stable temperature. Without it, you'll see temperature oscillations of ±5°C or more, which causes:

  • Inconsistent extrusion
  • Stringing on one layer, under-extrusion on the next
  • Layer banding (visible lines in the print)

Hotend PID Tuning

Run this G-code (targets 200°C, runs 10 cycles):

cpp
1M303 E0 S200 C10

The printer will heat and cool the hotend repeatedly. When done, it outputs three values: Kp, Ki, and Kd.

Apply them:

cpp
1M301 P<Kp> I<Ki> D<Kd>
2M500

Bed PID Tuning

Same concept, different command (targets 60°C):

cpp
1M303 E-1 S60 C10

Apply:

cpp
1M304 P<Kp> I<Ki> D<Kd>
2M500

[!NOTE] Temperature fluctuations on the Ender 3 V2 Neo are modest out of the box (±2-3°C), but PID tuning tightens them to ±0.5°C. You'll notice the difference on long prints where consistency over hours matters.


6. Belt Tension

Belts stretch over time, and on the Ender 3, there's no automatic tensioning. Loose belts cause:

  • Ringing/ghosting: Echoes of sharp edges in the print
  • Dimensional inaccuracy: Circles become ovals
  • Layer shifts: In extreme cases, the whole print shifts mid-way

How to Check

  1. The pinch test: Pinch the belt together mid-span. You should be able to bring the two sides close but not touching. If they touch easily, it's too loose. If you can barely pinch them, it's too tight.

  2. The twang test: Pluck the belt like a guitar string. It should produce a low hum, not a high pitch or a dull thud.

How to Tighten

Both the X-axis and Y-axis have tensioner knobs on the Ender 3 V2 Neo:

  • X-axis: Tensioner is on the right side of the gantry
  • Y-axis: Tensioner is at the front of the bed

Turn the knob clockwise to tighten. Small adjustments - quarter turns at a time.


7. Retraction Settings

Retraction is how the printer pulls filament back to prevent oozing during travel moves. On a Bowden setup like the Neo, this is especially important because the long PTFE tube between extruder and hotend creates a delay.

Key Settings

SettingStarting ValueNotes
Retraction Distance6mmBowden needs more than direct drive
Retraction Speed40mm/sToo fast -> grinding. Too slow -> oozing
Z-Hop0.2mmLifts nozzle during travel to avoid hitting print
CombingWithin InfillAvoids retractions by keeping travel inside the print

Tuning Retraction

Print a retraction tower test - most slicers can generate these. Vary retraction distance from 3mm to 8mm in 1mm increments and see which level has the least stringing.

My findings after 2 years:

FilamentRetraction DistanceRetraction Speed
PLA6mm45mm/s
PETG5mm35mm/s
TPU3-4mm25mm/s

[!WARNING] Over-retraction is worse than under-retraction. Too much retraction causes clogs by pulling molten filament too far back into the cold zone. If you're getting random clogs, reduce retraction distance.


8. Temperature Towers

Every filament brand (and even different colors from the same brand) has a slightly different optimal temperature. A temperature tower prints a test structure where each section is printed at a different temperature.

How to Run One

Option 1: Built-in slicer tools

  • OrcaSlicer and PrusaSlicer have built-in temperature tower generators
  • Cura requires a plugin or manual G-code insertion

Option 2: Download a pre-made STL

  • Search "temperature tower" on Printables
  • Add temperature change commands at each section height

Reading the Results

At each temperature, look for:

IssueMeans Temperature Is
StringingToo high
Poor layer adhesionToo low
Rough/blobby surfaceToo high
Clean bridgingJust right
Shiny, smooth wallsOptimal zone

Find the temperature that gives you the best balance across all factors. Usually it's somewhere in the middle of the manufacturer's recommended range.


The Calibration Order Matters

Here's the sequence I recommend. Each step builds on the previous:

cpp
11. Bed Leveling         -> Foundation for everything
232. Connect to PC        -> Set up Pronterface for G-code
453. E-Steps              -> Mechanical accuracy
674. Flow Rate            -> Fine-tune extrusion per filament
895. PID Tuning           -> Temperature stability
10116. Belt Tension         -> Periodically check
12137. Retraction           -> Eliminate stringing
14158. Temperature Tower    -> Optimal temp per filament

Steps 1-3 are one-time (until you change hardware). Steps 4-8 should be repeated or checked periodically - especially steps 4 and 8 for each new filament. Step 6 is periodic maintenance.

What I Wish I Knew on Day 1

After 2 years, here are the lessons I learned the hard way:

  1. Do E-steps first, not last. I chased slicer settings for weeks before realizing my extruder was under-extruding by 7%.

  2. Temperature matters more than speed. I kept trying to speed up prints when the real issue was inconsistent hotend temperature.

  3. The bed isn't flat - and that's okay. The CR Touch compensates, but understanding that your glass/PEI bed has high and low spots helps you troubleshoot.

  4. Write down your values. I keep a note with my E-steps, PID values, and per-filament settings. When firmware updates reset everything, you'll thank yourself.

  5. Calibrate when things change. New filament? Temperature tower. New nozzle? E-steps. Moved the printer? Bed level. Don't re-calibrate for no reason, but don't ignore changes either.


What's Next?

In Part 3, we'll dive into the slicer deep dive - understanding how slicer profiles work, creating reliable profiles for multi-day prints, and handling the things that go wrong when you're 48 hours into a print.

Series Navigation:

  1. Getting Started with the Ender 3 V2 Neo
  2. Calibrations That Actually Matter (You are here)
  3. Slicer Deep Dive & Long Print Survival (coming soon)
  4. Upgrades Worth Doing After 2 Years (coming soon)

If the article helped you in some way, consider giving it a like. This will mean a lot to me. You can download the code related to the post using the download button below.

If you see any bug, have a question for me, or would like to provide feedback, please drop a comment below.