[The Ender 3 Pro]


I recently (March 2020) bought a Creality Ender 3 Pro1 3D printer. It’s one of the original ‘heat up plastic and squirt it out’ sort, but it had good reviews2 and was on offer for about £200. These are my notes on setting it up, and starting to print.


If I were starting now I’d begin by watching some of the third-party build instructions and videos. I think they add useful details beyond the instructions from Creality, particularly if you’re new to all this as I was. Sadly, I only found them after I’d built the machine. Even, so it wasn’t hard to get the printer working acceptably well.

I suspect the best guide changes over time, but I found Maker Steve’s guide3 helpful.

Truing up

Although the printer is made from sturdy aluminium sections, there’s still enough play to make some of the right angles decidedly wrong if you’re not careful. In most cases it’s just a case of squaring things up before tightening bolts though. Getting the gantry parallel to the base of the unit involves getting the six idler-wheels in place, a couple of which have eccentric tensioning bolts. It’s important that the z-motion is smooth and without play, and I didn’t care enough about that when I started.

In a similar vein, you need to be careful to avoid slack in the x-axis belt, but that seems easy enough. The 3d-bros have a useful discussion4 of the issues, which includes links to designs of printable belt tensioning wheels. Creality include something similar on more recent printers, so perhaps there’s merit in them. Unsurprisingly, you buy such things too: just look on Amazon or eBay.

z-axis Binding

The z-axis on the Ender 3 is driven by a vertical lead-screw. Sadly though that bar is often not quite vertical, and so the nut tends to bind. You can print a little shim to improve matters, but I found that a couple of washers did the job for me. Maker Steve discusses the issue5.


The discussions below all refer to printing 1.75mm PLA at a bed temperature of 50°C, and a nozzle temperature of 200°C. I tried varying these temperatures a bit, and not much changed. It was hardly a scientific study though. I’ve tried Amazon Basics and SUNLU filament, and there didn’t seem to be any difference.

The bed and leveling it

Almost all the reviews of the Ender (and indeed most similar machines) talk about the importance of bed-leveling i.e. making sure that the print bed is a surface of constant z. You achieve this by twiddling four little adjustments in the corners of the bed, which pull the bed down against springs.

At first this straightforward if a little tedious, but at some point it became a bit tricky. I’m not sure what changed, but I wonder if I managed to deform the bed in a way which couldn’t be trimmed by the corner adjustments. In the end I had a glass build plate on hand, and the problem went away when I switched to that. I suspect I could have managed without the glass plate, but it was there and an easy solution.

Although there are firmware upgrades to the printer which semi-automate the leveling process, I didn’t try them.


Most of the time, I’ve not had any problems with adhesion, and when there were problems leveling the bed fixed them. This applies to printing PLA on both the original bed with flexible magnetic cover, and the upgraded tempered glass plate.

I think things stuck harder on glass, but they’re easy to remove if you let the glass cool first.

Extrusion calibration

Other people have found that the Ender’s extruder under-extrudes i.e. if you ask it to extrude say 100mm of filament, you only get say 90mm. Happily it’s easy to tweak a parameter in the firmware to fix this: just use the M926 gcode command. The original firmware set 93 steps to the mm, I found 100 worked better for me.

I found this guide at All3DP7 helpful.

Calibration cubes and Elephant feet

Following general advice, I tried printing some 20mm cubes8 to test the printer’s calibration. Both X- and Y-axes were good, typically well within 0.1mm of the desired 20mm, but the Z-axis was usually about 0.5mm short.

[The Ender 3 Pro]

On inspection some fraction of the bottom millimeter of the cube was squashed, a phenomenon know as “Elephant’s foot”9. Although not listed on that page, for me the problem seemed in large part to come from an overly tight z-axis. After some tuning, I could reliably print cubes about 0.2mm short, but it remains a small issue.


I’ve just used Cura, with the default settings.


One of the great joys of open designs is that they’re often easy to improve by tinkering. So I’ve added a few things to the stock printer. This freedom can become a rabbit hole though, so my list is deliberately incomplete.

Controller board

Originally the Ender was pretty noisy, but I replaced the controller board with Creality’s “Silent Board”10 upgrade and it got a lot quieter. I think the key is that the newer board has TMC2208 stepper motor drivers.

The board came with a bootloader installed, so upgrading the firmware was trivial.

If you can afford it, I think this upgrade is a real no-brainer!


Although I was pleased to use the default firmware to get started, I was happy to switch to firmware which I’d compiled myself. Happily that was reasonably easy: Creality’s firmware is basically a fork of Marlin11, and the Ender 3 is popular enough that configuring Marlin for the board is a well-trodden path. For example here’s12 a thread on reddit showing what to do. The key thing is to use the TMC2208 drivers if appropriate.

I also found an article by Daniel Brooke Peig13 helpful, though his firmware targets a printer equipped with a BL Touch auto-leveling sensor.

There seems to some variation in the recommended PID parameters for the bed heater: I’ve not looked into this and chose a set at random.


It turns out that putting the printer on a network is most civilized:

Happily Gina Häußge has created OctoPrint14: software which turns a Raspberry Pi into the perfect Ender-network interface.

The software is mature enough that even quite unusual tasks are supported. For example, there’s a module to update the firmware on the driver board.

Camera mount

If you’ve got a camera for OctoPrint, it helps to point it in the right direction. Happily you can print a suitable mount. I used Modmike’s design15 on Thingiverse.

[The Ender 3 Pro]

Filament guide

I found that the filament didn’t feed smoothly into the extruder stepper assembly: it tended to make a very sharp angle at the entrance to the driver, and often sprang off the reel.

Printing a simple pulley solved this. I used a design by Holspeed16 which is based around a skate-board bearing.

[The Ender 3 Pro]

Pending things

Although I’ve got the printer to a state where it prints well enough to be useful, there are still things to be done. I include them here as an aide-mémoire.


This17 promises to make bed levelling both easier and more accurate. It looks to be a bit of effort to install: I need to print a bracket to hold the sensor, and the driver board needs new firmware.


Although you can print PLA without worrying unduly about draughts and cold air, these seem to be more of an issue for ABS and PETG. One solution is to put the printer in an enclosure. There’s an official one from Creality18 but it makes the printer’s footprint a lot bigger.

Belt Tighteners

Although I’ve not needed these yet, if I were to take the printer apart it would be prudent to add them.

Replacement idler-wheels

I’m still a bit suspicious of the z-axis motion, and I wonder if I’ve either got some dodgy bearings or deformed wheels. As with the belt tighteners, if I ever take the printer apart it would be worth looking into this.


The Ender Pro 3 is a fine device: inexpensive but capable of making good prints. Although it’s easy to assemble, it’s worth spending more time and taking to build it well.

Although the stock machine is a good start, three upgrades seem sensible to me: