When we first started to use our new Ultimaker 3D printer, we noticed that our prints weren’t coming out as nicely as we had hoped.

Tolerances vary and parts can loosen during shipment, so I strongly recommend recalibrating your Ultimaker as soon as you take it out of the box. There are instructions elsewhere on the web, but they tend to be partial or outdated. I took notes as I was calibrating my own Ultimaker 3D printer so hopefully this guide makes the process a bit smoother for you. Let’s get started!

Calibrate your Ultimaker 3D printer: E-Step settings

The first step is to calibrate your Ultimaker’s “E-Step” setting. (The “E” stands for extruder.)
The E-Step setting represents the number of “steps” needed in order to extrude 1mm of filament. Let’s take some initial measurements to get our control length.

Measure the exposed filament

  1. Remove the Bowden tube from the feeder mechanism. (This removes any back pressure from the extruder so you can take an accurate measurement.)
  2. Measure the length of the exposed filament as in the photo. Write this down as this is the control length that you will need later. (Normally you would measure the filament from the bottom since it may be compressed and slightly longer on top. But this affects accuracy very little and it’s much easier to measure from the top as shown in the photo.) We’ll then tell the stepper motor to extrude 100mm to see how accurate our printer really is. If it doesn’t extrude 100mm, then we know we need to adjust our E-Step setting.

Using G-Code commands

We will use G-Code commands to tell our stepper motor to extrude 100mm of filament. Ultimaker’s Cura software is a great utility to prepare your model for printing, and it also lets you run terminal commands to control your 3D printer via USB. Click on the terminal tab (“Term” in the print dialog box below) to enter G-Code commands. Here are the G-Code commands I used to prepare my Ultimaker to extrude 100mm of filament:

G21 Sets values to metric to ensure we are speaking to the printer in mm and not inches.
G92 Resets the extruded length so the stepper motor starts counting from 0.
M104 Sxx Sets the extruder temperature to xx degrees Celsius since the firmware may detect that the Bowden tube has been removed. Depending on filament color, anywhere between 190-210C is a safe temperature.

Before running the last command, make sure the filament is aligned with the Bowden connector so you can take an easy measurement.

Lastly, run G1 E100, which tells the printer to extrude exactly 100mm of filament. Once the motor stops, measure the current length of the filament and subtract the control length.

This will tell you how much filament was actually extruded. This is the “actual value” used in the formula below. For example, my extruded “actual value” was 98.9mm. This explains why my Ultimaker wasn’t very accurate out of the box. For accurate prints you want the actual value to be as close to 100mm as possible.

Next I need to find the current E-Step setting in my Ultimaker’s controller firmware. My current E-Step setting is 865/mm. Now that we have all the necessary values, we can plug them into this formula to find out what our new E-Step setting should be:

[target value / actual value] * current E-Step setting = new E-Step setting
[100mm / 98.9mm] * 865/mm = 874.62/mm

Next I will update my E-Step setting to 874.62/mm in my Ultimaker’s firmware and save. With the new settings in place, let’s run the G-Code commands again to see how accurate our extruder is. Now is the moment of glory. We measured the extruded filament and this time it came to 99.95mm! A tolerance of only ±0.05mm will definitely provide us with more accurate 3D prints moving forward. Sweet!

Calibrate the X-Step and Y-Step settings

To calibrate your Ulitmaker 3D printer’s X- and Y-Step, we need to print an object with precise dimensions. I quickly created a 40mm x 40mm x 10mm square block in AutoCAD. If you don’t want to do this yourself, you can find many cool objects on Thingiverse that will do the trick as well. Print your object with a low infill, around 20% is enough. Mark the front of the object with a pen so you know its orientation when measuring later. I measured the X dimensions (left to right when viewed from front), and it came out 38.95mm compared to the 40mm it should be. We use the same E-Step formula to find out what our new X-Step setting should be.

[target value / actual value] * current X-Step setting = new X-Step setting
[40mm / 38.95mm] * 78.74/mm = 80.89/mm

80.89/mm is my new X-Step setting. I repeated the calculation for the Y dimensions (front to back when viewed from front), which also came out to 38.95mm. This means that my new Y-Step setting should be 80.89/mm as well.

Next I updated my new X- and Y-Step settings to 80.89/mm in my Ultimaker’s firmware and saved. Now it’s time for our second moment of glory. The block came out to 40mm x 40mm x 10mm which means our settings are now accurate and we’re firing on all cylinders!

I hope this guide helps you achieve better results with your Ultimaker 3D printer. It’s definitely worth the effort so you can enjoy quality and accurate prints down the road. Happy printing!

Tip: To survive a reboot, don’t forget to save your settings to EEPROM in your firmware! It’s also helpful to note these settings in your 3D printer notebook so you can quickly recalibrate after a new firmware update.